<?php defined('ACCESS') OR die('No direct script access...');
define('UPDATE', 5e3); // обновление сообщений раз в 5 секунд

function thead($text = 'Диалоги')
{
	global $user, $title, $config, $time, $thisLink, $thisPage,  $language, $lang_config;
  	$title = $text;
    $title = $l = 'Почта';
	     $lBack =  "/mail/";
    require (CORE."head.php");
  	?>
  	   
  		<script src="/template/js/mailScript.js?v=<?= filemtime(ROOT . 'template/js/mailScript.js') ?>"></script>
  		<div class="vk_mail">
  	<?
  	if(isset($_SESSION['_VK_mail']) && is_array($_SESSION['_VK_mail']))
  		show($_SESSION['_VK_mail']['text'], $_SESSION['_VK_mail']['type']);
}


/**
 * [d_user функция вывода данных о юзере]
 * @param  integer $id       [id пользователя]
 * @param  boolean $avatar   [принимает true/false, если true то добавляет еще аватар к выводу, а если false то пропускает]
 * @param  string  $img_attr [атрибут для аватара]
 * @return [array]           [возвращает массив данных о пользователе]
 */
function d_user($id = 0, $avatar = true, $img_attr = 'di_img')
{
	$ank = profile::getUser($id, null, false);
	if($avatar)
	{
		$ank['avatar'] = "<img src=\"".profile :: getAvatar($ank, 0)."\" class='".$img_attr."'>";
	}
	$ank['group'] = ' ' . profile::ico($ank);
	$ank['online'] = '';
	$ank['Medals'] = ' ' . profile::vermini($ank);
	$ank['login'] = ' ' . profile::getFullName($ank);
	$ank['dr'] = '' . profile::cake($ank);
	return $ank;
}

/**
 * [redirect функция редиректа с записью ошибки в сессию]
 * @param  string $url  [принимает адрес]
 * @param  [type] $msg  [текст ошибки]
 * @param  string $type [тип ошибки ok|null|warning|error]
 */
function redirect($url = '/mail/', $msg = null, $type = 'ok')
{
	if(!is_null($msg))
		$_SESSION['_VK_mail'] = array(
			'text' => $msg, 
			'type' => $type
			);
	exit(header('Location: ' . $url));
}

/**
 * [show функция отображения ошибок]
 * @param  [type] $msg  [текст ошибки]
 * @param  string $type [тип ошибки ok|null|warning|error]
 */
function show($msg = null, $type = 'ok')
{
	if(is_null($msg))
		return false;
	?>
		<div id="show_msg_box" class="service_msg_box">
		  	<div class="service_msg service_msg_<?= $type ?>"><?= $msg ?></div>
		  	<?= ($type != 'null' ? '<div class="tu_cancel_wrap" onclick="MessagesActions.BoxClose(this)"><i class="tu_cancel"></i></div>' : '') ?> 
		</div>
	<?
	if(isset($_SESSION['_VK_mail']) && is_array($_SESSION['_VK_mail']))
		unset($_SESSION['_VK_mail']);
}

function pagePostData($k_page = 2)
{ 
    $page = 2;
    if (filter_has_var(INPUT_POST, 'p'))
    {
        $page = filter_input(INPUT_POST, 'p', FILTER_SANITIZE_NUMBER_INT);
    }
    if ($page < 2) {
        $page = 2;
    }
    if ($page > $k_page) {
	$page = $k_page;
    }
    return (int)$page;
}

function str_vk($url = '?', $k_page = 1, $page = 1)
{ 
	if($k_page < 1)
		return false;
	$p   = ($page <= 0 OR $page > $k_page) ? 1 : intval($page);
	echo '<div id="pagination" class="list" style="padding: 5px 8px;"><div class="pagination-s">';
	echo '<table class="pagination-list" style="width: 100%;"><tbody><tr>';
		echo ($page > 3) ? '<td><a href="'.$url.'p=1">«</a></td> ' : '';
		echo (($page - 2) > 0) ? '<td><a href="'.$url.'p='.($page - 2).'">'.($page - 2).'</a></td> ' : '';
		echo (($page - 1) > 0) ? '<td><a href="'.$url.'p='.($page - 1).'">'.($page - 1).'</a></td> ' : '';
		echo '<td><span class="pagination-out">'.$page.'</span></td> ';
		echo (($page + 1) <= $k_page) ? '<td><a href="'.$url.'p='.($page + 1 ).'">'. ($page + 1).'</a></td> ' : '';
		echo (($page + 2) <= $k_page) ? '<td><a href="'.$url.'p='.($page + 2).'">'.($page + 2).'</a></td> ' : '';
		echo (($page + 3) <= $k_page && $page != $k_page) ? '<td><a href="'.$url.'p='.$k_page.'">»</a></td> ' : '';
	echo '</tr></tbody></table>';
	echo '</div></div>';
}

/**
 * Определяем существует ли данная "des2num" функция, если нет то используем свою
 */
if(!function_exists('des2num'))
{
	function des2num($int, $array) 
	{
		$cases = array (2, 0, 1, 1, 1, 2);
		return $int . $array[ ($int % 100 > 4 && $int % 100 < 20) ? 2 : $cases[min($int % 10, 5)] ];
	}
}
if(!function_exists('timeleft'))
{
	function timeleft($time) 
	{
		$time = time() - $time;
		$time = ($time > 0 ? $time : 0);
	    static $text;
	    if(empty($text))
	    {
	    	$text = array(
	        'time' => array(
	            array(' год назад', ' года назад', ' лет назад'),
	            array(' месяц назад', ' месяца назад', ' месяцев назад'),
	            array(' день назад', ' дня назад', ' дней назад'),
	            array(' час назад', ' часа назад', ' часов назад'),
	            array(' минуту назад', ' минуты назад', ' минут назад'),
	            array(' секунду назад', ' секунды назад', ' секунд назад') 
		        ),
		        'num' => array(31536000, 2592000, 86400, 3600, 60)
		    );
	    }
	    foreach($text['num'] as $key => $item)
	        if($times = floor($time / $item))
	            return des2num($times, $text['time'][$key]);
	    return ($time >= 1 ? des2num($time, $text['time'][5]) : ' только что');
	}
}

/**
 * [isAjax функция определения Аякс запроса]
 * @return boolean
 */
function isAjax() 
{
	return !(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' && $_SERVER['REQUEST_METHOD'] == 'POST' && (isset($_POST['im_ajax']) && $_POST['im_ajax'] == 'true') || empty($_FILES) === false);
}
function cleanPrettyPrint(&$data = "")
{
	if(is_array($data))
		foreach($data as $key => $item)
			$data[$key] = cleanPrettyPrint($item);
	if(is_string($data))
	{
		$data = preg_replace("/(\s){2,}/", '$1', $data);
		//$data = preg_replace("#((<br( ?/?)>)|\n|\r|\t)+#i", '', $data);
	}
	return $data;
}
function hideLink($msg)
{
	if(preg_match('/<a[^>]*>[^<]*<\/a>/i', $msg, $m) === 1)
	{
		$msg = preg_replace('/<a[^>]*>[^<]*<\/a>/i', '', $msg);
		$msg .= '<div class="mi_medias_plain">Ссылка</div>';
	}
	return $msg;
}
function short_text($text, $words_count = 70, $break = '...') {
	$data = explode(' ', $text);
	$count = count($data);
	$data = array_slice($data, 0, $words_count);
	$text = implode(' ', $data);
	if ($count > $words_count)
		$text.= '...';
	return $text;
}

function setData($data)
{
	header("Cache-Control: no-cache, must-revalidate"); // говорим браузеру что-бы он не кешировал эту страницу
	header("Pragma: no-cache");
	header("Content-type: application/json");
	cleanPrettyPrint($data); // удаляем лишнее пробелы и переводы строк
	echo json_encode($data, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP);
	exit();
}

/**
 * [$config массив настроек]
 * @var array
 */
$config += array(
    'max_uploads_file' => 5,  //максимальное количество загружаемых файлов
	'max_length_text' => 3024, //максимальная длина текста
	'min_length_text' => 1, //минимальная длина текста
	'url' => array( // url адреса, лучше не трогать :)
		'dialog' => 'peer',
		'chat' => 'chat'
	),
	'q' => array(
		'type' => 'Ни одного пользователя не найдено',
		'text' => (isset($_GET['q']) ? implode('', explode('+', stripcslashes(htmlspecialchars($_GET['q'])))) : false)
	),
);
if (DB::$pdo->querySingle("SELECT COUNT(*) FROM `privatMail` WHERE `id_user` = '$user[id]'") == 0)
	DB::$pdo->query("INSERT INTO `privatMail` (`id_user`) VALUES ('$user[id]')");