Вход Регистрация
Файл: DESURE-dcms-f12de01ac63e/sys/plugins/classes/misc.class.php
Строк: 191
<?php

/**
 * Различные полезные функции
 */
abstract class misc
{

    
/**
     * Удаление пользователя и всех связанных с ним данных
     * @param int $id Идентификатор пользователя
     */
    
static function user_delete($id)
    {
        
$id = (int)$id;
        
$tables ini::read('/sys/ini/user.tables.ini'true);
        foreach (
$tables AS $v) {
            
$res DB::me()->prepare("DELETE FROM `" $v['table'] . "` WHERE `" $v['row'] . "` = ?");
            
$res->execute(Array($id));
        }
        
$res DB::me()->prepare("DELETE FROM `users` WHERE `id` = ?");
        
$res->execute(Array($id));
    }

    
/**
     * Журнал авторизаций 2.5 от «S1S13AF7», со счетчиком и юзер-агентом
     */
    
static function logaut($id$method$status$vk_id 0) {
            global 
$dcms/* будем получать IP, ID браузера, домен, … */
        
$ua = (string) @$_SERVER['HTTP_USER_AGENT']; // (string) USER_AGENT
        
        
$q DB::me()->prepare("SELECT * FROM `log_of_user_aut` WHERE `id_user` = :id AND `user_id` = :uid AND `iplong` = :ip_long AND `browser_ua` = :ua AND `domain` = :domain AND `method` = :method AND `status` = :status ORDER BY `time` DESC LIMIT 1");
        
$q->execute(Array(':id' => $id':uid' => $vk_id':ip_long' => $dcms->ip_long':ua' => $ua':domain' => $dcms->subdomain_main':method' => $method':status' => $status));

        if(!
$row $q->fetch()) { /* якщо записи з такими параметрами відсутні, то додаємо у базу */
            
$res DB::me()->prepare("INSERT INTO `log_of_user_aut` (`id_user`,`user_id`,`method`,`iplong`, `time`, `id_browser`,`browser`,`browser_ua`,`domain`,`status`) VALUES (:id,:uid,:method,:ip_long,:time,:br_id,:br_name,:ua,:domain,:status)");
            
$res->execute(Array(':id' => $id':uid' => $vk_id':ip_long' => $dcms->ip_long':ua' => $ua':domain' => $dcms->subdomain_main':method' => $method':status' => $status':br_id' => $dcms->browser_id':br_name' => $dcms->browser_name':time' => TIME));
        } else {
            
$res DB::me()->prepare("UPDATE `log_of_user_aut` SET `time` = :time, `id_browser` = :br_id, `count` = `count` + 1 WHERE `id_user` = :id AND `user_id` = :uid AND `iplong` = :ip_long AND `browser_ua` = :ua AND `domain` = :domain AND `method` = :method AND `status` = :status LIMIT 1");
            
$res->execute(Array(':id' => $id':uid' => $vk_id':ip_long' => $dcms->ip_long':ua' => $ua':domain' => $dcms->subdomain_main':method' => $method':status' => $status':br_id' => $dcms->browser_id':time' => TIME));
        }
    }

    
/**
     * Запись данных в системный лог
     * @param string $text Текст сообщения
     * @param string $module Модуль, к которому относится сообщение
     * @return boolean
     */
    
static function log($text$module 'system')
    {
        
$time date("H:i:s d.m.Y");
        
$file '/sys/logs/' basename($module) . '.log';

        if (!
$fo = @fopen($file'a')) {
            return 
false;
        }
        
$content "rn(" $time ') ' $text;
        if (!@
fwrite($fo$content)) {
            return 
false;
        }
        
fclose($fo);
        return 
true;
    }

    
/**
     * перемещение ключа $key массива $array на $step шагов
     * @param array $array
     * @param string $key
     * @param int $step
     * @return array
     */
    
static function array_key_move(&$array$key$step 1)
    {
        return 
arraypos::move($array$key$step);
    }

    
/**
     *
     * @param int $num
     * @param string $one
     * @param string $two
     * @param string $more
     * @return string
     */
    
static function number($num$one$two$more)
    {
        
$num = (int)$num;
        
$l2 substr($numstrlen($num) - 22);

        if (
$l2 >= && $l2 <= 20)
            return 
$more;
        
$l substr($numstrlen($num) - 11);
        switch (
$l) {
            case 
1:
                return 
$one;
                break;
            case 
2:
                return 
$two;
                break;
            case 
3:
                return 
$two;
                break;
            case 
4:
                return 
$two;
                break;
            default:
                return 
$more;
                break;
        }
    }

    
/**
     * Вычисление возраста
     * @param int $g Год
     * @param int $m Месяц
     * @param int $d День
     * @param boolean $read
     * @return string
     */
    
static function get_age($g$m$d$read false)
    {
        if (
strlen($g) == 2)
            
$g += 1900;
        if (
strlen($g) == 3)
            
$g += 1000;
        
$age date('Y') - $g;
        if (
date('n') < $m)
            
$age--; // год не полный, если текущий месяц меньше
        
elseif (date('n') == $m && date('j') < $d)
            
$age--; // год не полный, если текущий месяц совпадает, но день меньше
        
if ($read)
            return 
$age ' ' self::number($age__('год'), __('года'), __('лет'));

        return 
$age;
    }

    
/**
     * Читабельное представление размера информации
     * @param int $filesize размер в байтах
     * @return string размер в (KB, MB...)
     */
    
static function getDataCapacity($filesize 0)
    {
        
$filesize_ed __('байт');
        if (
$filesize >= 1024) {
            
$filesize round($filesize 10242);
            
$filesize_ed __('Кб');
        }
        if (
$filesize >= 1024) {
            
$filesize round($filesize 10242);
            
$filesize_ed __('Мб');
        }
        if (
$filesize >= 1024) {
            
$filesize round($filesize 10242);
            
$filesize_ed __('Гб');
        }
        if (
$filesize >= 1024) {
            
$filesize round($filesize 10242);
            
$filesize_ed __('Тб');
        }
        if (
$filesize >= 1024) {
            
$filesize round($filesize 10242);
            
$filesize_ed __('Пб');
        }

        return 
$filesize ' ' $filesize_ed;
    }

    static function 
returnBytes($val)
    {
        
$val trim($val);
        
$last strtolower($val[strlen($val) - 1]);
        switch (
$last) {
            case 
'g':
                
$val *= 1073741824;
                break;
            case 
'm':
                
$val *= 1048576;
                break;
            case 
'k':
                
$val *= 1024;
                break;
        }

        return 
$val;
    }

    
/**
     * читабельное представление времени с учетом часового пояса пользователя
     * @global user $user
     * @param int $time Время в формате timestamp
     * @param boolean $adaptive Адаптивное представлени (вместо полной даты использовать "сегодня", "вчера")
     * @return string
     */
    
static function when($time null$adaptive true)
    {
        if (
$time TIME) {
            
$time -= TIME;
            
$mes 0;
            
$day 0;
            
$hour 0;
            
$min 0;
            
$sec 0;
            if (
$time) {
                
$sec $time 60;
            }
            if (
$time >= 60) {
                
$min floor($time 60 60);
            }
            if (
$time >= 3600) {
                
$hour floor($time 3600 24);
            }
            if (
$time >= 86400) {
                
$day floor($time 86400 30);
            }
            if (
$time >= 2592000) {
                
$mes floor($time 2592000 12);
            }

            if (
$mes) {
                return 
$mes ' месяц' self::number($mes'''а''ев') . ($day ? (', ' $day ' ' self::number($day'день''дня''дней') . ($hour ' и ' $hour ' час' self::number($hour'''а''ов') : '')) : '');
            }
            if (
$day) {
                return 
$day ' ' self::number($day'день''дня''дней') . ($hour ? (', ' $hour ' час' self::number($hour'''а''ов') . ($min ' и ' $min ' минут' self::number($min'а''ы''') : '')) : '');
            }
            if (
$hour) {
                return 
$hour ' час' self::number($hour'''а''ов') . ($min ? (', ' $min ' минут' self::number($min'а''ы''') . ($sec ' и ' $sec ' секунд' self::number($sec'а''ы''') : '')) : '');
            }
            if (
$min) {
                return 
$min ' минут' self::number($min'а''ы''') . ($sec ' и ' $sec ' секунд' self::number($sec'а''ы''') : '');
            }
            return 
$sec ' секунд' self::number($sec'а''ы''');
        } else {
            global 
$user;
            if (!
$time) {
                
$time TIME;
            }
            if (
$user->group) {
                
$time_shift $user->time_shift;
            } else {
                
$time_shift 0;
            }
            
$time $time $time_shift 3600;
            
$vremja date('j M Y в H:i'$time);
            
$time_p[0] = date('j n Y'$time);
            
$time_p[1] = date('H:i'$time);
            if (
$adaptive && $time_p[0] == date('j n Y'TIME $time_shift 60 60)) {
                
$vremja date('H:i:s'$time);
            }
            if (
$adaptive && $time_p[0] == date('j n Y'TIME 60 60 * (24 $time_shift))) {
                
$vremja __("Вчера в %s"$time_p[1]);
            }
            
$vremja str_replace('Jan'__('Янв'), $vremja);
            
$vremja str_replace('Feb'__('Фев'), $vremja);
            
$vremja str_replace('Mar'__('Марта'), $vremja);
            
$vremja str_replace('May'__('Мая'), $vremja);
            
$vremja str_replace('Apr'__('Апр'), $vremja);
            
$vremja str_replace('Jun'__('Июня'), $vremja);
            
$vremja str_replace('Jul'__('Июля'), $vremja);
            
$vremja str_replace('Aug'__('Авг'), $vremja);
            
$vremja str_replace('Sep'__('Сент'), $vremja);
            
$vremja str_replace('Oct'__('Окт'), $vremja);
            
$vremja str_replace('Nov'__('Ноября'), $vremja);
            
$vremja str_replace('Dec'__('Дек'), $vremja);
            return 
$vremja;
        }
    }

    
/**
     * Вывод названия месяца
     * @param int $num номер месяца (с 1)
     * @param int $v вариант написания
     * @return string
     */
    
static function getLocaleMonth($num$v 1)
    {
        switch (
$num) {
            case 
1:
                return 
__('Январ' . ($v 'я' 'ь'));
            case 
2:
                return 
__('Феврал' . ($v 'я' 'ь'));
            case 
3:
                return 
__('Март' . ($v 'а' ''));
            case 
4:
                return 
__('Апрел' . ($v 'я' 'ь'));
            case 
5:
                return 
__('Ма' . ($v 'я' 'й'));
            case 
6:
                return 
__('Июн' . ($v 'я' 'ь'));
            case 
7:
                return 
__('Июл' . ($v 'я' 'ь'));
            case 
8:
                return 
__('Август' . ($v 'а' ''));
            case 
9:
                return 
__('Сентябр' . ($v 'я' 'ь'));
            case 
10:
                return 
__('Октябр' . ($v 'я' 'ь'));
            case 
11:
                return 
__('Ноябр' . ($v 'я' 'ь'));
            case 
12:
                return 
__('Декабр' . ($v 'я' 'ь'));
            default:
                return 
false;
        }
    }

}
Онлайн: 1
Реклама