/**
  * ส่งอีเมล์ ตาม 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);
         }
     }
 }
 /**
  * Useronline
  *
  * @param array $query_string
  */
 public function index(Request $request)
 {
     // ตรวจสอบ Referer
     if ($request->initSession() && $request->isReferer()) {
         // ตัวแปรป้องกันการเรียกหน้าเพจโดยตรง
         define('MAIN_INIT', __FILE__);
         // เวลาปัจจุบัน
         $time = time();
         // sesssion ปัจจุบัน
         $session_id = session_id();
         // เวลาหมดอายุ
         $validtime = $time - self::$cfg->counter_gap;
         // ตาราง useronline
         $useronline = $this->getFullTableName('useronline');
         // ลบคนที่หมดเวลาและตัวเอง
         $this->db()->delete($useronline, array(array('time', '<', $validtime), array('session', $session_id)), 0, 'OR');
         // เพิ่มตัวเอง
         $save = array('time' => $time, 'session' => $session_id, 'ip' => $request->getClientIp());
         $login = Login::isMember();
         if ($login) {
             $save['member_id'] = (int) $login['id'];
             $save['displayname'] = $login['displayname'] == '' ? $login['email'] : $login['displayname'];
         }
         $this->db()->insert($useronline, $save);
         // คืนค่า user online
         $ret = array('time' => $time);
         // โหลด useronline ของ module
         $dir = ROOT_PATH . 'modules/';
         $f = @opendir($dir);
         if ($f) {
             while (false !== ($text = readdir($f))) {
                 if ($text != "." && $text != "..") {
                     if (is_dir($dir . $text)) {
                         if (is_file($dir . $text . '/controllers/useronline.php')) {
                             include $dir . $text . '/controllers/useronline.php';
                             $class = ucfirst($text) . '\\Useronline\\Controller';
                             if (method_exists($class, 'index')) {
                                 $ret = createClass($class)->index($ret);
                             }
                         }
                     }
                 }
             }
             closedir($f);
         }
         // คืนค่า JSON
         echo json_encode($ret);
     }
 }
Example #3
0
 /**
  * มาจากการเรียกด้วย Ajax
  *
  * @param Request $request
  */
 public function index(Request $request)
 {
     // ตรวจสอบ Referer
     if ($request->initSession() && $request->isReferer()) {
         // ตัวแปรป้องกันการเรียกหน้าเพจโดยตรง
         define('MAIN_INIT', __FILE__);
         // กำหนด skin ให้กับ template
         Template::init(self::$cfg->skin);
         // ค่าจาก POST
         $query_string = $request->getParsedBody();
         // เรียก Class ที่กำหนด
         if (!empty($query_string['class']) && preg_match('/^[a-zA-Z0-9]+$/', $query_string['method']) && method_exists($query_string['class'], $query_string['method'])) {
             $method = $query_string['method'];
             createClass($query_string['class'])->{$method}($request->withQueryParams($query_string));
         }
     }
 }
Example #4
0
 /**
  * แสดงผล
  *
  * @param Request $request
  */
 public function index(Request $request)
 {
     // session cookie
     $request->initSession();
     // ตรวจสอบการ login
     Login::create();
     if (Login::isMember()) {
         echo '<a href="?action=logout">Logout</a><br>';
         var_dump($_SESSION);
     } else {
         // forgot or login
         if ($request->get('action')->toString() == 'forgot') {
             $main = new \Index\Forgot\View();
         } else {
             $main = new \Index\Login\View();
         }
         echo $main->render();
     }
 }
 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();
         }
     }
 }
 /**
  * บันทึก
  */
 public function save(Request $request)
 {
     // referer, session
     if ($request->initSession() && $request->isReferer()) {
         $ret = array();
         // ค่าที่ส่งมา
         $email = $request->post('forgot_email')->url();
         if ($email === '') {
             $ret['ret_forgot_email'] = Language::get('Please fill out this form');
         } else {
             $search = $this->db()->createQuery()->from('user')->where(array(array('email', $email), array('fb', '0')))->toArray()->first('id', 'email');
             if ($search === false) {
                 $ret['ret_forgot_email'] = Language::get('not a registered user');
             }
         }
         if (empty($ret)) {
             // รหัสผ่านใหม่
             $password = Text::rndname(6);
             // ข้อมูลอีเมล์
             $replace = array('/%PASSWORD%/' => $password, '/%EMAIL%/' => $search['email']);
             // send mail
             $err = Email::send(3, 'member', $replace, $search['email']);
             if (empty($err)) {
                 // อัปเดทรหัสผ่านใหม่
                 $save = array('password' => md5($password . $search['email']));
                 $this->db()->createQuery()->update('user')->set($save)->where($search['id'])->execute();
                 // คืนค่า
                 $ret['alert'] = Language::get('Your message was sent successfully');
                 $ret['ret_forgot_email'] = '';
                 $location = $request->post('modal')->url();
                 $ret['location'] = $location === 'true' ? 'close' : $location;
             } else {
                 $ret['ret_forgot_email'] = $err;
             }
         } else {
             $ret['input'] = 'forgot_email';
         }
         // คืนค่าเป็น JSON
         echo json_encode($ret);
     }
 }
 /**
  * แสดงผลหน้าหลักเว็บไซต์
  *
  * @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>&nbsp;</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();
 }
 /**
  * GLoader
  *
  * @param Request $request
  */
 public function index(Request $request)
 {
     // session cookie
     $request->initSession();
     // กำหนด skin ให้กับ template
     Template::init(self::$cfg->skin);
     // ตรวจสอบโมดูลที่เรียก
     $index = \Index\Export\Model::module($request->get('module')->toString());
     if ($index) {
         $className = ucfirst($index->owner) . '\\Export\\Controller';
         if (method_exists($className, 'init')) {
             $detail = createClass($className)->init($request, $index);
         }
         if ($detail != '') {
             $view = new \Kotchasan\View();
             $view->setContents(array('/{CONTENT}/' => $detail));
             echo $view->renderHTML(Template::load('', '', 'print'));
             exit;
         }
     }
     // ไม่พบโมดูลหรือไม่มีสิทธิ
     new \Kotchasan\Http\NotFound();
 }
 /**
  * บันทึก
  */
 public function save(Request $request)
 {
     $ret = array();
     // referer, session, member
     if ($request->initSession() && $request->isReferer() && ($login = Login::isMember())) {
         if ($login['email'] == 'demo') {
             $ret['alert'] = Language::get('Unable to complete the transaction');
         } else {
             // รับค่าจากการ POST
             $save = array();
             foreach ($request->getParsedBody() as $key => $value) {
                 $k = str_replace('register_', '', $key);
                 switch ($k) {
                     case 'phone1':
                     case 'phone2':
                     case 'provinceID':
                     case 'zipcode':
                         $save[$k] = $request->post($key)->number();
                         break;
                     case 'sex':
                         $save['sex'] = $request->post('register_sex')->topic();
                         $save['subscrib'] = $request->post('register_subscrib')->toBoolean();
                         break;
                     case 'displayname':
                     case 'fname':
                     case 'lname':
                     case 'address1':
                     case 'address2':
                     case 'province':
                     case 'country':
                         $save[$k] = $request->post($key)->topic();
                         break;
                     case 'website':
                         $save[$k] = str_replace(array('http://', 'https://', 'ftp://'), array('', '', ''), $request->post($key)->url());
                         break;
                     case 'subscrib':
                         $save[$k] = $request->post($key)->toBoolean();
                         break;
                     case 'birthday':
                         $save[$k] = $request->post($key)->date();
                         break;
                     case 'password':
                     case 'repassword':
                         ${$k} = $request->post($key)->text();
                         break;
                 }
             }
             // ชื่อตาราง user
             $user_table = $this->getFullTableName('user');
             // database connection
             $db = $this->db();
             // ตรวจสอบค่าที่ส่งมา
             $user = $db->first($user_table, $request->post('register_id')->toInt());
             if (!$user) {
                 // ไม่พบสมาชิกที่แก้ไข
                 $ret['alert'] = Language::get('not a registered user');
             } else {
                 $input = false;
                 // ชื่อเล่น
                 if (isset($save['displayname'])) {
                     if (mb_strlen($save['displayname']) < 2) {
                         $ret['ret_register_displayname'] = Language::get('Name for the show on the site at least 2 characters');
                         $input = !$input ? 'register_displayname' : $input;
                     } elseif (in_array($save['displayname'], self::$cfg->member_reserv)) {
                         $ret['ret_register_displayname'] = Language::get('Invalid name');
                         $input = !$input ? 'register_displayname' : $input;
                     } else {
                         // ตรวจสอบ displayname ซ้ำ
                         $search = $db->first($user_table, array('displayname', $save['displayname']));
                         if ($search !== false && $user->id != $search->id) {
                             $ret['ret_register_displayname'] = str_replace(':name', Language::get('Name'), Language::get('This :name is already registered'));
                             $input = !$input ? 'register_displayname' : $input;
                         } else {
                             $ret['ret_register_displayname'] = '';
                         }
                     }
                 }
                 // ชื่อ นามสกุล
                 if (!empty($save['fname']) || !empty($save['lname'])) {
                     $search = $db->first($user_table, array(array('fname', $save['fname']), array('lname', $save['lname'])));
                     if ($search !== false && $user->id != $search->id) {
                         $ret['ret_register_fname'] = str_replace(':name', Language::get('Name') . ' ' . Language::get('Surname'), Language::get('This :name is already registered'));
                         $input = !$input ? 'register_fname' : $input;
                     } else {
                         $ret['ret_register_fname'] = '';
                     }
                 }
                 // โทรศัพท์
                 if (!empty($save['phone1'])) {
                     if (!preg_match('/[0-9]{9,10}/', $save['phone1'])) {
                         $ret['ret_register_phone1'] = str_replace(':name', Language::get('phone number'), Language::get('Invalid :name'));
                         $input = !$input ? 'register_phone1' : $input;
                     } else {
                         // ตรวจสอบโทรศัพท์
                         $search = $db->first($user_table, array('phone1', $save['phone1']));
                         if ($search !== false && $user->id != $search->id) {
                             $ret['ret_register_phone1'] = str_replace(':name', Language::get('phone number'), Language::get('This :name is already registered'));
                             $input = !$input ? 'register_phone1' : $input;
                         } else {
                             $ret['ret_register_phone1'] = '';
                         }
                     }
                 }
                 // แก้ไขรหัสผ่าน
                 if ($user->fb == 0 && (!empty($password) || !empty($repassword))) {
                     if (mb_strlen($password) < 4) {
                         // รหัสผ่านต้องไม่น้อยกว่า 4 ตัวอักษร
                         $ret['ret_register_password'] = Language::get('Passwords must be at least four characters');
                         $input = !$input ? 'register_password' : $input;
                     } elseif ($repassword != $password) {
                         // ถ้าต้องการเปลี่ยนรหัสผ่าน กรุณากรอกรหัสผ่านสองช่องให้ตรงกัน
                         $ret['ret_register_repassword'] = Language::get('To change your password, enter your password to match the two inputs');
                         $input = !$input ? 'register_repassword' : $input;
                     } else {
                         // password ใหม่ถูกต้อง
                         $save['password'] = md5($password . $user->email);
                         $ret['ret_register_password'] = '';
                         $ret['ret_register_repassword'] = '';
                     }
                 }
                 // อัปโหลดไฟล์
                 foreach ($request->getUploadedFiles() as $item => $file) {
                     if ($file->hasUploadFile()) {
                         $item = str_replace('register_', '', $item);
                         if (!File::makeDirectory(ROOT_PATH . self::$cfg->usericon_folder)) {
                             // ไดเรคทอรี่ไม่สามารถสร้างได้
                             $ret['ret_register_' . $item] = sprintf(Language::get('Directory %s cannot be created or is read-only.'), self::$cfg->usericon_folder);
                             $input = !$input ? 'ret_register_' . $item : $input;
                         } else {
                             if (!empty($user->icon)) {
                                 // ลบไฟล์เดิม
                                 @unlink(ROOT_PATH . self::$cfg->usericon_folder . $user->icon);
                             }
                             try {
                                 // อัปโหลด thumbnail
                                 $save['icon'] = $user->id . '.jpg';
                                 $file->cropImage(self::$cfg->user_icon_typies, ROOT_PATH . self::$cfg->usericon_folder . $save['icon'], self::$cfg->user_icon_w, self::$cfg->user_icon_h);
                             } catch (\Exception $exc) {
                                 // ไม่สามารถอัปโหลดได้
                                 $ret['ret_register_' . $item] = Language::get($exc->getMessage());
                                 $input = !$input ? 'ret_register_' . $item : $input;
                             }
                         }
                     }
                 }
                 if (!empty($save)) {
                     if (!$input) {
                         // save
                         $db->update($user_table, $user->id, $save);
                         // เปลี่ยน password ที่ login ใหม่
                         if (!empty($save['password'])) {
                             $_SESSION['login']['password'] = $password;
                         }
                         // คืนค่า
                         $ret['alert'] = Language::get('Saved successfully');
                         $ret['location'] = 'index.php?module=editprofile&tab=' . $request->post('tab')->toString();
                     } else {
                         // error
                         $ret['input'] = $input;
                     }
                 }
             }
         }
     } else {
         $ret['alert'] = Language::get('Unable to complete the transaction');
     }
     // คืนค่าเป็น JSON
     if (!empty($ret)) {
         echo json_encode($ret);
     }
 }
 public function chklogin(Request $request)
 {
     $data = $request->post('data')->toString();
     if (!empty($data) && $request->initSession() && $request->isSafe()) {
         // สุ่มรหัสผ่านใหม่
         $login_password = Text::rndname(6);
         // ข้อมูลที่ส่งมา
         $facebook_data = array();
         foreach (explode('&', $data) as $item) {
             list($k, $v) = explode('=', $item);
             if ($k === 'gender') {
                 $facebook_data['sex'] = $v === 'male' ? 'm' : 'f';
             } elseif ($k === 'link') {
                 $facebook_data['website'] = str_replace(array('http://', 'https://', 'www.'), '', $v);
             } elseif ($k === 'first_name') {
                 $facebook_data['fname'] = $v;
                 $facebook_data['displayname'] = $v;
             } elseif ($k === 'last_name') {
                 $facebook_data['lname'] = $v;
             } elseif ($k === 'email') {
                 $facebook_data['email'] = $v;
             } elseif ($k === 'id') {
                 $fb_id = $v;
             } elseif ($k === 'birthday' && preg_match('/^([0-9]+)[\\/\\-]([0-9]+)[\\/\\-]([0-9]+)$/', $v, $match)) {
                 $facebook_data['birthday'] = "{$match['3']}-{$match['1']}-{$match['2']}";
             }
         }
         // ไม่มีอีเมล์ ใช้ id ของ Facebook
         if (empty($facebook_data['email'])) {
             $facebook_data['email'] = $fb_id;
         }
         // db
         $db = $this->db();
         // table
         $user_table = $this->getFullTableName('user');
         // ตรวจสอบสมาชิกกับ db
         $search = $db->createQuery()->from('user')->where(array('email', $facebook_data['email']), array('displayname', $facebook_data['displayname']), 'OR')->toArray()->first('id', 'email', 'visited', 'fb', 'website');
         if ($search === false) {
             // ยังไม่เคยลงทะเบียน, ลงทะเบียนใหม่
             $facebook_data['id'] = $db->getNextId($this->getTableName('user'));
             $facebook_data['fb'] = 1;
             $facebook_data['subscrib'] = 1;
             $facebook_data['visited'] = 0;
             $facebook_data['ip'] = $request->getClientIp();
             $facebook_data['password'] = md5($login_password . $facebook_data['email']);
             $facebook_data['lastvisited'] = time();
             $facebook_data['create_date'] = $facebook_data['lastvisited'];
             $facebook_data['icon'] = $facebook_data['id'] . '.jpg';
             $facebook_data['country'] = 'TH';
             $db->insert($user_table, $facebook_data);
         } elseif ($search['fb'] == 1) {
             // facebook เคยเยี่ยมชมแล้ว อัปเดทการเยี่ยมชม
             $facebook_data['visited'] = $search['visited'] + 1;
             $facebook_data['lastvisited'] = time();
             $facebook_data['ip'] = $request->getClientIp();
             $facebook_data['password'] = md5($login_password . $search['email']);
             $db->update($user_table, $search['id'], $facebook_data);
         } else {
             // ไม่สามารถ login ได้ เนื่องจากมี email อยู่ก่อนแล้ว
             $facebook_data = false;
             $ret['alert'] = str_replace(':name', Language::get('User'), Language::get('This :name is already registered'));
             $ret['isMember'] = 0;
         }
         if (is_array($facebook_data)) {
             // อัปเดท icon สมาชิก
             $data = @file_get_contents('https://graph.facebook.com/' . $fb_id . '/picture');
             if ($data) {
                 $f = @fopen(ROOT_PATH . self::$cfg->usericon_folder . $facebook_data['icon'], 'wb');
                 if ($f) {
                     fwrite($f, $data);
                     fclose($f);
                 }
             }
             // login
             $facebook_data['password'] = $login_password;
             $_SESSION['login'] = $facebook_data;
             // clear
             $request->removeToken();
             // reload
             $ret['isMember'] = 1;
             $u = $request->post('u')->toString();
             if (preg_match('/module=(do)?login/', $u) || preg_match('/(do)?login\\.html/', $u)) {
                 $ret['location'] = 'back';
             } else {
                 $ret['location'] = 'reload';
             }
         }
         // คืนค่าเป็น json
         echo json_encode($ret);
     }
 }
 /**
  * รับค่าจาก action
  */
 public function action(Request $request)
 {
     if ($request->initSession() && $request->isReferer() && ($login = Login::isAdmin())) {
         if ($login['email'] == 'demo' || !empty($login['fb'])) {
             echo Language::get('Unable to complete the transaction');
         } else {
             // รับค่าจากการ POST
             $action = $request->post('action')->toString();
             // id ที่ส่งมา
             if (preg_match_all('/,?([0-9]+),?/', $request->post('id')->toString(), $match)) {
                 // Model
                 $model = new \Kotchasan\Model();
                 // ตาราง user
                 $user_table = $model->getFullTableName('user');
                 if ($action === 'delete') {
                     // ลบไอคอนสมาชิก
                     $query = $model->db()->createQuery()->select('icon')->from('user')->where(array(array('id', $match[1]), array('id', '!=', 1), array('icon', '!=', '')));
                     foreach ($query->toArray()->execute() as $item) {
                         @unlink(ROOT_PATH . self::$cfg->usericon_folder . $item['icon']);
                     }
                     // ลบสมาชิก
                     $model->db()->delete($user_table, array(array('id', $match[1]), array('id', '!=', 1)), 0);
                 } elseif ($action === 'accept') {
                     // ยอมรับสมาชิกที่เลือก
                     $model->db()->update($user_table, array(array('id', $match[1]), array('fb', '0')), array('activatecode' => ''));
                 } elseif ($action === 'ban' || $action === 'unban') {
                     // ระงับ/ยกเลิก การใช้งานสมาชิก
                     $model->db()->update($user_table, array(array('id', $match[1]), array('id', '!=', 1)), array('ban' => $action == 'ban' ? 1 : 0));
                 } elseif ($action === 'activate' || $action === 'sendpassword') {
                     // ส่งอีเมล์ยืนยันสมาชิก
                     $query = $model->db()->createQuery()->select('id', 'email', 'activatecode')->from('user')->where(array(array('id', $match[1]), array('id', '!=', 1), array('fb', '0')));
                     $msgs = array();
                     foreach ($query->toArray()->execute() as $item) {
                         // รหัสผ่านใหม่
                         $password = Text::rndname(6);
                         // ข้อมูลอีเมล์
                         $replace = array('/%PASSWORD%/' => $password, '/%EMAIL%/' => $item['email']);
                         $save = array('password' => md5($password . $item['email']));
                         if ($action === 'activate' || !empty($item['activatecode'])) {
                             // activate หรือ ยังไม่ได้ activate
                             $save['activatecode'] = empty($item['activatecode']) ? Text::rndname(32) : $item['activatecode'];
                             $replace['/%ID%/'] = $save['activatecode'];
                             // send mail
                             $err = Email::send(1, 'member', $replace, $item['email']);
                         } else {
                             // send mail
                             $err = Email::send(3, 'member', $replace, $item['email']);
                         }
                         $msgs = array();
                         if (empty($err)) {
                             // อัปเดทรหัสผ่านใหม่
                             $model->db()->update($user_table, $item['id'], $save);
                         } else {
                             $msgs[] = $err;
                         }
                         if (empty($msgs)) {
                             // ส่งอีเมล์ สำเร็จ
                             echo Language::get('Your message was sent successfully');
                         } else {
                             // มีข้อผิดพลาด
                             echo implode("\n", $msgs);
                         }
                     }
                 } elseif ($request->post('module')->toString() === 'status') {
                     // เปลี่ยนสถานะสมาชิก
                     $model->db()->update($user_table, array(array('id', $match[1]), array('id', '!=', 1), array('fb', '0')), array('status' => (int) $action));
                 }
             }
         }
     }
 }
 /**
  * บันทึก
  */
 public function save(Request $request)
 {
     $ret = array();
     // referer, session, member
     if ($request->initSession() && $request->isReferer() && ($login = Login::isMember())) {
         if ($login['email'] == 'demo' || !empty($login['fb'])) {
             $ret['alert'] = Language::get('Unable to complete the transaction');
         } else {
             // รับค่าจากการ POST
             $save = array('email' => $request->post('register_email')->url(), 'displayname' => $request->post('register_displayname')->topic(), 'sex' => $request->post('register_sex')->topic(), 'website' => str_replace(array('http://', 'https://', 'ftp://'), array('', '', ''), $request->post('register_website')->url()), 'pname' => $request->post('register_pname')->topic(), 'fname' => $request->post('register_fname')->topic(), 'lname' => $request->post('register_lname')->topic(), 'company' => $request->post('register_company')->topic(), 'phone1' => $request->post('register_phone1')->number(), 'phone2' => $request->post('register_phone2')->number(), 'subscrib' => $request->post('register_subscrib')->toBoolean(), 'address1' => $request->post('register_address1')->topic(), 'address2' => $request->post('register_address2')->topic(), 'provinceID' => $request->post('register_provinceID')->number(), 'province' => $request->post('register_province')->topic(), 'zipcode' => $request->post('register_zipcode')->number(), 'country' => $request->post('register_country')->topic(), 'status' => $request->post('register_status')->toInt(), 'birthday' => $request->post('register_birthday')->date(), 'admin_access' => $request->post('register_admin_access')->toBoolean());
             // ชื่อตาราง user
             $user_table = $this->getFullTableName('user');
             // database connection
             $db = $this->db();
             // ตรวจสอบค่าที่ส่งมา
             $id = $request->post('register_id')->toInt();
             if ($id == 0) {
                 // ใหม่
                 $user = (object) array('id' => 0, 'email' => '', 'fb' => 0);
             } else {
                 // แก้ไข
                 $user = $db->first($user_table, $id);
             }
             if (!$user) {
                 // ไม่พบสมาชิกที่แก้ไข
                 $ret['alert'] = Language::get('not a registered user');
             } else {
                 $isAdmin = Login::isAdmin();
                 // ไม่ใช่แอดมิน ใช้อีเมล์เดิมจากฐานข้อมูล
                 if (!$isAdmin && $user->id > 0) {
                     $save['email'] = $user->email;
                 }
                 // ตรวจสอบค่าที่ส่งมา
                 $input = false;
                 $requirePassword = false;
                 // อีเมล์
                 if (empty($save['email'])) {
                     $ret['ret_register_email'] = 'this';
                     $input = !$input ? 'register_email' : $input;
                 } else {
                     // ตรวจสอบอีเมล์ซ้ำ
                     $search = $db->first($user_table, array('email', $save['email']));
                     if ($search !== false && $user->id != $search->id) {
                         $ret['ret_register_email'] = str_replace(':name', Language::get('Email'), Language::get('This :name is already registered'));
                         $input = !$input ? 'register_email' : $input;
                     } else {
                         $requirePassword = $user->email !== $save['email'];
                         $ret['ret_register_email'] = '';
                     }
                 }
                 // ชื่อเรียก
                 if (!empty($save['displayname'])) {
                     // ตรวจสอบ ชื่อเรียก
                     $search = $db->first($user_table, array('displayname', $save['displayname']));
                     if ($search !== false && $user->id != $search->id) {
                         $ret['ret_register_displayname'] = str_replace(':name', Language::get('Name'), Language::get('This :name is already registered'));
                         $input = !$input ? 'register_displayname' : $input;
                     } else {
                         $ret['ret_register_displayname'] = '';
                     }
                 }
                 // โทรศัพท์
                 if (!empty($save['phone1'])) {
                     if (!preg_match('/[0-9]{9,10}/', $save['phone1'])) {
                         $ret['ret_register_phone1'] = str_replace(':name', Language::get('phone number'), Language::get('Invalid :name'));
                         $input = !$input ? 'register_phone1' : $input;
                     } else {
                         // ตรวจสอบโทรศัพท์
                         $search = $db->first($user_table, array('phone1', $save['phone1']));
                         if ($search !== false && $user->id != $search->id) {
                             $ret['ret_register_phone1'] = str_replace(':name', Language::get('phone number'), Language::get('This :name is already registered'));
                             $input = !$input ? 'register_phone1' : $input;
                         } else {
                             $ret['ret_register_phone1'] = '';
                         }
                     }
                 }
                 // password
                 $password = $request->post('register_password')->topic();
                 $repassword = $request->post('register_repassword')->topic();
                 if (!empty($password) || !empty($repassword)) {
                     if (mb_strlen($password) < 4) {
                         // รหัสผ่านต้องไม่น้อยกว่า 4 ตัวอักษร
                         $ret['ret_register_password'] = '******';
                         $input = !$input ? 'register_password' : $input;
                     } elseif ($repassword != $password) {
                         // ถ้าต้องการเปลี่ยนรหัสผ่าน กรุณากรอกรหัสผ่านสองช่องให้ตรงกัน
                         $ret['ret_register_repassword'] = '******';
                         $input = !$input ? 'register_repassword' : $input;
                     } else {
                         $ret['ret_register_password'] = '';
                         $ret['ret_register_repassword'] = '';
                         $save['password'] = md5($password . $save['email']);
                         $requirePassword = false;
                     }
                 }
                 // มีการเปลี่ยน email ต้องการรหัสผ่าน
                 if (!$input && $requirePassword) {
                     $ret['ret_register_password'] = '******';
                     $input = !$input ? 'register_password' : $input;
                 }
                 // อัปโหลดไฟล์
                 foreach ($request->getUploadedFiles() as $item => $file) {
                     if ($file->hasUploadFile()) {
                         if (!File::makeDirectory(ROOT_PATH . self::$cfg->usericon_folder)) {
                             // ไดเรคทอรี่ไม่สามารถสร้างได้
                             $ret['ret_' . $item] = sprintf(Language::get('Directory %s cannot be created or is read-only.'), self::$cfg->usericon_folder);
                             $input = !$input ? $item : $input;
                         } else {
                             if (!empty($user->icon)) {
                                 // ลบไฟล์เดิม
                                 @unlink(ROOT_PATH . self::$cfg->usericon_folder . $user->icon);
                             }
                             try {
                                 // อัปโหลด thumbnail
                                 $save['icon'] = $user->id . '.jpg';
                                 $file->cropImage(self::$cfg->user_icon_typies, ROOT_PATH . self::$cfg->usericon_folder . $save['icon'], self::$cfg->user_icon_w, self::$cfg->user_icon_h);
                             } catch (\Exception $exc) {
                                 // ไม่สามารถอัปโหลดได้
                                 $ret['ret_' . $item] = Language::get($exc->getMessage());
                                 $input = !$input ? $item : $input;
                             }
                         }
                     }
                 }
                 if (!$input) {
                     // ไม่ใช่แอดมิน
                     if (!$isAdmin) {
                         unset($save['status']);
                         unset($save['point']);
                         unset($save['admin_access']);
                     }
                     // social ห้ามแก้ไข
                     if (!empty($user->fb)) {
                         unset($save['email']);
                         unset($save['password']);
                     }
                     if ($login['id'] == $id || $id == 1) {
                         unset($save['admin_access']);
                     }
                     // บันทึก
                     if ($id == 0) {
                         // ใหม่
                         $id = $db->insert($user_table, $save);
                         // ไปหน้ารายการสมาชิก
                         $ret['location'] = $request->getUri()->postBack('index.php', array('module' => 'member', 'id' => null, 'page' => null));
                     } else {
                         // แก้ไข
                         $db->update($user_table, $id, $save);
                         if ($login['id'] == $id) {
                             // ตัวเอง
                             if (isset($save['password'])) {
                                 if (isset($save['email'])) {
                                     $_SESSION['login']['email'] = $save['email'];
                                 }
                                 $_SESSION['login']['password'] = $password;
                             }
                             // reload หน้าเว็บ
                             $ret['location'] = 'reload';
                         } else {
                             // กลับไปหน้าก่อนหน้า
                             $ret['location'] = $request->getUri()->postBack('index.php', array('id' => null));
                         }
                     }
                     // คืนค่า
                     $ret['alert'] = Language::get('Saved successfully');
                 } else {
                     // error
                     $ret['input'] = $input;
                 }
             }
         }
     } else {
         $ret['alert'] = Language::get('Unable to complete the transaction');
     }
     // คืนค่าเป็น JSON
     if (!empty($ret)) {
         echo json_encode($ret);
     }
 }
Example #13
0
 /**
  * แสดงผล 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 index(Request $request)
 {
     $request->initSession();
     // Antispam Image
     Antispam::createImage($request->get('id')->toString());
 }
 /**
  * GLoader
  *
  * @param Request $request
  */
 public function index(Request $request)
 {
     // ตรวจสอบ Referer
     if ($request->initSession() && $request->isReferer()) {
         // ตัวแปรป้องกันการเรียกหน้าเพจโดยตรง
         define('MAIN_INIT', __FILE__);
         // ตรวจสอบการ login
         Login::create();
         // กำหนด skin ให้กับ template
         Template::init(self::$cfg->skin);
         // counter และ useronline
         \Index\Counter\Model::init();
         // View
         Gcms::$view = new \Index\Loader\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();
                 }
             }
         }
         // โหลด 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');
         }
         // ตรวจสอบโมดูลที่เรียก
         $posts = $request->getParsedBody();
         $modules = \Index\Module\Controller::get($posts);
         if (!empty($modules)) {
             // โหลดโมดูลที่เรียก
             $page = createClass($modules->className)->{$modules->method}($request->withQueryParams($posts), $modules->module);
         }
         if (empty($page)) {
             // ไม่พบหน้าที่เรียก (index)
             $page = createClass('Index\\PageNotFound\\Controller')->init($request, 'index');
         }
         // output เป็น HTML
         $ret = array('db_elapsed' => round(microtime(true) - REQUEST_TIME, 4), 'db_quries' => \Kotchasan\Database\Driver::queryCount());
         foreach ($page as $key => $value) {
             $ret[$key] = $value;
         }
         if (empty($ret['menu'])) {
             $ret['menu'] = $ret['module'];
         }
         $ret['detail'] = Gcms::$view->renderHTML($page->detail);
         echo json_encode($ret);
     }
 }
 /**
  * บันทึก
  */
 public function save(Request $request)
 {
     $ret = array();
     // referer, session
     if ($request->initSession() && $request->isReferer()) {
         $antispam = new Antispam($request->post('register_antispamid')->toString());
         if (!$antispam->valid($request->post('register_antispam')->toString())) {
             // Antispam ไม่ถูกต้อง
             $ret['ret_register_antispam'] = 'this';
             $ret['input'] = 'register_antispam';
         } else {
             // รับค่าจากการ POST
             $save = array();
             foreach ($request->getParsedBody() as $key => $value) {
                 $k = str_replace('register_', '', $key);
                 switch ($k) {
                     case 'email':
                         $save['email'] = $request->post($key)->username();
                         break;
                     case 'phone1':
                     case 'idcard':
                         $save[$k] = $request->post($key)->number();
                         break;
                     case 'invite':
                         $save[$k] = $request->post($key)->toInt();
                         break;
                     case 'password':
                     case 'repassword':
                     case 'accept':
                     case 'next':
                         ${$k} = $request->post($key)->toString();
                         break;
                 }
             }
             if ($accept === '1') {
                 // ชื่อตาราง user
                 $user_table = $this->getFullTableName('user');
                 // database connection
                 $db = $this->db();
                 // ตรวจสอบค่าที่ส่งมา
                 $input = false;
                 // อีเมล์
                 if (empty($save['email'])) {
                     $ret['ret_register_email'] = 'this';
                     $input = !$input ? 'register_email' : $input;
                 } elseif (!Validator::email($save['email'])) {
                     $ret['ret_register_email'] = str_replace(':name', Language::get('Email'), Language::get('Invalid :name'));
                     $input = !$input ? 'register_email' : $input;
                 } else {
                     // ตรวจสอบอีเมล์ซ้ำ
                     $search = $db->first($user_table, array('email', $save['email']));
                     if ($search !== false) {
                         $ret['ret_register_email'] = str_replace(':name', Language::get('Email'), Language::get('This :name is already registered'));
                         $input = !$input ? 'register_email' : $input;
                     } else {
                         $ret['ret_register_email'] = '';
                     }
                 }
                 // password
                 if (mb_strlen($password) < 4) {
                     // รหัสผ่านต้องไม่น้อยกว่า 4 ตัวอักษร
                     $ret['ret_register_password'] = '******';
                     $input = !$input ? 'register_password' : $input;
                 } elseif ($repassword != $password) {
                     // ถ้าต้องการเปลี่ยนรหัสผ่าน กรุณากรอกรหัสผ่านสองช่องให้ตรงกัน
                     $ret['ret_register_repassword'] = '******';
                     $input = !$input ? 'register_repassword' : $input;
                 } else {
                     $save['password'] = md5($password . $save['email']);
                     $ret['ret_register_password'] = '';
                     $ret['ret_register_repassword'] = '';
                 }
                 // phone1
                 if (!empty($save['phone1'])) {
                     if (!preg_match('/[0-9]{9,10}/', $save['phone1'])) {
                         $ret['ret_register_phone1'] = str_replace(':name', Language::get('phone number'), Language::get('Invalid :name'));
                         $input = !$input ? 'register_phone1' : $input;
                     } else {
                         // ตรวจสอบโทรศัพท์
                         $search = $db->first($user_table, array('phone1', $save['phone1']));
                         if ($search !== false) {
                             $ret['ret_register_phone1'] = str_replace(':name', Language::get('phone number'), Language::get('This :name is already registered'));
                             $input = !$input ? 'register_phone1' : $input;
                         } else {
                             $ret['ret_register_phone1'] = '';
                         }
                     }
                 } elseif (self::$cfg->member_phone == 2) {
                     $ret['ret_register_phone1'] = 'this';
                     $input = !$input ? 'register_phone1' : $input;
                 }
                 // idcard
                 if (!empty($save['idcard'])) {
                     if (!Validator::idCard($save['idcard'])) {
                         $ret['ret_register_idcard'] = str_replace(':name', Language::get('Identification number'), Language::get('Invalid :name'));
                         $input = !$input ? 'register_idcard' : $input;
                     } else {
                         // ตรวจสอบ idcard ซ้ำ
                         $search = $db->first($user_table, array('idcard', $save['idcard']));
                         if ($search !== false) {
                             $ret['ret_register_idcard'] = str_replace(':name', Language::get('Identification number'), Language::get('This :name is already registered'));
                             $input = !$input ? 'register_idcard' : $input;
                         } else {
                             $ret['ret_register_idcard'] = '';
                         }
                     }
                 } elseif (self::$cfg->member_idcard == 2) {
                     $ret['ret_idcard'] = 'this';
                     $input = !$input ? 'idcard' : $input;
                 }
                 // invite
                 if (isset($save['invite'])) {
                     $ret['ret_invite'] = '';
                     if (!empty($save['invite'])) {
                         $search = $db->first($user_table, $save['invite']);
                         if ($search === false) {
                             $ret['ret_register_invite'] = str_replace(':name', Language::get('Invitation code'), Language::get('Invalid :name'));
                             $input = !$input ? 'register_invite' : $input;
                         }
                     }
                 }
                 if (!$input) {
                     $save['create_date'] = time();
                     $save['subscrib'] = 1;
                     $save['status'] = 0;
                     list($displayname, $domain) = explode('@', $save['email']);
                     $save['displayname'] = $displayname;
                     $a = 1;
                     while (true) {
                         if (false === $db->first($user_table, array('displayname', $save['displayname']))) {
                             break;
                         } else {
                             $a++;
                             $save['displayname'] = $displayname . $a;
                         }
                     }
                     // รหัสยืนยัน
                     $save['activatecode'] = empty(self::$cfg->user_activate) ? '' : Text::rndname(32);
                     // บันทึกลงฐานข้อมูล
                     $save['id'] = $db->insert($user_table, $save);
                     // ส่งอีเมล์
                     $replace = array('/%EMAIL%/' => $save['email'], '/%PASSWORD%/' => $password, '/%ID%/' => $save['activatecode']);
                     Email::send(empty(self::$cfg->user_activate) ? 2 : 1, 'member', $replace, $save['email']);
                     if (empty(self::$cfg->user_activate)) {
                         // login
                         $save['password'] = $password;
                         $_SESSION['login'] = $save;
                         // แสดงข้อความตอบรับการสมัครสมาชิก
                         $ret['alert'] = str_replace(':email', $save['email'], Language::get('Registration information sent to :email complete. We will take you to edit your profile'));
                         // ถ้าไม่มีการกำหนดหน้าถัดไปมา ไปแก้ไขข้อมูลส่วนตัว
                         $ret['location'] = isset($next) ? $next : WEB_URL . 'index.php?module=editprofile';
                     } else {
                         // แสดงข้อความตอบรับการสมัครสมาชิก
                         $ret['alert'] = str_replace(':email', $save['email'], Language::get('Register successfully, We have sent complete registration information to :email'));
                         // ถ้าไม่มีการกำหนดหน้าถัดไปมา กลับไปหน้าหลักเว็บไซต์
                         $ret['location'] = isset($next) ? $next : WEB_URL . 'index.php';
                     }
                     // clear antispam
                     $antispam->delete();
                 } else {
                     $ret['input'] = $input;
                 }
             }
         }
     }
     // คืนค่าเป็น JSON
     if (!empty($ret)) {
         echo json_encode($ret);
     }
 }