View file siwap.ru/system/classes/Users.class.php

File size: 3.42Kb
<?php

class Users
{
	
	public function get(int $offset = 0, int $count = 10)
	{
		$response = false;
		
		if (!empty($count))
		{
			$request = Base::query(
				'SELECT `id`, `name`, `last_name`, `date_last`, `avatar`, `fon_avatar` FROM `user` ORDER BY `date_last` DESC LIMIT :offset,:count', [
					'offset/int' => $offset,
					'count/int' => $count,
				],
				'arr'
			);
			
			if (!empty($request) && is_array($request))
			{
				foreach ($request as $key => $value)
				{
					$request[$key]['avatar'] = (!empty($request[$key]['avatar']) ? HOME.$request[$key]['avatar'] : HOME.'/design/img/avatar.jpg');
					$request[$key]['date_last'] = App::$sys->time($request[$key]['date_last']);
					$request[$key]['fon_avatar'] = (!empty($request[$key]['fon_avatar']) ? HOME.$request[$key]['fon_avatar'] : HOME.'/design/img/cover.jpg');
				}
				$response = $request;
			}
		}
		return $response;
	}
	
	public function getOnline(int $offset = 0, int $count = 10)
	{
		$response = false;
		
		if (!empty($count))
		{
			$request = Base::query(
				'SELECT `name`, `last_name`, `date_last`, `avatar`, `id` FROM `user` WHERE `date_last` > :time ORDER BY `date_last` DESC LIMIT :offset,:count', [
					'time/int' => (time()-300),
					'offset/int' => $offset,
					'count/int' => $count,
				],
				'arr'
			);
			
			if (!empty($request) && is_array($request))
			{
				foreach ($request as $key => $value)
				{
					$request[$key]['date_last'] = App::$sys->time($request[$key]['date_last']);
					$request[$key]['avatar'] = (!empty($request[$key]['avatar']) ? HOME.$request[$key]['avatar'] : HOME.'/design/img/avatar.jpg');
					
				}
				$response = $request;
			}
		}
		return $response;
	}
	
	public function search(string $query, $params = [])
	{
		$response = false;
		
		if (!empty($query))
		{
			$sort = isset($params['sort']) && $params['sort'] == 1 ? 'date_reg' : 'date_last';
			$order = isset($params['order']) && $params['order'] == 1 ? 'DESC' : 'ASC';
			$fields = isset($params['fields']) && !empty($params['fields']) ? App::$sys->protect($params['fields']) : 'id, login, name, last_name, date_last, avatar, date_reg';
			$count = isset($params['count']) && !empty($params['count']) ? (int) $params['count'] : 10;
			$offset = isset($params['offset']) && !empty($params['offset']) ? (int) $params['offset'] : 0;
			$photoOnly = (isset($params['photo_only']) && $params['photo_only'] == 1 ? "AND `avatar` <> ''" : null);
			$onlineOnly = (isset($params['online_only']) && $params['online_only'] == 1 ? 'AND `date_last` > '.(TIME-300) : null);
			
			$request = Base::query(
				'SELECT '.$fields.' FROM `user` WHERE (`login` LIKE :query OR `name` LIKE :query OR `last_name` LIKE :query) '.$photoOnly.$onlineOnly.' ORDER BY `'.$sort.'` '.$order.' LIMIT 10', [
					'query' => '%'.$query.'%',
				],
				'arr'
			);
			
			if (!empty($request) && is_array($request))
			{
				foreach ($request as $key => $value)
				{
					if (isset($request[$key]['avatar'])) $request[$key]['avatar'] = (!empty($request[$key]['avatar']) ? HOME.$request[$key]['avatar'] : HOME.'/design/img/avatar.jpg');
					if (isset($request[$key]['date_reg'])) $request[$key]['date_reg'] = App::$sys->time($request[$key]['date_reg']);
					if (isset($request[$key]['date_last'])) $request[$key]['date_last'] = App::$sys->time($request[$key]['date_last']);
				}
				$response = $request;
			}
		}
		return $response;
	}
	
}