Пример #1
0
 /**
  * Очень упрощённая функция базовой отправки сообщения на 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);
 }
Пример #2
0
 /**
  * Получение уникального ключа для значения пользовательской сессии
  *
  * @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;
 }
Пример #3
0
 /**
  * Расширенная функция отправки сообщения на 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;
     }
 }
Пример #4
0
 /**
  * Конструктор открывающий соединение с базой данных
  *
  * @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');
 }
Пример #5
0
    <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>
Пример #6
0
 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);
 }
Пример #7
0
 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;
     }
 }
Пример #8
0
 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";
     }
 }
Пример #9
0
 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;
 }