Ejemplo n.º 1
0
 public function toArray(SxCms_Page_Pageform $item)
 {
     return array('page_id' => (int) $item->getPageid(), 'pageform_id' => (int) $item->getPageformid());
 }
Ejemplo n.º 2
0
 public function editAction()
 {
     SxCms_Acl::requireAcl('pageform', 'pageform.edit');
     $system = new Zend_Session_Namespace('System');
     if ((int) $this->_getParam('id', 0) != 0) {
         $pageproxy = new SxCms_Page_Proxy();
         $pages = $pageproxy->getAll();
         $pagesWithFormProxy = new SxCms_Page_Pageform_Proxy();
         $pageWithForm = array();
         foreach ($pagesWithFormProxy->getAll(false) as $pwf) {
             $pageWithForm[] = $pwf->getPageid();
         }
         $this->view->pageWithForm = $pageWithForm;
         $this->view->pages = $pages;
         $pageformProxy = new SxModule_Pageform_Proxy();
         $item = $pageformProxy->getById((int) $this->_getParam('id'), $system->lng);
         $tsl = $item->getTsl();
         $this->view->tsl = $tsl;
         $cache = Zend_Registry::get('cache');
         $cache->clean(Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG, array('SxModule_Pageform_Id' . $item->getId()));
         if ($this->getRequest()->isPost()) {
             $oldPageform = $item;
             $fields = $this->preprocessFields();
             $item = $this->mapFieldsToObjects($fields, (int) $this->_getParam('id'));
             //var_dump($item->getField());die();
             # Opslaan nieuwe en oude data
             $validator = new SxModule_Pageform_Validator();
             if ($validator->validate($item)) {
                 $item->save(array('pf_name', 'pf_content', 'pf_mailoption', 'pf_mailto', 'pf_captcha'));
                 $pageformtsl = $item->getTsl($system->lng);
                 $pageformtsl->save(array('pageform_id', 'language', 'name', 'content', 'active', 'confirm', 'confirmto', 'confirmsubject', 'confirmcontent'));
                 #verwijderen paginas van de form
                 $pages = new SxCms_Page_Pageform();
                 $pages->deleteByPageformId($item->getId());
                 # opslaan nieuwe pagina's
                 foreach ($item->getPages() as $page) {
                     $pages->setPageid($page)->setPageformid($item->getId())->save();
                 }
                 $f = 0;
                 foreach ($item->getField() as $field) {
                     $f++;
                     $field->setPageformId($item->getId())->setPlace($f)->save(array('pff_pageform_id', 'pff_key', 'pff_field_type', 'pff_validation', 'pff_place'));
                     $field->getTsl()->setFieldId($field->getId())->setPlace($f)->setLanguage($system->lng)->save(array('pfft_field_id', 'pfft_language', 'pfft_name', 'pfft_place'));
                     $fm = 0;
                     foreach ($field->getMeta() as $meta) {
                         $fm++;
                         $meta->setFieldId($field->getId())->setPlace($fm)->save(array('pffm_field_id', 'pffm_place'));
                         $meta->getTsl()->setMetaId($meta->getId())->setLanguage($system->lng)->save(array('pffm_tsl_meta_id', 'pffm_tsl_language', 'pffm_tsl_name', 'pffm_tsl_value'));
                     }
                 }
                 # VERWIJDER VERWIJDERDE VELDEN
                 $removeFields = array();
                 $removeMeta = array();
                 $oldFields = $oldPageform->getField();
                 $newFields = $item->getField();
                 $i = 0;
                 $j = 0;
                 foreach ($oldFields as $oldField) {
                     $i++;
                     $removeFields[$i] = $oldField;
                     foreach ($newFields as $newField) {
                         if ($oldField->getId() == $newField->getId()) {
                             unset($removeFields[$i]);
                             foreach ($oldField->getMeta() as $oldMeta) {
                                 $j++;
                                 $removeMeta[$j] = $oldMeta;
                                 foreach ($newField->getMeta() as $newMeta) {
                                     if ($oldMeta->getId() == $newMeta->getId()) {
                                         unset($removeMeta[$j]);
                                     }
                                 }
                             }
                         }
                     }
                 }
                 var_dump('--- REMOVE FIELDS ---');
                 var_dump($removeFields);
                 var_dump('--- REMOVE META ---');
                 var_dump($removeMeta);
                 foreach ($removeFields as $field) {
                     $field->delete();
                     $field->getTsl()->delete();
                     foreach ($field->getMeta() as $meta) {
                         $meta->delete();
                         $meta->getTsl()->delete();
                     }
                 }
                 foreach ($removeMeta as $meta) {
                     $meta->delete();
                     $meta->getTsl()->delete();
                 }
                 $cache = Zend_Registry::get('cache');
                 $cache->clean(Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG, array('SxModule_Pageform_Id' . $item->getId(), 'SxModule_Pageform_getAll', 'SxModule_Pageform_Field', 'SxModule_Pageform_Field_Tsl', 'SxModule_Pageform_Field_Meta', 'SxModule_Pageform_Field_Meta_Tsl', 'SxModule_Pageform_Status', 'SxModule_Pageform_Forward'));
                 $flashMessenger = $this->_helper->getHelper('FlashMessenger');
                 $flashMessenger->addMessage($this->admin_tmx->_('itemedited'));
                 $this->_helper->redirector->gotoSimple('index', 'pageform');
             }
         }
         $this->view->item = $item;
         $this->view->messages = Sanmax_MessageStack::getInstance('SxModule_Pageform');
     } else {
         $flashMessenger = $this->_helper->getHelper('FlashMessenger');
         $flashMessenger->addMessage($this->admin_tmx->_('itemedited'));
         $this->_helper->redirector->gotoSimple('index', 'pageform');
     }
 }