/** * ฟังก์ชั่นตรวจสอบความถูกต้องของอีเมล์ และตรวจสอบอีเมล์ซ้ำ */ public function email() { // referer if (self::$request->isReferer()) { $id = self::$request->post('id')->toInt(); $value = self::$request->post('value')->toString(); if (!Validator::email($value)) { echo str_replace(':name', Language::get('Email'), Language::get('Invalid :name')); } else { // ตรวจสอบอีเมล์ซ้ำ $search = $this->db()->first($this->getFullTableName('user'), array('email', $value)); if ($search && ($id == 0 || $id != $search->id)) { echo str_replace(':name', Language::get('Email'), Language::get('This :name is already registered')); } } } }
/** * Generated from @assert ('0123456789015') [==] false. * * @covers Kotchasan\Validator::idCard */ public function testIdCard2() { $this->assertFalse(\Kotchasan\Validator::idCard('0123456789015')); }
/** * ฟังก์ชั่นส่งอีเมล์ */ public function save() { $ret = array(); // referer, session, member if (self::$request->initSession() && self::$request->isSafe() && ($login = Login::adminAccess())) { if ($login['email'] == 'demo') { $ret['alert'] = Language::get('Unable to complete the transaction'); } else { // รับค่าจากการ POST $save = array('reciever' => self::$request->post('reciever')->toString(), 'from' => self::$request->post('from')->toString(), 'subject' => self::$request->post('subject')->topic(), 'detail' => self::$request->post('detail')->toString()); // ตรวจสอบค่าที่ส่งมา $input = false; // reciever if (!empty($save['reciever'])) { foreach (explode(',', $save['reciever']) as $item) { if (!Validator::email($item)) { if (!$input) { $input = 'reciever'; break; } } } } else { $ret['reciever'] = ''; } // subject if (empty($save['subject'])) { $input = !$input ? 'subject' : $input; } else { $ret['ret_subject'] = ''; } // from if (Login::isAdmin()) { if ($save['from'] == self::$cfg->noreply_email) { $save['from'] = self::$cfg->noreply_email . '<' . strip_tags(self::$cfg->web_title) . '>'; } else { $user = $this->db()->createQuery()->from('user')->where(array('email', $save['from']))->first('email', 'displayname'); if ($user) { $save['from'] = $user->email . (empty($user->displayname) ? '' : '<' . $user->displayname . '>'); } else { // ไม่พบผู้ส่ง ให้ส่งโดยตัวเอง $save['from'] = $login['email']; } } } else { // ไม่ใช่แอดมิน ผู้ส่งเป็นตัวเองเท่านั้น $save['from'] = $login['email']; } // detail $patt = array('/^( |\\s){0,}<br[\\s\\/]+?>( |\\s){0,}$/iu' => '', '/<\\?(.*?)\\?>/su' => '', '@<script[^>]*?>.*?</script>@siu' => ''); $save['detail'] = trim(preg_replace(array_keys($patt), array_values($patt), $save['detail'])); if (!$input) { $err = Email::send($save['reciever'], $save['from'], $save['subject'], $save['detail']); if (empty($err)) { // ส่งอีเมล์สำเร็จ $ret['alert'] = Language::get('Your message was sent successfully'); $ret['location'] = self::$request->getUri()->postBack('index.php', array('id' => 0)); } else { // ข้อผิดพลาดการส่งอีเมล์ $ret['alert'] = $err; } // clear self::$request->removeToken(); } else { // คืนค่า input ตัวแรกที่ error $ret['input'] = $input; } } } else { $ret['alert'] = Language::get('Unable to complete the transaction'); } // คืนค่าเป็น JSON echo json_encode($ret); }
/** * บันทึก */ public function save() { $ret = array(); // referer, session, member if (self::$request->initSession() && self::$request->isReferer() && ($login = Login::isAdmin())) { if ($login['email'] == 'demo' || !empty($login['fb'])) { $ret['alert'] = Language::get('Unable to complete the transaction'); } else { $input = false; $model = new static(); $table_email = $model->getFullTableName('emailtemplate'); // รับค่าจากการ POST $save = array('from_email' => self::$request->post('from_email')->url(), 'copy_to' => self::$request->post('copy_to')->url(), 'subject' => self::$request->post('subject')->topic(), 'language' => self::$request->post('language')->text(), 'detail' => self::$request->post('detail')->toString()); $id = self::$request->post('id')->toInt(); // ตรวจสอบค่าที่ส่งมา if (!empty($id)) { $email = $model->db()->first($table_email, array('id', $id)); } // มีการแก้ไขภาษา ตรวจสอบว่ามีรายการในภาษาที่เลือกหรือไม่ if (!empty($id) && $save['language'] != $email->language) { $where = array(array('email_id', $email->email_id), array('module', $email->module), array('language', $save['language'])); $search = $model->db()->first($table_email, $where); if ($search === false) { // บันทึกเป็นรายการใหม่ $save['name'] = $email->name; $save['email_id'] = $email->email_id; $save['module'] = $email->module; $id = 0; } else { // มีอีเมล์ในภาษาที่เลือกอยู่แล้ว $ret['ret_language'] = Language::get('This item already in the chosen language'); $input = !$input ? 'language' : $input; } } // from_email if (!empty($save['from_email']) && !Validator::email($save['from_email'])) { $input = !$input ? 'from_email' : $input; } else { $ret['ret_from_email'] = ''; } // copy_to if (!empty($save['copy_to'])) { foreach (explode(',', $save['copy_to']) as $item) { if (!Validator::email($item)) { if (!$input) { $input = 'copy_to'; break; } } } } else { $ret['ret_copy_to'] = ''; } // subject if (empty($save['subject'])) { $input = !$input ? 'subject' : $input; } else { $ret['ret_subject'] = ''; } // detail $patt = array('/^( |\\s){0,}<br[\\s\\/]+?>( |\\s){0,}$/iu' => '', '/<\\?(.*?)\\?>/su' => '', '@<script[^>]*?>.*?</script>@siu' => ''); $save['detail'] = trim(preg_replace(array_keys($patt), array_values($patt), $save['detail'])); $save['last_update'] = time(); if (!$input) { if (empty($id)) { // ใหม่ $model->db()->insert($table_email, $save); } else { // แก้ไข $model->db()->update($table_email, $id, $save); } // ส่งค่ากลับ $ret['alert'] = Language::get('Saved successfully'); $ret['location'] = self::$request->getUri()->postBack('index.php', array('module' => 'mailtemplate', 'id' => 0)); } else { // คืนค่า input ตัวแรกที่ error $ret['input'] = $input; } } } else { $ret['alert'] = Language::get('Unable to complete the transaction'); } // คืนค่าเป็น JSON echo json_encode($ret); }
/** * form submit */ public function save() { $ret = array(); // referer, session, member if (self::$request->initSession() && self::$request->isReferer() && ($login = Login::isAdmin())) { if ($login['email'] == 'demo') { $ret['alert'] = Language::get('Unable to complete the transaction'); } else { // โหลด config $config = Config::load(ROOT_PATH . 'settings/config.php'); // รับค่าจากการ POST $save = array('noreply_email' => self::$request->post('noreply_email')->url(), 'email_charset' => self::$request->post('email_charset')->text(), 'email_use_phpMailer' => self::$request->post('email_use_phpMailer')->toBoolean(), 'email_Host' => self::$request->post('email_Host')->text(), 'email_Port' => self::$request->post('email_Port')->toInt(), 'email_SMTPAuth' => self::$request->post('email_SMTPAuth')->toBoolean(), 'email_SMTPSecure' => self::$request->post('email_SMTPSecure')->text(), 'email_Username' => self::$request->post('email_Username')->quote(), 'email_Password' => self::$request->post('email_Password')->quote()); // ตรวจสอบค่าที่ส่งมา $input = false; // อีเมล์ if (empty($save['noreply_email'])) { $ret['ret_noreply_email'] = Language::get('Please fill in') . ' ' . Language::get('Email'); $input = !$input ? 'noreply_email' : $input; } elseif (!Validator::email($save['noreply_email'])) { $ret['ret_noreply_email'] = str_replace(':name', Language::get('Email'), Language::get('Invalid :name')); $input = !$input ? 'noreply_email' : $input; } else { $config->noreply_email = $save['noreply_email']; $ret['ret_noreply_email'] = ''; } $config->email_charset = empty($save['email_charset']) ? 'utf-8' : strtolower($save['email_charset']); if (empty($save['email_Host'])) { $config->email_Host = 'localhost'; $config->email_Port = 25; $config->email_SMTPSecure = ''; $config->email_Username = ''; $config->email_Password = ''; } else { $config->email_Host = $save['email_Host']; $config->email_Port = empty($save['email_Port']) ? 25 : $save['email_Port']; $config->email_SMTPSecure = isset($save['email_SMTPSecure']) ? $save['email_SMTPSecure'] : ''; $config->email_Username = isset($save['email_Username']) ? $save['email_Username'] : ''; if (!empty($save['email_Password'])) { $config->email_Password = $save['email_Password']; } } $config->email_use_phpMailer = $save['email_use_phpMailer']; $config->email_SMTPAuth = $save['email_SMTPAuth']; if (!$input) { // save config if (Config::save($config, ROOT_PATH . 'settings/config.php')) { $ret['alert'] = Language::get('Saved successfully'); $ret['location'] = 'reload'; } else { $ret['alert'] = sprintf(Language::get('File %s cannot be created or is read-only.'), 'settings/config.php'); } } else { // คืนค่า input ที่ error $ret['input'] = $input; } } } else { $ret['alert'] = Language::get('Unable to complete the transaction'); } // คืนค่าเป็น JSON 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); } }