Размер файла: 2.22Kb
- <?php
-
- declare(strict_types=1);
-
- namespace App\Models;
-
- use Exception;
- use Illuminate\Database\Eloquent\Model;
- use Illuminate\Database\Eloquent\Factories\HasFactory;
- use Illuminate\Support\Facades\Cache;
-
- /**
- * Class Setting
- *
- * @property string name
- * @property string value
- */
- class Setting extends Model
- {
- use HasFactory;
-
- /**
- * Indicates if the model should be timestamped.
- *
- * @var bool
- */
- public $timestamps = false;
-
- /**
- * The attributes that aren't mass assignable.
- *
- * @var array
- */
- protected $guarded = [];
-
- /**
- * Custom settings
- *
- * @var array
- */
- private static array $settings = [];
-
- /**
- * Возвращает список допустимых страниц настроек
- *
- * @return array
- */
- public static function getActions(): array
- {
- return [
- 'mains',
- 'mails',
- 'info',
- 'guestbook',
- 'news',
- 'comments',
- 'forums',
- 'photos',
- 'messages',
- 'contacts',
- 'loads',
- 'blogs',
- 'pages',
- 'others',
- 'protects',
- 'prices',
- 'adverts',
- 'files',
- 'stickers',
- 'offers',
- 'feeds',
- 'invitations',
- ];
- }
-
- /**
- * Возвращает настройки сайта по ключу
- *
- * @return array данные
- */
- public static function getSettings(): array
- {
- try {
- $settings = Cache::rememberForever('settings', static function () {
- $settings = Setting::query()->pluck('value', 'name')->all();
- return array_map(static function ($value) {
- if (is_numeric($value)) {
- return ! str_contains($value, '.') ? (int) $value : (float) $value;
- }
-
- if ($value === '') {
- return null;
- }
-
- return $value;
- }, $settings);
- });
- } catch (Exception) {
- $settings = [];
- }
-
- return $settings;
- }
- }