コード例 #1
0
 /**
  * Generate the content element
  */
 public function compile()
 {
     $id = $this->Input->get('items');
     $newsletter = \Database::getInstance()->prepare("SELECT * FROM orm_avisota_message WHERE (id=? OR alias=?) AND pid IN (" . implode(',', $this->avisota_categories) . ")")->execute($id, $id);
     if ($newsletter->next()) {
         $category = \Database::getInstance()->prepare("SELECT * FROM orm_avisota_message_category WHERE id=?")->execute($newsletter->pid);
         if ($category->next()) {
             $newsletter->template_html = $this->avisota_reader_template;
             $this->Template->newsletter = $newsletter->row();
             $this->Template->html = $this->AvisotaNewsletterContent->generateHtml($newsletter, $category, false);
         }
     }
 }
コード例 #2
0
 /**
  * Get singleton instance.
  */
 public static function getInstance()
 {
     if (self::$instance === null) {
         self::$instance = new AvisotaNewsletterContent();
     }
     return self::$instance;
 }
コード例 #3
0
 public function run()
 {
     // user have to be authenticated
     $this->User->authenticate();
     // read session data
     $sessionData = $this->Session->get('AVISOTA_PREVIEW');
     // get preview mode
     if ($this->Input->get('mode')) {
         $sessionData['mode'] = $this->Input->get('mode');
     }
     // fallback preview mode
     if (!$sessionData['mode']) {
         $sessionData['mode'] = NL_HTML;
     }
     /*
     // get personalized state
     if ($this->Input->get('personalized'))
     {
     	$arrSession['personalized'] = $this->Input->get('personalized');
     }
     
     // fallback personalized state
     if (!$arrSession['personalized'])
     {
     	$arrSession['personalized'] = 'anonymous';
     }
     */
     // store session data
     $this->Session->set('AVISOTA_PREVIEW', $sessionData);
     // find the newsletter
     $id = $this->Input->get('id');
     $newsletter = \Database::getInstance()->prepare("\n\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t*\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\torm_avisota_message\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\tid=?")->execute($id);
     if (!$newsletter->next()) {
         $this->log('Newsletter ID ' . $id . ' does not exists!', 'AvisotaNewsletterPreview', TL_ERROR);
         $this->redirect('contao/main.php?act=error');
     }
     // find the newsletter category
     $category = \Database::getInstance()->prepare("\n\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t*\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\torm_avisota_message_category\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\tid=?")->execute($newsletter->pid);
     if (!$category->next()) {
         $this->log('Category ID ' . $newsletter->pid . ' does not exists!', 'AvisotaNewsletterPreview', TL_ERROR);
         $this->redirect('contao/main.php?act=error');
     }
     // build the recipient data array
     $recipientData = $this->Base->getPreviewRecipient();
     $this->Static->set($category, $newsletter, $recipientData);
     // generate the preview
     switch ($sessionData['mode']) {
         case NL_HTML:
             header('Content-Type: text/html; charset=utf-8');
             echo $this->replaceInsertTags($this->Content->prepareBeforeSending($this->Content->generateHtml($newsletter, $category, $sessionData['personalized'])));
             exit(0);
         case NL_PLAIN:
             header('Content-Type: text/plain; charset=utf-8');
             echo $this->replaceInsertTags($this->Content->prepareBeforeSending($this->Content->generatePlain($newsletter, $category, $sessionData['personalized'])));
             exit(0);
         default:
             $this->log('Unsupported newsletter preview mode ' . var_export($sessionData['mode']) . '!', 'AvisotaNewsletterPreview', TL_ERROR);
             $this->redirect('contao/main.php?act=error');
     }
 }
コード例 #4
0
 /**
  * Generate a newsletter
  *
  * @param object
  */
 public function generate(Database_Result $pageResultSet)
 {
     // Define the static URL constants
     define('TL_FILES_URL', $pageResultSet->staticFiles != '' && !$GLOBALS['TL_CONFIG']['debugMode'] ? $pageResultSet->staticFiles . TL_PATH . '/' : '');
     define('TL_SCRIPT_URL', $pageResultSet->staticSystem != '' && !$GLOBALS['TL_CONFIG']['debugMode'] ? $pageResultSet->staticSystem . TL_PATH . '/' : '');
     define('TL_PLUGINS_URL', $pageResultSet->staticPlugins != '' && !$GLOBALS['TL_CONFIG']['debugMode'] ? $pageResultSet->staticPlugins . TL_PATH . '/' : '');
     $this->import('AvisotaNewsletterContent', 'Content');
     // force all URLs absolute
     $GLOBALS['TL_CONFIG']['forceAbsoluteDomainLink'] = true;
     $newsletterId = $this->Input->get('item') ? $this->Input->get('item') : $this->Input->get('items');
     $newsletterContent = $this->Content->generateOnlineNewsletter($newsletterId);
     if ($newsletterContent) {
         header('Content-Type: text/html; charset=utf-8');
         echo $newsletterContent;
         exit;
     }
     $this->redirect($this->generateFrontendUrl($this->getPageDetails($pageResultSet->jumpBack ? $pageResultSet->jumpBack : $pageResultSet->pid)->row()));
 }
コード例 #5
0
 /**
  * Generate the content text for this newsletter.
  *
  * @return string
  */
 public function generateContentText($area)
 {
     if (!$this->theme instanceof AvisotaNewsletterTheme) {
         throw new Exception('A newsletter need a theme!');
     }
     AvisotaStatic::pushNewsletter($this);
     $content = '';
     if (isset($this->contentArray[$area])) {
         foreach ($this->contentArray[$area] as $element) {
             $content .= AvisotaNewsletterContent::getInstance()->generateNewsletterElement($element, NL_PLAIN);
         }
     }
     // reset static information
     AvisotaStatic::popNewsletter();
     return $content;
 }