/** * 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); }
/** * แสดงผล */ 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(); }
/** * บันทึก */ 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(); }
/** * 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); }
/** * 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); }
/** * 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); }