/** * แสดงผล * * @return string */ public function render(Request $request) { // อ่านข้อมูลสมาชิก $model = new Model(); $user = $model->db()->createQuery()->from('user')->where(array('id', (int) $_SESSION['login']['id']))->first(); $template = Template::create('member', 'member', 'profile'); $contents = array('/<NEWREGISTER>(.*)<\\/NEWREGISTER>/isu' => $request->request('action')->toString() === 'newregister' ? '\\1' : '', '/<IDCARD>(.*)<\\/IDCARD>/isu' => empty(self::$cfg->member_idcard) ? '' : '\\1', '/{ACCEPT}/' => Mime::getEccept(self::$cfg->user_icon_typies)); // ข้อมูลฟอร์ม foreach ($user as $key => $value) { if ($key == 'sex') { $datas = array(); foreach (Language::get('SEXES') as $k => $v) { $sel = $k == $value ? ' selected' : ''; $datas[] = '<option value="' . $k . '"' . $sel . '>' . $v . '</option>'; } $contents['/{SEX}/'] = implode('', $datas); } elseif ($key === 'subscrib') { $contents['/{SUBSCRIB}/'] = $value == 1 ? 'checked' : ''; } elseif ($key === 'icon') { if (is_file(ROOT_PATH . self::$cfg->usericon_folder . $value)) { $icon = WEB_URL . self::$cfg->usericon_folder . $value; } else { $icon = WEB_URL . 'skin/img/noicon.jpg'; } $contents['/{ICON}/'] = $icon; } else { $contents['/{' . strtoupper($key) . '}/'] = $value; } } $template->add($contents); // after render Gcms::$view->setContents(array('/:type/' => empty(self::$cfg->user_icon_typies) ? 'jpg' : implode(', ', self::$cfg->user_icon_typies)), false); return $template->render(); }
/** * ค้นหาข้อมูลทั้งหมด * * @param Request $request * @param object $index * @return object */ public static function findAll(Request $request, $index) { // model $model = new static(); $db = $model->db(); // ข้อความค้นหา $index->q = $request->globals(array('POST', 'GET'), 'q')->topic(); $index->words = array(); $where1 = array(); $where2 = array(); // แยกข้อความค้นหาออกเป็นคำๆ ค้นหาข้อความที่มีความยาวมากกว่า 1 ตัวอักษร foreach (explode(' ', $index->q) as $item) { if (mb_strlen($item) > 1) { $index->words[] = $item; $where1[] = array('D.topic', 'LIKE', '%' . $item . '%'); $where1[] = array('D.detail', 'LIKE', '%' . $item . '%'); $where2[] = array('C.detail', 'LIKE', '%' . $item . '%'); } } $index->sqls = array(); $select = array('I.id', 'I.alias', 'M.module', 'M.owner', 'D.topic', 'D.description', 'I.visited', 'I.index'); $q1 = $db->createQuery()->select($select)->from('modules M')->join('index I', 'INNER', array(array('I.module_id', 'M.id'), array('I.published', 1), array('I.published_date', '<=', date('Y-m-d')), array('I.language', array(Language::name(), ''))))->join('index_detail D', 'INNER', array(array('D.id', 'I.id'), array('D.module_id', 'M.id')))->where($where1, 'OR'); $q2 = $db->createQuery()->select($select)->from('comment C')->join('modules M', 'INNER', array('M.id', 'C.module_id'))->join('index I', 'INNER', array(array('I.module_id', 'M.id'), array('I.published', 1), array('I.published_date', '<=', date('Y-m-d')), array('I.language', array(Language::name(), ''))))->join('index_detail D', 'INNER', array(array('D.id', 'I.id'), array('D.module_id', 'M.id')))->where($where2, 'OR'); // union all queries $q3 = $db->createQuery()->union(array($q1, $q2)); // groub by id $index->sqls[] = $db->createQuery()->select()->from(array($q3, 'Q'))->groupBy('Q.id'); // ค้นหาจากโมดูลอื่นๆที่ติดตั้ง foreach (Gcms::$install_owners as $item => $modules) { if ($item != 'index' && is_file(ROOT_PATH . "modules/{$item}/models/search.php")) { include ROOT_PATH . "modules/{$item}/models/search.php"; //createClass(ucfirst($item).'\Search\Model')->findAll($request, $index); } } // union all queries $query = $db->createQuery()->from(array($db->createQuery()->union($index->sqls), 'Z')); // จำนวน $index->total = $query->cacheOn()->count(); // ข้อมูลแบ่งหน้า if (empty($index->list_per_page)) { $index->list_per_page = 20; } $index->page = $request->request('page')->toInt(); $index->totalpage = ceil($index->total / $index->list_per_page); $index->page = max(1, $index->page > $index->totalpage ? $index->totalpage : $index->page); $index->start = $index->list_per_page * ($index->page - 1); $index->end = $index->start + $index->list_per_page > $index->total ? $index->total : $index->start + $index->list_per_page; // query $index->items = $query->select()->order('visited')->limit($index->list_per_page, $index->start)->cacheOn()->execute(); return $index; }
/** * หน้าแก้ไขข้อมูลส่วนตัว * * @param Request $request * @return object */ public function render(Request $request) { if ($login = Login::isMember()) { // tab ที่เลือก $tab = $request->request('tab')->toString(); $member_tabs = array_keys(Gcms::$member_tabs); $tab = in_array($tab, $member_tabs) ? $tab : reset($member_tabs); $index = (object) array('description' => self::$cfg->web_description); // รายการ tabs $tabs = array(); if (!empty($login['fb'])) { unset(Gcms::$member_tabs['password']); } foreach (Gcms::$member_tabs as $key => $values) { if ($values[0] != '') { if ($key == $tab) { $class = "tab select {$key}"; $index->topic = Language::get($values[0]); $className = $values[1]; } else { $class = "tab {$key}"; } if (preg_match('/^http:\\/\\/.*/', $values[1])) { $tabs[] = '<li class="' . $class . '"><a href="' . $values[1] . '">' . Language::get($values[0]) . '</a></li>'; } else { $tabs[] = '<li class="' . $class . '"><a href="{WEBURL}index.php?module=editprofile&tab=' . $key . '">' . Language::get($values[0]) . '</a></li>'; } } } if (empty($className)) { // FB และแก้ไขรหัสผ่าน return createClass('Index\\PageNotFound\\Controller')->init($request, 'index'); } else { $template = Template::create('member', 'member', 'main'); $template->add(array('/{TAB}/' => implode('', $tabs), '/{DETAIL}/' => createClass($className)->render($request))); $index->detail = $template->render(); $index->keywords = $index->topic; // menu $index->menu = 'member'; return $index; } } else { // ไม่ได้ login return createClass('Index\\PageNotFound\\Controller')->init($request, 'index'); } }
/** * แสดงผลหน้าหลักเว็บไซต์ * * @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(); }