/** * {@inheritdoc} */ public function offsetSet($offset, $data) { self::validateSessionKeyLength($offset); if (!isset($_SESSION->locks[$offset])) { $_SESSION->locks[$offset] = 1; self::getLock(self::getLockName($offset), self::$sessionLockTime); } parent::offsetSet($offset, $data, null, null, array('\\cmsSession', 'removeFromSession'), array('\\cmsSession', 'validateSessionKeyLength')); }
/** * {@inheritdoc} */ public function offsetSet($offset, $data) { static::validateSessionKeyLength($offset); if (!isset($this->locks[$offset])) { $this->locks[$offset] = 1; static::getLock(static::getLockName($offset), static::$sessionLockTime); } parent::offsetSet($offset, $data, null, null, array(get_class($this), 'removeFromSession'), array(get_class($this), 'validateSessionKeyLength')); }
/** * Update given object to database * Callable from RecursiveArrayAccess class on offsetSet * * @param RecursiveArrayAccess $recursiveArrayAccess session object array */ public static function updateToDb($recursiveArrayAccess) { if (empty($recursiveArrayAccess->id) && (string) $recursiveArrayAccess->offset != '') { $query = 'INSERT INTO ' . DBPREFIX . 'session_variable SET `parent_id` = "' . intval($recursiveArrayAccess->parentId) . '", `sessionid` = "' . $_SESSION->sessionid . '", `key` = "' . contrexx_input2db($recursiveArrayAccess->offset) . '", `value` = ""'; \Env::get('db')->Execute($query); $recursiveArrayAccess->id = \Env::get('db')->Insert_ID(); } foreach ($recursiveArrayAccess->data as $key => $value) { if ($recursiveArrayAccess->isDirty($key)) { if (is_a($value, 'Cx\\Core\\Model\\RecursiveArrayAccess')) { $serializedValue = ''; } else { $serializedValue = contrexx_input2db(serialize($value)); } $query = 'INSERT INTO ' . DBPREFIX . 'session_variable SET `parent_id` = "' . intval($recursiveArrayAccess->id) . '", `sessionid` = "' . $_SESSION->sessionid . '", `key` = "' . contrexx_input2db($key) . '", `value` = "' . $serializedValue . '" ON DUPLICATE KEY UPDATE `value` = "' . $serializedValue . '"'; \Env::get('db')->Execute($query); } if (is_a($value, 'Cx\\Core\\Model\\RecursiveArrayAccess')) { $value->parentId = intval($recursiveArrayAccess->id); self::updateToDb($value); } } }
/** * Update given object to database * Callable from RecursiveArrayAccess class on offsetSet * * @param RecursiveArrayAccess $recursiveArrayAccess session object array */ public static function updateToDb($recursiveArrayAccess) { if (empty($recursiveArrayAccess->id) && (string) $recursiveArrayAccess->offset != '') { $query = 'INSERT INTO ' . DBPREFIX . 'session_variable SET `parent_id` = "' . intval($recursiveArrayAccess->parentId) . '", `sessionid` = "' . $_SESSION->sessionid . '", `key` = "' . contrexx_input2db($recursiveArrayAccess->offset) . '", `value` = ""'; \Env::get('db')->Execute($query); $recursiveArrayAccess->id = \Env::get('db')->Insert_ID(); } foreach ($recursiveArrayAccess->data as $key => $value) { if ($recursiveArrayAccess->isDirty($key)) { if (is_a($value, 'Cx\\Core\\Model\\RecursiveArrayAccess')) { $serializedValue = ''; } else { // is_callable() can return true for type array, so we need to check that it is not an array if (!is_array($value) && is_callable($value)) { \DBG::dump('Function for session index ' . $key . ' can not be stored, saving functions in session is not supported. Please use json instead'); continue; } $serializedValue = contrexx_input2db(serialize($value)); } $query = 'INSERT INTO ' . DBPREFIX . 'session_variable SET `parent_id` = "' . intval($recursiveArrayAccess->id) . '", `sessionid` = "' . $_SESSION->sessionid . '", `key` = "' . contrexx_input2db($key) . '", `value` = "' . $serializedValue . '" ON DUPLICATE KEY UPDATE `value` = "' . $serializedValue . '"'; \Env::get('db')->Execute($query); } if (is_a($value, 'Cx\\Core\\Model\\RecursiveArrayAccess')) { $value->parentId = intval($recursiveArrayAccess->id); self::updateToDb($value); } } }