ViewExecutable::execute

public ViewExecutable::execute($display_id = NULL)

Executes the view's query.

Parameters

string $display_id: The machine name of the display, which should be executed.

Return value

bool TRUE if the view execution was successful, FALSE otherwise. For example, an argument could stop the process.

File

core/modules/views/src/ViewExecutable.php, line 1376

Class

ViewExecutable
Represents a view as a whole.

Namespace

Drupal\views

Code

public function execute($display_id = NULL) {
  if (empty($this->built)) {
    if (!$this->build($display_id)) {
      return FALSE;
    }
  }

  if (!empty($this->executed)) {
    return TRUE;
  }

  // Don't allow to use deactivated displays, but display them on the live preview.
  if (!$this->display_handler->isEnabled() && empty($this->live_preview)) {
    $this->build_info['fail'] = TRUE;
    return FALSE;
  }

  // Let modules modify the view just prior to executing it.
  $module_handler = \Drupal::moduleHandler();
  $module_handler->invokeAll('views_pre_execute', array($this));

  // Check for already-cached results.
  /** @var \Drupal\views\Plugin\views\cache\CachePluginBase $cache */
  if (!empty($this->live_preview)) {
    $cache = Views::pluginManager('cache')->createInstance('none');
  }
  else {
    $cache = $this->display_handler->getPlugin('cache');
  }

  if ($cache->cacheGet('results')) {
    if ($this->pager->usePager()) {
      $this->pager->total_items = $this->total_rows;
      $this->pager->updatePageInfo();
    }
  }
  else {
    $this->query->execute($this);
    // Enforce the array key rule as documented in
    // views_plugin_query::execute().
    $this->result = array_values($this->result);
    $this->_postExecute();
    $cache->cacheSet('results');
  }

  // Let modules modify the view just after executing it.
  $module_handler->invokeAll('views_post_execute', array($this));

  return $this->executed = TRUE;
}
doc_Drupal
2016-10-29 09:54:18
Comments
Leave a Comment

Please login to continue.