You are here

function advagg_schema in Advanced CSS/JS Aggregation 7.2

Same name and namespace in other branches
  1. 6 advagg.install \advagg_schema()
  2. 7 advagg.install \advagg_schema()

Implements hook_schema().

5 calls to advagg_schema()
advagg_install in ./advagg.install
Implements hook_install().
advagg_update_7200 in ./advagg.install
Upgrade AdvAgg previous versions (6.x-1.x and 7.x-1.x) to 7.x-2.x.
advagg_update_7206 in ./advagg.install
Update the schema making the varchar columns utf8_bin in MySQL.
advagg_update_7207 in ./advagg.install
Update schema making the varchar columns char. Change utf8_bin to ascii_bin.
advagg_update_7209 in ./advagg.install
Update schema making it match the definition.

File

./advagg.install, line 156
Handles Advanced Aggregation installation and upgrade tasks.

Code

function advagg_schema() {

  // Create cache tables.
  $schema['cache_advagg_aggregates'] = drupal_get_schema_unprocessed('system', 'cache');
  $schema['cache_advagg_aggregates']['fields']['cid']['binary'] = TRUE;
  $schema['cache_advagg_aggregates']['description'] = 'Cache table for Advanced CSS/JS Aggregation. Used to keep a cache of the CSS and JS HTML tags.';
  $schema['cache_advagg_info'] = drupal_get_schema_unprocessed('system', 'cache');
  $schema['cache_advagg_info']['fields']['cid']['binary'] = TRUE;
  $schema['cache_advagg_info']['description'] = 'Cache table for Advanced CSS/JS Aggregation. Used to keep a cache of the db and file info.';

  // Create database tables.
  $schema['advagg_files'] = array(
    'description' => 'Files used in CSS/JS aggregation.',
    'fields' => array(
      'filename' => array(
        'description' => 'Path and filename of the file relative to Drupal webroot.',
        'type' => 'text',
        'size' => 'normal',
        'not null' => TRUE,
      ),
      'filename_hash' => array(
        'description' => 'Hash of path and filename. Used to join tables.',
        'type' => 'char',
        'length' => 43,
        'not null' => TRUE,
        'default' => '',
        'binary' => TRUE,
        'collation' => 'ascii_bin',
        'charset' => 'ascii',
        'mysql_character_set' => 'ascii',
      ),
      'content_hash' => array(
        'description' => 'Hash of the file content. Used to see if the file has changed.',
        'type' => 'char',
        'length' => 43,
        'not null' => FALSE,
        'default' => '',
        'binary' => TRUE,
        'collation' => 'ascii_bin',
        'charset' => 'ascii',
        'mysql_character_set' => 'ascii',
      ),
      'filetype' => array(
        'description' => 'Filetype.',
        'type' => 'varchar',
        'length' => 8,
        'not null' => TRUE,
        'default' => '',
        'binary' => TRUE,
      ),
      'filesize' => array(
        'description' => 'The file size in bytes.',
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'linecount' => array(
        'description' => 'The number of lines in the file.',
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'mtime' => array(
        'description' => 'The time the file was last modified.',
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'changes' => array(
        'description' => 'This is incremented every time a file changes.',
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'filesize_processed' => array(
        'description' => 'The file size in bytes after minification and compression.',
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'use_strict' => array(
        'description' => 'If 1 then the js file starts with "use strict";. If 0 then it does not.',
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
    ),
    'indexes' => array(
      'content_hash' => array(
        'content_hash',
      ),
      'filetype' => array(
        'filetype',
      ),
      'filesize' => array(
        'filesize',
      ),
      'use_strict' => array(
        'use_strict',
      ),
    ),
    'primary key' => array(
      'filename_hash',
    ),
  );
  $schema['advagg_aggregates'] = array(
    'description' => 'What files are used in what aggregates.',
    'fields' => array(
      'aggregate_filenames_hash' => array(
        'description' => 'Hash of the aggregates list of files. Keep track of what files are in the aggregate.',
        'type' => 'char',
        'length' => 43,
        'not null' => TRUE,
        'default' => '',
        'binary' => TRUE,
        'collation' => 'ascii_bin',
        'charset' => 'ascii',
        'mysql_character_set' => 'ascii',
      ),
      'filename_hash' => array(
        'description' => 'Hash of path and filename.',
        'type' => 'char',
        'length' => 43,
        'not null' => TRUE,
        'default' => '',
        'binary' => TRUE,
        'collation' => 'ascii_bin',
        'charset' => 'ascii',
        'mysql_character_set' => 'ascii',
      ),
      'porder' => array(
        'description' => 'Processing order.',
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'settings' => array(
        'description' => 'Extra data about this file and how it is used in this aggregate.',
        'type' => 'blob',
        'not null' => TRUE,
        'size' => 'big',
        'translatable' => TRUE,
        'serialize' => TRUE,
      ),
    ),
    'indexes' => array(
      'porder' => array(
        'porder',
      ),
      'filename_hash' => array(
        'filename_hash',
      ),
      'aggregate_filenames_hash_porder' => array(
        'aggregate_filenames_hash',
        'porder',
      ),
    ),
    'primary key' => array(
      'aggregate_filenames_hash',
      'filename_hash',
    ),
  );
  $schema['advagg_aggregates_versions'] = array(
    'description' => 'What files are used in what aggregates.',
    'fields' => array(
      'aggregate_filenames_hash' => array(
        'description' => 'Hash of the aggregates list of files. Keep track of what files are in the aggregate.',
        'type' => 'char',
        'length' => 43,
        'not null' => TRUE,
        'default' => '',
        'binary' => TRUE,
        'collation' => 'ascii_bin',
        'charset' => 'ascii',
        'mysql_character_set' => 'ascii',
      ),
      'aggregate_contents_hash' => array(
        'description' => 'Hash of all content_hashes in this aggregate. Simple Version control of the aggregate.',
        'type' => 'char',
        'length' => 43,
        'not null' => TRUE,
        'default' => '',
        'binary' => TRUE,
        'collation' => 'ascii_bin',
        'charset' => 'ascii',
        'mysql_character_set' => 'ascii',
      ),
      'atime' => array(
        'description' => 'Last access time for this version of the aggregate. Updated every 12 hours.',
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'root' => array(
        'description' => 'If 1 then it is a root aggregate. 0 means not root aggregate.',
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
    ),
    'indexes' => array(
      'root' => array(
        'root',
      ),
      'atime' => array(
        'atime',
      ),
      'root_atime' => array(
        'root',
        'atime',
      ),
    ),
    'primary key' => array(
      'aggregate_filenames_hash',
      'aggregate_contents_hash',
    ),
  );

  // Copy the variable table and change a couple of things.
  $schema['advagg_aggregates_hashes'] = drupal_get_schema_unprocessed('system', 'variable');
  $schema['advagg_aggregates_hashes']['fields']['hash'] = $schema['advagg_aggregates_hashes']['fields']['name'];
  $schema['advagg_aggregates_hashes']['fields']['hash']['length'] = 255;
  $schema['advagg_aggregates_hashes']['fields']['hash']['description'] = 'The name of the hash.';
  $schema['advagg_aggregates_hashes']['fields']['hash']['binary'] = TRUE;
  $schema['advagg_aggregates_hashes']['fields']['settings']['description'] = 'The settings associated with this hash.';
  $schema['advagg_aggregates_hashes']['fields']['settings'] = $schema['advagg_aggregates_hashes']['fields']['value'];
  $schema['advagg_aggregates_hashes']['description'] = 'Key value pairs created by AdvAgg. Stores settings used at the time that the aggregate was created.';
  $schema['advagg_aggregates_hashes']['primary key'][0] = 'hash';
  unset($schema['advagg_aggregates_hashes']['fields']['name'], $schema['advagg_aggregates_hashes']['fields']['value']);
  return $schema;
}