Файл: system/class/func.php
Строк: 350
<?
////////////////////////////////////////////////////////////////
////////////////Файл,отвечающий за функции и операции///////////
////////////////////////////////////////////////////////////////
//////////////////инклуды функций///////////////////////////////
//Кодировщик (+работа с переменными)
include ROOT.'system/class/shit.php';
////////////////////////////////////////////////////////////////
/////////////////вспомогательные функциии///////////////////////
////////////////////////////////////////////////////////////////
///Время в зависимости от GMT,установленного пользователем(если это позволил администратор)
function ustime($user_gmt=null,$time=null)
{
global $db;
if($user_gmt==null)$user_gmt=$db->settings('gmt'); else $user_gmt=$user_gmt;
if($time==null)$time_view=time()+$user_gmt; else $time_view=$time+$user_gmt;
//проверяем,может ли пользователь устанавливать свой gmt и задана ли зона gmt
if($db->settings('gmt_user')=='yes' and $user_gmt!=null){
//проверяем равны ли зоны gmt системы и указанной(если равны,то не выполняем действия)
if($db->settings('gmt')!=$user_gmt){
$time_view=$time_view+$user_gmt;
}
}
return $time_view;
}
//вывод GMT в формате GMT+##
function gmt($array,$gmt=null){
global $db;
if($gmt==null)$gmt=$db->settings('gmt'); else $gmt=$gmt;
foreach ($array as $key => $value) {
if ($$gmt == $key) $gmt_text = $value;
}
return $gmt_text;
}
///обработка бб-кода изображений
function img($img){
$file = shit('http://'.$img[1]);
ini_set('display_errors','Off');
error_reporting('E_ALL');
if(preg_match("#http://(.*)(/)([a-zA-Z_0-9.])+(gif|png|jpg|jpeg)#ui",$file)){
$ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
if($ext == 'gif' or $ext == 'jpeg' or $ext == 'jpg' or $ext == 'png'){
$img=' <a href="'.$file.'"/><img src="'.$file.'" alt="'.language('Изображение').'" width="65" height="45" style="padding:5px;"/></a> ';
}else $img='['.language('Изображение не найдено').']';
}else $img='['.language('Изображение не найдено').']';
ini_set('display_errors','On');
return $img;
}
///обработка файла
function file_download($file){
global $db;
$array = $db -> query("SELECT `name` FROM `files` WHERE `id` = '".abs(intval($file[1]))."'");
if($array->num_rows>0){
$file_sql=$array->fetch_assoc();
if($file[2]==null)$file_name=$file_sql['name']; else $file_name=$file[2];
$download='<a href="'.ROOT.'download'.$file[1].'">'.$file_name.'</a>';
return $download;
}else return false;
}
//Функция вывода Имя Фамилия или если не указаны-просто ник
function user_id($id) {
global $db;
$id=abs(intval($id[1]));
$arr = $db -> query("SELECT `login`,`name`,`fami` FROM `users` WHERE `id` = '".$id."'")->fetch_array();
if ($arr> 0){
if(mb_strlen($arr['name'])>0 or mb_strlen($arr['fami'])>0)
{
$log='<a href="'.ROOT.'id'.$id.'"/>'.$arr['name'].' '.$arr['fami'].'</a>';
}else{
$log='<a href="'.ROOT.'id'.$id.'"/>'.$arr['login'].'</a>';
}
}else $log=null;
return $log;
}
///YouTube видео
function youtube($url){
///**преобразуем
$url[1] = preg_replace('#(.*)/#si', '', $url[1]);
$url[1] = preg_replace('#(.*)v=#si', '', $url[1]);
//Видео с YouTube
return '<video width="640" height="360" preload="none" controls playsinline webkit-playsinline>
<source type="video/youtube" src="http://www.youtube.com/watch?v='.$url[1].'" />
</video>';
}
/////////////////////////////////////////////////////////
//////////////Класс//////////////////////////////////////
///////////////////работы////////////////////////////////
///////////////////////с/////////////////////////////////
/////////////////////основными///////////////////////////
/////////////////////////функциями///////////////////////
/////////////////////////////////////////////////////////
final class func {
///Создание капчи
function capcha($activate=false,$num=4){
global $db;
$nas = $db -> query("SELECT `name`,`parametr` FROM `settings` where `name`='capcha' or `name`='captcha_eazy'");
while ($assoc = $nas -> fetch_assoc()) {
$nastr[$assoc['name']]=$assoc['parametr'];
}
if($nastr['capcha']==0 or $activate==true){
if($nastr['captcha_eazy']==1)$array = array('1','2','3','4','5','6','7','8','9');
if($nastr['captcha_eazy']==2)$array = array('w','e','r','t','y','u','p','a','s','d','f','h','j','k','z','x','c','v','b','n','m');
if($nastr['captcha_eazy']==3)$array = array('1','2','3','4','5','6','7','8','9','w','e','r','t','y','u','p','a','s','d','f','h','j','k','z','x','c','v','b','n','m');
$i = $cod = null;
while ($i < $num) {
$cod .= $array[array_rand($array)];
++$i;
}
$capcha = $cod;
}else $capcha=null;
return $capcha;
}
///функция для вывода формы мультизагрузки файлов
public function upload($type='other'){
$array=array('photo','other');
if(in_array($type,$array)==false)$type='other';
echo '<div class="fon">
<div id="upload" class="upload">'.language('Выберите файл').'</div>
<div id="type_upload" style="display:none;">'.$type.'</div>
<span id="status" class="upload_errore"></span>
</div>';
}
//функция со склонением в зависимости от числа
public function GetName ($col,$name_one,$name_two,$name_three) {
$col = abs($col) % 100;
$intval = $col % 10;
if ($col > 10 && $col < 20) {
return $col.' '.language($name_three); exit;
}
else if ($intval > 1 && $intval < 5) {
return $col.' '.language($name_two); exit;
}
else if ($intval == 1) {
return $col.' '.language($name_one); exit;
}
return $col.' '.language($name_three);
}
////функции транслита
function translate ($text,$type=0){
//убираем лишнее
$text = strtr($text,array('ь' => '','ъ' => '','_' => ' '));
$alfavit = array(
'а' => 'a', 'б' => 'b', 'в' => 'v',
'г' => 'g', 'д' => 'd', 'е' => 'e',
'ё' => 'yo', 'ж' => 'zh', 'з' => 'z',
'и' => 'i', 'й' => 'j', 'к' => 'k',
'л' => 'l', 'м' => 'm', 'н' => 'n',
'о' => 'o', 'п' => 'p', 'р' => 'r',
'с' => 's', 'т' => 't', 'у' => 'u',
'ф' => 'f', 'х' => 'kh', 'ц' => 'c',
'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch',
'ы' => 'y',
'э' => 'eh', 'ю' => 'yu', 'я' => 'ya',
'А' => 'A', 'Б' => 'B', 'В' => 'V',
'Г' => 'G', 'Д' => 'D', 'Е' => 'E',
'Ё' => 'YO', 'Ж' => 'Zh', 'З' => 'Z',
'И' => 'I', 'Й' => 'J', 'К' => 'K',
'Л' => 'L', 'М' => 'M', 'Н' => 'N',
'О' => 'O', 'П' => 'P', 'Р' => 'R',
'С' => 'S', 'Т' => 'T', 'У' => 'U',
'Ф' => 'F', 'Х' => 'KH', 'Ц' => 'C',
'Ч' => 'CH', 'Ш' => 'SH', 'Щ' => 'SCH',
'Ы' => 'Y',
'Э' => 'EH', 'Ю' => 'YU', 'Я' => 'YA');
///перевод c кирилицы на латиницу
if($type==1){
$text = strtr($text,$alfavit);
///перевод c латиницы на кирилицу
}else{
$text = strtr($text,array_flip($alfavit));
}
return $text;
}
//Размер файла
public function size($file) {
if ($file >= 1048576000) {
$file = round(($file / 1073741824), 2)." Gb";
} elseif ($file >= 1024000) {
$file = round(($file / 1048576), 2)." Mb";
} elseif ($file >= 1000) {
$file = round(($file / 1024), 2)." Kb";
} else {
$file = round($file)." byte";
}
return $file;
}
//получаем адрес файла по id
public function file_url($id){
global $db;
$sql = $db -> query("SELECT `what`,`url` FROM `files` WHERE `id` = '".$id."' LIMIT 1");
if ($sql -> num_rows > 0) {
$file=$sql->fetch_assoc();
$file_url=ROOT.'downloads/'.$file['what'].'/'.$file['url'];
if (file_exists($file_url)) {
return $file_url;
}
}
return false;
}
///округлениче значения
public function kol($kol){
if(round($kol/1000)>0)$kol=round($kol/1000).'k+'; ///если больше 1 000,то выводим количество тысяч+
return $kol;
}
//Месяца
public function mes($mon,$type=1) {
if($type==1){
$mon = strtr($mon,array('1' => 'Января', '2' => 'Февраля', '3' => 'Марта', '4' => 'Апреля',
'5' => 'Мая', '6' => 'Июня', '7' => 'Июля', '8' => 'Августа', '9' => 'Сентября','10' => 'Октября',
'11' => 'Ноября', '12' => 'Декабря'));
}else{
$mon = strtr($mon,array('1' => 'Январь', '2' => 'Февраль', '3' => 'Март', '4' => 'Апрель',
'5' => 'Май', '6' => 'Июнь', '7' => 'Июль', '8' => 'Август', '9' => 'Сентябрь','10' => 'Октябрь',
'11' => 'Ноябрь', '12' => 'Декабрь'));
}
return language($mon);
}
//Определение дня недели
public function date_day($date) {
$date=strftime("%w", strtotime(date('Y-m-d',$date)));
$date = strtr($date,array('1' => 'Понедельник', '2' => 'Вторник', '3' => 'Среда', '4' => 'Четверг',
'5' => 'Пятница', '6' => 'Суббота', '0' => 'Воскресение'));
return language($date);
}
//Перевод времени
public function times($time) {
$dat = explode(' ',$time);
if ($dat[0]{0} == '0') $dat[0] = substr($dat[0],1);
$dat[1] = strtr($dat[1],array('01' => language('Января'), '02' => language('Февраля'), '03' => language('Марта'), '04' => language('Апреля'),
'05' => language('Мая'), '06' => language('Июня'), '07' => language('Июля'), '08' => language('Августа'), '09' => language('Сентября'),'10' => language('Октября'),
'11' => language('Ноября'), '12' => language('Декабря')));
$time = implode(' ',$dat);
return $time;
}
///плеер
public function player($url,$type,$width=320,$height=240,$preload="none",$loop="") {
if($type!=1)$ext = strtolower(pathinfo('/'.$url, PATHINFO_EXTENSION));
//Видео с YouTube
if($type==1){
///**преобразуем
$url = preg_replace('#(.*)/#si', '', $url);
$url = preg_replace('#(.*)v=#si', '', $url);
return '<video class="player" width="'.$width.'" height="'.$height.'" controls="controls" preload="'.$preload.'" '.$loop.'/>
<source type="video/youtube" src="http://www.youtube.com/watch?v='.$url.'" />
</video>';
}
//обычное видео формата mp4
if($type==2 and $ext=='mp4'){
return '<video class="player" width="'.$width.'" height="'.$height.'" controls="controls" preload="'.$preload.'" '.$loop.'/>
<source src="'.$url.'" type="video/mp4" codecs="avc1.42E01E, mp4a.40.2"/>
</video>';
}
///аудиофайл формата mp3
if($type==3 and $ext=='mp3'){
return '<audio class="player" controls="control" preload="'.$preload.'" '.$loop.'/>
<source src="'.$url.'" type="audio/mp3"/>
</audio>';
}
}
//Функция со временем
public function vremja($time,$user_gmt=null) {
global $db;
if($user_gmt==null or $db->settings('gmt_user')!='yes' or $db->settings('gmt')==$user_gmt){
$time=$time+$db->settings('gmt');
$world_time=ustime($user_gmt);
}else{
$time=$time+$user_gmt;
$world_time=ustime($user_gmt);
}
$timep = gmdate('d M Y H:i', $time);
$time_p[0] = gmdate('d M Y', $time);
$time_p[1] = gmdate('H:i', $time);
$time_p[2] = gmdate('H:i:s', $time);
if ($time_p[0] == gmdate('d M Y',$world_time)) $timep = language('Сегодня в').' '.$time_p[1];
if ($time_p[0] == gmdate('d M Y',$world_time-86400)) $timep = language('Вчера в').' '.$time_p[1];
if ($time_p[0] == gmdate('d M Y',$world_time-172800)) $timep = language('Позавчера в').' '.$time_p[1];
$timep = str_replace(array('Jan','Feb','Mar','May','Apr','Jun','Jul','Aug','Sep','Oct','Nov','Dec'),
array(language('Января'),language('Февраля'),language('Марта'),language('Мая'),language('Апреля'),language('Июня'),language('Июля'),language('Августа'),language('Сентября'),language('Октября'),language('Ноября'),language('Декабря')),$timep);
return $timep;
}
///Перевод секунд в нужный формат
public function ontime($string) {
if(floor($string/86400)>0){$day=floor($string/86400).'д. ';}else{$day=null;}
$hours=floor(($string/3600)-$day*24);
$min=floor(($string-$hours*3600-$day*86400)/60);
$sec=$string-($min*60+$hours*3600+$day*86400);
if($hours>0)$hours=$hours.'ч.';else $hours=null;
if($min>0)$min=$min.'м.';else $min=null;
if($sec>0)$sec=$sec.'сек.';else $sec=null;
return $day.''.$hours.' '.$min.' '.$sec.'';
}
// Вырезание bb-кодов из цитаты
public function nobb($text = '') {
$text = strtr($text, array('[c]' => '', '[/c]' => '','[blue]' => '', '[/blue]' => ''));
return $text;
}
// Вырезание пробелов
public function delprobel($text = '') {
$text = trim($text);
$text = strtr($text, array(' ' => ''));
return $text;
}
// Вырезание ненужных символов
public function delsim($text = '') {
$text = strtr($text, array('%' => '','_' => ''));
return $text;
}
// Замена точек на _
public function perf($text) {
$text = strtr($text, array('.' => '_'));
return $text;
}
////Корректировка html переносов
function br($msg,$decoding=false)
{
if($decoding==false){
$search = array("<br />");
$replace = array('');
}else{
$search = array("<br/>");
$replace = array('<br/>');
}
$msg = str_replace($search, $replace, $msg);
return $msg;
}
///определение максимальновозможного импорта
public function max_import($max){
$max=$max*1024*1024;
return $max;
}
///обработка checkbox
public function checkbox_read($value,$true,$false){
if(isset($value) and $value!=null)return $true; else return $false;
}
///bb-коды
public function tags($var)
{
global $db;
if($db->settings('bbcodes')=='on'){
$var = preg_replace('#[b](.*?)[/b]#si', '<b/>1</b>', $var);
$var = preg_replace('#[i](.*?)[/i]#si', '<em>1</em>', $var);
$var = preg_replace('#[u](.*?)[/u]#si', '<u/>1</u>', $var);
$var = preg_replace('#[s](.*?)[/s]#si', '<s/>1</s>', $var);
$var = preg_replace('#[ind](.*?)[/ind]#si', '<span style="margin-left: 20px"/>1</span>', $var);
$var = preg_replace('|[color=([A-z0-9-#]+)](.*?)[/color]|','<span style="color:$1;">$2</span>', $var);
$var = preg_replace('#[c](.*?)[/c]#si', '<div class="cit"/>1 </div>', $var);
$var = preg_replace('/[url](?:http://)?(.*?)[/url]/', ' <a href="'.ROOT.'exit.php?mode=1&do=1&act='.shit($_SERVER['REQUEST_URI']).'"/> 1 </a> ', $var);
$var = preg_replace('/[urls?=s?(['"]?)(?:http://)?(.*?)1](.*?)[/url]/', ' <a href="http://$2"/> $3 </a> ', $var);
$var = preg_replace_callback("|[img=(?:http://)?(.*?)]|",'img', $var);
$var = preg_replace_callback("/[file=([0-9]+)](.*?)[/file]/",'file_download', $var);
$var = preg_replace_callback("/[file]([0-9]+)[/file]/",'file_download', $var);
$var = preg_replace_callback("|[user:(.+)]|",'user_id', $var);
$var = preg_replace_callback("/[youtube](?:http://)?(.*?)[/youtube]/",'youtube', $var);
$var = preg_replace("#[size=([0-9])](.+)[/size]#",'<font size="1"/>2</font>', $var);
$var = preg_replace("#[left](.+)[/left]#",'<p style="text-align:left"/>1</p>', $var);
$var = preg_replace("#[center](.+)[/center]#",'<p style="text-align:center"/>1</p>', $var);
$var = preg_replace("#[right](.+)[/right]#",'<p style="text-align:right"/>1</p>', $var);
return $var;
}else return $var;
}
////Копирайт на фотографии
public function copy($file,$papka,$text)
{
global $db;
if($db->settings('copyright')=='yes'){
$path = pathinfo($papka.$file);
if ($path['extension'] == 'gif') {
$create = ImageCreateFromGif($papka.$file);
$type = 'ImageGif';}
else if ($path['extension'] == 'jpg' || $path['extension'] == 'jpeg') {
$create = ImageCreateFromJpeg($papka.$file);
$type = 'ImageJpeg';}
if ($create) {
$color = ImageColorALLocate($create,255,255,255);
$padding = imageSY($create) - (2 * 8);
ImageString($create, intval(2), ImageSX($create) -(iconv_strlen($text) * 8), $padding, htmlspecialchars($text), $color);
$type($create, $papka.$file, 100);
}
}
}
////Функция АнтиПост
public function antipost($text){
global $db;
$s = $db -> query("SELECT `mess`,`messoff` FROM `antimessage`");
while ($anti = $s -> fetch_assoc()) {
$text = preg_replace('/('.$anti['mess'].')/iu',$anti['messoff'],$text);
}
return $text;
}
//Навигация
public function pagenav($act,$page,$total) {
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = ' <a class="page_nave" href="'.$act.'&page=1"><<</a>
<a class="page_nave" href="'.$act.'&page='. ($page - 1) .'"><</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' <a class="page_nave" href="'.$act.'&page='. ($page + 1) .'">></a> <a class="page_nave" href="'.$act.'&page=' .$total. '">>></a>';
// Находим три ближайшие станицы с обоих краев, если они есть
if($page - 3 > 0) $page3left = ' <a class="page_nave" href="'.$act.'&page='. ($page - 3) .'">'. ($page - 3) .'</a> ';
if($page - 2 > 0) $page2left = ' <a class="page_nave" href="'.$act.'&page='. ($page - 2) .'">'. ($page - 2) .'</a> ';
if($page - 1 > 0) $page1left = ' <a class="page_nave" href="'.$act.'&page='. ($page - 1) .'">'. ($page - 1) .'</a> ';
if($page + 3 <= $total) $page3right = ' <a class="page_nave" href="'.$act.'&page='. ($page + 3) .'">'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = ' <a class="page_nave" href="'.$act.'&page='. ($page + 2) .'">'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' <a class="page_nave" href="'.$act.'&page='. ($page + 1) .'">'. ($page + 1) .'</a>';
// Вывод страниц
$nav = $pervpage.$page3left.$page2left.$page1left.' <span class="page_now"><b>'.$page.'</b></span> '.$page1right.$page2right.$page3right.$nextpage;
$class= '<div class="page">'.$nav.'</div>';
if($page != $total or $page != 1){
return $class;
}
}
//Навигация тип 2
public function next_prev($act,$page,$total) {
if($page - 1 > 0) $back = ' <a class="button_menu" href="'.$act.'&page='. ($page - 1) .'">'.language('Показать предыдущее').'</a> ';
if($page + 1 <= $total) $next = ' <a class="button_menu" href="'.$act.'&page='. ($page + 1) .'">'.language('Показать следующее').'</a>';
if($page != $total or $page != 1){
return '<div class="but_menu">'.$back.''.$next.'</div>';
}
}
}
?>