function view::execute

Same name in other branches
  1. 7.x-3.x includes/view.inc \view::execute()

Execute the view's query.

Parameters

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

Return value

bool Return whether the executing was successful, for example an argument could stop the process.

1 call to view::execute()
view::render in includes/view.inc
Render this view for a certain display.

File

includes/view.inc, line 933

Class

view
An object to contain all of the data to generate a view, plus the member functions to build the view query, execute the query and render the output.

Code

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.
    if (!$this->display[$this->current_display]->handler
        ->get_option('enabled')) {
        $this->build_info['fail'] = TRUE;
        return FALSE;
    }
    // Let modules modify the view just prior to executing it.
    foreach (module_implements('views_pre_execute') as $module) {
        $function = $module . '_views_pre_execute';
        $function($this);
    }
    // Check for already-cached results.
    if (!empty($this->live_preview)) {
        $cache = FALSE;
    }
    else {
        $cache = $this->display_handler
            ->get_plugin('cache');
    }
    if ($cache && $cache->cache_get('results')) {
        if ($this->query->pager
            ->use_pager()) {
            $this->query->pager->total_items = $this->total_rows;
            $this->query->pager
                ->update_page_info();
        }
        vpr('Used cached results');
    }
    else {
        $this->query
            ->execute($this);
        if ($cache) {
            $cache->cache_set('results');
        }
    }
    // Let modules modify the view just after executing it.
    foreach (module_implements('views_post_execute') as $module) {
        $function = $module . '_views_post_execute';
        $function($this);
    }
    $this->executed = TRUE;
}