Exemplo n.º 1
0
 public function editCollectionAction()
 {
     if ($this->view->aclIsAllowed('newsletter', 'edit', true)) {
         $collectionID = $this->_getParam('collectionID');
         $baseDir = $this->view->baseUrl();
         $returnUrl = "/newsletter/filter/list-collection/";
         $form = new FormNewsletterFilterCollection(array('cancelUrl' => "{$baseDir}{$returnUrl}"));
         $this->view->assign('form', $form);
         $filterOptionsSelect = new NewsletterFilterProfilesFields();
         $select = $filterOptionsSelect->select();
         $filterOptionsData = $filterOptionsSelect->fetchAll($select)->toArray();
         $cpt = count($filterOptionsData);
         for ($i = 0; $i < $cpt; $i++) {
             $filterOptionsData[$i]['name'] = $this->view->getCibleText('newsletter_send_filter_' . $filterOptionsData[$i]['NFPF_Name']);
         }
         $this->view->assign('filterOptionsData', $filterOptionsData);
         if ($this->_request->isPost()) {
             $formData = $this->_request->getPost();
             if (array_key_exists('filterSet', $formData)) {
                 $filterSetArray = $formData['filterSet'];
                 $i = 1;
                 foreach ($filterSetArray as $key => $filterSet) {
                     $y = 1;
                     foreach ($filterSet as $keyFilter => $filter) {
                         if ($filter['filterSet'] != '0') {
                             $element = Newsletter_FilterController::getNewElement($filter['filterSet'], $y, $i, $filter['filterValue']);
                             $filterSetArray[$key][$keyFilter]['element'] = $element;
                             $y++;
                         } else {
                             unset($filterSetArray[$key][$keyFilter]);
                         }
                     }
                     if (count($filterSetArray[$key]) == 0) {
                         unset($filterSetArray[$key]);
                     }
                     $i++;
                 }
             } else {
                 $filterSetArray = array();
             }
             //$this->view->dump($filterSetArray);
             if ($form->isValid($formData)) {
                 $db = $this->_db;
                 $where = "NFCS_ID = {$collectionID}";
                 $db->update('NewsletterFilter_CollectionsSet', array('NFCS_Name' => $formData['collectionForm']['NFCS_Name']), $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);
                 }
                 foreach ($filterSetArray as $filterSet) {
                     $filterSetData = new NewsletterFilterFiltersSet();
                     $filterSetCreate = $filterSetData->createRow();
                     $filterSetCreate->save();
                     $filterSetID = $filterSetCreate->NFFS_ID;
                     $collectionFilterSetData = new NewsletterFilterCollectionsFiltersSet();
                     $collectionFilterSet = $collectionFilterSetData->createRow();
                     $collectionFilterSet->NFCFS_CollectionSetID = $collectionID;
                     $collectionFilterSet->NFCFS_FilterSetID = $filterSetID;
                     $collectionFilterSet->save();
                     foreach ($filterSet as $filter) {
                         $filterData = new NewsletterFilterFilters();
                         $filterCreate = $filterData->createRow();
                         $filterCreate->NFF_ProfileFieldName = $filter['filterSet'];
                         $filterCreate->NFF_FilterSetID = $filterSetID;
                         $filterCreate->NFF_Value = $filter['filterValue'];
                         $filterCreate->save();
                     }
                 }
                 $this->_redirect($returnUrl);
             } else {
                 $this->view->assign('filterSetArray', $filterSetArray);
             }
         } else {
             $collectionSelect = new NewsletterFilterCollectionsSet();
             $select = $collectionSelect->select();
             $select->where('NFCS_ID = ?', $collectionID);
             $collectionData = $collectionSelect->fetchRow($select)->toArray();
             $form->populate($collectionData);
             $filterSetSelect = new NewsletterFilterCollectionsFiltersSet();
             $select = $filterSetSelect->select()->setIntegrityCheck(false);
             $select->from('NewsletterFilter_CollectionsFiltersSet')->where('NFCFS_CollectionSetID = ?', $collectionID)->join('NewsletterFilter_Filters', 'NFF_FilterSetID = NFCFS_FilterSetID')->order('NFF_FilterSetID')->order('NFF_ID');
             $filterSetData = $filterSetSelect->fetchAll($select)->toArray();
             $i = 0;
             $y = 1;
             $filterSetID = 0;
             $filterSetArray = array();
             foreach ($filterSetData as $filterSet) {
                 if ($filterSetID != $filterSet['NFF_FilterSetID']) {
                     $filterSetID = $filterSet['NFF_FilterSetID'];
                     $i++;
                     $y = 1;
                 }
                 $filterSetArray[$i][$y]['filterSet'] = $filterSet['NFF_ProfileFieldName'];
                 $filterSetArray[$i][$y]['filterValue'] = $filterSet['NFF_Value'];
                 $filterSetArray[$i][$y]['element'] = Newsletter_FilterController::getNewElement($filterSet['NFF_ProfileFieldName'], $y, $i, $filterSet['NFF_Value']);
                 $y++;
             }
             $this->view->assign('filterSetArray', $filterSetArray);
         }
     }
 }