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); } }
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); } }