/** * 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); } } }