public function indexAction() { $this->view->phpVersion = phpversion(); $this->view->databaseVersion = Gio_Db_Mysql::getInstance()->getVersion(); $configs = Gio_Core_Config_Xml::getConfig('install'); $this->view->installInformation = $configs; $modules = Modules_Core_Services_Module::getModulesInstalled(); /** * Add module core to the top array */ $modules = array_pad($modules, -count($modules) - 1, array('module_id' => 'core')); $quickaccess = array(); if ($modules) { foreach ($modules as $index => $module) { $aboutXml = MOD_DIR . DS . $module['module_id'] . DS . 'configs' . DS . 'about.xml'; if (!file_exists($aboutXml)) { continue; } $aboutXml = @simplexml_load_file($aboutXml); $items = isset($aboutXml->admin->quickaccess->item) ? $aboutXml->admin->quickaccess->item : null; if ($items) { foreach ($items as $item) { $data = array(); $data['module'] = $module['module_id']; $data['route'] = $item->route; $data['lang_key'] = $item->lang_key; $data['thumbnail'] = $item->thumbnail; $quickaccess[] = $data; } } } } $this->view->quickaccess = $quickaccess; }
public function getLang() { $request = Gio_Core_Request::getInstance(); $lang = $request->getParam('lang'); $this->_lang = $lang; $this->_lang = null == $this->_lang ? Gio_Core_Config_Xml::getConfig('web')->language : $this->_lang; return $this->_lang; }
public static function _initInstallChecker() { $configs = Gio_Core_Config_Xml::getConfig('install'); //$route = Gio_Core_Route::getCurrentRoute(); if (null == $configs || !isset($configs->date) || null == (string) $configs->date || (string) $configs->date == '') { return false; } return true; }
public static function error($code = 'DATA_NOT_FOUND', $message = null) { $configs = Gio_Core_Config_Xml::getConfig('web'); $request = Gio_Core_Request::getInstance(); $request->setParam('code', $code); $request->setParam('message', $message); $request->setParam('__GIOCMS_ERROR__', true); $content = Gio_Core_Controller::getIntance()->setTemplate($configs->admin->template)->setLayout('message')->setModuleName('core')->setControllerName('exception')->setActionName('error')->dispatch(true); Gio_Core_Response::getInstance()->setBody($content); }
public function configAction() { $request = $this->getRequest(); $languagesFile = ROOT_DIR . DS . 'configs' . DS . 'languages.xml'; if (!file_exists($languagesFile)) { return; } $languagesXml = @simplexml_load_file($languagesFile); if (null == $languagesXml) { return; } $locales = array(); foreach ($languagesXml->language as $language) { $arr = explode('|', $language); $locales[$arr[0]] = array('code' => $arr[0], 'localName' => $arr[1], 'englishName' => $arr[2]); } $this->view->locales = $locales; $this->view->availableLanguages = array(); $configs = Gio_Core_Config_Xml::getConfig(); $this->view->configs = $configs; $default = isset($configs->localization->languages->default) ? $configs->localization->languages->default : $configs->web->language; $available = isset($configs->localization->languages->list) ? explode(',', $configs->localization->languages->list) : array($default); $this->view->availableLanguages = $available; if ($request->isPost()) { $localizationEenable = $request->getPost('localization_enable') != null ? 'true' : 'false'; $default = $request->getPost('default_language'); $available = $request->getPost('supported_languages'); $listLangs = array($default); if ($available != null) { foreach ($available as $index => $locale) { if ($locale != $default) { $listLangs[] = $locale; } } } $configs->web->language = $default; $configs->localization->enable = $localizationEenable; $configs->localization->languages->default = $default; $configs->localization->languages->list = implode(',', $listLangs); /** * Reset language details */ $configs->localization->languages->details = null; foreach ($listLangs as $lang) { $configs->localization->languages->details->{$lang} = implode('|', array($locales[$lang]['code'], $locales[$lang]['localName'], $locales[$lang]['englishName'])); } $configFile = Gio_Core_Config_Xml::getConfigFile(); $content = $configs->asXML(); $fileName = Gio_Core_Config_Xml::getConfigFile(); Gio_Core_File::writeToFile($fileName, $content); Gio_Core_Messenger::getInstance()->addMessage($this->view->TRANSLATOR->translator('locale_actions_config_success')); $this->redirect($this->view->url('core_locale_config')); } }
public function run() { $request = Gio_Core_Request::getInstance(); $configs = Gio_Core_Config_Xml::getConfig('web'); $adminPrefixUrl = $configs->admin->url_prefix; $adminTemplate = $configs->admin->template; $adminSkin = isset($configs->admin->skin) ? $configs->admin->skin : 'default'; $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}/") { return; } $controllerFront = Gio_Core_Controller::getIntance(); $controllerFront->setTemplate($adminTemplate); $view = Gio_Core_View::getInstance(); $view->APP_TEMPLATE = $adminTemplate; $view->APP_SKIN = $adminSkin; $view->setAdminSection(true); /** * Check admin login */ $phpSessionId = $request->getPost('PHPSESSID'); $session = Gio_Core_Session::getSessionById($phpSessionId); $json = new Services_JSON(); $user = null == $session || null == $session['data'] ? null : $json->decode($session['data']); $view->userLogin = $user; //return; $route = Gio_Core_Route::getCurrentRoute(true); if ((null == $user || !isset($user->username) || null == $user->username) && (null == $route || $route['name'] != 'core_auth_login')) { $return = $_SERVER['REQUEST_URI']; $return = $return ? rawurlencode(base64_encode($return)) : null; $link = $view->url('core_auth_login'); if (strpos($link, '?') !== false) { $return = $return != null ? '&return=' . $return : null; } else { $return = $return != null ? '?return=' . $return : null; } header('Location: ' . $link . $return); exit; } }
public function setAction() { $request = $this->getRequest(); $this->disableLayout(); $this->setNoRender(); $templateName = $request->getPost('template_id'); if (!$request->isPost() || !$templateName) { $this->getResponse()->setBody('RESULT_NOT_OK'); } $configs = Gio_Core_Config_Xml::getConfig(); $configs->web->template = $templateName; $content = $configs->asXML(); $fileName = Gio_Core_Config_Xml::getConfigFile(); Gio_Core_File::writeToFile($fileName, $content); $this->getResponse()->setBody('RESULT_OK'); }
/** * @param array $links * @param string $lang * @return array */ public static function filter($content, $webId = null) { switch ($webId) { case 'vnexpress': $content = str_replace('file","/', 'file","http://vnexpress.net/', $content); $content = str_replace('SWFObject("', 'SWFObject("http://vnexpress.net', $content); //$content = str_replace('playlistfile=/', 'playlistfile=http://vnexpress.net/', $content); $content = str_replace("swfobject.embedSWF('", "swfobject.embedSWF('http://vnexpress.net", $content); $content = str_replace('/Service/FlashVideo/Playlist2.asp?Id=', 'http://vnexpress.net/Service/FlashVideo/Playlist2.asp?Id=', $content); $content = str_replace('"skin","/Library/Common/AdsPlayer/classic/classic.xml"', '"skin","http://vnexpress.net/Library/Common/AdsPlayer/classic/classic.xml"', $content); $content = str_replace('skin=/Library/Common/AdsPlayer/classic/classic.xml', 'skin=http://vnexpress.net/Library/Common/AdsPlayer/classic/classic.xml', $content); $content = str_replace('http://vnexpress.nethttp', 'http', $content); break; case 'ngoisao': $content = str_replace('file","/', 'file","http://ngoisao.net', $content); $content = str_replace('SWFObject("', 'SWFObject("http://ngoisao.net', $content); $content = str_replace("swfobject.embedSWF('", "swfobject.embedSWF('http://ngoisao.net", $content); $content = str_replace('/Service/FlashVideo/Playlist2.asp?Id=', 'http://ngoisao.net/Service/FlashVideo/Playlist2.asp?Id=', $content); break; case 'thethaovanhoa': $content = str_replace('/images/mediaplayer.swf', 'http://thethaovanhoa.vn/images/mediaplayer.swf', $content); $content = str_replace('/scripts/swfobject', 'http://thethaovanhoa.vn/scripts/swfobject', $content); break; case 'haisao': case 'bongda': case 'nguoilaodong': require_once LIB_DIR . DS . 'htmlpurifier' . DS . 'HTMLPurifier.auto.php'; $purifier = new HTMLPurifier(); $content = $purifier->purify($content); break; case 'haitugio': $configs = Gio_Core_Config_Xml::getConfig('web'); $content = str_replace('//<![CDATA[', '', $content); $content = str_replace('//]]>', '', $content); $content = str_replace('flashWrite("/', 'flashWrite("' . $configs->url . '/flash.php?url=http://24h.com.vn/', $content); //$content = str_replace('500', '480', $content); //$content = str_replace('477', '400', $content); break; case 'zing': $content = '<script type="text/javascript">o_ChannelRoot = null;</script>' . $content; break; } if ($webId) { $content = Gio_Core_String::stripTags($content, array('a')); } return $content; }
protected function showAction() { $currRoute = Gio_Core_Route::getCurrentRoute(); $routeName = $currRoute['name']; $defaults = $currRoute; $request = $this->getRequest(); $this->view->lang = $request->getParam('lang'); $links = array(); if (isset($defaults['localization']['enable']) && 'true' == $defaults['localization']['enable'] && isset($defaults['localization']['identifier']['class'])) { $class = $defaults['localization']['identifier']['class']; $name = $defaults['localization']['identifier']['param']; /** * The DAO method used to get the model instance */ $method = isset($defaults['localization']['identifier']['method']) ? $defaults['localization']['identifier']['method'] : 'getById'; $id = Gio_Core_Request::getInstance()->getParam($name); $conn = Gio_Db_Connection::getConnection(); $translationDao = new Modules_Core_Models_Mysql_Translation(); $translationDao->setConnection($conn); $items = $translationDao->getItems($id, $class); $array = explode('_', $class); $array[] = $array[count($array) - 1]; $array[count($array) - 2] = 'Mysql'; $daoClass = implode('_', $array); $daoInstance = new $daoClass(); $daoInstance->setConnection($conn); if ($items != null) { $config = Gio_Core_Config_Xml::getConfig('localization'); $languages = $config->languages->details; foreach ($items as $item) { if ($item['item_id'] == $id) { continue; } $object = $daoInstance->{$method}($item['item_id']); if ($object != null) { $language = $item['language']; if (isset($languages[$item['language']])) { $info = explode('|', $languages[$item['language']]); $language = $info[1]; } $links[] = array('url' => $this->view->url($routeName, $object), 'label' => $language); } } } } $this->view->assign('links', $links); }
public function run() { $request = Gio_Core_Request::getInstance(); $configs = Gio_Core_Config_Xml::getConfig(); $adminUrlPrefix = $configs->web->admin->url_prefix; $currentUri = $request->getRedirectUrl(); $baseUrl = $request->getBaseUrl(); $webUrl = Gio_Core_Application::_initInstallChecker() ? $configs->web->url : $baseUrl; $temp = str_replace($baseUrl, '', $webUrl); $rewrite = ''; $uri = $request->getRequestUri(); $serverName = $request->getServerName(); $serverPort = $request->getServerPort(); $serverPort = $serverPort == 80 ? '' : ':' . $serverPort; $uri = 'http://' . $serverName . $serverPort . $uri; $currentUrl = str_replace($webUrl, '', $uri); $uri = '/' . rtrim(ltrim($currentUrl, '/'), '/'); /** * We are in the front-end section * 7 is length of /admin/ */ if (!$adminUrlPrefix || substr($uri, 0, strlen($adminUrlPrefix) + 2) != "/{$adminUrlPrefix}/") { $paths = explode('/', ltrim($uri, '/')); $currLang = array_shift($paths); } else { $paths = explode('/', rtrim($uri, '/')); $currLang = array_pop($paths); } /** * Add language parameter. * Set the request URI if there is language in URI */ $languages = isset($configs->localization->languages->list) ? explode(',', $configs->localization->languages->list) : array($configs->localization->languages->default); if (in_array($currLang, explode(',', (string) $configs->localization->languages->list))) { $request->setParam('lang', $currLang); $path = implode('/', $paths); if ('' == $path) { $path = '/'; } $currentUri = str_replace('/' . $currLang, '', $currentUri); $request->setRedirectUrl(rtrim($currentUri, '/')); } else { $lang = $request->getParam('lang') != null ? $request->getParam('lang') : (string) $configs->web->language; $request->setParam('lang', $lang); } }
public static function add($page) { $conn = Gio_Db_Connection::getConnection(); $pageDao = new Modules_Core_Models_Mysql_Page(); $pageDao->setConnection($conn); /** * Create route layout */ $configs = Gio_Core_Config_Xml::getConfig('web'); $filename = $page['route'] . '.phtml'; $file = TEMPLATE_DIR . DS . $configs->template . DS . 'layouts' . DS . $filename; $content = null; if (file_exists($file)) { $content = file_get_contents($file); } Gio_Core_File::writeToFile($file, $content); return $pageDao->add($page); }
public function run() { $request = Gio_Core_Request::getInstance(); $configs = Gio_Core_Config_Xml::getConfig('web'); $adminPrefixUrl = $configs->admin->prefix_url; $currentUri = $request->getRequestUri(); /** * 7 is length of /admin/ */ if (!$adminPrefixUrl || substr($currentUri, 0, 7) != "/{$adminPrefixUrl}/") { return; } //$ips = explode(',', $ips); //$ip = $request->getClientIp(); //if (in_array($ip, $ips)) { $controllerFront = Gio_Core_Controller::getIntance(); $controllerFront->setTemplate('admin'); //} }
protected function showAction() { $request = $this->getRequest(); $type = $this->getParam('locale_type', 'full'); $configs = Gio_Core_Config_Xml::getConfig(); if (!isset($configs->localization->enable) || 'false' == $configs->localization->enable) { return; } /** * Get base URL (http://localhost/gio_cms) */ $baseUrl = rtrim($request->getBaseUrl(), '/'); $links = array(); $arrayDetails = (array) $configs->localization->languages->details; foreach ($arrayDetails as $locale => $details) { $array = explode('|', (string) $details); $links[$locale] = array('href' => $baseUrl . '/' . $locale, 'localName' => $array[1], 'englishName' => $array[2]); } $this->view->type = $type; $this->view->links = $links; }
public static function load($module, $name, $action, $params = array(), $cacheEnable = false, $cacheTimeout = 0) { $configs = Gio_Core_Config_Xml::getConfig('web'); $widgetContent = Gio_Core_Widget::getIntance()->setTemplate($configs->template)->setModuleName($module)->setWidgetName($name)->setActionName($action)->setCacheEnable($cacheEnable)->setCacheTimeout($cacheTimeout)->setParams($params)->dispatch(); $view = Gio_Core_View::getInstance(); $return = array('title' => '', 'cssFiles' => array(), 'jsFiles' => array(), 'jsScripts' => array(), 'content' => ''); $search = array('{APP_WEB_URL}', '{APP_STATIC_SERVER}', '{WIDGET_URL}'); $replace = array($view->APP_WEB_URL, $view->APP_STATIC_SERVER, $view->APP_STATIC_SERVER . '/modules/' . strtolower($module) . '/widgets/' . strtolower($name)); if ($action != 'config') { /** * Gets widget resources that are defined in widget information file */ $file = ROOT_DIR . DS . 'modules' . DS . strtolower($module) . DS . 'widgets' . DS . strtolower($name) . DS . 'about.xml'; if (file_exists($file)) { $config = @simplexml_load_file($file); if ($resources = $config->resources) { if ($resources = $resources->resource) { foreach ($resources as $resource) { $attr = $resource->attributes(); switch ((string) $attr['type']) { case 'css': $return['cssFiles'][] = str_replace($search, $replace, (string) $attr['src']); break; case 'javascript': $return['jsFiles'][] = str_replace($search, $replace, (string) $attr['src']); break; } } } } } } $return['content'] = $widgetContent; $pattern = '/<script[^>]*>(.*)<\\/script>$/is'; if (preg_match_all($pattern, $widgetContent, $matches)) { $return['jsScripts'] = $matches[1]; $return['content'] = str_replace($matches[1], '', $widgetContent); } return $return; }
/** * @return Gio_Db_Mysql */ public function __construct($instance = false) { if ($instance) { return $this; } $configs = Gio_Core_Config_Xml::getConfig('db'); $this->_host = $configs->host; $this->_username = $configs->username; $this->_password = $configs->password; $this->_dbName = $configs->name; $this->_port = $configs->port; $this->_tablePrefix = $configs->table_prefix; $host = $this->_port != null ? $this->_host . ':' . $this->_port : $this->_host; $link = null; $connected = false; $connected = mysql_pconnect($host, $this->_username, $this->_password, $link) or die('Cannot connect to Database!'); $this->_connected = $connected; $this->_link = $link; mysql_select_db($this->_dbName, $connected); mysql_query(sprintf("SET CHARACTER SET '%s'", mysql_real_escape_string($configs->encoding))); return self::$_instance = $this; }
public function run() { $request = Gio_Core_Request::getInstance(); $configs = Gio_Core_Config_Xml::getConfig('web'); /** * Do nothing if we are in page of managing permalink */ $uri = $request->getRequestUri(); $uri = strtolower($uri); $uri = rtrim($uri, '/') . '/'; $adminPrefix = $configs->admin->url_prefix; $adminPrefix = rtrim(ltrim($adminPrefix, '/'), '/'); if (is_int(strpos($uri, '/' . $adminPrefix . '/core/permalink'))) { return; } $defaultFile = ROOT_DIR . DS . 'configs' . DS . 'permalink.xml'; $host = $request->getServerName(); $host = substr($host, 0, 3) == 'www' ? substr($host, 4) : $host; $file = ROOT_DIR . DS . 'configs' . DS . $host . '.' . 'permalink.xml'; $file = file_exists($file) ? $file : $defaultFile; if (!file_exists($file)) { return; } $route = Gio_Core_Route::getInstance(); $config = @simplexml_load_file($file); if (!isset($config->item) || empty($config->item)) { return; } $categoryConfig = Gio_Core_Module::getConfig('category'); $param = isset($categoryConfig['url']['param']) ? $categoryConfig['url']['param'] : 'category_id'; foreach ($config->item as $index => $item) { $item = (array) $item; if (!in_array($item['name'], $this->_inArray)) { $route->setRoute($item['name'], $item); } elseif ($param == 'category_path' && in_array($item['name'], $this->_inArray)) { $route->setRoute($item['name'], $item); } } }
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'); } }
/** * Get all translation items of given item * * @param Gio_Core_Model $dao * @param array $item * @return array */ public static function translationItems($item, $daoInstance) { $configs = Gio_Core_Config_Xml::getConfig(); if (!isset($configs->localization->languages->list) || $configs->localization->languages->list == $configs->web->language) { return array(); } /** * Create DAO instance based on the item class */ $conn = Gio_Db_Connection::getConnection(); $daoInstance->setConnection($conn); $result = array(); foreach (explode(',', $configs->localization->languages->list) as $lang) { $result[$lang] = null; } $translations = $daoInstance->getTranslations($item); if ($translations != null) { foreach ($translations as $translation) { $result[$translation['language']] = $translation; } } return $result; }
public static function getLinks($lang = null) { if (null == $lang) { $lang = Gio_Core_Config_Xml::getConfig('web')->language; } $view = Gio_Core_View::getInstance(); $router = Gio_Core_Route::getInstance(); $results = array(); $links = array(); /** * Add the homepage link */ $links['core_index_index'][] = array('href' => $view->url('core_index_index', array('language' => $lang))); $links = Gio_Core_Hook_Registry::getInstance()->executeFilter('Core_LinkProvider', $links, array($lang)); foreach ($links as $routeName => $value) { /** * Get route description */ $defaults = $router->getRoute($routeName); $description = isset($defaults['langKey']) ? $view->TRANSLATOR->translator($defaults['langKey'], $defaults['module'], $lang) : $routeName; $results[$routeName] = array('description' => $description, 'links' => $value); } return $results; }
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 function forgotpasswordAction() { $configs = Gio_Core_Config_Xml::getConfig('web'); $this->setTemplate($configs->admin->template); $this->setLayout('forgotpassword'); $request = $this->getRequest(); if ($request->isPost()) { $email = $request->getPost('email'); if (!$email) { $this->view->error = $this->view->TRANSLATOR->translator('user_forgotpassword_email_notnull'); return; } $user = Modules_Core_Services_User::checkEmailExist($email); if (null == $user) { $this->view->error = $this->view->TRANSLATOR->translator('user_forgotpassword_email_notexist'); return; } $code = Gio_Core_String::generateString(50); $user['code'] = $code; Modules_Core_Services_User::update($user); Modules_Core_Services_User::sendPassword($user['username'], $user['email'], $code); Gio_Core_Messenger::getInstance()->addMessage($this->view->TRANSLATOR->translator('user_forgotpassword_send_success')); $this->redirect($this->view->url('core_user_forgotpassword')); } }
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 configAction() { $request = $this->getRequest(); $configs = Gio_Core_Config_Xml::getConfig(); $this->view->configs = $configs; $languagesFile = ROOT_DIR . DS . 'configs' . DS . 'languages.xml'; if (!file_exists($languagesFile)) { return; } $languagesXml = @simplexml_load_file($languagesFile); if (null == $languagesXml) { return; } $locales = array(); foreach ($languagesXml->language as $language) { $arr = explode('|', $language); $locales[$arr[0]] = array('code' => $arr[0], 'localName' => $arr[1], 'englishName' => $arr[2]); } $this->view->locales = $locales; if ($request->isPost()) { $act = $request->getPost('act'); switch ($act) { case 'testdbconn': $this->setNoRender(); $this->disableLayout(); $this->_testdbconn(); break; default: $version = isset($configs->install->version) ? $configs->install->version : Gio_Core_Cms::getVersion(); $date = isset($configs->install->date) ? $configs->install->date : date('Y-m-d H:i:s'); $author = isset($configs->install->author) ? (array) $configs->install->author : Gio_Core_Cms::getAuthor(); $localization = array('localization' => array('enable' => (string) $configs->localization->enable, 'languages' => array('default' => (string) $configs->localization->languages->default, 'list' => (string) $configs->localization->languages->list, 'details' => array()))); $timezone = array('timezone' => array('date' => (string) $configs->timezone->date, 'datetime' => (string) $configs->timezone->datetime)); if ($configs->localization->languages->list != null) { $list = explode(',', $configs->localization->languages->list); foreach ($list as $value) { $localization['localization']['languages']['details'][$value] = (string) $configs->localization->languages->details->{$value}; } } $configs = $request->getPost('configs'); $localization['localization']['languages']['default'] = $configs['web']['language']; $data = Modules_Core_Services_Installer::validate($configs); if (isset($data['messages_error']) && $data['messages_error']) { $this->view->errorMessages = $data['messages']; $configs = Gio_Core_Array::toObject($configs); $this->view->configs = $configs; return; } $install = array('install' => array('version' => $version, 'date' => $date, 'author' => $author)); $configs = array_merge($configs, $install); $configs = array_merge($configs, $localization); $configs = array_merge($configs, $timezone); $content = utf8_decode(Gio_Core_Array::toXml($configs, 'config')); $fileName = Gio_Core_Config_Xml::getConfigFile(); Gio_Core_File::writeToFile($fileName, $content); Gio_Core_Messenger::getInstance()->addMessage($this->view->TRANSLATOR->translator('website_actions_config_success')); $this->redirect($this->view->url('core_website_config')); break; } } }
public static function getSessionById($sessionId = null, $session = null) { $configs = Gio_Core_Config_Xml::getConfig('session'); $sessionId = $sessionId ? $sessionId : self::getId(); $mysql = new Gio_Db_Mysql(); /** * Clear Session Expried */ $sql = 'DELETE FROM ' . $mysql->_tablePrefix . 'core_session WHERE last_update + lifetime < ' . strtotime(date('Y-m-d H:i:s')); $rs = $mysql->query($sql); $mysql->freeResult($rs); /** * Update Session Status */ $sql = 'UPDATE ' . $mysql->_tablePrefix . 'core_session SET status = "inactive" WHERE last_update + inactive_time < ' . strtotime(date('Y-m-d H:i:s')); $rs = $mysql->query($sql); $mysql->freeResult($rs); /** * */ $sql = 'SELECT * FROM ' . $mysql->_tablePrefix . 'core_session WHERE session_id = "' . $mysql->escape($sessionId) . '" LIMIT 1'; $rs = $mysql->query($sql); $row = 0 == $mysql->count($rs) ? null : $mysql->fetchAll($rs); $json = new Services_JSON(); if (null == $row) { $request = Gio_Core_Request::getInstance(); $session = array('session_id' => $sessionId, 'data' => null, 'created_date' => time(), 'last_update' => time(), 'lifetime' => isset($configs->lifetime) ? $configs->lifetime : 3600, 'inactive_time' => isset($configs->inactive) ? $configs->inactive : 120, 'ip' => $request->getRemoteIp()); $mysql->insert($session, $mysql->_tablePrefix . 'core_session'); return $session; } self::lastUpdate(time(), $row['session_id']); if ($session != null) { self::update($session['data'], $session['session_id']); return $session; } return $row; }
public function myopenidAction() { $this->disableLayout(); $this->setNoRender(); $request = Gio_Core_Request::getInstance(); $this->setLayout('login'); require_once LIB_DIR . DS . 'openid' . DS . 'class.openid.v2.php'; if ($request->isPost()) { $openidUrl = $request->getPost('openid_url'); $openidUrl = rtrim($openidUrl, '/'); $openid = new OpenIDService(); $openid->SetIdentity($openidUrl); $openid->SetTrustRoot($request->getBaseUrl()); $openid->SetRequiredFields(array('email', 'fullname')); $openid->SetOptionalFields(array('dob', 'gender', 'country')); if ($openid->GetOpenIDServer()) { $openid->SetApprovedURL($this->view->url('core_auth_myopenid')); $openid->Redirect(); } else { $error = $openid->GetError(); $error_code = $error["code"]; $error_string = $error["description"]; } } elseif ($request->getParam('openid_mode') == 'id_res') { $openid = new OpenIDService(); $openidUrl = $request->getParam('openid_identity'); $openidUrl = rtrim($openidUrl, '/'); $openid->SetIdentity($openidUrl); $openid_validation_result = $openid->ValidateWithServer(); /** * Login success */ if ($openid_validation_result == true) { $user = Modules_Core_Services_User::getByOpenID($openidUrl); if ($user) { $user['last_login'] = date('Y-m-d H:i:s'); Modules_Core_Services_User::setLastLogin($user); $configs = Gio_Core_Config_Xml::getConfig('session'); $json = new Services_JSON(); $sessionId = session_id(); $session = array('session_id' => $sessionId, 'created_date' => strtotime(date('Y-m-d H:i:s')), 'last_update' => strtotime(date('Y-m-d H:i:s')), 'lifetime' => isset($configs->lifetime) ? $configs->lifetime : 3600, 'inactive_time' => isset($configs->inactive_time) ? $configs->inactive_time : 120, 'data' => $json->encodeUnsafe($user), 'status' => 'active'); Gio_Core_Session::add($session); $this->redirect($this->view->url('core_dashboard_index')); } } } }
private static function _getLang() { $route = Gio_Core_Route::getCurrentRoute(true); $configs = Gio_Core_Config_Xml::getConfig('web'); $lang = $configs->language; if (isset($route['localization']['enable']) && $route['localization']['enable'] == true) { $request = Gio_Core_Request::getInstance(); $lang = $request->getParam('lang'); } return $lang; }
public static function translatablePage($attributes = array(), $lang = null) { $json = new Services_JSON(); $defaultLang = (string) Gio_Core_Config_Xml::getConfig('web')->language; $lang = null == $lang ? $defaultLang : $lang; $elementDisabled = null == $lang || $lang == $defaultLang ? ' disabled="disabled"' : ''; $attributes['selected'] = isset($attributes['selected']) ? $attributes['selected'] : null; $attributes['disabled'] = isset($attributes['disabled']) ? $attributes['disabled'] : null; $pages = self::getTranslatable($lang); $output = sprintf("<select name='%s' id='%s' viewHelperClass='%s' viewHelperAttributes='%s'%s>", $attributes['name'], $attributes['id'], 'Modules_Page_Services_Page::translatablePage', $json->encodeUnsafe($attributes), $elementDisabled) . self::EOL . '<option value=\'{"id": "", "language": ""}\'>---</option>' . self::EOL; foreach ($pages as $page) { $disabled = 0 == (int) $page['translatable'] && (0 == (int) $attributes['disabled'] && $page['page_id'] != (int) $attributes['selected'] || (int) $attributes['disabled'] == (int) $attributes['selected']) ? ' disabled="disabled"' : ''; $selected = $elementDisabled == '' && $disabled == '' && (int) $page['page_id'] == (int) $attributes['selected'] ? ' selected="selected"' : ''; $output .= sprintf("<option value='%s'%s%s>%s</option>", $json->encodeUnsafe(array('id' => $page['page_id'], 'language' => $defaultLang)), $selected, $disabled, str_repeat('---', $page['depth']) . $page['name']) . self::EOL; } $output .= '</select>' . self::EOL; return $output; }
private function _haitugio($article) { ini_set("max_execution_time", 100); ini_set("memory_limit", "256M"); $website = 'http://www.24h.com.vn'; if (isset($article['link_source']) && $article['link_source']) { $html = null; if (($htmlString = @file_get_contents($article['link_source'])) === false) { return $article; } $configs = Gio_Core_Config_Xml::getConfig(); $html = str_get_html($htmlString); $video = false; $pageContent = $html->find('div.content-center', 0); if (!isset($pageContent->innertext) || null == $pageContent->innertext) { $pageContent = $html->find('div.content-center_video', 0); $video = true; } if (null == $pageContent) { return; } $container = $pageContent->find('.baiviet-container', 0); if (!isset($container->innertext) || null == $container->innertext) { $container = $pageContent->find('.baiviet-TopContent', 0); if (null == $container) { return; } $container = $container->find('div.video_container', 0); $video = true; } if ($container) { $content = $container->innertext; $tags = $container->find('div.baiviet-tags', 0); if (isset($tags->outertext)) { $content = str_replace($tags->outertext, '', $content); } $content = preg_replace('/(http:\\/\\/img)(.*)/i', rtrim($configs->web->url, '/') . '/flash.php?url=$1$2', $content); $content = str_replace('file=/upload/', 'file=' . $website . '/upload/', $content); $content = str_replace(',/upload/', ',' . $website . '/upload/', $content); $relates = $container->find('div.box-bai-lien-quan-ngang', 0); if (isset($relates->outertext)) { $content = str_replace($relates->outertext, '', $content); } $content = '<div><b>' . $article['description'] . '</b></div>' . $content; $htmlContent = str_get_html($content); $image = $htmlContent->find('img'); if (count($image) > 0) { for ($i = 0; $i < count($image); $i++) { if (strpos($image[$i]->src, '../') !== false) { $newSrc = rtrim($configs->web->url, '/') . '/images.php?url=' . $website . '/' . str_replace('../', '', $image[$i]->src); $content = str_replace($image[$i]->src, $newSrc, $content); } else { $newSrc = rtrim($configs->web->url, '/') . '/images.php?url=' . $image[$i]->src; $content = str_replace($image[$i]->src, $newSrc, $content); } } } $htmlContent = str_get_html($content); $div = $htmlContent->find('div'); if (isset($div[count($div) - 1]->outertext)) { $content = str_replace($div[count($div) - 1]->outertext, '', $content); } $tables = $htmlContent->find('table'); for ($i = 0; $i < count($tables); $i++) { $content = str_replace($tables[$i]->outertext, '', $content); } $linksExternal = $htmlContent->find('.linkexternal'); for ($i = 0; $i < count($linksExternal); $i++) { $content = str_replace($linksExternal[$i]->outertext, '', $content); } $linksExternal = $htmlContent->find('.link_external'); for ($i = 0; $i < count($linksExternal); $i++) { $content = str_replace($linksExternal[$i]->outertext, '', $content); } $image = $htmlContent->find('img'); $article['content'] = $content; $article['article_video'] = (int) $video; $article['image_url'] = count($image) > 1 ? $image[0]->src : $article['image_url']; } } return $article; }
/** * Display select box listing all articles * which haven't been translated from the default language * * @param $attributes array * @param string $lang * @return string */ public static function translatableArticle($attributes = array(), $lang = null) { $limit = isset($attributes['limit']) ? $attributes['limit'] + 10 : 10; $attributes['limit'] = $limit; $view = Gio_Core_View::getInstance(); $json = new Services_JSON(); $defaultLang = (string) Gio_Core_Config_Xml::getConfig('web')->language; $lang = null == $lang ? $defaultLang : $lang; $elementDisabled = null == $lang || $lang == $defaultLang ? ' disabled="disabled"' : ''; $attributes['selected'] = isset($attributes['selected']) ? $attributes['selected'] : null; $attributes['disabled'] = isset($attributes['disabled']) ? $attributes['disabled'] : null; $articles = self::getTranslatable($lang, $limit, $attributes['selected']); $output = sprintf("<select name='%s' id='%s' viewHelperClass='%s' viewHelperAttributes='%s'%s>", $attributes['name'], $attributes['id'], 'Modules_News_Services_Article::translatableArticle', $json->encodeUnsafe($attributes), $elementDisabled) . self::EOL . '<option value=\'{"id": "", "language": ""}\'>---</option>' . self::EOL; foreach ($articles as $article) { $disabled = 0 == (int) $article['translatable'] && (0 == (int) $attributes['disabled'] && $article['article_id'] != (int) $attributes['selected'] || (int) $attributes['disabled'] == (int) $attributes['selected']) ? ' disabled="disabled"' : ''; $selected = $elementDisabled == '' && $disabled == '' && (int) $article['article_id'] == (int) $attributes['selected'] ? ' selected="selected"' : ''; $output .= sprintf("<option value='%s'%s%s>%s</option>", $json->encodeUnsafe(array('id' => $article['article_id'], 'language' => $defaultLang)), $selected, $disabled, $article['title']) . self::EOL; } $output .= '<option value="">' . $view->TRANSLATOR->translator('helper_translatable_article_more', 'news') . '</option>'; $output .= '</select>' . self::EOL; $id = $attributes['id']; $url = $view->url('core_locale_viewhelper'); $scripts = <<<END \t\t<script type="text/javascript"> \t\t\t\$(document).ready(function() { \t\t\t\t\$('#{$id}').change(function() { \t\t\t\t\tif (\$(this).val() != '') { \t\t\t\t\t\treturn; \t\t\t\t\t} \t\t\t \t\t\t\t\t/** \t\t\t\t\t * Load more articles \t\t\t\t\t */ \t\t\t\t\tvar self = this; \t\t\t\t\tvar parent = \$(self).parent(); \t\t\t\t\t\$(parent).addClass('g_a_ajax_loading'); \t\t\t\t\t \t\t\t\t\t\$.ajaxq('Core_View_Helper_LanguageSelector', { \t\t\t\t\t\turl: '{$url}', \t\t\t\t\t\ttype: 'POST', \t\t\t\t\t\tdata: { \t\t\t\t\t\t\tid: \$(self).attr('id'), \t\t\t\t\t\t\tname: \$(self).attr('name'), \t\t\t\t\t\t\tlanguage: '{$lang}', \t\t\t\t\t\t\tviewHelperClass: \$(self).attr('viewHelperClass'), \t\t\t\t\t\t\tviewHelperAttributes: \$(self).attr('viewHelperAttributes') \t\t\t\t\t\t}, \t\t\t\t\t\tsuccess: function(response) { \t\t\t\t\t\t\t\$(parent).html(response).removeClass('g_a_ajax_loading'); \t\t\t \t\t\t\t\t\t\t/** \t\t\t\t\t\t\t * Disable source items element if user select the default language \t\t\t\t\t\t\t */ \t\t\t\t\t\t\tif ('{$lang}' == '{$defaultLang}') { \t\t\t\t\t\t\t\t\$(self).attr('disabled', 'disabled').find('option:selected').removeAttr('selected'); \t\t\t\t\t\t\t} else { \t\t\t\t\t\t\t\t\$(self).removeAttr('disabled'); \t\t\t\t\t\t\t} \t\t\t\t\t\t} \t\t\t\t\t}); \t\t\t\t}); \t\t\t}); \t\t</script> END; return $output . $scripts; }
public function dispatch() { $cacheType = 'widgets'; $request = $this->_request; /** * XML */ $xmlFilename = array($this->_module, $this->_widget, $this->_action); $xmlFilename = implode('_', $xmlFilename); /** * Check file html cache */ $globalConfig = Gio_Core_Config_Xml::getConfig(); $configs = Gio_Core_Config_Xml::getConfig('cache'); $checkCache = false; if ($configs->enable == 'true' && $this->_cacheEnable == true) { $cacheName = $xmlFilename; $postParams = $request->getPostParams(); $getParams = $request->getParams(); $widgetParams = $this->_params; $json = new Services_JSON(); $cacheParams = !empty($postParams) ? base64_encode($json->encodeUnsafe($postParams)) : null; $cacheParams = !empty($getParams) ? base64_encode($json->encodeUnsafe($getParams)) : null; $cacheParams = !empty($widgetParams) ? base64_encode($json->encodeUnsafe($widgetParams)) : null; $cacheKey = md5($cacheName . $this->_template . $cacheParams . base64_encode($json->encodeUnsafe($globalConfig))); $cacheTimeout = $this->_cacheTimeout ? $this->_cacheTimeout : 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; } } /** * Localization config */ $aboutFile = ROOT_DIR . DS . 'modules' . DS . $this->_module . DS . 'widgets' . DS . $this->_widget . DS . 'about.xml'; if (file_exists($aboutFile)) { $info = @simplexml_load_file($aboutFile); $localization = $info->localization['enable']; if ($localization != null && 'true' == (string) $localization) { $idClass = (string) $info->localization->identifier['class']; $idParam = (string) $info->localization->identifier['param']; $this->_params[$idParam] = isset($this->_params[$idParam]) ? $this->_params[$idParam] : null; $conn = Gio_Db_Connection::getConnection(); $this->_translationDao->setConnection($conn); $items = $this->_translationDao->getItems($this->_params[$idParam], $idClass, $request->getParam('lang')); if ($items != null && 1 == count($items)) { $this->_params[$idParam] = $items[0]['item_id']; } } } $ucfModule = ucfirst($this->_module); $ucfWidget = ucfirst($this->_widget); $widgetClassName = array('Modules', $ucfModule, 'Widgets', $ucfWidget, 'Widget'); $widgetClassName = implode('_', $widgetClassName); $widgetClass = new $widgetClassName(); if (!method_exists($widgetClass, $this->_action . 'Action')) { return; } $widgetClass->setParams($this->_params); call_user_func(array($widgetClass, $this->_action . 'Action')); $widgetDefaultViewFile = MOD_DIR . DS . $this->_module . DS . 'widgets' . DS . $this->_widget . DS . $this->_action . '.phtml'; $widgetViewFile = TEMPLATE_DIR . DS . $this->_template . DS . 'modules' . DS . $this->_module . DS . 'widgets' . DS . $this->_widget . DS . $this->_action . '.phtml'; $widgetViewFile = file_exists($widgetViewFile) ? $widgetViewFile : $widgetDefaultViewFile; $widgetClass->view->cacheEnable = $this->_cacheEnable; $widgetClass->view->cacheTimeout = $this->_cacheTimeout; $return = $widgetClass->view->render($widgetViewFile); if (!isset($this->_params['load']) || $this->_params['load'] != 'ajax') { $jsCss = array('cssFiles' => array(), 'jsFiles' => array()); $search = array('{APP_WEB_URL}', '{APP_STATIC_SERVER}', '{WIDGET_URL}'); $replace = array($this->view->APP_WEB_URL, $this->view->APP_STATIC_SERVER, $this->view->APP_STATIC_SERVER . DS . 'modules' . DS . strtolower($this->_module) . DS . 'widgets' . DS . strtolower($this->_widget)); $configFile = ROOT_DIR . DS . 'modules' . DS . strtolower($this->_module) . DS . 'widgets' . DS . strtolower($this->_widget) . DS . 'about.xml'; if (file_exists($configFile)) { $widgetConfig = @simplexml_load_file($configFile); if ($resources = $widgetConfig->resources) { if ($resources = $resources->resource) { foreach ($resources as $resource) { $attr = $resource->attributes(); switch ((string) $attr['type']) { case 'css': $jsCss['cssFiles'][] = str_replace($search, $replace, (string) $attr['src']); break; case 'javascript': $jsCss['jsFiles'][] = str_replace($search, $replace, (string) $attr['src']); break; } } } } } if ($jsCss['cssFiles']) { foreach ($jsCss['cssFiles'] as $index => $file) { Gio_Core_View::getInstance()->headStyle($file); } } if ($jsCss['jsFiles']) { foreach ($jsCss['jsFiles'] as $index => $file) { Gio_Core_View::getInstance()->headScript($file); } } } if (!$checkCache && $configs->enable == 'true' && $this->_cacheEnable == true) { $cacheCompress = isset($configs->compress) && $configs->compress == 'true' ? true : false; $cacheContent = Gio_Core_View::getInstance()->generateScripts() . Gio_Core_View::getInstance()->generateStyles() . $return; /** * HTML Compress */ if (isset($configs->compress) && $configs->compress == 'true') { $cacheContent = Gio_Core_HtmlCompress::compress($cacheContent); } Gio_Core_Cache::cache($cacheType, $cacheKey, $cacheContent, $cacheCompress); } return $return; }