You are here

views_summarize.install in Views Summarize 7.2

Contains install, update, and uninstall routines for the module.

File

views_summarize.install
View source
<?php

/**
 * @file
 * Contains install, update, and uninstall routines for the module.
 */

/**
 * Updates Views Summarize settings on displays using that style.
 */
function views_summarize_update_7201(&$sandbox) {
  $all_views = views_get_all_views();
  if (!empty($all_views)) {
    $updates = array(
      'prefix' => '',
      'suffix' => '',
      'precision' => 2,
      'decimal' => '.',
      'thousand' => ',',
    );
    $updated_views = array();
    foreach ($all_views as $view) {
      $updated = FALSE;
      foreach ($view->display as $display) {
        if (!empty($display->display_options['style_plugin']) && $display->display_options['style_plugin'] === 'tablesummarized') {
          foreach ($display->display_options['style_options']['info'] as &$style_option) {
            if (!empty($style_option['summarize'])) {
              foreach ($updates as $key => $value) {
                if (!isset($style_option[$key])) {
                  $style_option[$key] = $value;
                  if (!isset($updated_views[$view->human_name][$display->display_title])) {
                    $updated_views[$view->human_name][$display->display_title] = FALSE;
                  }
                  $updated = TRUE;
                }
              }
              if ($style_option['summarize'] === 'currency') {
                $style_option['summarize'] = 'total';
                $updated_views[$view->human_name][$display->display_title] = TRUE;
                $updated = TRUE;
              }
            }
          }
        }
      }
      if ($updated) {
        $view
          ->save();
      }
    }
    if (!empty($updated_views)) {
      $notice = t('Updated the Views Summarize settings on one or more views for one or more displays:');
      foreach ($updated_views as $view_name => $displays) {
        $display_names = array();
        foreach ($displays as $display => $result) {
          if ($result) {
            $display_names[] = '"' . $display . '" ' . t('(this display had one or more Currency summaries converted to Total summaries)');
          }
          else {
            $display_names[] = '"' . $display . '"';
          }
        }
        $replacements = array(
          '@view_name' => $view_name,
          '@displays' => implode(', ', $display_names),
        );
        $notice .= t('<br>View: @view_name; Display(s): @displays', $replacements);
      }
      watchdog('views_summarize', $notice);
      drupal_set_message(t('One or more displays on one or more views have had their Views Summarize settings updated. See your Drupal log for the specific views and displays.'));
    }
  }
}

/**
 * Changes the machine names of views_summarize handlers in any existing views.
 */
function views_summarize_update_7202() {
  $result = db_query("SELECT vid, id, display_options FROM {views_display}");
  while ($display = $result
    ->fetch()) {
    $options = unserialize($display->display_options);
    if (isset($options['style_plugin']) && $options['style_plugin'] == 'tablesummarized') {
      foreach ($options['style_options']['info'] as &$field) {
        if (!empty($field['summarize'])) {
          $field['summarize'] = 'views_summarize_type_' . $field['summarize'];
        }
      }
    }
    db_update('views_display')
      ->fields(array(
      'display_options' => serialize($options),
    ))
      ->condition('vid', $display->vid)
      ->condition('id', $display->id)
      ->execute();
  }
}

/**
 * Updates average summaries to use the new Include empty values setting.
 */
function views_summarize_update_7203(&$sandbox) {
  $all_views = views_get_all_views(TRUE);
  if (!empty($all_views)) {
    $updated_views = array();
    foreach ($all_views as $view) {
      $updated = FALSE;
      foreach ($view->display as $display) {
        if (!empty($display->display_options['style_plugin']) && $display->display_options['style_plugin'] === 'tablesummarized') {
          foreach ($display->display_options['style_options']['info'] as &$style_option) {
            if (!empty($style_option['summarize'])) {
              if ($style_option['summarize'] === 'average' || $style_option['summarize'] === 'views_summarize_type_average') {
                $style_option['summarize'] = 'views_summarize_type_average';
                $style_option['include_empties'] = 1;
                $updated_views[$view->human_name][$display->display_title] = TRUE;
                $updated = TRUE;
              }
              elseif ($style_option['summarize'] === 'average_no_empties' || $style_option['summarize'] === 'views_summarize_type_average_no_empties') {
                $style_option['summarize'] = 'views_summarize_type_average';
                $style_option['include_empties'] = 0;
                $updated_views[$view->human_name][$display->display_title] = TRUE;
                $updated = TRUE;
              }
            }
          }
        }
      }
      if ($updated) {
        $view
          ->save();
      }
    }
    if (!empty($updated_views)) {
      $notice = t('Updated the Views Summarize settings on one or more views for one or more displays:');
      foreach ($updated_views as $view_name => $displays) {
        $display_names = array();
        foreach ($displays as $display => $result) {
          if ($result) {
            $display_names[] = '"' . $display . '" ' . t('(this display had one or more average summaries modified)');
          }
          else {
            $display_names[] = '"' . $display . '"';
          }
        }
        $replacements = array(
          '@view_name' => $view_name,
          '@displays' => implode(', ', $display_names),
        );
        $notice .= t('<br>View: @view_name; Display(s): @displays', $replacements);
      }
      watchdog('views_summarize', $notice);
      drupal_set_message(t('One or more displays on one or more views have had their Views Summarize settings updated. See your Drupal log for the specific views and displays.'));
    }
  }
}

Functions

Namesort descending Description
views_summarize_update_7201 Updates Views Summarize settings on displays using that style.
views_summarize_update_7202 Changes the machine names of views_summarize handlers in any existing views.
views_summarize_update_7203 Updates average summaries to use the new Include empty values setting.