123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- <?php
- namespace app\common\model;
- use think\Model;
- /**
- * 配置模型
- */
- class Config extends Model
- {
- // 表名,不含前缀
- protected $name = 'config';
- // 自动写入时间戳字段
- protected $autoWriteTimestamp = false;
- // 定义时间戳字段名
- protected $createTime = false;
- protected $updateTime = false;
- // 追加属性
- protected $append = [
- 'extend_html'
- ];
- protected $type = [
- 'setting' => 'json',
- ];
- /**
- * 读取配置类型
- * @return array
- */
- public static function getTypeList()
- {
- $typeList = [
- 'string' => __('String'),
- 'password' => __('Password'),
- 'text' => __('Text'),
- 'editor' => __('Editor'),
- 'number' => __('Number'),
- 'date' => __('Date'),
- 'time' => __('Time'),
- 'datetime' => __('Datetime'),
- 'datetimerange' => __('Datetimerange'),
- 'select' => __('Select'),
- 'selects' => __('Selects'),
- 'image' => __('Image'),
- 'images' => __('Images'),
- 'file' => __('File'),
- 'files' => __('Files'),
- 'switch' => __('Switch'),
- 'checkbox' => __('Checkbox'),
- 'radio' => __('Radio'),
- 'city' => __('City'),
- 'selectpage' => __('Selectpage'),
- 'selectpages' => __('Selectpages'),
- 'array' => __('Array'),
- 'custom' => __('Custom'),
- ];
- return $typeList;
- }
- public static function getRegexList()
- {
- $regexList = [
- 'required' => '必选',
- 'digits' => '数字',
- 'letters' => '字母',
- 'date' => '日期',
- 'time' => '时间',
- 'email' => '邮箱',
- 'url' => '网址',
- 'qq' => 'QQ号',
- 'IDcard' => '身份证',
- 'tel' => '座机电话',
- 'mobile' => '手机号',
- 'zipcode' => '邮编',
- 'chinese' => '中文',
- 'username' => '用户名',
- 'password' => '密码'
- ];
- return $regexList;
- }
- 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;
- }
- /**
- * 读取分类分组列表
- * @return array
- */
- public static function getGroupList()
- {
- $groupList = config('site.configgroup');
- foreach ($groupList as $k => &$v) {
- $v = __($v);
- }
- return $groupList;
- }
- public static function getArrayData($data)
- {
- if (!isset($data['value'])) {
- $result = [];
- foreach ($data as $index => $datum) {
- $result['field'][$index] = $datum['key'];
- $result['value'][$index] = $datum['value'];
- }
- $data = $result;
- }
- $fieldarr = $valuearr = [];
- $field = $data['field'] ?? ($data['key'] ?? []);
- $value = $data['value'] ?? [];
- foreach ($field as $m => $n) {
- if ($n != '') {
- $fieldarr[] = $field[$m];
- $valuearr[] = $value[$m];
- }
- }
- return $fieldarr ? array_combine($fieldarr, $valuearr) : [];
- }
- /**
- * 将字符串解析成键值数组
- * @param string $text
- * @return array
- */
- public static function decode($text, $split = "\r\n")
- {
- $content = explode($split, $text);
- $arr = [];
- foreach ($content as $k => $v) {
- if (stripos($v, "|") !== false) {
- $item = explode('|', $v);
- $arr[$item[0]] = $item[1];
- }
- }
- return $arr;
- }
- /**
- * 将键值数组转换为字符串
- * @param array $array
- * @return string
- */
- public static function encode($array, $split = "\r\n")
- {
- $content = '';
- if ($array && is_array($array)) {
- $arr = [];
- foreach ($array as $k => $v) {
- $arr[] = "{$k}|{$v}";
- }
- $content = implode($split, $arr);
- }
- return $content;
- }
- /**
- * 本地上传配置信息
- * @return array
- */
- public static function upload()
- {
- $uploadcfg = config('upload');
- $uploadurl = request()->module() ? $uploadcfg['uploadurl'] : ($uploadcfg['uploadurl'] === 'ajax/upload' ? 'index/' . $uploadcfg['uploadurl'] : $uploadcfg['uploadurl']);
- if (!preg_match("/^((?:[a-z]+:)?\/\/)(.*)/i", $uploadurl) && substr($uploadurl, 0, 1) !== '/') {
- $uploadurl = 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'],
- 'fullmode' => $uploadcfg['fullmode'],
- 'thumbstyle' => $uploadcfg['thumbstyle'],
- 'storage' => 'local'
- ];
- return $upload;
- }
- /**
- * 刷新配置文件
- */
- public static function refreshFile()
- {
- //如果没有配置权限无法进行修改
- if (!\app\admin\library\Auth::instance()->check('general/config/edit')) {
- return false;
- }
- $config = [];
- $configList = self::all();
- foreach ($configList as $k => $v) {
- $value = $v->toArray();
- if (in_array($value['type'], ['selects', 'checkbox', 'images', 'files'])) {
- $value['value'] = explode(',', $value['value']);
- }
- if ($value['type'] == 'array') {
- $value['value'] = (array)json_decode($value['value'], true);
- }
- $config[$value['name']] = $value['value'];
- }
- file_put_contents(
- CONF_PATH . 'extra' . DS . 'site.php',
- '<?php' . "\n\nreturn " . var_export_short($config) . ";\n"
- );
- return true;
- }
- }
|