Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,172 @@
|
||||
<?php
|
||||
|
||||
namespace Xentral\Modules\SuperSearch\SearchIndex\Data;
|
||||
|
||||
use Xentral\Modules\SuperSearch\Exception\InvalidArgumentException;
|
||||
|
||||
final class IndexData
|
||||
{
|
||||
/** @var int $projectId */
|
||||
private $projectId;
|
||||
|
||||
/** @var string $title */
|
||||
private $title;
|
||||
|
||||
/** @var string|null $subTitle */
|
||||
private $subTitle;
|
||||
|
||||
/** @var array|string[] $additionalInfos */
|
||||
private $additionalInfos;
|
||||
|
||||
/** @var string $link */
|
||||
private $link;
|
||||
|
||||
/** @var array $words */
|
||||
private $words;
|
||||
|
||||
/**
|
||||
* @param string $title
|
||||
* @param string $link
|
||||
* @param int $projectId
|
||||
* @param array $words
|
||||
*
|
||||
* @throws InvalidArgumentException
|
||||
*/
|
||||
public function __construct($title, $link, $projectId = 0, array $words = [])
|
||||
{
|
||||
if (empty($title)) {
|
||||
$title = 'empty';
|
||||
}
|
||||
if (empty($link)) {
|
||||
throw new InvalidArgumentException('Invalid argument value. $link parameter can not be empty.');
|
||||
}
|
||||
if (!is_int($projectId)) {
|
||||
throw new InvalidArgumentException('Invalid argument type. Parameter $projectId must be type integer.');
|
||||
}
|
||||
|
||||
$this->projectId = (int)$projectId;
|
||||
$this->title = (string)$title;
|
||||
$this->link = (string)$link;
|
||||
$this->addSearchWords($words);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $state
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public static function fromDbState(array $state)
|
||||
{
|
||||
return new self(
|
||||
(string)$state['title'],
|
||||
(string)$state['link'],
|
||||
(int)$state['project_id'],
|
||||
(array)$state['search_words']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $subTitle
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setSubTitle($subTitle)
|
||||
{
|
||||
$subTitle = trim($subTitle);
|
||||
if ($subTitle === '') {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->subTitle = (string)$subTitle;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $additionalInfo
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function addAdditionalInfo($additionalInfo)
|
||||
{
|
||||
$additionalInfo = trim($additionalInfo);
|
||||
if ($additionalInfo === '') {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->additionalInfos[] = (string)$additionalInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array|string[] $words
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function addSearchWords(array $words)
|
||||
{
|
||||
foreach ($words as $word) {
|
||||
$this->addSearchWord($word);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $word
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function addSearchWord($word)
|
||||
{
|
||||
$word = trim($word);
|
||||
if ($word === '') {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->words[] = $word;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getTitle()
|
||||
{
|
||||
return $this->title;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
public function getSubTitle()
|
||||
{
|
||||
return $this->subTitle;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array|string[]
|
||||
*/
|
||||
public function getAdditionalInfos()
|
||||
{
|
||||
return $this->additionalInfos;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getLink()
|
||||
{
|
||||
return $this->link;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getProjectId()
|
||||
{
|
||||
return $this->projectId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getWords()
|
||||
{
|
||||
return $this->words;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user