Просмотр файла app/settings.php

Размер файла: 6.28Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. use App\Models\User;
  6. use App\Repositories\SettingRepository;
  7. use App\Services\Setting;
  8. use DI\ContainerBuilder;
  9.  
  10. return static function (ContainerBuilder $containerBuilder)
  11. {
  12. // Global Settings Object
  13. $containerBuilder->addDefinitions([
  14. Setting::class => function () {
  15. $settings = (new SettingRepository())->getSettings();
  16.  
  17. return new Setting([
  18. 'app' => [
  19. 'name' => $settings['app.name'], // Название сайта
  20. 'url' => $settings['app.url'], // Адрес сайта
  21. ],
  22.  
  23. 'main' => [
  24. 'title' => $settings['main.title'], // Заголовок сайта
  25. 'allow_register' => $settings['main.allow_register'], // Разрешить регистрацию
  26. 'confirm_email' => $settings['main.confirm_email'], // Подтверждать email
  27. 'guest_name' => $settings['main.guest_name'], // Имя гостя
  28. 'delete_name' => $settings['main.delete_name'], // Имя удаленного пользователя
  29. ],
  30.  
  31. 'mailer' => [
  32. 'dsn' => $settings['mailer.dsn'], // Параметры smtp (smtp://localhost:1025)
  33. 'from_email' => $settings['mailer.from_email'], // Email отправителя
  34. 'from_name' => $settings['mailer.from_name'], // Имя отправителя
  35. ],
  36.  
  37. 'story' => [
  38. 'active' => $settings['story.active'], // Публиковать посты без модерации
  39. 'allow_posting' => $settings['story.allow_posting'], // Разрешать пользователям публиковать статьи
  40. 'per_page' => $settings['story.per_page'], // Количество статей на страницу
  41. 'title_min_length' => $settings['story.title_min_length'], // Минимальная длина заголовка
  42. 'title_max_length' => $settings['story.title_max_length'], // Максимальная длина заголовка
  43. 'text_min_length' => $settings['story.text_min_length'], // Минимальная длина статьи
  44. 'text_max_length' => $settings['story.text_max_length'], // Максимальная длина статьи
  45. 'short_words' => $settings['story.short_words'], // Количество слов в сокращенной статье
  46. 'tags_max' => $settings['story.tags_max'], // Максимальное количество тегов
  47. 'tags_min_length' => $settings['story.tags_min_length'], // Минимальное количество символов в теге
  48. 'tags_max_length' => $settings['story.tags_max_length'], // Максимальное количество символов в теге
  49. ],
  50.  
  51. 'comment' => [
  52. 'text_min_length' => $settings['comment.text_min_length'],
  53. 'text_max_length' => $settings['comment.text_max_length'],
  54. ],
  55.  
  56. 'guestbook' => [
  57. 'allow_guests' => $settings['guestbook.allow_guests'], // Разрешить гостям писать сообщения
  58. 'per_page' => $settings['guestbook.per_page'],
  59. 'text_min_length' => $settings['guestbook.text_min_length'],
  60. 'text_max_length' => $settings['guestbook.text_max_length'],
  61. 'name_min_length' => $settings['guestbook.name_min_length'],
  62. 'name_max_length' => $settings['guestbook.name_max_length'],
  63. ],
  64.  
  65. 'session' => [
  66. 'cookie_name' => 'motor_session',
  67. 'cookie_domain' => false,
  68. 'cookie_secure' => isset($_SERVER['HTTPS']),
  69. 'cookie_httponly' => true,
  70. 'cookie_samesite' => 'Lax',
  71. ],
  72.  
  73. 'file' => [
  74. 'size_max' => $settings['file.size_max'], // Максимальный вес
  75. 'total_max' => $settings['file.total_max'], // Максимальное количество загружаемых файлов
  76. 'extensions' => explode(',', $settings['file.extensions']),
  77. ],
  78.  
  79. 'image' => [
  80. 'resize' => $settings['image.resize'], // Обрезать изображения px
  81. 'weight_max' => $settings['image.weight_max'], // Максимальный размер px
  82. 'weight_min' => $settings['image.weight_min'], // Минимальный размер px
  83. ],
  84.  
  85. 'roles' => [
  86. User::BOSS => 'Босс',
  87. User::ADMIN => 'Админ',
  88. User::MODER => 'Модератор',
  89. User::EDITOR => 'Редактор',
  90. User::USER => 'Пользователь',
  91. User::PENDED => 'Ожидающий',
  92. User::BANNED => 'Забаненный',
  93. ],
  94.  
  95. 'user' => [
  96. 'per_page' => $settings['user.per_page'],
  97. ],
  98.  
  99. 'captcha' => [
  100. 'length' => $settings['captcha.length'], // Количество символов
  101. 'symbols' => (string) $settings['captcha.symbols'], // Список допустимых символов
  102. ],
  103.  
  104. 'displayErrorDetails' => true, // Should be set to false in production
  105. 'logError' => true,
  106. 'logErrorDetails' => false,
  107. 'logger' => [
  108. 'name' => 'motor-app',
  109. 'path' => isset($_ENV['docker']) ? 'php://stdout' : __DIR__ . '/../storage/logs/app.log',
  110. //'level' => Logger::DEBUG,
  111. ],
  112. ]);
  113. }
  114. ]);
  115. };