<?
/**
* Импорт файла
* @param string $path
*/
function f_import($path, $path_root = 0) {
if (strpos($path, '.php') === false)
$path .= '.php';
if ($path_root){
if (file_exists($path)) {
include_once ($path);
} else {
die('Файл ' . $path . ' не найден, ');
}
} else {
if (file_exists(ROOT . $path)) {
include_once (ROOT . $path);
} else {
die('Файл ' . $path . ' не найден, ');
}
}
}
/**
* Форматирование url
* @param <type> $path
* @param <type> $params
* @return <type> string
*/
function p_url($path, $params = false) {
$params = $params ? '?' . $params : '';
return URL . $path . FILE_EX . $params;
}
/**
* img_display
* Вывод картинок
*/
function img_d($img) {
if ($img) {
if (file_exists(ROOT . 'themes/' . CURRENT_THEM . '/images/' . $img)) {
$imgp = URL . 'themes/' . CURRENT_THEM . '/images/' . $img;
} else {
$imgp = URL . 'files/images/' . $img;
}
}
return $imgp;
}
/**
* Редирект
* @param <type> $url
*/
function redirect($url, $time = 0) {
if ($time) {
header("Refresh: $time; url=$url");
exit;
} else {
header('Location: ' . $url);
exit;
}
}
/**
* Функция вызова класса
* return $method
*/
function LoadClass($nameclass) {
if (class_exists($nameclass)) {
return New $nameclass();
} else {
die('Подключаеммы класс ' . $nameclass . ' не найден');
}
}
/**
* Вывод ошибочной страницы
* @param <type> $error
*/
function display_error($error = 'Произошла неизвестная ошибка') {
global $tpl;
if (!$tpl) {
$tpl = Registry :: get('tpl');
}
$tpl->assign(array('error' => $error));
$tpl->display('display_error');
exit;
}
/**
* Вывод списка ошибок
* @global <type> $tpl
* @param <type> $errors
*/
function errors($errors) {
global $tpl;
if (!$tpl) {
$tpl = Registry :: get('tpl');
}
$tpl->assign(array('errors' => $errors));
$tpl->display('errors');
}
/**
* Оповещение
* @global <type> $tpl
* @param <type> $message
* @param <type> $link
* @param <type> $timeout
*/
function notice($message, $link = '', $timeout = 0) {
global $tpl;
if (!$tpl) {
$tpl = Registry :: get('tpl');
}
$tpl->assign(array('message' => $message, 'link' => $link, 'timeout' => $timeout));
$tpl->display('notice');
exit;
}
/**
* Подтверждение действий
* @global <type> $tpl
* @param <type> $message
* @param <type> $link1
* @param <type> $link2
*/
function confirm($message, $link1, $link2){
global $tpl;
if (!$tpl) {
$tpl = Registry :: get('tpl');
}
$tpl->assign(array('message' => $message, 'link1' => $link1, 'link2'=>$link2));
$tpl->display('confirm');
exit;
}
/**
* Функция чтения массива
* @param <type> $data
*/
function print_array($data) {
echo '<pre>';
print_r($data);
echo '</pre>';
}
/**
* Ресайз изображений
* @param <type> $img
* @param <type> $PathToSave
* @param <type> $width
* @param <type> $height
* @param <type> $sourcename
* @return <type>
*/
function SetImgSize($img, $PathToSave, $width, $height) {
preg_match('#\.(jpg|jpeg|png|gif)$#i', $img, $out);
$typeimage = $out[1];
switch ($typeimage) {
case "jpeg":
$srcImage = @ImageCreateFromJPEG($img);
break;
case "jpg":
$srcImage = @ImageCreateFromJPEG($img);
break;
case "gif":
$srcImage = ImageCreateFromGIF($img);
break;
case "png":
$srcImage = ImageCreateFromPNG($img);
break;
default:
return 0;
break;
}
$srcWidth = ImageSX($srcImage);
$srcHeight = ImageSY($srcImage);
if (($width < $srcWidth) || ($height < $srcHeight)) {
$ratioWidth = $srcWidth / $width;
$ratioHeight = $srcHeight / $height;
if ($ratioWidth < $ratioHeight) {
$destWidth = $srcWidth / $ratioHeight;
$destHeight = $height;
} else {
$destWidth = $width;
$destHeight = $srcHeight / $ratioWidth;
}
$resImage = ImageCreateTrueColor($destWidth, $destHeight);
ImageCopyResampled($resImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);
ImageJPEG($resImage, $PathToSave . '/' . strtok(basename($img), '.') . '.JPG', 100);
ImageDestroy($srcImage);
ImageDestroy($resImage);
}
}
/**
* Загрузка конфига, модуля
* @param <type> $type_result
* @return <type>
*/
function LoadConfigModule($module, $type_result = 'ini') {
if ($module) {
$file_config = ROOT . 'modules/' . $module . '/ini/config.ini';
if (file_exists($file_config)) {
switch ($type_result) {
case 'ini':
return parse_ini_file($file_config);
break;
default:
return parse_ini_file($file_config);
}
}
}
}
/**
* Определение браузера
* @return <type>
*/
function subtok($string, $chr, $pos, $len = null) {
return implode($chr, array_slice(explode($chr, $string), $pos, $len));
}
function GetUserAgent() {
if (isset($_SERVER['HTTP_USER_AGENT'])) {
if (isset($_SESSION['user_browser'])) {
return $_SESSION['user_browser'];
} else {
$agent = $_SERVER['HTTP_USER_AGENT'];
if (stripos($agent, 'Avant Browser') !== false) {
return 'Avant Browser';
} elseif (stripos($agent, 'Acoo Browser') !== false) {
return 'Acoo Browser';
} elseif (stripos($agent, 'MyIE2') !== false) {
return 'MyIE2';
} elseif (preg_match('|Iron/([0-9a-z\.]*)|i', $agent, $pocket)) {
return 'SRWare Iron ' . subtok($pocket[1], '.', 0, 2);
} elseif (preg_match('|Chrome/([0-9a-z\.]*)|i', $agent, $pocket)) {
return 'Chrome ' . subtok($pocket[1], '.', 0, 3);
} elseif (preg_match('#(Maxthon|NetCaptor)( [0-9a-z\.]*)?#i', $agent, $pocket)) {
return $pocket[1] . $pocket[2];
} elseif (stripos($agent, 'Safari') !== false && preg_match('|Version/([0-9]{1,2}.[0-9]{1,2})|i', $agent, $pocket)) {
return 'Safari ' . subtok($pocket[1], '.', 0, 3);
} elseif (preg_match('#(NetFront|K-Meleon|Netscape|Galeon|Epiphany|Konqueror|Safari|Opera Mini|Opera Mobile)/([0-9a-z\.]*)#i', $agent, $pocket)) {
return $pocket[1] . ' ' . subtok($pocket[2], '.', 0, 2);
} elseif (stripos($agent, 'Opera') !== false && preg_match('|Version/([0-9]{1,2}.[0-9]{1,2})|i', $agent, $pocket)) {
return 'Opera ' . $pocket[1];
} elseif (preg_match('|Opera[/ ]([0-9a-z\.]*)|i', $agent, $pocket)) {
return 'Opera ' . subtok($pocket[1], '.', 0, 2);
} elseif (preg_match('|Orca/([ 0-9a-z\.]*)|i', $agent, $pocket)) {
return 'Orca ' . subtok($pocket[1], '.', 0, 2);
} elseif (preg_match('#(SeaMonkey|Firefox|GranParadiso|Minefield|Shiretoko)/([0-9a-z\.]*)#i', $agent, $pocket)) {
return $pocket[1] . ' ' . subtok($pocket[2], '.', 0, 3);
} elseif (preg_match('|rv:([0-9a-z\.]*)|i', $agent, $pocket) && strpos($agent, 'Mozilla/') !== false) {
return 'Mozilla ' . subtok($pocket[1], '.', 0, 2);
} elseif (preg_match('|Lynx/([0-9a-z\.]*)|i', $agent, $pocket)) {
return 'Lynx ' . subtok($pocket[1], '.', 0, 2);
} elseif (preg_match('|MSIE ([0-9a-z\.]*)|i', $agent, $pocket)) {
return 'IE ' . subtok($pocket[1], '.', 0, 2);
} else {
$agent = preg_replace('|http://|i', '', $agent);
$agent = strtok($agent, '( ');
$agent = substr($agent, 0, 22);
$agent = subtok($agent, '.', 0, 2);
if (!empty($agent)) {
$_SESSION['user_browser'] = $agent;
return $agent;
} else {
return null;
}
}
}
}
}
/**
* Определение версии сайта
* @param <type> $key
* @return <type>
*/
function VersionSite($key = 0) {
if (file_exists(ROOT . 'local/version.dat')) {
$version = file_get_contents(ROOT . 'local/version.dat');
if ($key) {
preg_match('|v([0-9\.]*)|', $version, $ver);
return $ver[1];
} else {
return $version;
}
} else {
die('Файл version.dat не найден');
}
}
/**
* Форматирование даты и времени из unix
* с дополнительными опциями
* @param <type> $time
* @param <type> $option
* @return <type>
*/
function ViewTime($time, $option = 0) {
$date = date("d M y / H:i:s", $time);
if ($option) {
# Сегодня
if (date("d", $time) == date("d", SITETIME)) {
$date = '<b>Сегодня</b> / ' . date("H:i:s", $time);
}
# Вчера
if (date("d", $time) == date("d", SITETIME) - 1) {
$date = '<b>Вчера</b> / ' . date("H:i:s", $time);
}
}
# Замена англиских имён на русские
$date = str_replace("Jan", "Янв", $date);
$date = str_replace("Feb", "Фев", $date);
$date = str_replace("Mar", "Марта", $date);
$date = str_replace("May", "Мая", $date);
$date = str_replace("Apr", "Апр", $date);
$date = str_replace("Jun", "Июня", $date);
$date = str_replace("Jul", "Июля", $date);
$date = str_replace("Aug", "Авг", $date);
$date = str_replace("Sep", "Сент", $date);
$date = str_replace("Oct", "Окт", $date);
$date = str_replace("Nov", "Ноября", $date);
$date = str_replace("Dec", "Дек", $date);
return $date;
}
/**
* Функции для перевода ip адресов в числа и обратно
*/
function ip2int($ip) {
$a = explode(".", $ip);
return $a[0] * 256 * 256 * 256 + $a[1] * 256 * 256 + $a[2] * 256 + $a[3];
}
function int2ip($ip) {
$a = explode('.', $ip);
return $a[0] / 256 / 256 / 256 + $a[1] / 256 / 256 + $a[2] / 256 + $a[3];
}
/**
* Подключение и инициализация класса
*
* @param <type> $path_to_class
* @param <type> $type
* @return class_name
*/
function a_load_class($path_to_class, $type = '') {
# Подключем файл класса
f_import($path_to_class, true);
# Определяем имя класса
$file_name = str_replace('.php', '', basename($path_to_class));
$ex = explode('_', $file_name);
foreach($ex as $value) $array[] = ucfirst($value);
$class_name = implode('_', $array);
switch($type) {
case 'controller':
$class_name = $class_name . '_Controller';
break;
case 'ci':
$class_name = 'CI_'. $class_name;
break;
}
# Инициализируем класс
return new $class_name();
}
?>