Esempio n. 1
0
 /**
  * Generate the content element
  */
 public function compile()
 {
     $id = $this->Input->get('items');
     $pageId = $this->Input->get('page');
     if (!$pageId) {
         $pageId = 0;
     }
     $limit = $this->perPage;
     $offset = $pageId * $limit;
     $newsletter = \Database::getInstance()->prepare("SELECT * FROM orm_avisota_message WHERE sendOn > 0 AND pid IN (" . implode(',', $this->avisota_categories) . ") ORDER BY sendOn DESC");
     if ($limit > 0) {
         $newsletter->limit($limit, $offset);
     }
     $newsletter = $newsletter->execute();
     $viewPage = $this->jumpTo ? $this->getPageDetails($this->avisota_view_page) : false;
     $viewOnlineCache = array();
     $newsletterDataSets = array();
     while ($newsletter->next()) {
         $newsletterData = $newsletter->row();
         $params = '/items/' . ($GLOBALS['TL_CONFIG']['disableAlias'] ? $newsletterData['id'] : $newsletterData['alias']);
         if ($viewPage) {
             $newsletterData['href'] = $this->generateFrontendUrl($viewPage->row(), $params);
         } else {
             if (!isset($viewOnlineCache[$newsletter->pid])) {
                 $category = \Database::getInstance()->prepare("SELECT * FROM orm_avisota_message_category WHERE id=?")->execute($newsletter->pid);
                 if ($category->next()) {
                     $viewOnlineCache[$newsletter->pid] = $this->Base->getViewOnlinePage($category);
                 } else {
                     $viewOnlineCache[$newsletter->pid] = false;
                 }
             }
             if ($viewOnlineCache[$newsletter->pid]) {
                 $newsletterData['href'] = $this->generateFrontendUrl($viewOnlineCache[$newsletter->pid]->row(), $params);
             } else {
                 $newsletterData['href'] = '';
             }
         }
         $newsletterDataSets[] = $newsletterData;
     }
     $template = new FrontendTemplate($this->avisota_list_template);
     $template->newsletters = $newsletterDataSets;
     $this->Template->list = $template->parse();
     $newsletter = \Database::getInstance()->prepare("SELECT COUNT(id) as `count` FROM orm_avisota_message WHERE sendOn > 0 AND pid IN (" . implode(',', $this->avisota_categories) . ")")->execute();
     $this->Template->limit = $limit;
     $this->Template->total = $newsletter->next() ? $newsletter->count : 0;
 }