public function getArticleList($tag = null, $year = null, $month = null) { $list = NewsArticle::get()->filter('ParentID', $this->ID); // filter by tag? if ($tag) { $list = $list->filter('Tags.ID:exactMatch', $tag); } // filter buy date range? $year = (int) $year; $month = (int) $month; if ($year && $month) { $beginDate = "{$year}-{$month}-01 00:00:00"; $endDate = date('Y-m-d H:i:s', strtotime("{$year}-{$month}-1 00:00:00 +1 month")); $list = $list->where("(\"NewsArticle\".\"PublishDate\">='{$beginDate}' AND \"NewsArticle\".\"PublishDate\"<'{$endDate}')"); } elseif ($year) { $beginDate = "{$year}-01-01 00:00:00"; $endDate = "{$year}-12-31 23:59:59"; $list = $list->where("(\"NewsArticle\".\"PublishDate\">='{$beginDate}' AND \"NewsArticle\".\"PublishDate\"<'{$endDate}')"); } return $list; }
public function rss() { $SiteConfig = SiteConfig::current_site_config(); $rss = new RSSFeed(NewsArticle::get(), $this->Link(), $SiteConfig->Title); return $rss->outputToBrowser(); }
/** * RelatedArticles * Returns a list of articles that share the same tags as this one * @param Int $limit * @return String **/ public function RelatedArticles($limit = null) { $tagIDs = $this->Tags()->column('ID'); if (count($tagIDs)) { return NewsArticle::get()->filter("Tags.ID:exactMatch", $tagIDs)->exclude('ID', $this->ID); } }
function Rss() { $parent = $this->data()->ID; $objects = NewsArticle::get()->filter('ParentID', $parent)->sort('LastEdited DESC')->limit(10); $rss = new RSSFeed($objects, $this->data()->Link(), _t('News.RSSTITLE', "10 most recent news"), "", "Title", "Content"); $this->response->addHeader('Content-Type', 'application/rss+xml'); return $rss->outputToBrowser(); }
function PaginatedPages() { $list = new PaginatedList(NewsArticle::get()->filter("ParentID", $this->ID), $this->request); $list->setPageLength(10); return $list; }
/** * We do not want to use NewsHolder->SubSections because this splits the paginations into * the categories the articles are in which means the pagination will not work or will display * multiple times * * @return Array */ public function TotalChildArticles($number = null) { if (!$number) { $number = $this->numberToDisplay; } $start = isset($_REQUEST['start']) ? (int) $_REQUEST['start'] : 0; if ($start < 0) { $start = 0; } $articles = NewsArticle::get('NewsArticle', '', '"OriginalPublishedDate" DESC, "ID" DESC', '', $start . ',' . $number)->filter(array('ID' => $this->getDescendantIDList())); $entries = PaginatedList::create($articles); $entries->setPaginationFromQuery($articles->dataQuery()->query()); return $entries; }