public function renderFile() { $oDocument = new DOMDocument(); $oRoot = $oDocument->createElement("rss"); $oRoot->setAttribute('version', "2.0"); $oDocument->appendChild($oRoot); $oChannel = $oDocument->createElement("channel"); /** * @todo parametrize the argument */ $oQuery = FrontendJournalEntryQuery::create()->mostRecentFirst()->limit(10); if ($this->aJournalIds) { $oQuery->filterByJournalId($this->aJournalIds); } self::addSimpleAttribute($oDocument, $oChannel, 'title', $this->oJournalPage->getPageTitle()); self::addSimpleAttribute($oDocument, $oChannel, 'description', $this->oJournalPage->getDescription()); self::addSimpleAttribute($oDocument, $oChannel, 'link', LinkUtil::absoluteLink(LinkUtil::link($this->oJournalPage->getFullPathArray(), 'FrontendManager'), null, LinkUtil::isSSL())); self::addSimpleAttribute($oDocument, $oChannel, 'language', Session::language()); self::addSimpleAttribute($oDocument, $oChannel, 'ttl', "15"); $oRoot->appendChild($oChannel); $aJournalEntries = $oQuery->find(); foreach ($aJournalEntries as $oJournalEntry) { $oItem = $oDocument->createElement('item'); foreach ($oJournalEntry->getRssAttributes($this->aJournalIds ? $this->oJournalPage : null) as $sAttributeName => $mAttributeValue) { self::attributeToNode($oDocument, $oItem, $sAttributeName, $mAttributeValue); } $oChannel->appendChild($oItem); } print $oDocument->saveXML(); }
private function renderRecentJournalEntryTeaser($mJournalId) { $oJournalEntry = FrontendJournalEntryQuery::create()->filterByJournalId($mJournalId)->mostRecentFirst()->findOne(); if ($oJournalEntry === null) { return null; } $oTemplate = $this->constructTemplate('journal_entry_teaser'); $sHref = LinkUtil::link($oJournalEntry->getLink($this->oJournalPage)); $oTemplate->replaceIdentifier('title', TagWriter::quickTag('a', array('href' => $sHref), $oJournalEntry->getTitle())); $oTemplate->replaceIdentifier('link_to_detail', $sHref); $oTemplate->replaceIdentifier('publish_at', $oJournalEntry->getPublishAt('U')); $oTemplate->replaceIdentifier('user_name', $oJournalEntry->getUserRelatedByCreatedBy()->getFullName()); $sTextShort = RichtextUtil::parseStorageForFrontendOutput($oJournalEntry->getTextShort()); $oTemplate->replaceIdentifier('text_short', $sTextShort); $oTemplate->replaceIdentifier('text_short_truncated', StringUtil::truncate(strip_tags($sTextShort), 300)); return $oTemplate; }
private function addChildrenToVirtualNavigationItem($oNavigationItem) { $aData = $oNavigationItem->getData(); $sDateNavigationItemClass = get_class($oNavigationItem); // Append virtual navigation items for months, days, journal entries and comment // Months if ($oNavigationItem->getType() === 'journal-year') { list($aJournalIds, $iYear) = $aData; foreach (FrontendJournalEntryQuery::create()->findAvailableMonthsByJournalId($aJournalIds, $iYear) as $iMonth) { $oItem = new $sDateNavigationItemClass('journal-month', $iMonth, TranslationPeer::getString('wns.journal.month', null, $iMonth, array('year' => $iYear, 'month' => $iMonth)), null, array($aJournalIds, $iYear, $iMonth)); $oItem->bIsIndexed = false; $oNavigationItem->addChild($oItem); } } else { if ($oNavigationItem->getType() === 'journal-month') { // Days list($aJournalIds, $iYear, $iMonth) = $aData; foreach (FrontendJournalEntryQuery::create()->findAvailableDaysByJournalId($aJournalIds, $iYear, $iMonth) as $iDay) { $oItem = new $sDateNavigationItemClass('journal-day', $iDay, TranslationPeer::getString('wns.journal.day', null, $iDay, array('year' => $iYear, 'month' => $iMonth, 'day' => $iDay)), null, array($aJournalIds, $iYear, $iMonth, $iDay)); $oItem->bIsIndexed = false; $oNavigationItem->addChild($oItem); } } else { if ($oNavigationItem->getType() === 'journal-day') { // Journal entries list($aJournalIds, $iYear, $iMonth, $iDay) = $aData; foreach (FrontendJournalEntryQuery::create()->filterByDate($iYear, $iMonth, $iDay)->filterByJournalId($aJournalIds)->find() as $oEntry) { $oItem = new VirtualNavigationItem('journal-entry', $oEntry->getSlug(), $oEntry->getTitle(), null, $oEntry); $oNavigationItem->addChild($oItem); } } else { if ($oNavigationItem->getType() === 'journal-entry') { // Comments $oAddCommentItem = new HiddenVirtualNavigationItem('journal-add_comment', 'add_comment', TranslationPeer::getString('journal.comment.add'), null, $oNavigationItem->getData()); $oAddCommentItem->bIsIndexed = false; $oNavigationItem->addChild($oAddCommentItem); } } } } }
private function createQuery() { return $this->bIsPreview ? JournalEntryQuery::create() : FrontendJournalEntryQuery::create(); }