ActionStream
Package | actions |
---|---|
Inheritance | class ActionStream » Action » LsObject |
Since | 1.0 |
Source Code | /classes/actions/ActionStream.class.php |
Экшен обработки ленты активности
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
aParams | array | Список параметров из URL | Action |
aParamsEventMatch | array | Список совпадений по регулярному выражению для евента | Action |
aRegisterEvent | array | Список зарегистрированных евентов | Action |
oEngine | Engine|null | Объект ядра | Action |
oUserCurrent | ModuleUser_EntityUser|null | Текущий пользователь | ActionStream |
sActionTemplate | string|null | Шаблон экшена | Action |
sCurrentAction | null|string | Текущий экшен | Action |
sCurrentEvent | string|null | Текущий евент | Action |
sCurrentEventName | string|null | Имя текущий евента | Action |
sDefaultEvent | string|null | Дефолтный евент | Action |
sMenuItemSelect | string | Какое меню активно | ActionStream |
Public Methods
Method | Description | Defined By |
---|---|---|
EventShutdown() | Выполняется при завершении работы экшена | ActionStream |
ExecEvent() | Запускает евент на выполнение | Action |
GetActionClass() | Получить каталог с шаблонами экшена(совпадает с именем класса) | Action |
GetCurrentEventName() | Возвращает имя евента | Action |
GetDefaultEvent() | Получает евент по умолчанию | Action |
GetParam() | Получает параметр из URL по его номеру, если его нет то null | Action |
GetParams() | Получает список параметров из УРЛ | Action |
GetTemplate() | Получить шаблон | Action |
Init() | Инициализация | ActionStream |
SetDefaultEvent() | Устанавливает евент по умолчанию | Action |
SetParam() | Установить значение параметра(эмуляция параметра в URL). | Action |
__call() | Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля | Action |
__construct() | Конструктор | Action |
Protected Methods
Method | Description | Defined By |
---|---|---|
AddEvent() | Добавляет евент в экшен | Action |
AddEventPreg() | Добавляет евент в экшен, используя регулярное вырожение для евента и параметров | Action |
EventAll() | Список событий в общей ленте активности сайта | ActionStream |
EventGetMore() | Погрузка событий (замена постраничности) | ActionStream |
EventGetMoreAll() | Погрузка событий для всего сайта | ActionStream |
EventGetMoreUser() | Подгрузка событий для пользователя | ActionStream |
EventNotFound() | Вызывается в том случаи если не найден евент который запросили через URL | Action |
EventSubscribe() | Подписка на пользователя по ID | ActionStream |
EventSubscribeByLogin() | Подписка на пользователя по логину | ActionStream |
EventSwitchEventType() | Активаци/деактивация типа события | ActionStream |
EventUnsubscribe() | Отписка от пользователя | ActionStream |
EventUser() | Список событий в ленте активности пользователя | ActionStream |
GetEventMatch() | Возвращает элементы совпадения по регулярному выражению для евента | Action |
GetParamEventMatch() | Возвращает элементы совпадения по регулярному выражению для параметров евента | Action |
RegisterEvent() | Регистрация евентов | ActionStream |
SetTemplate() | Устанавливает какой шаблон выводить | Action |
SetTemplateAction() | Устанавливает какой шаблон выводить | Action |
Property Details
oUserCurrent
property
protected ModuleUser_EntityUser|null $oUserCurrent;
Текущий пользователь
sMenuItemSelect
property
protected string $sMenuItemSelect;
Какое меню активно
Method Details
EventAll()
method
protected void EventAll()
|
Source Code: /classes/actions/ActionStream.class.php#105 (show)
protected function EventAll() {
$this->sMenuItemSelect='all';
/**
* Читаем события
*/
$aEvents = $this->Stream_ReadAll();
$this->Viewer_Assign('bDisableGetMoreButton', $this->Stream_GetCountAll() < Config::Get('module.stream.count_default'));
$this->Viewer_Assign('aStreamEvents', $aEvents);
if (count($aEvents)) {
$oEvenLast=end($aEvents);
$this->Viewer_Assign('iStreamLastId', $oEvenLast->getId());
}
}
Список событий в общей ленте активности сайта
EventGetMore()
method
protected void EventGetMore()
|
Source Code: /classes/actions/ActionStream.class.php#146 (show)
protected function EventGetMore() {
/**
* Устанавливаем формат Ajax ответа
*/
$this->Viewer_SetResponseAjax('json');
/**
* Пользователь авторизован?
*/
if (!$this->oUserCurrent) {
parent::EventNotFound();
}
/**
* Необходимо передать последний просмотренный ID событий
*/
$iFromId = getRequest('last_id');
if (!$iFromId) {
$this->Message_AddError($this->Lang_Get('system_error'),$this->Lang_Get('error'));
return;
}
/**
* Получаем события
*/
$aEvents = $this->Stream_Read(null, $iFromId);
$oViewer=$this->Viewer_GetLocalViewer();
$oViewer->Assign('aStreamEvents', $aEvents);
$oViewer->Assign('sDateLast', getRequest('date_last'));
if (count($aEvents)) {
$oEvenLast=end($aEvents);
$this->Viewer_AssignAjax('iStreamLastId', $oEvenLast->getId());
}
/**
* Возвращаем данные в ajax ответе
*/
$this->Viewer_AssignAjax('result', $oViewer->Fetch('actions/ActionStream/events.tpl'));
$this->Viewer_AssignAjax('events_count', count($aEvents));
}
Погрузка событий (замена постраничности)
EventGetMoreAll()
method
protected void EventGetMoreAll()
|
Source Code: /classes/actions/ActionStream.class.php#187 (show)
protected function EventGetMoreAll() {
/**
* Устанавливаем формат Ajax ответа
*/
$this->Viewer_SetResponseAjax('json');
/**
* Пользователь авторизован?
*/
if (!$this->oUserCurrent) {
parent::EventNotFound();
}
/**
* Необходимо передать последний просмотренный ID событий
*/
$iFromId = getRequest('last_id');
if (!$iFromId) {
$this->Message_AddError($this->Lang_Get('system_error'),$this->Lang_Get('error'));
return;
}
/**
* Получаем события
*/
$aEvents = $this->Stream_ReadAll(null, $iFromId);
$oViewer=$this->Viewer_GetLocalViewer();
$oViewer->Assign('aStreamEvents', $aEvents);
$oViewer->Assign('sDateLast', getRequest('date_last'));
if (count($aEvents)) {
$oEvenLast=end($aEvents);
$this->Viewer_AssignAjax('iStreamLastId', $oEvenLast->getId());
}
/**
* Возвращаем данные в ajax ответе
*/
$this->Viewer_AssignAjax('result', $oViewer->Fetch('actions/ActionStream/events.tpl'));
$this->Viewer_AssignAjax('events_count', count($aEvents));
}
Погрузка событий для всего сайта
EventGetMoreUser()
method
protected void EventGetMoreUser()
|
Source Code: /classes/actions/ActionStream.class.php#228 (show)
protected function EventGetMoreUser() {
/**
* Устанавливаем формат Ajax ответа
*/
$this->Viewer_SetResponseAjax('json');
/**
* Пользователь авторизован?
*/
if (!$this->oUserCurrent) {
parent::EventNotFound();
}
/**
* Необходимо передать последний просмотренный ID событий
*/
$iFromId = getRequest('last_id');
if (!$iFromId) {
$this->Message_AddError($this->Lang_Get('system_error'),$this->Lang_Get('error'));
return;
}
if (!($oUser=$this->User_GetUserById(getRequest('user_id')))) {
$this->Message_AddError($this->Lang_Get('system_error'),$this->Lang_Get('error'));
return;
}
/**
* Получаем события
*/
$aEvents = $this->Stream_ReadByUserId($oUser->getId(), null, $iFromId);
$oViewer=$this->Viewer_GetLocalViewer();
$oViewer->Assign('aStreamEvents', $aEvents);
$oViewer->Assign('sDateLast', getRequest('date_last'));
if (count($aEvents)) {
$oEvenLast=end($aEvents);
$this->Viewer_AssignAjax('iStreamLastId', $oEvenLast->getId());
}
/**
* Возвращаем данные в ajax ответе
*/
$this->Viewer_AssignAjax('result', $oViewer->Fetch('actions/ActionStream/events.tpl'));
$this->Viewer_AssignAjax('events_count', count($aEvents));
}
Подгрузка событий для пользователя
EventShutdown()
method
public void EventShutdown()
|
Source Code: /classes/actions/ActionStream.class.php#372 (show)
public function EventShutdown() {
/**
* Загружаем в шаблон необходимые переменные
*/
$this->Viewer_Assign('sMenuItemSelect',$this->sMenuItemSelect);
}
Выполняется при завершении работы экшена
EventSubscribe()
method
protected void EventSubscribe()
|
Source Code: /classes/actions/ActionStream.class.php#273 (show)
protected function EventSubscribe() {
/**
* Устанавливаем формат Ajax ответа
*/
$this->Viewer_SetResponseAjax('json');
/**
* Пользователь авторизован?
*/
if (!$this->oUserCurrent) {
parent::EventNotFound();
}
/**
* Проверяем существование пользователя
*/
if (!$this->User_getUserById(getRequest('id'))) {
$this->Message_AddError($this->Lang_Get('system_error'),$this->Lang_Get('error'));
}
if ($this->oUserCurrent->getId() == getRequest('id')) {
$this->Message_AddError($this->Lang_Get('stream_error_subscribe_to_yourself'),$this->Lang_Get('error'));
return;
}
/**
* Подписываем на пользователя
*/
$this->Stream_subscribeUser($this->oUserCurrent->getId(), getRequest('id'));
$this->Message_AddNotice($this->Lang_Get('stream_subscribes_updated'), $this->Lang_Get('attention'));
}
Подписка на пользователя по ID
EventSubscribeByLogin()
method
protected void EventSubscribeByLogin()
|
Source Code: /classes/actions/ActionStream.class.php#304 (show)
protected function EventSubscribeByLogin() {
/**
* Устанавливаем формат Ajax ответа
*/
$this->Viewer_SetResponseAjax('json');
/**
* Пользователь авторизован?
*/
if (!$this->oUserCurrent) {
parent::EventNotFound();
}
if (!getRequest('login') or !is_string(getRequest('login'))) {
$this->Message_AddError($this->Lang_Get('system_error'),$this->Lang_Get('error'));
return;
}
/**
* Проверяем существование пользователя
*/
$oUser = $this->User_getUserByLogin(getRequest('login'));
if (!$oUser) {
$this->Message_AddError($this->Lang_Get('user_not_found',array('login'=>htmlspecialchars(getRequest('login')))),$this->Lang_Get('error'));
return;
}
if ($this->oUserCurrent->getId() == $oUser->getId()) {
$this->Message_AddError($this->Lang_Get('stream_error_subscribe_to_yourself'),$this->Lang_Get('error'));
return;
}
/**
* Подписываем на пользователя
*/
$this->Stream_subscribeUser($this->oUserCurrent->getId(), $oUser->getId());
$this->Viewer_AssignAjax('uid', $oUser->getId());
$this->Viewer_AssignAjax('user_login', $oUser->getLogin());
$this->Viewer_AssignAjax('user_web_path', $oUser->getUserWebPath());
$this->Viewer_AssignAjax('user_avatar_48', $oUser->getProfileAvatarPath(48));
$this->Message_AddNotice($this->Lang_Get('userfeed_subscribes_updated'), $this->Lang_Get('attention'));
}
Подписка на пользователя по логину
EventSwitchEventType()
method
protected void EventSwitchEventType()
|
Source Code: /classes/actions/ActionStream.class.php#122 (show)
protected function EventSwitchEventType() {
/**
* Устанавливаем формат Ajax ответа
*/
$this->Viewer_SetResponseAjax('json');
/**
* Пользователь авторизован?
*/
if (!$this->oUserCurrent) {
parent::EventNotFound();
}
if (!getRequest('type')) {
$this->Message_AddError($this->Lang_Get('system_error'),$this->Lang_Get('error'));
}
/**
* Активируем/деактивируем тип
*/
$this->Stream_switchUserEventType($this->oUserCurrent->getId(), getRequest('type'));
$this->Message_AddNotice($this->Lang_Get('stream_subscribes_updated'), $this->Lang_Get('attention'));
}
Активаци/деактивация типа события
EventUnsubscribe()
method
protected void EventUnsubscribe()
|
Source Code: /classes/actions/ActionStream.class.php#345 (show)
protected function EventUnsubscribe() {
/**
* Устанавливаем формат Ajax ответа
*/
$this->Viewer_SetResponseAjax('json');
/**
* Пользователь авторизован?
*/
if (!$this->oUserCurrent) {
parent::EventNotFound();
}
/**
* Пользователь с таким ID существует?
*/
if (!$this->User_getUserById(getRequest('id'))) {
$this->Message_AddError($this->Lang_Get('system_error'),$this->Lang_Get('error'));
}
/**
* Отписываем
*/
$this->Stream_unsubscribeUser($this->oUserCurrent->getId(), getRequest('id'));
$this->Message_AddNotice($this->Lang_Get('stream_subscribes_updated'), $this->Lang_Get('attention'));
}
Отписка от пользователя
EventUser()
method
protected void EventUser()
|
Source Code: /classes/actions/ActionStream.class.php#82 (show)
protected function EventUser() {
/**
* Пользователь авторизован?
*/
if (!$this->oUserCurrent) {
parent::EventNotFound();
}
$this->Viewer_AddBlock('right','streamConfig');
/**
* Читаем события
*/
$aEvents = $this->Stream_Read();
$this->Viewer_Assign('bDisableGetMoreButton', $this->Stream_GetCountByReaderId($this->oUserCurrent->getId()) < Config::Get('module.stream.count_default'));
$this->Viewer_Assign('aStreamEvents', $aEvents);
if (count($aEvents)) {
$oEvenLast=end($aEvents);
$this->Viewer_Assign('iStreamLastId', $oEvenLast->getId());
}
}
Список событий в ленте активности пользователя
Init()
method
public void Init()
|
Source Code: /classes/actions/ActionStream.class.php#42 (show)
public function Init() {
/**
* Личная лента доступна только для авторизованных, для гостей показываем общую ленту
*/
$this->oUserCurrent = $this->User_getUserCurrent();
if ($this->oUserCurrent) {
$this->SetDefaultEvent('user');
} else {
$this->SetDefaultEvent('all');
}
$this->Viewer_Assign('aStreamEventTypes', $this->Stream_getEventTypes());
$this->Viewer_Assign('sMenuHeadItemSelect', 'stream');
/**
* Загружаем в шаблон JS текстовки
*/
$this->Lang_AddLangJs(array(
'stream_subscribes_already_subscribed','error'
));
}
Инициализация
RegisterEvent()
method
protected void RegisterEvent()
|
Source Code: /classes/actions/ActionStream.class.php#66 (show)
protected function RegisterEvent() {
$this->AddEvent('user', 'EventUser');
$this->AddEvent('all', 'EventAll');
$this->AddEvent('subscribe', 'EventSubscribe');
$this->AddEvent('subscribeByLogin', 'EventSubscribeByLogin');
$this->AddEvent('unsubscribe', 'EventUnSubscribe');
$this->AddEvent('switchEventType', 'EventSwitchEventType');
$this->AddEvent('get_more', 'EventGetMore');
$this->AddEvent('get_more_user', 'EventGetMoreUser');
$this->AddEvent('get_more_all', 'EventGetMoreAll');
}
Регистрация евентов