72 lines
2.2 KiB
PHP
Executable File
72 lines
2.2 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Evomedien\Vitec\Domain\Repository;
|
|
|
|
use TYPO3\CMS\Extbase\Persistence\QueryInterface;
|
|
use TYPO3\CMS\Extbase\Persistence\QueryResultInterface;
|
|
use TYPO3\CMS\Extbase\Persistence\Repository;
|
|
|
|
/**
|
|
* The repository for Event
|
|
*/
|
|
class EventRepository extends Repository
|
|
{
|
|
protected $defaultOrderings = [
|
|
'eventstart' => QueryInterface::ORDER_ASCENDING,
|
|
];
|
|
|
|
/**
|
|
* All upcoming (or currently running) events, soonest first.
|
|
* "Upcoming" = event end (or start, when no end is set) is today or later.
|
|
*/
|
|
public function findUpcoming(): QueryResultInterface
|
|
{
|
|
$todayMidnight = strtotime('today');
|
|
|
|
$query = $this->createQuery();
|
|
$query->getQuerySettings()->setRespectStoragePage(false);
|
|
$query->matching(
|
|
$query->logicalAnd(
|
|
$query->equals('hideonwebsite', 0),
|
|
$query->logicalOr(
|
|
$query->greaterThanOrEqual('eventend', $todayMidnight),
|
|
$query->logicalAnd(
|
|
$query->equals('eventend', 0),
|
|
$query->greaterThanOrEqual('eventstart', $todayMidnight)
|
|
)
|
|
)
|
|
)
|
|
);
|
|
return $query->execute();
|
|
}
|
|
|
|
/**
|
|
* Past events, most recent first.
|
|
*/
|
|
public function findPast(): QueryResultInterface
|
|
{
|
|
$todayMidnight = strtotime('today');
|
|
|
|
$query = $this->createQuery();
|
|
$query->getQuerySettings()->setRespectStoragePage(false);
|
|
$query->matching(
|
|
$query->logicalAnd(
|
|
$query->equals('hideonwebsite', 0),
|
|
$query->logicalOr(
|
|
$query->logicalAnd(
|
|
$query->greaterThan('eventend', 0),
|
|
$query->lessThan('eventend', $todayMidnight)
|
|
),
|
|
$query->logicalAnd(
|
|
$query->equals('eventend', 0),
|
|
$query->greaterThan('eventstart', 0),
|
|
$query->lessThan('eventstart', $todayMidnight)
|
|
)
|
|
)
|
|
)
|
|
);
|
|
$query->setOrderings(['eventstart' => QueryInterface::ORDER_DESCENDING]);
|
|
return $query->execute();
|
|
}
|
|
}
|