model = new ConfigModel(); } public function index() { $configGroup = get_sys_config('config_group'); $config = $this->model->order('weigh desc')->select()->toArray(); $list = []; foreach ($config as $item) { $item['title'] = __($item['title']); $list[$item['group']]['list'][] = $item; } foreach ($configGroup as $item) { $list[$item['key']]['name'] = $item['key']; $list[$item['key']]['title'] = __($item['value']); $newConfigGroup[$item['key']] = $list[$item['key']]['title']; } $this->success('', [ 'list' => $list, 'remark' => get_route_remark(), 'configGroup' => $newConfigGroup ?? [], 'quickEntrance' => get_sys_config('config_quick_entrance'), ]); } /** * 编辑 * @param null $id */ public function edit($id = null) { $all = $this->model->select(); foreach ($all as $item) { if ($item['type'] == 'editor') { $this->request->filter('trim,htmlspecialchars'); break; } } if ($this->request->isPost()) { $this->modelValidate = false; $data = $this->request->post(); if (!$data) { $this->error(__('Parameter %s can not be empty', [''])); } $data = $this->excludeFields($data); $configValue = []; foreach ($all as $item) { if (array_key_exists($item->name, $data)) { $configValue[] = [ 'id' => $item->id, 'type' => $item->getData('type'), 'value' => $data[$item->name] ]; } } $result = false; Db::startTrans(); try { // 模型验证 if ($this->modelValidate) { $validate = str_replace("\\model\\", "\\validate\\", get_class($this->model)); if (class_exists($validate)) { $validate = new $validate; if ($this->modelSceneValidate) $validate->scene('edit'); $validate->check($data); } } $result = $this->model->saveAll($configValue); Cache::tag(ConfigModel::$cacheTag)->clear(); Db::commit(); } catch (ValidateException|Exception|PDOException $e) { Db::rollback(); $this->error($e->getMessage()); } if ($result !== false) { $this->success(__('The current page configuration item was updated successfully')); } else { $this->error(__('No rows updated')); } } } public function add() { if ($this->request->isPost()) { $data = $this->request->post(); if (!$data) { $this->error(__('Parameter %s can not be empty', [''])); } $data = $this->excludeFields($data); $result = false; Db::startTrans(); try { // 模型验证 if ($this->modelValidate) { $validate = str_replace("\\model\\", "\\validate\\", get_class($this->model)); if (class_exists($validate)) { $validate = new $validate; if ($this->modelSceneValidate) $validate->scene('add'); $validate->check($data); } } $result = $this->model->save($data); Cache::tag(ConfigModel::$cacheTag)->clear(); Db::commit(); } catch (ValidateException|Exception|PDOException $e) { Db::rollback(); $this->error($e->getMessage()); } if ($result !== false) { $this->success(__('Added successfully')); } else { $this->error(__('No rows were added')); } } $this->error(__('Parameter error')); } public function sendTestMail() { $data = $this->request->post(); $mail = new Email(); try { $mail->Host = $data['smtp_server']; $mail->SMTPAuth = true; $mail->Username = $data['smtp_user']; $mail->Password = $data['smtp_pass']; $mail->SMTPSecure = $data['smtp_verification'] == 'SSL' ? PHPMailer::ENCRYPTION_SMTPS : PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = $data['smtp_port']; $mail->setFrom($data['smtp_sender_mail'], $data['smtp_user']); $mail->isSMTP(); $mail->addAddress($data['testMail']); $mail->isHTML(); $mail->setSubject(__('This is a test email') . '-' . get_sys_config('site_name')); $mail->Body = __('Congratulations, receiving this email means that your email service has been configured correctly'); $mail->send(); } catch (PHPMailerException $e) { $this->error($mail->ErrorInfo); } $this->success(__('Test mail sent successfully~')); } }