Example #1
0
 public function listarchivesAction()
 {
     // Newsletter ID and Category ID
     $categoryID = $this->_getParam('categoryID');
     $newsletterID = $this->_getParam('newsletterID');
     $back_to_newsletter = !empty($newsletterID) ? "/ID/{$newsletterID}" : '';
     // Get the Newsletter ID to dont show
     $newsletterSelect = new NewsletterReleases();
     $select = $newsletterSelect->select()->setIntegrityCheck(false);
     $select->from('Newsletter_Releases')->join('Languages', 'L_ID = NR_LanguageID', array())->join('CategoriesIndex', 'CI_CategoryID = NR_CategoryID', array())->join('Newsletter_Models_Index', 'NMI_NewsletterModelID = NR_ModelID', array())->join('Newsletter_Models', 'NM_ID = NMI_NewsletterModelID', array())->where('CI_LanguageID = ?', Zend_Registry::get("languageID"))->where('NR_LanguageID = ?', Zend_Registry::get("languageID"))->where('NR_Online = ?', 1)->order('NR_Date DESC');
     $newsletterData = $newsletterSelect->fetchRow($select);
     $actualNewsletterOnline = $newsletterData['NR_ID'];
     if ($actualNewsletterOnline != '') {
         if (empty($categoryID) || $categoryID == '') {
             $categoryID = $newsletterData['NR_CategoryID'];
         }
         //get all releases exept the one online
         $releasesSelect = new NewsletterReleases();
         $select = $releasesSelect->select()->setIntegrityCheck(false);
         $select->from('Newsletter_Releases')->join('CategoriesIndex', 'CI_CategoryID = NR_CategoryID')->join('Status', 'Newsletter_Releases.NR_Online = Status.S_ID')->where('CI_LanguageID = ?', Zend_Registry::get("languageID"))->where('NR_LanguageID = ?', Zend_Registry::get("languageID"))->where('NR_Online = ?', 1)->where('NR_CategoryID = ?', $categoryID)->where('NR_ID <> ?', $actualNewsletterOnline)->order('NR_Date DESC');
         $releasesData = $releasesSelect->fetchAll($select);
         $this->view->assign('listArchives', $releasesData);
         $this->view->assign('subscribeLink', $this->view->baseUrl() . "/" . Cible_FunctionsCategories::getPagePerCategoryView($categoryID, 'subscribe', 8));
         $this->view->assign('unsubscribeLink', $this->view->baseUrl() . "/" . Cible_FunctionsCategories::getPagePerCategoryView($categoryID, 'unsubscribe', 8));
         //$this->view->assign('detailsRelease', $this->view->baseUrl()."/".Cible_FunctionsCategories::getPagePerCategoryView($categoryID, 'details_release', 8));
         $this->view->assign('detailsRelease', Cible_FunctionsCategories::getPagePerCategoryView($categoryID, 'details_release', 8));
         //$this->view->assign('back_to_release', Cible_FunctionsCategories::getPagePerCategoryView($categoryID, 'details_release', 8));
         $this->view->assign('back_to_release', $this->view->baseUrl() . "/" . Cible_FunctionsCategories::getPagePerCategoryView($categoryID, 'details_release', 8) . $back_to_newsletter);
         $this->view->assign('archivesLink', $this->view->baseUrl() . "/" . Cible_FunctionsCategories::getPagePerCategoryView($categoryID, 'list_archives', 8) . '/categoryID/' . $categoryID);
     } else {
         $this->view->assign('listArchives', array());
         $blockID = $this->_getParam('BlockID');
         $blockParams = Cible_FunctionsBlocks::getBlockParameters($blockID)->toArray();
         $newsletterCategoryID = $blockParams[0]['P_Value'];
         $this->view->assign('subscribeLink', $this->view->baseUrl() . "/" . Cible_FunctionsCategories::getPagePerCategoryView($newsletterCategoryID, 'subscribe', 8));
         $this->view->assign('unsubscribeLink', $this->view->baseUrl() . "/" . Cible_FunctionsCategories::getPagePerCategoryView($newsletterCategoryID, 'unsubscribe', 8));
         $this->view->assign('back_to_release', $this->view->baseUrl() . "/" . Cible_FunctionsCategories::getPagePerCategoryView($newsletterCategoryID, 'details_release', 8) . $back_to_newsletter);
         $this->view->assign('archivesLink', $this->view->baseUrl() . "/" . Cible_FunctionsCategories::getPagePerCategoryView($newsletterCategoryID, 'list_archives', 8) . '/categoryID/' . $newsletterCategoryID);
     }
 }
Example #2
0
 /**
  * Save and / or send email to the selected list.
  * Set the filter and the status of recipients.
  *
  * @return void
  */
 public function manageSendAction()
 {
     $this->view->title = "Gestion de l'envoie de l'infolettre";
     if ($this->view->aclIsAllowed('newsletter', 'manage', true)) {
         $blockID = (int) $this->_getParam('blockID');
         $pageID = (int) $this->_getParam('pageID');
         $newsletterID = (int) $this->_getParam('newsletterID');
         //Fetch data of the current newsletter
         $releaseSelect = new NewsletterReleases();
         $select = $releaseSelect->select()->where('NR_ID = ?', $newsletterID);
         $releaseData = $releaseSelect->fetchRow($select);
         $releaseDataArray = $releaseData->toArray();
         // Display data if newsletter exists
         if (count($releaseDataArray) > 0) {
             // generate the form
             $baseDir = $this->view->baseUrl();
             $cancelUrl = "/newsletter/index/edit/blockID/{$blockID}/pageID/{$pageID}/newsletterID/{$newsletterID}";
             $oDate = new Zend_Date($releaseDataArray['NR_MailingDateTimeScheduled'], 'fr');
             $listeID = (int) $this->_getParam('listeID');
             // List of filters with numbers of members
             $collectionsSelect = new NewsletterFilterCollectionsSet();
             $select = $collectionsSelect->select()->order('NFCS_Name');
             $collectionsData = $collectionsSelect->fetchAll($select);
             $collectionList = array();
             $arraySelect = array();
             foreach ($collectionsData as $collection) {
                 $members = $this->_countFilterMembers($collection['NFCS_ID']);
                 $nbMembers = count($members['members']);
                 $collectionList[$collection['NFCS_ID']] = $collection['NFCS_Name'] . ' (' . $nbMembers . ' dest.)';
                 $arraySelect[$collection['NFCS_ID']] = $members["selection"];
             }
             $releaseArrayMembers = array();
             $result = array();
             // Récupère les éléments d'une liste en particulier
             $planedDate = $oDate->toString('YYYY-MM-dd');
             $planedTime = $oDate->toString('HH:mm');
             // options to the form
             $form = new FormNewsletterManageSend(array('status' => $releaseDataArray['NR_Status'], 'planedDate' => $planedDate, 'planedTime' => $planedTime, 'baseDir' => $baseDir, 'cancelUrl' => $baseDir . $cancelUrl, 'filterList' => $collectionList));
             $db = Zend_Registry::get('db');
             if (!$listeID) {
                 $listeID = $releaseDataArray["NR_CollectionFiltersID"];
             }
             if ($listeID > 0) {
                 $result = $db->fetchAll($arraySelect[$listeID]);
             }
             $this->view->form = $form;
             $this->view->releaseData = $releaseDataArray;
             $this->view->rsDataMembers = $result;
             if ($releaseDataArray['NR_Status'] != 0) {
                 // List of members who already have recieved the newsletter.
                 $alreadyMembersRecievedSelect = new NewsletterReleasesMembers();
                 $select = $alreadyMembersRecievedSelect->select()->where('NRM_ReleaseID = ?', $releaseDataArray['NR_ID'])->order('NRM_DateTimeReceived');
                 $alreadyMembersRecievedData = $alreadyMembersRecievedSelect->fetchAll($select);
                 $i = 0;
                 $y = 0;
                 $cpt = 0;
                 $lastDate = "";
                 foreach ($alreadyMembersRecievedData as $alreadyMember) {
                     if ($lastDate == "") {
                         $lastDate = substr($alreadyMember['NRM_DateTimeReceived'], 0, 10);
                     }
                     if (substr($alreadyMember['NRM_DateTimeReceived'], 0, 10) != $lastDate) {
                         $endDate = $alreadyMember['NRM_DateTimeReceived'];
                         $dateTimeDiff = $this->get_time_difference($startDate, $endDate);
                         $time = $dateTimeDiff['hours'] . " heure(s):" . $dateTimeDiff['minutes'] . " minute(s):" . $dateTimeDiff['seconds'] . " seconde(s)";
                         $members[$y]['date'] = $lastDate;
                         $members[$y]['time'] = $time;
                         $members[$y]['count'] = $cpt;
                         $y++;
                         $i = 0;
                         $cpt = 0;
                     }
                     if ($i == 0) {
                         $startDate = $alreadyMember['NRM_DateTimeReceived'];
                         $lastDate = substr($alreadyMember['NRM_DateTimeReceived'], 0, 10);
                         $i++;
                     }
                     $cpt++;
                 }
                 if ($alreadyMembersRecievedData->count() > 0) {
                     $count = $alreadyMembersRecievedData->count() - 1;
                     $endDate = $alreadyMembersRecievedData[$count]['NRM_DateTimeReceived'];
                     $dateTimeDiff = $this->get_time_difference($startDate, $endDate);
                     $time = $dateTimeDiff['hours'] . " heure(s):" . $dateTimeDiff['minutes'] . " minute(s):" . $dateTimeDiff['seconds'] . " seconde(s)";
                     $members[$y]['date'] = $lastDate;
                     $members[$y]['time'] = $time;
                     $members[$y]['count'] = $cpt;
                     $this->view->members = $members;
                 } else {
                     $dateTimeDiff = $this->get_time_difference($releaseDataArray['NR_MailingDateTimeStart'], $releaseDataArray['NR_MailingDateTimeEnd']);
                     $time = $dateTimeDiff['hours'] . " heure(s):" . $dateTimeDiff['minutes'] . " minute(s):" . $dateTimeDiff['seconds'] . " seconde(s)";
                     $members[0]['date'] = substr($releaseDataArray['NR_MailingDateTimeStart'], 0, 10);
                     $members[0]['time'] = $time;
                     $members[0]['count'] = 0;
                 }
                 $this->view->members = $members;
             } else {
                 $this->view->members = "";
             }
             if ($this->_request->isPost()) {
                 $formData = $this->_request->getPost();
                 if ($form->isValid($formData)) {
                     $releaseData['NR_MailingDateTimeScheduled'] = $form->getValue('NR_MailingDate') . " " . $form->getValue('NR_MailingTime') . ":00";
                     $releaseData['NR_Status'] = $form->getValue('NR_Status');
                     $releaseData['NR_CollectionFiltersID'] = $form->getValue('NR_CollectionFiltersID');
                     $releaseData->save();
                     if ($formData['newsletter_send']) {
                         $this->_redirect("/newsletter/index/send-newsletter/newsletterID/{$newsletterID}");
                     } else {
                         $this->_redirect($cancelUrl);
                     }
                 } else {
                     $form->populate($formData);
                 }
             } else {
                 $form->populate($releaseData->toArray());
                 if ($releaseData['NR_Status'] == 0) {
                     $form->getElement('NR_Status')->setValue(3);
                 }
                 if ($listeID != "") {
                     $form->getElement('NR_CollectionFiltersID')->setValue($listeID);
                 }
                 $form->getElement('NR_MailingDate')->setValue(substr($releaseData['NR_MailingDateTimeScheduled'], 0, 10));
                 $form->getElement('NR_MailingTime')->setValue(substr($releaseData['NR_MailingDateTimeScheduled'], 10, 6));
             }
         }
     }
 }
Example #3
0
 function deleteAction()
 {
     $this->view->title = "'Suppression d'un article à une parution";
     $this->view->assign('isXmlHttpRequest', $this->_isXmlHttpRequest);
     $this->view->assign('success', false);
     if ($this->view->aclIsAllowed('newsletter', 'manage', true)) {
         // variables
         $articleID = $this->_getParam('articleID');
         $newsletterID = $this->_getParam('newsletterID');
         $return = "/newsletter/index/edit/newsletterID/{$newsletterID}";
         $this->view->return = $this->view->baseUrl() . $return;
         $newsletterArticleSelect = new NewsletterArticles();
         $select = $newsletterArticleSelect->select();
         $select->where('NA_ID = ?', $articleID);
         $newsletterArticleData = $newsletterArticleSelect->fetchRow($select);
         if (!$newsletterArticleData) {
             if ($this->_request->isPost()) {
                 $this->view->assign('success', true);
             }
             $this->view->assign('deleted', true);
             $this->view->assign('articleID', $articleID);
         } else {
             $this->view->assign('deleted', false);
             $this->view->newsletterArticle = $newsletterArticleData->toArray();
             if ($this->_request->isPost()) {
                 $del = $this->_request->getPost('delete');
                 if ($del && $newsletterArticleData) {
                     // delete index
                     // check if release is online
                     $releaseSelect = new NewsletterReleases();
                     $select = $releaseSelect->select()->where('NR_ID = ?', $newsletterArticleData['NA_ReleaseID']);
                     $releaseData = $releaseSelect->fetchRow($select);
                     $indexData['moduleID'] = 8;
                     $indexData['contentID'] = $newsletterArticleData['NA_ID'];
                     $indexData['languageID'] = $releaseData['NR_LanguageID'];
                     $indexData['action'] = 'delete';
                     Cible_FunctionsIndexation::indexation($indexData);
                     Cible_FunctionsGeneral::delFolder("../../{$this->_config->document_root}/data/images/newsletter/{$newsletterID}/{$articleID}");
                     // update position for all article higher
                     $newsletterArticlePosition = new NewsletterArticles();
                     $where = 'NA_PositionID > ' . $newsletterArticleData['NA_PositionID'];
                     $where .= ' AND NA_ReleaseID = ' . $newsletterArticleData['NA_ReleaseID'];
                     $where .= ' AND NA_ZoneID = ' . $newsletterArticleData['NA_ZoneID'];
                     $newsletterArticlePosition->update(array('NA_PositionID' => new Zend_Db_Expr('NA_PositionID - 1 ')), $where);
                     $newsletterArticleData->delete();
                     if (!$this->_isXmlHttpRequest) {
                         $this->_redirect($return);
                     } else {
                         $this->view->assign('success', true);
                         $this->view->assign('articleID', $articleID);
                     }
                 } else {
                     $this->_redirect($return);
                 }
             }
         }
     }
 }
Example #4
0
 function deleteAction()
 {
     // web page title
     $this->view->title = "Suppression d'un destinataire";
     if ($this->view->aclIsAllowed('newsletter', 'manage', true)) {
         // variables
         $pageID = (int) $this->_getParam('pageID');
         $blockID = (int) $this->_getParam('blockID');
         $newsletterID = (int) $this->_getParam('newsletterID');
         $recipientID = (int) $this->_getParam('recipientID');
         $return = "/newsletter/index/manage-recipients/blockID/{$blockID}/pageID/{$pageID}/newsletterID/{$newsletterID}";
         $this->view->return = $this->view->baseUrl() . $return;
         $profile = new Profile(2);
         $recipientDetails = $profile->getMemberDetails($recipientID);
         $this->view->recipient = $recipientDetails;
         if ($this->_request->isPost()) {
             $del = $this->_request->getPost('delete');
             if ($del) {
                 // search the category id of the release
                 $categorySelect = new NewsletterReleases();
                 $select = $categorySelect->select();
                 $select->where('NR_ID = ?', $newsletterID);
                 $categoryData = $categorySelect->fetchRow($select);
                 $categoryData = $categoryData->toArray();
                 if ($categoryData) {
                     $categories = explode(",", $recipientDetails['newsletter_categories']);
                     $searchID = array_search($categoryData['NR_CategoryID'], $categories, true);
                     $categories[$searchID] = "";
                     $categories = array_filter($categories, "is_numeric");
                     $val = implode(',', $categories);
                     $profile->updateMember($recipientID, array("newsletter_categories" => "{$val}"));
                 }
             }
             $this->_redirect($return);
         }
     }
 }