View file includes/functions.php

File size: 13.38Kb
<?

/**
 * Импорт файла
 * @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();
}
?>