Просмотр файла inc/ini.php

Размер файла: 16.25Kb
<?php


/*********************************************************************/
#---------------------------KokirCMS Соц сети-------------------------#
#---------------------Kiriyan и kokir Сайт kiriyan.org----------------#
#-------------------------------2012 г.-------------------------------#
#------------------Связь ICQ 455002004. [email protected]#
#----------------------------Пример ewwap.ru--------------------------#
/*********************************************************************/

/************************Регулярные выражения*************************/
$regulars = array(
  'text' => "/(.*)/",
  'url' => "#http://([а-яёa-z\d][а-яёa-z\d\-]*\.)+[а-яёa-z]{2,6}(/([а-яё\w\-\.]*[а-яё\w\-/]{1})*(\?(([a-z][\w\-]*)?(=(%[a-z\d]{2}|[\w\-\.\+])*)?)?(&(amp;)?(([a-z][\w\-]*)?(=(%[a-z\d]{2}|[\w\-\.\+])*)?)?)*)?)?#ui",
  'int' => "/[0-9]+/",
  'md5' => "/[0-9a-z]{32}/",
  'lattext' => "/[^а-я]+/",
  'email' => "#([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})#is"
);
/*********************************************************************/

$rights = array(
  1 => '(Mod)',
  2 => '(Adm)'
);

$rightsFull = array(
  1 => 'Модератор',
  2 => 'Администратор'
);

/*****************************Месяцы года*****************************/
$monthesOfYear = array(
  '01' => 'янв',
  '02' => 'фев',
  '03' => 'мар',
  '04' => 'апр',
  '05' => 'май',
  '06' => 'июн',
  '07' => 'июл',
  '08' => 'авг',
  '09' => 'сен',
  '10' => 'окт',
  '11' => 'ноя',
  '12' => 'дек'
);
/*********************************************************************/

/********************Разрешенные разширения файлов********************/
$possibleFileFormats = array(
  'png', 'jpg', 'jpeg', 'bmp',
  'wbmp', 'tif', 'tiff', 'gif',
  'ico', '3gp', 'mp4', 'divx',
  'dlx', 'mpeg', 'mpeg4', 'avi',
  'pdf', 'txt', 'sql', 'text',
  'doc', 'docx', 'xls', 'xlsx',
  'ppt', 'pptx', 'ppf', 'mdb',
  'accdb', 'exe', 'jar', 'jad',
  'zip', 'rar', '7z', 'tar',
  'mp3', 'wav', 'wave', 'midi',
  'mid', 'mp2', 'flac', 'djv',
  'djvu', 'iso', 'mdf', 'mds',
  'pas', 'thm', 'nth', 'sis'
);

$possibleImgFormats = array('png', 'jpg', 'jpeg', 'gif');
/*********************************************************************/

/****************************Массив ошибок****************************/
$errfile = file($home . '/errors.dat');
$errorArr = array();
$errorCount = count($errfile);
for($i = 0; $i < $errorCount; $i++)
{
  list($key, $value) = explode(':', $errfile[$i]);
  $errorArr[trim($key)] = trim($value);
}
/*********************************************************************/

/**********************Функция обработки ошибок***********************/
/*--------------------
$number -- номер ошибки
$url -- страница, на которую следует переадресовать при ошибке
--------------------*/

function error($number, $url = '')
{
  global $home, $absolutpath;
  if($url == '')
    $url = $absolutpath;
  $path = $home . $url;
  if(substr($url, 0, 1) != '/')
    $path = $url;
  $_SESSION['error'] = $number;
  header("Location: $path");
}
/*********************************************************************/

/************************Форматировка времени*************************/
/*--------------------
$t - дата в РНР-формате
--------------------*/
function fTime($t, $struct = TRUE)
{
global $time, $web, $monthesOfYear;
  if(!$t)
    return FALSE;
  if($time - $t <= 60)
    $out = 'меньше минуты назад';
  else if(($time - $t >= 60*60*24) && ($time - $t <= 60*60*24*2))
    $out = 'вчера в ' . date("H:i", $t);
  else if(($time - $t >= 60*60*24*2) && ($time - $t <= 60*60*24*3))
    $out = 'позавчера в ' . date("H:i", $t);
  else if($time - $t >= 60*60*24*3)
  {
    if($struct)
        $out = '<span><span class="date-date">' . date("d ", $t) . $monthesOfYear[date("m", $t)] . date(" Y", $t) . '</span><span class="date-time' . ($web ? ' hide' : '') . '"> ' . date("H:i", $t) . '</span></span>';
    else
        $out = '<span>' . date("d ", $t) . $monthesOfYear[date("m", $t)] . date(" Y H:i", $t) . '</span>';
  }
  else
  {
    $r = $time - $t;
    if($r < 3600)
    {
        $vars = array('минут', 'минуту', 'минуты', 'минуты', 'минуты', 'минут', 'минут', 'минут', 'минут', 'минут');
        $a = ($r / 60) % 10;
        if(($r >= 11*60) && ($r <= 20*60))
            $v = $vars['0'];
        else
            $v = $vars[$a];
        $r = floor($r / 60);
    }
    else if($r >= 60*60 && $r <= 60*60*24)
    {
        $vars = array('часов', 'час', 'часа', 'часа', 'часа', 'часов', 'часов', 'часов', 'часов', 'часов');
        $a = ($r/3600) % 10;
        if(($r >= 11*60*60) && ($r <= 20*60*60))
            $v = $vars['0'];
        else
            $v = $vars[$a];
        $r = floor($r / 3600);
    }
    $out = '<a title="' . date("d ", $t) . $monthesOfYear[date("m", $t)] . date(" Y H:i", $t) . '" class="static">' . $r . ' ' . $v . ' назад</a>';
  }
  return $out;
}
/*********************************************************************/

/*****************************Вывод аватар****************************/
function getAvatar($id, $big = FALSE)
{
  global $home, $documentRoot;
  $dir = $documentRoot . '/files/avatars/' . $id;
  $dir = scandir($dir);
  unset($dir[0], $dir[1]);
  if(!sizeof($dir))
  {
    $result = '<a href="' . $home . '/id' . $id . '"><img src="' . $home . '/theme/images/ava_m.png" alt="Avatar"/></a>';
    if($big)
        $result = '<img src="' . $home . '/theme/images/ava.png" alt="Avatar"/>';
  }
  else
  {
    sort($dir);
    reset($dir);
    $avatar = $dir[sizeof($dir) - 1];
    $aDir = scandir($documentRoot . '/files/avatars/' . $id . '/' . $avatar);
    unset($aDir[0], $aDir[1]);

    $result = '<img src="' . $home . '/files/avatars/' . $id . '/' . $avatar . '/a' . ($big ? '_b' : '') . '.' . fileFormat($documentRoot . '/files/avatars/' . $id . '/' . $avatar . end($aDir)) . '" alt="Avatar"/>';
    if($big)
        $result = '<a href="' . $home . '/files/avatars/' . $id . '/' . $avatar . '/a_o.' . fileFormat($documentRoot . '/files/avatars/' . $id . '/' . $avatar . end($aDir)) . '" target="_blanc">' . $result . '</a>';
    else
        $result = '<a href="' . $home . '/id' . $id . '">' . $result . '</a>';
  }
  return $result;
}
/*********************************************************************/

/*************************Краткое инфо юзера**************************/
function userInfo($id, $o = TRUE, $t = FALSE, $a = FALSE)
{
  global $home, $rights, $time, $user;
  $u = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `id` = $id;"));
  if(!$u)
    return '';
  $result = '<table><tr>';
  $result .= '<td>' . getAvatar($id) . '</td>';
  $result .= '<td>' . userSex($u['id']) . ' ';
  if($user)
    $result .= '<a href="' . $home . '/id' . $id . '">';
  $result .= $u['login'];
  if($user)
    $result .= '</a>';

  if($u['rights'])
    $result .= ' ' . $rights[$u['rights']];

  if($o)
  {
    if(online($id))
        $result .= ' <span class="green">[ON]</span>';
    else
        $result .= ' <span class="red">[OFF]</span>';
  }

  if($a)
    $result .= ' ' . $a;

  if($t)
    $result .= '<div>' . $t . '</div>';
  else
  {
    $years = date("Y", $time) - date("Y", $u['birth']);
    if(date("m", $time) < date("m", $u['birth']))
        --$years;
    $result .= '<div>(' . $years . ' лет)</div>';
  }
  $result .= '</td>';

  $result .= '</tr></table>';
  return $result;
}
/*********************************************************************/

/******************************Пол юзера******************************/
function userSex($id)
{
  global $home;
  $u = mysql_fetch_array(mysql_query("SELECT `sex`, `rights` FROM `users` WHERE `id` = $id;"));
  $p = 'user';
  if(!$u)
    $p .= '_xz';
  else
  {
    if($u['rights'])
        $p .= '_a';
    if($u['sex'] == 'w')
        $p .= '_w';
  }
  return '<img src="' . $home . '/images/' . $p . '.png" alt="*"/>';
}
/*********************************************************************/

/***********************Постраничная навигация************************/
function pagination($url = '?', $total = FALSE, $page_ = FALSE, $chms_ = FALSE)
{
  global $home, $pageNum, $chms, $total;
  $total = ($total ? $total : error('53', '/'));
  $page_ = ($page_ ? $page_ : $pageNum);
  $chms_ = ($chms_ ? $chms_ : $chms);
  $totalPages = ceil($total / $chms_);
  if($page_ > $totalPages)
    header("Location: {$url}page={$totalPages}");
  $lite = FALSE;
  if($totalPages <= 10)
    $lite = TRUE;
  if($lite)
  {
    $startPosition = 1;
    $finishPosition = $totalPages;
  }
  else
  {
    $startPosition = ($page_ - 5 >= 1 ? $page_ - 5 : 1);
    $finishPosition = ($page_ + 5 <= $totalPages ? $page_ + 5 : $totalPages);
  }
  $result = '';
  $result .= '<a href="' . $url . 'page=1" class="link side">&lt;&lt;</a> ';
  if(!$lite && $page_ - 6 > 1)
    $result .= '<a href="' . $url . 'page=1" class="link">1</a> ... ';
  $i = $startPosition;
  while($i <= $finishPosition)
  {
    if($i != $page_)
        $result .= '<a href="' . $url . 'page=' . $i . '" class="link">' . $i . '</a> ';
    else
        $result .= '<span class="current">' . $i . '</span> ';
    ++$i;
  }
  if(!$lite && $page_ + 6 < $totalPages)
    $result .= ' ... <a href="' . $url . 'page=' . $totalPages . '" class="link">' . $totalPages . '</a>';
  $result .= '<a href="' . $url . 'page=' . $totalPages . '" class="link side">&gt;&gt;</a>';
  return '<div class="pagination">' . $result . '</div>';
}
/*********************************************************************/

/*****Создание копии изображения с отличным от исходного размером*****/
function imageResize($outImageDir, $outImageName, $image, $newWidth, $newHeight)
{
  global $possibleImgFormats, $documentRoot;
  $format = fileFormat($image, TRUE, $possibleImgFormats);
  if($format == 'gif')
    $image = imageCreateFromGif($image);
  else if($format == 'png')
    $image = imageCreateFromPng($image);
  else
    $image = imageCreateFromJpeg($image);

  $k1 = $newWidth / imagesx($image);
  $k2 = $newHeight / imagesy($image);
  $k = $k1 > $k2 ? $k2 : $k1;

  $width = intval(imagesx($image) * $k);
  $height = intval(imagesy($image) * $k);

  $newImage = imageCreateTrueColor($width, $height);
  $newImagePath = $documentRoot . $outImageDir . '/' . $outImageName . '.' . $format;
  imagecopyresampled($newImage, $image, 0, 0, 0, 0, $width, $height, imagesx($image), imagesy($image));

  if($format == 'jpg')
    $image = imageJpeg($newImage, $newImagePath);
  else if($format == 'gif')
    $image = imageGif($newImage, $newImagePath);
  else if($format == 'png')
    $image = imagePng($newImage, $newImagePath);
  else
    return FALSE;

  imagedestroy($image);
  imagedestroy($newImage);
  return TRUE;
}
/*********************************************************************/

/***********************Обработка BBcode тегов************************/
function tags($str, $links = TRUE)
{
  global $regulars;
  $str = preg_replace('#\[b\](.*?)\[/b\]#si', '<b>\1</b>', $str);
  $str = preg_replace('#\[i\](.*?)\[/i\]#si', '<i>\1</i>', $str);
  $str = preg_replace('#\[u\](.*?)\[/u\]#si', '<span style="text-decoration:underline;">\1</span>', $str);
  $str = preg_replace('#\[cite\](.*?)\[/cite\]#si', '<cite>\1</cite>', $str);
  $str = nl2br($str);
  if($links)
    $str = preg_replace_callback($regulars['url'], 'getURL', $str);
  return $str;
}

function getURL($matches){
  if(mb_strlen($matches[0]) > 50)
    $urlName = mb_substr($matches[0], 0, 40) . '...' . mb_substr($matches[0], mb_strlen($matches[0]) - 5);
  else
    $urlName = $matches[0];

  $url = '<a href="' . $matches[0] . '">' . $urlName . '</a>';
  return $url;
}
/*********************************************************************/

/******************Перевод строк в безопасный режим*******************/
function escstr($str)
{
  $str = str_replace('`', '', $str);
  $str = stripslashes(htmlspecialchars(trim($str), ENT_QUOTES));
  return $str;
}
/*********************************************************************/

/************************Транслитерация текста************************/
function translit($str)
{
  $str = strtr($str, array (
    'a' => 'а', 'b' => 'б', 'v' => 'в', 'g' => 'г', 'd' => 'д', 'e' => 'е', 'yo' => 'ё', 'zh' => 'ж',
    'z' => 'з', 'i' => 'и', 'j' => 'й', 'k' => 'к', 'l' => 'л', 'm' => 'м', 'n' => 'н', 'o' => 'о',
    'p' => 'п', 'r' => 'р', 's' => 'с', 't' => 'т', 'u' => 'у', 'f' => 'ф', 'h' => 'х', 'c' => 'ц',
    'ch' => 'ч', 'w' => 'ш', 'sh' => 'щ', 'q' => 'ъ', 'y' => 'ы', 'x' => 'э', 'yu' => 'ю', 'ya' => 'я',
    'A' => 'А', 'B' => 'Б', 'V' => 'В', 'G' => 'Г', 'D' => 'Д', 'E' => 'Е', 'YO' => 'Ё', 'ZH' => 'Ж',
    'Z' => 'З', 'I' => 'И', 'J' => 'Й', 'K' => 'К', 'L' => 'Л', 'M' => 'М', 'N' => 'Н', 'O' => 'О',
    'P' => 'П', 'R' => 'Р', 'S' => 'С', 'T' => 'Т', 'U' => 'У', 'F' => 'Ф', 'H' => 'Х', 'C' => 'Ц',
    'CH' => 'Ч', 'W' => 'Ш', 'SH' => 'Щ', 'Q' => 'Ъ', 'Y' => 'Ы', 'X' => 'Э', 'YU' => 'Ю', 'YA' => 'Я'
  ));
  return $str;
}
/*********************************************************************/

/*******************Обратная транслитерация текста********************/
function rus2lat($str)
{
  $str = strtr($str, array (
    'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'yo', 'ж' => 'zh',
    'з' => 'z', 'и' => 'i', 'ё' => 'j', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o',
    'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c',
    'ч' => 'ch', 'ш' => 'w', 'щ' => 'sh', 'ъ' => 'q', 'ы' => 'y', 'э' => 'e', 'ю' => 'yu', 'я' => 'ya',
    'і' => 'i', 'ї' => 'i', 'ґ' => 'g', 'є' => 'e', 'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G',
    'Д' => 'D', 'Е' => 'E', 'Ё' => 'YO', 'Ж' => 'ZH', 'З' => 'Z', 'И' => 'I', 'Й' => 'J', 'К' => 'K',
    'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T',
    'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C', 'Ч' => 'CH', 'Ш' => 'W', 'Щ' => 'SH', 'Ъ' => 'Q',
    'Ы' => 'Y', 'Э' => 'E', 'Ю' => 'YU', 'Я' => 'YA', 'І' => 'I', 'Ї' => 'I', 'Ґ' => 'G', 'Є' => 'E'
  ));
  return $str;
}
/*********************************************************************/

/**************************Проверка на онлайн*************************/
function online($id)
{
  global $time;
  $user = mysql_fetch_array(mysql_query("SELECT `visit` FROM `users` WHERE `id` = $id;"));
  if($user['visit'] + 300 > $time)
    return TRUE;
  return FALSE;
}
/*********************************************************************/

/***********************Получение формата файла***********************/
/*--------------------
$fileName -- имя файла
$check -- определяет нужно ли делать проверку на правильность формата (по умолчанию проверка включена)
$formats -- определяет массив допустимых форматов (если не указывать, будет использоватся $possibleFileFormats)
--------------------*/
function fileFormat($fileName, $check = TRUE, $formats = FALSE)
{
  global $possibleFileFormats;
  if(!$formats)
    $formats = $possibleFileFormats;
  $format = strtolower(end(explode('.', $fileName)));
  if($check)
  {
    if(in_array($format, $formats))
        $out = $format;
    else
        $out = FALSE;
  }
  else
    $out = $format;
  return $out;
}
/*********************************************************************/

?>