You are here

function views_rules_plugin_display_rules::iterate_rows in Views Rules 7

Parameters

ViewsRulesIterable $iterable:

Throws

views_rules_iterator_exception If an error occurred while executing the view.

1 call to views_rules_plugin_display_rules::iterate_rows()
views_rules_plugin_display_rules::execute_iterator in views/views_rules_plugin_display_rules.inc
Executes the iterator display.

File

views/views_rules_plugin_display_rules.inc, line 575
Configures views for use within Rules.

Class

views_rules_plugin_display_rules
Rules display plugin.

Code

function iterate_rows($iterable) {

  // Execute view.
  $this->view
    ->execute($this->view->current_display);

  // Check display has not failed.
  if (!empty($this->build_info['fail'])) {
    throw new views_rules_iterator_exception('Failed to build view display.');
  }
  if (!empty($this->view->build_info['denied'])) {
    throw new views_rules_iterator_exception('Access to view display is denied.');
  }

  // Iterate through results.
  if ($variable_info = $this
    ->get_processed_rules_variable_info(TRUE)) {
    $view_variable_info = (array) $this
      ->get_option('rules_variables');
    foreach ($this->view->result as $row_index => $row) {

      // Build row data.
      $data = array();
      if ($this
        ->uses_fields()) {
        foreach ($variable_info as $var_name => $info) {
          $option_info = $view_variable_info[$info['view key']];
          if (empty($option_info['rendered'])) {
            $data[$var_name] = $this->view->style_plugin
              ->get_field_value($row_index, $info['view key']);
          }
          else {
            $data[$var_name] = $this->view->style_plugin
              ->get_field($row_index, $info['view key']);
          }
        }
      }
      else {
        $data[key($variable_info)] = $row->{$this->view->base_field};
      }

      // Evaluate row.
      $iterable
        ->evaluateRow($data);
    }
  }
}