getFilter('term')?->get()) { if (is_string($term)) { $filters[] = "subject:$term"; } } if ($since = $query->getFilter('since')?->get()) { if ($since instanceof DateTimeImmutable) { $ts = $since->getTimestamp(); $filters[] = "start:$ts"; } } if ($until = $query->getFilter('until')?->get()) { if ($until instanceof DateTimeImmutable) { $ts = $until->getTimestamp(); $filters[] = "end:$ts"; } } if ($userFilter = $query->getFilter('person')?->get()) { if ($userFilter instanceof IUser) { $email = $userFilter->getEMailAddress(); if ($email !== null) { $filters[] = "from:$email"; $filters[] = "to:$email"; $filters[] = "cc:$email"; } } } if (count($filters) === 0) { return SearchResult::complete( $this->getName(), [] ); } return $this->searchByFilter($user, $query, implode(' ', $filters)); } #[\Override] public function getSupportedFilters(): array { return [ 'term', 'since', 'until', 'person', ]; } #[\Override] public function getAlternateIds(): array { return []; } #[\Override] public function getCustomFilters(): array { return []; } }