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

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

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

    
/**
     * Запись данных в системный лог
     * @param string $text Текст сообщения
     * @param string $module Модуль, к которому относится сообщение
     * @return boolean
     */
    
static function log($text, $module = 'system')
    {
        
$time = date("H:i:s d.m.Y");
        
$file = H . '/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($num, strlen($num) - 2, 2);

        if (
$l2 >= 5 && $l2 <= 20)
            return 
$more;
        
$l = substr($num, strlen($num) - 1, 1);
        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 / 1024, 2);
            
$filesize_ed = __('Кб');
        }
        if (
$filesize >= 1024) {
            
$filesize = round($filesize / 1024, 2);
            
$filesize_ed = __('Мб');
        }
        if (
$filesize >= 1024) {
            
$filesize = round($filesize / 1024, 2);
            
$filesize_ed = __('Гб');
        }
        if (
$filesize >= 1024) {
            
$filesize = round($filesize / 1024, 2);
            
$filesize_ed = __('Тб');
        }
        if (
$filesize >= 1024) {
            
$filesize = round($filesize / 1024, 2);
            
$filesize_ed = __('Пб');
        }

        return 
$filesize . ' ' . $filesize_ed;
    }

    
/**
     * читабельное представление времени с учетом часового пояса пользователя
     * @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;
        }
    }

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