예제 #1
0
 /**
  * Save entity
  *
  * @param Cms_Model_MenuItem $item
  * @param string $language
  */
 public function save(Cms_Model_MenuItem $item, $language = null, $dontSaveRoute = false)
 {
     $data = array();
     $this->_entityToRow($item, $data);
     $id = $item->get_id();
     if (!isset($id) || $id <= 0) {
         unset($data['id']);
         $id = $this->_dbTable->insert($data);
         $item->set_id($id);
     } else {
         //if language is defined, save just untraslated strings
         if ($language && $language != HCMS_Utils::getDefaultLocale()) {
             foreach (self::$_translatedFields as $field) {
                 unset($data[$field]);
             }
         }
         $this->_dbTable->update($data, array('id = ?' => $id));
     }
     //save in translation table
     if ($language) {
         $this->_saveTranslation('cms_menu_item', $item->get_id(), $item, self::$_translatedFields, $language);
         if ($item->get_route() != '' && !$dontSaveRoute) {
             $route = new Cms_Model_Route();
             $this->_parseParams(isset($data['params']) ? $data['params'] : "", $item);
             $this->_parseParams($item->get_params_old() != '' ? $item->get_params_old() : "", $item, true);
             $paramsOld = $item->get_params_old();
             if (isset($paramsOld['page_id']) && $paramsOld['page_id'] == '') {
                 unset($paramsOld['page_id']);
             }
             $item->set_params_old($paramsOld);
             if (!Cms_Model_RouteMapper::getInstance()->findByPath($item->get_path(), $item->get_application_id(), $route, $item->get_params_old(), $language)) {
                 $route->set_lang($language)->set_application_id($item->get_application_id())->set_name($item->get_name())->set_path($item->get_path())->set_page_id($item->get_page_id_new())->set_uri($item->get_route_uri())->set_params($this->unsetParamsPageId($item->get_params()));
                 Cms_Model_RouteMapper::getInstance()->save($route);
             } else {
                 if ($route->get_uri() != $item->get_route_uri() || $route->get_page_id() != $item->get_page_id_new() || $this->unsetParamsPageId($item->get_params()) != $this->unsetParamsPageId($item->get_params_old())) {
                     $route->set_uri($item->get_route_uri());
                     $route->set_page_id($item->get_page_id_new());
                     $route->set_params($this->unsetParamsPageId($item->get_params()));
                     Cms_Model_RouteMapper::getInstance()->save($route);
                 }
             }
         }
     }
     $this->cleanCache();
 }
예제 #2
0
 /**
  * Save entity
  *
  * @param Cms_Model_Category $category
  */
 public function save(Cms_Model_Category $category, $language = null)
 {
     $data = array();
     $this->_entityToRow($category, $data);
     $id = $category->get_id();
     if (!isset($id) || $id <= 0) {
         unset($data['id']);
         $id = $this->_dbTable->insert($data);
         $category->set_id($id);
     } else {
         //if language is defined, save just untraslated strings
         if ($language && $language != HCMS_Utils::getDefaultLocale()) {
             foreach (self::$_translatedFields as $field) {
                 unset($data[$field]);
             }
         }
         $this->_dbTable->update($data, array('id = ?' => $id));
     }
     if ($language) {
         $this->_saveTranslation('cms_category', $category->get_id(), $category, self::$_translatedFields, $language, array('meta'));
     }
 }
예제 #3
0
 /**
  * Save entity
  *
  * @param Cms_Model_Page $page
  * @param string $language
  */
 public function save(Cms_Model_Page $page, $language = null)
 {
     $data = array();
     $this->_entityToRow($page, $data);
     unset($data['extension']);
     $id = $page->get_id();
     if (!isset($id) || $id <= 0) {
         unset($data['id']);
         $id = $this->_dbTable->insert($data);
         $page->set_id($id);
     } else {
         //if language is defined and curr lang is default one - save all in default table, else save just untraslated strings
         //echo "curr lang: " . $language . ", def lang: " . HCMS_Utils::getDefaultLocale();
         if ($language && $language != HCMS_Utils::getDefaultLocale()) {
             foreach ($this->_translatedFields as $field) {
                 unset($data[$field]);
             }
         }
         //            print_r($data);die;
         if (!isset($data['code'])) {
             $data['code'] = "";
         }
         if ($language && $language == HCMS_Utils::getDefaultLocale()) {
             if (!isset($data['teaser'])) {
                 $data['teaser'] = "";
             }
             if (!isset($data['content'])) {
                 $data['content'] = "";
             }
         }
         $this->_dbTable->update($data, array('id = ?' => $id));
     }
     //save in translation table
     if ($language) {
         $this->_saveTranslation('cms_page', $page->get_id(), $page, $this->_translatedFields, $language, array('data', 'meta'));
     }
     //save extension
     $this->_saveExtension($page, $language);
 }
예제 #4
0
 /**
  * Save entity
  *
  * @param Teaser_Model_Item $item
  * @param string $language
  */
 public function save(Teaser_Model_Item $item, $language = null)
 {
     $data = array();
     $this->_entityToRow($item, $data);
     if (!isset($data['item_template'])) {
         $data['item_template'] = null;
     }
     if ($data['fallback'] == 'yes') {
         $data['start_dt'] = '2014-10-01 00:00:00';
         $data['end_dt'] = '3000-01-01 00:00:00';
     }
     $id = $item->get_id();
     if (!isset($id) || $id <= 0) {
         unset($data['id']);
         $id = $this->_dbTable->insert($data);
         $item->set_id($id);
     } else {
         //if language is defined and curr lang is default one - save all in default table, else save just untraslated strings
         if ($language && $language != HCMS_Utils::getDefaultLocale()) {
             foreach (self::$_translatedFields as $field) {
                 unset($data[$field]);
             }
         }
         $this->_dbTable->update($data, array('id = ?' => $id));
     }
     //save in translation table
     if ($language) {
         $this->_saveTranslation('teaser_item', $item->get_id(), $item, self::$_translatedFields, $language, array('content'));
     }
     $this->_saveTeaserIds($item);
 }
예제 #5
0
 /**
  * Logs a message when the log option is set
  *
  * @param string $message Message to log
  * @param String $locale  Locale to log
  */
 protected function _log($message, $locale)
 {
     if ($this->_options['logUntranslated']) {
         $transString = $message;
         $message = str_replace('%message%', $message, $this->_options['logMessage']);
         $message = str_replace('%locale%', $locale, $message);
         $logger = Zend_Registry::get('Zend_Log');
         $logger->log($message, Zend_Log::NOTICE);
         //save to DB
         $value = $transString;
         $defaultLang = HCMS_Utils::getDefaultLocale();
         //add indication prefix for non default
         if ($locale != $defaultLang) {
             $value = '';
         }
         try {
             Application_Model_TranslateMapper::getInstance()->addTranslation(array('key' => $transString, 'value' => $value, 'section' => $this->_logSection), $locale);
         } catch (Exception $exc) {
             $logger->log("Translation DB: " . $exc, Zend_Log::NOTICE);
         }
     }
 }