getQueryParams(); $query = ( 'SELECT event_domain.id, event_domain.domain, event_domain.ip, event_domain.total_account, event_domain.total_visit, event_domain.disposable_domains, event_domain.creation_date, event_domain.disabled, event_domain.free_email_provider, event_domain.tranco_rank, ( SELECT COUNT(*) FROM event_email WHERE event_email.domain = event_domain.id AND event_email.key = :api_key AND event_email.fraud_detected IS TRUE ) AS fraud FROM event_domain WHERE event_domain.key = :api_key %s GROUP BY event_domain.id' ); $this->applySearch($query, $queryParams); $this->applyOrder($query); $this->applyLimit($query, $queryParams); return [$query, $queryParams]; } public function getTotal(): array { $queryParams = $this->getQueryParams(); $query = ( 'SELECT COUNT (event_domain.id) FROM event_domain WHERE event_domain.key = :api_key %s' ); $this->applySearch($query, $queryParams); return [$query, $queryParams]; } private function applySearch(string &$query, array &$queryParams): void { $this->applyDateRange($query, $queryParams); $search = $this->f3->get('REQUEST.search'); $searchConditions = $this->injectIdQuery('event_domain.id', $queryParams); if (isset($search) && $search['value'] !== null) { $searchConditions .= ( ' AND ( LOWER(event_domain.domain) LIKE LOWER(:search_value) OR TEXT(event_domain.creation_date) LIKE LOWER(:search_value) )' ); $queryParams[':search_value'] = '%' . $search['value'] . '%'; } //Add search and ids into request $query = sprintf($query, $searchConditions); } }