| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- <?php
- // +----------------------------------------------------------------------
- // |
- // +----------------------------------------------------------------------
- // |
- // +----------------------------------------------------------------------
- // |
- // +----------------------------------------------------------------------
- // |
- // +----------------------------------------------------------------------
- // +----------------------------------------------------------------------
- // | 后台配置模型
- // +----------------------------------------------------------------------
- namespace app\common\model;
- use think\Model;
- class Config extends Model
- {
- // 追加属性
- protected $append = [
- 'extend_html',
- ];
- // 自动写入时间戳
- protected $autoWriteTimestamp = true;
- public function getExtendHtmlAttr($value, $data)
- {
- $result = preg_replace_callback("/\{([a-zA-Z]+)\}/", function ($matches) use ($data) {
- if (isset($data[$matches[1]])) {
- return $data[$matches[1]];
- }
- }, $data['extend']);
- return $result;
- }
- /**
- * 刷新配置文件
- */
- public static function refreshFile()
- {
- //如果没有配置权限无法进行修改
- if (!\app\admin\library\Auth::instance()->check('general/config/edit')) {
- return false;
- }
- $configs = self::where('status', 1)->column('*', 'name');
- $newConfigs = [];
- foreach ($configs as $key => $value) {
- if ($value['options'] != '') {
- $value['options'] = parse_attr($value['options']);
- }
- switch ($value['type']) {
- case 'array':
- $newConfigs[$key] = (array) json_decode($value['value'], true);
- break;
- case 'select':
- case 'radio':
- $newConfigs[$key] = $value['value'];
- if (isset($value['options'][$value['value']])) {
- $newConfigs[$key . '_text'] = $value['options'][$value['value']];
- } else {
- $newConfigs[$key . '_text'] = $value['value'];
- }
- break;
- case 'selects':
- case 'checkbox':
- if (empty($value['value'])) {
- $newConfigs[$key] = [];
- } else {
- $valueArr = explode(',', $value['value']);
- foreach ($valueArr as $v) {
- if (isset($value['options'][$v])) {
- $newConfigs[$key][$v] = $value['options'][$v];
- } elseif ($v) {
- $newConfigs[$key][$v] = $v;
- }
- }
- }
- break;
- case 'files':
- case 'images':
- $newConfigs[$key] = empty($value['value']) ? [] : explode(',', $value['value']);
- break;
- case 'markdown':
- $parser = new \util\Parser;
- $newConfigs[$key] = $value['value'];
- $newConfigs[$key . '_text'] = $parser->makeHtml($value['value']);
- break;
- default:
- $newConfigs[$key] = $value['value'];
- break;
- }
- }
- file_put_contents(
- app()->getConfigPath() . 'site.php',
- '<?php' . "\n\nreturn " . var_export_short($newConfigs) . ";\n"
- );
- return true;
- }
- /**
- * 本地上传配置信息
- * @return array
- */
- public static function upload()
- {
- $uploadcfg = config('upload');
- $uploadurl = app()->http->getName() ? $uploadcfg['uploadurl'] : ($uploadcfg['uploadurl'] === 'ajax/upload' ? 'index/' . $uploadcfg['uploadurl'] : $uploadcfg['uploadurl']);
- if (!preg_match("/^((?:[a-z]+:)?\/\/)(.*)/i", $uploadurl) && substr($uploadurl, 0, 1) !== '/') {
- $uploadurl = (string) url($uploadurl, [], false);
- }
- $uploadcfg['fullmode'] = isset($uploadcfg['fullmode']) && $uploadcfg['fullmode'];
- $uploadcfg['thumbstyle'] = $uploadcfg['thumbstyle'] ?? '';
- $upload = [
- 'cdnurl' => $uploadcfg['cdnurl'],
- 'uploadurl' => $uploadurl,
- 'bucket' => 'local',
- 'maxsize' => $uploadcfg['maxsize'],
- 'mimetype' => $uploadcfg['mimetype'],
- 'chunking' => $uploadcfg['chunking'],
- 'chunksize' => $uploadcfg['chunksize'],
- 'savekey' => $uploadcfg['savekey'],
- 'multipart' => [],
- 'multiple' => $uploadcfg['multiple'],
- 'timeout' => $uploadcfg['timeout'],
- 'fullmode' => $uploadcfg['fullmode'],
- 'thumbstyle' => $uploadcfg['thumbstyle'],
- 'storage' => 'local',
- ];
- return $upload;
- }
- }
|