<?php

# работа с пользователем
class user {

# проверка, загрузка, вывод аватара
public function avatar($image, $record = false) {
if ($record) { global $FUNC; $name = $FUNC->random(10); $path = ROOT .'design/avatars/'. $name .'.jpg'; // преобразование ссылки
if (!file_exists($path)) { file_put_contents($path, file_get_contents($image)); chmod(ROOT.'design/avatars/'.$name.'.jpg',0777); // запись файла
return $name; } else return 'none'; } else return (file_exists(ROOT .'design/avatars/'. $image .'.jpg')) ? true : false; } // возврат картинки

# проверка, вывод даты рождения
public function bdate($date, $vk = false, $check = false) {
if ($check && $vk) return (strtotime($date)) ? true : false; // проверка даты
elseif ($vk) return date('d.m.Y', strtotime($date)); else { $when = explode('.', $date); // преобразование даты
if ($when[1] > date('m') || $when[1] == date('m') && $when[0] > date('d')) // определение возраста
return (date('Y') - $when[2] - 1); else return (date('Y') - $when[2]); } } // вывод возраста

# фильтрация данных пользователя
public function filter($var, $type, $size = false) { switch($type) { // проверка типа данных
case 'data': return ($var != 'no' && $var != 'yes') ? false : true; break; // персональные данные
case 'commun': return ($var != 'all' && $var != 'mate') ? false : true; break; // выбор друзей
case 'name' : return (preg_match('#^([a-zа-яёЁ]){2,20}\z#ui', $var)) ? true : false; break; // настоящее имя
case 'nick': return (preg_match('#^([a-z0-9 ]){2,'. $size .'}\z#ui', $var) && substr_count($var, ' ') < 3 && $var != 'edit') ? true : false; break; // ник
case 'pass': return (preg_match('#^([a-zа-яёЁ0-9\!@"\#;\$%\^\:&\?\*\(\)\[\]\{\}\-_\+\=\<\>\|\\/.\. ]){5,'. $size .'}\z#ui', $var)) ? true : false; break; // пароль
case 'email': return (preg_match('#^([0-9a-z-_\.]){1,49}@([0-9a-z-_\.]){1,34}\.([a-z]){2,6}\z#', $var)) ? true : false; break; // e-mail
case 'sex': return ($var != 'none' && $var != 'male' && $var != 'female') ? false : true; break; } } // пол (гендер)

# получение уровня игрока
public function level($count) {  
$exp = 100; for($level = 1; $count >= $exp; $level++) { // вычисление уровня
$count -= $exp; $exp = floor($exp * 1.6); } return $level; } // подсчет опыта, определение

# вывод ника, обработка ссылки
public function nick($value, $back = false) { return  (!$back) ? str_replace(' ','_', $value) : str_replace('_',' ', $value); }

# пол пользователя
public function sex($sex, $word = false) { switch($sex) { // определение
case 'male': return ($word) ? 'Мужской' : 'male'; break; // мужской
case 'female': return ($word) ? 'Женский' : 'female'; break; // женский
case 'none': return ($word) ? 'Не указан' : 'anonym'; break; } } // не определен

# статус пользователя
public function status($what, $where) {
if ($where == 'all') return true; else { switch($what) { // определение, доступно всем
case 'none': return ($where == 'none') ? true : false; break; // гость, не авторизован
case 'guest': return ($where == 'guest') ? true : false; break; // гость, авторизован
case 'user': return ($where == 'guest' || $where == 'user') ? true : false; break; // пользователь
case 'admin': return ($where != 'none') ? true : false; break; } } } // администратор

# вывод даты и времени
public function when($time = false, $back = false, $odds = false) { global $GAME; // вызов класса
if ($back) { $gap = (!$odds) ? time() - $time : $time; if ($gap == 0) return 'только что'; // сейчас
elseif ($gap < 60) return $GAME->word($gap, 'секунду', 'секунды', 'секунд'); // секунды
elseif ($gap < 3600) { $min = floor($gap / 60); return $GAME->word($min, 'минуту', 'минуты', 'минут'); } // минуты
elseif ($gap < 86400) { $hour = floor($gap / 3600); return $GAME->word($hour, 'час', 'часа', 'часов'); } // часы
elseif ($gap < 2592000) { $day = floor($gap / 86400); return $GAME->word($day, 'день', 'дня', 'дней'); } // дни
elseif ($gap >= 2592000) { $month = floor($gap / 2592000); return $GAME->word($month, 'месяц', 'месяца', 'месяцев'); } // месяцы
} else { if (!$time) $time = time(); $date = date('d.m.y', $time); if ($date == date('d.m.y')) return date('Сегодня в H:i', $time); // дата
elseif ($date == date('d.m.y', time() - 86400)) return date('Вчера в H:i', $time); else return date('d.m.y в H:i', $time); } } } // результат

# запуск класса
$USER = new user();

?>