['word1', 'word2', …], * Synonym2 => ['word3', 'word4', …], * … */ protected $synonyms = []; /** * @var bool */ protected $considerDate = 0; public static function createFromRequestValues( array $submittedValues, array $settings ): self { $instance = new self(); $instance->setSearchword($submittedValues['searchword'] ?? ''); $instance->setSynonyms($settings['synonyms'] ?? []); $instance->setRegion($submittedValues['region'] ?? ''); if ($submittedValues['highlight'] ?? false) { $instance->setHighlight($settings['highlight'] ?? false); } if (isset($submittedValues['start']) && $submittedValues['start'] !== '') { $instance->setStart(strtotime($submittedValues['start'] . ' 00:00')); } if (isset($submittedValues['end']) && $submittedValues['end'] !== '') { $instance->setEnd(strtotime($submittedValues['end'] . ' 23:59')); } if (isset($submittedValues['considerDate']) && $submittedValues['considerDate'] !== '') { $instance->setConsiderDate(strtotime($submittedValues['considerDate'])); } if (is_array($submittedValues['userCategories'])) { $instance->userCategories = array_map('intval', $submittedValues['userCategories']); } $instance->setSortBy($settings['sortByDate'] ?? ''); $instance->setSortOrder($settings['sortOrder'] ?? ''); if (!empty($settings['limit'])) { $instance->setLimit($settings['limit']); } return $instance; } /** * @return string */ public function getSortBy(): string { return $this->sortBy; } /** * @param string $sortBy */ public function setSortBy(string $sortBy) { $this->sortBy = $sortBy; } /** * @return string */ public function getSortOrder(): string { return $this->sortOrder; } /** * @param string $sortOrder */ public function setSortOrder(string $sortOrder) { $this->sortOrder = $sortOrder; } /** * @return string */ public function getCategories(): string { return $this->categories; } public function getUserCategories(): array { return $this->userCategories; } /** * @param string $categories */ public function setCategories(string $categories) { $this->categories = $categories; } /** * @return bool */ public function getIncludeSubCategories(): bool { return $this->includeSubCategories; } /** * @param bool $includeSubCategories */ public function setIncludeSubCategories(bool $includeSubCategories) { $this->includeSubCategories = $includeSubCategories; } /** * @return string */ public function getCategoryCombination(): string { return $this->categoryCombination; } /** * @param string $categoryCombination */ public function setCategoryCombination(string $categoryCombination) { $this->categoryCombination = $categoryCombination; } /** * @return string */ public function getRegion(): string { return $this->region; } /** * @param \Wrm\DdEvents\Domain\Model\Region $region */ public function setRegion(string $region): void { $this->region = $region; } /** * @return bool */ public function getHighlight(): bool { return $this->highlight; } /** * @param bool $highlight */ public function setHighlight(bool $highlight): void { $this->highlight = $highlight; } /** * @return string */ public function getLimit(): string { return $this->limit; } /** * @param string $limit */ public function setLimit(string $limit): void { $this->limit = $limit; } /** * @return string */ public function getSearchword(): string { return $this->searchword; } /** * @param string $searchword */ public function setSearchword(string $searchword): void { $this->searchword = $searchword; } /** * @param array $synonyms * [ * [ * 'word' => 'Word1', * 'synonyms' => 'synonym1, synonym2', * ], * [ * 'word' => 'Word2', * 'synonyms' => 'synonym3, synonym4', * ], * … * ] */ public function setSynonyms(array $synonyms): void { $this->synonyms = []; foreach ($synonyms as $config) { $synonymsForWord = GeneralUtility::trimExplode(',', $config['synonyms'], true); foreach ($synonymsForWord as $synonym) { $synonym = mb_strtolower($synonym); $this->synonyms[$synonym][] = $config['word']; $this->synonyms[$synonym] = array_unique($this->synonyms[$synonym]); } } } public function getSynonymsForSearchword(): array { $searchWord = mb_strtolower($this->getSearchword()); return $this->synonyms[$searchWord] ?? []; } /** * @return string */ public function getStart(): string { return $this->start; } /** * @param string $start */ public function setStart(string $start): void { $this->start = $start; } /** * @return string */ public function getEnd(): string { return $this->end; } /** * @param string $end */ public function setEnd(string $end): void { $this->end = $end; } /** * @return bool */ public function getConsiderDate(): bool { return $this->considerDate; } /** * @param bool $considerDate */ public function setConsiderDate(string $considerDate): void { $this->considerDate = $considerDate; } }