123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- <?php
- namespace app\admin\controller\routine;
- use app\common\controller\Backend;
- use app\admin\model\Config as ConfigModel;
- use think\db\exception\PDOException;
- use think\exception\ValidateException;
- use think\facade\Cache;
- use think\facade\Db;
- use Exception;
- use app\common\library\Email;
- use PHPMailer\PHPMailer\PHPMailer;
- use PHPMailer\PHPMailer\Exception as PHPMailerException;
- class Config extends Backend
- {
- protected $model = null;
- protected $noNeedLogin = ['index'];
- public function initialize()
- {
- parent::initialize();
- $this->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~'));
- }
- }
|