SlickBase.php in Slick Carousel 7.3
File
src/Entity/SlickBase.php
View source
<?php
namespace Drupal\slick\Entity;
use Drupal\blazy\Utility\NestedArray;
abstract class SlickBase implements SlickBaseInterface {
const TABLE = 'slick_optionset';
public $name;
public $label;
public $options = [];
protected static $defaultSettings;
public function id() {
return $this->name;
}
public function label() {
return $this->label;
}
public static function load($id = 'default') {
ctools_include('export');
$optionset = ctools_export_crud_load(static::TABLE, $id);
if (!isset($optionset->name)) {
$optionset = ctools_export_crud_load(static::TABLE, 'default');
}
return $optionset;
}
public static function loadWithFallback($id) {
$optionset = self::load($id);
if (empty($optionset)) {
$optionset = self::load('default');
}
return $optionset;
}
public static function loadMultiple($reset = FALSE) {
ctools_include('export');
return ctools_export_crud_load_all(static::TABLE, $reset);
}
public static function exists($name) {
ctools_include('export');
$optionset = ctools_export_crud_load(static::TABLE, $name);
return isset($optionset->name);
}
public static function create(array $values = []) {
ctools_include('export');
$optionset = ctools_export_crud_new(static::TABLE);
$optionset->options = $optionset->options['settings'] = [];
foreach (self::defaultProperties() as $key => $ignore) {
if (isset($values[$key])) {
$optionset->{$key} = $values[$key];
}
}
if (empty($values['label']) && isset($values['name'])) {
$optionset->label = $values['name'];
}
$defaults['settings'] = self::defaultSettings();
$optionset->options = $optionset->options + $defaults;
return $optionset;
}
public function save() {
$data = $this
->toArray();
$update = self::exists($data['name']) ? [
'name',
] : [];
$defaults['settings'] = self::defaultSettings();
$data['options'] = $data['options'] + $defaults;
return drupal_write_record(static::TABLE, $data, $update);
}
public function delete() {
ctools_include('export');
ctools_export_crud_delete(static::TABLE, $this->name);
}
public static function typecast(array &$settings = []) {
}
public function getOptions($group = NULL, $property = NULL) {
if ($group) {
if (is_array($group)) {
return NestedArray::getValue($this->options, (array) $group);
}
elseif (isset($property) && isset($this->options[$group])) {
return isset($this->options[$group][$property]) ? $this->options[$group][$property] : NULL;
}
return isset($this->options[$group]) ? $this->options[$group] : NULL;
}
return $this->options;
}
public function getSettings($ansich = FALSE) {
if ($ansich && isset($this->options['settings'])) {
return $this->options['settings'];
}
return isset($this->options['settings']) ? NestedArray::mergeDeep(self::defaultSettings(), $this->options['settings']) : self::defaultSettings();
}
public function setSettings(array $settings = []) {
$this->options['settings'] = $settings;
return $this;
}
public function getSetting($name) {
return isset($this
->getSettings()[$name]) ? $this
->getSettings()[$name] : NULL;
}
public function setSetting($name, $value) {
$this->options['settings'][$name] = $value;
return $this;
}
public static function defaultSettings() {
return [];
}
public static function defaultProperties() {
return [
'name' => 'default',
'label' => 'Default',
'options' => [],
];
}
public function toArray() {
$values = [];
foreach (self::defaultProperties() as $key => $ignore) {
$values[$key] = $this->{$key};
}
return $values;
}
}
Classes
Name |
Description |
SlickBase |
Defines the Slick configuration entity. |