Esempio n. 1
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');
             $config->member_reserv = array();
             foreach (explode("\n", self::$request->post('member_reserv')->text()) as $item) {
                 $config->member_reserv[] = trim($item);
             }
             $config->wordrude = array();
             foreach (explode("\n", self::$request->post('wordrude')->text()) as $item) {
                 $config->wordrude[] = trim($item);
             }
             $config->wordrude_replace = self::$request->post('wordrude_replace', 'xxx')->toString();
             $config->counter_digit = max(4, self::$request->post('counter_digit')->toInt());
             // 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 {
         $ret['alert'] = Language::get('Unable to complete the transaction');
     }
     // คืนค่าเป็น JSON
     echo json_encode($ret);
 }
Esempio n. 2
0
 /**
  * create Singleton
  *
  * @param Config $cfg
  */
 private function __construct($cfg)
 {
     /* Request Class */
     self::$request = new Request();
     /* config */
     self::$cfg = empty($cfg) ? Config::create() : $cfg;
     /* charset */
     ini_set('default_charset', $this->char_set);
     if (extension_loaded('mbstring')) {
         mb_internal_encoding($this->char_set);
     }
     /* time zone */
     @date_default_timezone_set(self::$cfg->timezone);
 }
Esempio n. 3
0
 /**
  * แสดงผล
  */
 public function render()
 {
     // แอดมิน
     if (Login::isAdmin()) {
         // แสดงผล
         $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_Other}</span></li>');
         $section->add('header', array('innerHTML' => '<h1 class="icon-config">' . $this->title() . '</h1>'));
         // โหลด config
         $config = Config::load(ROOT_PATH . 'settings/config.php');
         // แสดงฟอร์ม
         $section->appendChild(createClass('Index\\Other\\View')->render($config));
         return $section->render();
     }
     // 404.html
     return \Index\Error\Controller::page404();
 }
Esempio n. 4
0
 /**
  * บันทึก
  */
 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 {
             // รับค่าจากการ POST
             $save = array('show_intro' => self::$request->post('show_intro')->toBoolean(), 'language' => self::$request->post('language')->toString(), 'detail' => self::$request->post('detail')->detail());
             if (!empty($save['language']) && preg_match('/^[a-z]{2,2}$/', $save['language'])) {
                 // save
                 $template = ROOT_PATH . DATA_FOLDER . 'intro.' . $save['language'] . '.php';
                 $f = @fopen($template, 'wb');
                 if ($f) {
                     fwrite($f, "<?php exit;?>\n" . $save['detail']);
                     fclose($f);
                     // โหลด config
                     $config = Config::load(ROOT_PATH . 'settings/config.php');
                     $config->show_intro = $save['show_intro'];
                     // 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 {
                     $ret['alert'] = sprintf(Language::get('File %s cannot be created or is read-only.'), DATA_FOLDER . 'intro.' . $save['language'] . '.php');
                 }
             } else {
                 $ret['alert'] = Language::get('Unable to complete the transaction');
             }
         }
     } else {
         $ret['alert'] = Language::get('Unable to complete the transaction');
     }
     // คืนค่าเป็น JSON
     echo json_encode($ret);
 }
 /**
  * รับค่าจาก action
  */
 public function action()
 {
     $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
             $action = self::$request->post('action')->toString();
             // do not saved
             $save = false;
             // default
             if (!isset($config->member_status[0])) {
                 $config->member_status[0] = 'สมาชิก';
                 $save = true;
             }
             if (!isset($config->member_status[1])) {
                 $config->member_status[1] = 'ผู้ดูแลระบบ';
                 $save = true;
             }
             if (!isset($config->color_status[0])) {
                 $config->color_status[0] = '#006600';
                 $save = true;
             }
             if (!isset($config->color_status[1])) {
                 $config->color_status[1] = '#FF0000';
                 $save = true;
             }
             if ($action === 'config_status_add') {
                 // เพิ่มสถานะสมาชิกใหม่
                 $config->member_status[] = Language::get('click to edit');
                 $config->color_status[] = '#000000';
                 // id ของสถานะใหม่
                 $i = sizeof($config->member_status) - 1;
                 // ข้อมูลใหม่
                 $row = '<dd id="config_status_' . $i . '">';
                 $row .= '<span class="icon-delete" id="config_status_delete_' . $i . '" title="{LNG_Delete}"></span>';
                 $row .= '<span id="config_status_color_' . $i . '" title="' . $config->color_status[$i] . '"></span>';
                 $row .= '<span id="config_status_name_' . $i . '" title="' . $config->member_status[$i] . '">' . htmlspecialchars($config->member_status[$i]) . '</span>';
                 $row .= '</dd>';
                 // คืนค่าข้อมูลเข้ารหัส
                 $ret['data'] = $row;
                 $ret['newId'] = "config_status_{$i}";
                 $save = true;
             } elseif (preg_match('/^config_status_delete_([0-9]+)$/', $action, $match)) {
                 // ลบ
                 $save1 = array();
                 $save2 = array();
                 // ลบสถานะและสี
                 for ($i = 0; $i < sizeof($config->member_status); $i++) {
                     if ($i < 2 || $i != $match[1]) {
                         $save1[] = $config->member_status[$i];
                         $save2[] = $config->color_status[$i];
                     }
                 }
                 $config->member_status = $save1;
                 $config->color_status = $save2;
                 // รายการที่ลบ
                 $ret['del'] = str_replace('delete_', '', $action);
                 $save = true;
             } elseif (preg_match('/^config_status_(name|color)_([0-9]+)$/', $action, $match)) {
                 // แก้ไขชื่อสถานะหรือสี
                 $value = self::$request->post('value')->text();
                 $match[2] = (int) $match[2];
                 if ($value == '' && $match[1] == 'name') {
                     $value = $config->member_status[$match[2]];
                 } elseif ($value == '' && $match[1] == 'color') {
                     $value = $config->color_status[$match[2]];
                 } elseif ($match[1] == 'name') {
                     $config->member_status[$match[2]] = $value;
                     $save = true;
                 } else {
                     $config->color_status[$match[2]] = $value;
                     $save = true;
                 }
                 // ส่งข้อมูลใหม่ไปแสดงผล
                 $ret['edit'] = $value;
                 $ret['editId'] = $action;
             }
             // save config
             if ($save && !Config::save($config, ROOT_PATH . 'settings/config.php')) {
                 $ret['alert'] = sprintf(Language::get('File %s cannot be created or is read-only.'), 'settings/config.php');
             }
         }
     } 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
             $post = array('language_name' => self::$request->post('language_name')->text(), 'copy' => self::$request->post('lang_copy')->text(), 'language' => self::$request->post('language')->text());
             // ตรวจสอบค่าที่ส่งมา
             $input = false;
             if (preg_match('/^[a-z]{2,2}$/', $post['language_name'])) {
                 $ret['ret_language_name'] = '';
             } else {
                 $input = !$input ? 'language_name' : $input;
             }
             if (!$input) {
                 if (empty($post['language'])) {
                     // สร้างภาษาใหม่
                     if (!@copy(ROOT_PATH . 'language/' . $post['copy'] . '.php', ROOT_PATH . 'language/' . $post['language_name'] . '.php')) {
                         // error copy file
                         $ret['alert'] = sprintf(Language::get('Directory %s cannot be created or is read-only.'), 'language/');
                     } else {
                         @copy(ROOT_PATH . 'language/' . $post['copy'] . '.js', ROOT_PATH . 'language/' . $post['language_name'] . '.js');
                         @copy(ROOT_PATH . 'language/' . $post['copy'] . '.gif', ROOT_PATH . 'language/' . $post['language_name'] . '.gif');
                         $config->languages[] = $post['language_name'];
                     }
                 } elseif ($post['language_name'] != $post['language']) {
                     // เปลี่ยนชื่อภาษา
                     rename(ROOT_PATH . 'language/' . $post['language'] . '.php', ROOT_PATH . 'language/' . $post['language_name'] . '.php');
                     rename(ROOT_PATH . 'language/' . $post['language'] . '.js', ROOT_PATH . 'language/' . $post['language_name'] . '.js');
                     rename(ROOT_PATH . 'language/' . $post['language'] . '.gif', ROOT_PATH . 'language/' . $post['language_name'] . '.gif');
                     foreach ($config->languages as $i => $item) {
                         if ($item == $post['language']) {
                             $config->languages[$i] = $post['language_name'];
                         }
                     }
                 }
                 // ไอคอนอัปโหลด
                 foreach (self::$request->getUploadedFiles() as $item => $file) {
                     if ($file->hasUploadFile()) {
                         // ตรวจสอบไฟล์อัปโหลด
                         if (!$file->validFileExt(array('gif'))) {
                             $ret['alert'] = Language::get('The type of file is invalid');
                             $input = !$input ? $item : $input;
                         } else {
                             try {
                                 $file->moveTo(ROOT_PATH . 'language/' . $post['language_name'] . '.gif');
                             } catch (\Exception $exc) {
                                 // ไม่สามารถอัปโหลดได้
                                 $ret['ret_' . $item] = Language::get($exc->getMessage());
                                 $input = !$input ? $item : $input;
                             }
                         }
                     }
                 }
                 if (!$input) {
                     // save config
                     if (Config::save($config, ROOT_PATH . 'settings/config.php')) {
                         $ret['alert'] = Language::get('Saved successfully');
                         $ret['location'] = self::$request->getUri()->postBack('index.php', array('module' => 'languages'));
                     } else {
                         $ret['alert'] = sprintf(Language::get('File %s cannot be created or is read-only.'), 'settings/config.php');
                     }
                 }
             }
             if ($input) {
                 // คืนค่า input ที่ error
                 $ret['input'] = $input;
             }
         }
     } else {
         $ret['alert'] = Language::get('Unable to complete the transaction');
     }
     // คืนค่า json
     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();
 }
Esempio n. 8
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 (array('web_title', 'web_description') as $key) {
                 $value = self::$request->post($key)->quote();
                 if (empty($value)) {
                     $ret['ret_' . $key] = Language::get('Please fill in');
                     $input = !$input ? $key : $input;
                 } else {
                     $ret['ret_' . $key] = '';
                     $config->{$key} = $value;
                 }
             }
             foreach (array('user_icon_typies', 'login_fields') as $key) {
                 $value = self::$request->post($key)->text();
                 if (empty($value)) {
                     $ret['ret_' . $key] = Language::get('Please select at least one item');
                     $input = !$input ? $key : $input;
                 } else {
                     $ret['ret_' . $key] = '';
                     $config->{$key} = $value;
                 }
             }
             $config->user_icon_h = max(16, self::$request->post('user_icon_h')->toInt());
             $config->user_icon_w = max(16, self::$request->post('user_icon_w')->toInt());
             $config->cache_expire = max(0, self::$request->post('cache_expire')->toInt());
             $config->module_url = self::$request->post('module_url')->toInt();
             $config->timezone = self::$request->post('timezone')->text();
             $config->demo_mode = self::$request->post('demo_mode')->toBoolean();
             $config->user_activate = self::$request->post('user_activate')->toBoolean();
             $config->member_only_ip = self::$request->post('member_only_ip')->toBoolean();
             $config->login_action = self::$request->post('login_action')->toInt();
             $config->member_invitation = self::$request->post('member_invitation')->toInt();
             $config->member_phone = self::$request->post('member_phone')->toInt();
             $config->member_idcard = self::$request->post('member_idcard')->toInt();
             $config->use_ajax = self::$request->post('use_ajax')->toBoolean();
             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);
 }
Esempio n. 9
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);
 }
 /**
  * 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);
 }
Esempio n. 11
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);
 }
 /**
  * บันทึกจาก ajax
  */
 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
             $post = self::$request->getParsedBody();
             // do not saved
             $save = false;
             $reload = false;
             if ($post['action'] === 'changed' || $post['action'] === 'move') {
                 if ($post['action'] === 'changed') {
                     // เปลี่ยนแปลงสถานะการเผยแพร่ภาษา
                     $config->languages = explode(',', str_replace('check_', '', $post['data']));
                 } else {
                     // จัดลำดับภาษา
                     $languages = $config->languages;
                     $config->languages = array();
                     foreach (explode(',', str_replace('L_', '', $post['data'])) as $lng) {
                         if (in_array($lng, $languages)) {
                             $config->languages[] = $lng;
                         }
                     }
                 }
                 $save = true;
             } elseif ($post['action'] === 'droplang' && preg_match('/^([a-z]{2,2})$/', $post['data'], $match)) {
                 // ลบภาษา
                 @unlink(ROOT_PATH . 'language/' . $match[1] . '.php');
                 @unlink(ROOT_PATH . 'language/' . $match[1] . '.js');
                 @unlink(ROOT_PATH . 'language/' . $match[1] . '.gif');
                 $languages = array();
                 foreach ($config->languages as $item) {
                     if ($match[1] !== $item) {
                         $languages[] = $item;
                     }
                 }
                 $config->languages = $languages;
                 $save = true;
                 $reload = true;
             }
             if ($save) {
                 // save config
                 if (Config::save($config, ROOT_PATH . 'settings/config.php')) {
                     $ret['alert'] = Language::get('Saved successfully');
                     if ($reload) {
                         $ret['location'] = 'reload';
                     }
                 } else {
                     $ret['alert'] = sprintf(Language::get('File %s cannot be created or is read-only.'), 'settings/config.php');
                 }
             }
         }
     } else {
         $ret['alert'] = Language::get('Unable to complete the transaction');
     }
     // คืนค่าเป็น JSON
     echo json_encode($ret);
 }