/** * รับค่าจาก action */ public function action() { $ret = array(); // referer, session, admin if (self::$request->initSession() && self::$request->isReferer() && ($login = Login::isAdmin())) { if (empty($login['fb'])) { // ค่าที่ส่งมา $type = self::$request->post('type')->toString(); $type = $type == 'js' ? 'js' : 'php'; $id = self::$request->post('id')->toString(); $action = self::$request->post('action')->toString(); if ($action == 'delete') { // โหลดภาษา $datas = Language::installed($type); // ลบรายการที่ส่งมา $datas = ArrayTool::delete($datas, $id); // save $error = Language::save($datas, $type); if (empty($error)) { $ret['location'] = 'reload'; } else { $ret['alert'] = $error; } } } } else { $ret['alert'] = Language::get('Unable to complete the transaction'); } echo json_encode($ret); }
/** * แสดงผล * * @return string */ public function render() { $template = Template::create('', '', '404'); $message = Language::get('Sorry, cannot find a page called Please check the URL or try the call again.'); $template->add(array('/{TOPIC}/' => $message, '/{DETAIL}/' => $message)); return (object) array('topic' => $message, 'detail' => $template->render(), 'description' => $message, 'keywords' => $message, 'module' => '404', 'owner' => 'index'); }
/** * แสดงผล */ public function render() { // แอดมิน if (Login::isAdmin()) { // ภาษาที่ต้องการ $language = self::$request->get('language', Language::name())->toString(); if (preg_match('/^[a-z]{2,2}$/', $language)) { // intro detail $template = ROOT_PATH . DATA_FOLDER . 'intro.' . $language . '.php'; if (is_file($template)) { $template = trim(preg_replace('/<\\?php exit([\\(\\);])?\\?>/', '', file_get_contents($template))); } else { $template = '<p style="padding: 20px; text-align: center; font-weight: bold;"><a href="index.php">Welcome<br>ยินดีต้อนรับ</a></p>'; } // แสดงผล $section = Html::create('section'); // breadcrumbs $breadcrumbs = $section->add('div', array('class' => 'breadcrumbs')); $ul = $breadcrumbs->add('ul'); $ul->appendChild('<li><span class="icon-settings">{LNG_Site settings}</span></li>'); $ul->appendChild('<li><span>{LNG_Intro Page}</span></li>'); $section->add('header', array('innerHTML' => '<h1 class="icon-write">' . $this->title() . '</h1>')); // แสดงฟอร์ม $section->appendChild(createClass('Index\\Intro\\View')->render($language, $template)); return $section->render(); } } // 404.html return \Index\Error\Controller::page404(); }
/** * แสดงผล */ public function render($login) { // send email form $form = Html::create('form', array('id' => 'write_frm', 'class' => 'setup_frm', 'action' => 'index.php/index/model/sendmail/save', 'onsubmit' => 'doFormSubmit', 'token' => true, 'ajax' => true)); $fieldset = $form->add('fieldset', array('title' => '{LNG_Details of} {LNG_Email}')); // reciever $reciever = self::$request->get('to')->topic(); $fieldset->add('text', array('id' => 'reciever', 'itemClass' => 'item', 'labelClass' => 'g-input icon-email-sent', 'label' => '{LNG_Reciever}', 'comment' => '{LNG_Recipient's Email Address Many can be found Each separated by, (comma).}', 'autofocus', 'value' => $reciever)); // email_from $datas = array($login['email'] => $login['email']); if (Login::isAdmin() && empty($login['fb'])) { $datas[self::$cfg->noreply_email] = self::$cfg->noreply_email; foreach (\Index\Sendmail\Model::findAdmin(self::$request) as $item) { $datas[$item] = $item; } } $fieldset->add('select', array('id' => 'from', 'itemClass' => 'item', 'labelClass' => 'g-input icon-email', 'label' => '{LNG_Sender}', 'options' => $datas)); // subject $fieldset->add('text', array('id' => 'subject', 'itemClass' => 'item', 'labelClass' => 'g-input icon-edit', 'label' => '{LNG_Subject}', 'comment' => '' . '{LNG_Please fill in} {LNG_Subject}')); // detail $fieldset->add('ckeditor', array('id' => 'detail', 'itemClass' => 'item', 'height' => 300, 'language' => Language::name(), 'toolbar' => 'Email', 'label' => '{LNG_Detail}', 'value' => Template::load('', '', 'mailtemplate'))); $fieldset = $form->add('fieldset', array('class' => 'submit')); // submit $fieldset->add('submit', array('class' => 'button ok large', 'value' => '{LNG_Send message}')); return $form->render(); }
/** * แสดงผล * * @return string */ public function render() { // อ่านข้อมูลสมาชิก $rs = Recordset::create('Index\\User\\Model'); $user = $rs->where((int) $_SESSION['login']['id'])->first('id'); $template = Template::create('member', 'member', 'password'); $contents = array('/{ACCEPT}/' => Mime::getEccept(self::$cfg->user_icon_typies), '/{USER_ICON_TYPIES}/' => sprintf(Language::get('Upload a picture of %s resize automatically'), empty(self::$cfg->user_icon_typies) ? 'jpg' : implode(', ', self::$cfg->user_icon_typies))); // ข้อมูลฟอร์ม foreach ($user as $key => $value) { if ($key == 'sex') { $source = Language::get('SEXES'); $datas = array(); foreach ($source as $k => $v) { $sel = $k == $value ? ' selected' : ''; $datas[] = '<option value="' . $k . '"' . $sel . '>' . $v . '</option>'; } $contents['/{' . strtoupper($key) . '}/'] = implode('', $datas); } elseif ($key === 'subscrib') { $contents['/{' . strtoupper($key) . '}/'] = $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); return $template->render(); }
/** * action */ public static function action() { $ret = array(); // referer, session, admin if (self::$request->initSession() && self::$request->isReferer() && ($login = Login::isAdmin())) { if ($login['email'] == 'demo') { $ret['alert'] = Language::get('Unable to complete the transaction'); } else { if (self::$request->post('action')->toString() === 'delete') { $id = self::$request->post('action')->toInt(); $rs = Recordset::create(get_called_class()); $index = $rs->find($id); if ($index) { $index->delete(); } // คืนค่า $ret['delete_id'] = self::$request->post('src')->toString() . '_' . $id; $ret['alert'] = Language::get('Deleted successfully'); } } } else { $ret['alert'] = Language::get('Unable to complete the transaction'); } // คืนค่าเป็น JSON echo json_encode($ret); }
/** * แสดงผล * * @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(); }
/** * แสดงผล */ public function render() { // แอดมิน if (Login::isAdmin()) { // ภาษาที่ต้องการ $language = self::$request->get('language', Language::name())->toString(); if (preg_match('/^[a-z]{2,2}$/', $language)) { // maintenance detail $template = ROOT_PATH . DATA_FOLDER . 'maintenance.' . $language . '.php'; if (is_file($template)) { $template = trim(preg_replace('/<\\?php exit([\\(\\);])?\\?>/', '', file_get_contents($template))); } else { $template = '<p style="padding: 20px; text-align: center; font-weight: bold;">Website Temporarily Closed for Maintenance, Please try again in a few minutes.<br>ปิดปรับปรุงเว็บไซต์ชั่วคราวเพื่อบำรุงรักษา กรุณาลองใหม่ในอีกสักครู่</p>'; } // แสดงผล $section = Html::create('section'); // breadcrumbs $breadcrumbs = $section->add('div', array('class' => 'breadcrumbs')); $ul = $breadcrumbs->add('ul'); $ul->appendChild('<li><span class="icon-settings">{LNG_Site settings}</span></li>'); $ul->appendChild('<li><span>{LNG_Maintenance Mode}</span></li>'); $section->add('header', array('innerHTML' => '<h1 class="icon-write">' . $this->title() . '</h1>')); // แสดงฟอร์ม $section->appendChild(createClass('Index\\Maintenance\\View')->render($language, $template)); return $section->render(); } } // 404.html return \Index\Error\Controller::page404(); }
/** * module=mailserver * * @param object $config * @return string */ public function render($config) { // form $form = Html::create('form', array('id' => 'setup_frm', 'class' => 'setup_frm', 'autocomplete' => 'off', 'action' => 'index.php/index/model/mailserver/save', 'onsubmit' => 'doFormSubmit', 'ajax' => true)); $fieldset = $form->add('fieldset', array('title' => '{LNG_General}')); // noreply_email $fieldset->add('text', array('id' => 'noreply_email', 'labelClass' => 'g-input icon-email', 'itemClass' => 'item', 'label' => '{LNG_noreply email}', 'comment' => '{LNG_Email addresses for sender and do not reply such as no-reply@domain.tld}', 'maxlength' => 255, 'value' => isset($config->noreply_email) ? $config->noreply_email : self::$cfg->noreply_email)); // email_charset $fieldset->add('text', array('id' => 'email_charset', 'labelClass' => 'g-input icon-language', 'itemClass' => 'item', 'label' => '{LNG_Email encoding}', 'comment' => '{LNG_Specify the language code of the email, as utf-8}', 'value' => isset($config->email_charset) ? $config->email_charset : self::$cfg->email_charset)); // email_use_phpMailer $fieldset->add('select', array('id' => 'email_use_phpMailer', 'labelClass' => 'g-input icon-clock', 'itemClass' => 'item', 'label' => '{LNG_Mail program}', 'comment' => '{LNG_Set the application for send an email}', 'options' => Language::get('MAIL_PROGRAMS'), 'value' => isset($config->email_use_phpMailer) ? $config->email_use_phpMailer : self::$cfg->email_use_phpMailer)); // ตั้งค่า mail server $fieldset = $form->add('fieldset', array('title' => '{LNG_Mail Server Settings}')); // email_Host $fieldset->add('text', array('id' => 'email_Host', 'labelClass' => 'g-input icon-world', 'itemClass' => 'item', 'label' => '{LNG_Mail server}', 'comment' => '{LNG_The name of the mail server as localhost or smtp.gmail.com (To change the settings of your email is the default. To remove this box entirely.)}', 'value' => isset($config->email_Host) ? $config->email_Host : self::$cfg->email_Host)); // email_Port $fieldset->add('number', array('id' => 'email_Port', 'labelClass' => 'g-input icon-config', 'itemClass' => 'item', 'label' => '{LNG_Port}', 'comment' => '{LNG_Mail server port number (default is 25, for GMail used 465, 587 for DirectAdmin).}', 'value' => isset($config->email_Port) ? $config->email_Port : self::$cfg->email_Port)); // email_SMTPAuth $fieldset->add('select', array('id' => 'email_SMTPAuth', 'labelClass' => 'g-input icon-config', 'itemClass' => 'item', 'label' => '{LNG_Authentication require}', 'comment' => '{LNG_How to define user authentication for mail servers. If you enable it, you must configure below correctly.}', 'options' => Language::get('BOOLEANS'), 'value' => isset($config->email_SMTPAuth) ? $config->email_SMTPAuth : self::$cfg->email_SMTPAuth)); // email_SMTPSecure $fieldset->add('select', array('id' => 'email_SMTPSecure', 'labelClass' => 'g-input icon-config', 'itemClass' => 'item', 'label' => '{LNG_SSL support}', 'comment' => '{LNG_Enable SSL encryption for sending email}', 'options' => Language::get('SMTPSECURIES'), 'value' => isset($config->email_SMTPSecure) ? $config->email_SMTPSecure : self::$cfg->email_SMTPSecure)); // email_Username $fieldset->add('text', array('id' => 'email_Username', 'labelClass' => 'g-input icon-user', 'itemClass' => 'item', 'label' => '{LNG_Username}', 'comment' => '{LNG_Username for the mail server. (To change, enter a new value.)}', 'value' => isset($config->email_Username) ? $config->email_Username : self::$cfg->email_Username)); // email_Password $fieldset->add('text', array('id' => 'email_Password', 'labelClass' => 'g-input icon-password', 'itemClass' => 'item', 'label' => '{LNG_Password}', 'comment' => '{LNG_Password of the mail server. (To change the fill.)}')); $fieldset = $form->add('fieldset', array('class' => 'submit')); // submit $fieldset->add('submit', array('class' => 'button ok large', 'value' => '{LNG_Save}')); $form->script('initMailserver();'); return $form->render(); }
/** * แสดงผล */ public function render() { // แอดมิน if (Login::isAdmin()) { // รายการที่ต้องการ $index = \Index\Mailwrite\Model::getIndex(self::$request->get('id')->toInt()); // สร้างหรือแก้ไข $title = Language::get(empty($index->id) ? 'Create' : 'Edit'); // แสดงผล $section = Html::create('section'); // breadcrumbs $breadcrumbs = $section->add('div', array('class' => 'breadcrumbs')); $ul = $breadcrumbs->add('ul'); $ul->appendChild('<li><span class="icon-settings">{LNG_Site settings}</span></li>'); $ul->appendChild('<li><a href="{BACKURL?module=mailtemplate&id=0}">{LNG_Email template}</a></li>'); $ul->appendChild('<li><span>' . $title . '</span></li>'); $section->add('header', array('innerHTML' => '<h1 class="icon-write">' . $title . ' ' . $index->name . '</h1>')); if ($index) { // แสดงฟอร์ม $section->appendChild(createClass('Index\\Mailwrite\\View')->render($index)); return $section->render(); } } // 404.html return \Index\Error\Controller::page404(); }
/** * form submit */ public function save() { $ret = array(); // referer, session, member if (self::$request->initSession() && self::$request->isReferer() && ($login = Login::isAdmin())) { if ($login['email'] == 'demo') { $ret['alert'] = Language::get('Unable to complete the transaction'); } else { // โหลด config $config = Config::load(ROOT_PATH . 'settings/config.php'); $config->member_reserv = array(); foreach (explode("\n", self::$request->post('member_reserv')->text()) as $item) { $config->member_reserv[] = trim($item); } $config->wordrude = array(); foreach (explode("\n", self::$request->post('wordrude')->text()) as $item) { $config->wordrude[] = trim($item); } $config->wordrude_replace = self::$request->post('wordrude_replace', 'xxx')->toString(); $config->counter_digit = max(4, self::$request->post('counter_digit')->toInt()); // save config if (Config::save($config, ROOT_PATH . 'settings/config.php')) { $ret['alert'] = Language::get('Saved successfully'); $ret['location'] = 'reload'; } else { $ret['alert'] = sprintf(Language::get('File %s cannot be created or is read-only.'), 'settings/config.php'); } } } else { $ret['alert'] = Language::get('Unable to complete the transaction'); } // คืนค่าเป็น JSON echo json_encode($ret); }
/** * module=menuwrite * * @param object $menu * @return string */ public function render($menu) { // form $form = Html::create('form', array('id' => 'setup_frm', 'class' => 'setup_frm', 'autocomplete' => 'off', 'action' => 'index.php/index/model/menuwrite/save', 'onsubmit' => 'doFormSubmit', 'ajax' => true)); $fieldset = $form->add('fieldset', array('title' => '{LNG_Menu details}')); $groups = $fieldset->add('groups-table', array('label' => '{LNG_Language}', 'id' => 'language', 'comment' => '{LNG_Select the language of this item (Select the first Is present in every language)}')); // language $groups->add('select', array('id' => 'language', 'labelClass' => 'g-input icon-language', 'itemClass' => 'width', 'options' => ArrayTool::replace(array('' => '{LNG_all languages}'), Language::installedLanguage()), 'value' => empty($menu->id) ? '' : $menu->language)); $groups->add('a', array('id' => 'copy_menu', 'class' => 'button icon-copy copy', 'title' => '{LNG_Copy this item to the selected language}')); // menu_text $fieldset->add('text', array('id' => 'menu_text', 'labelClass' => 'g-input icon-menus', 'itemClass' => 'item', 'label' => '{LNG_Text}', 'comment' => '{LNG_Text displayed on the menu}', 'maxlength' => 100, 'value' => $menu->menu_text)); // menu_tooltip $fieldset->add('text', array('id' => 'menu_tooltip', 'labelClass' => 'g-input icon-edit', 'itemClass' => 'item', 'label' => '{LNG_Tooltip}', 'comment' => '{LNG_Message when mouse over the menu}', 'maxlength' => 100, 'value' => $menu->menu_tooltip)); // accesskey $fieldset->add('text', array('id' => 'accesskey', 'labelClass' => 'g-input icon-keyboard', 'itemClass' => 'item', 'label' => '{LNG_Accesskey}', 'comment' => '{LNG_Enter lowercase English letters or numbers to be used as a shortcut to this menu. (Sub-menus do not support the shortcut menu. Do not duplicate keys of the system shortcut)}', 'value' => $menu->accesskey)); $fieldset = $form->add('fieldset', array('title' => '{LNG_Installation and position of the menu}')); // alias $fieldset->add('text', array('id' => 'alias', 'labelClass' => 'g-input icon-edit', 'itemClass' => 'item', 'label' => '{LNG_Alias}', 'comment' => '{LNG_The name of the menu (the default is the name of the module is installed)}', 'value' => $menu->alias)); // parent $fieldset->add('select', array('id' => 'parent', 'labelClass' => 'g-input icon-config', 'itemClass' => 'item', 'label' => '{LNG_Menu position}', 'comment' => '{LNG_Select the menu position. The menu will be displayed on the website at the selected position. (Based on templates you are using)}', 'options' => Language::find('MENU_PARENTS', array('MAINMENU' => 'Main menu')), 'value' => $menu->parent)); // type if ($menu->menu_order == 1) { $m = 0; } elseif ($menu->level == 0) { $m = 1; } elseif ($menu->level == 1) { $m = 2; } else { $m = 3; } $fieldset->add('select', array('id' => 'type', 'labelClass' => 'g-input icon-config', 'itemClass' => 'item', 'label' => '{LNG_Menu type}', 'comment' => '{LNG_Select the type of menu}', 'options' => Language::get('MENU_TYPES'), 'value' => $m)); // menu_order $fieldset->add('select', array('id' => 'menu_order', 'labelClass' => 'g-input icon-config', 'itemClass' => 'item', 'label' => '{LNG_Menu order}', 'size' => 8, 'comment' => '{LNG_The sequence of the desired menu. The menu will be displayed next from the selected item}')); // published $fieldset->add('select', array('id' => 'published', 'labelClass' => 'g-input icon-published1', 'itemClass' => 'item', 'label' => '{LNG_Status}', 'comment' => '{LNG_Publish this item}', 'options' => Language::get('MENU_PUBLISHEDS'), 'value' => $menu->published)); $fieldset = $form->add('fieldset', array('id' => 'menu_action', 'title' => '{LNG_Action when click on menu}')); // action if ($menu->menu_url != '') { $m = 2; } elseif ($menu->index_id == 0) { $m = 0; } else { $m = 1; } $fieldset->add('select', array('id' => 'action', 'labelClass' => 'g-input icon-config', 'itemClass' => 'item', 'label' => '{LNG_When choosing the menu}', 'comment' => '{LNG_Choose how to proceed. When you click on the menu}', 'options' => Language::get('MENU_ACTIONS'), 'value' => $m)); // index_id $fieldset->add('select', array('id' => 'index_id', 'labelClass' => 'g-input icon-modules', 'itemClass' => 'item action 1', 'label' => '{LNG_installed module}', 'comment' => '{LNG_Choose the page you want to open when you click a menu item from a list of web pages or modules already installed}', 'optgroup' => \Index\Menuwrite\Model::getModules(), 'value' => $menu->owner . '_' . $menu->index_id)); // menu_url $fieldset->add('text', array('id' => 'menu_url', 'labelClass' => 'g-input icon-world', 'itemClass' => 'item action 2', 'label' => '{LNG_URL}', 'comment' => '{LNG_Links for this item, which will open this page when click on it}', 'value' => str_replace(array('{', '}'), array('{', '}'), $menu->menu_url))); // menu_target $fieldset->add('select', array('id' => 'menu_target', 'labelClass' => 'g-input icon-forward', 'itemClass' => 'item action 1 2', 'label' => '{LNG_The opening page of links}', 'comment' => '{LNG_Determine how to turn the page when a link is clicked}', 'options' => Language::get('MENU_TARGET'), 'value' => $menu->menu_target)); $fieldset = $form->add('fieldset', array('class' => 'submit')); // submit $fieldset->add('submit', array('class' => 'button ok large', 'value' => '{LNG_Save}')); // id $fieldset->add('hidden', array('id' => 'id', 'value' => $menu->id)); $form->script('initMenuwrite();'); return $form->render(); }
/** * จัดการแสดงผลแถวของตาราง * * @param array $item * @return array */ public function onRow($item) { $item['key'] = Form::text(array('name' => 'save_array[]', 'labelClass' => 'g-input', 'value' => $item['key']))->render(); foreach (Language::installedLanguage() as $key) { $item[$key] = Form::textarea(array('name' => 'language_' . $key . '[]', 'labelClass' => 'g-input', 'value' => isset($item[$key]) ? $item[$key] : ''))->render(); } return $item; }
/** * จัดรูปแบบการแสดงผลในแต่ละแถว * * @param array $item * @return array */ public function onRow($item) { $publisheds = Language::get('PUBLISHEDS'); $item['published'] = '<a id=published_' . $item['id'] . ' class="icon-published' . $item['published'] . '" title="' . $publisheds[$item['published']] . '"></a>'; $item['last_update'] = Date::format($item['last_update'], 'd M Y H:i'); $item['language'] = empty($item['language']) ? '' : '<img src="' . WEB_URL . 'language/' . $item['language'] . '.gif" alt="' . $item['language'] . '">'; return $item; }
/** * ตรวจสอบโมดูลที่เรียก * * @return array */ public static function getModule($module, $date) { if (defined('MAIN_INIT')) { $model = new static(); return $model->db()->createQuery()->from('index I')->join('modules M', 'INNER', array('M.id', 'I.module_id'))->join('index_detail D', 'INNER', array(array('D.id', 'I.id'), array('D.module_id', 'I.module_id'), array('D.language', array(Language::name(), ''))))->where(array(array('I.index', 1), array('M.module', $module), array('I.published', 1), array('I.published_date', '<=', $date)))->cacheOn()->first('M.id module_id', 'M.module', 'M.owner', 'D.topic', 'D.description', 'M.config'); } else { // เรียก method โดยตรง new \Kotchasan\Http\NotFound('Do not call method directly'); } }
/** * อ่านข้อมูลโมดูลจากชื่อโมดูล * * @param string $module * @param type $owner * @return object|false คืนค่าข้อมูล object ไม่พบ คืนค่า false */ public static function getModule($module, $owner) { if (is_string($module) && is_string($owner)) { $model = new \Kotchasan\Model(); $select = array('I.id', 'I.module_id', 'M.module', 'M.owner', 'D.topic', 'D.description', 'D.keywords', 'D.detail', 'I.visited'); $where = array(array('I.index', 1), array('M.module', $module), array('M.owner', $owner), array('I.published', 1), array('I.published_date', '<=', Date::mktimeToSqlDate(time())), array('D.language', array(Language::name(), ''))); return $model->db()->createQuery()->from('index I')->join('modules M', 'INNER', array('M.id', 'I.module_id'))->join('index_detail D', 'INNER', array(array('D.id', 'I.id'), array('D.module_id', 'M.id'), array('D.language', 'I.language')))->where($where)->cacheOn()->first($select); } return false; }
/** * module=pages * * @return string */ public function render() { $this->publisheds = Language::get('PUBLISHEDS'); // Uri $uri = self::$request->getUri(); // ตาราง $table = new DataTable(array('model' => 'Index\\Pages\\Model', 'perPage' => self::$request->cookie('pages_perPage', 30)->toInt(), 'defaultFilters' => array(array('M.owner', 'index')), 'onRow' => array($this, 'onRow'), 'hideColumns' => array('module_id', 'id', 'owner'), 'action' => 'index.php/index/model/pages/action', 'actionCallback' => 'indexActionCallback', 'actionConfirm' => 'confirmAction', 'searchColumns' => array('topic', 'module', 'detail'), 'headers' => array('topic' => array('text' => '{LNG_Topic}'), 'published' => array('text' => '{LNG_Status}', 'class' => 'center'), 'language' => array('text' => '{LNG_Language}', 'class' => 'center'), 'module' => array('text' => '{LNG_module name}', 'class' => 'center'), 'last_update' => array('text' => '{LNG_Last updated}', 'class' => 'center'), 'visited' => array('text' => '{LNG_Preview}', 'class' => 'center')), 'cols' => array('published' => array('class' => 'center'), 'language' => array('class' => 'center'), 'module' => array('class' => 'center'), 'last_update' => array('class' => 'center'), 'visited' => array('class' => 'visited')), 'buttons' => array('edit' => array('class' => 'icon-edit button green', 'href' => $uri->createBackUri(array('module' => 'pagewrite', 'id' => ':id')), 'text' => '{LNG_Edit}'), 'delete' => array('class' => 'icon-delete button red', 'id' => ':id', 'text' => '{LNG_Delete}')), 'addNew' => array('class' => 'button green icon-plus', 'href' => $uri->createBackUri(array('module' => 'pagewrite', 'id' => '0')), 'text' => '{LNG_Add New} {LNG_Page}'))); // save cookie setcookie('pages_perPage', $table->perPage, time() + 3600 * 24 * 365, '/'); return $table->render(); }
/** * หน้า login * * @param Request $request * @return object */ public function render(Request $request) { $index = (object) array('canonical' => WEB_URL . 'index.php?module=dologin', 'topic' => Language::get('Visitors please login'), 'description' => self::$cfg->web_description, 'menu' => 'dologin'); $template = Template::create('member', 'member', 'loginfrm'); $template->add(array('/{TOKEN}/' => $request->createToken(), '/{EMAIL}/' => Login::$text_username, '/{PASSWORD}/' => Login::$text_password, '/{REMEMBER}/' => self::$request->cookie('login_remember')->toInt() == 1 ? 'checked' : '', '/{FACEBOOK}/' => empty(self::$cfg->facebook_appId) ? 'hidden' : 'facebook', '/{TOPIC}/' => $index->topic, '/{SUBTITLE}/' => $index->description)); $index->detail = $template->render(); $index->keywords = $index->topic; if (isset(Gcms::$view)) { Gcms::$view->addBreadcrumb($index->canonical, Language::get('Sign In')); } return $index; }
/** * ส่งออกเป็น HTML * * @param string|null $template HTML Template ถ้าไม่กำหนด (null) จะใช้ index.html */ public function renderHTML($template = null) { // intro detail $template = ROOT_PATH . DATA_FOLDER . 'intro.' . Language::name() . '.php'; if (is_file($template)) { $template = trim(preg_replace('/<\\?php exit([\\(\\);])?\\?>/', '', file_get_contents($template))); } else { $template = '<p style="padding: 20px; text-align: center; font-weight: bold;"><a href="index.php">Welcome<br>ยินดีต้อนรับ</a></p>'; } parent::setContents(array('/{TITLE}/' => self::$cfg->web_title, '/{CONTENT}/' => $template)); return parent::renderHTML(file_get_contents(ROOT_PATH . 'skin/empty.html')); }
/** * ส่งออกเป็น HTML * * @param string|null $template HTML Template ถ้าไม่กำหนด (null) จะใช้ index.html */ public function renderHTML($template = null) { // maintenance detail $template = ROOT_PATH . DATA_FOLDER . 'maintenance.' . Language::name() . '.php'; if (is_file($template)) { $template = trim(preg_replace('/<\\?php exit([\\(\\);])?\\?>/', '', file_get_contents($template))); } else { $template = '<p style="padding: 20px; text-align: center; font-weight: bold;">Website Temporarily Closed for Maintenance, Please try again in a few minutes.<br>ปิดปรับปรุงเว็บไซต์ชั่วคราวเพื่อบำรุงรักษา กรุณาลองใหม่ในอีกสักครู่</p>'; } parent::setContents(array('/{TITLE}/' => self::$cfg->web_title, '/{CONTENT}/' => $template)); return parent::renderHTML(file_get_contents(ROOT_PATH . 'skin/empty.html')); }
/** * ค้นหาข้อมูลทั้งหมด * * @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; }
/** * รับค่าจาก action ของ table */ public function action() { $ret = array(); // referer, session, admin if (self::$request->initSession() && self::$request->isReferer() && ($login = Login::isAdmin())) { if ($login['email'] == 'demo') { $ret['alert'] = Language::get('Unable to complete the transaction'); } else { // ค่าที่ส่งมา $action = self::$request->post('action')->toString(); $id = self::$request->post('id')->toInt(); // Model $model = new \Kotchasan\Model(); if ($action === 'published') { // เผยแพร่ $index = $model->db()->first($model->getFullTableName('index'), $id); if ($index) { $published = $index->published == 1 ? 0 : 1; $model->db()->update($model->getFullTableName('index'), $index->id, array('published' => $published)); // คืนค่า $ret['elem'] = 'published_' . $index->id; $lng = Language::get('PUBLISHEDS'); $ret['title'] = $lng[$published]; $ret['class'] = 'icon-published' . $published; } } elseif ($action === 'delete') { // ลบโมดูลและหน้าเพจ ไม่ลบข้อมูลของโมดูล $query = $model->db()->createQuery()->select('id', 'module_id')->from('index')->where(array(array('index', 1), array('module_id', $model->db()->createQuery()->select('module_id')->from('index')->where(array('id', $id))))); $count = 0; foreach ($query->execute() as $field) { $count++; if ($field->id == $id) { $model->db()->delete($model->getFullTableName('index'), $id); $model->db()->delete($model->getFullTableName('index_detail'), $id); } } // ลบโมดูล ถ้าไม่มีรายการในภาษาอื่น if ($count < 2) { $model->db()->delete($model->getFullTableName('modules'), $field->module_id); } // คืนค่า $ret['delete_id'] = self::$request->post('src')->toString() . '_' . $id; $ret['alert'] = Language::get('Deleted successfully'); } } } else { $ret['alert'] = Language::get('Unable to complete the transaction'); } // คืนค่าเป็น JSON echo json_encode($ret); }
/** * ส่งอีเมล์ ตาม ID * * @param Request $request */ public function save(Request $request) { if ($request->initSession() && $request->isReferer() && ($login = Login::isMember())) { // ค่าที่ส่งมา $subject = $request->post('mail_subject')->topic(); $detail = nl2br($request->post('mail_detail')->textarea()); // ตรวจสอบ ค่าที่ส่งมา $ret = array(); $antispam = new Antispam($request->post('mail_antispamid')->toString()); if (!$antispam->valid($request->post('mail_antispam')->toString())) { // Antispam ไม่ถูกต้อง $ret['ret_mail_antispam'] = 'this'; $ret['input'] = 'mail_antispam'; } else { // ตรวจสอบผู้รับ $reciever = array(); foreach (self::getUser($request->post('mail_reciever')->filter('0-9a-z')) as $item) { $reciever[] = $item['email'] . (empty($item['name']) ? '' : '<' . $item['name'] . '>'); } $reciever = implode(',', $reciever); // ตรวจสอบค่าที่ส่งมา if ($reciever == '') { $ret['alert'] = Language::get('Unable to send e-mail, Because you can not send e-mail to yourself or can not find the email address of the recipient.'); $ret['location'] = WEB_URL . 'index.php'; } elseif ($subject == '') { $ret['ret_mail_subject'] = 'this'; $ret['input'] = 'mail_subject'; } elseif ($detail == '') { $ret['ret_mail_detail'] = 'this'; $ret['input'] = 'mail_detail'; } else { // ส่งอีเมล์ $err = Email::send($reciever, $login['email'] . (empty($login['displayname']) ? '' : '<' . $login['displayname'] . '>'), $subject, $detail); if (empty($err)) { // เคลียร์ Antispam $antispam->delete(); // ส่งอีเมล์สำเร็จ $ret['alert'] = Language::get('Your message was sent successfully'); $ret['location'] = WEB_URL . 'index.php'; } else { // ข้อผิดพลาดการส่งอีเมล์ echo $err; } } } if (!empty($ret)) { // คืนค่าเป็น JSON echo json_encode($ret); } } }
/** * หน้าขอรหัสผ่านใหม่ * * @param Request $request * @param boolean $modal true แสดงแบบ modal, false (default) แสดงหน้าเว็บปกติ * @return object */ public function render(Request $request, $modal = false) { $index = (object) array('canonical' => WEB_URL . 'index.php?module=forgot', 'topic' => Language::get('Request new password'), 'description' => self::$cfg->web_description); $template = Template::create('member', 'member', 'forgotfrm'); $template->add(array('/{LNG_([^}]+)}/e' => '\\Kotchasan\\Language::get(array(1=>"$1"))', '/{TOPIC}/' => $index->topic, '/{EMAIL}/' => Login::$text_username, '/{WEBURL}/' => WEB_URL, '/{MODAL}/' => $modal ? 'true' : WEB_URL . 'index.php')); $index->detail = $template->render(); $index->keywords = $index->topic; if (isset(Gcms::$view)) { Gcms::$view->addBreadcrumb($index->canonical, Language::get('Forgot')); } // เมนู $index->menu = 'forgot'; return $index; }
/** * list รายชื่อจังหวัดทั้งหมด ตามภาษา (ถ้าไม่มีใช้ภาษาอังกฤษ) * สามารถนำไปใช้โดย Form ได้ทันที * * @return array */ public static function all() { $datas = self::init(); $language = Language::name(); $language = in_array($language, array_keys(reset($datas))) ? $language : 'en'; $result = array(); foreach ($datas as $iso => $values) { $result[$iso] = $values[$language]; } if ($language == 'en') { asort($result); } return $result; }
/** * แสดงผล * * @param object $index ข้อมูลโมดูล */ public function render($index) { // รายการ $listitem = Grid::create('search', 'search', 'searchitem'); foreach ($index->items as $item) { if ($item->index == 0 && $item->owner == 'document') { // document $uri1 = \Document\Index\Controller::url($item->module, $item->alias, $item->id); $uri2 = \Document\Index\Controller::url($item->module, $item->alias, $item->id, false); } elseif ($item->index == 0 && $item->owner == 'board') { // board $uri1 = \Board\Index\Controller::url($item->module, 0, $item->id); $uri2 = $uri1; } else { // other if (self::$cfg->module_url == 1) { $uri1 = Gcms::createUrl($item->module, $item->alias); $uri2 = Gcms::createUrl($item->module, $item->alias, 0, 0, '', false); } else { $uri1 = Gcms::createUrl($item->module, '', 0, $item->id, ''); $uri2 = $uri1; } } $listitem->add(array('/{URL}/' => $uri1, '/{TOPIC}/' => $item->topic, '/{LINK}/' => $uri2, '/{DETAIL}/' => $item->description)); } // template search/search.html $template = Template::create('search', 'search', 'search'); // canonical $index->canonical = Gcms::createUrl($index->module); // current URL $uri = \Kotchasan\Http\Uri::createFromUri($index->canonical); if ($index->total > 0) { $list = Gcms::highlightSearch($listitem->render(), $index->q); } else { $list = $index->q == '' ? '' : '<div>' . Language::get('No results were found for') . ' <strong>' . $index->q . '</strong></div>'; $list .= '<div><strong>' . Language::get('Search tips') . ' :</strong>' . Language::get('<ul><li>make sure that the spelling correct</li><li>try changing or new phrases. synonyms</li><li>try to identify a non-specific too</li><li>specific keywords to search the most concise</li></ul>') . '</div>'; } // add template $template->add(array('/{LIST}/' => $list, '/{SPLITPAGE}/' => $uri->pagination($index->totalpage, $index->page), '/{SEARCH}/' => $index->q, '/{MODULE}/' => 'search', '/{RESULT}/' => $index->total == 0 ? '' : sprintf(Language::get('Search results <strong>%d - %d</strong> of about <strong>%d</strong> for <strong>%s</strong> (%s sec)'), $index->start + 1, $index->end, $index->total, $index->q, number_format(microtime(true) - REQUEST_TIME, 4)))); $search = Language::get('Search'); $index->detail = $template->render(); $index->topic = ($index->q == '' ? '' : $index->q . ' - ') . $search; $index->description = $index->topic; $index->keywords = $index->topic; $index->menu = 'search'; // breadcrumb ของหน้า Gcms::$view->addBreadcrumb($index->canonical, $search, $search); return $index; }
/** * ตารางรายชื่อสมาชิก * * @return string */ public function render() { $this->sexes = Language::get('SEXES'); // สถานะสมาชิก $change_member_status = array(); $member_status = array(-1 => '{LNG_all items}'); foreach (self::$cfg->member_status as $key => $value) { $member_status[$key] = $value; $change_member_status[$key] = '{LNG_Change member status to} ' . $value; } // ตารางสมาชิก $table = new DataTable(array('model' => 'Index\\Member\\Model', 'perPage' => self::$request->cookie('member_perPage', 30)->toInt(), 'sort' => self::$request->cookie('member_sort', 'id desc')->toString(), 'onRow' => array($this, 'onRow'), 'hideColumns' => array('visited', 'status', 'admin_access', 'activatecode', 'website', 'fb'), 'searchColumns' => array('fname', 'lname', 'displayname', 'email'), 'action' => 'index.php/index/model/member/action', 'actions' => array(array('id' => 'action', 'class' => 'ok', 'text' => '{LNG_With selected}', 'options' => array('accept' => '{LNG_Accept membership}', 'activate' => '{LNG_Send confirmation email}', 'sendpassword' => '{LNG_Get new password}', 'ban' => '{LNG_Suspended}', 'unban' => '{LNG_Cancel suspension}', 'delete' => '{LNG_Delete}')), array('id' => 'status', 'class' => 'ok', 'text' => '{LNG_With selected}', 'options' => $change_member_status)), 'filters' => array('status' => array('name' => 'status', 'default' => -1, 'text' => '{LNG_Member status}', 'options' => $member_status, 'value' => self::$request->get('status', -1)->toInt())), 'fields' => array('id', 'ban', 'email', 'displayname', 'CONCAT_WS(" ", `pname`,`fname`,`lname`) name', 'phone1', 'sex', 'website', 'create_date', 'lastvisited', 'visited', 'status', 'admin_access', 'activatecode', 'fb'), 'headers' => array('id' => array('text' => '{LNG_ID}', 'sort' => 'id'), 'ban' => array('text' => ''), 'email' => array('text' => '{LNG_Email}', 'sort' => 'email'), 'displayname' => array('text' => '{LNG_Displayname}', 'sort' => 'displayname'), 'name' => array('text' => '{LNG_Name} {LNG_Surname}', 'sort' => 'name'), 'phone1' => array('text' => '{LNG_Phone}'), 'sex' => array('text' => '{LNG_Sex}', 'class' => 'center'), 'website' => array('text' => '{LNG_Website}'), 'create_date' => array('text' => '{LNG_Created}', 'class' => 'center'), 'lastvisited' => array('text' => '{LNG_Last login} ({LNG_times})', 'class' => 'center')), 'cols' => array('sex' => array('class' => 'center'), 'ban' => array('class' => 'center'), 'create_date' => array('class' => 'center'), 'lastvisited' => array('class' => 'center')), 'buttons' => array(array('class' => 'icon-edit button green', 'href' => self::$request->getUri()->createBackUri(array('module' => 'editprofile', 'id' => ':id')), 'text' => '{LNG_Edit}')))); // save cookie setcookie('member_perPage', $table->perPage, time() + 3600 * 24 * 365, '/'); setcookie('member_sort', $table->sort, time() + 3600 * 24 * 365, '/'); return $table->render(); }
/** * module=install * * @param string $type module หรือ widget * @param string $module โมดูลที่ติดตั้ง * @return object */ public function render($type, $module) { $div = Html::create('div', array('class' => 'setup_frm', 'id' => 'install')); if ($type === 'module' && empty(Gcms::$install_modules[$module]) || $type === 'widget') { $div->add('aside', array('class' => 'tip', 'innerHTML' => Language::get('Module or an extension has not been installed correctly the first time. Please click on the button "Install" below to complete installation before.'))); $div2 = $div->add('div', array('class' => 'padding-right-bottom-left')); $div2->add('a', array('class' => 'button ok large', 'id' => 'install_btn', 'innerHTML' => '<span class=icon-valid>' . Language::get('Install') . '</span>')); if ($type === 'module') { $div->script("callInstall('" . rawurlencode(ucfirst($module) . '\\Admin\\Install\\Model') . "')"); } elseif ($type === 'widget') { $div->script("callInstall('" . rawurlencode('Widgets\\' . ucfirst($module) . '\\Models\\Install') . "')"); } } else { $div->add('aside', array('class' => 'error', 'innerHTML' => Language::get('Can not install this module. Because this module is already installed. If you want to install this module, you will need to rename installed module to a different name. (This module is to use this name only).'))); } return $div->render(); }
public function view(Request $request) { $topic = Language::get('Personal information') . ' ' . self::$cfg->web_title; $user = \Index\Member\Model::getUserById($request->get('id')->toInt()); if ($user) { $template = Template::create('member', 'member', 'view'); $template->add(array('/{ID}/' => $user->id, '/{EMAIL}/' => $user->email, '/{FNAME}/' => $user->fname, '/{LNAME}/' => $user->lname, '/{SEX}/' => $user->sex === 'f' || $user->sex === 'm' ? $user->sex : 'u', '/{DATE}/' => Date::format($user->create_date), '/{WEBSITE}/' => $user->website, '/{VISITED}/' => $user->visited, '/{LASTVISITED}/' => Date::format($user->lastvisited), '/{POST}/' => number_format($user->post), '/{REPLY}/' => number_format($user->reply), '/{STATUS}/' => isset(self::$cfg->member_status[$user->status]) ? self::$cfg->member_status[$user->status] : 'Unknow', '/{COLOR}/' => $user->status, '/{SOCIAL}/' => $user->fb == 1 ? 'icon-facebook' : '', '/{TOPIC}/' => $topic)); // breadcrumbs $canonical = WEB_URL . 'index.php?module=member&id=' . $user->id; Gcms::$view->addBreadcrumb($canonical, $topic); // คืนค่า return (object) array('detail' => $template->render(), 'keywords' => self::$cfg->web_title, 'description' => self::$cfg->web_description, 'topic' => $topic, 'canonical' => $canonical); } else { // ไม่พบสมาชิก return createClass('Index\\PageNotFound\\Controller')->init($request, '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'); } }