ActivepageRepository.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. namespace Meramo\Mrmbepages\Domain\Repository;
  3. use Meramo\Mrmbepages\Domain\Model\Activepage;
  4. use TYPO3\CMS\Core\Database\ConnectionPool;
  5. use TYPO3\CMS\Core\Utility\GeneralUtility;
  6. use TYPO3\CMS\Core\Database\Query\QueryBuilder;
  7. use TYPO3\CMS\Core\Utility\DebugUtility;
  8. use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder;
  9. use TYPO3\CMS\Extbase\Object\ObjectManager;
  10. use TYPO3\CMS\Extbase\Persistence\Repository;
  11. use TYPO3\CMS\Extbase\Utility\DebuggerUtility;
  12. use TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper;
  13. use \TYPO3\CMS\Extbase\Persistence\Generic\Storage\Typo3DbQueryParser;
  14. use TYPO3\CMS\Extbase\Persistence\QueryInterface;
  15. /**
  16. * Repository class Page
  17. */
  18. class ActivepageRepository extends Repository
  19. {
  20. /**
  21. * Datamapper
  22. *
  23. *
  24. * @param \TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper $dataMapper
  25. *
  26. */
  27. protected $dataMapper;
  28. public function injectDataMapper(\TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper $dataMapper)
  29. {
  30. $this->dataMapper = $dataMapper;
  31. }
  32. /**
  33. * Objectmanager
  34. *
  35. * @var \TYPO3\CMS\Extbase\Object\ObjectManagerInterface
  36. */
  37. protected $objectManager;
  38. public function injectObjectManager(\TYPO3\CMS\Extbase\Object\ObjectManager $objectManager)
  39. {
  40. $this->objectManager = $objectManager;
  41. }
  42. /**
  43. * Returns selected pages from the pages table
  44. *
  45. * @return QueryResult|array
  46. */
  47. public function findActivePages()
  48. {
  49. $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages');
  50. $queryBuilder->getRestrictions()
  51. ->removeByType(HiddenRestriction::class);
  52. $result = $queryBuilder
  53. ->select('uid', 'starttime', 'endtime', 'title', 'roof', 'slug')
  54. ->from('pages')
  55. ->where(
  56. $queryBuilder->expr()->gt('starttime', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)),
  57. $queryBuilder->expr()->gt('endtime', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)),
  58. $queryBuilder->expr()->eq('red_status', $queryBuilder->createNamedParameter(12, \PDO::PARAM_INT)),
  59. $queryBuilder->expr()->eq('deleted', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)),
  60. $queryBuilder->expr()->eq('hidden', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT))
  61. )
  62. ->orderBy('endtime', 'ASC')
  63. ->groupBy('slug')
  64. ->execute();
  65. $activepageObjects = $this->dataMapper->map(Activepage::class, $result->fetchAll());
  66. return $activepageObjects;
  67. }
  68. public function generateSelectListOptions()
  69. {
  70. $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages');
  71. $result = $queryBuilder
  72. ->select('slug')
  73. ->from('pages')
  74. ->where(
  75. $queryBuilder->expr()->gt('starttime', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)),
  76. $queryBuilder->expr()->gt('endtime', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)),
  77. $queryBuilder->expr()->eq('red_status', $queryBuilder->createNamedParameter(12, \PDO::PARAM_INT))
  78. )
  79. ->orderBy('endtime', 'ASC')
  80. ->execute();
  81. $selectOptions = [];
  82. while($row = $result->fetch()) {
  83. $slug = $this->createOptionFromSlug($row['slug']);
  84. if(in_array($slug, $selectOptions)) {
  85. continue;
  86. } else {
  87. $selectOptions[] = $slug;
  88. $arrayValues = array_values($selectOptions);
  89. }
  90. }
  91. return $arrayValues;
  92. }
  93. protected function createOptionFromSlug($value)
  94. {
  95. if(substr($value, 0, 1) === '/') {
  96. $value = ltrim($value, '/');
  97. if(substr($value, 0, 1) === '_') {
  98. $value = ltrim($value, '_');
  99. }
  100. $data = explode('/', $value);
  101. }
  102. return $data[0];
  103. }
  104. }