Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
<?php
|
||||
|
||||
namespace Xentral\Widgets\SuperSearch\Result;
|
||||
|
||||
use JsonSerializable;
|
||||
use Xentral\Widgets\SuperSearch\Exception\InvalidArgumentException;
|
||||
|
||||
final class ResultItem implements JsonSerializable
|
||||
{
|
||||
/** @var int|string $identifier */
|
||||
private $identifier;
|
||||
|
||||
/** @var string $title */
|
||||
private $title;
|
||||
|
||||
/** @var string $link */
|
||||
private $link;
|
||||
|
||||
/** @var string|null $subTitle */
|
||||
private $subTitle;
|
||||
|
||||
/** @var array|string[] $additionalInfos */
|
||||
private $additionalInfos = [];
|
||||
|
||||
/**
|
||||
* @param int|string $identifier Database-ID or unique keyword
|
||||
* @param string $title
|
||||
* @param string $link
|
||||
* @param string|null $subTitle
|
||||
* @param array|null $additionalInfos
|
||||
*/
|
||||
public function __construct($identifier, $title, $link, $subTitle = null, array $additionalInfos = null)
|
||||
{
|
||||
if (empty($identifier)) {
|
||||
throw new InvalidArgumentException('Parameter "id" is empty.');
|
||||
}
|
||||
if (empty($title)) {
|
||||
throw new InvalidArgumentException('Parameter "title" is empty.');
|
||||
}
|
||||
if (empty($link)) {
|
||||
throw new InvalidArgumentException('Parameter "link" is empty.');
|
||||
}
|
||||
|
||||
$this->identifier = $identifier;
|
||||
$this->title = (string)$title;
|
||||
$this->link = (string)$link;
|
||||
|
||||
$subTitle = trim($subTitle);
|
||||
if ($subTitle !== '') {
|
||||
$this->subTitle = $subTitle;
|
||||
}
|
||||
|
||||
$additionalInfos = (array)$additionalInfos;
|
||||
foreach ($additionalInfos as $additionalInfo) {
|
||||
$additionalInfo = trim($additionalInfo);
|
||||
if ($additionalInfo !== '') {
|
||||
$this->additionalInfos[] = $additionalInfo;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $state
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public static function fromDbState(array $state)
|
||||
{
|
||||
$additionalInfos = explode(' ## ' , $state['additional_infos']);
|
||||
|
||||
return new self($state['index_id'], $state['title'], $state['link'], $state['subtitle'], $additionalInfos);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getIdentifier()
|
||||
{
|
||||
return $this->identifier;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getTitle()
|
||||
{
|
||||
return $this->title;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getLink()
|
||||
{
|
||||
return $this->link;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
public function getSubTitle()
|
||||
{
|
||||
return $this->subTitle;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getAdditionalInfos()
|
||||
{
|
||||
return $this->additionalInfos;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function jsonSerialize()
|
||||
{
|
||||
return [
|
||||
'type' => 'default',
|
||||
'identifier' => $this->identifier,
|
||||
'title' => $this->title,
|
||||
'link' => $this->link,
|
||||
'subtitle' => $this->subTitle,
|
||||
'additionalInfos' => !empty($this->additionalInfos) ? $this->additionalInfos : null,
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user