You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.0 KiB
PHP
70 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Config;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use Yo;
|
|
use Login;
|
|
|
|
class ConfigController extends Controller
|
|
{
|
|
public function config()
|
|
{
|
|
$configs = $this->get_config_list([1, 2, 3, 4]);
|
|
$list = [];
|
|
foreach ($configs as $config) {
|
|
$list[$config['mark']] = $config['value'];
|
|
}
|
|
return Yo::echo($list);
|
|
}
|
|
|
|
public function update()
|
|
{
|
|
Login::admin(9);
|
|
$mark = request()->get('mark');
|
|
$value = request()->get('value');
|
|
$config = Config::where('mark', $mark)->first();
|
|
if (!$config) Yo::error_echo(100008);
|
|
switch ($mark) {
|
|
case 'logo':
|
|
case 'favicon':
|
|
case 'login_image':
|
|
$base64 = $value;
|
|
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64, $result)) {
|
|
$type = ['png', 'jpeg', 'jpg', 'gif'];
|
|
if (!in_array($result[2], $type)) Yo::error_echo(100019);
|
|
$disk = Storage::disk('public');
|
|
$path = "/assets/$mark.$result[2]";
|
|
$put = $disk->put($path, base64_decode(str_replace($result[1], '', $base64)));
|
|
if (!$put) Yo::error_echo(100020);
|
|
$save = "/storage/assets/$mark.$result[2]?t=" . time();
|
|
} else {
|
|
Yo::error_echo(100020);
|
|
}
|
|
break;
|
|
default:
|
|
$save = $value;
|
|
}
|
|
$config->value = $save;
|
|
$config->save();
|
|
return Yo::update_echo($config->id);
|
|
}
|
|
|
|
public function assets_list()
|
|
{
|
|
Login::admin(9);
|
|
$configs = $this->get_config_list([1, 2, 3, 4]);
|
|
$list = [];
|
|
foreach ($configs as $config) {
|
|
$list[$config['mark']] = $config['value'];
|
|
}
|
|
return Yo::echo($list);
|
|
}
|
|
|
|
public function get_config_list($arr)
|
|
{
|
|
return Config::whereIn('id', $arr)->get();
|
|
}
|
|
}
|