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();
 }