TemplateRepository.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace Opentalent\OtTemplating\Templating;
  3. use Opentalent\OtCore\Page\OtPageRepository;
  4. use TYPO3\CMS\Core\Database\ConnectionPool;
  5. use TYPO3\CMS\Core\Utility\GeneralUtility;
  6. /**
  7. * Class TemplateRepository
  8. * Provides methods to retrieve data about the current site's template
  9. *
  10. * @package Opentalent\OtCore\Templating
  11. */
  12. class TemplateRepository
  13. {
  14. /**
  15. * @var \TYPO3\CMS\Core\Database\ConnectionPool
  16. */
  17. private $connectionPool;
  18. public function injectConnectionPool(\TYPO3\CMS\Core\Database\ConnectionPool $connectionPool)
  19. {
  20. $this->connectionPool = $connectionPool;
  21. }
  22. CONST templates = [
  23. 'Classic' => [
  24. 'name' => 'Classique',
  25. 'description' => "Le thème classique, simple et complet. C'est le thème par défaut.",
  26. 'picture' => 'EXT:ot_templating/Resources/Public/media/theme_classic.png'
  27. ],
  28. 'Modern' => [
  29. 'name' => 'Moderne',
  30. 'description' => '[Nouveauté 2020] Un thème moderne et intuitif.',
  31. 'picture' => 'EXT:ot_templating/Resources/Public/media/theme_modern.png'
  32. ]
  33. ];
  34. CONST defaultTemplate = 'Classic';
  35. CONST defaultPreferences = [
  36. 'themeColor' => 'lightblue',
  37. 'displayCarousel' => '1',
  38. 'displayBreadcrumb' => '1',
  39. ];
  40. /**
  41. * Returns the site template's name
  42. *
  43. * @param int $rootUid
  44. * @return string
  45. */
  46. public function getTemplate(int $rootUid) {
  47. if (!($rootUid >= 0)) {
  48. return self::defaultTemplate;
  49. }
  50. $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
  51. $templateName = $queryBuilder
  52. ->select('tx_opentalent_template')
  53. ->from('pages')
  54. ->where($queryBuilder->expr()->eq('uid', $rootUid))
  55. ->execute()
  56. ->fetchColumn(0);
  57. if ($templateName==='') {
  58. return self::defaultTemplate;
  59. }
  60. return $templateName;
  61. }
  62. /**
  63. * Returns the current site template's name
  64. * @param int $rootUid
  65. * @return array
  66. */
  67. public function getTemplatePreferences(int $rootUid) {
  68. $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
  69. $templatePreferences = $queryBuilder
  70. ->select('tx_opentalent_template_preferences')
  71. ->from('pages')
  72. ->where($queryBuilder->expr()->eq('uid', $rootUid))
  73. ->execute()
  74. ->fetchColumn(0);
  75. if ($templatePreferences !== '') {
  76. $templatePreferences = json_decode($templatePreferences, true);
  77. } else {
  78. $templatePreferences = [];
  79. }
  80. return array_merge(self::defaultPreferences, $templatePreferences);;
  81. }
  82. }