Load.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. /**
  3. * This file is part of the ForkBB <https://github.com/forkbb>.
  4. *
  5. * @copyright (c) Visman <mio.visman@yandex.ru, https://github.com/MioVisman>
  6. * @license The MIT License (MIT)
  7. */
  8. declare(strict_types=1);
  9. namespace ForkBB\Models\Config;
  10. use ForkBB\Models\Method;
  11. use ForkBB\Models\Config\Config;
  12. use PDO;
  13. use RuntimeException;
  14. class Load extends Method
  15. {
  16. /**
  17. * Загружает данные из БД для модели и кеша
  18. */
  19. public function load(): array
  20. {
  21. $config = [];
  22. $query = 'SELECT cf.conf_name, cf.conf_value
  23. FROM ::config AS cf';
  24. $stmt = $this->c->DB->query($query);
  25. while ($row = $stmt->fetch()) {
  26. switch ($row['conf_name'][0]) {
  27. case 'a':
  28. $value = \json_decode($row['conf_value'], true, 512, \JSON_THROW_ON_ERROR);
  29. break;
  30. case 'b':
  31. $value = '1' == $row['conf_value'] ? 1 : 0;
  32. break;
  33. case 'i':
  34. if (null !== $row['conf_value']) {
  35. $value = (int) $row['conf_value'];
  36. break;
  37. }
  38. default:
  39. $value = $row['conf_value'];
  40. break;
  41. }
  42. $config[$row['conf_name']] = $value;
  43. }
  44. return $config;
  45. }
  46. }