Пример #1
0
 /**
  * Возвращает список блогов по фильтру
  *
  * @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;
 }