Вход Регистрация
Файл: sys/inc/functions/ds-admin.php
Строк: 534
<?php 

function admin_log($mod$act$opis)
{
    global 
$user;
    
$q db::query("SELECT * FROM `admin_log_mod` WHERE `name` = '" my_esc$mod ) . "' LIMIT 1");
    if (  
$q->fetch_row() == ) {
        
db::query("INSERT INTO `admin_log_mod` (`name`) VALUES ('" my_esc$mod ) . "')");
        
$id_mod db::insert_id();
    } else
        
$id_mod $q->fetch_row();
    
$q2 db::query("SELECT * FROM `admin_log_act` WHERE `name` = '" my_esc$act ) . "' AND `id_mod` = '$id_mod' LIMIT 1");
    if (  
$q2->fetch_row() == ) {
        
db::query("INSERT INTO `admin_log_act` (`name`, `id_mod`) VALUES ('" my_esc$act ) . "', '$id_mod')");
        
$id_act db::insert_id();
    } else
        
$id_act $q2->fetch_row();
    
db::query("INSERT INTO `admin_log` (`time`, `id_user`, `mod`, `act`, `opis`) 
                  VALUES ('" 
time() . "','$user[id]', '$id_mod', '$id_act', '" my_esc$opis ) . "')");
}

function 
is_page_admin() {
    if (
strpos($_SERVER['REQUEST_URI'], '/adm_panel/') !== false) {
        return 
true
    }
    return 
false
}

function 
get_admin_url($url$query '') {
    if (
preg_match('/^([A-z-_]+)$/m'$url)) {
        
$url 'index.php?admin=' $url;
    }    

    if (
$query) {
        
$url get_query_url($query$url); 
    }

    return 
$url
}

/**
* Функция добавляет пункт меню в админку
*/ 

function add_menu_admin($menu_title$url$access 'adm_info'$icon ''$position 10$page_title ''$callback '')
{
    
$admin_menu ds_get('ds_admin_menu', array()); 
    
$admin_menu[] = array(
        
'title'      => $menu_title,  
        
'page_title' => $page_title,  
        
'position'   => $position
        
'access'     => $access
        
'icon'       => $icon,
        
'url'        => get_admin_url($url), 
        
'function'   => $callback
    ); 
    
ds_set('ds_admin_menu'$admin_menu);
    
    
$classesMenu ds_get('ds_admin_menu_classes', array()); 
    
$is_current_menu strpos(get_current_url(), get_admin_url($url)); 

    if (
$is_current_menu !== false && $is_current_menu 0) {
        
$classesMenu[get_admin_url($url)] = true
    }

    
ds_set('ds_admin_menu_classes'$classesMenu);

    if (!empty(
$callback)) {
        
$admin_pages ds_get('ds_admin_pages', array()); 
        
$admin_pages[get_admin_url($url)] = array(
            
'title' => $page_title
            
'access' => $access
            
'function' => $callback,  
        ); 
        
ds_set('ds_admin_pages'$admin_pages);
    }
}

/**
* Функция добавляет подпункт меню в админку
*/ 

function add_submenu_admin($menu_title$url$access 'adm_info'$icon ''$position 10$menu_parent ''$page_title ''$callback '')
{
    
$menu_parent get_admin_url($menu_parent); 

    
$admin_submenu ds_get('ds_admin_submenu', array()); 
    
$admin_submenu[$menu_parent][] = array(
        
'title'      => $menu_title
        
'page_title' => $page_title
        
'position'   => $position,
        
'access'     => $access
        
'icon'       => $icon,
        
'url'        => get_admin_url($url), 
        
'function'   => $callback
        
'parent'     => $menu_parent,
    ); 
    
ds_set('ds_admin_submenu'$admin_submenu);

    
$classesMenu ds_get('ds_admin_menu_classes', array()); 

    
$is_current_menu strpos(get_current_url(), get_admin_url($url)); 
    if (
$is_current_menu !== false) {
        
$classesMenu[get_admin_url($url)] = true
        
$classesMenu[$menu_parent] = true
    }

    
ds_set('ds_admin_menu_classes'$classesMenu);


    if (!empty(
$callback)) {
        
$admin_pages ds_get('ds_admin_pages', array()); 
        
$admin_pages[get_admin_url($url)] = array(
            
'title' => $page_title
            
'access' => $access
            
'function' => $callback
        ); 
        
ds_set('ds_admin_pages'$admin_pages);
    }
}

/**
* Возвращает меню админки 
*/ 
function get_admin_menu() 
{
    
$menu ds_get('ds_admin_menu', array()); 
    
$submenu ds_get('ds_admin_submenu', array()); 
    
$classes ds_get('ds_admin_menu_classes', array()); 

    foreach(
$menu AS $key => $item) {
        if (isset(
$classes[$item['url']])) {
            
$menu[$key]['class'] = 'active'
        }
        if (!empty(
$submenu[$item['url']])) {
            
$menu[$key]['submenu'] = $submenu[$item['url']]; 

            foreach(
$menu[$key]['submenu'] AS $s_key => $s_value) {
                if (isset(
$classes[$s_value['url']])) {
                    
$menu[$key]['submenu'][$s_key]['class'] = 'active'
                }
            }
        }
    }

    return 
$menu
}

/**
* Функция возвращает зарегистрированную страницу админки
*/ 
function get_admin_page($page_name
{
    
$admin_pages ds_get('ds_admin_pages', array()); 

    if (isset(
$admin_pages[$page_name])) {
        return 
$admin_pages[$page_name]; 
    }

    return 
false
}

function 
ds_admin_menu_load() 
{
    
add_menu_admin(__('Перейти на сайт'), get_site_url(), 'adm_panel_show''fa-home', -1); 
    
add_menu_admin(__('Пользователи'), 'users.php''adm_set_sys''fa-users'50); 
    
add_menu_admin(__('Темы оформления'), 'themes.php''adm_set_sys''fa-paint-brush'60); 
    
add_submenu_admin(__('Виджеты'), 'widgets.php''adm_themes''fa-th-list'20'themes.php');

    
add_menu_admin(__('Настройки'), 'settings.php?page=general''adm_set_sys''fa-cogs'80); 
    
add_submenu_admin(__('Группы пользователей'), 'accesses.php''adm_accesses''fa-sliders'80'users.php');

    
add_menu_admin(__('Плагины'), 'plugins.php''plugins''fa-plug'80); 

    
add_menu_admin(__('О системе'), 'info.php''adm_info''fa-life-ring'99); 

    
do_event('ds_admin_menu_load'); 
}

function 
ds_admin_menu() 
{
    
$admin_menu use_filters('ds_admin_menu'get_admin_menu()); 
    
$Menu = new Menu(); 
    echo 
'<div class="admin-menu">';
    echo 
$Menu->get_template_menu($admin_menu); 
    echo 
'</div>';
}

/**
* Вывод сообщений в админке
*/ 
function ds_admin_messages() 
{
    
do_event('pre_admin_output_messages');

    if (isset(
$_SESSION['message'])) {
        
do_event('ds_admin_messages_output');
        echo 
use_filters('ds_admin_message_filter''<div class="alert alert-message">' $_SESSION['message'] . '</div>'); 
        
$_SESSION['message'] = NULL
    }
}

/**
* Вывод сообщений ошибок в админке
*/ 
function ds_admin_errors() 
{
    
$template use_filters('ds_admin_template_error''<div class="alert alert-error">%error</div>'); 

    
do_event('pre_admin_output_errors');
    
$errors get_errors(); 
    
    foreach(
$errors AS $error) {
        echo 
str_replace('%error'$error$template); 
    }
    
do_event('ds_admin_errors_output');
}


function 
add_settings_section($page_id$section_id$args = array()) 
{
    
$sections ds_get('ds_admin_options_section', array()); 

    if (!isset(
$sections[$page_id][$section_id])) {
        
$sections[$page_id][$section_id] = $args
    }

    
ds_set('ds_admin_options_section'$sections);
}

function 
get_settings_sections($page_id
{
    
$sections ds_get('ds_admin_options_section', array()); 

    if (isset(
$sections[$page_id])) {
        return 
$sections[$page_id]; 
    }
}

function 
get_settings_fields($page_id$section_id
{
    
$fields ds_get('ds_settings_fields', array()); 

    if (isset(
$fields[$page_id][$section_id])) {
        return 
$fields[$page_id][$section_id]; 
    }

    return array(); 
}

function 
add_settings_page($page_id$page_title$access 'adm_set_sys'$callback ''$menu_title ''$parent_settings true
{
    
$set_pages ds_get('ds_admin_settings_pages', array()); 

    if (!isset(
$set_pages[$page_id])) {
        
$set_pages[$page_id] = array(
            
'id' => $page_id
            
'page_title' => $page_title
            
'access' => $access
            
'function' => $callback
            
'menu_title' => $menu_title
        ); 

        if (
$parent_settings === true) {
            
add_submenu_admin($menu_title'settings.php?page=' $page_id$access'fa-cog'10'settings.php?page=general'); 
        }
    }

    
ds_set('ds_admin_settings_pages'$set_pages);
}

function 
get_settings_page($page_id
{
    
$set_pages ds_get('ds_admin_settings_pages', array()); 

    if (isset(
$set_pages[$page_id])) {
        return 
$set_pages[$page_id]; 
    }

    return 
false;
}

function 
do_settings_section($section_id
{
    global 
$page_id
}

function 
do_settings_fields($page_id
{
    
do_event('do_settings_fields'$page_id); 

    
$page get_settings_page($page_id); 
    
$sections get_settings_sections($page_id); 

    if (!
is_array($sections)) {
        return ;
    }

    
$forms = new Forms(); 
    
$forms->add_field(array(
        
'field_name' => 'save_settings'
        
'field_value' => '1'
        
'field_type' => 'hidden'
    )); 

    foreach(
$sections AS $section_id => $section) {
        
$fields get_settings_fields($page_id$section_id);
        
        foreach(
$fields AS $field) {
            if (
$field) {
                
$value get_option($field['field_name']); 
                if (empty(
$value)) {
                    
$value $field['field_default']; 
                }

                
$forms->add_field(array_merge($field, array(
                    
'field_value' => str_replace('%value'$value$field['field_value']), 
                    
'field_checked' => get_option($field['field_name'], '0') == '0' 1
                ))); 
                
$forms->add_field(array_merge($field, array(
                    
'field_name' => '_' $field['field_name'], 
                    
'field_value' => hash('sha256'$field['field_name'] . ':' SALT_FORMS_FIELDS), 
                    
'field_type' => 'hidden',
                ))); 
            }
        }
    }
    
    
$forms->button(__('Сохранить'));
    echo 
$forms->display();
}

function 
add_settings_field($page_id$section_id$args = array()) 
{
    
$default = array(
        
'title'         => ''
        
'type'          => 'text'
        
'name'          => ''
        
'description'   => ''
        
'default'       => ''
        
'value'         => '%value'
        
'checked'       => '%value'
        
'after'         => ''
        
'before'        => ''
        
'placeholder'   => ''
        
'attr'          => array(), 
        
'values'        => array(), 
    );

    
$args array_merge($default$args); 

    
$settings_fields ds_get('ds_settings_fields', array());
    
$settings_fields[$page_id][$section_id][] = array(
        
'field_placeholder' => $args['placeholder'], 
        
'field_before'      => $args['before'], 
        
'field_title'       => $args['title'], 
        
'field_value'       => $args['value'], 
        
'field_default'     => $args['default'], 
        
'field_name'        => $args['name'], 
        
'field_type'        => $args['type'], 
        
'field_desc'        => $args['description'], 
        
'field_after'       => $args['after'], 
        
'field_attr'        => $args['attr'], 
        
'field_values'      => $args['values'], 
        
'field_checked'     => $args['checked'], 
    );  

    
ds_set('ds_settings_fields'$settings_fields);
}

function 
ds_admin_settings_load() 
{
    
$set get_system(); 

    
add_settings_page('general'__('Основные настройки сайта'), 'adm_set_sys'''''false); 

    
add_settings_section('general''settings_general', array(
        
'option_type' => 'autoload'
    )); 

    
add_settings_field('general''settings_general', array(
        
'title' => __('Название сайта'), 
        
'name' => 'title'
        
'value' => text($set['title']), 
    )); 

    
add_settings_field('general''settings_general', array(
        
'title' => __('Описание (meta: description)'), 
        
'name' => 'meta_description'
        
'type' => 'textarea'
        
'value' => text($set['meta_description']), 
    )); 

    
add_settings_field('general''settings_general', array(
        
'title' => __('Пунктов на страницу'), 
        
'name' => 'p_str'
        
'value' => abs(intval($set['p_str'])), 
    )); 

    
add_settings_field('general''settings_general', array(
        
'title' => __('E-mail для BackUp'), 
        
'name' => 'mail_backup'
        
'value' => text($set['mail_backup']), 
    )); 

    
add_settings_field('general''settings_general', array(
        
'title' => __('Анти-Dos'), 
        
'name' => 'antidos'
        
'type' => 'checkbox'
        
'value' => 1
        
'checked' => '%value'
        
'description' => '* Анти-Dos - защита от частых запросов с одного IP-адреса'
    )); 

    
add_settings_field('general''settings_general', array(
        
'title' => __('Ошибки интерпретатора'), 
        
'name' => 'show_err_php'
        
'type' => 'select'
        
'values' => array(
            array(
                
'title' => __('Показывать администрации'), 
                
'value' => 1
            ), 
            array(
                
'title' => __('Скрывать'), 
                
'value' => 0
            ), 
        )
    )); 

    
$languages get_core_languages(); 
    
$values = array(); 
    foreach(
$languages AS $lang) {
        if (
is_translations('core'$lang['code']) || $lang['code'] == 'ru_RU') {
            
$values[] = array(
                
'title' => $lang['native_name'],
                
'value' => $lang['code'],
            );             
        }
    }

    
add_settings_field('general''settings_general', array(
        
'title' => __('Язык сайта'), 
        
'name' => 'site_language'
        
'type' => 'select'
        
'values' => $values
        
'value' => get_option('site_language''ru_RU'),
    )); 

    
add_settings_field('general''settings_general', array(
        
'title' => __('Регистрация пользователей'), 
        
'name' => 'reg_select'
        
'type' => 'select'
        
'values' => array(
            array(
                
'title' => __('Открыта'), 
                
'value' => 'open'
            ), 
            array(
                
'title' => __('Открыта + E-Mail'), 
                
'value' => 'open_mail'
            ), 
            array(
                
'title' => __('Закрыта'), 
                
'value' => 'close'
            ), 
        )
    )); 

    
add_settings_field('general''settings_general', array(
        
'title' => __('Доступ для гостей'), 
        
'name' => 'guest_select'
        
'type' => 'select'
        
'description' => __('[!] В закрытом режиме, гостям доступна авторизация и регистрация'), 
        
'values' => array(
            array(
                
'title' => __('Открыто все'), 
                
'value' => 0
            ), 
            array(
                
'title' => __('Закрыто все'), 
                
'value' => 1
            ), 
        )
    )); 

    
add_settings_page('bbcode'__('Настройки тегов BBcode'), 'adm_set_sys''''Настройки BBcode'true); 
    
add_settings_section('bbcode''settings_bbcode', array(
        
'option_type' => 'autoload'
    )); 

    
$fields = array(
        array(
            
'title' => __('Курсив [i]'), 
            
'name' => 'bb_i'
        ), 
        array(
            
'title' => __('Подчеркнутый [u]'), 
            
'name' => 'bb_u',  
        ), 
        array(
            
'title' => __('Жирный [b]'), 
            
'name' => 'bb_b',  
        ), 
        array(
            
'title' => __('Большой [big]'), 
            
'name' => 'bb_big',  
        ), 
        array(
            
'title' => __('Маленький [small]'), 
            
'name' => 'bb_small',  
        ), 
        array(
            
'title' => __('Маленький [small]'), 
            
'name' => 'bb_small',  
        ), 
        array(
            
'title' => __('Подсветка PHP-кода [code]'), 
            
'name' => 'bb_code',  
        ), 
        array(
            
'title' => __('Размер шрифта [size]'), 
            
'name' => 'bb_size',  
        ), 
        array(
            
'title' => __('Обработка ссылок'), 
            
'name' => 'bb_http',  
        ), 
        array(
            
'title' => __('Вставка ссылок'), 
            
'name' => 'bb_url',  
        ), 
        array(
            
'title' => __('Вставка изображений'), 
            
'name' => 'bb_img',  
        ), 
    ); 

    foreach(
$fields AS $field) {
        
add_settings_field('bbcode''settings_bbcode'array_merge(array(
            
'type' => 'checkbox'
            
'value' => 1
            
'checked' => '%value'
        ), 
$field)); 
    }

}

function 
get_validate_post($array
{
    
$validate = array(); 
    if (
is_array($array)) {
        foreach(
$array AS $key => $value) {
            if (isset(
$array['_' $key]) && hash('sha256'$key ':' SALT_FORMS_FIELDS) === $array['_' $key]) {
                
$validate[$key] = $value
            }
        }
    }

    return 
$validate
}

function 
get_list_updates() 
{
    
$json ds_get('ds_list_updates', array()); 

    if (!empty(
$json)) {
        return 
$json
    }

    
$json['count_any'] = 0

    
$checkFile PATH_CACHE '/ds_update_core.json';

    if (
is_file($checkFile)) {
        
$json['core'] = json_decode(file_get_contents($checkFile), true); 
        
$json['count_any'] += count($json['core']); 
    }

    
$checkFile PATH_CACHE '/ds_update_plugins.json';

    if (
is_file($checkFile)) {
        
$json['plugins'] = json_decode(file_get_contents($checkFile), true); 
        
$json['count_any'] += count($json['plugins']); 
    }

    
ds_set('ds_list_updates'$json); 

    return 
use_filters('ds_list_updates'$json); 
}

/** 
* Проверяем наличие обновлений для плагинов
*/ 
function check_plugins_update() 
{
    
$checkFile PATH_CACHE '/ds_update_plugins.json'

    if (
is_file($checkFile)) {
        
$time = (time() - filemtime($checkFile)); 

        if (
$time 60 60 12) {
            return ;
        }
    }

    
$update = new Update(); 
    
$plugins ds_plugins(); 
    
$updatePlugins $update->get_plugins(join(','array_keys($plugins))); 

    
$array_update = array(); 

    if (
is_array($updatePlugins)) {
        foreach(
$updatePlugins AS $key => $resource
        {
            if (
$resource['version'] > $plugins[$key]['version']) {
                
$array_update[$key] = $resource
            }
        }
    }

    @
file_put_contents($checkFilejson_encode($array_updateJSON_UNESCAPED_UNICODE));

    
do_event('check_plugins_update'$array_update); 
}

/** 
* Проверяем наличие обновлений ядра CMS-Social
*/ 
function check_core_update() 
{
    
$checkFile PATH_CACHE '/ds_update_core.json'

    if (
is_file($checkFile)) {
        
$time = (time() - filemtime($checkFile)); 

        if (
$time 60 60 12) {
            return ;
        }
    }

    
$update = new Update(); 
    
$update_info $update->get_latest();  

    
$array_update = array(); 

    if (
$update_info['latest']['version'] > get_version()) {
        
$array_update[] = $update_info['latest']; 
    }

    @
file_put_contents($checkFilejson_encode($array_updateJSON_UNESCAPED_UNICODE));

    
do_event('check_core_update'$array_update); 
}
Онлайн: 1
Реклама