Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
|
||||
namespace Xentral\Widgets\SuperSearch\Result;
|
||||
|
||||
use DateTimeInterface;
|
||||
use JsonSerializable as JsonSerializableAlias;
|
||||
|
||||
final class ResultCollection implements JsonSerializableAlias
|
||||
{
|
||||
/** @var ResultGroup[]|array $groups */
|
||||
private $groups;
|
||||
|
||||
/** @var DateTimeInterface|null $lastIndexUpdateTime */
|
||||
private $lastIndexUpdateTime;
|
||||
|
||||
/**
|
||||
* @param ResultGroup[]|array $resultGroups
|
||||
* @param DateTimeInterface|null $lastIndexUpdate
|
||||
*/
|
||||
public function __construct(array $resultGroups = [], DateTimeInterface $lastIndexUpdate = null)
|
||||
{
|
||||
foreach ($resultGroups as $resultGroup) {
|
||||
$this->addGroup($resultGroup);
|
||||
}
|
||||
$this->lastIndexUpdateTime = $lastIndexUpdate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function isEmpty()
|
||||
{
|
||||
return count($this->groups) === 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ResultGroup $group
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function addGroup(ResultGroup $group)
|
||||
{
|
||||
$this->groups[] = $group;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $groupKey
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasGroup($groupKey)
|
||||
{
|
||||
foreach ($this->groups as $group) {
|
||||
if ($groupKey === $group->getKey()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $groupKey
|
||||
*
|
||||
* @return ResultGroup|null
|
||||
*/
|
||||
public function getGroup($groupKey)
|
||||
{
|
||||
foreach ($this->groups as $group) {
|
||||
if ($groupKey === $group->getKey()) {
|
||||
return $group;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return DateTimeInterface|null
|
||||
*/
|
||||
public function getLastIndexUpdateTime()
|
||||
{
|
||||
return $this->lastIndexUpdateTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function jsonSerialize()
|
||||
{
|
||||
$results = [];
|
||||
$itemCount = 0;
|
||||
foreach ($this->groups as $group) {
|
||||
$itemCount += $group->countItems();
|
||||
$index = $group->getKey();
|
||||
$results[$index] = $group;
|
||||
}
|
||||
|
||||
return [
|
||||
'count' => $itemCount,
|
||||
'results' => $results,
|
||||
'last_index_update_rfc2822' =>
|
||||
$this->lastIndexUpdateTime !== null ? $this->lastIndexUpdateTime->format(DATE_RFC2822) : null,
|
||||
'last_index_update_formatted' =>
|
||||
$this->lastIndexUpdateTime !== null ? $this->lastIndexUpdateTime->format('d.m.Y H:i') . ' Uhr' : null,
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user