You are here

function template_preprocess_views_summarize_view_summarized_table in Views Summarize 1.1.x

Display a view as a table summary.

File

./views_summarize.module, line 25
Defines the functionality and Drupal hooks for this module.

Code

function template_preprocess_views_summarize_view_summarized_table(&$variables) {
  template_preprocess_views_view_table($variables);
  if (empty($variables['rows']) || !is_array($variables['rows']) || !count($variables['rows'])) {
    return;
  }
  $view = $variables['view'];
  $options = $view->style_plugin->options;
  if (isset($options['summary_only'])) {
    $variables['summary_only'] = $options['summary_only'];
  }
  $data = [];
  foreach ($variables['rows'] as $row) {
    foreach ($row['columns'] as $field => $field_definition) {
      if (empty($field_definition['content'])) {
        $data[$field][] = '';
      }
      else {
        foreach ($field_definition['content'] as $field_output) {
          if (empty($field_output['field_output']['#markup'])) {
            $data[$field][] = '';
          }
          else {
            $data[$field][] = $field_output['field_output']['#markup']
              ->__toString();
          }
        }
      }
    }
  }

  // Use the first entity in the result set to get the entity field definition.
  // If there are multiple types of entities and/or bundles included in the
  // field list, this could produce unexpected results.
  $field_definitions = $view->result[0]->_entity
    ->getFieldDefinitions();
  $variables['summarized'] = [];
  foreach ($options['info'] as $field => $settings) {
    if (isset($data[$field])) {

      // Get the display's field settings.
      $field_settings = [];
      if (!empty($view->field[$field]->options['settings'])) {
        $field_settings = $view->field[$field]->options['settings'];
      }

      // Get the field instance settings.
      $field_config_settings = [];
      if (!empty($field_definitions[$field])) {
        $field_config_settings = $field_definitions[$field]
          ->getSettings();
      }
      $theme_function = 'views_summarize_type_' . $settings['summarize'];
      $options = [
        'field' => $field,
        'views_field_settings' => $field_settings,
        'field_instance_settings' => $field_config_settings,
      ];
      $theme_variables = [
        'data' => $data[$field],
        'options' => $options,
      ];
      $variables['summarized'][$field] = $theme_function($theme_variables);
    }
  }
}