getQueryParams(); $query = ( 'SELECT event_email.id, event_email.email, event_email.data_breach, event_email.data_breaches, event_email.fraud_detected, -- event_email.profiles, event_email.blockemails, event_email.lastseen, event_email.alert_list, event_domain.domain, event_domain.id AS domain_id, event_domain.free_email_provider, event_domain.disposable_domains FROM event_email LEFT JOIN event_domain ON (event_email.domain = event_domain.id) WHERE event_email.key = :api_key %s' ); $this->applySearch($query, $queryParams); $this->applyOrder($query); $this->applyLimit($query, $queryParams); return [$query, $queryParams]; } public function getTotal(): array { $queryParams = $this->getQueryParams(); $query = ( 'SELECT COUNT(*) FROM event_email WHERE event_email.key = :api_key %s' ); $this->applySearch($query, $queryParams); return [$query, $queryParams]; } private function applySearch(string &$query, array &$queryParams): void { $search = $this->f3->get('REQUEST.search'); $searchConditions = $this->injectIdQuery('event_email.id', $queryParams); if (is_array($search) && isset($search['value']) && is_string($search['value']) && $search['value'] !== '') { $searchConditions .= ( ' AND ( event_email.email LIKE :search_value OR TEXT(event_email.lastseen) LIKE :search_value )' ); $queryParams[':search_value'] = '%' . $search['value'] . '%'; } //Add search and ids into request $query = sprintf($query, $searchConditions); } }