/** * ฟอร์มสมาชิก * * @param array $login * @return string */ public function member($login) { $template = Template::create('member', 'member', 'member'); if ($template->isEmpty()) { $template = Template::create('member', 'member', 'memberfrm'); } $template->add(array('/{LNG_([^}]+)}/e' => '\\Kotchasan\\Language::get(array(1=>"$1"))', '/{WEBTITLE}/' => self::$cfg->web_title, '/{SUBTITLE}/' => empty(Login::$login_message) ? self::$cfg->web_description : '<span class=error>' . Login::$login_message . '</span>', '/{DISPLAYNAME}/' => empty($login['displayname']) ? $login['email'] : $login['displayname'], '/{ID}/' => (int) $login['id'], '/{STATUS}/' => $login['status'], '/{ADMIN}/' => $login && Login::isAdmin() ? '' : 'hidden', '/{WEBURL}/' => WEB_URL, '/:name/' => self::$cfg->member_status[1])); return $template->render(); }
/** * แสดงผล 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(); }
/** * ฟังก์ชั่นส่งอีเมล์ */ public function save() { $ret = array(); // referer, session, member if (self::$request->initSession() && self::$request->isSafe() && ($login = Login::adminAccess())) { if ($login['email'] == 'demo') { $ret['alert'] = Language::get('Unable to complete the transaction'); } else { // รับค่าจากการ POST $save = array('reciever' => self::$request->post('reciever')->toString(), 'from' => self::$request->post('from')->toString(), 'subject' => self::$request->post('subject')->topic(), 'detail' => self::$request->post('detail')->toString()); // ตรวจสอบค่าที่ส่งมา $input = false; // reciever if (!empty($save['reciever'])) { foreach (explode(',', $save['reciever']) as $item) { if (!Validator::email($item)) { if (!$input) { $input = 'reciever'; break; } } } } else { $ret['reciever'] = ''; } // subject if (empty($save['subject'])) { $input = !$input ? 'subject' : $input; } else { $ret['ret_subject'] = ''; } // from if (Login::isAdmin()) { if ($save['from'] == self::$cfg->noreply_email) { $save['from'] = self::$cfg->noreply_email . '<' . strip_tags(self::$cfg->web_title) . '>'; } else { $user = $this->db()->createQuery()->from('user')->where(array('email', $save['from']))->first('email', 'displayname'); if ($user) { $save['from'] = $user->email . (empty($user->displayname) ? '' : '<' . $user->displayname . '>'); } else { // ไม่พบผู้ส่ง ให้ส่งโดยตัวเอง $save['from'] = $login['email']; } } } else { // ไม่ใช่แอดมิน ผู้ส่งเป็นตัวเองเท่านั้น $save['from'] = $login['email']; } // detail $patt = array('/^( |\\s){0,}<br[\\s\\/]+?>( |\\s){0,}$/iu' => '', '/<\\?(.*?)\\?>/su' => '', '@<script[^>]*?>.*?</script>@siu' => ''); $save['detail'] = trim(preg_replace(array_keys($patt), array_values($patt), $save['detail'])); if (!$input) { $err = Email::send($save['reciever'], $save['from'], $save['subject'], $save['detail']); if (empty($err)) { // ส่งอีเมล์สำเร็จ $ret['alert'] = Language::get('Your message was sent successfully'); $ret['location'] = self::$request->getUri()->postBack('index.php', array('id' => 0)); } else { // ข้อผิดพลาดการส่งอีเมล์ $ret['alert'] = $err; } // clear self::$request->removeToken(); } else { // คืนค่า input ตัวแรกที่ error $ret['input'] = $input; } } } else { $ret['alert'] = Language::get('Unable to complete the transaction'); } // คืนค่าเป็น JSON echo json_encode($ret); }