<?
class user {
/*
* Получение данных сразу нескольких пользователей и нескольних полей
@param array $id_user - Индефикатор, $data - Данные которых нужно выводить
@data = array('nick','id','email',и.т.д) Через запятую выводим поля
*/
public static function users($id_user,$data,$icon = false) {
global $db;
if($id_user == true) {
//Выводим все данные с таблицы users
$query = $db->query("SELECT * FROM `users` WHERE `id` = '".$id_user."' OR `nick` = '".$id_user."'");
while($user_data = $db->get_array($query)) {
foreach ($data as $key) {
//Выводит Ник и Пол
if($key == 'nick'){
if($icon == true) {
//Если у пользователя муж. пол выведит эту иконку
if($user_data['pol'] == 1) {
//Если пол не определился
$glob_user = '<img title="Не определился пол" src="/engine/template/icons/user/1.png"> ';}
elseif($user_data['pol'] == 2) {
$glob_user = '<img title="Мужской пол" src="/engine/template/icons/user/2.png"> ';}
//Если у пользователя жен. пол выведит эту иконку
elseif($user_data['pol'] == 3) {
$glob_user = '<img title="Женский пол" src="/engine/template/icons/user/3.png"> ';}
}
//Вывод Ника
$glob_user .= $user_data['nick'];
//Выводит ID
} elseif($key == 'id') {
$glob_user .= $user_data['id'];
}elseif($key == 'group') {
$glob_user .= $user_data['group'];
}elseif($key == 'time') {
$glob_user .= $user_data['time'];
}elseif($key == 'war_balls') {
$glob_user .= $user_data['war_balls'];
}
$x ++;
}
//Вывод $glob_user
return $glob_user;
}
//Если пользователь не авторизован
}else {
foreach ($data as $key) {
//Выводит Ник
if($key == 'nick'){
$glob_user = 'Системный бот';
//Выводит ID
} elseif($key == 'id') {
$glob_user .= 0;
}
$x ++;
}
//Вывод
return $glob_user;
}
}
/**
* Получить возраст по дате рождения
* @param $birth_date дата рождения в формате 'YYYY-MM-DD'
* @return int
*/
public static function Age($birth_date){
return (int)((date('Ymd') - date('Ymd', strtotime($birth_date))) / 10000).' лет';
}
function plural($n, $plurals) {
$plural =
($n % 10 == 1 && $n % 100 != 11 ? 0 :
($n % 10 >= 2 && $n % 10 <= 4 &&
($n % 100 < 10 or $n % 100 >= 20) ? 1 : 2));
return $plurals[$plural];
}
function realtime($dt, $precision = 2) {
$times = array(
365*24*60*60 => array("год", "года", "лет"),
30*24*60*60 => array("месяц", "месяца", "месяцев"),
7*24*60*60 => array("неделю", "недели", "недель"),
24*60*60 => array("день", "дня", "дней"),
60*60 => array("час", "часа", "часов"),
60 => array("минуту", "минуты", "минут"),
);
$diff = time() - $dt;
if($diff < 3) $output = '';
elseif($diff < 30) $output = 'только что';
elseif($diff < 60) $output = 'меньше минуты';
else {
$output = array();
$exit = 0;
foreach($times as $period => $name) {
if($exit >= $precision || ($exit > 0 && $period < 60)) break;
$result = floor($diff / $period);
if ($result > 0) {
if($result == 1) $output[] = user::plural($result, $name);
else $output[] = $result . ' ' . user::plural($result, $name);
$diff -= $result * $period;
$exit++;
} else if ($exit > 0) $exit++;
}
if ($precision < 3) $sep = " и "; else $sep = ", ";
$output = implode($sep, $output);
}
return $output;
}
//Функция неудачных попыток авторизоваться
public static function limit_auth($glob) {
global $db;
//Вывод данных всех из базы пользователей
$auth = $db->query("SELECT * FROM `users`");
//Проверяем на существенность пользователей
if($db->num_rows($auth) > 1) {
//Выводим
while($aut = $db->get_array($auth)) {
//Если пользователь попал уже в список то выводит
if($aut['limit_auth'] >= $glob) {
//Если законилась указанная время
if(time() > $aut['limit_time']) {
//Очищаем ненужные параметры
$db->query("UPDATE `users` SET `limit_auth` = '0' ,`limit_time` = '0' WHERE `id` = '".$aut['id']."'");
} //end
} //end
} //end
} //end
} //exit
/**
* Функция для работы с алфавитом
* param ListUser(язык вывода ников (ru или en))
*/
public static function ListUser($lang = 'en'){
global $db;
//Вывод русского алфавита
if($lang == 'ru') {
$alpha = '<ul>
<li>А</li> <li>Б</li> <li>В</li> <li>Г</li>
<li>Д</li> <li>Е</li> <li>Ж</li> <li>З</li>
<li>И</li> <li>К</li> <li>Л</li> <li>М</li>
<li>Н</li> <li>О</li> <li>П</li> <li>Р</li>
<li>С</li> <li>Т</li> <li>У</li> <li>Ф</li>
<li>Х</li> <li>Ц</li> <li>Ч</li> <li>Щ</li>
<li>Ш</li> <li>Э</li> <li>Ю</li> <li>Я</li>
<li><a href="?lang=en">END</a></li>
</ul>';
//Вывод английского алфавита
}elseif($lang == 'en') {
$alpha = '<ul>
<li>A</li> <li>B</li> <li>C</li> <li>D</li>
<li>E</li> <li>F</li> <li>G</li> <li>H</li>
<li>I</li> <li>J</li> <li>K</li> <li>L</li>
<li>M</li> <li>N</li> <li>O</li> <li>P</li>
<li>Q</li> <li>R</li> <li>S</li> <li>T</li>
<li>U</li> <li>V</li> <li>W</li> <li>X</li>
<li>Y</li> <li>Z</li> <li><a href="?lang=ru">Rus</a></li>
</ul>';
}
//Отправляем запрос в базу для вывода данных по выбранному алфавиту
$sql = "SELECT DISTINCT (LEFT(UPPER(nick),1)) as letter from `users` ORDER BY `letter`";
$query = $db->query($sql);
//Выводм все имеющие ники по алфавиту
while($reset = $db->get_array($query)){
$alpha = str_replace(mb_substr($reset['letter'],0,1,'utf8'),'<a href="?letter='.$reset['letter'].'"><b>'.$reset['letter'].'</b></a>',$alpha);
}
//Выводим значение всех действий
return '<div class="mainpost"><div class="abcsort">'.$alpha.'</div></div>';
}
}
?>