You are here

download_count.install in Download Count 7.3

Installation code for the download_count module.

File

download_count.install
View source
<?php

/**
 * @file
 * Installation code for the download_count module.
 */

/**
 * Implements hook_schema().
 */
function download_count_schema() {
  $schema['download_count'] = array(
    'fields' => array(
      'dcid' => array(
        'description' => 'Primary Key: Unique download count id.',
        'type' => 'serial',
        'unsigned' => TRUE,
        'not null' => TRUE,
      ),
      'fid' => array(
        'description' => 'The id from the drupal file_managed table of the file downloaded.',
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
      ),
      'uid' => array(
        'description' => 'The uid of the user that downloaded the file.',
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
      ),
      'type' => array(
        'description' => 'The name of the entity type to which the file was attached when downloaded.',
        'type' => 'varchar',
        'length' => 64,
        'not null' => TRUE,
        'default' => '',
      ),
      'id' => array(
        'description' => 'The primary key of the entity to which the file was attached when downloaded.',
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'ip_address' => array(
        'description' => "The IP address of the downloading user.",
        'type' => 'varchar',
        'length' => 128,
        'not null' => TRUE,
      ),
      'referrer' => array(
        'description' => 'Referrer URI.',
        'type' => 'text',
        'not null' => TRUE,
      ),
      'timestamp' => array(
        'description' => 'The date-time the file was downloaded.',
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
    ),
    'primary key' => array(
      'dcid',
    ),
    'indexes' => array(
      'dc_fid' => array(
        'fid',
      ),
      'dc_uid' => array(
        'uid',
      ),
      'dc_type' => array(
        'type',
      ),
      'dc_id' => array(
        'id',
      ),
      'dc_ip' => array(
        'ip_address',
      ),
      'dc_timestamp' => array(
        'timestamp',
      ),
      'dc_fid_type_id' => array(
        'fid',
        'type',
        'id',
      ),
    ),
  );
  $schema['download_count_cache'] = array(
    'fields' => array(
      'dcc_id' => array(
        'description' => 'Primary Key: Unique download count cache id.',
        'type' => 'serial',
        'unsigned' => TRUE,
        'not null' => TRUE,
      ),
      'fid' => array(
        'description' => t('The id from the drupal files table of the file downloaded.'),
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'type' => array(
        'description' => 'The name of the entity type to which the file was attached when downloaded.',
        'type' => 'varchar',
        'length' => 64,
        'not null' => TRUE,
        'default' => '',
      ),
      'id' => array(
        'description' => 'The primary key of the entity to which the file was attached when downloaded.',
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'date' => array(
        'description' => t('The date the file was downloaded.'),
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'count' => array(
        'description' => t('Number of times a file was downloaded in one day.'),
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
    ),
    'primary key' => array(
      'dcc_id',
    ),
    'indexes' => array(
      'dcc_fid' => array(
        'fid',
      ),
      'dcc_type' => array(
        'type',
      ),
      'dcc_id' => array(
        'id',
      ),
      'dcc_timestamp' => array(
        'date',
      ),
      'dcc_fid_type_id' => array(
        'fid',
        'type',
        'id',
        'date',
      ),
    ),
  );
  return $schema;
}

/**
 * Implements hook_uninstall().
 */
function download_count_uninstall() {
  variable_del('download_count_excluded_file_extensions');
  variable_del('download_count_view_page_limit');
  variable_del('download_count_view_page_items');
  variable_del('download_count_view_page_title');
  variable_del('download_count_view_page_header');
  variable_del('download_count_view_page_footer');
  variable_del('download_count_export_range');
  variable_del('download_count_sparklines');
  variable_del('download_count_sparkline_min');
  variable_del('download_count_sparkline_height');
  variable_del('download_count_sparkline_width');
  variable_del('download_count_last_cron');
  variable_del('download_count_details_daily_limit');
  variable_del('download_count_details_weekly_limit');
  variable_del('download_count_details_monthly_limit');
  variable_del('download_count_details_yearly_limit');
  variable_del('download_count_flood_limit');
  variable_del('download_count_flood_window');
  drupal_set_message(t('The download_count module has been uninstalled.'));
}

/**
 * Alter download count table.
 */
function download_count_update_7300() {

  // We do not want to create type field again after module installation.
  if (!db_field_exists('download_count', 'type')) {

    // Create type field.
    $spec = array(
      'description' => 'The name of the entity type to which the file was attached when downloaded.',
      'type' => 'varchar',
      'length' => 64,
      'not null' => TRUE,
      'default' => '',
    );
    db_add_field('download_count', 'type', $spec);

    // Enter value to type field.
    // In 6 version there we were storing node ids from where file has been
    // downloaded.
    // Hence, setting type field value to node for all entries.
    $rows_updated = db_update('download_count')
      ->fields(array(
      'type' => 'node',
    ))
      ->execute();
    drupal_set_message(t('Download types set for') . ' ' . $rows_updated . ' ' . t('rows'));
  }

  // There will be no nid field after module installation.
  if (!db_field_exists('download_count', 'id') && db_field_exists('download_count', 'nid')) {

    // Alter nid field of download_count table.
    db_change_field('download_count', 'nid', 'id', array(
      'description' => 'The name of the entity type to which the file was attached when downloaded.',
      'type' => 'varchar',
      'length' => 64,
      'not null' => TRUE,
      'default' => '',
    ), array(
      'indexes' => array(
        'dc_fid' => array(
          'fid',
        ),
        'dc_uid' => array(
          'uid',
        ),
        'dc_type' => array(
          'type',
        ),
        'dc_id' => array(
          'id',
        ),
        'dc_ip' => array(
          'ip_address',
        ),
        'dc_timestamp' => array(
          'timestamp',
        ),
        'dc_fid_type_id' => array(
          'fid',
          'type',
          'id',
        ),
      ),
    ));
  }
}

/**
 * Create download count cache table.
 */
function download_count_update_7301() {

  // Do not create download_count_cache table after module installation.
  if (!db_table_exists('download_count_cache')) {
    $schema['download_count_cache'] = array(
      'fields' => array(
        'dcc_id' => array(
          'description' => 'Primary Key: Unique download count cache id.',
          'type' => 'serial',
          'unsigned' => TRUE,
          'not null' => TRUE,
        ),
        'fid' => array(
          'description' => t('The id from the drupal files table of the file downloaded.'),
          'type' => 'int',
          'unsigned' => TRUE,
          'not null' => TRUE,
          'default' => 0,
        ),
        'type' => array(
          'description' => 'The name of the entity type to which the file was attached when downloaded.',
          'type' => 'varchar',
          'length' => 64,
          'not null' => TRUE,
          'default' => '',
        ),
        'id' => array(
          'description' => 'The primary key of the entity to which the file was attached when downloaded.',
          'type' => 'int',
          'unsigned' => TRUE,
          'not null' => TRUE,
          'default' => 0,
        ),
        'date' => array(
          'description' => t('The date the file was downloaded.'),
          'type' => 'int',
          'unsigned' => TRUE,
          'not null' => TRUE,
          'default' => 0,
        ),
        'count' => array(
          'description' => t('Number of times a file was downloaded in one day.'),
          'type' => 'int',
          'unsigned' => TRUE,
          'not null' => TRUE,
          'default' => 0,
        ),
      ),
      'primary key' => array(
        'dcc_id',
      ),
      'indexes' => array(
        'dcc_fid' => array(
          'fid',
        ),
        'dcc_type' => array(
          'type',
        ),
        'dcc_id' => array(
          'id',
        ),
        'dcc_timestamp' => array(
          'date',
        ),
        'dcc_fid_type_id' => array(
          'fid',
          'type',
          'id',
          'date',
        ),
      ),
    );
    db_create_table('download_count_cache', $schema['download_count_cache']);
  }
}

/**
 * Change the referrer field to be text instead of varchar.
 */
function download_count_update_7302() {
  db_change_field('download_count', 'referrer', 'referrer', array(
    'description' => 'Referrer URI.',
    'type' => 'text',
    'not null' => TRUE,
  ));
}

/**
 * Fix the default value of the ip_address field.
 */
function download_count_update_7303() {
  db_change_field('download_count', 'ip_address', 'ip_address', array(
    'description' => "The IP address of the downloading user.",
    'type' => 'varchar',
    'length' => 128,
    'not null' => TRUE,
  ));
}

Functions

Namesort descending Description
download_count_schema Implements hook_schema().
download_count_uninstall Implements hook_uninstall().
download_count_update_7300 Alter download count table.
download_count_update_7301 Create download count cache table.
download_count_update_7302 Change the referrer field to be text instead of varchar.
download_count_update_7303 Fix the default value of the ip_address field.