View file modules/main/helpers/main_helper.php

File size: 5.89Kb
<?
/**
 * Автор скрипта Орёл
 * Распространение бесплатно
 * icq: 952042
 * E-mail [email protected]
 */
defined('IN_ACCESS') or die('<b>Access error</b>');

class Main {

        /**
         * Функция определения софта пользователя
         * Если пользователь с ПК, возвращает true
         * @return <type>
         */
        static public function UserSoft() {
                if (!empty($_SERVER['HTTP_USER_AGENT'])) {
                        if (stristr($_SERVER['HTTP_USER_AGENT'], 'windows') || stristr($_SERVER['HTTP_USER_AGENT'], 'linux') ||
                                stristr($_SERVER['HTTP_USER_AGENT'], 'macintosh') || stristr($_SERVER['HTTP_USER_AGENT'], 'unix') ||
                                stristr($_SERVER['HTTP_USER_AGENT'], 'macos') || stristr($_SERVER['HTTP_USER_AGENT'], 'bsd')) {
                                return true;
                        } else {
                                return false;
                        }
                } else {
                        return false;
                }
        }

        /**
         * Получения ссылок на скачивание файла
         * @param <type> $content_type
         * @param <type> $filename
         * @return <type>
         */
        static function FileLinks($content_type, $filename) {
                $file_module_links = ROOT . 'modules/' . ROUTE_MODULE_NAME . '/ini/' . $content_type . '.dat';
                if (file_exists($file_module_links)) {
                        $ini_links = unserialize(file_get_contents($file_module_links));

                        if (count($ini_links['links']) > 1) {
                                $rand_keys = array_rand($ini_links['links'], 1);
                                $link = $ini_links['links'][$rand_keys];
                        } else {
                                $link = $ini_links['links'][0];
                        }
                        return str_replace('%name%', trim($filename), $link);
                }
        }

        /**
         * Ресайз картинок с кэшированием
         * @param <type> $img
         * @param <type> $x
         * @param <type> $y
         * @return <type>
         */
        static function img_resize($img, $x = 0, $y = 0) {
                if (file_exists($img)) {
                        if (file_exists(ROOT . 'files/images_cache/' . basename($img))) {
                                return URL . 'files/images_cache/' . basename($img);
                        } else {
                                $config = LoadConfigModule();
                                SetImgSize($img, ROOT . 'files/images_cache', $config['pictures_prev_x'], $config['pictures_prev_y']);
                                return URL . 'files/images_cache/' . basename($img);
                        }
                }
        }

        /**
         * Счётчик подсчёта онлайн пользователей
         * @return <type>
         */
        static function counter_online() {
                $cacher = Registry :: get('cache');
                $cache = $cacher->get('counter_online', 30);
                if ($cache['counter_online']) {
                        return $cache['counter_online'];
                } else {
                        $online = DB :: $dbh->querySingle('SELECT COUNT(*) FROM `counter_online` WHERE `counter_nowtime`>=?', array(SITETIME - 30));
                        $cacher->set('counter_online', array('counter_online' => $online));
                        return $online;
                }
        }
        /**
         * Изменения ini файлов
         * @param <type> $inifile
         * @param <type> $update_array
         * @return <type>
         */
        static function update_inifile($inifile, $update_array){
                if (file_exists($inifile)){
                        $data_ini = parse_ini_file($inifile);
                        foreach ($update_array as $key => $value) {
                                $data_ini[$key] = $value;
                        }
                        $ini_list = '';
                        foreach ($data_ini as $key => $value){
                                $ini_list .= sprintf('%s="%s"', $key, $value) . N;
                        }
                        if (file_put_contents($inifile, $ini_list)){
                                return true;
                        } else {
                                return false;
                        }
                } else {
                        die('Файл '. $inifile .' не найден');
                }
        }
        /**
         * Очистка temp дириктории
         */
        static function tmp_clear(){
                $files = scandir(DATADIR .'temp');
                foreach ($files as $file){
                        if ($file == '.' || $file == '..') continue;
                        if (filemtime(DATADIR .'temp/'. $file) < SITETIME - 86400){
                                unlink(DATADIR .'temp/'. $file);
                        }
                }
        }
        /**
         * Запись новых условий роутинга
         * @param <type> $module
         * @param <type> $string
         */
        static function WriteRules($module, $string){
                if (file_exists(DATADIR .'route/'. $module .'.dat')){
                        $data = file_get_contents(DATADIR .'route/'. $module .'.dat');
                }
                if (!isset($data)){
                        $data = '';
                }
                if ($data){
                        $data .=  PHP_EOL .$string;
                }
                file_put_contents(DATADIR .'route/'. $module .'.dat', $data);
        }
}
?>