コード例 #1
0
ファイル: FilterController.php プロジェクト: anunay/stentors
 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);
         }
     }
 }
コード例 #2
0
ファイル: IndexController.php プロジェクト: anunay/stentors
 /**
  * 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));
             }
         }
     }
 }