Example #1
0
 /**
  * Logs with an arbitrary level.
  *
  * @param mixed  $level
  * @param string $message
  * @param array  $context
  */
 public function log($level, $message, array $context = array())
 {
     $patt = array('datetime' => date($this->options['dateFormat'], time()), 'level' => isset($this->logLevels[$level]) ? strtoupper($level) : 'UNKNOW', 'message' => $message, 'context' => empty($context) ? '' : json_encode($context));
     $message = $this->options['logFormat'];
     foreach ($patt as $key => $value) {
         $message = str_replace('{' . $key . '}', $value, $message);
     }
     $message = "\n" . preg_replace('/[\\s\\n\\t\\r]+/', ' ', $message);
     if (File::makeDirectory($this->options['logFilePath'])) {
         // ไฟล์ log
         switch ($level) {
             case LogLevel::DEBUG:
             case LogLevel::INFO:
             case LogLevel::ALERT:
                 $file = $this->options['logFilePath'] . date('Y-m-d') . '.' . $this->options['extension'];
                 break;
             default:
                 $file = $this->options['logFilePath'] . 'error_log.' . $this->options['extension'];
                 break;
         }
         // save
         if (file_exists($file)) {
             $f = @fopen($file, 'a');
         } else {
             $f = @fopen($file, 'w');
             if ($f && $this->options['extension'] == 'php') {
                 fwrite($f, '<' . '?php exit() ?' . '>');
             }
         }
         if ($f) {
             fwrite($f, $message);
             fclose($f);
         } else {
             printf(Language::get('File %s cannot be created or is read-only.'), 'log');
         }
     } else {
         printf(Language::get('Directory %s cannot be created or is read-only.'), 'logs/');
         echo $message;
     }
 }
Example #2
0
 /**
  * class constructor
  *
  * @throws Exception
  */
 public function __construct()
 {
     $this->cache_expire = self::$cfg->get('cache_expire', 0);
     if (!empty($this->cache_expire)) {
         //  folder cache
         $dir = ROOT_PATH . DATA_FOLDER . 'cache/';
         if (!File::makeDirectory($dir)) {
             throw new Exception('Folder ' . DATA_FOLDER . 'cache/ cannot be created.');
         }
         $this->cache_dir = $dir;
         // clear old cache every day
         $d = is_file($dir . 'index.php') ? file_get_contents($dir . 'index.php') : 0;
         if ($d != date('d')) {
             $this->clear();
             $f = @fopen($dir . 'index.php', 'wb');
             if ($f === false) {
                 throw new Exception('File ' . DATA_FOLDER . 'cache/index.php cannot be written.');
             } else {
                 fwrite($f, date('d'));
                 fclose($f);
             }
         }
     }
 }
Example #3
0
 /**
  * Generated from @assert ('index.php.sql') [==] 'sql'.
  *
  * @covers Kotchasan\File::ext
  */
 public function testExt()
 {
     $this->assertEquals('sql', \Kotchasan\File::ext('index.php.sql'));
 }
 /**
  * บันทึก
  */
 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 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);
     }
 }
 /**
  * แสดงผล
  */
 public function render()
 {
     // แอดมิน
     if ($login = Login::isAdmin()) {
         // โหลด config
         $config = Config::load(ROOT_PATH . 'settings/config.php');
         // path ของ skin
         $dir = ROOT_PATH . 'skin';
         // action
         $action = self::$request->get('action')->toString();
         if (!empty($action)) {
             if ($login['email'] == 'demo' || !empty($login['fb'])) {
                 $message = '<aside class=error>{LNG_Unable to complete the transaction}</aside>';
             } else {
                 $theme = preg_replace('/[\\/\\\\]/ui', '', self::$request->get('theme')->text());
                 if (is_dir($dir . "/{$theme}")) {
                     if ($action == 'use') {
                         // skin ที่กำหนด
                         $config->skin = $theme;
                         unset($_SESSION['skin']);
                         // บันทึก config.php
                         if (Config::save($config, ROOT_PATH . 'settings/config.php')) {
                             self::$request->setSession('my_skin', $config->skin);
                             $message = '<aside class=message>{LNG_Select a new template successfully}</aside>';
                         } else {
                             $message = '<aside class=error>' . sprintf(Language::get('File %s cannot be created or is read-only.'), 'settings/config.php') . '</aside>';
                         }
                     } elseif ($action == 'delete') {
                         // ลบ skin
                         File::removeDirectory($dir . '/' . $theme . '/');
                         $message = '<aside class=message>{LNG_Successfully remove template files}</aside>';
                     }
                 }
             }
         }
         // แสดงผล
         $section = Html::create('section');
         // breadcrumbs
         $breadcrumbs = $section->add('div', array('class' => 'breadcrumbs'));
         $ul = $breadcrumbs->add('ul');
         $ul->appendChild('<li><span class="icon-settings">{LNG_Site settings}</span></li>');
         $ul->appendChild('<li><span>{LNG_Template}</span></li>');
         $section->add('header', array('innerHTML' => '<h1 class="icon-template">' . $this->title() . '</h1>'));
         if (!empty($message)) {
             $section->appendChild($message);
         }
         // อ่าน theme ทั้งหมด
         $themes = array();
         $f = opendir($dir);
         while (false !== ($text = readdir($f))) {
             if ($text !== $config->skin && $text !== "." && $text !== "..") {
                 if (is_dir($dir . "/{$text}") && is_file($dir . "/{$text}/style.css")) {
                     $themes[] = $text;
                 }
             }
         }
         closedir($f);
         // แสดงฟอร์ม
         $section->appendChild(createClass('Index\\Template\\View')->render($dir, $config, $themes));
         return $section->render();
     }
     // 404.html
     return \Index\Error\Controller::page404();
 }
Example #7
0
 /**
  * save config
  */
 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('delete_logo' => self::$request->post('delete_logo')->toBoolean(), 'delete_bg_image' => self::$request->post('delete_bg_image')->toBoolean(), 'bg_color' => self::$request->post('bg_color')->color());
             // ตรวจสอบค่าที่ส่งมา
             $input = false;
             // อัปโหลดไฟล์
             foreach (self::$request->getUploadedFiles() as $item => $file) {
                 if ($save['delete_' . $item] == 1) {
                     // ลบรูปภาพ
                     if (isset($config->{$item}) && is_file(ROOT_PATH . DATA_FOLDER . 'image/' . $config->{$item})) {
                         @unlink(ROOT_PATH . DATA_FOLDER . 'image/' . $config->{$item});
                         unset($config->{$item});
                     }
                 } elseif ($file->hasUploadFile()) {
                     // ชนิดของไฟล์ที่ยอมรับ
                     $typies = $item == 'logo' ? array('jpg', 'gif', 'png', 'swf') : array('jpg', 'gif', 'png');
                     if (!$file->validFileExt($typies)) {
                         // ชนิดของไฟล์ไม่รองรับ
                         $ret['ret_' . $item] = Language::get('The type of file is invalid');
                         $input = !$input ? $item : $input;
                     } elseif (!File::makeDirectory(ROOT_PATH . DATA_FOLDER . 'image/')) {
                         // ไดเรคทอรี่ไม่สามารถสร้างได้
                         $ret['ret_' . $item] = sprintf(Language::get('Directory %s cannot be created or is read-only.'), DATA_FOLDER . 'image/');
                         $input = !$input ? $item : $input;
                     } else {
                         try {
                             $ext = $file->getClientFileExt();
                             $file->moveTo(ROOT_PATH . DATA_FOLDER . 'image/' . $item . '.' . $ext);
                             $config->{$item} = $item . '.' . $ext;
                         } catch (\Exception $exc) {
                             // ไม่สามารถอัปโหลดได้
                             $ret['ret_' . $item] = Language::get($exc->getMessage());
                             $input = !$input ? $item : $input;
                         }
                     }
                 }
             }
             // bg_color
             if (empty($save['bg_color']) || !preg_match('/^\\#[0-9A-Fa-f]{4,6}$/', $save['bg_color'])) {
                 unset($config->bg_color);
             } else {
                 $config->bg_color = strtoupper($save['bg_color']);
             }
             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);
 }
Example #8
0
 /**
  * รายชื่อภาษาที่ติดตั้ง
  *
  * @return array
  */
 public static function installedLanguage()
 {
     if (!isset(self::$installed_languages)) {
         $language_folder = self::languageFolder();
         $files = array();
         File::listFiles($language_folder, $files);
         foreach ($files as $file) {
             if (preg_match('/(.*\\/([a-z]{2,2}))\\.(php|js)/', $file, $match)) {
                 self::$installed_languages[$match[2]] = $match[2];
             }
         }
     }
     return self::$installed_languages;
 }
Example #9
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');
             // ตรวจสอบค่าที่ส่งมา
             $input = false;
             // อัปโหลดไฟล์
             foreach (self::$request->getUploadedFiles() as $item => $file) {
                 if (self::$request->post('delete_' . $item)->toBoolean() == 1) {
                     // ลบรูปภาพ
                     if (is_file(ROOT_PATH . DATA_FOLDER . 'image/facebook_photo.jpg')) {
                         @unlink(ROOT_PATH . DATA_FOLDER . 'image/facebook_photo.jpg');
                     }
                 } elseif (!File::makeDirectory(ROOT_PATH . DATA_FOLDER . 'image/')) {
                     // ไดเรคทอรี่ไม่สามารถสร้างได้
                     $ret['ret_' . $item] = sprintf(Language::get('Directory %s cannot be created or is read-only.'), DATA_FOLDER . 'image/');
                     $input = !$input ? $item : $input;
                 } elseif ($file->hasUploadFile()) {
                     // ตรวจสอบไฟล์อัปโหลด
                     if (!$file->validFileExt(array('jpg'))) {
                         $ret['ret_' . $item] = Language::get('The type of file is invalid');
                         $input = !$input ? $item : $input;
                     } else {
                         try {
                             $file->moveTo(ROOT_PATH . DATA_FOLDER . 'image/' . $item . '.jpg');
                         } catch (\Exception $exc) {
                             // ไม่สามารถอัปโหลดได้
                             $ret['ret_' . $item] = Language::get($exc->getMessage());
                             $input = !$input ? $item : $input;
                         }
                     }
                 }
             }
             // other
             foreach (array('google_site_verification', 'google_profile', 'msvalidate', 'facebook_appId') as $item) {
                 $value = self::$request->post($item)->text();
                 if (empty($value)) {
                     unset($config->{$item});
                 } else {
                     $config->{$item} = $value;
                 }
             }
             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);
 }
 /**
  * Initial Counter & Useronline
  */
 public static function init()
 {
     if (defined('MAIN_INIT')) {
         // วันนี้
         $y = (int) date('Y');
         $m = (int) date('m');
         $d = (int) date('d');
         // ตรวจสอบ ว่าเคยเยี่ยมชมหรือไม่
         if (self::$request->cookie('counter_date')->toInt() != $d) {
             // เข้ามาครั้งแรกในวันนี้, บันทึก counter 1 วัน
             setCookie('counter_date', $d, time() + 3600 * 24, '/');
             $new_visitor = true;
         } else {
             $new_visitor = false;
         }
         // โฟลเดอร์ของ counter
         $counter_dir = ROOT_PATH . DATA_FOLDER . 'counter';
         // ตรวจสอบโฟลเดอร์
         File::makeDirectory($counter_dir);
         // ตรวจสอบวันใหม่
         $c = (int) @file_get_contents($counter_dir . '/index.php');
         if ($d != $c) {
             $f = @fopen($counter_dir . '/index.php', 'wb');
             if ($f) {
                 fwrite($f, $d);
                 fclose($f);
             }
             $f = @opendir($counter_dir);
             if ($f) {
                 while (false !== ($text = readdir($f))) {
                     if ($text != '.' && $text != '..') {
                         if ($text != $y) {
                             File::removeDirectory($counter_dir . "/{$text}");
                         }
                     }
                 }
                 closedir($f);
             }
         }
         // ตรวจสอบ + สร้าง โฟลเดอร์
         File::makeDirectory("{$counter_dir}/{$y}");
         File::makeDirectory("{$counter_dir}/{$y}/{$m}");
         // ip ปัจจุบัน
         $counter_ip = self::$request->getClientIp();
         // session ปัจจุบัน
         $counter_ssid = session_id();
         // วันนี้
         $counter_day = date('Y-m-d');
         // Model
         $model = new static();
         $db = $model->db();
         // อ่าน counter รายการล่าสุด
         $my_counter = $db->createQuery()->from('counter')->order('id DESC')->toArray()->first();
         if (!$my_counter) {
             $my_counter = array('date' => '', 'counter' => 0);
         }
         if ($my_counter['date'] != $counter_day) {
             // วันใหม่
             $my_counter['visited'] = 0;
             $my_counter['pages_view'] = 0;
             $my_counter['date'] = $counter_day;
             $new_day = true;
             // clear useronline
             $db->emptyTable($model->getFullTableName('useronline'));
             // clear visited_today
             $db->updateAll($model->getFullTableName('index'), array('visited_today' => 0));
         } else {
             $new_day = false;
         }
         // บันทึกลง log
         $counter_log = "{$counter_dir}/{$y}/{$m}/{$d}.dat";
         if (is_file($counter_log)) {
             // เปิดไฟล์เพื่อเขียนต่อ
             $f = @fopen($counter_log, 'ab');
         } else {
             // สร้างไฟล์ log ใหม่
             $f = @fopen($counter_log, 'wb');
         }
         if ($f) {
             $data = $counter_ssid . chr(1) . $counter_ip . chr(1) . self::$request->server('HTTP_REFERER', '') . chr(1) . self::$request->server('HTTP_USER_AGENT', '') . chr(1) . date('H:i:s') . "\n";
             fwrite($f, $data);
             fclose($f);
         }
         if ($new_visitor) {
             // ยังไม่เคยเยี่ยมชมในวันนี้
             $my_counter['visited']++;
             $my_counter['counter']++;
         }
         $my_counter['pages_view']++;
         $my_counter['time'] = time();
         if ($new_day) {
             unset($my_counter['id']);
             $db->insert($model->getFullTableName('counter'), $my_counter);
         } else {
             $db->update($model->getFullTableName('counter'), $my_counter['id'], $my_counter);
         }
         return $new_day;
     } else {
         // เรียก method โดยตรง
         new \Kotchasan\Http\NotFound('Do not call method directly');
     }
 }