/** * Write session data * * @param string $id * @param array $data * @return boolean */ public function write($id, $data) { // we only count for presentational content types if (object_content_types::exists_static(['where' => ['no_virtual_controller_code' => application::get('flag.global.__content_type'), 'no_content_type_presentation' => 1]])) { $inc = 1; } else { $inc = 0; } $save = ['sm_session_id' => $id, 'sm_session_expires' => format::now('timestamp', ['add_seconds' => session::$default_options['gc_maxlifetime']]), 'sm_session_last_requested' => format::now('timestamp'), 'sm_session_pages_count,=,~~' => 'sm_session_pages_count + ' . $inc, 'sm_session_user_ip' => $_SESSION['numbers']['ip']['ip'], 'sm_session_user_id' => $_SESSION['numbers']['entity']['em_entity_id'] ?? 0, 'sm_session_data' => $data]; $db = new db($this->model_seessions->db_link); // we update first $result = $db->update($this->model_seessions->name, $save, 'sm_session_id'); if ($result['affected_rows'] == 0) { $save['sm_session_started'] = format::now('timestamp'); $save['sm_session_pages_count'] = $inc; unset($save['sm_session_pages_count,=,~~']); // we insert $result = $db->insert($this->model_seessions->name, [$save]); } return $result['affected_rows'] ? true : false; }
/** * Process magic variables */ public static function process_magic_variables() { $variables_object = new object_magic_variables(); $variables = $variables_object->get(); $input = request::input(null, true, true); foreach ($variables as $k => $v) { if (!array_key_exists($k, $input)) { continue; } if ($k == '__content_type') { $object = new object_content_types(); $data = $object->get(); if (isset($data[$input[$k]])) { self::$settings['flag']['global'][$k] = $input[$k]; } } else { self::$settings['flag']['global'][$k] = $input[$k]; } } }