public function deleteCollectionAction() { if ($this->view->aclIsAllowed('newsletter', 'edit', true)) { $returnUrl = "/newsletter/filter/list-collection/"; $collectionID = $this->_getParam('collectionID'); if ($this->_request->isPost()) { $del = $this->_request->getPost('delete'); if ($del && $collectionID > 0) { $collectionDelete = new NewsletterFilterCollectionsSet(); $where = "NFCS_ID = {$collectionID}"; $collectionDelete->delete($where); $filterSetSelect = new NewsletterFilterCollectionsFiltersSet(); $select = $filterSetSelect->select(); $select->where('NFCFS_CollectionSetID = ?', $collectionID); $filterSetData = $filterSetSelect->fetchAll($select)->toArray(); foreach ($filterSetData as $filterSet) { $filterSetDelete = new NewsletterFilterFiltersSet(); $where = 'NFFS_ID = ' . $filterSet['NFCFS_FilterSetID']; $filterSetDelete->delete($where); $filterDelete = new NewsletterFilterFilters(); $where = 'NFF_FilterSetID = ' . $filterSet['NFCFS_FilterSetID']; $filterDelete->delete($where); $collectionFilterSetDelete = new NewsletterFilterCollectionsFiltersSet(); $where = 'NFCFS_FilterSetID = ' . $filterSet['NFCFS_FilterSetID']; $collectionFilterSetDelete->delete($where); } } $this->_redirect($returnUrl); } else { $collectionSelect = new NewsletterFilterCollectionsSet(); $select = $collectionSelect->select(); $select->where('NFCS_ID = ?', $collectionID); $collectionData = $collectionSelect->fetchRow($select)->toArray(); $this->view->assign('collection', $collectionData); } } }
/** * 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)); } } } }