Example #1
0
 /**
  * get instance
  *
  *
  * @return Cms_Model_RouteMapper
  */
 public static function getInstance()
 {
     if (self::$_instance === null) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
 protected function saveRoute($row)
 {
     $module = $this->modules[$this->data[$row]['Module']];
     //no path - no route
     if (!$module['path']) {
         return;
     }
     $titles = explode("\n", $this->data[$row]['Name']);
     $route = new Cms_Model_Route();
     $route->set_application_id(1);
     if (isset($this->data[$row]['page_id'])) {
         $route->set_page_id($this->data[$row]['page_id']);
     }
     $route->set_path($module['path']);
     if (isset($module['params'])) {
         $route->set_params($module['params']);
     }
     foreach ($this->languages as $langIndex => $lang) {
         $title = $this->getLangText($titles, $langIndex);
         $currRow = $row;
         if (!isset($module['route_uri'])) {
             $uriParts = array();
             while (isset($this->data[$currRow])) {
                 $currTitles = explode("\n", $this->data[$currRow]['Name']);
                 $uriParts[] = $this->seoFilter->filter($currTitles[$langIndex]);
                 if (!isset($this->data[$currRow]['parent'])) {
                     break;
                 }
                 $currRow = $this->data[$currRow]['parent'];
             }
             //print_r($uriParts);
             $uriParts = array_reverse($uriParts);
             $uri = implode('/', $uriParts);
         } else {
             $uri = $module['route_uri'];
         }
         //check if route exists
         $existingRoutes = Cms_Model_RouteMapper::getInstance()->fetchAll(array('uri' => $uri, 'lang' => $lang));
         if (count($existingRoutes) > 0) {
             continue;
         }
         $route->set_name($title)->set_lang($lang)->set_uri($uri);
         $route->set_id(null);
         //print_r($route);
         Cms_Model_RouteMapper::getInstance()->save($route);
     }
     $this->data[$row]['route_id'] = $route->get_id();
 }
Example #3
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();
 }
Example #4
0
 /**
  * Assembles a URL path defined by this route
  *
  * @param array   $data    An array of variable and value pairs used as parameters
  * @param boolean $reset   Not used (required by interface)
  * @param boolean $encode  Not used (required by interface)
  * @param boolean $partial Not used (required by interface)
  *
  * @return string|false Route path with user submitted parameters
  */
 public function assemble($data = array(), $reset = false, $encode = false, $partial = false)
 {
     $origData = $data;
     //$this->_log(sprintf("cms route asseble data: %s",  json_encode($data)), Zend_Log::DEBUG);
     if (!isset($data['lang'])) {
         if (Zend_Registry::isRegistered('Zend_Locale')) {
             $locale = Zend_Registry::get('Zend_Locale');
             $data['lang'] = $locale->getLanguage();
         } else {
             //fallback to default route
             return $this->_assembleFallback($origData, 'default', $reset, $encode);
         }
     }
     $module = isset($data['module']) ? $data['module'] : $this->getDefault('module');
     $controller = isset($data['controller']) ? $data['controller'] : $this->getDefault('controller');
     $action = isset($data['action']) ? $data['action'] : $this->getDefault('action');
     $path = "{$module}/{$controller}/{$action}";
     $lang = $data['lang'];
     unset($data['module']);
     unset($data['controller']);
     unset($data['action']);
     unset($data['lang']);
     $route = new Cms_Model_Route();
     if (!Cms_Model_RouteMapper::getInstance()->findByPath($path, 1, $route, $data, $lang)) {
         //fallback to default route
         return $this->_assembleFallback($origData, 'default', $reset, $encode);
     }
     $result = array();
     //if singlelang than do not add lang
     $singleLang = Zend_Controller_Front::getInstance()->getParam('singleLang');
     if ((!$singleLang || $singleLang == '') && isset($lang) && $lang != '') {
         $result[] = $lang;
     }
     if (null != $route->get_uri() && '' != $route->get_uri()) {
         $result[] = $route->get_uri();
     }
     return implode("/", $result);
 }
 /**
  * Ajax listing of pages
  */
 public function pageListAction()
 {
     //criteria
     $criteria = array('application_id' => $this->_applicationId);
     if (null != $this->_getParam('langFilter')) {
         $criteria['lang'] = $this->_getParam('langFilter');
     }
     if (null != $this->_getParam('typeFilter')) {
         $criteria['type_id'] = $this->_getParam('typeFilter');
     }
     if (null != $this->_getParam('categoryFilter')) {
         $criteria['category_id'] = $this->_getParam('categoryFilter');
     }
     if (null != $this->_getParam('statusFilter')) {
         $criteria['status'] = $this->_getParam('statusFilter');
     }
     if (null != $this->_getParam('menuFilter')) {
         $criteria['menu_item_id'] = $this->_getParam('menuFilter');
     }
     if (null != $this->_getParam('searchFilter')) {
         $criteria['search_filter'] = $this->_getParam('searchFilter');
     }
     //order
     $order = $this->_request->getParam('order');
     if (isset($order)) {
         $order = array($order);
     } else {
         $order = array("p.title ASC");
     }
     //paging
     $page = $this->_request->getParam('page');
     $perPage = $this->_request->getParam('perPage');
     if (!isset($page) || $page < 1) {
         $page = 1;
     }
     if (!isset($perPage) || $perPage < 1 || $perPage > 300) {
         $perPage = 20;
     }
     $paging = array('page' => $page, 'perPage' => $perPage);
     $records = Cms_Model_PageMapper::getInstance()->fetchAll($criteria, $order, $paging);
     $data = array('total' => $paging['total'], 'page' => $paging['page'], 'records' => $paging['records'], 'perPage' => $paging['perPage'], 'rows' => array());
     /* @var $record Cms_Model_Page */
     foreach ($records as $record) {
         //find route to page
         $cmsRoute = new Cms_Model_Route();
         $lang = null != $this->_getParam('langFilter') ? $this->_getParam('langFilter') : CURR_LANG;
         if (!Cms_Model_RouteMapper::getInstance()->findByPageId($record->get_id(), $cmsRoute, $lang)) {
             //default path
             $module = 'cms';
             $controller = 'page';
             $action = 'index';
         } else {
             list($module, $controller, $action) = explode("/", $cmsRoute->get_path());
         }
         $urlParams = array('module' => $module, 'controller' => $controller, 'action' => $action, 'page_id' => $record->get_id(), 'lang' => $lang);
         $data['rows'][] = array('id' => $record->get_id(), 'title' => $record->get_title(), 'code' => $record->get_code(), 'url_id' => $record->get_url_id(), 'type_id' => $record->get_type_id(), 'type_name' => $this->translate($record->get_type_name()), 'type_code' => $record->get_type_name(), 'user_name' => $record->get_user_name(), 'status' => $this->translate($record->get_status()), 'posted' => HCMS_Utils_Time::timeMysql2Local($record->get_posted()), 'url' => $this->view->url($urlParams, 'cms', true));
     }
     $this->_helper->json->sendJson($data);
 }
 public function deleteAction()
 {
     $id = $this->_getParam('id');
     $id = $this->_getParam('id');
     $route = new Cms_Model_Route();
     if (!Cms_Model_RouteMapper::getInstance()->find($id, $route)) {
         $result = array("success" => false, "message" => $this->translate("Route not found."));
     } else {
         $success = Cms_Model_RouteMapper::getInstance()->delete($route);
         $result = array("success" => $success, "message" => $success ? $this->translate("Route deleted.") : $this->translate("Error deleting Route."));
     }
     return $this->_helper->json($result);
 }
 public function menuEditAction()
 {
     $data = $this->getRequest()->getPost('data');
     $submit = $this->getRequest()->getPost('submit');
     $id = $this->_getParam('id');
     $langFilter = $this->_getParam('langFilter');
     $menuFilter = $this->_getParam('menuFilter');
     /* get routes from application.ini */
     $bootstrap = $this->getInvokeArg('bootstrap');
     $routes = array_keys($bootstrap->getResource('router')->getRoutes());
     /* get all modules */
     $criteria['application_id'] = $this->_applicationId;
     $modules = Application_Model_ModuleMapper::getInstance()->fetchAll($criteria);
     //check if cancel button is pressed
     if ($this->_formHelper->isCancel()) {
         //cancel form
         return $this->_formHelper->returnCancel($this->view->url(array('action' => 'menu')), $this->translate('Action canceled'));
     }
     if (isset($data['path']) && $data['path'] != '') {
         foreach ($modules as $module) {
             $moduleData = $module->get_data();
             if (isset($moduleData['menus'])) {
                 foreach ($moduleData['menus'] as $path => $menu) {
                     if ($module->get_code() . "/" . $path == $data['path']) {
                         $data['dialog_url'] = $menu['dialog_url'];
                     }
                 }
             }
         }
     }
     //create form object
     $form = new Cms_Form_MenuItem($data);
     $route = new Cms_Model_Route();
     //postback - save?
     if ($this->_formHelper->isSave()) {
         //check if valid
         if ($form->isValid()) {
             $values = $form->getValues();
             //create entity object from submitted values, and save
             $item = new Cms_Model_MenuItem($values);
             if ($data['route'] == '') {
                 $item->set_path('');
                 $item->set_page_id('');
                 $item->set_page_id_new('');
                 $item->set_params('');
             } else {
                 $item->set_uri('');
             }
             //new entity
             if (!isset($data['id']) || $data['id'] <= 0) {
                 $item->set_application_id($this->_applicationId);
             } else {
                 $existingMenu = new Cms_Model_MenuItem();
                 if (!Cms_Model_MenuItemMapper::getInstance()->find($data['id'], $existingMenu)) {
                     throw new Exception("Menu not found");
                 }
                 if ((int) $existingMenu->get_application_id() != $this->_applicationId) {
                     throw new Exception("Cannot edit this Menu Item.");
                 }
             }
             $item->set_application_id($this->_applicationId);
             Cms_Model_MenuItemMapper::getInstance()->save($item, $langFilter);
             //save done, return success
             return $this->_formHelper->returnSuccess($this->view->url(array('action' => 'menu')), $this->translate('Menu Item saved.'));
         } else {
             //we have errors - return json or continue
             $this->_formHelper->returnError($form->getMessages());
         }
     } elseif (!$this->_formHelper->getRequest()->isPost()) {
         //edit action
         if (isset($id) && $id > 0) {
             $item = new Cms_Model_MenuItem();
             if (!Cms_Model_MenuItemMapper::getInstance()->find($id, $item, $langFilter)) {
                 throw new Exception("Menu not found");
             }
             Cms_Model_RouteMapper::getInstance()->findByPath($item->get_path(), $this->_applicationId, $route, $item->get_params(), $langFilter != '' ? $langFilter : null);
             $item->set_route_uri($route->get_uri());
             $params = $item->get_params();
             $item->set_params(Cms_Model_MenuItemMapper::getInstance()->unsetParamsPageId($params));
             //fetch data
             $data = $item->toArray();
             //populate form with data
             $form->setData($data);
         }
     }
     $this->view->menus = Cms_Model_MenuMapper::getInstance()->getMenus();
     $this->view->menuFilter = $menuFilter;
     $this->view->langFilter = $langFilter;
     $this->view->routes = $routes;
     $this->view->modules = $modules;
     $page = new Cms_Model_Page();
     if (isset($data['page_id'])) {
         Cms_Model_PageMapper::getInstance()->find($data['page_id'], $page);
     }
     $this->view->page_title = $page->get_title();
     $this->view->data = $data;
 }