/** * fetchSectionItems - returns gets array of items from category from specyfic namespace. * @param $sCategoryDBKey int category namespace * @param $mNamespace mixed: int namespace or array of int for category query * @return array */ protected function fetchSectionItems($mNamespace = NS_MAIN, $negative = false) { $sCategoryDBKey = $this->categoryTitle->getDBkey(); // Check if page is a redirect if ($this->categoryTitle->isRedirect()) { $oTmpArticle = new Article($this->categoryTitle); if (!is_null($oTmpArticle)) { $rdTitle = $oTmpArticle->getRedirectTarget(); if (!is_null($rdTitle) && $rdTitle->getNamespace() == NS_CATEGORY) { $sCategoryDBKey = $rdTitle->getDBkey(); } } } if (!is_array($mNamespace)) { $mNamespace = (int) $mNamespace; } else { $mNamespace = implode(',', $mNamespace); } switch ($this->getSortType()) { case 'mostvisited': $res = CategoryDataService::getMostVisited($sCategoryDBKey, $mNamespace, false, $negative); //FB#26239 - fall back to alphabetical order if most visited data is empty return !empty($res) ? $res : CategoryDataService::getAlphabetical($sCategoryDBKey, $mNamespace, $negative); case 'alphabetical': return CategoryDataService::getAlphabetical($sCategoryDBKey, $mNamespace, $negative); case 'recentedits': return CategoryDataService::getRecentlyEdited($sCategoryDBKey, $mNamespace, $negative); } return array(); }
/** * Returns image or snippet for the category on id basis. * Uses in modified getArticle * * @param $iCategoryId int category pageId * @return array */ protected function getCategoryImageOrSnippet($iCategoryId) { $title = Title::newFromID($iCategoryId); $sCategoryDBKey = $title->getDBKey(); // tries to get image from images in category $result = CategoryDataService::getAlphabetical($sCategoryDBKey, NS_FILE, 1); if (!empty($result)) { $counter = 0; foreach ($result as $item) { if ($counter > F::App()->wg->maxCategoryExhibitionSubcatChecks) { break; } $imageServing = new ImageServing(array($item['page_id']), $this->thumbWidth, array("w" => $this->thumbWidth, "h" => $this->thumbHeight)); $itemTitle = Title::newFromID($item['page_id']); $image = wfFindFile($itemTitle); if (!empty($image)) { $imageSrc = wfReplaceImageServer($image->getThumbUrl($imageServing->getCut($image->width, $image->height) . "-" . $image->getName())); return array('imageUrl' => (string) $imageSrc, 'snippetText' => ''); } $counter++; } } // if no images found, tries to get image or snippet from artice unset($result); $result = CategoryDataService::getAlphabetical($sCategoryDBKey, NS_MAIN, 10); if (!empty($result)) { $counter = 0; $snippetText = ''; $imageUrl = ''; foreach ($result as $item) { if ($counter > F::App()->wg->maxCategoryExhibitionSubcatChecks) { break; } $imageUrl = $this->getImageFromPageId($item['page_id']); if (!empty($imageUrl)) { break; } if (empty($snippetText)) { $snippetService = new ArticleService($item['page_id']); $snippetText = $snippetService->getTextSnippet(); } $counter++; } return array('imageUrl' => $imageUrl, 'snippetText' => $snippetText); } else { return array('imageUrl' => '', 'snippetText' => ''); } }