File "settings.class.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/unlimited-elements-for-elementor/inc_php/framework/settings.class.php
File
size: 44.02 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
defined('UNLIMITED_ELEMENTS_INC') or die('Restricted access');
class UniteSettingsUC
{
const COLOR_OUTPUT_FLASH = "flash";
const COLOR_OUTPUT_HTML = "html";
const ID_PREFIX = "unite_setting_";
const RELATED_NONE = "";
const TYPE_TEXT = "text";
const TYPE_COLOR = "color";
const TYPE_SELECT = "list";
const TYPE_MULTISELECT = "multiselect";
const TYPE_CHECKBOX = "checkbox";
const TYPE_RADIO = "radio";
const TYPE_TEXTAREA = "textarea";
const TYPE_STATIC_TEXT = "statictext";
const TYPE_HR = "hr";
const TYPE_CUSTOM = "custom";
const TYPE_CONTROL = "control";
const TYPE_BUTTON = "button";
const TYPE_IMAGE = "image";
const TYPE_BOOLEAN = "boolean";
const TYPE_EDITOR = "editor";
const TYPE_MP3 = "mp3";
const TYPE_ICON = "icon";
const TYPE_ADDON = "addon";
const TYPE_SHAPE = "shape";
const TYPE_POST = "post";
const TYPE_MAP = "map";
const TYPE_REPEATER = "repeater";
const TYPE_RANGE = "range";
const TYPE_HIDDEN = "hidden";
const TYPE_TYPOGRAPHY = "typography";
const TYPE_DIMENTIONS = "dimentions";
const DATATYPE_NUMBER = "number";
const DATATYPE_NUMBEROREMTY = "number_empty";
const DATATYPE_STRING = "string";
const DATATYPE_PLAINTEXT = "plaintext";
const DATATYPE_LINK = "link";
const DATATYPE_FREE = "free";
const CONTROL_TYPE_ENABLE = "enable";
const CONTROL_TYPE_DISABLE = "disable";
const CONTROL_TYPE_SHOW = "show";
const CONTROL_TYPE_HIDE = "hide";
const PARAM_TEXTSTYLE = "textStyle";
const PARAM_ADDPARAMS = "addparams";
const PARAM_ADDTEXT = "addtext";
const PARAM_ADDTEXT_BEFORE_ELEMENT = "addtext_before_element";
const PARAM_CELLSTYLE = "cellStyle";
const PARAM_NODRAW = "nodraw";
const PARAM_MODE_TRANSPARENT = "mode_transparent";
const PARAM_ADDFIELD = "addfield";
const PARAM_CLASSADD = "classAdd";
const PARAM_NOTEXT = "unite_setting_notext";
protected $settingsType = null;
protected $idPrefix;
protected $defaultText = "Enter value";
protected $sap_size = 5;
protected $HRIdCounter = 0;
protected $arrSettings = array();
protected $arrIndex = array();
protected $arrSaps = array();
protected $currentSapKey = 0;
protected $arrControls = array();
protected $arrControlChildren = array();
protected $arrBulkControl = array();
protected $colorOutputType = self::COLOR_OUTPUT_HTML;
protected $arrGlobalParams = array();
public function __construct()
{
$suffix = time() . "_" . UniteFunctionsUC::getRandomString(5) . "_";
$this->idPrefix = self::ID_PREFIX . $suffix;
}
public function setColorOutputType($type)
{
$this->colorOutputType = $type;
}
private function modifySettingsData($arrSettings)
{
foreach ($arrSettings as $key => $content) {
switch (getType($content)) {
case "string":
$content = str_replace("u000a", "\n", $content);
$content = str_replace("u000d", "", $content);
break;
case "object":
case "array":
$content = UniteFunctionsUC::convertStdClassToArray($content);
break;
}
$arrSettings[$key] = $content;
}
return $arrSettings;
}
private function checkAndAddSap($setting)
{
$setting["sap"] = $this->currentSapKey;
return $setting;
}
private function validateParamItems($arrParams)
{
if (!isset($arrParams["items"])) {
throw new Exception("no select items presented");
}
if (!is_array($arrParams["items"])) {
throw new Exception("the items parameter should be array");
}
}
private function addSettingToIndex($name)
{
$this->arrIndex[$name] = count($this->arrSettings) - 1;
}
private function a_GETTERS()
{
}
protected function getArrTypes()
{
$arrTypesAssoc = array();
$arrTypes = array();
foreach ($this->arrSettings as $setting) {
$type = $setting["type"];
if (!isset($arrTypesAssoc[$type])) {
$arrTypes[] = $type;
}
$arrTypesAssoc[$type] = "";
}
return $arrTypes;
}
public function getArrSettings()
{
return $this->arrSettings;
}
public function getArrSettingNames()
{
$arrKeys = array();
$arrNames = array();
foreach ($this->arrSettings as $setting) {
$name = UniteFunctionsUC::getVal($setting, "name");
if (!empty($name)) {
$arrNames[] = $name;
}
}
return $arrNames;
}
public function getArrSettingNamesAndTitles()
{
$arrKeys = array();
$arrNames = array();
foreach ($this->arrSettings as $setting) {
$name = UniteFunctionsUC::getVal($setting, "name");
$title = UniteFunctionsUC::getVal($setting, "text");
if (!empty($name)) {
$arrNames[$name] = $title;
}
}
return $arrNames;
}
public function getArrSaps()
{
return $this->arrSaps;
}
public function getNumSaps()
{
$numSaps = count($this->arrSaps);
return $numSaps;
}
public function getArrControls($withChildren = false)
{
if ($withChildren == true) {
$output = array();
$output["parents"] = $this->arrControls;
$output["children"] = $this->arrControlChildren;
return $output;
}
return $this->arrControls;
}
public function getArrControlChildren()
{
return $this->arrControlChildren;
}
public function setArrSettings($arrSettings)
{
$this->arrSettings = $arrSettings;
}
public function getNumSettings()
{
$counter = 0;
foreach ($this->arrSettings as $setting) {
switch ($setting["type"]) {
case self::TYPE_HR:
case self::TYPE_STATIC_TEXT:
break;
default:
$counter++;
break;
}
}
return $counter;
}
public function getSap($sapKey)
{
$arrSap = UniteFunctionsUC::getVal($this->arrSaps, $sapKey);
if (empty($arrSap)) {
UniteFunctionsUC::throwError("sap with key: {$sapKey} not found");
}
return $arrSap;
}
protected function getSapKeyByName($name)
{
foreach ($this->arrSaps as $key => $sap) {
if ($sap["name"] == $name) {
return $key;
}
}
return null;
}
private function getIndexByName($name)
{
if (!empty($this->arrIndex)) {
if (array_key_exists($name, $this->arrIndex) == false) {
UniteFunctionsUC::throwError("setting {$name} not found");
}
$index = $this->arrIndex[$name];
return $index;
}
foreach ($this->arrSettings as $index => $setting) {
$settingName = UniteFunctionsUC::getVal($setting, "name");
if ($settingName == $name) {
return $index;
}
}
UniteFunctionsUC::throwError("Setting with name: {$name} don't exists");
}
public function getSettingByName($name)
{
$index = $this->getIndexByName($name);
$setting = $this->arrSettings[$index];
return $setting;
}
public function getArrSettingsBySap($sapName)
{
$sapKey = $this->getSapKeyByName($sapName);
if ($sapKey === null) {
UniteFunctionsUC::throwError("sap: {$sapName} not found");
}
$arrSapSettings = array();
foreach ($this->arrSettings as $setting) {
$sap = UniteFunctionsUC::getVal($setting, "sap");
if ($sap === $sapKey) {
$arrSapSettings[] = $setting;
}
}
return $arrSapSettings;
}
public function getArrValues()
{
$arrSettingsOutput = array();
foreach ($this->arrSettings as $setting) {
if ($setting["type"] == self::TYPE_HR || $setting["type"] == self::TYPE_STATIC_TEXT) {
continue;
}
$value = $setting["value"];
switch ($setting["type"]) {
case self::TYPE_COLOR:
$value = strtolower($value);
if ($this->colorOutputType == self::COLOR_OUTPUT_FLASH) {
$value = str_replace("#", "0x", $value);
}
break;
case self::TYPE_CHECKBOX:
if ($value == true) {
$value = "true";
} else {
$value = "false";
}
break;
}
if (isset($setting["remove_lf"])) {
$value = str_replace("\n", "", $value);
$value = str_replace("\r\n", "", $value);
}
$arrSettingsOutput[$setting["name"]] = $value;
}
return $arrSettingsOutput;
}
public function getArrTextFromAllSettings()
{
$arr = array();
$arrUnits = array();
if ($this->arrSaps) {
$this->arrSaps = array();
}
foreach ($this->arrSaps as $sap) {
$text = $sap["text"];
if (!empty($text)) {
$arr[] = $text;
}
}
foreach ($this->arrSettings as $setting) {
$text = UniteFunctionsUC::getVal($setting, "text");
$desc = UniteFunctionsUC::getVal($setting, "description");
$unit = UniteFunctionsUC::getVal($setting, "unit");
if (!empty($text)) {
$arr[] = $text;
}
if (!empty($desc)) {
$arr[] = $desc;
}
if (!empty($unit)) {
if (!isset($arrUnits[$unit])) {
$arr[] = $unit;
}
$arrUnits[$unit] = true;
}
$items = UniteFunctionsUC::getVal($setting, "items");
if (!empty($items)) {
foreach ($items as $item) {
if (!isset($arrUnits[$item])) {
$arr[] = $item;
}
$arrUnits[$item] = true;
}
}
}
return $arr;
}
public function getSettingValue($name, $default = "")
{
$setting = $this->getSettingByName($name);
$value = UniteFunctionsUC::getVal($setting, "value", $default);
return $value;
}
public function getIDPrefix()
{
return $this->idPrefix;
}
private function a_________ADD_________()
{
}
public function addRadio($name, $arrItems, $text = "", $defaultItem = "", $arrParams = array())
{
$params = array("items" => $arrItems);
$params = array_merge($params, $arrParams);
$this->add($name, $defaultItem, $text, self::TYPE_RADIO, $params);
}
public function addTextArea($name, $defaultValue, $text, $arrParams = array())
{
$this->add($name, $defaultValue, $text, self::TYPE_TEXTAREA, $arrParams);
}
public function addButton($name, $value, $text, $arrParams = array())
{
$this->add($name, $value, $text, self::TYPE_BUTTON, $arrParams);
}
public function addCheckbox($name, $defaultValue = false, $text = "", $textNear = "", $arrParams = array())
{
$defaultValue = UniteFunctionsUC::strToBool($defaultValue);
if (!empty($textNear)) {
$arrParams["text_near"] = $textNear;
}
$this->add($name, $defaultValue, $text, self::TYPE_CHECKBOX, $arrParams);
}
public function addTextBox($name, $defaultValue = "", $text = "", $arrParams = array())
{
$this->add($name, $defaultValue, $text, self::TYPE_TEXT, $arrParams);
}
public function addHiddenInput($name, $defaultValue = "", $text = "", $arrParams = array())
{
$arrParams["hidden"] = true;
$this->add($name, $defaultValue, $text, self::TYPE_HIDDEN, $arrParams);
}
public function addRangeSlider($name, $defaultValue = "", $text = "", $arrParams = array())
{
if (isset($arrParams["unit"])) {
$arrParams["range_unit"] = $arrParams["unit"];
unset($arrParams["unit"]);
}
$this->add($name, $defaultValue, $text, self::TYPE_RANGE, $arrParams);
}
public function addEditor($name, $defaultValue = "", $text = "", $arrParams = array())
{
$this->add($name, $defaultValue, $text, self::TYPE_EDITOR, $arrParams);
}
public function addImage($name, $defaultValue = "", $text = "", $arrParams = array())
{
$this->add($name, $defaultValue, $text, self::TYPE_IMAGE, $arrParams);
}
public function addMp3($name, $defaultValue = "", $text = "", $arrParams = array())
{
$this->add($name, $defaultValue, $text, self::TYPE_MP3, $arrParams);
}
public function addGoogleMap($name, $defaultValue = "", $text = "", $arrParams = array())
{
$this->add($name, $defaultValue, $text, self::TYPE_MAP, $arrParams);
}
public function addIconPicker($name, $defaultValue = "", $text = "", $arrParams = array())
{
$this->add($name, $defaultValue, $text, self::TYPE_ICON, $arrParams);
}
public function addShapePicker($name, $defaultValue = "", $text = "", $arrParams = array())
{
$arrParams["icons_type"] = "shape";
$this->add($name, $defaultValue, $text, self::TYPE_ICON, $arrParams);
}
public function addAddonPicker($name, $defaultValue = "", $text = "", $arrParams = array())
{
$this->add($name, $defaultValue, $text, self::TYPE_ADDON, $arrParams);
}
public function addPostPicker($name, $defaultValue = "", $text = "", $arrParams = array())
{
$this->add($name, $defaultValue, $text, self::TYPE_POST, $arrParams);
}
public function addColorPicker($name, $defaultValue = "", $text = "", $arrParams = array())
{
$this->add($name, $defaultValue, $text, self::TYPE_COLOR, $arrParams);
}
public function addRepeater($name, $settingsItems, $arrValues, $text, $arrParams = array())
{
$arrParams["settings_items"] = $settingsItems;
$arrParams["items_values"] = $arrValues;
$this->add($name, null, $text, self::TYPE_REPEATER, $arrParams);
}
public function addCustom($customType, $name, $defaultValue = "", $text = "", $arrParams = array())
{
$params = array();
$params["custom_type"] = $customType;
$params = array_merge($params, $arrParams);
$this->add($name, $defaultValue, $text, self::TYPE_CUSTOM, $params);
}
public function addHr($name = "", $params = array())
{
$setting = array();
$setting["type"] = self::TYPE_HR;
$itemName = "";
if ($name != "") {
$itemName = $name;
} else {
$this->HRIdCounter++;
$itemName = "hr_" . UniteFunctionsUC::getRandomString();
if (array_key_exists($itemName, $this->arrIndex)) {
$itemName = "hr_" . UniteFunctionsUC::getRandomString();
}
if (array_key_exists($itemName, $this->arrIndex)) {
$itemName = "hr_" . UniteFunctionsUC::getRandomString();
}
}
$setting["id"] = $this->idPrefix . $itemName;
$setting["id_row"] = $setting["id"] . "_row";
$setting["name"] = $itemName;
$setting = $this->checkAndAddSap($setting);
$this->checkAddBulkControl($itemName);
$setting = array_merge($params, $setting);
$this->arrSettings[] = $setting;
$this->addSettingToIndex($itemName);
}
public function addStaticText($text, $name = "", $params = array())
{
$setting = array();
$setting["type"] = self::TYPE_STATIC_TEXT;
$itemName = "";
if ($name != "") {
$itemName = $name;
} else {
$this->HRIdCounter++;
$itemName = "textitem" . $this->HRIdCounter;
}
if (isset($params["text"])) {
$setting["label"] = $text;
$text = $params["text"];
}
$setting["id"] = $this->idPrefix . $itemName;
$setting["name"] = $itemName;
$setting["id_row"] = $setting["id"] . "_row";
$setting["text"] = $text;
$this->checkAddBulkControl($itemName);
$setting = array_merge($setting, $params);
$setting = $this->checkAndAddSap($setting);
$this->arrSettings[] = $setting;
$this->addSettingToIndex($itemName);
}
public function addSelect($name, $arrItems, $text, $defaultItem = "", $arrParams = array())
{
$params = array("items" => $arrItems);
$params = array_merge($params, $arrParams);
$this->add($name, $defaultItem, $text, self::TYPE_SELECT, $params);
}
public function addMultiSelect($name, $arrItems, $text, $defaultItem = "", $arrParams = array())
{
$params = array("items" => $arrItems);
$params = array_merge($params, $arrParams);
$this->add($name, $defaultItem, $text, self::TYPE_MULTISELECT, $params);
}
public function addSap($text, $name = "", $opened = false, $icon = "", $params = array())
{
if (empty($text)) {
UniteFunctionsUC::throwError("sap {$name} must have a text");
}
$sap = array();
$sap["name"] = $name;
$sap["text"] = $text;
$sap["icon"] = $icon;
if (!empty($params)) {
$sap = array_merge($sap, $params);
}
if ($opened == true) {
$sap["opened"] = true;
}
$this->arrSaps[] = $sap;
$this->currentSapKey = count($this->arrSaps) - 1;
}
protected function modifyBeforeAdd($setting, $modifyType)
{
return $setting;
}
protected function addSettingGlobalParams($setting)
{
if (empty($this->arrGlobalParams)) {
return $setting;
}
$settingType = UniteFunctionsUC::getVal($setting, "type");
foreach ($this->arrGlobalParams as $param) {
$types = UniteFunctionsUC::getVal($param, "types");
if (empty($types)) {
$setting[$param["name"]] = $param["value"];
continue;
}
if (is_string($types)) {
if (strpos($types, $settingType) !== false) {
$setting[$param["name"]] = $param["value"];
}
} else {
if (is_array($types)) {
if (array_search($settingType, $types) !== false) {
$setting[$param["name"]] = $param["value"];
}
}
}
}
return $setting;
}
protected function add($name, $defaultValue = "", $text = "", $type = self::TYPE_TEXT, $arrParams = array())
{
if (empty($name)) {
throw new Exception("Every setting should have a name!");
}
switch ($type) {
case self::TYPE_RADIO:
case self::TYPE_SELECT:
case self::TYPE_MULTISELECT:
$this->validateParamItems($arrParams);
break;
case self::TYPE_CHECKBOX:
if (!is_bool($defaultValue)) {
throw new Exception("The checkbox value should be boolean");
}
break;
}
if (isset($this->arrIndex[$name])) {
throw new Exception("Duplicate setting name:" . $name);
}
if ($text == "") {
$text = $this->defaultText;
}
if ($text == self::PARAM_NOTEXT) {
$text = "";
}
$setting = array();
$setting["name"] = $name;
$setting["type"] = $type;
$setting["text"] = $text;
$setting["value"] = $defaultValue;
$setting["default_value"] = $defaultValue;
$setting = array_merge($setting, $arrParams);
if (!isset($setting["datatype"])) {
$datatype = self::DATATYPE_STRING;
switch ($type) {
case self::TYPE_TEXTAREA:
$datatype = self::DATATYPE_FREE;
break;
default:
$datatype = self::DATATYPE_STRING;
break;
}
$setting["datatype"] = $datatype;
}
$setting = $this->addSettingGlobalParams($setting);
$modifyType = UniteFunctionsUC::getVal($setting, "modifytype");
if (!empty($modifyType)) {
$setting = $this->modifyBeforeAdd($setting, $modifyType);
}
$this->addSettingByArray($setting);
}
public function addSettingByArray($setting)
{
if (is_array($setting) == false) {
UniteFunctionsUC::throwError("addSettingByArray: Empty setting given");
}
$name = UniteFunctionsUC::getVal($setting, "name");
UniteFunctionsUC::validateNotEmpty($name, "setting name");
$this->checkAddBulkControl($name);
$setting["id"] = $this->idPrefix . $name;
$setting["id_service"] = $setting["id"] . "_service";
$setting["id_row"] = $setting["id"] . "_row";
$setting = $this->checkAndAddSap($setting);
$this->arrSettings[] = $setting;
$this->addSettingToIndex($name);
}
private function a_CONTROLS()
{
}
private function addControlChildArray($childName, $parentName)
{
if (!isset($this->arrControlChildren[$childName])) {
$this->arrControlChildren[$childName] = array();
}
$this->arrControlChildren[$childName][] = $parentName;
}
public function addControl($control_item_name, $controlled_item_name, $control_type, $value)
{
UniteFunctionsUC::validateNotEmpty($control_item_name, "control parent");
UniteFunctionsUC::validateNotEmpty($controlled_item_name, "control child");
UniteFunctionsUC::validateNotEmpty($control_type, "control type");
if (empty($value)) {
$value = "";
}
if (strpos($controlled_item_name, ",") !== false) {
$controlled_item_name = explode(",", $controlled_item_name);
foreach ($controlled_item_name as $key => $cvalue) {
$controlled_item_name[$key] = trim($cvalue);
}
}
$arrValues = array();
if (strpos($value, ",") !== false) {
$arrValues = explode(",", $value);
foreach ($arrValues as $key => $value) {
$arrValues[$key] = trim($value);
}
$value = $arrValues;
}
$arrControl = array();
if (isset($this->arrControls[$control_item_name])) {
$arrControl = $this->arrControls[$control_item_name];
}
if (is_array($controlled_item_name)) {
foreach ($controlled_item_name as $cname) {
$arrControl[$cname] = array("type" => $control_type, "value" => $value);
$this->addControlChildArray($cname, $control_item_name);
}
} else {
$arrControl[$controlled_item_name] = array("type" => $control_type, "value" => $value);
$this->addControlChildArray($controlled_item_name, $control_item_name);
}
$this->arrControls[$control_item_name] = $arrControl;
}
public function startBulkControl($control_item_name, $control_type, $value)
{
$this->arrBulkControl[] = array("control_name" => $control_item_name, "type" => $control_type, "value" => $value);
}
public function endBulkControl()
{
if (empty($this->arrBulkControl)) {
return false;
}
array_pop($this->arrBulkControl);
}
private function isControlValuesEqual($parentValue, $value)
{
if (is_array($value)) {
return in_array($parentValue, $value) === true;
} else {
$value = strtolower($value);
return $parentValue === $value;
}
}
private function getControlAction($parentName, $arrControl)
{
$parentValue = $this->getSettingValue($parentName);
$value = $arrControl["value"];
$type = $arrControl["type"];
switch ($type) {
case self::CONTROL_TYPE_ENABLE:
if ($this->isControlValuesEqual($parentValue, $value) == false) {
return "disable";
}
break;
case self::CONTROL_TYPE_DISABLE:
if ($this->isControlValuesEqual($parentValue, $value) == true) {
return "disable";
}
break;
case self::CONTROL_TYPE_SHOW:
if ($this->isControlValuesEqual($parentValue, $value) == false) {
return "hide";
}
break;
case self::CONTROL_TYPE_HIDE:
if ($this->isControlValuesEqual($parentValue, $value) == true) {
return "hide";
}
break;
}
return null;
}
public function setSettingsStateByControls()
{
if (empty($this->arrControls)) {
return false;
}
foreach ($this->arrControlChildren as $childName => $arrParents) {
foreach ($arrParents as $parentName) {
$arrControl = $this->arrControls[$parentName][$childName];
$action = $this->getControlAction($parentName, $arrControl);
if ($action == "disable") {
$this->updateSettingProperty($childName, "disabled", true);
break;
}
if ($action == "hide") {
$this->updateSettingProperty($childName, "hidden", true);
break;
}
}
}
}
public function setPairedSettings()
{
foreach ($this->arrSettings as $setting) {
$addSettingName = UniteFunctionsUC::getVal($setting, self::PARAM_ADDFIELD);
if (empty($addSettingName)) {
continue;
}
$this->updateSettingProperty($addSettingName, self::PARAM_NODRAW, true);
}
}
private function checkAddBulkControl($name)
{
if (empty($this->arrBulkControl)) {
return false;
}
foreach ($this->arrBulkControl as $control) {
$this->addControl($control["control_name"], $name, $control["type"], $control["value"]);
}
}
private function a______XML_______()
{
}
public function loadXMLFile($filepath, $loadedSettingsType = null)
{
if (!file_exists($filepath)) {
UniteFunctionsUC::throwError("File: '{$filepath}' not exists!!!");
}
if (function_exists("simplexml_load_file") == false) {
UniteFunctionsUC::throwError("Your php missing SimpleXML Extension. The plugin can't work without this extension because it has many xml files to load. Please enable this extension in php.ini");
}
$obj = simplexml_load_file($filepath);
if (empty($obj)) {
UniteFunctionsUC::throwError("Wrong xml file format: {$filepath}");
}
$fieldsets = $obj->fieldset;
if (!@count($obj->fieldset)) {
$fieldsets = array($fieldsets);
}
foreach ($fieldsets as $fieldset) {
$attribs = $fieldset->attributes();
$sapName = (string) UniteFunctionsUC::getVal($attribs, "name");
$sapLabel = (string) UniteFunctionsUC::getVal($attribs, "label");
$sapIcon = (string) UniteFunctionsUC::getVal($attribs, "icon");
$loadFrom = (string) UniteFunctionsUC::getVal($attribs, "loadfrom");
$loadParam = (string) UniteFunctionsUC::getVal($attribs, "loadparam");
$loadedSettingsType = (string) UniteFunctionsUC::getVal($attribs, "loadtype");
$nodraw = (string) UniteFunctionsUC::getVal($attribs, "nodraw");
$visibility = (string) UniteFunctionsUC::getVal($attribs, "visibility");
if ($visibility == "dev" && GlobalsUC::$inDev == false) {
continue;
}
$sapParams = array();
if (!empty($nodraw)) {
$sapParams["nodraw"] = UniteFunctionsUC::strToBool($nodraw);
}
UniteFunctionsUC::validateNotEmpty($sapName, "sapName");
if (!empty($loadFrom)) {
$this->addExternalSettings($loadFrom, $loadParam, $loadedSettingsType);
continue;
}
UniteFunctionsUC::validateNotEmpty($sapLabel, "sapLabel");
$sapKey = $this->getSapKeyByName($sapName);
if ($sapKey === null) {
$this->addSap($sapLabel, $sapName, false, $sapIcon, $sapParams);
} else {
$this->currentSapKey = $sapKey;
}
$fieldset = (array) $fieldset;
$fields = UniteFunctionsUC::getVal($fieldset, "field");
if (empty($fields)) {
$fields = array();
} else {
if (is_array($fields) == false) {
$fields = array($fields);
}
}
foreach ($fields as $field) {
$attribs = $field->attributes();
$fieldType = (string) UniteFunctionsUC::getVal($attribs, "type");
$fieldName = (string) UniteFunctionsUC::getVal($attribs, "name");
$fieldLabel = (string) UniteFunctionsUC::getVal($attribs, "label");
$fieldDefaultValue = (string) UniteFunctionsUC::getVal($attribs, "default");
$arrMustParams = array("type", "name", "label", "default");
$arrParams = array();
foreach ($attribs as $key => $value) {
$key = (string) $key;
$value = (string) $value;
if (in_array($key, $arrMustParams)) {
continue;
}
$arrParams[$key] = $value;
}
$options = $this->getOptionsFromXMLField($field, $fieldName);
UniteFunctionsUC::validateNotEmpty($fieldType, "type");
if ($fieldType != self::TYPE_HR && $fieldType != self::TYPE_CONTROL && $fieldType != "bulk_control_start" && $fieldType != "bulk_control_end") {
UniteFunctionsUC::validateNotEmpty($fieldName, "name");
}
switch ($fieldType) {
case self::TYPE_CHECKBOX:
$fieldDefaultValue = UniteFunctionsUC::strToBool($fieldDefaultValue);
$this->addCheckbox($fieldName, $fieldDefaultValue, $fieldLabel, "", $arrParams);
break;
case self::TYPE_COLOR:
$this->addColorPicker($fieldName, $fieldDefaultValue, $fieldLabel, $arrParams);
break;
case self::TYPE_HR:
$this->addHr($fieldName);
break;
case self::TYPE_TEXT:
$this->addTextBox($fieldName, $fieldDefaultValue, $fieldLabel, $arrParams);
break;
case self::TYPE_STATIC_TEXT:
$this->addStaticText($fieldLabel, $fieldName, $arrParams);
break;
case self::TYPE_IMAGE:
$this->addImage($fieldName, $fieldDefaultValue, $fieldLabel, $arrParams);
break;
case self::TYPE_MP3:
$this->addMp3($fieldName, $fieldDefaultValue, $fieldLabel, $arrParams);
break;
case self::TYPE_SELECT:
$this->addSelect($fieldName, $options, $fieldLabel, $fieldDefaultValue, $arrParams);
break;
case self::TYPE_MULTISELECT:
$this->addMultiSelect($fieldName, $options, $fieldLabel, $fieldDefaultValue, $arrParams);
break;
case self::TYPE_CHECKBOX:
$this->addChecklist($fieldName, $options, $fieldLabel, $fieldDefaultValue, $arrParams);
break;
case self::TYPE_RADIO:
$this->addRadio($fieldName, $options, $fieldLabel, $fieldDefaultValue, $arrParams);
break;
case self::TYPE_BOOLEAN:
$options = array("Yes" => "true", "No" => "false");
$this->addRadio($fieldName, $options, $fieldLabel, $fieldDefaultValue, $arrParams);
break;
case self::TYPE_TEXTAREA:
$this->addTextArea($fieldName, $fieldDefaultValue, $fieldLabel, $arrParams);
break;
case self::TYPE_CUSTOM:
$this->add($fieldName, $fieldDefaultValue, $fieldLabel, self::TYPE_CUSTOM, $arrParams);
break;
case self::TYPE_BUTTON:
$this->addButton($fieldName, $fieldDefaultValue, $fieldLabel, $arrParams);
break;
case self::TYPE_ICON:
$this->addIconPicker($fieldName, $fieldDefaultValue, $fieldLabel, $arrParams);
break;
case self::TYPE_ADDON:
$this->addAddonPicker($fieldName, $fieldDefaultValue, $fieldLabel, $arrParams);
break;
case self::TYPE_RANGE:
$this->addRangeSlider($fieldName, $fieldDefaultValue, $fieldLabel, $arrParams);
break;
case self::TYPE_HIDDEN:
$this->addHiddenInput($fieldName, $fieldDefaultValue, $fieldLabel, $arrParams);
break;
case self::TYPE_POST:
$this->addPostPicker($fieldName, $fieldDefaultValue, $fieldLabel, $arrParams);
break;
case "fonts_panel":
$this->addFontPanel(array(), array(), $fieldName);
break;
case self::TYPE_CONTROL:
$parent = UniteFunctionsUC::getVal($arrParams, "parent");
$child = UniteFunctionsUC::getVal($arrParams, "child");
$ctype = UniteFunctionsUC::getVal($arrParams, "ctype");
$value = UniteFunctionsUC::getVal($arrParams, "value");
$this->addControl($parent, $child, $ctype, $value);
break;
case "bulk_control_start":
$parent = UniteFunctionsUC::getVal($arrParams, "parent");
$ctype = UniteFunctionsUC::getVal($arrParams, "ctype");
$value = UniteFunctionsUC::getVal($arrParams, "value");
$this->startBulkControl($parent, $ctype, $value);
break;
case "bulk_control_end":
$this->endBulkControl();
break;
default:
UniteFunctionsUC::throwError("wrong type: {$fieldType}");
break;
}
}
}
}
public function addFromXmlFile($filepathXML)
{
$objNewSettings = new UniteSettingsUC();
$objNewSettings->loadXMLFile($filepathXML);
$this->mergeSettings($objNewSettings);
}
private function a_OTHERS()
{
}
public function setType($type)
{
$this->settingsType = $type;
}
public function addGlobalParam($name, $value, $types = null)
{
$this->arrGlobalParams[] = array("name" => $name, "value" => $value, "types" => $types);
}
private function reindex()
{
$this->arrIndex = array();
foreach ($this->arrSettings as $key => $value) {
if (isset($value["name"])) {
$this->arrIndex[$value["name"]] = $key;
}
}
}
public function setCustomDrawFunction_afterSections($func)
{
$this->customFunction_afterSections = $func;
}
private function getOptionsFromXMLField($field, $fieldName)
{
$arrOptions = array();
$arrField = (array) $field;
$options = UniteFunctionsUC::getVal($arrField, "option");
if (!empty($options) && is_array($options) == false) {
$options = array($options);
}
if (empty($options)) {
return $arrOptions;
}
foreach ($options as $option) {
if (gettype($option) == "string") {
UniteFunctionsUC::throwError("Wrong options type: " . $option . " in field: {$fieldName}");
}
$attribs = $option->attributes();
$optionValue = (string) UniteFunctionsUC::getVal($attribs, "value");
$optionText = (string) UniteFunctionsUC::getVal($attribs, "text");
UniteFunctionsUC::validateNotEmpty($optionText, "option text");
$arrOptions[$optionText] = $optionValue;
}
return $arrOptions;
}
public function mergeSettings(UniteSettingsUC $settings)
{
$arrSapsNew = $settings->getArrSaps();
$arrSapsCurrent = $this->arrSaps;
$arrNewSapKeys = array();
foreach ($arrSapsNew as $key => $sap) {
$sapName = $sap["name"];
$currentSapKey = $this->getSapKeyByName($sapName);
if ($currentSapKey === null) {
$this->arrSaps[] = $sap;
$this->currentSapKey = count($this->arrSaps) - 1;
$arrNewSapKeys[$key] = $this->currentSapKey;
} else {
$arrNewSapKeys[$key] = $currentSapKey;
}
}
$arrSettingsNew = $settings->getArrSettings();
foreach ($arrSettingsNew as $setting) {
$name = $setting["name"];
$sapOld = $setting["sap"];
$setting["id"] = $this->idPrefix . $name;
$setting["id_service"] = $this->idPrefix . $name . "_service";
$setting["id_row"] = $this->idPrefix . $name . "_row";
if (array_key_exists($sapOld, $arrNewSapKeys) == false) {
UniteFunctionsUC::throwError("sap {$sapOld} should be exists in sap keys array");
}
$sapNew = $arrNewSapKeys[$sapOld];
$setting["sap"] = $sapNew;
$this->arrSettings[] = $setting;
if (array_key_exists($name, $this->arrIndex)) {
UniteFunctionsUC::throwError("The setting <b>{$name} </b> already exists. ");
}
$this->arrIndex[$name] = count($this->arrSettings) - 1;
}
$arrControlsNew = $settings->getArrControls();
$this->arrControls = array_merge($this->arrControls, $arrControlsNew);
$arrControlChildrenNew = $settings->getArrControlChildren();
$this->arrControlChildren = array_merge($this->arrControlChildren, $arrControlChildrenNew);
}
public function modifyLoadedSettings($loadParam)
{
}
private function addExternalSettings($filename, $loadParam = null, $loadType = null)
{
$filepathSettings = GlobalsUC::$pathSettings . "{$filename}.xml";
if (file_exists($filepathSettings) == false) {
UniteFunctionsUC::throwError("The file: {$filename}.xml don't found in settings folder");
}
$settings = new UniteCreatorSettings();
if (!empty($loadType)) {
$settings->setType($loadType);
}
$settings->loadXMLFile($filepathSettings, $loadParam);
if (!empty($loadParam)) {
$settings->modifyLoadedSettings($loadParam);
}
$this->mergeSettings($settings);
}
public function updateArrSettingByName($name, $setting)
{
foreach ($this->arrSettings as $key => $settingExisting) {
$settingName = UniteFunctionsUC::getVal($settingExisting, "name");
if ($settingName == $name) {
$this->arrSettings[$key] = $setting;
return false;
}
}
UniteFunctionsUC::throwError("Setting with name: {$name} don't exists");
}
public function hideSetting($name)
{
$this->updateSettingProperty($name, "hidden", "true");
}
public function hideSettings($arrSettings)
{
foreach ($arrSettings as $settingName) {
$this->hideSetting($settingName);
}
}
public function removeSetting($name)
{
$index = $this->getIndexByName($name);
array_splice($this->arrSettings, $index, 1);
$this->reindex();
}
public function modifyValueByDatatype($value, $datatype)
{
if (is_array($value)) {
foreach ($value as $key => $val) {
$value[$key] = $this->modifyValueByDatatypeFunc($val, $datatype);
}
} else {
$value = $this->modifyValueByDatatypeFunc($value, $datatype);
}
return $value;
}
public function modifyValueByDatatypeFunc($value, $datatype)
{
switch ($datatype) {
case self::DATATYPE_STRING:
break;
case self::DATATYPE_LINK:
$link = UniteFunctionsUC::getHrefFromHtml($value);
if (!empty($link)) {
$value = $link;
}
$value = strip_tags($value);
break;
case self::DATATYPE_PLAINTEXT:
$value = strip_tags($value);
break;
case self::DATATYPE_NUMBER:
$value = floatval($value);
if (!is_numeric($value)) {
$value = 0;
}
break;
case self::DATATYPE_NUMBEROREMTY:
$value = trim($value);
if ($value !== "") {
$value = floatval($value);
}
break;
}
return $value;
}
public function setStoredValues($arrValues)
{
if (empty($arrValues)) {
return false;
}
foreach ($this->arrSettings as $key => $setting) {
$name = UniteFunctionsUC::getVal($setting, "name");
$type = UniteFunctionsUC::getVal($setting, "type");
$datatype = UniteFunctionsUC::getVal($setting, "datatype");
$customType = UniteFunctionsUC::getVal($setting, "custom_type");
if (!empty($customType)) {
continue;
}
if (array_key_exists($name, $arrValues)) {
$value = $arrValues[$name];
$value = $this->modifyValueByDatatype($value, $datatype);
$this->arrSettings[$key]["value"] = $value;
$arrValues[$name] = $value;
}
}
return $arrValues;
}
private function a_UPDATE()
{
}
public function updateSettingAddHTML($name, $html)
{
$this->updateSettingProperty($name, self::PARAM_ADDTEXT, $html);
}
public function updateSettingProperty($settingName, $propertyName, $value)
{
try {
$setting = $this->getSettingByName($settingName);
if (empty($setting)) {
return false;
}
} catch (Exception $e) {
return false;
}
$setting[$propertyName] = $value;
$this->updateArrSettingByName($settingName, $setting);
}
public function updateSettingValue($name, $value)
{
$setting = $this->getSettingByName($name);
$setting["value"] = $value;
$this->updateArrSettingByName($name, $setting);
}
public function updateSettingItems($name, $items, $default = null)
{
$setting = $this->getSettingByName($name);
$setting["items"] = $items;
if ($default !== null) {
$setting["value"] = $default;
}
$this->updateArrSettingByName($name, $setting);
}
public function changeSettingName($oldName, $newName)
{
$index = $this->getIndexByName($oldName);
unset($this->arrIndex[$oldName]);
$this->arrIndex[$newName] = $index;
$this->arrSettings[$index]["name"] = $newName;
}
}