fivestar.install in Fivestar 6
Same filename and directory in other branches
Installation file for fivestar module.
File
fivestar.installView source
<?php
/**
 * @file
 * Installation file for fivestar module.
 */
function fivestar_schema() {
  return array();
}
function fivestar_install() {
  drupal_install_schema('fivestar');
  if (module_exists('content')) {
    content_notify('install', 'fivestar');
  }
}
function fivestar_uninstall() {
  drupal_uninstall_schema('fivestar');
  db_query("DELETE FROM {variable} WHERE name LIKE 'fivestar_%'");
  if (module_exists('content')) {
    content_notify('uninstall', 'fivestar');
  }
}
/**
 * Implementation of hook_enable().
 */
function fivestar_enable() {
  if (module_exists('content')) {
    module_load_include('inc', 'fivestar', 'fivestar_field');
    content_notify('enable', 'fivestar');
  }
}
/**
 * Implementation of hook_disable().
 */
function fivestar_disable() {
  if (module_exists('content')) {
    content_notify('disable', 'fivestar');
  }
}
/**
 * Function to retrieve the current version to prevent duplicate updates.
 */
function fivestar_update_version() {
  static $version;
  if (!isset($version)) {
    $version = db_result(db_query("SELECT schema_version FROM {system} WHERE type = 'module' AND name = 'fivestar'"));
  }
  return $version;
}
/**
 * Add the fivestar comment tables.
 */
function fivestar_update_1() {
  // No longer needed. The tables are added by fivestar_commment_install().
  return array();
}
/**
 * Convert previous fivestar widget settings to new format.
 */
function fivestar_update_2() {
  $types = node_get_types('names');
  foreach ($types as $key => $name) {
    $style = variable_get('fivestar_style_' . $key, 'default');
    $enabled = variable_get('fivestar_' . $key, FALSE);
    // Split the display style into two variables for stars and text.
    if ($enabled) {
      switch ($style) {
        case 'default':
          variable_set('fivestar_style_' . $key, 'user');
          variable_set('fivestar_text_' . $key, 'average');
          break;
        case 'compact':
          variable_set('fivestar_style_' . $key, 'user');
          variable_set('fivestar_text_' . $key, 'none');
          break;
        case 'dual':
          variable_set('fivestar_text_' . $key, 'none');
          break;
      }
    }
    else {
      variable_del('fivestar_unvote_' . $key);
      variable_del('fivestar_style_' . $key);
      variable_del('fivestar_position_' . $key);
      variable_del('fivestar_position_teaser_' . $key);
    }
  }
  return array();
}
/**
 * Upgrade to Drupal 6 and VotingAPI 2.
 *
 * Remove anonymous vote interval from Fivestar, now handled by VotingAPI.
 */
function fivestar_update_6100() {
  // If using CCK, make sure it has updated first.
  if (function_exists('content_check_update') && ($abort = content_check_update('fivestar'))) {
    return $abort;
  }
  $ret = array();
  variable_del('fivestar_anonymous_vote_interval');
  $ret[] = array(
    'success' => TRUE,
    'query' => "variable_del('fivestar_anonymous_vote_interval')",
  );
  return $ret;
}
/**
 * Add vote_id column to the fivestar_comment table.
 */
function fivestar_update_6101() {
  // Moved to fivestar_commment_update_6100().
  return array();
}
/**
 * Set Fivestar weight to -1 so that it can load before content.module.
 */
function fivestar_update_6102() {
  $ret = array();
  // This update will already be run as fivestar_update_5701 on Drupal 5.
  if (fivestar_update_version() >= 6100) {
    $ret[] = update_sql("UPDATE {system} SET weight = -1 WHERE type = 'module' AND name = 'fivestar'");
  }
  return $ret;
}
/**
 * Move comment support to a separate module.
 */
function fivestar_update_6103() {
  // Comment support was added in schema version 1.
  if (fivestar_update_version() >= 6100) {
    // Enable the module, but don't run the install hook (tables already exist).
    if (module_exists('comment')) {
      module_rebuild_cache();
      module_enable(array(
        'fivestar_comment',
      ));
      $version = array_pop(drupal_get_schema_versions('fivestar_comment'));
      drupal_set_installed_schema_version('fivestar_comment', $version);
      module_rebuild_cache();
    }
    // If the comment table needs an update, run fivestar_comment_update_5100().
    if (fivestar_update_version() < 6101) {
      module_load_install('fivestar_comment');
      fivestar_comment_update_6100();
    }
  }
  return array();
}
/**
 * Update CCK target logic to rename "target" to "php_target".
 */
function fivestar_update_6104() {
  // Previously ran as fivestar_update_5703 on Drupal 5.
  // Also, don't run this update if CCK is not enabled.
  if (fivestar_update_version() >= 6100 && module_exists('content')) {
    $result = db_query("SELECT field_name, global_settings FROM {content_node_field} WHERE type = 'fivestar'");
    while ($field = db_fetch_object($result)) {
      $settings = unserialize($field->global_settings);
      if (!empty($settings['target'])) {
        if (is_numeric($settings['target'])) {
          // If previously a straight integer, just add a "return" to the number.
          $settings['php_target'] = 'return ' . $settings['target'];
        }
        else {
          // If already PHP code, remove the PHP brackets.
          $php = trim($settings['target']);
          $php = preg_replace('/^<\\?(php)?/', '', $php);
          $php = preg_replace('/\\?>$/', '', $php);
          $settings['php_target'] = $php;
        }
      }
      unset($settings['target']);
      unset($settings['php']);
      db_query("UPDATE {content_node_field} SET global_settings = '%s' WHERE field_name = '%s'", serialize($settings), $field->field_name);
    }
  }
  return array();
}
/**
 * Belated update for Drupal 6: Re-enable Fivestar CCK fields.
 */
function fivestar_update_6105() {
  $ret = array();
  if (!module_exists('content')) {
    $ret[] = array(
      'success' => TRUE,
      'query' => t('CCK is not installed. No update ran.'),
    );
    return $ret;
  }
  if ($abort = content_check_update('fivestar')) {
    return $abort;
  }
  // All CCK fields are disabled by Content module during the D6 upgrade.
  // Re-enable the Fivestar fields.
  module_load_include('inc', 'fivestar', 'fivestar_field');
  content_associate_fields('fivestar');
  $ret[] = array(
    'success' => TRUE,
    'query' => t('Re-enabled Fivestar CCK fields.'),
  );
  return $ret;
}Functions
| Name   | Description | 
|---|---|
| fivestar_disable | Implementation of hook_disable(). | 
| fivestar_enable | Implementation of hook_enable(). | 
| fivestar_install | |
| fivestar_schema | @file Installation file for fivestar module. | 
| fivestar_uninstall | |
| fivestar_update_1 | Add the fivestar comment tables. | 
| fivestar_update_2 | Convert previous fivestar widget settings to new format. | 
| fivestar_update_6100 | Upgrade to Drupal 6 and VotingAPI 2. | 
| fivestar_update_6101 | Add vote_id column to the fivestar_comment table. | 
| fivestar_update_6102 | Set Fivestar weight to -1 so that it can load before content.module. | 
| fivestar_update_6103 | Move comment support to a separate module. | 
| fivestar_update_6104 | Update CCK target logic to rename "target" to "php_target". | 
| fivestar_update_6105 | Belated update for Drupal 6: Re-enable Fivestar CCK fields. | 
| fivestar_update_version | Function to retrieve the current version to prevent duplicate updates. | 
