Вход Регистрация
Файл: root/index.php
Строк: 491
<?php

/**
* @name        JMY CMS
* @link        http://jmy.su/
* @copyright   Copyright (C) 2012-2015 JMY LTD
* @license     LICENSE.txt (see attached file)
* @version     VERSION.txt (see attached file)
* @author      Komarov Ivan
* @revision       25.02.2015
*/
 
 
if (!defined('ACCESS') && !$core->auth->isAdmin && $url[0] !== ADMIN) {
    
header('Location: /');
    exit;
}

define('ADMIN_ACCESS'true);
define('COOKIE_VISIT'md5(getenv("REMOTE_ADDR")) . '-admin_visit');
define('SESS_AUTH'md5(getenv("REMOTE_ADDR")) . '-auth');
define('SESS_COUNT'md5(getenv("REMOTE_ADDR")) . '-counter');
session_start();

require 
ROOT 'etc/admin.config.php';
require 
ROOT 'root/functions.php';
require 
ROOT 'root/ajax_funcs.php';
require 
ROOT 'root/admin_tpl.class.php';

$core->loadLangFile('root/langs/{lang}.navigation.php');

if(!empty(
$admin_conf['ipaccess']))
{
    
$IPs_arr explode("n"$admin_conf['ipaccess']);
    
$parse_ip = @ip2long(getRealIpAddr()); 
    foreach(
$IPs_arr as $IPs
    { 
        
$IPs explode('|'$IPs);
        if(
count($IPs) == 2)
        {
            if(
$parse_ip <= @ip2long($IPs[0]) && $parse_ip <= @ip2long($IPs[1]))
            {
                
$_SESSION[SESS_AUTH] = null;
                
$_SESSION[SESS_COUNT] = 0;
                
setcookie(COOKIE_AUTH''time(), '/');
                
setcookie(COOKIE_PAUSE''time(), '/');
                
location();
            }
        }
    }
}

function 
admin_main() 
{
    global 
$adminTpl,  $db$core$config;
    
$last_visit time();
    
$last_ip $_SERVER['REMOTE_ADDR'];
    
$query '';
    
    if(!isset(
$_COOKIE[COOKIE_VISIT]) && !isset($_SESSION[SESS_AUTH])) 
    {
        if(
$db->query("INSERT INTO " DB_PREFIX "_logs VALUES ('" time() . "', '" filter($_SERVER['REMOTE_ADDR']) . "', '" $core->auth->user_id "', '" str_replace('{nick}'$core->auth->user_info['nick'], _LOG_WRITE) . "', '1')")) 
        {
            
setcookie(COOKIE_VISITtime(), time() + 86400'/');
        }        
        
$last_visit time();
        
$last_ip $_SERVER['REMOTE_ADDR'];
    } 
    else 
    {
        
$query $db->query("SELECT * FROM " DB_PREFIX "_logs ORDER BY time DESC");
        
$i 0;
        while(
$log $db->getRow($query)) {
            
$i++;            
            if(
$i == 1)
            {
                
$last_visit $log['time'];
                
$last_ip $log['ip'];
            }            
            
$logs[$log['level']][$log['uid']][$log['time']] = $log['ip'] . '-' $log['history'];
        }
    }    
    
$adminTpl->admin_head(_MAIN_PAGE);
    echo 
'<div class="row mg-b">
                        <div class="col-xs-6">
                            <h3 class="no-margin">' 
._MAIN_MAIN '</h3>
                            <small>version {VERSION}</small>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-3 col-sm-6 col-xs-12">
                            <section style="cursor:pointer" class="panel" onclick="location.href='
{ADMIN}/module/news/add';">
                                <div class="panel-body">
                                    <div class="circle-icon">
                                        <img src="usr/tpl/admin/assets/images/new.png" class="img-circle" alt="">
                                    </div>
                                    <div>
                                        <h3 class="no-margin">'
._MAIN_CREATE.'</h3>'._MAIN_CREATE_DESC.'
                                    </div>
                                </div>
                            </section>
                        </div>
                        <div class="col-md-3 col-sm-6 col-xs-12">
                            <section style="cursor:pointer" class="panel" onclick="location.href='
{ADMIN}/module/news/';">
                                <div class="panel-body">
                                    <div class="circle-icon">
                                        <img src="usr/tpl/admin/assets/images/edit.png" class="img-circle" alt="">
                                    </div>
                                    <div>
                                        <h3 class="no-margin">'
._MAIN_LIST.'</h3>'._MAIN_LIST_DESC.'
                                    </div>
                                </div>
                            </section>
                        </div>
                        <div class="col-md-3 col-sm-6 col-xs-12">
                            <section style="cursor:pointer" class="panel" onclick="location.href='
{ADMIN}/module/content';">
                                <div class="panel-body">
                                    <div class="circle-icon">
                                        <img src="usr/tpl/admin/assets/images/page.png" class="img-circle" alt="">
                                    </div>
                                    <div>
                                        <h3 class="no-margin">'
._MAIN_STATIC.'</h3>'._MAIN_STATIC_DESC.'
                                    </div>
                                </div>
                            </section>
                        </div>
                        <div class="col-md-3 col-sm-6 col-xs-12">
                            <section style="cursor:pointer" class="panel" onclick="location.href='
administration/config';">
                                <div class="panel-body">
                                    <div class="circle-icon">
                                        <img src="usr/tpl/admin/assets/images/settings.png" class="img-circle" alt="">
                                    </div>
                                    <div>
                                        <h3 class="no-margin">'
._MAIN_CONF.'</h3>'._MAIN_CONF_DESC.'
                                    </div>
                                </div>
                            </section>
                        </div>
                    </div>'
;    
    foreach(
glob(ROOT.'usr/modules/*/admin/moderation.php') as $listed) require_once($listed);
    unset(
$component_array);
    if (
$config['dbCache']== OR $config['cache'] == 1
    {
        echo 
'<div class="row"><div class="col-lg-12"><section class="panel"><div class="panel-heading no-border"><b>' _CACHE '</b></div><div class="panel-body"><div class="switcher-content"><p>' _MAIN_CACHE_INFO '<br><div style="float:right"><small>[ <a href="index.php?url='.ADMIN.'/do/clearCache">'_MAIN_CLEARCACHE .'</a> ]</small></div></p></div></div></section></div></div>';
    }        
    echo 
'<div class="row">
        <div class="col-lg-12">
            <section>
            <ul id="myTab" class="nav nav-tabs">                
                <li class="pull-right">
                    <a href="#profile2" data-toggle="tab">'
._MAIN_LAST_COMM.'</a>
                </li>
                <li class="active pull-right">
                    <a href="#home2" data-toggle="tab">'
._MAIN_LAST_USER.'</a>
                </li>
            </ul>
            <section class="panel">
                <div class="panel-body no-padding">
                    <div id="myTabContent" class="tab-content">
                        <div class="tab-pane active" id="home2">'
;    
    
$query $db->query("SELECT c.*, u.nick, u.group, u.last_visit FROM ".DB_PREFIX."_comments as c LEFT JOIN `" USER_DB "`.`" USER_PREFIX "_users` as u on (c.uid=u.id) ORDER BY date DESC LIMIT 5");
    if(
$db->numRows($query) > 0
    {
    echo 
'<div class="panel-heading">'._MAIN_LAST_USER.'</div>
                            <table class="table table-striped no-margin">
                                <thead>
                                    <tr>
                                        <th><span class="pd-l-sm"></span>ID</th>
                                        <th class="col-md-4">' 
_COMMENT '</th>
                                        <th class="col-md-1">' 
_MODULE '</th>
                                        <th class="col-md-2">' 
_DATE '</th>
                                        <th class="col-md-2">' 
_USER '</th>
                                        <th class="col-md-1">' 
_LINKS '</th>
                                        <th class="col-md-4">' 
_ACTIONS '</th>
                                    </tr>
                                </thead>
                                <tbody>'
;
        while(
$commment $db->getRow($query)) 
        {
            
$tt str(htmlspecialchars(strip_tags($commment['text'])), 30);
            
$active = ($commment['status'] == 1) ? '<a href="javascript:void(0)" onclick="adminCommentStatus('' . $commment['id'] . '', 0);" title="' _DEACTIVATE '"><button type="button" class="btn btn btn-primary btn-sm" data-toggle="tooltip" data-placement="top" title="" data-original-title="' _DEACTIVATE '">D</button></a>' '<a href="javascript:void(0)" onclick="adminCommentStatus('' . $commment['id'] . '', 1);" title="' _ACTIVATE '"><button type="button" class="btn btn btn-primary btn-sm" data-toggle="tooltip" data-placement="top" title="" data-original-title="' _ACTIVATE '">A</button></a>';
            echo 
'
            <tr>
                <td><span class="pd-l-sm"></span>' 
$commment['id'] . '</td>
                <td>' 
. (($tt != '') ? $tt '<font color="red">'._NO_TEXT.'</font>') . '</td>
                <td>' 
commentLink($commment['module'], $commment['post_id']) . '</td>
                <td>' 
formatDate($commment['date'], true) . '</td>
                <td>' 
. (($commment['uid'] != 0) ? '<a href="profile' $commment['nick'] . '" title="' $commment['nick'] . '">' $commment['nick'] . '</a>' $commment['gname']) . '</td>
                <td>' 
. (eregStrt('href'$commment['text']) || eregStrt('[url'$commment['text']) ? "<font color="red">"._YES."</font>" "<font color="green">"._NO."</font>") . '</td>
                <td>
                '
.$active.'
                <button onclick="location.href='
{ADMIN}/comments/edit/'.$commment['id'].'';" type="button" class="btn btn-info btn-sm" data-toggle="tooltip" data-placement="top" title="" data-original-title="'._EDIT.'">E</button>
                <button onclick="location.href='
{ADMIN}/comments/delete/'.$commment['id'].'';" type="button" class="btn btn-danger btn-sm" data-toggle="tooltip" data-placement="top" title="" data-original-title="'._DELETE.'">D</button>                
                </td>
                </tr>
                '
;
                
        }
        echo 
'</tbody></table>';
    } 
    else 
    {
        echo 
'<div class="panel-heading">'._MAIN_EMPTY_COMM.'</div>';
    }
    echo 
'</div><div class="tab-pane" id="profile2">';        
    
$query $db->query('SELECT u.*, g.name FROM `' USER_DB '`.`' USER_PREFIX '_users` as u LEFT JOIN `' USER_DB '`.`' USER_PREFIX '_groups` as g on(u.group = g.id) ORDER BY regdate DESC LIMIT 5');
    if(
$db->numRows($query) > 0
    {
    echo 
'<div class="panel-heading">'._MAIN_LAST_COMM.'</div>
                            <table class="table table-striped no-margin">
                                <thead>
                                    <tr>
                                        <th><span class="pd-l-sm"></span>ID</th>
                                        <th class="col-md-2">' 
_NICK '</th>
                                        <th class="col-md-2">' 
_GROUP '</th>
                                        <th class="col-md-3">' 
_REGDATE '</th>
                                        <th class="col-md-3">' 
_LASTDATE '</th>                                        
                                        <th class="col-md-4">' 
_ACTIONS '</th>
                                    </tr>
                                </thead>
                                <tbody>'
;
        while(
$user $db->getRow($query)) 
        {
            echo 
'            
            <tr>
                <td><span class="pd-l-sm"></span>' 
$user['id'] . '</td>
                <td> <a href="profile/' 
$user['nick'] . '">' $user['nick'] .'</a></td>
                <td>' 
$user['name'] . '</td>
                <td>' 
formatDate($user['regdate'], true) . '</td>
                <td>' 
formatDate($user['last_visit']) . '</td>
                <td>
                <a href="administration/user/edit/'
.$user['id'].'">
                <button type="button" class="btn btn-info btn-sm" data-toggle="tooltip" data-placement="top" title="" data-original-title="Редактировать">E</button>
                </a>
                <a href="administration/user/ban/'
.$user['id'].'" onclick="return getConfirm('Забанить пользователя?')"><button type="button" class="btn btn btn-primary btn-sm" data-toggle="tooltip" data-placement="top" title="" data-original-title="Забанить">B</button></a>                
                <a href="administration//user/delete/'
.$user['id'].'" onclick="return getConfirm('Удалить пользователя?')">
                <button type="button" class="btn btn-danger btn-sm" data-toggle="tooltip" data-placement="top" title="" data-original-title="Удалить">X</button>
                </a>
                </td>
                </tr>'
;
        }
    echo 
"</tbody></table>";
    } 
    echo 
"</div></div></div></section></section></div></div>";
    echo 
'<div class="row">
            <div class="col-lg-8">            
                <section>
                    <ul id="myTab" class="nav nav-tabs">
                        <li class="pull-right">
                            <a href="#false2" data-toggle="tab">' 
_FALSELOG '</a>
                        </li>
                        <li class="active pull-right">
                            <a href="#log2" data-toggle="tab">'
_LASTLOG .'</a>
                        </li>
                    </ul>
                <section class="panel">
                    <div class="panel-body no-padding">
                        <div id="myTabContent" class="tab-content">
                            <div class="tab-pane active" id="log2">'
;
    if(isset(
$logs[1]))
    {
        
$log1 0;
        echo 
'<div class="panel-heading">'_LASTLOG .'</div>
                            <table class="table table-striped no-margin">
                                <thead>
                                    <tr>                                        
                                        <th class="col-md-2"><span class="pd-l-sm"></span>' 
_NICK '</th>
                                        <th class="col-md-2">' 
_GROUP '</th>
                                        <th class="col-md-2">' 
_REGDATE '</th>                                        
                                    </tr>
                                </thead>
                                <tbody>'
;
        foreach(
$logs[1] as $uid => $arr
        {
            foreach(
$arr as $time => $info
            {
                
$log1++;
                if(
$log1 <= 7
                {            
                    
$log_true explode('-'$info);
                    echo 
'
                    <tr>        
                        <td><span class="pd-l-sm"></span>' 
$log_true[1] .'</td>
                        <td>' 
$log_true[0] . '</td>
                        <td>' 
formatDate($timetrue) . '</td>
                    </tr>'
;
                }
            }
            
            
        }
            echo 
'</tbody></table>';
            echo 
'<br><div align="right"><a href="/index.php?url={ADMIN}/logs/clear" class="btn btn-warning btn-xs">' _CLEAN '</a><span class="pd-l-sm"></span></div><br>';
    } 
    else 
    {
        echo 
'<div class="panel-heading">Информация отсутствует.</div>';
    }    
    echo 
'</div><div class="tab-pane" id="false2">';   
   
   if(isset(
$logs[2])) 
   {
        
$log2 0;
        echo 
'<div class="panel-heading">' _FALSELOG '/div>
                            <table class="table table-striped no-margin">
                                <thead>
                                    <tr>                                        
                                        <th class="col-md-2"><span class="pd-l-sm"></span>' 
_NICK '</th>
                                        <th class="col-md-2">' 
_GROUP '</th>
                                        <th class="col-md-2">' 
_REGDATE '</th>                                        
                                    </tr>
                                </thead>
                                <tbody>'
;
        foreach(
$logs[2] as $uid => $arr
        {
            foreach(
$arr as $time => $info)
            {
                
$log2++;
                if(
$log2 <= 7)
                {            
                    
$log_true explode('-'$info);
                    echo 
'
                    <tr>            
                        <td><span class="pd-l-sm"></span>' 
$log_true[1] .'</td>
                        <td>' 
$log_true[0] . '</td>
                        <td>' 
formatDate($timetrue) . '</td>
                    </tr>'
;
                }
            }
            
            
        }
            echo 
"</tbody></table>";
            echo 
'<br><div align="right"><a href="/index.php?url={ADMIN}/logs/clear" class="btn btn-warning btn-xs">' _CLEAN '</a><span class="pd-l-sm"></span></div><br>';
    } 
    else 
    {    
        echo 
'<div class="panel-heading">Информация отсутствует.</div>';
    }    
    echo 
'</div></div></div></section></section></div>';
    list(
$weekUsrs) = $db->fetchRow($db->query("SELECT Count(id) FROM `" USER_DB "`.`" USER_PREFIX "_users` WHERE regdate > '" . (time()-604900) . "'"));
    list(
$weekComm) = $db->fetchRow($db->query("SELECT Count(id) FROM " DB_PREFIX "_comments WHERE date > '" . (time()-604900) . "'"));
    echo 
'<div class="col-lg-4">
            <section class="panel">
                <div class="panel-heading no-border">
                    <b>Статистика</b>
                </div>
                <div class="panel-body">
                    <div class="switcher-content">
                        <p>
                            <b>Комментариев на этой неделе:</b> ' 
$weekComm '<br>
                            <b>Пользователей на этой неделе:</b> ' 
$weekUsrs '
                        </p>
                    </div>
                </div>
            </section>'
;
    echo 
"</div>";    
    echo 
"</div></div>";
    
$adminTpl->admin_foot($last_visit$last_ip);
    
}
function 
init_login() 
{
global 
$adminTpl$admin_conf$core;
    if(
$core->auth->isUser && $core->auth->isAdmin)
    {
        if(isset(
$_SESSION[SESS_AUTH]) && $_SESSION[SESS_AUTH] == 'ok' OR $admin_conf['sessions'] == 0)
        {
            return 
false;
        } 
        else 
        {
            return 
true;
        }
    }
    else
    {
        return 
true;
    }
}

function 
login() 
{
global 
$adminTpl$core$config$db$admin_conf;

    
$adminTpl->sep '';
    if(isset(
$_POST['nick']))
    {
        
$nick filter($_POST['nick'], 'nick');
        
$password md5(md5($_POST['password']));
        if(!empty(
$nick) && !empty($_POST['password']))
        {
            
$access $db->getRow($db->query("SELECT id, password, tail FROM `" USER_DB "`.`" USER_PREFIX "_users` WHERE `nick` = '" $db->safesql($nick) . "' AND `group`='1'"));
            
$no_head true;
            
            if (
md5(mb_substr($password0, -mb_strlen($access['tail'])) . $access['tail']) == $access['password']) 
            {
                if(
$core->auth->isUser && $core->auth->isAdmin)
                {
                    
$_SESSION[SESS_AUTH] = 'ok';
                }
                else
                {
                    
$_SESSION[SESS_AUTH] = 'ok';
                    
$newHash md5(@$_SERVER['HTTP_USER_AGENT'].$config['uniqKey']);
                    
setcookie(COOKIE_AUTHengine_encode(serialize(array('id' => $access['id'], 'nick' => $nick'password' => md5(mb_substr($password0, -mb_strlen($access['tail'])) . $access['tail']), 'hash' => $newHash))), time() + COOKIE_TIME'/');
                }
                
                if(isset(
$_SESSION[SESS_AUTH])) {
                    
$db->query("INSERT INTO " DB_PREFIX "_logs VALUES ('" time() . "', '" filter($_SERVER['REMOTE_ADDR'], 'ip') . "', '" $core->auth->user_id "', '" str_replace('[nick]'$nick_GOOD_LOGIN) . "', '1')");
                    if(
eregStrt(ADMIN$_SERVER['HTTP_REFERER']))
                    {
                        
location($_SERVER['HTTP_REFERER']);
                    }
                    else
                    {
                        
location(ADMIN);
                    }
                }
            }
            else
            {
                if (!isset(
$_SESSION[SESS_COUNT])) 
                {
                    
$_SESSION[SESS_COUNT] = 0;
                }
                
                
$counter $_SESSION[SESS_COUNT]++;
                
$turns 5-$counter;
                
$adminTpl->loadFile('login');
                
                if(
$counter == 3
                {
                    
$db->query("INSERT INTO " DB_PREFIX "_logs VALUES ('" time() . "', '" filter($_SERVER['REMOTE_ADDR'], 'ip') . "', '" $core->auth->user_id "', '" str_replace(array('[nick]''[pass]'), array($nickstr($_POST['password'], 4)), _BAD_LOGIN) . "', '2')");
                }
                
                if(
$turns <= 0
                {
                    
$adminTpl->setVar('STOP''<div id="stop">' _NO_TURNS '</div>');
                } 
                else 
                {
                    
$adminTpl->setVar('STOP''<div id="stop">' str_replace('{turns}'$turns_FALSE_TURN) . '</div>');
                }
                
                
$adminTpl->setVar('URL'$config['url']);
                
$adminTpl->setVar('ADM_THEME''usr/tpl/admin');
                
$adminTpl->end();
            }
        }
        else
        {
            
$adminTpl->loadFile('login');
            
$adminTpl->setVar('STOP''<div id="stop">' _EMPTY_LOGIN '</div>');
            
$adminTpl->setVar('URL'$config['url']);
            
$adminTpl->setVar('ADM_THEME''usr/tpl/admin');
            
$adminTpl->end();
        }
    }
    else
    {
        
$adminTpl->loadFile('login');
        
$adminTpl->setVar('STOP''');
        
$adminTpl->setVar('URL'$config['url']);
        
$adminTpl->setVar('ADM_THEME''usr/tpl/admin');
        
$adminTpl->end();
    }
}

if(
init_login()) 
{
    
login();

else 
{
    require 
ROOT 'root/list.php';    
    switch(isset(
$url[1]) ? $url[1] : null) {
        default:
            if(isset(
$url[1]))
            {
                if(isset(
$component_array[$url[1]]) OR isset($services_array[$url[1]]))
                {
                    if(
checkAdmControl($url[1]))
                    {
                        require 
ROOT 'root/modules/' $url[1] . '.admin.php';
                    }
                    else
                    {
                        
noadmAccess();
                    }
                }
                else
                {
                    if(
checkAdmControl('index'))
                    {
                        
admin_main();
                    }
                    else
                    {
                        
noadmAccess();
                    }
                }
            }
            else
            {
                if(
checkAdmControl('index'))
                {
                    
admin_main();
                }
                else
                {
                    
noadmAccess();
                }
            }
        break;
        
        case 
'do':
            
$switch filter($url[2]);
            switch(
$switch) {
                case 
'logout':
                    
$_SESSION[SESS_AUTH] = null;
                    
$_SESSION[SESS_COUNT] = 0;
                    
$core->auth->logout();
                    
header('Location: /');
                    break;
                
                case 
'tic':
                    echo 
yandex_tic($_SERVER['HTTP_HOST']);
                    break;
                
                case 
'pr':
                    echo 
getPageRank($_SERVER['HTTP_HOST']);
                    break;                    
                    
                case 
'clearCache':
                    if(
checkAdmControl('index'))
                    {
                        
ajaxInit();
                        
full_rmdir(ROOT 'tmp/mysql');
                        
full_rmdir(ROOT 'tmp/cache');
                        @
mkdir(ROOT 'tmp/mysql'0777);
                        @
mkdir(ROOT 'tmp/cache'0777);
                        echo 
_CACHE_CLEANED;
                        
header('Location: /' ADMIN);
                    }
                    break;
                
                
            }
        break;
        
        case 
'module':
            
define('ADMIN_SWITCH'true);
            
$mod $url[2];
            if(
file_exists(ROOT 'usr/modules/' $mod '/admin/index.php')) 
            {
                if(
checkAdmControl($mod))
                {
                    require 
ROOT 'usr/modules/' $mod '/admin/index.php';
                }
                else
                {
                    
noadmAccess();
                }
            } 
            else 
            {
                
header('Location: /' ADMIN);
            }
            break;
        
        case 
'logs':
        global 
$adminTpl,  $db;
            
ajaxInit();
            
$type $url[2];
            
$num = isset($url[3]) ? intval($url[3]) : '';
            
            switch(
$type
            {
                case 
"clear":
                    
$db->query("TRUNCATE TABLE " DB_PREFIX "_logs");
                    echo 
_TABLECLEANED;
                    
header('Location: /' ADMIN);
                    break;
            }
            break;
                
        case 
'addition':
            
$type $url[2];
            switch(
$type
            {
                case 
"tic":
                    echo 
yandex_tic('http://'.$_SERVER['HTTP_HOST']);
                    break;
            }
        break;            
    }
}
Онлайн: 2
Реклама