/** * View page details * * @return void */ public function detailsAction() { $page = Modules_Page_Services_Page::factory(); if (null == $page) { Modules_Core_Services_Exception::error('DATA_NOT_FOUND'); } /** * Add meta description tag */ // $description = strip_tags($page->description); // $this->view->headMeta()->setName('description', $description); $this->view->page = $page; }
public function editAction() { $request = $this->getRequest(); $this->view->lang = $request->getParam('lang'); $menuId = $request->getParam('menu_id'); $menu = Modules_Menu_Services_Menu::getById($menuId); if (null == $menu) { Modules_Core_Services_Exception::error('DATA_NOT_FOUND'); } $menuData = $menu; /** * Get menu items */ $items = Modules_Menu_Services_Item::getTree($menuId); $menuData['items'] = $items; $this->view->menuData = $menuData; /** * Get source item */ $sourceMenu = Modules_Menu_Services_Menu::getSource($menu); $this->view->sourceMenu = $sourceMenu; if ($request->isPost()) { $user = Gio_Core_Session::getUser(); $menuData = $request->getPost('menu'); $json = new Services_JSON(); $items = $menuData['items'] ? (array) $json->decode($menuData['items']) : array(); $menuData = Modules_Menu_Services_Menu::validate($menuData); if (isset($menuData['messages_error']) && $menuData['messages_error']) { $this->view->errorMessages = $menuData['messages']; $menuData['items'] = $items; $this->view->menuData = $menuData; return; } $menu = array('menu_id' => $menuId, 'name' => $this->view->STRING->escape($menuData['name']), 'description' => $this->view->STRING->escape($menuData['description']), 'language' => $this->view->STRING->escape($menuData['language'])); $sourceItem = isset($menuData['source_item']) ? $menuData['source_item'] : null; $id = Modules_Menu_Services_Menu::update($menu, $items, $sourceItem); Gio_Core_Messenger::getInstance()->addMessage($this->view->TRANSLATOR->translator('menu_edit_success')); $this->redirect($this->view->url('menu_menu_edit', $menu)); } }
public function run() { $controller = Gio_Core_Controller::getIntance(); $view = Gio_Core_View::getInstance(); $configs = Gio_Core_Config_Xml::getConfig('web'); if ($view->APP_TEMPLATE != (string) $configs->admin->template) { return; } $moduleId = $controller->getModuleName(); /** * Check Module Installed */ if ($moduleId != $this->_coreModule && null == Modules_Core_Services_Module::getById($moduleId)) { Modules_Core_Services_Exception::error('PERMISSION_DENY'); return; } $ruleChecker = Gio_Core_Acl::getIntance(); $actionId = $controller->getActionName(); $controllerId = $controller->getControllerName(); if ($ruleChecker->isAllowed($actionId, $controllerId, $moduleId) === false) { Modules_Core_Services_Exception::error('PERMISSION_DENY'); } }
public function run() { $request = Gio_Core_Request::getInstance(); $configs = Gio_Core_Config_Xml::getConfig('web'); $adminPrefixUrl = $configs->admin->url_prefix; $baseUrl = $request->getBaseUrl(); $uri = $request->getRequestUri(); $serverName = $request->getServerName(); $serverPort = $request->getServerPort(); $serverPort = $serverPort == 80 ? '' : ':' . $serverPort; $uri = 'http://' . $serverName . $serverPort . $uri; $currentUrl = str_replace($baseUrl, '', $uri); $currentUrl = '/' . rtrim(ltrim($currentUrl, '/'), '/') . '/'; /** * 7 is length of /admin/ */ $length = strlen($adminPrefixUrl) + 2; if (!$adminPrefixUrl || substr($currentUrl, 0, $length) != "/{$adminPrefixUrl}/") { if (isset($configs->offline->enable) && (string) $configs->offline->enable == 'true') { $message = isset($configs->offline->message) ? $configs->offline->message : null; Modules_Core_Services_Exception::error('OFFLINE_MESSAGE'); } } }
public static function getCurrentRoute($return = false) { $routes = self::getInstance()->getRoutes(); $request = Gio_Core_Request::getInstance(); $configs = Gio_Core_Config_Xml::getConfig(); $baseUrl = $request->getBaseUrl(); $webUrl = Gio_Core_Application::_initInstallChecker() ? $configs->web->url : $baseUrl; $temp = str_replace($baseUrl, '', $webUrl); $rewrite = ''; $uri = $request->getRequestUri(); if (null == $uri) { $currentUrl = ''; } else { $serverName = $request->getServerName(); $serverPort = $request->getServerPort(); $serverPort = $serverPort == 80 ? '' : ':' . $serverPort; $uri = 'http://' . $serverName . $serverPort . $uri; $currentUrl = str_replace($webUrl, '', $uri); $currentUrl = rtrim(ltrim($currentUrl, '/'), '/'); } foreach ($routes as $index => $route) { if (isset($route['url' . $rewrite])) { if (strtolower($route['type']) == 'regex') { $pattern = '/' . str_replace('/', '\\/', '^' . $route['url' . $rewrite]) . '$/'; $pattern = str_replace('?', '\\?', $pattern); $pattern = str_replace('###admin_url_prefix###', $configs->web->admin->url_prefix, $pattern); if (preg_match($pattern, $currentUrl, $matches)) { /** * Set params */ $params = isset($route['params']) ? (array) $route['params'] : null; if (!empty($params)) { foreach ($params as $key => $value) { $request->setParam($key, $matches[$value]); } } return $route; } else { continue; } } else { if (rtrim(str_replace('###admin_url_prefix###', $configs->web->admin->url_prefix, $route['url' . $rewrite]), '/') == $currentUrl) { return $route; break; } } } else { continue; } } if ($return) { return null; } Modules_Core_Services_Exception::error('ROUTE_NOT_FOUND'); }
public function editAction() { $request = $this->getRequest(); $webId = $request->getParam('web_id'); $web = Modules_News_Services_Web::getById($webId); if (null == $web) { Modules_Core_Services_Exception::error('DATA_NOT_FOUND'); } $this->view->webData = $web; if ($request->isPost()) { $webData = $request->getPost('web'); $webData = Modules_News_Services_Web::validate($webData); if (isset($webData['messages_error']) && $webData['messages_error']) { $this->view->errorMessages = $webData['messages']; $webData['web_id'] = $web['web_id']; $this->view->webData = $webData; return; } $web['name'] = $this->view->STRING->escape($webData['name']); $web['screen_name'] = $this->view->STRING->escape($webData['screen_name']); $web['status'] = $webData['status']; Modules_News_Services_Web::update($web); Gio_Core_Messenger::getInstance()->addMessage($this->view->TRANSLATOR->translator('web_actions_edit_success')); $this->redirect($this->view->url('news_web_edit', $web)); } }
/** * Update mail template * * @return void */ public function editAction() { $user = Gio_Core_Session::getUser(); $request = $this->getRequest(); $templateId = $request->getParam('template_id'); $template = Modules_Mail_Services_Template::getById($templateId); if (null == $template || $user['user_id'] != $template['created_user_id']) { Modules_Core_Services_Exception::error('DATA_NOT_FOUND'); } $this->view->templateData = $template; if ($request->isPost()) { $templateData = $request->getPost('template'); $templateData = Modules_Mail_Services_Template::validate($templateData); if (isset($templateData['messages_error']) && $templateData['messages_error']) { $this->view->errorMessages = $templateData['messages']; $templateData['template_id'] = $template['template_id']; $this->view->templateData = $templateData; return; } $template['name'] = $templateData['name']; $template['title'] = $templateData['title']; $template['subject'] = $templateData['subject']; $template['body'] = $templateData['body']; $template['from_mail'] = $templateData['from_mail']; $template['from_name'] = $templateData['from_name']; $template['reply_to_mail'] = $templateData['reply_to_mail']; $template['reply_to_name'] = $templateData['reply_to_name']; Modules_Mail_Services_Template::update($template); Gio_Core_Messenger::getInstance()->addMessage($this->view->TRANSLATOR->translator('template_edit_success')); $this->redirect($this->view->url('mail_template_edit', $template)); } }
public function listAction() { $request = $this->getRequest(); $webId = $request->getParam('web_id'); $web = Modules_News_Services_Web::getById($webId); if (null == $web) { Modules_Core_Services_Exception::error('DATA_NOT_FOUND'); } $this->view->web = $web; $perPage = 20; $pageIndex = (int) $request->getParam('page_index'); if (null == $pageIndex || '' == $pageIndex || $pageIndex < 0) { $pageIndex = 1; } $start = ($pageIndex - 1) * $perPage; $this->view->pageIndex = $pageIndex; $condition = array('web_id' => $webId); $crons = Modules_News_Services_Cron::find($start, $perPage, $condition); $numCrons = Modules_News_Services_Cron::count($condition); $this->view->crons = $crons; // Pager require_once LIB_DIR . DS . 'PEAR' . DS . 'Pager' . DS . 'Sliding.php'; $pagerPath = $this->view->url('news_cron_list', array('web_id' => $webId)); $pagerOptions = array('mode' => 'Sliding', 'append' => false, 'perPage' => $perPage, 'delta' => 5, 'urlVar' => 'page', 'path' => $pagerPath, 'fileName' => 'page-%d', 'separator' => '', 'nextImg' => '<small class="icon arrow_right"></small>', 'prevImg' => '<small class="icon arrow_left"></small>', 'altNext' => '', 'altPrev' => '', 'altPage' => '', 'totalItems' => $numCrons, 'currentPage' => $pageIndex, 'urlSeparator' => '/', 'spacesBeforeSeparator' => 0, 'spacesAfterSeparator' => 0, 'curPageSpanPre' => '<a href="javascript: void();" class="current">', 'curPageSpanPost' => '</a>'); $pager = new Pager_Sliding($pagerOptions); $this->view->pager = $pager; }
public function editAction() { $request = $this->getRequest(); $tagId = $request->getParam('tag_id'); $tag = Modules_Tag_Services_Tag::getById($tagId); if (null == $tag) { Modules_Core_Services_Exception::error('DATA_NOT_FOUND'); } $this->view->tagData = $tag; if ($request->isPost()) { $tagData = $request->getPost('tag'); $tagData = Modules_Tag_Services_Tag::validate($tagData); if (isset($tagData['messages_error']) && $tagData['messages_error']) { $this->view->errorMessages = $tagData['messages']; $this->view->tagData = $tagData; return; } if (Modules_Tag_Services_Tag::checkExist($tagData['tag_text'], $tag['tag_id'])) { $this->view->tagData = $tagData; $this->view->existMessage = true; return; } $tag['tag_text'] = $tagData['tag_text']; $tag['slug'] = $tagData['slug']; Modules_Tag_Services_Tag::update($tag); Gio_Core_Messenger::getInstance()->addMessage($this->view->TRANSLATOR->translator('tag_actions_edit_success')); $this->redirect($this->view->url('tag_tag_edit', $tag)); } }
public function authentication() { if ($this->_csrfEnable) { $session = $this->_getSession(); $json = new Services_JSON(); $data = $json->decode($session['data']); $user = array(); if ($data) { while (list($key, $value) = each($data)) { $user[$key] = $value; } } $request = Gio_Core_Request::getInstance(); $isValid = null; if ($request->isPost() && $this->_csrfRequestMethod == 'POST' || $this->_csrfRequestMethod == 'GET') { switch ($this->_csrfRetriveMethod) { case 'POST': $token = $request->getPost($this->_name); break; case 'GET': $token = $request->getParam($this->_name); break; } $isValid = $this->isValidToken($token); } if ($isValid === false) { //throw new RuntimeException('Token does not match'); Modules_Core_Services_Exception::error('DATA_NOT_FOUND'); return; } } return true; }
/** * Edit news article */ public function editAction() { $request = $this->getRequest(); $this->view->lang = $request->getParam('lang'); $articleId = $request->getParam('article_id'); $article = Modules_News_Services_Article::getById($articleId); $configs = Gio_Core_Config_Xml::getConfig('web'); $this->view->frontendTemplate = $configs->template; $this->view->frontendSkin = $configs->skin; if (null == $article) { Modules_Core_Services_Exception::error('DATA_NOT_FOUND'); } $this->view->categories = Modules_News_Services_Article::getCategoryIds($article); $this->view->articleData = $article; /** * Get source item */ $this->view->sourceArticle = Modules_News_Services_Article::getSource($article); /** * Web source */ $webSource = Modules_News_Services_Web::getAllWebs(); $this->view->webSource = $webSource; if ($request->isPost()) { $user = Gio_Core_Session::getUser(); $articleData = $request->getPost('article'); $articleData = Modules_News_Services_Article::validate($articleData); if (isset($articleData['messages_error']) && $articleData['messages_error']) { $this->view->errorMessages = $articleData['messages']; $this->view->articleData = $articleData; return; } $hotArticle = isset($articleData['article_hot']) && $articleData['article_hot'] == 1 ? 1 : 0; $photoArticle = isset($articleData['article_photo']) && $articleData['article_photo'] == 1 ? 1 : 0; $videoArticle = isset($articleData['article_video']) && $articleData['article_video'] == 1 ? 1 : 0; $article = array('article_id' => $articleId, 'title' => $this->view->STRING->escape($articleData['title']), 'slug' => $this->view->STRING->escape($articleData['slug']), 'description' => $articleData['description'], 'content' => $articleData['content'], 'status' => $articleData['status'] == 'active' ? 'active' : 'inactive', 'category_id' => $articleData['category_id'], 'web_id' => $articleData['web_id'], 'link_source' => $this->view->STRING->escape($articleData['link_source']), 'image_url_data' => $articleData['image_url_data'], 'image_url' => $this->view->STRING->escape($articleData['image_url']), 'article_hot' => $hotArticle, 'article_photo' => $photoArticle, 'article_video' => $videoArticle, 'language' => $articleData['language'], 'author' => $this->view->STRING->escape($articleData['author'])); $sourceItem = isset($articleData['source_item']) ? $articleData['source_item'] : null; $categories = $request->getPost('categories'); Modules_News_Services_Article::update($article, $categories, $sourceItem); Gio_Core_Messenger::getInstance()->addMessage($this->view->TRANSLATOR->translator('article_edit_success')); $this->redirect($this->view->url('news_article_edit', $article)); } }
public function render($file, $fullPath = true) { $configs = Gio_Core_Config_Xml::getConfig(); if (!$fullPath) { $file = TEMPLATE_DIR . DS . $this->APP_TEMPLATE . DS . 'layouts' . DS . $file; } if (!file_exists($file)) { Modules_Core_Services_Exception::error('FILE_NOT_FOUND', $file); } ob_start(); require $file; $output = ob_get_contents(); ob_get_clean(); if (!$this->getAdminSection() && $configs->cache->compress == 'true') { $output = Gio_Core_HtmlCompress::compress($output); } return $output; }
public function dispatch() { $this->view = Gio_Core_View::getInstance(); $controllerFront = Gio_Core_Controller::getIntance(); /** * XML */ $xmlFilename = array($this->_module, $this->_controller, $this->_action); $xmlFilename = implode('_', $xmlFilename); $blocksData = array(); $xmlFile = TEMPLATE_DIR . DS . $this->view->APP_TEMPLATE . DS . 'data' . DS . $xmlFilename . '.xml'; if ($this->view->getAdminSection()) { $xmlFile = TEMPLATE_DIR . DS . $this->view->APP_TEMPLATE . DS . 'data' . DS . $this->view->APP_TEMPLATE . '.xml'; } if (file_exists($xmlFile)) { $xmlData = simplexml_load_file($xmlFile); $blocksData = $xmlData->block; } /** * Check file html cache */ $globalConfig = Gio_Core_Config_Xml::getConfig(); $configs = Gio_Core_Config_Xml::getConfig('cache'); $checkCache = false; if ($configs->enable == 'true' && !$this->view->getAdminSection()) { $cacheName = $xmlFilename; $postParams = $this->_request->getPostParams(); $getParams = $this->_request->getParams(); $json = new Services_JSON(); $cacheParams = !empty($postParams) ? base64_encode($json->encodeUnsafe($postParams)) : null; $cacheParams .= !empty($getParams) ? base64_encode($json->encodeUnsafe($getParams)) : null; $cacheKey = md5($cacheName . $this->view->APP_TEMPLATE . $cacheParams . base64_encode($json->encodeUnsafe($globalConfig))); $cacheType = 'actions'; $cacheTimeout = isset($configs->timeout) ? $configs->timeout : 3600; if ($blocksData) { foreach ($blocksData as $index => $block) { if ($block->block_name == 'MAIN_CONTENT' && isset($block->cache->enable) && $block->cache->enable == 'true') { $cacheTimeout = isset($block->cache->timeout) ? $block->cache->timeout : 3600; /** * Create html file cache */ if ($checkCache = Gio_Core_Cache::isCached($cacheType, $cacheKey, $cacheTimeout)) { $html = $this->view->render(Gio_Core_Cache::_generateFileName($cacheType, $cacheKey)); return $html; } } } } } $ucfModule = ucfirst($this->_module); $ucfController = ucfirst($this->_controller); $controllerClassName = array('Modules', $ucfModule, 'Controllers', $ucfController); $controllerClassName = implode('_', $controllerClassName); if (!class_exists($controllerClassName)) { Modules_Core_Services_Exception::error('CLASS_NOT_FOUND', $controllerClassName); } $controllerClass = new $controllerClassName(); /** * Call init function */ if (method_exists($controllerClass, 'init')) { $controllerClass->init(); } self::$_instance = $controllerClass; if (!method_exists($controllerClass, $this->_action . 'Action')) { Modules_Core_Services_Exception::error('ACTION_NOT_FOUND', $controllerClassName . '::' . $this->_action . 'Action'); return; } call_user_func(array($controllerClass, $this->_action . 'Action')); $actionCache = array('enable' => false, 'timeout' => 0); if (!Gio_Core_Controller::getIntance()->getDisableLayout()) { $widgetObject = Gio_Core_Widget::getIntance(); if ($blocksData) { foreach ($blocksData as $index => $block) { if (!isset($block->visible) || (string) $block->visible != 'false') { if ($block->type == 'widget') { /** * Set Widget User Params */ $userParams = isset($block->params) ? (array) $block->params : null; $paramString = null; if ($userParams) { $request = $widgetObject->getRequest(); foreach ($userParams as $paramIndex => $param) { switch ($param) { case 'GLOBAL': $userParams[$paramIndex] = $request->getParam($paramIndex); $param = $request->getParam($paramIndex); break; default: //$request->setParam($paramIndex, $param); break; } $paramString .= $paramString ? '|' : null; $paramString .= $paramIndex . '=' . $param; } } $userParams['module'] = $block->module; $userParams['widget'] = $block->name; if (isset($block->load) && $block->load == 'ajax') { $this->view->module = $block->module; $this->view->widget = $block->name; $this->view->action = $block->action; $this->view->cacheEnable = isset($block->cache->enable) && $block->cache->enable == 'true' ? true : false; $this->view->cacheTimeout = isset($block->cache->timeout) && $block->cache->timeout > 0 ? $block->cache->timeout : 3600; $this->view->params = $paramString; $this->view->uuid = uniqid(); /** * Loading Js & Css */ $widgetViewFile = TEMPLATE_DIR . DS . $this->view->APP_TEMPLATE . DS . 'modules' . DS . $block->module . DS . 'widgets' . DS . $block->name . DS . $block->action . '.phtml'; if (file_exists($widgetViewFile)) { $jsCss = $this->view->render($widgetViewFile); } /** * Render Ajax Script */ $widgetViewFile = ROOT_DIR . DS . 'modules' . DS . 'core' . DS . 'views' . DS . 'core' . DS . 'widgets' . DS . 'ajax.phtml'; $this->view->{$block->block_name} = $this->view->render($widgetViewFile); } else { $cacheEnable = isset($block->cache->enable) && $block->cache->enable == 'true' ? true : false; $cacheTimeout = isset($block->cache->timeout) && $block->cache->timeout > 0 ? $block->cache->timeout : 0; $widgetObject->setTemplate($this->view->APP_TEMPLATE)->setModuleName($block->module)->setWidgetName($block->name)->setActionName($block->action)->setCacheEnable($cacheEnable)->setCacheTimeout($cacheTimeout)->setParams($userParams); $this->view->{$block->block_name} = $widgetObject->dispatch(); } } elseif ($block->block_name == 'MAIN_CONTENT') { $actionCache['enable'] = isset($block->cache->enable) && $block->cache->enable == 'true' ? true : false; $actionCache['timeout'] = isset($block->cache->timeout) && $block->cache->timeout > 0 ? $block->cache->timeout : 0; } } } } } $actionViewFile = TEMPLATE_DIR . DS . $this->view->APP_TEMPLATE . DS . 'modules' . DS . $this->_module . DS . $this->_controller . DS . $this->_action . '.phtml'; if (!file_exists($actionViewFile)) { /** * Default action view file */ $actionViewFile = ROOT_DIR . DS . 'modules' . DS . $this->_module . DS . 'views' . DS . $this->_controller . DS . $this->_action . '.phtml'; } if (!Gio_Core_Controller::getIntance()->getNoRender()) { $content = $controllerClass->view->render($actionViewFile); $this->view->MAIN_CONTENT = $content; } if (!Gio_Core_Controller::getIntance()->getDisableLayout()) { $xmlFilename = isset($this->view->APP_LAYOUT) && $this->view->APP_LAYOUT ? $this->view->APP_LAYOUT : $xmlFilename; $layoutFile = TEMPLATE_DIR . DS . $this->view->APP_TEMPLATE . DS . 'layouts' . DS . $xmlFilename . '.phtml'; if ($this->view->getAdminSection()) { $layoutFile = TEMPLATE_DIR . DS . $this->view->APP_TEMPLATE . DS . 'layouts' . DS . $this->view->APP_TEMPLATE . '.phtml'; } /** * Check param __GIOCMS_ERROR__ */ if (Gio_Core_Request::getInstance()->getParam('__GIOCMS_ERROR__') == true) { $layoutFile = TEMPLATE_DIR . DS . $this->_template . DS . 'layouts' . DS . $this->_layout . '.phtml'; } $return = $this->view->render($layoutFile); if (!$checkCache && $configs->enable == 'true' && !$this->view->getAdminSection() && $actionCache['enable'] == true) { $cacheCompress = isset($configs->compress) && $configs->compress == 'true' ? true : false; $cacheContent = $this->view->generateTitle() . $this->view->generateScripts() . $this->view->generateStyles() . $return; Gio_Core_Cache::cache($cacheType, $cacheKey, $cacheContent, $cacheCompress); } return $return; } elseif (!Gio_Core_Controller::getIntance()->getNoRender()) { return $content; } }