/** * ส่งอีเมล์ ตาม 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); } }
/** * มาจากการเรียกด้วย 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)); } } }
/** * แสดงผล * * @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> </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); } }
/** * แสดงผล 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); } }