D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
psa
/
admin
/
htdocs
/
spaw
/
class
/
Filename :
config.class.php
back
Copy
<?php /** * SPAW Editor v.2 Config classes * * Configuration related classes * * @package spaw2 * @subpackage Configuration * @author Alan Mendelevich <alan@solmetra.lt> * @copyright UAB Solmetra */ /** * Specifies that value for the config item is not transfered to external parts of spaw */ define("SPAW_CFG_TRANSFER_NONE", 0); /** * Specifies that value for the config item is transfered via JavaScript variables */ define("SPAW_CFG_TRANSFER_JS", 1); /** * Specifies that value for the config item is appended to request url */ define("SPAW_CFG_TRANSFER_REQUEST", 2); /** * Specifies that value for the config item is stored on the server */ define("SPAW_CFG_TRANSFER_SECURE", 4); /** * Configuration item class * * Class defines single configuration item * @package spaw2 * @subpackage Configuration */ class SpawConfigItem { /** * Sets config item values * @param string $name Config item's name * @param mixed $value Config item's value * @param integer $transfer_type The way item should be transfered to other parts of the editor (one of SPAW_CFG_TRANSFER_* constants) */ public function __construct($name, $value, $transfer_type) { $this->name = $name; $this->value = $value; $this->transfer_type = $transfer_type; } /** * item name * @var string */ var $name; /** * item value * @var mixed */ var $value; /** * the way item is transferred to dialogs, etc. * Holds information on the prefered method to transfer this value to external * of the editor like dialogs. Should be set to one (or several combined with OR) * of SPAW_CFG_TRANFER_* constants. * @var integer */ var $transfer_type; } /** * Configuration class * * Holds global (when accessed through class) SPAW configuration and * instance configuration when insantiated * @package spaw2 * @subpackage Configuration */ class SpawConfig { /** * array for instance config settings * @access private */ var $config; /** * Copies global SPAW configuration to instance */ public function __construct() { // copy static config to this instance $this->config = SpawConfig::configVar(); } /** * Workaround for "static" class variable under php4 * @access private */ private static function &configVar() { static $config; return $config; } /** * Sets global config item * @param string $name Config item's name * @param mixed $value Config item's value * @param integer $transfer_type Transfer type for the value (One or several of SPAW_CFG_TRANSFER_* constants). Default value - SPAW_CFG_TRANSFER_NONE * @see SPAW_CFG_TRANSFER_NONE, SPAW_CFG_TRANSFER_JS, SPAW_CFG_TRANSFER_REQUEST, SPAW_CFG_TRANSFER_SECURE * @static */ public static function setStaticConfigItem($name, $value, $transfer_type=SPAW_CFG_TRANSFER_NONE) { $cfg = &SpawConfig::configVar(); $cfg[$name] = new SpawConfigItem($name, $value, $transfer_type); } /** * Sets instance config item * @param string $name Config item's name * @param mixed $value Config item's value * @param integer $transfer_type Transfer type for the value (One or several of SPAW_CFG_TRANSFER_* constants). Default value - SPAW_CFG_TRANSFER_NONE * @see SPAW_CFG_TRANSFER_NONE, SPAW_CFG_TRANSFER_JS, SPAW_CFG_TRANSFER_REQUEST, SPAW_CFG_TRANSFER_SECURE */ function setConfigItem($name, $value, $transfer_type=SPAW_CFG_TRANSFER_NONE) { $this->config[$name] = new SpawConfigItem($name, $value, $transfer_type); } /** * Gets global config item * @param string $name Config item name * @returns SpawConfigItem * @static */ public static function getStaticConfigItem($name) { $cfg = &SpawConfig::configVar(); if (isset($cfg[$name])) return $cfg[$name]; else return NULL; } /** * Gets instance config item * @param string $name Config item name * @returns SpawConfigItem */ function getConfigItem($name) { $cfg = $this->config; if (isset($cfg[$name])) return $cfg[$name]; else return NULL; } /** * Sets global config item value * @param string $name Config item name * @param mixed $value Config item value * @static */ public static function setStaticConfigValue($name, $value) { $cfg_item = SpawConfig::getStaticConfigItem($name); if ($cfg_item) { $cfg_item->value = $value; SpawConfig::setStaticConfigItem($cfg_item->name, $cfg_item->value, $cfg_item->transfer_type); } } /** * Sets global value for the element of config item provided item's value is an array * @param string $name Config item name * @param mixed $index Array index * @param mixed $value Element value */ public static function setStaticConfigValueElement($name, $index, $value) { $cfg_item = SpawConfig::getStaticConfigItem($name); if ($cfg_item && is_array($cfg_item->value)) { $cfg_item->value[$index] = $value; SpawConfig::setStaticConfigItem($cfg_item->name, $cfg_item->value, $cfg_item->transfer_type); } } /** * Sets instance config item value * @param string $name Config item name * @param mixed $value Config item value */ function setConfigValue($name, $value) { $cfg_item = $this->getConfigItem($name); if ($cfg_item) { $cfg_item->value = $value; $this->setConfigItem($cfg_item->name, $cfg_item->value, $cfg_item->transfer_type); } } /** * Sets instance value for the element of config item provided item's value is an array * @param string $name Config item name * @param mixed $index Array index * @param mixed $value Element value */ function setConfigValueElement($name, $index, $value) { $cfg_item = $this->getConfigItem($name); if ($cfg_item && is_array($cfg_item->value)) { $cfg_item->value[$index] = $value; $this->setConfigItem($cfg_item->name, $cfg_item->value, $cfg_item->transfer_type); } } /** * Gets global config item value * @param string $name Config item name * @returns mixed Config item value * @static */ public static function getStaticConfigValue($name) { $cfg_item = SpawConfig::getStaticConfigItem($name); if ($cfg_item) return $cfg_item->value; else return NULL; } /** * Gets global value for the element of config item provided item's value is an array * @param string $name Config item name * @param mixed $index Array index * @returns mixed Element value */ public static function getStaticConfigValueElement($name, $index) { $cfg_item = SpawConfig::getStaticConfigItem($name); if ($cfg_item && is_array($cfg_item->value) && !empty($cfg_item->value[$index])) return $cfg_item->value[$index]; else return NULL; } /** * Gets instance config item value * @param string $name Config item name * @returns mixed Config item value */ function getConfigValue($name) { $cfg_item = $this->getConfigItem($name); if ($cfg_item) return $cfg_item->value; else return NULL; } /** * Gets instance value for the element of config item provided item's value is an array * @param string $name Config item name * @param mixed $index Array index * @returns mixed Element value */ function getConfigValueElement($name, $index) { $cfg_item = $this->getConfigItem($name); if ($cfg_item && is_array($cfg_item->value) && !empty($cfg_item->value[$index])) return $cfg_item->value[$index]; else return NULL; } /** * Stores "secure" config items in session and returns md5 of serialized config variables * @returns string */ function storeSecureConfig() { $strcfg = ''; $cfg = $this->config; $sec_cfg = array(); $result = ''; $stored_cfg = SpawVars::getSessionVar("spaw_configs", []); foreach($cfg as $key => $cfg_item) { if ($cfg_item->transfer_type & SPAW_CFG_TRANSFER_SECURE) { $strcfg .= $key . serialize($cfg_item); $sec_cfg[$key] = $cfg_item; } } if ($strcfg != '') { $result = md5($strcfg); $stored_cfg[$result] = $sec_cfg; SpawVars::setSessionVar("spaw_configs", $stored_cfg); } return $result; } /** * Restores "secure" config items from session * @params string $scid Config id */ function restoreSecureConfig($scid) { $sec_cfg = SpawVars::getSessionVar("spaw_configs", []); if ($sec_cfg != null && $sec_cfg != '' && is_array($sec_cfg) && isset($sec_cfg[$scid]) && is_array($sec_cfg[$scid])) { foreach($sec_cfg[$scid] as $key => $cfg_item) $this->setConfigItem($cfg_item->name, $cfg_item->value, $cfg_item->transfer_type); } } } ?>