public function __construct($blocks = array()) { $this->setBlocks($blocks); $configs = Gio_Core_Config_Xml::getConfig(); /** * Not installed GioCMS */ if (!Gio_Core_Application::_initInstallChecker()) { $request = Gio_Core_Request::getInstance(); $configs->server->static = $request->getBaseUrl(); $configs->server->resource = $request->getBaseUrl(); $configs->web->url = $request->getBaseUrl(); } $this->APP_STATIC_SERVER = (string) $configs->server->static; $this->APP_RESOURCE_SERVER = (string) $configs->server->resource; $this->APP_WEB_URL = (string) $configs->web->url; $this->APP_WEB_NAME = (string) $configs->web->name; $this->APP_TEMPLATE = (string) $configs->web->template; $this->APP_SKIN = (string) $configs->web->skin; $this->APP_META_KEYWORD = (string) $configs->web->meta->keyword; $this->APP_META_DESCRIPTION = (string) $configs->web->meta->description; $defaultLanguage = (string) $configs->web->language; //$lang = Gio_Core_Request::getInstance()->getParam('lang'); //$this->APP_LANG = ($lang && $defaultLanguage != $lang) ? $lang : $defaultLanguage; $this->APP_LANG = $defaultLanguage; $routes = Gio_Core_Route::getInstance(); $this->routes = $routes; $string = Gio_Core_String::getInstance(); $this->STRING = $string; $translator = new Gio_Core_Translator(); $this->TRANSLATOR = $translator; if (Gio_Core_Application::_initInstallChecker() == true) { $acl = Gio_Core_Acl::getIntance(); $this->ACL = $acl; } $messenger = Gio_Core_Messenger::getInstance(); $this->MESSENGER = $messenger; if (Gio_Core_Application::_initInstallChecker()) { $user = Gio_Core_Session::getUser(); $this->USER = $user; } /** * JSON */ $json = new Services_JSON(); $this->JSON = $json; $this->CONFIG = $configs; }
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); } }
*/ /** * Check PHP version */ if (version_compare(phpversion(), '5.0.0', '<') === true) { die('ERROR: Your PHP version is ' . phpversion() . '. GioCMS requires PHP 5.0.0 or newer.'); } @session_start(); ini_set("display_errors", 1); error_reporting(E_ALL); date_default_timezone_set('Asia/Saigon'); define('DS', DIRECTORY_SEPARATOR); define('PS', PATH_SEPARATOR); define('ROOT_DIR', dirname(__FILE__)); define('CONFIG_DIR', ROOT_DIR . DS . 'configs'); define('TEMP_DIR', ROOT_DIR . DS . 'temp'); define('TEMPLATE_DIR', ROOT_DIR . DS . 'templates'); define('LIB_DIR', ROOT_DIR . DS . 'libraries'); define('MOD_DIR', ROOT_DIR . DS . 'modules'); set_include_path(PS . LIB_DIR . DS . 'htmlpurifier' . PS . get_include_path()); require LIB_DIR . DS . 'gio' . DS . 'core' . DS . 'AutoLoader.php'; require LIB_DIR . DS . 'PEAR' . DS . 'Services' . DS . 'JSON.php'; /** * Set Exception Handler */ set_exception_handler(array('Gio_Core_Exception', 'exception')); /** * Register plugin */ Gio_Core_Application::getInstance()->registerPlugin('Modules_Core_Controllers_Plugins_OfflineMessage')->registerPlugin('Modules_Core_Controllers_Plugins_AdminAuth')->registerPlugin('Modules_Core_Controllers_Plugins_RuleChecker')->registerPlugin('Modules_Core_Controllers_Plugins_HookLoader')->run();
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 run() { /** * Run Permalink Plugin */ $permalink = new Modules_Core_Controllers_Plugins_Permalink(); call_user_func(array($permalink, 'run')); /** * Run LocalizationRoute Plugin */ $localizationRoute = new Gio_Core_Plugins_LocalizationRoute(); call_user_func(array($localizationRoute, 'run')); /** * Run Install Checker */ $currentRoute = Gio_Core_Route::getCurrentRoute(); self::$_route = $currentRoute; $controllerFront = Gio_Core_Controller::getIntance(); if ($currentRoute && $currentRoute['name'] != 'core_install_step1' && self::_initInstallChecker() === false) { $controllerFront->redirect($this->_view->url('core_install_step1')); return; } if (isset($currentRoute['module']) && isset($currentRoute['controller']) && isset($currentRoute['action'])) { if (self::_initInstallChecker() == true) { $csrf = new Gio_Core_Csrf($currentRoute['name']); if (!$csrf->authentication()) { return; } $csrf->appendElement(); } $controllerFront->setModuleName($currentRoute['module'])->setControllerName($currentRoute['controller'])->setActionName($currentRoute['action']); /** * Run Plugins First */ if (self::_initInstallChecker() == true) { $this->_runPlugin(); } $this->_view->CURRENT_ROUTE = $currentRoute['name']; $content = $controllerFront->dispatch(); $this->_view->setLayoutContent($content); if (!Gio_Core_Controller::getIntance()->getDisableLayout()) { $layout = isset($this->_view->APP_LAYOUT) && $this->_view->APP_LAYOUT ? $this->_view->APP_LAYOUT : $controllerFront->getLayout(); $layoutFile = TEMPLATE_DIR . DS . $this->_view->APP_TEMPLATE . DS . 'layouts' . DS . $layout . '.phtml'; $this->_view->fetch($layoutFile); } else { $this->_view->content($content); } } }
public function step1Action() { /** * Remove all plugins */ Gio_Core_Application::getInstance()->removePlugins(); if (Gio_Core_Application::_initInstallChecker()) { $this->redirect($this->view->url('core_index_index')); } $this->setTemplate('admin'); $this->setLayout('install'); $request = $this->getRequest(); $configs = Gio_Core_Config_Xml::getConfig(); $request = Gio_Core_Request::getInstance(); if ((string) $configs->web->url != $request->getBaseUrl()) { $configs->server->static = $request->getBaseUrl(); $configs->server->resource = $request->getBaseUrl(); $configs->web->url = $request->getBaseUrl(); } $this->view->configs = $configs; $timezone = array('timezone' => array('date' => (string) $configs->timezone->date, 'datetime' => (string) $configs->timezone->datetime)); $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()))); 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}; } } $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; case '': default: $configs = $request->getPost('configs'); $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' => Gio_Core_Cms::getVersion(), 'date' => date('Y-m-d H:i:s'), 'author' => Gio_Core_Cms::getAuthor())); $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); $adminInfo = array('username' => 'admin', 'password' => '123456', 'email' => '*****@*****.**', 'fullname' => 'Ninhgio'); Modules_Core_Services_Installer::install(false, $adminInfo); $this->redirect($this->view->url('core_index_index')); break; } } }