/** * แสดงผล sitemap.xml * * @param Request $request */ public function index(Request $request) { // ตัวแปรป้องกันการเรียกหน้าเพจโดยตรง define('MAIN_INIT', __FILE__); // create Response $response = new Response(); // XML $content = '<' . '?xml version="1.0" encoding="UTF-8"?' . '>'; $content .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"'; $content .= ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'; $content .= ' xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9'; $content .= ' http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">'; // วันนี้ $cdate = date('Y-m-d'); // view $view = new \Index\Sitemap\View(); // หน้าหลัก $content .= $view->render(WEB_URL . 'index.php', $cdate); // โมดูลที่ติดตั้งแล้ว $modules = array(); $owners = array(); foreach (\Index\Sitemap\Model::getModules() as $item) { $modules[$item->id] = $item->module; $owners[$item->owner][] = $item->id; $content .= $view->render(Gcms::createUrl($item->module, '', 0, 0, $item->language == '' ? '' : 'lang=' . $item->language), $cdate); } // modules $dir = ROOT_PATH . 'modules/'; $f = @opendir($dir); if ($f) { while (false !== ($owner = readdir($f))) { if ($owner != '.' && $owner != '..' && $owner != 'index') { if (is_file($dir . $owner . '/controllers/sitemap.php')) { include $dir . $owner . '/controllers/sitemap.php'; foreach (createClass(ucfirst($owner) . '\\Sitemap\\Controller')->init($owners[$owner], $modules, $cdate) as $item) { $content .= $view->render($item->url, $item->date); } } } } closedir($f); } $content .= '</urlset>'; // send Response $response->withContent($content)->withHeader('Content-Type', 'application/xml; charset=UTF-8')->send(); }
public function index(Request $request) { if ($request->initSession() && $request->isReferer()) { $user = $this->db()->createQuery()->from('user')->where($request->get('id')->toInt())->cacheOn()->toArray()->first('icon'); if ($user) { if (!empty($user['icon']) && is_file(ROOT_PATH . self::$cfg->usericon_folder . $user['icon'])) { $icon = ROOT_PATH . self::$cfg->usericon_folder . $user['icon']; } } if (empty($icon)) { $icon = is_file(ROOT_PATH . 'skin/' . self::$cfg->skin . '/img/noicon.jpg') ? ROOT_PATH . 'skin/' . self::$cfg->skin . '/img/noicon.jpg' : ROOT_PATH . 'skin/img/noicon.jpg'; } // ตรวจสอบรูป $info = getImageSize($icon); if (empty($info['error'])) { $response = new Response(); $response->withHeaders(array('Pragma' => 'public', 'Cache-Control' => 'max-age=86400', 'Expires' => gmdate('D, d M Y H:i:s GMT', time() + 86400), 'Content-type' => $info['mime']))->withContent(file_get_contents($icon))->send(); } } }
/** * แสดงผลหน้าหลักเว็บไซต์ * * @param Request $request */ public function index(Request $request) { // ตัวแปรป้องกันการเรียกหน้าเพจโดยตรง define('MAIN_INIT', __FILE__); // session cookie $request->initSession(); // ตรวจสอบการ login Login::create(); // กำหนด skin ให้กับ template Template::init($request->get('skin', self::$cfg->skin)->toString()); // backend Gcms::$view = new \Kotchasan\View(); if ($login = Login::adminAccess()) { // โหลดโมดูลที่ติดตั้งแล้ว \Index\Index\Model::installedmodules(); // Controller หลัก $main = new \Index\Main\Controller(); } else { // forgot or login if ($request->request('action')->toString() === 'forgot') { $main = new \Index\Forgot\Controller(); } else { $main = new \Index\Login\Controller(); } } $languages = array(); $uri = $request->getUri(); foreach (array_merge(self::$cfg->languages, Language::installedLanguage()) as $i => $item) { $languages[$item] = '<a id=lang_' . $item . ' href="' . $uri->withParams(array('lang' => $item), true) . '" title="{LNG_Language} ' . strtoupper($item) . '" style="background-image:url(' . WEB_URL . 'language/' . $item . '.gif)" tabindex=1> </a>'; } // เนื้อหา Gcms::$view->setContents(array('/{MAIN}/' => $main->execute($request), '/{VERSION}/' => self::$cfg->version, '/{LANGUAGES}/' => implode('', $languages), '/{TITLE}/' => $main->title() . ' (Admin)', '/{BACKURL(\\?([a-zA-Z0-9=&\\-_@\\.]+))?}/e' => '\\Kotchasan\\View::back')); if ($login) { $name = trim($login['fname'] . ' ' . $login['lname']); Gcms::$view->setContents(array('/{LOGINID}/' => $login['id'], '/{LOGINNAME}/' => empty($name) ? $login['email'] : $name, '/{STATUS}/' => $login['status'], '/{MENUS}/' => \Index\Menu\View::render())); } // ส่งออก เป็น HTML $response = new Response(); $response->withContent(Gcms::$view->renderHTML())->send(); }
/** * ตรวจสอบเวอร์ชั่นใหม่ของ GCMS */ public static function get() { // url ของตัว update $url = 'http://gcms.in.th/gcmsupdate.php?v=' . self::$request->post('v')->filter('0-9a-z\\-\\.'); if ($feedRef = @fopen($url, 'rb')) { $contents = ''; while (!feof($feedRef)) { $contents .= fread($feedRef, 1024); } fclose($feedRef); } elseif ($ch = @curl_init()) { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_HEADER, 0); // method ที่เราจะส่ง เป็น get หรือ post curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // ผลการ execute กลับมาเป็น ข้อมูลใน url ที่เรา ส่งคำร้องขอไป $contents = curl_exec($ch); curl_close($ch); } $response = new Response(); $response->withHeader('Content-type', 'text/html; charset=utf-8')->withContent($contents)->send(); }
/** * แสดงผล index.html * * @param Request $request */ public function index(Request $request) { // ตัวแปรป้องกันการเรียกหน้าเพจโดยตรง define('MAIN_INIT', __FILE__); // session cookie $request->initSession(); // ตรวจสอบการ login Login::create(); // กำหนด skin ให้กับ template self::$cfg->skin = $request->get('skin', self::$request->session('skin', self::$cfg->skin)->toString())->toString(); self::$cfg->skin = is_file(ROOT_PATH . 'skin/' . self::$cfg->skin . '/style.css') ? self::$cfg->skin : 'bighead'; $_SESSION['skin'] = self::$cfg->skin; Template::init(self::$cfg->skin); // ตรวจสอบหน้าที่จะแสดง if (!empty(self::$cfg->maintenance_mode) && !Login::isAdmin()) { Gcms::$view = new \Index\Maintenance\View(); } elseif (!empty(self::$cfg->show_intro) && str_replace(array(BASE_PATH, '/'), '', $request->getUri()->getPath()) == '') { Gcms::$view = new \Index\Intro\View(); } else { // counter และ useronline $new_day = \Index\Counter\Model::init(); // View Gcms::$view = new \Gcms\View(); // โมดูลที่ติดตั้ง $dir = ROOT_PATH . 'modules/'; // โหลดโมดูลทั้งหมด foreach (\Index\Module\Model::getInstalledModule() as $owner) { if (is_file($dir . $owner . '/controllers/init.php')) { include $dir . $owner . '/controllers/init.php'; $class = ucfirst($owner) . '\\Init\\Controller'; if (method_exists($class, 'init')) { createClass($class)->init(); } } if ($new_day && is_file($dir . $owner . '/controllers/cron.php')) { include $dir . $owner . '/controllers/cron.php'; $class = ucfirst($owner) . '\\Cron\\Controller'; if (method_exists($class, 'init')) { createClass($class)->init(); } } } // โหลด Init ของ Widgets $dir = ROOT_PATH . 'Widgets/'; $f = @opendir($dir); if ($f) { while (false !== ($text = readdir($f))) { if ($text != "." && $text != "..") { if (is_dir($dir . $text)) { if (is_file($dir . $text . '/Controllers/Init.php')) { include $dir . $text . '/Controllers/Init.php'; $class = 'Widgets\\' . ucfirst($text) . '\\Controllers\\Init'; if (method_exists($class, 'init')) { createClass($class)->init(); } } } } } closedir($f); } // หน้า home มาจากเมนูรายการแรก $home = Gcms::$menu->homeMenu(); if ($home) { $home->canonical = WEB_URL . 'index.php'; // breadcrumb หน้า home Gcms::$view->addBreadcrumb($home->canonical, $home->menu_text, $home->menu_tooltip, 'icon-home'); } // ตรวจสอบโมดูลที่เรียก $modules = \Index\Module\Controller::get($request->getQueryParams()); if (!empty($modules)) { // โหลดโมดูลที่เรียก $page = createClass($modules->className)->{$modules->method}($request, $modules->module); } if (empty($page)) { // ไม่พบหน้าที่เรียก (index) $page = createClass('Index\\PageNotFound\\Controller')->init($request, 'index'); } // title ของเว็บไซต์ $web_title = strip_tags($page->topic); // meta tag $meta = array('generator' => '<meta name=generator content="GCMS AJAX CMS design by http://gcms.in.th">', 'og:title' => '<meta property="og:title" content="' . $web_title . '">', 'description' => '<meta name=description content="' . $page->description . '">', 'keywords' => '<meta name=keywords content="' . $page->keywords . '">', 'og:site_name' => '<meta property="og:site_name" content="' . $web_title . '">', 'og:type' => '<meta property="og:type" content="article">'); // โมดูลแรกสุด ใส่ลงใน Javascript $module_list = array_keys(Gcms::$install_modules); $script = array('var FIRST_MODULE = "' . reset($module_list) . '";'); // logo $image_logo = ''; if (!empty(self::$cfg->logo) && is_file(ROOT_PATH . DATA_FOLDER . 'image/' . self::$cfg->logo)) { $image_src = WEB_URL . DATA_FOLDER . 'image/' . self::$cfg->logo; $info = getImageSize(ROOT_PATH . DATA_FOLDER . 'image/' . self::$cfg->logo); if ($info[0] > 0 || $info[1] > 0) { $ext = explode('.', self::$cfg->logo); if (strtolower(end($ext)) == 'swf') { $script[] = '$G(window).Ready(function(){'; $script[] = 'if ($E("logo")) {'; $script[] = "new GMedia('logo_swf', '" . $image_src . "', {$info['0']}, {$info['1']}).write('logo');"; $script[] = '}'; $script[] = '});'; } else { $image_logo = '<img src="' . $image_src . '" alt="{WEBTITLE}">'; } } } if (empty($page->image_src)) { if (is_file(ROOT_PATH . DATA_FOLDER . 'image/facebook_photo.jpg')) { $page->image_src = WEB_URL . DATA_FOLDER . 'image/facebook_photo.jpg'; } } elseif (!empty($image_src)) { $page->image_src = $image_src; } if (!empty($page->image_src)) { $meta['image_src'] = '<link rel=image_src href="' . $page->image_src . '">'; $meta['og:image'] = '<meta property="og:image" content="' . $page->image_src . '">'; } if (!empty(self::$cfg->facebook_appId)) { $meta['og:app_id'] = '<meta property="fb:app_id" content="' . self::$cfg->facebook_appId . '">'; } if (isset($page->canonical)) { $meta['canonical'] = '<meta name=canonical content="' . $page->canonical . '">'; $meta['og:url'] = '<meta property="og:url" content="' . $page->canonical . '">'; } $meta['script'] = "<script>\n" . implode("\n", $script) . "\n</script>"; Gcms::$view->setMetas($meta); // ภาษาที่ติดตั้ง $languages = Template::create('', '', 'language'); foreach (self::$cfg->languages as $lng) { $languages->add(array('/{LNG}/' => $lng)); } // เมนูหลัก Gcms::$view->setContents(Gcms::$menu->render(isset($page->menu) ? $page->menu : $page->module)); // เนื้อหา Gcms::$view->setContents(array('/{CONTENT}/' => $page->detail, '/{TITLE}/' => $web_title, '/{LANGUAGES}/' => $languages->render(), '/{LOGO}/' => $image_logo)); } // ส่งออก เป็น HTML $response = new Response(); $response->withContent(Gcms::$view->renderHTML())->send(); }
/** * export database to file */ public function export() { // referer, session, member if (self::$request->initSession() && self::$request->isReferer() && ($login = Login::isAdmin())) { if ($login['email'] != 'demo' && empty($login['fb'])) { $sqls = array(); $rows = array(); $database = array(); $datas = array(); foreach (self::$request->getParsedBody() as $table => $values) { foreach ($values as $k => $v) { if (isset($datas[$table][$v])) { $datas[$table][$v]++; } else { $datas[$table][$v] = 1; } } } $web_url = str_replace(array('http://', 'https://', 'www.'), '', WEB_URL); $web_url = '/http(s)?:\\/\\/(www\\.)?' . preg_quote($web_url, '/') . '/'; // database $model = new static(); // ชื่อฐานข้อมูล $fname = $model->getSetting('dbname') . '.sql'; // memory limit ini_set('memory_limit', '1024M'); // prefix $prefix = $model->getSetting('prefix'); // ตารางทั้งหมด $tables = $model->db()->customQuery('SHOW TABLE STATUS', true); // ตารางทั้งหมด foreach ($tables as $table) { if (preg_match('/^' . $prefix . '(.*?)$/', $table['Name']) && isset($datas[$table['Name']])) { $fields = $model->db()->customQuery('SHOW FULL FIELDS FROM ' . $table['Name'], true); $primarykey = array(); $rows = array(); foreach ($fields as $field) { if ($field['Key'] == 'PRI') { $primarykey[] = '`' . $field['Field'] . '`'; } $database[$table['Name']]['Field'][] = $field['Field']; $rows[] = '`' . $field['Field'] . '` ' . $field['Type'] . ($field['Collation'] != '' ? ' collate ' . $field['Collation'] : '') . ($field['Null'] == 'NO' ? ' NOT NULL' : '') . ($field['Default'] != '' ? " DEFAULT '" . $field['Default'] . "'" : '') . ($field['Extra'] != '' ? ' ' . $field['Extra'] : ''); } if (sizeof($primarykey) > 0) { $rows[] = 'PRIMARY KEY (' . implode(',', $primarykey) . ')'; } if (isset($datas[$table['Name']]['sturcture'])) { $table_name = $prefix == '' ? $table['Name'] : preg_replace('/^' . $prefix . '/', '{prefix}', $table['Name']); $sqls[] = 'DROP TABLE IF EXISTS `' . $table_name . '`;'; $q = 'CREATE TABLE `' . $table_name . '` (' . implode(',', $rows) . ') ENGINE=' . $table['Engine']; $q .= ' DEFAULT CHARSET=' . preg_replace('/([a-zA-Z0-9]+)_.*?/Uu', '\\1', $table['Collation']) . ' COLLATE=' . $table['Collation']; $q .= ($table['Create_options'] != '' ? ' ' . strtoupper($table['Create_options']) : '') . ';'; $sqls[] = $q; } } } // ข้อมูลในตาราง foreach ($tables as $table) { if (preg_match('/^' . $prefix . '(.*?)$/', $table['Name'], $match)) { if ($match[1] == '_emailtemplate') { if (isset($datas[$table['Name']]['datas'])) { if (($key = array_search('id', $database[$table['Name']]['Field'])) !== false) { unset($database[$table['Name']]['Field'][$key]); } $table_name = $prefix == '' ? $table['Name'] : preg_replace('/^' . $prefix . '/', '{prefix}', $table['Name']); $data = "INSERT INTO `{$table_name}` (`" . implode('`, `', $database[$table['Name']]['Field']) . "`) VALUES ('%s');"; $records = $model->db()->customQuery('SELECT * FROM ' . $table['Name'], true); foreach ($records as $record) { foreach ($record as $field => $value) { if ($field === 'copy_to' || $field === 'from_email') { $record[$field] = $value == $login['email'] ? '{WEBMASTER}' : ''; } elseif ($field == 'id') { unset($record['id']); } else { $record[$field] = addslashes(preg_replace($web_url, '{WEBURL}', $value)); } } $sqls[] = preg_replace(array('/[\\r]/u', '/[\\n]/u'), array('\\r', '\\n'), sprintf($data, implode("','", $record))); } } } elseif (isset($datas[$table['Name']]['datas'])) { $table_name = $prefix == '' ? $table['Name'] : preg_replace('/^' . $prefix . '/', '{prefix}', $table['Name']); $data = "INSERT INTO `{$table_name}` (`" . implode('`, `', $database[$table['Name']]['Field']) . "`) VALUES ('%s');"; $records = $model->db()->customQuery('SELECT * FROM ' . $table['Name'], true); foreach ($records as $record) { foreach ($record as $field => $value) { $record[$field] = addslashes(preg_replace($web_url, '{WEBURL}', $value)); } $sqls[] = preg_replace(array('/[\\r]/u', '/[\\n]/u'), array('\\r', '\\n'), sprintf($data, implode("','", $record))); } } } } // send file $response = new Response(); $response->withHeaders(array('Content-Type' => 'application/force-download', 'Content-Disposition' => 'attachment; filename=' . $fname))->withContent(preg_replace(array('/[\\\\]+/', '/\\\\"/'), array('\\', '"'), implode("\r\n", $sqls)))->send(); exit; } } // ไม่สามารถดาวน์โหลดได้ $response = new Response(404); $response->withContent('File Not Found!')->send(); }