2009-05-10 10:50:39 +03:00
|
|
|
<?php
|
2008-10-26 17:51:03 +02:00
|
|
|
/*-------------------------------------------------------
|
|
|
|
*
|
|
|
|
* LiveStreet Engine Social Networking
|
|
|
|
* Copyright © 2008 Mzhelskiy Maxim
|
|
|
|
*
|
|
|
|
*--------------------------------------------------------
|
|
|
|
*
|
|
|
|
* Official site: www.livestreet.ru
|
|
|
|
* Contact e-mail: rus.engine@gmail.com
|
|
|
|
*
|
|
|
|
* GNU General Public License, version 2:
|
|
|
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
|
|
*
|
|
|
|
---------------------------------------------------------
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
2012-04-29 17:58:36 +03:00
|
|
|
* Экшен обработки УРЛа вида /comments/
|
2008-10-26 17:51:03 +02:00
|
|
|
*
|
2012-04-29 17:58:36 +03:00
|
|
|
* @package actions
|
|
|
|
* @since 1.0
|
2008-10-26 17:51:03 +02:00
|
|
|
*/
|
2012-04-29 17:58:36 +03:00
|
|
|
class ActionBlogs extends Action {
|
|
|
|
/**
|
|
|
|
* Инициализация
|
|
|
|
*/
|
|
|
|
public function Init() {
|
2011-08-23 17:19:32 +03:00
|
|
|
/**
|
|
|
|
* Загружаем в шаблон JS текстовки
|
|
|
|
*/
|
|
|
|
$this->Lang_AddLangJs(array(
|
2014-01-25 14:39:19 +02:00
|
|
|
'blog.join.join','blog.join.leave'
|
2012-04-29 17:58:36 +03:00
|
|
|
));
|
2013-04-12 06:57:03 +03:00
|
|
|
/**
|
|
|
|
* Устанавливаем title страницы
|
|
|
|
*/
|
|
|
|
$this->Viewer_AddHtmlTitle($this->Lang_Get('blog_menu_all_list'));
|
2008-10-26 17:51:03 +02:00
|
|
|
}
|
2012-04-29 17:58:36 +03:00
|
|
|
/**
|
|
|
|
* Регистрируем евенты
|
|
|
|
*/
|
|
|
|
protected function RegisterEvent() {
|
2012-07-09 08:47:42 +03:00
|
|
|
$this->AddEventPreg('/^(page([1-9]\d{0,5}))?$/i','EventShowBlogs');
|
2012-03-30 12:52:36 +03:00
|
|
|
$this->AddEventPreg('/^ajax-search$/i','EventAjaxSearch');
|
2008-10-26 17:51:03 +02:00
|
|
|
}
|
2012-04-29 17:58:36 +03:00
|
|
|
|
|
|
|
|
2008-10-26 17:51:03 +02:00
|
|
|
/**********************************************************************************
|
|
|
|
************************ РЕАЛИЗАЦИЯ ЭКШЕНА ***************************************
|
|
|
|
**********************************************************************************
|
2012-04-29 17:58:36 +03:00
|
|
|
*/
|
2012-03-30 12:52:36 +03:00
|
|
|
|
2012-03-30 17:09:32 +03:00
|
|
|
/**
|
2012-04-29 17:58:36 +03:00
|
|
|
* Поиск блогов по названию
|
2012-03-30 17:09:32 +03:00
|
|
|
*/
|
2012-03-30 12:52:36 +03:00
|
|
|
protected function EventAjaxSearch() {
|
2012-04-29 17:58:36 +03:00
|
|
|
/**
|
|
|
|
* Устанавливаем формат Ajax ответа
|
|
|
|
*/
|
2012-03-30 12:52:36 +03:00
|
|
|
$this->Viewer_SetResponseAjax('json');
|
2014-03-07 06:19:04 +02:00
|
|
|
/**
|
|
|
|
* Фильтр
|
|
|
|
*/
|
|
|
|
$aFilter=array(
|
|
|
|
'exclude_type' => 'personal',
|
|
|
|
);
|
|
|
|
$sOrderWay=in_array(getRequestStr('order'),array('desc','asc')) ? getRequestStr('order') : 'desc';
|
|
|
|
$sOrderField=in_array(getRequestStr('sort_by'),array('blog_id','blog_title','blog_rating','blog_count_user','blog_count_topic')) ? getRequestStr('sort_by') : 'blog_rating';
|
|
|
|
if (is_numeric(getRequestStr('pageNext')) and getRequestStr('pageNext')>0) {
|
|
|
|
$iPage=getRequestStr('pageNext');
|
|
|
|
} else {
|
|
|
|
$iPage=1;
|
|
|
|
}
|
2012-04-29 17:58:36 +03:00
|
|
|
/**
|
|
|
|
* Получаем из реквеста первые буквы блога
|
|
|
|
*/
|
2014-03-04 10:26:29 +02:00
|
|
|
if ($sTitle=getRequestStr('sText')) {
|
2012-03-30 12:52:36 +03:00
|
|
|
$sTitle=str_replace('%','',$sTitle);
|
2014-03-04 10:26:29 +02:00
|
|
|
} else {
|
2014-03-07 06:19:04 +02:00
|
|
|
$sTitle='';
|
|
|
|
}
|
|
|
|
if ($sTitle) {
|
|
|
|
$aFilter['title']="%{$sTitle}%";
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Категории
|
|
|
|
*/
|
|
|
|
if (getRequestStr('category') and $oCategory=$this->Blog_GetCategoryById(getRequestStr('category'))) {
|
|
|
|
/**
|
|
|
|
* Получаем все дочерние категории
|
|
|
|
*/
|
|
|
|
$aCategoriesId=$this->Blog_GetChildrenCategoriesById($oCategory->getId(),true);
|
|
|
|
$aCategoriesId[]=$oCategory->getId();
|
|
|
|
$aFilter['category_id']=$aCategoriesId;
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Тип
|
|
|
|
*/
|
|
|
|
if (in_array(getRequestStr('type'),array('open','close'))) {
|
|
|
|
$aFilter['type']=getRequestStr('type');
|
2012-03-30 12:52:36 +03:00
|
|
|
}
|
2012-04-29 17:58:36 +03:00
|
|
|
/**
|
|
|
|
* Ищем блоги
|
|
|
|
*/
|
2014-03-07 06:19:04 +02:00
|
|
|
$aResult=$this->Blog_GetBlogsByFilter($aFilter,array($sOrderField=>$sOrderWay),$iPage,Config::Get('module.blog.per_page'));
|
|
|
|
$bHideMore=$iPage*Config::Get('module.blog.per_page')>=$aResult['count'];
|
2012-04-29 17:58:36 +03:00
|
|
|
/**
|
|
|
|
* Формируем и возвращает ответ
|
|
|
|
*/
|
2012-03-30 12:52:36 +03:00
|
|
|
$oViewer=$this->Viewer_GetLocalViewer();
|
|
|
|
$oViewer->Assign('aBlogs',$aResult['collection']);
|
2012-05-11 16:20:44 +03:00
|
|
|
$oViewer->Assign('oUserCurrent',$this->User_GetUserCurrent());
|
2014-03-04 10:26:29 +02:00
|
|
|
$oViewer->Assign('sBlogsEmptyList',$this->Lang_Get('search.alerts.empty'));
|
2014-03-07 06:19:04 +02:00
|
|
|
$oViewer->Assign('bUseMore', true);
|
|
|
|
$oViewer->Assign('bHideMore', $bHideMore);
|
|
|
|
$oViewer->Assign('iSearchCount', $aResult['count']);
|
2013-07-10 11:36:21 +03:00
|
|
|
$this->Viewer_AssignAjax('sText',$oViewer->Fetch("actions/ActionBlogs/blog_list.tpl"));
|
2013-04-08 12:37:12 +03:00
|
|
|
/**
|
2014-03-07 06:19:04 +02:00
|
|
|
* Для подгрузки
|
2013-04-08 12:37:12 +03:00
|
|
|
*/
|
2014-03-07 06:19:04 +02:00
|
|
|
$this->Viewer_AssignAjax('iCountLoaded',count($aResult['collection']));
|
|
|
|
$this->Viewer_AssignAjax('pageNext',count($aResult['collection'])>0 ? $iPage+1 : $iPage);
|
|
|
|
$this->Viewer_AssignAjax('bHideMore',$bHideMore);
|
2013-04-08 12:37:12 +03:00
|
|
|
}
|
2012-04-29 17:58:36 +03:00
|
|
|
/**
|
|
|
|
* Отображение списка блогов
|
|
|
|
*/
|
2012-03-30 12:52:36 +03:00
|
|
|
protected function EventShowBlogs() {
|
2012-04-29 17:58:36 +03:00
|
|
|
/**
|
|
|
|
* Фильтр поиска блогов
|
|
|
|
*/
|
2012-03-30 12:52:36 +03:00
|
|
|
$aFilter=array(
|
|
|
|
'exclude_type' => 'personal'
|
|
|
|
);
|
2008-10-26 17:51:03 +02:00
|
|
|
/**
|
|
|
|
* Получаем список блогов
|
|
|
|
*/
|
2014-03-07 06:19:04 +02:00
|
|
|
$aResult=$this->Blog_GetBlogsByFilter($aFilter,array('blog_rating'=>'desc'),1,Config::Get('module.blog.per_page'));
|
2012-04-29 17:58:36 +03:00
|
|
|
$aBlogs=$aResult['collection'];
|
2008-10-26 17:51:03 +02:00
|
|
|
/**
|
|
|
|
* Загружаем переменные в шаблон
|
2012-04-29 17:58:36 +03:00
|
|
|
*/
|
2008-10-26 17:51:03 +02:00
|
|
|
$this->Viewer_Assign("aBlogs",$aBlogs);
|
2014-03-07 06:19:04 +02:00
|
|
|
$this->Viewer_Assign('iSearchCount', $aResult['count']);
|
2008-10-26 17:51:03 +02:00
|
|
|
/**
|
|
|
|
* Устанавливаем шаблон вывода
|
|
|
|
*/
|
2012-04-29 17:58:36 +03:00
|
|
|
$this->SetTemplateAction('index');
|
2008-10-26 17:51:03 +02:00
|
|
|
}
|
2014-03-07 06:19:04 +02:00
|
|
|
}
|