View file mail/config.php

File size: 12.09Kb
<?php defined('ACCESS') OR die('No direct script access...');
define('UPDATE', 5e3); // обновление сообщений раз в 5 секунд
/**
 * Author - koder_alex
 * ISQ - 669906617
 * VK - https://vk.com/koder_alex
 * It is forbidden to give, sell, modify.
 * Update v.5
 */
function thead($text = 'Диалоги', $isAudio = false) 
{
	global $user, $time, $db, $set, $err;
  
  	$set['title'] = $text;
  	require H.'sys/inc/thead.php';
  	title().aut().err();
  	?>
  		<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
  		<div id="resizePanel" style="display: block; padding: 0px; margin: 0px"></div>
  		<div id="isJavaScript" style="display: none" data-audio="<?= $isAudio ?>"></div>
  		<script src="/mail/resource/js/mainScript.js?v=5"></script>
  		<link rel="stylesheet" type="text/css" href="/mail/resource/css/main.css?v=5">
  		<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 = get_user($id);
	if(!$id)
	{
		$ank['date_last'] = time();
		$ank['browser'] = 'web';
	}
	if($avatar)
	{
		$avatar = mysql_fetch_array(mysql_query("SELECT id,id_gallery,ras FROM `gallery_foto` WHERE `id_user` = '".$id."' AND `avatar` = '1' LIMIT 1"));
		if (is_file(H."sys/gallery/50/".$avatar['id'].".".$avatar['ras']))
			$ank['avatar'] = '<img class="'.$img_attr.'" src="/foto/foto50/' . $avatar['id'] . '.' . $avatar['ras'] . '"/>';
		else
			$ank['avatar'] = '<img class="'.$img_attr.'" src="/style/user/avatar.gif"/>';
	}
	ob_start();
		echo group($id);
	$ank['group'] = ' ' . ob_get_clean();
	$ank['online'] = '';
	if ($ank['date_last'] > (time() - 600))
		$ank['online'] = '<b class="lvi'.($ank['browser'] == 'wap' ? ' mlvi' : '').'"></b>';
	ob_start();
		echo medal($id);
	$ank['medal'] = ' ' . ob_get_clean();
	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 str_vk($url = '?', $k_page = 1, $page = 1)
{ 
	if($k_page < 1)
		return false;
	$page   = ($page <= 0 OR $page > $k_page) ? 1 : intval($page);
	echo '<div class="pagination">';
		echo ($page > 3) ? '<a class="pg_link" href="'.$url.'page=1">«</a> ' : '';
		echo (($page - 2) > 0) ? '<a class="pg_link" href="'.$url.'page='.($page - 2).'">'.($page - 2).'</a> ' : '';
		echo (($page - 1) > 0) ? '<a class="pg_link" href="'.$url.'page='.($page - 1).'">'.($page - 1).'</a> ' : '';
		echo '<span class="pg_link pg_link_sel">'.$page.'</span> ';
		echo (($page + 1) <= $k_page) ? '<a class="pg_link" href="'.$url.'page='.($page + 1 ).'">'. ($page + 1).'</a> ' : '';
		echo (($page + 2) <= $k_page) ? '<a class="pg_link" href="'.$url.'page='.($page + 2).'">'.($page + 2).'</a> ' : '';
		echo (($page + 3) <= $k_page && $page != $k_page) ? '<a class="pg_link" href="'.$url.'page='.$k_page.'">»</a> ' : '';
	echo '</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');
}

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 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();
}

function showAttachments($id = false)
{
	if(!$id)
		return false;
	?><div class="cp_attached_wrap"><div class="pi_medias"><?
	$qF = mysql_query("SELECT id,folder, name, tmp_name, extension, type FROM mail_files_vk WHERE `action` = 'sent' AND `id_mail` = '".$id."'");
	static $i = 0;
	while ($file = mysql_fetch_assoc($qF)) 
	{
		if($file['folder'] == 'reply')
		{
			?><div class="mi_forwarded"><?
			$qR = mysql_query("SELECT id, id_user, time, msg FROM mail where id IN(".$file['name'].")");
			while($re = mysql_fetch_assoc($qR))
			{
				$rID = d_user($re['id_user']);
				?><div class="msg_item"><a class="mi_author" href="/id<?= $rID['id'] ?>"><?= $rID['group'] . $rID['nick'] . $rID['medal'] . $rID['online'] ?></a><span class="mi_date"><?= vremja($re['time']) ?></span><div class="mi_text"><?= output_text($re['msg']) ?></div><?= showAttachments($re['id']) ?></div><?
			}
			?></div><?
		}
		elseif($file['folder'] == 'image')
		{
			?>
			<a class="medias_thumb thumb_item mr_x_wrap" href="/mail/files/<?= $file['folder'] ?>/<?= $file['tmp_name'] ?>">
			<img class="ph_img" src="/mail/files/<?= $file['folder'] ?>/<?= $file['tmp_name'] ?>"></a>
			<?
		}
		elseif($file['folder'] == 'audio')
		{	
			$i++;
			?>
			<div id="audio<?= $file['id'].$i ?>" data-id="<?= $file['id'].$i ?>" class="audio_item ai_has_btn" onclick="audioplayer.playPause(event, '<?= $file['id'].$i ?>', true);" data-file="/mail/files/<?= $file['folder'] ?>/<?= $file['tmp_name'] ?>">
			<div class="ai_info">
			<div class="ai_play"><i class="i_play"></i></div>
			<div class="ai_download"><a href="/mail/file/<?= $file['folder'] ?>/<?= $file['tmp_name'] ?>"><i class="i_download"></i></a></div>
			<div class="ai_body">
			<div class="ai_dur"></div>
			<div class="ai_label">
			<span class="ai_artist"><?= $file['name'] ?></span>
			</div></div></div>
			</div>
			<?
		}
		elseif($file['folder'] == 'video')
		{
			if($file['extension'] == 'mp4')
			{
				?>
				<video name="media" controls="controls" style="width: 100%; height: 100%; margin: 0 0% 0% 0;">
				<source src="/mail/files/<?= $file['folder'] ?>/<?= $file['tmp_name'] ?>" type="<?= $file['type'] ?>">
				</video>
				<a class="medias_row mr_x_wrap" href="/mail/file/<?= $file['folder'] ?>/<?= $file['tmp_name'] ?>">
				<span class="mr_label medias_link medias_audio">
				<span class="medias_link_icon"><i class="i_icon i_doc"></i></span><span class="medias_link_label">Видео</span>
				<span class="medias_audio_title"><?= $file['name'] ?>.<?= $file['extension'] ?></span></span></a>
				<?
			}
			else
			{
				?>
				<a class="medias_row mr_x_wrap" href="/mail/file/<?= $file['folder'] ?>/<?= $file['tmp_name'] ?>"><span class="mr_label medias_link"> <span class="medias_link_icon"><i class="i_icon i_doc"></i></span><span class="medias_link_label">Файл</span><span class="medias_link_labeled medias_link_title"> <?= $file['name'] ?>.<?= $file['extension'] ?></span></span></a>
				<?
			}
		}
		else
		{
			?>
			<a class="medias_row mr_x_wrap" href="/mail/file/<?= $file['folder'] ?>/<?= $file['tmp_name'] ?>/"><span class="mr_label medias_link"> <span class="medias_link_icon"><i class="i_icon i_doc"></i></span><span class="medias_link_label">Файл</span><span class="medias_link_labeled medias_link_title"> <?= $file['name'] ?>.<?= $file['extension'] ?></span></span></a>
			<?
		}
	}
	?></div></div><?
}
/**
 * [$config массив настроек]
 * @var array
 */
$config = array(
	'max_uploads_file' => 3,  //максимальное количество загружаемых файлов
	'max_length_text' => 1024, //максимальная длина текста
	'min_length_text' => 3, //минимальная длина текста
	'url' => array( // url адреса, лучше не трогать :)
		'dialog' => 'peer',
		'chat' => 'chat'
	),
	'folder' => array( 
		'application' => 'Приложение',
		'audio' => 'Аудиозапись',
		'image' => 'Фотография',
		'text' => 'Документ',
		'video' => 'Видеозапись',
		'reply' => 'Пересланные сообщения'		
	),
	'q' => array(
		'type' => array(
			'У Вас нет друзей',
			'Ни одного диалога не найдено',
			'Ни одного друга не найдено'
			),
		'text' => (isset($_GET['q']) ? implode(' ', explode('+', text($_GET['q']))) : false)
	),
	'attachments' => false,
);

/**
 * Удаление файлов которые были загружены но не отправленные, удаление будет происходить раз в сутки. 
 */
if(!is_file(H . 'mail/files/lastCleanTime.touch'))
	touch(H . 'mail/files/lastCleanTime.touch');
if(filemtime(H . 'mail/files/lastCleanTime.touch') < (time() - 86400))
{
	$q = mysql_query("SELECT folder, tmp_name FROM mail_files_vk WHERE `action` = 'prepare' AND `id_mail` = '0' AND `time` < '".(time() - 86400)."'");
	while($unlink = mysql_fetch_assoc($q))
		unlink(H . 'mail/files/' . $unlink['folder'] . '/' . $unlink['tmp_name']);
	mysql_query("DELETE FROM `mail_files_vk` WHERE `action` = 'prepare' AND `id_mail` = '0' AND `time` < '".(time() - 86400)."'");
	unset($q, $unlink);
	touch(H . 'mail/files/lastCleanTime.touch');
}