* @package setting * @version $Id$ * @link https://xuanim.com */ class setting extends control { /** * Set lang. * * @param string $module * @param string $field * @access public * @return void */ public function lang($module, $field) { $clientLang = $this->app->getClientLang(); $this->app->loadLang($module); $this->lang->js->confirmDelete = $this->lang->setting->notices->reset; $this->lang->js->deleteing = $this->lang->setting->notices->reseting; if($module == 'user' and $field == 'roleList') { $this->lang->menuGroups->setting = 'user'; unset($this->lang->setting->menu); } if(!empty($_POST)) { $lang = $_POST['lang']; $appendField = isset($this->config->setting->appendLang[$module][$field]) ? $this->config->setting->appendLang[$module][$field] : ''; $this->setting->deleteItems("lang=$lang&module=$module§ion=$field", $type = 'lang'); if($appendField) $this->setting->deleteItems("lang=$lang&module=$module§ion=$appendField", $type = 'lang'); $roles = array(); if(isset($_POST['keys']) && is_array($_POST['keys'])) { foreach($_POST['keys'] as $index => $key) { $value = $_POST['values'][$index]; if(!$value or !$key) continue; $system = $_POST['systems'][$index]; $roles[] = $key; $this->setting->setItem("{$lang}.{$module}.{$field}.{$key}.{$system}", $value, $type = 'lang'); /* Save additional item. */ if($appendField) { $this->setting->setItem("{$lang}.{$module}.{$appendField}.{$key}.{$system}", $_POST[$appendField][$index], $type = 'lang'); } } $this->loadModel('user')->batchUpdateUserRole($roles); } $this->setting->setItem("{$lang}.{$module}.updateRoleList.1", 1, 'lang'); $comment = $_POST; $comment['module'] = $module; $comment['field'] = $field; $comment = json_encode($comment); if(dao::isError()) { $this->setting->addSettingAction('role', 0, 'edit', 'fail', $comment); $this->send(array('result' => 'fail', 'message' => dao::getError())); } $this->setting->addSettingAction('role', 0, 'edit', 'success', $comment); $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('lang', "module=$module&field=$field"))); } $fieldList = $module == 'common' ? $this->lang->$field : $this->lang->$module->$field; $dbFields = $this->setting->getItems("lang=$clientLang,all&module=$module§ion=$field", 'lang'); $isUpdateRoleList = $this->setting->getItem("lang=$clientLang,all&module=$module&key=updateRoleList", 'lang'); $systemField = array(); foreach($dbFields as $dbField) $systemField[$dbField->key] = $dbField->system; $dbFields = array_column($dbFields, 'value', 'key'); if($module == 'user' and $field == 'roleList') { if(!empty($dbFields)) { foreach($fieldList as $fieldItem => $value) { if(empty($fieldItem)) continue; if(!isset($dbFields[$fieldItem])) unset($fieldList[$fieldItem]); } } if(empty($dbFields) and $isUpdateRoleList) $fieldList = array('' => ''); } $this->view->title = $this->lang->setting->lang; $this->view->position[] = $this->lang->setting->lang; $this->view->fieldList = $fieldList; $this->view->module = $module; $this->view->field = $field; $this->view->clientLang = $clientLang; $this->view->systemField = $systemField; $this->display(); } /** * Restore the default lang. Delete the related items. * * @param string $module * @param string $field * @access public * @return void */ public function reset($module, $field) { $this->setting->deleteItems("module=$module§ion=$field", $type = 'lang'); if($module == 'user' and $field == 'roleList') $this->setting->deleteItems("module=user&key=updateRoleList", $type = 'lang'); if(isset($this->config->setting->appendLang[$module][$field])) { $appendField = $this->config->setting->appendLang[$module][$field]; $this->setting->deleteItems("module=$module§ion=$appendField", $type = 'lang'); } $this->send(array('result' => 'success')); } }