/** * Очень упрощённая функция базовой отправки сообщения на email * * @tutorial joosMail::simply('*****@*****.**','Hello!','From Russia!'); * * @param string $to email получателя * @param string $title заголовк сообщения * @param string $message текст сообщения * @return bool */ public static function simply($to, $title, $message) { $headers = "MIME-Version: 1.0\n"; $headers .= "Content-type: text/html; charset=utf-8\n"; $headers .= "X-Priority: 3\n"; $headers .= "X-MSMail-Priority: Normal\n"; $headers .= "X-Mailer: JoostinaCoreMail\n"; $headers .= sprintf("From: JoostinaCore <%s>\n", joosConfig::get2('mail', 'system_email')); return (bool) mail($to, $title, $message, $headers); }
/** * Получение уникального ключа для значения пользовательской сессии * * @static * @param null $hash_key * @return string * * @todo добавить возможность работы через прокси, когда у пользователя меняется конечный IP, но единый IP прокси */ public static function session_cookie_value($hash_key = null) { $user_ip = joosRequest::user_ip(); $user_browser = joosRequest::server('HTTP_USER_AGENT', 'none'); $type = joosConfig::get2('session', 'type', 2); switch ($type) { case 1: $value = md5($hash_key . $user_ip); break; default: $value = joosCSRF::hash($hash_key . $user_ip . $user_browser); break; } return $value; }
/** * Расширенная функция отправки сообщения на email * * @tutorial joosSimpleMail::send_email('*****@*****.**','Hello!','From Russia!'); * * @param string|array $to email получателя * @param string $title заголовк сообщения * @param string $message текст сообщения * @param string|bool $from email отправителя, по умолчанию используется системный параметр * * @return bool|Void */ public static function send_email($to, $title, $message, $from = false) { try { $email_obj = new SimpleMail(); $email_obj->From = $from ? $from : joosConfig::get2('mail', 'system_email'); $email_obj->To = is_array($to) ? $to : array($to); $email_obj->Subject = $title; $body = strip_tags($message); $email_obj->addBody($body); if ($body !== $message) { $email_obj->addBody($message, 'text/html'); } $email_obj->send(); return true; } catch (joosSimpleMailException $e) { return false; } }
/** * Конструктор открывающий соединение с базой данных * * @param string $host - хост базы данных, обычно localhost * @param string $user - имя пользователя базы данных * @param string $pass - пароль соединения с базой данных * @param string $db - название базы данных * @param int $port - порт сервера MySQL * @param string $socket - сокет MySQL */ protected function __construct($host = 'localhost', $user = '******', $pass = '', $db = '', $port = null, $socket = null) { // проверка доступности поддержки работы с базой данных в php if (!function_exists('mysqli_connect')) { joosPages::error_database('Нет поддержки mysql'); } // попытка соединиться с сервером баз данных if (!($this->_resource = mysqli_connect($host, $user, $pass, $db, $port, $socket))) { joosPages::error_database('Ошибка соединения с БД'); } // при активации отладки выполнение дополнительных запросов профилирования if (JDEBUG) { mysqli_query($this->_resource, 'set profiling=1'); mysqli_query($this->_resource, sprintf('set profiling_history_size=%s', joosConfig::get2('db', 'profiling_history_size', 100))); } // устанавливаем кодировку для корректного соединения с сервером базы данных mysqli_set_charset($this->_resource, 'utf8'); }
<body class="<?php echo $page == 'default' ? 'body-mainpage' : 'body-inside'; ?> <?php echo $page; ?> "> <div class="navbar navbar-fixed-top"> <div class="navbar-inner"> <div class="container"> <a class="brand" href="<?php echo JPATH_SITE; ?> "><?php echo joosConfig::get2('info', 'title'); ?> </a> <div class="nav-collapse"> <?php echo joosModule::execute('menu'); ?> </div> <?php echo joosModule::execute('login'); ?> </div> </div>
public static function pagenav($total) { $com_name = self::$option; $limit = (int) joosSession::get_user_state_from_request("{$com_name}_viewlistlimit", 'limit', joosConfig::get2('admin', 'list_limit', 25)); $limitstart = (int) joosSession::get_user_state_from_request("{$com_name}_limitstart" . self::get_active_model_name(), 'limitstart', 0); return new joosAdminPagenator($total, $limitstart, $limit); }
public function set($key, $value, $ttl = 0) { //если кэш запрещен if (!joosConfig::get2('cache', 'enable')) { return; } switch ($this->type) { case 'apc': apc_store($key, serialize($value), $ttl); return; case 'file': $this->cache[$key] = array('value' => $value, 'expire' => !$ttl ? 0 : time() + $ttl); $this->state = 'dirty'; return; case 'memcache': if ($ttl > 2592000) { $ttl = time() + 2592000; } $this->data_store->set($key, $value, 0, $ttl); return; } }
public static function head() { $jdocument = self::instance(); $meta = joosDocument::get_data('meta'); $n = count($meta); $description = $keywords = false; for ($i = 0; $i < $n; $i++) { if ($meta[$i][0] == 'keywords') { $keywords = $meta[$i][1]; } else { if ($meta[$i][0] == 'description') { $description = $meta[$i][1]; } } } $description ? null : $jdocument->append_meta_tag('description', joosConfig::get2('info', 'description')); $keywords ? null : $jdocument->append_meta_tag('keywords', joosConfig::get2('info', 'keywords')); if (joosDocument::$config['seotag'] == true) { foreach (self::$seotag as $key => $value) { $value != false ? $jdocument->add_meta_tag($key, $value) : null; } } echo $jdocument->get_head(); // favourites icon if (self::$config['favicon'] == true) { $icon = JPATH_SITE . '/media/favicon.ico?v=2'; echo "\t" . '<link rel="shortcut icon" href="' . $icon . '" />' . "\n\t"; } }
public static function init_user() { $option = joosRequest::param('option'); // logout check if ($option == 'logout') { $database = joosDatabase::instance(); // обновление записи последнего посещения панели управления в базе данных if (isset($_SESSION['session_user_id']) && $_SESSION['session_user_id'] != '') { $query = "UPDATE #__users SET lastvisit_date = " . $database->get_quoted(JCURRENT_SERVER_TIME) . " WHERE id = " . (int) $_SESSION['session_user_id']; $database->set_query($query)->query(); } // delete db session record corresponding to currently logged in user if (isset($_SESSION['session_id']) && $_SESSION['session_id'] != '') { $query = "DELETE FROM #__users_session WHERE session_id = " . $database->get_quoted($_SESSION['session_id']); $database->set_query($query)->query(); } session_destroy(); joosRoute::redirect('index.php'); } if (session_name() != JADMIN_SESSION_NAME) { joosRoute::redirect(JPATH_SITE_ADMIN, 'Ошибка сессии'); } $my = new modelUsers(); $my->id = joosRequest::int('session_user_id', 0, $_SESSION); $my->user_name = joosRequest::session('session_user_name'); $session_id = joosRequest::session('session_id'); $logintime = joosRequest::session('session_logintime'); if ($session_id != session_id()) { joosRoute::redirect(JPATH_SITE_ADMIN, 'Вы не авторизованы'); } // check to see if session id corresponds with correct format if ($session_id == md5($my->id . $my->user_name . $logintime)) { $task = joosRequest::param('task'); if ($task != 'save' && $task != 'apply') { $database = joosDatabase::instance(); $session_life_admin = joosConfig::get2('session', 'life_admin'); // purge expired admin sessions only $past = time() - $session_life_admin; $query = "DELETE FROM #__users_session WHERE time < '" . (int) $past . "' AND guest = 1 AND user_id <> 0"; $database->set_query($query)->query(); // update session timestamp $query = "UPDATE #__users_session SET time = " . $database->get_quoted(time()) . " WHERE session_id = " . $database->get_quoted($session_id); $database->set_query($query)->query(); // set garbage cleaning timeout self::set_session_garbage_clean($session_life_admin); // check against db record of session $query = "SELECT COUNT( session_id ) FROM #__users_session WHERE session_id = " . $database->get_quoted($session_id) . " AND user_name = " . $database->get_quoted($my->user_name) . " AND user_id = " . (int) $my->id; $count = $database->set_query($query)->load_result(); // если в таблице нет информации о текущей сессии - она устарела if ($count == 0) { setcookie(JADMIN_SESSION_NAME); // TODO тут можно сделать нормальную запоминалку последней активной страницы, и разных данных с неё. И записывать всё это как параметры пользователя в JSON joosRoute::redirect(JPATH_SITE_ADMIN, 'Вы не авторизованы'); } } } elseif ($session_id == '') { joosRoute::redirect(JPATH_SITE, 'Вы не авторизованы'); } else { joosRoute::redirect(JPATH_SITE, 'Вы не авторизованы'); exit; } self::$user = $my; }