public function addAboutAction()
 {
     $params = $this->_getParams();
     /**
      * Savoir si on crée un set neuf ou si l'on souhaite partir du set actuel
      */
     if (empty($params['scratch'])) {
         $params['scratch'] = false;
     }
     try {
         $form = new Form_Unlog_Backend_About_About_Add();
         $formName = "Form_Unlog_Backend_About_About_Add_";
         $locales = new Application_Model_DbTable_Locale_Language();
         if (!$params['scratch'] && empty($params[$formName . 'Submit'])) {
             $latest = Application_Model_About_About_Multilang::getLatest();
             $params[$formName . 'Date'] = $latest->getDate()->toString("dd/MM/yyyy hh:mm");
             $params[$formName . 'Active'] = $latest->getActive();
             foreach ($locales->getList() as $locale) {
                 $params[$formName . 'Text_' . $locale] = $latest->getText($locale);
             }
             $form->populate($params);
         } elseif (!empty($params[$formName . 'Submit']) && !$form->isValid($params)) {
             $form->populate($params);
         } elseif (!empty($params[$formName . 'Submit']) && $form->isValid($params)) {
             $data = new Application_Model_About_About_Writer_Data($params[$formName . 'Date'], $params[$formName . 'Active']);
             foreach ($params as $key => $param) {
                 if (preg_match("#^{$formName}Text_#", $key)) {
                     $localeCode = substr($key, strlen($formName . "Text_"));
                     $data->addLocale($localeCode, $params[$formName . 'Text_' . $localeCode]);
                 }
             }
             $writer = new Application_Model_About_About_Writer();
             $writer->insert($data);
             $this->_forward("about", "about", "unlog-backend");
         }
         $this->view->form = $form;
         $this->view->resources = Application_Model_Resources::get(array("returnButton" => "img_button_return_png"));
     } catch (Zend_Exception $e) {
         throw new Zend_Controller_Action_Exception("Error in Action : unlog-backend | about | about", null, $e);
     }
 }
Example #2
0
 public function insert(Application_Model_About_About_Writer_Data $data)
 {
     try {
         $this->_aboutAboutTable->getAdapter()->beginTransaction();
         $this->_aboutAboutTable->insert(array("date" => $data->getDate()->toString('yyyy-MM-dd hh:mm:ss'), "active" => $data->getActive()));
         $articleId = $this->_aboutAboutTable->lastInsertId();
         $locales = $data->getLocales();
         if (!empty($locales)) {
             foreach ($locales as $locale => $content) {
                 if (!$this->_localeLanguageTable->exists($locale)) {
                     throw new Application_Model_Exception("{$locale} is not in DB");
                 }
                 $this->_aboutAboutTranslateTable->insertRow($locale, $articleId, $content);
             }
         }
         $this->_aboutAboutTable->getAdapter()->commit();
     } catch (Zend_Exception $e) {
         $this->_aboutAboutTable->getAdapter()->rollBack();
         throw new Application_Model_Exception("Can't insert about", null, $e);
     }
 }