/** * 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); } } }
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'); } }