OtCustomizerController.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. namespace Opentalent\OtTemplating\Controller;
  3. use Opentalent\OtCore\Controller\SelectedSiteController;
  4. use Opentalent\OtCore\Cache\OtCacheManager;
  5. use Opentalent\OtTemplating\Templating\TemplateRepository;
  6. use PDO;
  7. use TYPO3\CMS\Core\Database\ConnectionPool;
  8. use TYPO3\CMS\Core\Utility\GeneralUtility;
  9. use TYPO3\CMS\Extbase\Object\ObjectManager;
  10. /**
  11. * Controller for the OtCustomizer backend submodule
  12. *
  13. * @author olivier.massot
  14. */
  15. class OtCustomizerController extends SelectedSiteController {
  16. /**
  17. * @var \TYPO3\CMS\Core\Database\ConnectionPool
  18. */
  19. private $connectionPool;
  20. public function injectConnectionPool(\TYPO3\CMS\Core\Database\ConnectionPool $connectionPool)
  21. {
  22. $this->connectionPool = $connectionPool;
  23. }
  24. /**
  25. * Index action (default action)
  26. * Displays the customizer page on the backend
  27. */
  28. public function indexAction() {
  29. $this->view->assign('rootPage', $this->currentRootUid);
  30. $this->view->assign('templates', TemplateRepository::templates);
  31. $templateRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(TemplateRepository::class);
  32. $this->view->assign('currentTemplate', $templateRepository->getTemplate($this->currentRootUid));
  33. $this->view->assign('preferences', $templateRepository->getTemplatePreferences($this->currentRootUid));
  34. }
  35. /**
  36. * A template has been selected, apply the change
  37. *
  38. */
  39. public function selectTemplateAction() {
  40. $templateKey = $this->request->getArgument('template_key');
  41. // applies the change in the database
  42. $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
  43. $queryBuilder->update('pages')
  44. ->where(
  45. $queryBuilder->expr()->eq(
  46. 'uid',
  47. $queryBuilder->createNamedParameter($this->currentRootUid, PDO::PARAM_INT)
  48. )
  49. )
  50. ->set('tx_opentalent_template', $templateKey)
  51. ->execute()
  52. ;
  53. // Clear the site's cache
  54. OtCacheManager::clearSiteCache($this->currentRootUid);
  55. $this->addFlashMessage($this->getLanguageService()->sL(
  56. 'LLL:EXT:ot_templating/Resources/Private/Language/locallang.xlf:theme_updated'
  57. ));
  58. $this->forward('index');
  59. }
  60. /**
  61. * Update the site's preferences
  62. */
  63. public function updatePreferencesAction() {
  64. $args = $this->request->getArguments();
  65. $prefs = TemplateRepository::defaultPreferences;
  66. if (isset($args['themeColor'])) {
  67. $prefs['themeColor'] = $args['themeColor'];
  68. }
  69. if (isset($args['displayCarousel'])) {
  70. $prefs['displayCarousel'] = $args['displayCarousel'] ? 1 : 0;
  71. }
  72. if (isset($args['displayBreadcrumb'])) {
  73. $prefs['displayBreadcrumb'] = $args['displayBreadcrumb'] ? 1 : 0;
  74. }
  75. // applies the change in the database
  76. $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
  77. $queryBuilder->update('pages')
  78. ->where(
  79. $queryBuilder->expr()->eq(
  80. 'uid',
  81. $queryBuilder->createNamedParameter($this->currentRootUid, PDO::PARAM_INT)
  82. )
  83. )
  84. ->set('tx_opentalent_template_preferences', json_encode($prefs))
  85. ->execute();
  86. // Clear the site's cache
  87. OtCacheManager::clearSiteCache($this->currentRootUid);
  88. $this->addFlashMessage($this->getLanguageService()->sL(
  89. 'LLL:EXT:ot_templating/Resources/Private/Language/locallang.xlf:settings_updated'
  90. ));
  91. $this->forward(
  92. 'index',
  93. 'OtCustomizer',
  94. 'OtTemplating'
  95. );
  96. }
  97. }