コード例 #1
0
 /**
  * ฟังก์ชั่นตรวจสอบความถูกต้องของอีเมล์ และตรวจสอบอีเมล์ซ้ำ
  */
 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'));
             }
         }
     }
 }
コード例 #2
0
ファイル: ValidatorTest.php プロジェクト: goragod/kotchasan
 /**
  * Generated from @assert ('0123456789015') [==] false.
  *
  * @covers Kotchasan\Validator::idCard
  */
 public function testIdCard2()
 {
     $this->assertFalse(\Kotchasan\Validator::idCard('0123456789015'));
 }
コード例 #3
0
 /**
  * ฟังก์ชั่นส่งอีเมล์
  */
 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('/^(&nbsp;|\\s){0,}<br[\\s\\/]+?>(&nbsp;|\\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);
 }
コード例 #4
0
 /**
  * บันทึก
  */
 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('/^(&nbsp;|\\s){0,}<br[\\s\\/]+?>(&nbsp;|\\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);
 }
コード例 #5
0
 /**
  * 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);
 }
コード例 #6
0
 /**
  * บันทึก
  */
 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);
     }
 }