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