public function getLastSentLocalized($sFormat = 'x') { if ($this->getLastSent() != null) { return LocaleUtil::localizeDate($this->getLastSent(), null, $sFormat); } return null; }
public function getCreatedAtLocalized($sFormat = ' %e. %B %Y') { if (Session::language() === 'en') { $sFormat = ' %e %B %Y'; } return LocaleUtil::localizeDate($this->created_at, null, $sFormat); }
/** send() * Description: * • This method is called when NewsletterMailer is instanciated * • All newsletter, sender and recipient info are ready * * @return boolean has_invalid email addresses */ public function send() { // Get newsletter email main template and template body and css by template name $oEmailTemplate = new Template('main', array(DIRNAME_TEMPLATES, 'newsletter')); $oEmailTemplate->replaceIdentifier('newsletter_template_css', new Template("{$this->oNewsletter->getTemplateName()}.css", array(DIRNAME_TEMPLATES, 'newsletter'))); // Parse links differently in text RichtextUtil::$USE_ABSOLUTE_LINKS = LinkUtil::isSSL(); $oEMailContent = RichtextUtil::parseStorageForFrontendOutput(stream_get_contents($this->oNewsletter->getNewsletterBody())); RichtextUtil::$USE_ABSOLUTE_LINKS = null; // Replace add surrounding (body.tmpl) before content if exists. Template needs to contain a newsletter_content identifier if (ResourceFinder::findResource(array(DIRNAME_TEMPLATES, NewsletterDetailWidgetModule::NEWSLETTER_DIRNAME, "{$this->oNewsletter->getTemplateName()}.body.tmpl")) !== null) { $oEmailTemplate->replaceIdentifier('newsletter_content', new Template("{$this->oNewsletter->getTemplateName()}.body", array(DIRNAME_TEMPLATES, NewsletterDetailWidgetModule::NEWSLETTER_DIRNAME)), null, Template::LEAVE_IDENTIFIERS); } $oEmailTemplate->replaceIdentifier('newsletter_content', $oEMailContent, null, Template::LEAVE_IDENTIFIERS); $oEmailTemplate->replaceIdentifier('subject', $this->oNewsletter->getSubject()); $oEmailTemplate->replaceIdentifier('language', $this->oNewsletter->getLanguageId()); $oEmailTemplate->replaceIdentifier('newsletter_link', LinkUtil::absoluteLink($this->oNewsletter->getDisplayLink())); $oEmailTemplate->replaceIdentifier('newsletter_date', LocaleUtil::localizeDate(null, $this->oNewsletter->getLanguageId())); $oEmailTemplate->replaceIdentifier('newsletter_timestamp', time()); // Process templates with each recipient, depending on whether recipient is object and object of Subscriber or string foreach ($this->aRecipients as $mRecipient) { $this->sendNewsletter($mRecipient, clone $oEmailTemplate); } return count($this->aInvalidEmails) === 0; }
public function getPublishAtFormatted($sLanguageId = null, $sFormatString = 'x') { if ($this->publish_at === null) { return null; } return LocaleUtil::localizeDate($this->publish_at, $sLanguageId, $sFormatString); }
public function getDateSentFormatted($sAddTimeFormat = null) { $sTime = LocaleUtil::localizeDate($this->date_sent); if ($sAddTimeFormat) { $sTime .= ' ' . $this->getDateSent($sAddTimeFormat); } return $sTime; }
public function testParseBackLongDateAsInGems() { $_SERVER['HTTP_ACCEPT_LANGUAGE'] = "en-gb,en;q=0.8,de-de;q=0.5,de-ch;q=0.3"; $sDate = "10.03.2008"; $iTimestamp = LocaleUtil::parseLocalizedDate($sDate, "de"); $this->assertSame(1205107200, $iTimestamp); $this->assertSame($sDate, LocaleUtil::localizeDate($iTimestamp, "de")); }
/** * renderFile() * @return string xhtml output */ public function renderFile() { $oOutput = new XHTMLOutput(XHTMLOutput::SETTING_HTML_4_TRANSITIONAL, true, null, $this->oNewsletter->getLanguageId()); $oOutput->render(); $oNewsletterTemplate = new Template('main_display', array(DIRNAME_TEMPLATES, 'newsletter'), false, true); $oNewsletterTemplate->replaceIdentifier('newsletter_template_css', new Template("{$this->oNewsletter->getTemplateName()}.css", array(DIRNAME_TEMPLATES, 'newsletter'))); $oNewsletterContent = RichtextUtil::parseStorageForFrontendOutput(stream_get_contents($this->oNewsletter->getNewsletterBody())); if (ResourceFinder::findResource(array(DIRNAME_TEMPLATES, NewsletterDetailWidgetModule::NEWSLETTER_DIRNAME, "{$this->oNewsletter->getTemplateName()}.body.tmpl")) !== null) { $oNewsletterTemplate->replaceIdentifier('newsletter_content', new Template("{$this->oNewsletter->getTemplateName()}.body", array(DIRNAME_TEMPLATES, NewsletterDetailWidgetModule::NEWSLETTER_DIRNAME)), null, Template::LEAVE_IDENTIFIERS); } $oNewsletterTemplate->replaceIdentifier('newsletter_content', $oNewsletterContent, null, Template::LEAVE_IDENTIFIERS); $oNewsletterTemplate->replaceIdentifier('language', $this->oNewsletter->getLanguageId()); if ($this->oMailing !== null) { $oNewsletterTemplate->replaceIdentifier('newsletter_date', LocaleUtil::localizeDate($this->oMailing->getDateSent(null)->getTimestamp(), $this->oNewsletter->getLanguageId())); $oNewsletterTemplate->replaceIdentifier('newsletter_timestamp', $this->oMailing->getDateSent(null)->getTimestamp()); } else { $oNewsletterTemplate->replaceIdentifier('newsletter_date', LocaleUtil::localizeDate($this->oNewsletter->getCreatedAt(null)->getTimestamp(), $this->oNewsletter->getLanguageId())); $oNewsletterTemplate->replaceIdentifier('newsletter_timestamp', $this->oNewsletter->getCreatedAt(null)->getTimestamp()); } $oNewsletterTemplate->replaceIdentifier('recipient', TranslationPeer::getString('wns.newsletter.recipient', $this->oNewsletter->getLanguageId())); $oNewsletterTemplate->replaceIdentifier('subject', $this->oNewsletter->getSubject()); $oNewsletterTemplate->render(); }
public function writeDate($oTemplateIdentifier) { $iTimestamp = false; if ($oTemplateIdentifier->hasParameter('timestamp')) { $iTimestamp = (int) $oTemplateIdentifier->getParameter('timestamp'); } else { if ($oTemplateIdentifier->hasParameter('format')) { $iTimestamp = DateTime::createFromFormat($oTemplateIdentifier->getParameter('format'), $oTemplateIdentifier->getParameter('date')); } } $sLocaleId = null; if ($oTemplateIdentifier->hasParameter('locale')) { $sLocaleId = $oTemplateIdentifier->getParameter('locale'); } return LocaleUtil::localizeDate($iTimestamp, $sLocaleId, $oTemplateIdentifier->getValue()); }
/** * renderCollapsibleDateTreeWidget() * * description: display collapsible date tree without link on year * include javascript file web/js/journal-collapsible-date-tree.js * @return Template object */ private function renderCollapsibleDateTreeWidget() { $iTreeWidgetLevels = Settings::getSetting('journal', 'display_journal_collapsible_tree_levels', 2); $oTemplate = $this->constructTemplate('widget_collapsible_date_tree'); if ($this->archiveIsActive()) { $sHref = LinkUtil::link($this->oPage->getLinkArray()); $oTemplate->replaceIdentifier('reset_archive_href', $sHref, null, Template::NO_HTML_ESCAPE); } $oItemPrototype = $this->constructTemplate('widget_collapsible_date_tree_item'); $sPreviousYear = null; $sPreviousMonth = null; $aStack = array($oTemplate); $cReduceToLevel = function ($iLevel) use(&$aStack) { while (count($aStack) > $iLevel) { $oPreviousTemplate = array_pop($aStack); $oCurrentTemplate = $aStack[count($aStack) - 1]; $oCurrentTemplate->replaceIdentifierMultiple('items', $oPreviousTemplate, null, Template::NO_NEW_CONTEXT); } }; $oPage = $this->oPage; $cOutput = function ($aDate, $sFormat, $bIsActive) use(&$aStack, $oItemPrototype, $oPage) { $oTemplate = clone $oItemPrototype; array_push($aStack, $oTemplate); foreach ($aDate as $sPeriod => $sValue) { $oTemplate->replaceIdentifier(strtolower($sPeriod), $sValue); } $oDate = new DateTime(); $oDate->setDate($aDate['Year'], @$aDate['Month'] ? $aDate['Month'] : 1, @$aDate['Day'] ? $aDate['Day'] : 1); $oTemplate->replaceIdentifier('full_name', LocaleUtil::localizeDate($oDate, null, $sFormat)); $aKeys = array_keys($aDate); $oTemplate->replaceIdentifier('name', $aDate[$aKeys[count($aKeys) - 1]]); $oTemplate->replaceIdentifier('level', count($aKeys)); $oTemplate->replaceIdentifier('link', LinkUtil::link($oPage->getFullPathArray(array_values($aDate)))); if ($bIsActive) { $oTemplate->replaceIdentifier('class_is_active', 'is_active'); } }; foreach ($this->createQuery()->filterByJournalId($this->aJournalIds)->findDistinctDates() as $aDate) { $oCurrentTemplate = null; // Make year template whenever the year changes and add it to main template if ($aDate['Year'] !== $sPreviousYear) { $cReduceToLevel(1); $sPreviousYear = $aDate['Year']; $cOutput(array('Year' => $aDate['Year']), 'Y', $this->iYear === $aDate['Year']); } // Render 2nd level months if ($iTreeWidgetLevels === 1) { continue; } // Make month template whenever month changes (or year, because it can happen that two months are the same when a year changes) // Add it to year template if ($aDate['Year'] !== $sPreviousYear || $aDate['Month'] !== $sPreviousMonth) { $cReduceToLevel(2); $sPreviousMonth = $aDate['Month']; $cOutput(array('Year' => $aDate['Year'], 'Month' => $aDate['Month']), 'B', $this->iMonth === $aDate['Month']); } // Render 3rd level days if ($iTreeWidgetLevels === 2) { continue; } $cReduceToLevel(3); $cOutput(array('Year' => $aDate['Year'], 'Month' => $aDate['Month'], 'Day' => $aDate['Day']), 'x', $this->iDay === $aDate['Day']); } $cReduceToLevel(1); return $oTemplate; }