Example #1
0
 /**
  * {@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'));
 }
Example #2
0
 /**
  * {@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'));
 }
Example #3
0
 /**
  * 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);
         }
     }
 }
Example #4
0
 /**
  * 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);
         }
     }
 }