<?php
list($msec, $sec) = explode(chr(32), microtime()); // время запуска скрипта
define('DCMS',TRUE);
define('REQUIRE_PHP_VERSION','5.2'); // запрашиваемая версия PHP
define('TIME_START', $sec + $msec);
define('H', $_SERVER['DOCUMENT_ROOT']); // корневая директория сайта
define('TEMP', H.'/sys/tmp'); // временная папка
define('TMP', H.'/sys/tmp'); // временная папка

// папка со всеми пользовательскими файлами
define('FILES', realpath(H.'/sys/files'));

define('TIME', time()); // временная метка unix
define('DAY_TIME', mktime(0,0,0)); // временная метка unix на начало суток
define('IS_MAIN',$_SERVER['SCRIPT_NAME']=='/index.php'); // главная страница
 // время жизни сессии, а также время последней активности пользователей, считающихся онлайн
define('SESSION_LIFE_TIME', 600);

define('SESSION_NAME','DCMS_SESSION'); // имя сессии
define('SESSION_ID_USER','DCMS_SESSION_ID_USER'); // ключ сессий, в котором хранится идентификатор пользователя
define('COOKIE_ID_USER','DCMS_COOKIE_ID_USER'); // идентификатор пользователя в COOKIE
define('COOKIE_USER_PASSWORD','DCMS_COOKIE_USER_PASSWORD'); // пароль пользователя в COOKIE

define('URL',urlencode($_SERVER['REQUEST_URI']));


version_compare(phpversion(), REQUIRE_PHP_VERSION, '>=') or die('Требуется PHP >= '.REQUIRE_PHP_VERSION);


// автоматическая загрузка классов
function dcmsAutoload($class_name) {@include_once (H.'/sys/plugins/classes/'.strtolower($class_name).'.class.php');}
spl_autoload_register('dcmsAutoload');



// генератор пароля
function passgen($len=32)
{
$password='';
$small='abcdefghijklmnopqrstuvwxyz';
$large='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$numbers='1234567890';
//$symbols='_)(%^*!-';
for ($i=0; $i<$len; $i++) {
switch (mt_rand(1,3)) {
//case 4:$password.=$symbols[mt_rand(0,8)];break;
case 3:$password.=$large[mt_rand(0,25)];break;
case 2:$password.=$small[mt_rand(0,25)];break;
case 1:$password.=$numbers[mt_rand(0,9)];break;
}
}
return $password;
}




/* Переназначение функций */
function my_esc($str){return mysql_real_escape_string($str);}
function for_value($text){return text::for_value($text);}
function output_text($text){return text::output_text($text);}
function rus_mes($mes,$v=1){return misc::rus_mes($mes,$v);}
function vremja($t){return misc::vremja($t);}
function size_data($filesize=0){return misc::size_data($filesize);}
function ini_file_write($path,$array){return ini::save($path,$array);}
/* ---------------------- */



error_reporting(E_ALL);

/* Параметры конфигурации PHP */
if (@function_exists('ini_set')){
ini_set('session.cache_expire', SESSION_LIFE_TIME);
}

if (function_exists('mb_internal_encoding'))mb_internal_encoding('UTF-8');
if (function_exists('iconv'))iconv_set_encoding('internal_encoding', 'UTF-8');
/* --------------------------- */


/* Инициализация механизма сессий  */
session_name(SESSION_NAME) or die('Невозможно инициализировать сессии');
@session_start() or die('Невозможно инициализировать сессии');
define('SESS', preg_replace('#[^a-z0-9]#i', '', session_id()));
/* ------------------------------- */


$cache = new cache(); // работа с кэшем

// подтверждение для обратного запроса с dcms.su
if (!empty($_POST['dcms_postback']))exit( md5($_POST['dcms_postback'].$cache -> get('public_key.'.$_SERVER['HTTP_HOST'])));

$dcms = new dcms(); // загрузка основного класса с настройками

@mysql_connect($dcms->mysql_host,$dcms->mysql_user,$dcms->mysql_pass) or die('Нет соединения с сервером базы');
@mysql_select_db($dcms->mysql_base)or die('Нет доступа к выбранной базе данных');
mysql_query('SET NAMES "utf8"');

// запись рефералов
if ($dcms -> log_of_referers)$log_of_referers=new log_of_referers();

// запись посещений
if ($dcms -> log_of_visits)$log_of_visits=new log_of_visits();

// создание автоматического бэкапа
if ($dcms -> backup_remote && !$cache -> get('backup_remote_auto.'.$_SERVER['HTTP_HOST']))
{
$cache -> set('backup_remote_auto.'.$_SERVER['HTTP_HOST'],true,mt_rand(mktime(23),mktime(24)));
$query = array();
$backup = new backup();
$query['backup_save']=array('name' => 'По расписанию', 'auto'=> 1, 'zip' => file_get_contents($backup -> create()));
unset($backup);
$dcms -> license -> getDataMultiple($query);
unset($query);
}

// очистка от устаревших временных файлов
if ($dcms -> clear_tmp_dir && !$cache -> get('clear_tmp_dir'))
{
$cache -> set('clear_tmp_dir',true,mt_rand(mktime(date('H')+23),mktime(date('H')+24)));
$old_files = filesystem::getOldTmpFiles();
foreach ($old_files as $path) {
	@unlink($path);
}

}




if (!empty($_SESSION[SESSION_ID_USER]))
{
$user = new user($_SESSION[SESSION_ID_USER]);
}
elseif(!empty($_COOKIE[COOKIE_ID_USER]) && !empty($_COOKIE[COOKIE_USER_PASSWORD]) && $_SERVER['SCRIPT_NAME'] !== '/login.php' && $_SERVER['SCRIPT_NAME'] !== '/captcha.php')
{
$user = new user(false);
header('Location: /login.php?return='.URL);
exit;
}
else
{
$user = new user(false);
}



// удаляем сессию пользователя, если по ней не удалось авторизоваться
if (!$user->group && isset($_SESSION[SESSION_ID_USER])){unset($_SESSION[SESSION_ID_USER]);}


// удаление пользователей, вышедших из онлайна
mysql_query("DELETE FROM `users_online` WHERE `time_last` < '".(TIME - SESSION_LIFE_TIME)."'");
if ($user->group){
// обработка данных пользователя

$user->last_visit = TIME;
$user->conversions ++;

$q=mysql_query("SELECT * FROM `users_online` WHERE `id_user` = '{$user->id}' LIMIT 1");
if (mysql_num_rows($q))
{
mysql_query("UPDATE `users_online` SET `conversions` = `conversions` + '1' , `time_last` = '".TIME."', `id_browser` = '$dcms->browser_id', `ip_long` = '$dcms->ip_long', `request` = '".my_esc($_SERVER['REQUEST_URI'])."' WHERE `id_user` = '$user->id' LIMIT 1");
}
else
{
mysql_query("INSERT INTO `users_online` (`id_user`, `time_last`, `time_login`, `request`, `id_browser`, `ip_long`) VALUES ('$user->id', '".TIME."', '".TIME."', '".my_esc($_SERVER['REQUEST_URI'])."', '$dcms->browser_id', '$dcms->ip_long')");
$user->count_visit ++;
}
}
else
{
// обработка гостя
// зачистка гостей, вышедших из онлайна
mysql_query("DELETE FROM `guest_online` WHERE `time_last` < '".(TIME - SESSION_LIFE_TIME)."'");

$q=mysql_query("SELECT * FROM `guest_online` WHERE `ip_long` = '$dcms->ip_long' AND `browser` = '".my_esc($dcms->browser)."' LIMIT 1");
if (mysql_num_rows($q))
{
mysql_query("UPDATE `guest_online` SET `time_last` = '".TIME."', `request` = '".my_esc($_SERVER['REQUEST_URI'])."', `conversions` = `conversions` + 1 WHERE  `ip_long` = '$dcms->ip_long' AND `browser` = '$dcms->browser' LIMIT 1");
}
else
{
mysql_query("INSERT INTO `guest_online` (`ip_long`, `browser`, `time_last`, `time_start`, `request` ) VALUES ('$dcms->ip_long', '".my_esc($dcms->browser)."', '".TIME."', '".TIME."', '".my_esc($_SERVER['REQUEST_URI'])."')");
}

}


if ($user -> is_ban && $_SERVER['SCRIPT_NAME'] != '/my.mail.php' && $_SERVER['SCRIPT_NAME'] != '/ban.php' && $_SERVER['SCRIPT_NAME'] != '/menu.user.php')
{
header('Location: /ban.php?'.SID);
exit;
}




?>