Вход Регистрация
Файл: sys/plugins/classes/dcms.class.php
Строк: 157
<?php

/**
 * Базовый класс системы. Объект хранится в глобальной переменной $dcms
 * @property bool debug Включен режим разработчика
 * @property integer ip_long IP пользователя в после ip2long
 * @property string browser_name Название браузера пользователя
 * @property string salt Соль для хэша пароля пользователя. Генерируется при установке движка.
 * @property log_of_visits log_of_visits
 * @property log_of_referers log_of_referers
 * @property string mysql_base Название базы данных
 * @property string mysql_host Сервер базы данных
 * @property string mysql_user Имя пользователя базы
 * @property string mysql_pass Пароль пользователя базы
 * @property string language Системный языковой пакет
 * @property int widget_items_count Кол-во отображаемых пунктов в виджете
 * @property bool new_time_as_date
 * @property string browser_type Тип браузера
 * @property bool donate_message флаг, указывающий на то, что сообщение о пожертвовании отправлено
 * @property bool censure Проверка на мат
 * @property mixed forum_files_upload_size
 */
class dcms {

    protected 
$_data = array();

    function 
__construct() {
        
// загрузка настроек
        
$this->_load_settings();
    }

    
/**
     * рассылка системных сообщений
     * @param string $mess
     * @param integer $group_min
     */
    
public function distribution($mess$group_min 2) {
        
$q mysql_query("SELECT `id` FROM `users` WHERE `group` >= '" intval($group_min) . "'");
        
$users = array();
        while (
$ank_ids mysql_fetch_assoc($q)) {
            
$users[] = $ank_ids['id'];
        }
        new 
user($users); // предзагрузка данных пользователей из базы

        
foreach ($users as $id_user) {
            
$ank = new user($id_user);
            
$ank->mess($mess);
        }
    }

    
/**
     * Запись действий администратора или системы
     * @global user $user
     * @param string $module Название модуля
     * @param string $description Описание действия
     * @param boolean $is_system Если сестемное действие
     * @return type
     */
    
public function log($module$description$is_system false) {
        
$id_user 0;

        if (!
$is_system) {
            global 
$user;
            
$id_user $user->id;
        }

        return 
mysql_query("INSERT INTO `action_list_administrators` (`id_user`, `time`, `module`, `description`)
VALUES ('
$id_user', '" TIME "', '" my_esc($module) . "', '" my_esc($description) . "')");
    }

    public function 
__get($name) {
        switch (
$name) {
            case 
'salt_user':
                return 
$this->salt . @$_SERVER['HTTP_USER_AGENT'];
                break;
            case 
'ip_long':
                return 
browser::getIpLong();
                break;
            case 
'subdomain_main':
                return 
$this->_subdomain_main();
                break;
            case 
'browser_name':
                return 
browser::getName();
                break;
            case 
'browser_type':
                return 
$this->_browser_type();
                break;
            case 
'browser_type_auto':
                return 
browser::getType();
                break;
            case 
'browser_id':
                return 
$this->_browser_id();
                break;
            case 
'items_per_page':
                return 
$this->_data['items_per_page_' $this->browser_type];
                break;
            case 
'img_max_width':
                return 
$this->_data['img_max_width_' $this->browser_type];
                break;
            case 
'widget_items_count':
                return 
$this->_data['widget_items_count_' $this->browser_type];
                break;
            case 
'theme':
                return 
$this->_data['theme_' $this->browser_type];
                break;
            default:
                return empty(
$this->_data[$name]) ? false $this->_data[$name];
        }
    }

    public function 
__set($name$value) {
        switch (
$name) {
            case 
'items_per_page'$name .= '_' $this->browser_type;
                break;
            case 
'theme'$name .= '_' $this->browser_type;
                break;
            case 
'img_max_width'$name .= '_' $this->browser_type;
                break;
            case 
'widget_items_count'$name .= '_' $this->browser_type;
                break;
        }
        
$this->_data[$name] = $value;
        return 
true;
    }

    protected function 
_subdomain_main() {
        
$domain preg_replace('/^(wap|pda|web|www|i|touch|itouch)./ui'''$_SERVER['HTTP_HOST']);
        return 
$domain;
    }

    
/**
     * Тип браузера
     * @return string
     */
    
protected function _browser_type() {
        if (
$this->subdomain_wap_enable) {
            if (
=== strpos($_SERVER['HTTP_HOST'], $this->subdomain_wap '.')) {
                return 
'wap';
            }
        }
        if (
$this->subdomain_pda_enable) {
            if (
=== strpos($_SERVER['HTTP_HOST'], $this->subdomain_pda '.')) {
                return 
'pda';
            }
        }
        if (
$this->subdomain_itouch_enable) {
            if (
=== strpos($_SERVER['HTTP_HOST'], $this->subdomain_itouch '.')) {
                return 
'itouch';
            }
        }
        if (
$this->subdomain_web_enable) {
            if (
=== strpos($_SERVER['HTTP_HOST'], $this->subdomain_web '.')) {
                return 
'web';
            }
        }
        return 
$this->browser_type_auto;
    }

    protected function 
_browser_id() {
        static 
$browser_id false;

        if (
$browser_id === false) {
            
$q mysql_query("SELECT * FROM `browsers` WHERE `name` = '" my_esc(browser::getName()) . "' LIMIT 1");
            if (
mysql_num_rows($q)) {
                
$browser_id mysql_result($q0);
            } else {
                
$q mysql_query("INSERT INTO `browsers` (`type`, `name`) VALUES ('" my_esc(browser::getType()) . "','" my_esc(browser::getName()) . "')");
                
$browser_id mysql_insert_id();
            }
        }
        return 
$browser_id;
    }

    
/**
     * Загрузка настроек
     */
    
protected function _load_settings() {
        
$settings_default ini::read('/sys/inc/settings.default.ini'true) OR die('Невозможно загрузить файл настроек по-умолчанию');
        if (!
$settings ini::read('/sys/ini/settings.ini')) {
            
// если установки небыли загружены, но при этом есть файл установки, то переадресуем на него
            
if (file_exists('/install/index.php')) {
                
header("Location: /install/");
                exit;
            }
            else
                exit(
'Файл настроек не может быть загружен');
        }
        
$this->_data array_merge($settings_default['DEFAULT'], $this->_data$settings$settings_default['REPLACE']);
    }

    
/**
     * Сохранение настроек
     * @param document|boolean $doc
     * @return boolean
     */
    
public function save_settings($doc false) {
        
$result ini::save('/sys/ini/settings.ini'$this->_data);

        if (
is_a($doc'document')) {
            if (
$result)
                
$doc->msg(__('Настройки успешно сохранены'));
            else
                
$doc->err(__('Нет прав на запись в файл настроек'));
        }

        return 
$result;
    }

}
Онлайн: 1
Реклама