/** * Возвращает список блогов по фильтру * * @param array $aFilter Фильтр выборки блогов * @param int $iPage Номер текущей страницы * @param int $iPerPage Количество элементов на одну страницу * @param array $aAllowData Список типов данных, которые нужно подтянуть к списку блогов * * @return array('collection'=>array,'count'=>int) * * Old interface: GetBlogsByFilter($aFilter, $aOrder, $iPage, $iPerPage, $aAllowData = null) */ public function GetBlogsByFilter($aFilter, $iPage, $iPerPage, $aAllowData = null) { // Old interface compatibility if (!isset($aFilter['order']) && is_numeric($iPerPage) && is_numeric($aAllowData)) { $aOrder = $iPage; $iPage = $iPerPage; $iPerPage = $aAllowData; if (func_num_args() == 5) { $aAllowData = func_get_arg(4); } else { $aAllowData = null; } } else { $aOrder = isset($aFilter['order']) ? (array) $aFilter['order'] : array(); } if (is_null($aAllowData)) { $aAllowData = array('owner' => array(), 'relation_user'); } $sCacheKey = 'blog_filter_' . serialize($aFilter) . serialize($aOrder) . "_{$iPage}_{$iPerPage}"; if (false === ($data = E::ModuleCache()->Get($sCacheKey))) { $data = array('collection' => $this->oMapper->GetBlogsIdByFilterPerPage($aFilter, $aOrder, $iCount, $iPage, $iPerPage), 'count' => $iCount); E::ModuleCache()->Set($data, $sCacheKey, array('blog_update', 'blog_new'), 'P2D'); } if ($data['collection']) { $data['collection'] = $this->GetBlogsAdditionalData($data['collection'], $aAllowData); } return $data; }