ActionPeople

Package actions
Inheritance class ActionPeople » Action » LsObject
Since 1.0
Source Code /classes/actions/ActionPeople.class.php
Экшен обработки статистики юзеров, т.е. УРЛа вида /people/

Protected Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
aParams array Список параметров из URL Action
aParamsEventMatch array Список совпадений по регулярному выражению для евента Action
aRegisterEvent array Список зарегистрированных евентов Action
oEngine Engine|null Объект ядра Action
sActionTemplate string|null Шаблон экшена Action
sCurrentAction null|string Текущий экшен Action
sCurrentEvent string|null Текущий евент Action
sCurrentEventName string|null Имя текущий евента Action
sDefaultEvent string|null Дефолтный евент Action
sMenuHeadItemSelect string Главное меню ActionPeople
sMenuItemSelect string Меню ActionPeople

Public Methods

Hide inherited methods

MethodDescriptionDefined By
EventShutdown() Выполняется при завершении работы экшена ActionPeople
ExecEvent() Запускает евент на выполнение Action
GetActionClass() Получить каталог с шаблонами экшена(совпадает с именем класса) Action
GetCurrentEventName() Возвращает имя евента Action
GetDefaultEvent() Получает евент по умолчанию Action
GetParam() Получает параметр из URL по его номеру, если его нет то null Action
GetParams() Получает список параметров из УРЛ Action
GetTemplate() Получить шаблон Action
Init() Инициализация ActionPeople
SetDefaultEvent() Устанавливает евент по умолчанию Action
SetParam() Установить значение параметра(эмуляция параметра в URL). Action
__call() Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля Action
__construct() Конструктор Action

Protected Methods

Hide inherited methods

MethodDescriptionDefined By
AddEvent() Добавляет евент в экшен Action
AddEventPreg() Добавляет евент в экшен, используя регулярное вырожение для евента и параметров Action
EventAjaxSearch() Поиск пользователей по логину ActionPeople
EventCity() Показывает юзеров по городу ActionPeople
EventCountry() Показывает юзеров по стране ActionPeople
EventIndex() Показываем юзеров ActionPeople
EventNew() Показываем новых на сайте ActionPeople
EventNotFound() Вызывается в том случаи если не найден евент который запросили через URL Action
EventOnline() Показываем последних на сайте ActionPeople
GetEventMatch() Возвращает элементы совпадения по регулярному выражению для евента Action
GetParamEventMatch() Возвращает элементы совпадения по регулярному выражению для параметров евента Action
GetStats() Получение статистики ActionPeople
RegisterEvent() Регистрируем евенты ActionPeople
SetTemplate() Устанавливает какой шаблон выводить Action
SetTemplateAction() Устанавливает какой шаблон выводить Action

Property Details

sMenuHeadItemSelect property
protected string $sMenuHeadItemSelect;

Главное меню

sMenuItemSelect property
protected string $sMenuItemSelect;

Меню

Method Details

EventAjaxSearch() method
protected void EventAjaxSearch()
Source Code: /classes/actions/ActionPeople.class.php#71 (show)
protected function EventAjaxSearch() {
    
/**
     * Устанавливаем формат Ajax ответа
     */
    
$this->Viewer_SetResponseAjax('json');
    
/**
     * Получаем из реквеста первые быквы для поиска пользователей по логину
     */
    
$sTitle=getRequest('user_login');
    if (
is_string($sTitle) and mb_strlen($sTitle,'utf-8')) {
        
$sTitle=str_replace(array('_','%'),array('\_','\%'),$sTitle);
    } else {
        
$this->Message_AddErrorSingle($this->Lang_Get('system_error'));
        return;
    }
    
/**
     * Как именно искать: совпадение в любой частилогина, или только начало или конец логина
     */
    
if (getRequest('isPrefix')) {
        
$sTitle.='%';
    } elseif (
getRequest('isPostfix')) {
        
$sTitle='%'.$sTitle;
    } else {
        
$sTitle='%'.$sTitle.'%';
    }
    
/**
     * Ищем пользователей
     */
    
$aResult=$this->User_GetUsersByFilter(array('activate' => 1,'login'=>$sTitle),array('user_rating'=>'desc'),1,50);
    
/**
     * Формируем ответ
     */
    
$oViewer=$this->Viewer_GetLocalViewer();
    
$oViewer->Assign('aUsersList',$aResult['collection']);
    
$oViewer->Assign('oUserCurrent',$this->User_GetUserCurrent());
    
$oViewer->Assign('sUserListEmpty',$this->Lang_Get('user_search_empty'));
    
$this->Viewer_AssignAjax('sText',$oViewer->Fetch("user_list.tpl"));
}

Поиск пользователей по логину

EventCity() method
protected void EventCity()
Source Code: /classes/actions/ActionPeople.class.php#155 (show)
protected function EventCity() {
    
$this->sMenuItemSelect='city';
    
/**
     * Город существует?
     */
    
if (!($oCity=$this->Geo_GetCityById($this->getParam(0)))) {
        return 
parent::EventNotFound();
    }
    
/**
     * Получаем статистику
     */
    
$this->GetStats();
    
/**
     * Передан ли номер страницы
     */
    
$iPage=$this->GetParamEventMatch(1,2) ? $this->GetParamEventMatch(1,2) : 1;
    
/**
     * Получаем список юзеров
     */
    
$aResult=$this->Geo_GetTargets(array('city_id'=>$oCity->getId(),'target_type'=>'user'),$iPage,Config::Get('module.user.per_page'));
    
$aUsersId=array();
    foreach(
$aResult['collection'] as $oTarget) {
        
$aUsersId[]=$oTarget->getTargetId();
    }
    
$aUsersCity=$this->User_GetUsersAdditionalData($aUsersId);
    
/**
     * Формируем постраничность
     */
    
$aPaging=$this->Viewer_MakePaging($aResult['count'],$iPage,Config::Get('module.user.per_page'),Config::Get('pagination.pages.count'),Router::GetPath('people').$this->sCurrentEvent.'/'.$oCity->getId());
    
/**
     * Загружаем переменные в шаблон
     */
    
if ($aUsersCity) {
        
$this->Viewer_Assign('aPaging',$aPaging);
    }
    
$this->Viewer_Assign('oCity',$oCity);
    
$this->Viewer_Assign('aUsersCity',$aUsersCity);
}

Показывает юзеров по городу

EventCountry() method
protected void EventCountry()
Source Code: /classes/actions/ActionPeople.class.php#113 (show)
protected function EventCountry() {
    
$this->sMenuItemSelect='country';
    
/**
     * Страна существует?
     */
    
if (!($oCountry=$this->Geo_GetCountryById($this->getParam(0)))) {
        return 
parent::EventNotFound();
    }
    
/**
     * Получаем статистику
     */
    
$this->GetStats();
    
/**
     * Передан ли номер страницы
     */
    
$iPage=$this->GetParamEventMatch(1,2) ? $this->GetParamEventMatch(1,2) : 1;
    
/**
     * Получаем список вязей пользователей со страной
     */
    
$aResult=$this->Geo_GetTargets(array('country_id'=>$oCountry->getId(),'target_type'=>'user'),$iPage,Config::Get('module.user.per_page'));
    
$aUsersId=array();
    foreach(
$aResult['collection'] as $oTarget) {
        
$aUsersId[]=$oTarget->getTargetId();
    }
    
$aUsersCountry=$this->User_GetUsersAdditionalData($aUsersId);
    
/**
     * Формируем постраничность
     */
    
$aPaging=$this->Viewer_MakePaging($aResult['count'],$iPage,Config::Get('module.user.per_page'),Config::Get('pagination.pages.count'),Router::GetPath('people').$this->sCurrentEvent.'/'.$oCountry->getId());
    
/**
     * Загружаем переменные в шаблон
     */
    
if ($aUsersCountry) {
        
$this->Viewer_Assign('aPaging',$aPaging);
    }
    
$this->Viewer_Assign('oCountry',$oCountry);
    
$this->Viewer_Assign('aUsersCountry',$aUsersCountry);
}

Показывает юзеров по стране

EventIndex() method
protected void EventIndex()
Source Code: /classes/actions/ActionPeople.class.php#229 (show)
protected function EventIndex() {
    
/**
     * Получаем статистику
     */
    
$this->GetStats();
    
/**
     * По какому полю сортировать
     */
    
$sOrder='user_rating';
    if (
getRequest('order')) {
        
$sOrder=(string)getRequest('order');
    }
    
/**
     * В каком направлении сортировать
     */
    
$sOrderWay='desc';
    if (
getRequest('order_way')) {
        
$sOrderWay=(string)getRequest('order_way');
    }
    
$aFilter=array(
        
'activate' => 1
    
);
    
/**
     * Передан ли номер страницы
     */
    
$iPage=$this->GetParamEventMatch(0,2) ? $this->GetParamEventMatch(0,2) : 1;
    
/**
     * Получаем список юзеров
     */
    
$aResult=$this->User_GetUsersByFilter($aFilter,array($sOrder=>$sOrderWay),$iPage,Config::Get('module.user.per_page'));
    
$aUsers=$aResult['collection'];
    
/**
     * Формируем постраничность
     */
    
$aPaging=$this->Viewer_MakePaging($aResult['count'],$iPage,Config::Get('module.user.per_page'),Config::Get('pagination.pages.count'),Router::GetPath('people').'index',array('order'=>$sOrder,'order_way'=>$sOrderWay));
    
/**
     * Получаем алфавитный указатель на список пользователей
     */
    
$aPrefixUser=$this->User_GetGroupPrefixUser(1);
    
/**
     * Загружаем переменные в шаблон
     */
    
$this->Viewer_Assign('aPaging',$aPaging);
    
$this->Viewer_Assign('aUsersRating',$aUsers);
    
$this->Viewer_Assign('aPrefixUser',$aPrefixUser);
    
$this->Viewer_Assign("sUsersOrder",htmlspecialchars($sOrder));
    
$this->Viewer_Assign("sUsersOrderWay",htmlspecialchars($sOrderWay));
    
$this->Viewer_Assign("sUsersOrderWayNext",htmlspecialchars($sOrderWay=='desc' 'asc' 'desc'));
    
/**
     * Устанавливаем шаблон вывода
     */
    
$this->SetTemplateAction('index');
}

Показываем юзеров

EventNew() method
protected void EventNew()
Source Code: /classes/actions/ActionPeople.class.php#213 (show)
protected function EventNew() {
    
$this->sMenuItemSelect='new';
    
/**
     * Последние по регистрации
     */
    
$aUsersRegister=$this->User_GetUsersByDateRegister(15);
    
$this->Viewer_Assign('aUsersRegister',$aUsersRegister);
    
/**
     * Получаем статистику
     */
    
$this->GetStats();
}

Показываем новых на сайте

EventOnline() method
protected void EventOnline()
Source Code: /classes/actions/ActionPeople.class.php#197 (show)
protected function EventOnline() {
    
$this->sMenuItemSelect='online';
    
/**
     * Последние по визиту на сайт
     */
    
$aUsersLast=$this->User_GetUsersByDateLast(15);
    
$this->Viewer_Assign('aUsersLast',$aUsersLast);
    
/**
     * Получаем статистику
     */
    
$this->GetStats();
}

Показываем последних на сайте

EventShutdown() method
public void EventShutdown()
Source Code: /classes/actions/ActionPeople.class.php#301 (show)
public function EventShutdown() {
    
/**
     * Загружаем в шаблон необходимые переменные
     */
    
$this->Viewer_Assign('sMenuHeadItemSelect',$this->sMenuHeadItemSelect);
    
$this->Viewer_Assign('sMenuItemSelect',$this->sMenuItemSelect);
}

Выполняется при завершении работы экшена

GetStats() method
protected void GetStats()
Source Code: /classes/actions/ActionPeople.class.php#286 (show)
protected function GetStats() {
    
/**
     * Статистика кто, где и т.п.
     */
    
$aStat=$this->User_GetStatUsers();
    
/**
     * Загружаем переменные в шаблон
     */
    
$this->Viewer_Assign('aStat',$aStat);
}

Получение статистики

Init() method
public void Init()
Source Code: /classes/actions/ActionPeople.class.php#42 (show)
public function Init() {
    
/**
     * Устанавливаем title страницы
     */
    
$this->Viewer_AddHtmlTitle($this->Lang_Get('people'));
}

Инициализация

RegisterEvent() method
protected void RegisterEvent()
Source Code: /classes/actions/ActionPeople.class.php#52 (show)
protected function RegisterEvent() {
    
$this->AddEvent('online','EventOnline');
    
$this->AddEvent('new','EventNew');
    
$this->AddEventPreg('/^(index)?$/i','/^(page([1-9]\d{0,5}))?$/i','/^$/i','EventIndex');
    
$this->AddEventPreg('/^ajax-search$/i','EventAjaxSearch');

    
$this->AddEventPreg('/^country$/i','/^\d+$/i','/^(page([1-9]\d{0,5}))?$/i','EventCountry');
    
$this->AddEventPreg('/^city$/i','/^\d+$/i','/^(page([1-9]\d{0,5}))?$/i','EventCity');
}

Регистрируем евенты