Beispiel #1
0
 public static function init_user_state()
 {
     if (self::$_userstate === null && isset($_SESSION['session_userstate'])) {
         self::$_userstate =& $_SESSION['session_userstate'];
     } else {
         self::$_userstate = null;
     }
 }
Beispiel #2
0
 public static function start()
 {
     // стартуем сессию с названием из конфигурации
     session_name(JADMIN_SESSION_NAME);
     session_start();
     joosCore::set_admin_mode();
     // это что бы в админке запоминались фильтры, последние страницы и прочие вкусняшки
     joosSession::init_user_state();
 }
Beispiel #3
0
 /**
  * Получение системного сообщения
  * @return string - текст сообщения
  */
 public static function get()
 {
     $_s = session_id();
     if (!joosCore::is_admin() && empty($_s)) {
         session_name(joosSession::session_cookie_name());
         session_start();
     }
     $message = joosRequest::session('joostina.mosmsg', false);
     if ($message != '' && joosString::strlen($message) > 300) {
         // выводим сообщения не длинее 300 символов
         $message = joosString::substr($message, 0, 300);
     }
     /**
             @var $_SESSION array */
     unset($_SESSION['joostina.mosmsg']);
     return $message ? '<div class="b-system_message">' . $message . '</div>' : '';
 }
Beispiel #4
0
 private static function prepare_extra(joosModel $obj, array $extra_data)
 {
     if (self::$data === NULL) {
         $results = array();
         $hidden_elements = array();
         $wheres_filter = array('true');
         $wheres_search = array();
         foreach ($extra_data as $key => $value) {
             switch ($key) {
                 case 'search':
                     $results[] = joosHtml::label(array('for' => 'search_elements'), 'Поиск');
                     $search_value = joosSession::get_user_state_from_request("search-" . $obj->get_class_name(), 'search', false);
                     $results[] = joosHtml::input(array('name' => 'search_elements', 'id' => 'search_elements'), $search_value);
                     $hidden_elements[] = joosHtml::hidden('search', $search_value);
                     if ($search_value !== false && joosString::trim($search_value) != '') {
                         foreach ($value as $selected_value) {
                             $wheres_search[] = sprintf('%s LIKE ( %s )', joosDatabase::instance()->get_name_quote($selected_value), joosDatabase::instance()->get_quoted("%" . $search_value . "%"));
                         }
                     }
                     break;
                 case 'filter':
                     foreach ($value as $params_key => $params_value) {
                         $field_name = $params_key;
                         $field_title = $value[$field_name]['name'];
                         $results[] = joosHtml::label(array('for' => 'filter_' . $field_name), $field_title);
                         $datas_for_select = array(-1 => 'Всё сразу');
                         $datas_for_select += isset($value[$field_name]['call_from']) && is_callable($value[$field_name]['call_from']) ? call_user_func($value[$field_name]['call_from'], $obj, $params_key) : array();
                         $selected_value = joosSession::get_user_state_from_request('filter-' . '-' . $field_name . '-' . $obj->get_class_name(), $field_name, -1);
                         $selected_value = $selected_value === '0' ? '0' : $selected_value;
                         $results[] = joosHtml::dropdown(array('name' => 'filter_' . $field_name, 'data-obj-name' => $field_name, 'class' => 'filter_elements', 'selected' => $selected_value), $datas_for_select);
                         $hidden_elements[] = joosHtml::hidden($field_name, $selected_value);
                         if ($selected_value && $selected_value != -1 or $selected_value === '0') {
                             $wheres_filter[] = sprintf('%s=%s', joosDatabase::instance()->get_name_quote($field_name), joosDatabase::instance()->get_quoted($selected_value));
                         }
                     }
                     break;
                 case 'extrafilter':
                     $datas_for_select = array(-1 => 'Всё сразу');
                     foreach ($value as $params_key => $params_value) {
                         $field_name = $params_key;
                         $datas_for_select += array($params_key => $value[$field_name]['name']);
                     }
                     $selected_value = joosSession::get_user_state_from_request("extrafilter-" . $obj->get_class_name(), 'filter_extrafilter', -1);
                     $results[] = joosHtml::label(array('for' => 'filter_extrafilter'), 'Фильтр');
                     $results[] = joosHtml::dropdown(array('name' => 'filter_extrafilter_selector', 'class' => 'extrafilter_elements', 'options' => $datas_for_select, 'selected' => $selected_value));
                     $hidden_elements[] = joosHtml::hidden('filter_extrafilter', $selected_value);
                     //self::$data_overload = ( $selected_value && isset($value[$selected_value]['call_from']) && is_callable($value[$selected_value]['call_from']) ) ? call_user_func($value[$selected_value]['call_from'], $obj) : array();
                     self::$data_overload = $selected_value && isset($value[$selected_value]['call_from']) && is_callable($value[$selected_value]['call_from']) ? $value[$selected_value]['call_from'] : array();
                     break;
                 default:
                     break;
             }
         }
         $wheres = array(implode(' AND ', $wheres_filter));
         if (count($wheres_search) > 0) {
             $wheres[] = ' (' . implode(' OR ', $wheres_search) . ' )';
         }
         self::$data = array('for_header' => $results, 'hidden_ellements' => implode("\n", $hidden_elements), 'wheres' => implode(' AND ', $wheres), 'data_overload' => self::$data_overload);
     }
     return self::$data;
 }
Beispiel #5
0
 /**
  * Создание сессии для юзера, для которого уже был ранее найден токен
  *
  */
 public function create_session()
 {
     if (!$this->_search_token_result) {
         return false;
     }
     $session = new modelUsersSession();
     $session->time = time();
     $session->guest = 0;
     $session->user_name = $this->_search_token_result->user_name;
     $session->user_id = $this->_search_token_result->user_id;
     $session->is_admin = 0;
     // сгенерием уникальный ID, захеширем его через sessionCookieValue и запишем в базу
     $session->generate_id();
     // записываем в базу данные о авторизованном пользователе и его сессии
     if (!$session->store()) {
         return false;
     }
     // формируем и устанавливаем пользователю куку что он авторизован
     $sessionCookieName = joosSession::session_cookie_name();
     // в значении куки - НЕ хешированное session_id из базы
     //setcookie($sessionCookieName, $session->get_cookie(), false, '/', JPATH_COOKIE);
     joosCookie::set($sessionCookieName, $session->get_cookie(), array('expires' => '+1 day'));
     //обновляем время последнего доступа к токену
     $query = "UPDATE #__users_tokens SET updated_at = '" . JCURRENT_SERVER_TIME . "' WHERE token=" . joosDatabase::instance()->get_quoted($this->_search_token_result->token);
     joosDatabase::instance()->set_query($query)->query();
     //запоминаем ID
     $this->_last_user_id = $this->_search_token_result->user_id;
     //иногда удаляем старые токены
     $this->delete_old_tokens();
     return true;
 }