public function LdapQuery::execute in Lightweight Directory Access Protocol (LDAP) 8.3
Same name and namespace in other branches
- 8.4 ldap_query/src/Plugin/views/query/LdapQuery.php \Drupal\ldap_query\Plugin\views\query\LdapQuery::execute()
Execute the query.
Parameters
\Drupal\views\ViewExecutable $view: The view.
Return value
bool|void Nothing if query can be executed.
Overrides QueryPluginBase::execute
File
- ldap_query/
src/ Plugin/ views/ query/ LdapQuery.php, line 70
Class
- LdapQuery
- Views query plugin for an SQL query.
Namespace
Drupal\ldap_query\Plugin\views\queryCode
public function execute(ViewExecutable $view) {
if (!isset($this->options['query_id']) || empty($this->options['query_id'])) {
\Drupal::logger('ldap')
->error('You are trying to use Views without having chosen an LDAP Query under Advanced => Query settings.');
return FALSE;
}
$start = microtime(TRUE);
$controller = new QueryController($this->options['query_id']);
$filter = $this
->buildLdapFilter($controller
->getFilter());
$controller
->execute($filter);
$results = $controller
->getRawResults();
$fields = $controller
->availableFields();
$index = 0;
unset($results['count']);
$rows = [];
foreach ($results as $result) {
$row = [];
// TODO: Try to only fetch requested fields instead of all available.
foreach ($fields as $field_key => $void) {
if (isset($result[$field_key])) {
unset($result[$field_key]['count']);
$row[$field_key] = $result[$field_key];
}
}
$row['index'] = $index++;
$rows[] = $row;
}
if (!empty($this->orderby) && !empty($rows)) {
$rows = $this
->sortResults($rows);
}
foreach ($rows as $row) {
$view->result[] = new ResultRow($row);
}
// Pager.
$totalItems = count($view->result);
$offset = $view->pager
->getCurrentPage() * $view->pager
->getItemsPerPage() + $view->pager
->getOffset();
$length = NULL;
if ($view->pager
->getItemsPerPage() > 0) {
$length = $view->pager
->getItemsPerPage();
}
if ($offset > 0 || $length > 0) {
$view->result = array_splice($view->result, $offset, $length);
}
$view->pager
->postExecute($view->result);
$view->pager->total_items = $totalItems;
$view->pager
->updatePageInfo();
$view->total_rows = $view->pager
->getTotalItems();
// Timing information.
$view->execute_time = microtime(TRUE) - $start;
}