cms/drupal/modules/aggregator/aggregator.install
changeset 541 e756a8c72c3d
equal deleted inserted replaced
540:07239de796bb 541:e756a8c72c3d
       
     1 <?php
       
     2 
       
     3 /**
       
     4  * @file
       
     5  * Install, update and uninstall functions for the aggregator module.
       
     6  */
       
     7 
       
     8 /**
       
     9  * Implements hook_uninstall().
       
    10  */
       
    11 function aggregator_uninstall() {
       
    12   variable_del('aggregator_allowed_html_tags');
       
    13   variable_del('aggregator_summary_items');
       
    14   variable_del('aggregator_clear');
       
    15   variable_del('aggregator_category_selector');
       
    16   variable_del('aggregator_fetcher');
       
    17   variable_del('aggregator_parser');
       
    18   variable_del('aggregator_processors');
       
    19   variable_del('aggregator_teaser_length');
       
    20 }
       
    21 
       
    22 /**
       
    23  * Implements hook_schema().
       
    24  */
       
    25 function aggregator_schema() {
       
    26   $schema['aggregator_category'] = array(
       
    27     'description' => 'Stores categories for aggregator feeds and feed items.',
       
    28     'fields' => array(
       
    29       'cid'  => array(
       
    30         'type' => 'serial',
       
    31         'not null' => TRUE,
       
    32         'description' => 'Primary Key: Unique aggregator category ID.',
       
    33       ),
       
    34       'title' => array(
       
    35         'type' => 'varchar',
       
    36         'length' => 255,
       
    37         'not null' => TRUE,
       
    38         'default' => '',
       
    39         'description' => 'Title of the category.',
       
    40       ),
       
    41       'description' => array(
       
    42         'type' => 'text',
       
    43         'not null' => TRUE,
       
    44         'size' => 'big',
       
    45         'description' => 'Description of the category',
       
    46       ),
       
    47       'block' => array(
       
    48         'type' => 'int',
       
    49         'not null' => TRUE,
       
    50         'default' => 0,
       
    51         'size' => 'tiny',
       
    52         'description' => 'The number of recent items to show within the category block.',
       
    53       )
       
    54     ),
       
    55     'primary key' => array('cid'),
       
    56     'unique keys' => array(
       
    57       'title' => array('title'),
       
    58     ),
       
    59   );
       
    60 
       
    61   $schema['aggregator_category_feed'] = array(
       
    62     'description' => 'Bridge table; maps feeds to categories.',
       
    63     'fields' => array(
       
    64       'fid' => array(
       
    65         'type' => 'int',
       
    66         'not null' => TRUE,
       
    67         'default' => 0,
       
    68         'description' => "The feed's {aggregator_feed}.fid.",
       
    69       ),
       
    70       'cid' => array(
       
    71         'type' => 'int',
       
    72         'not null' => TRUE,
       
    73         'default' => 0,
       
    74         'description' => 'The {aggregator_category}.cid to which the feed is being assigned.',
       
    75       )
       
    76     ),
       
    77     'primary key' => array('cid', 'fid'),
       
    78     'indexes' => array(
       
    79       'fid' => array('fid'),
       
    80     ),
       
    81     'foreign keys' => array(
       
    82       'aggregator_category' => array(
       
    83         'table' => 'aggregator_category',
       
    84         'columns' => array('cid' => 'cid'),
       
    85       ),
       
    86     ),
       
    87   );
       
    88 
       
    89   $schema['aggregator_category_item'] = array(
       
    90     'description' => 'Bridge table; maps feed items to categories.',
       
    91     'fields' => array(
       
    92       'iid' => array(
       
    93         'type' => 'int',
       
    94         'not null' => TRUE,
       
    95         'default' => 0,
       
    96         'description' => "The feed item's {aggregator_item}.iid.",
       
    97       ),
       
    98       'cid' => array(
       
    99         'type' => 'int',
       
   100         'not null' => TRUE,
       
   101         'default' => 0,
       
   102         'description' => 'The {aggregator_category}.cid to which the feed item is being assigned.',
       
   103       )
       
   104     ),
       
   105     'primary key' => array('cid', 'iid'),
       
   106     'indexes' => array(
       
   107       'iid' => array('iid'),
       
   108     ),
       
   109     'foreign keys' => array(
       
   110       'aggregator_category' => array(
       
   111         'table' => 'aggregator_category',
       
   112         'columns' => array('cid' => 'cid'),
       
   113       ),
       
   114     ),
       
   115   );
       
   116 
       
   117   $schema['aggregator_feed'] = array(
       
   118     'description' => 'Stores feeds to be parsed by the aggregator.',
       
   119     'fields' => array(
       
   120       'fid' => array(
       
   121         'type' => 'serial',
       
   122         'not null' => TRUE,
       
   123         'description' => 'Primary Key: Unique feed ID.',
       
   124       ),
       
   125       'title' => array(
       
   126         'type' => 'varchar',
       
   127         'length' => 255,
       
   128         'not null' => TRUE,
       
   129         'default' => '',
       
   130         'description' => 'Title of the feed.',
       
   131       ),
       
   132       'url' => array(
       
   133         'type' => 'text',
       
   134         'not null' => TRUE,
       
   135         'description' => 'URL to the feed.',
       
   136       ),
       
   137       'refresh' => array(
       
   138         'type' => 'int',
       
   139         'not null' => TRUE,
       
   140         'default' => 0,
       
   141         'description' => 'How often to check for new feed items, in seconds.',
       
   142       ),
       
   143       'checked' => array(
       
   144         'type' => 'int',
       
   145         'not null' => TRUE,
       
   146         'default' => 0,
       
   147         'description' => 'Last time feed was checked for new items, as Unix timestamp.',
       
   148       ),
       
   149       'queued' => array(
       
   150         'type' => 'int',
       
   151         'not null' => TRUE,
       
   152         'default' => 0,
       
   153         'description' => 'Time when this feed was queued for refresh, 0 if not queued.',
       
   154       ),
       
   155       'link' => array(
       
   156         'type' => 'text',
       
   157         'not null' => TRUE,
       
   158         'description' => 'The parent website of the feed; comes from the <link> element in the feed.',
       
   159       ),
       
   160       'description' => array(
       
   161         'type' => 'text',
       
   162         'not null' => TRUE,
       
   163         'size' => 'big',
       
   164         'description' => "The parent website's description; comes from the <description> element in the feed.",
       
   165       ),
       
   166       'image' => array(
       
   167         'type' => 'text',
       
   168         'not null' => TRUE,
       
   169         'size' => 'big',
       
   170         'description' => 'An image representing the feed.',
       
   171       ),
       
   172       'hash' => array(
       
   173         'type' => 'varchar',
       
   174         'length' => 64,
       
   175         'not null' => TRUE,
       
   176         'default' => '',
       
   177         'description' => 'Calculated hash of the feed data, used for validating cache.',
       
   178       ),
       
   179       'etag' => array(
       
   180         'type' => 'varchar',
       
   181         'length' => 255,
       
   182         'not null' => TRUE,
       
   183         'default' => '',
       
   184         'description' => 'Entity tag HTTP response header, used for validating cache.',
       
   185       ),
       
   186       'modified' => array(
       
   187         'type' => 'int',
       
   188         'not null' => TRUE,
       
   189         'default' => 0,
       
   190         'description' => 'When the feed was last modified, as a Unix timestamp.',
       
   191       ),
       
   192       'block' => array(
       
   193         'type' => 'int',
       
   194         'not null' => TRUE,
       
   195         'default' => 0,
       
   196         'size' => 'tiny',
       
   197         'description' => "Number of items to display in the feed's block.",
       
   198       )
       
   199     ),
       
   200     'primary key' => array('fid'),
       
   201     'indexes' => array(
       
   202       'url'  => array(array('url', 255)),
       
   203       'queued' => array('queued'),
       
   204     ),
       
   205     'unique keys' => array(
       
   206       'title' => array('title'),
       
   207     ),
       
   208   );
       
   209 
       
   210   $schema['aggregator_item'] = array(
       
   211     'description' => 'Stores the individual items imported from feeds.',
       
   212     'fields' => array(
       
   213       'iid'  => array(
       
   214         'type' => 'serial',
       
   215         'not null' => TRUE,
       
   216         'description' => 'Primary Key: Unique ID for feed item.',
       
   217       ),
       
   218       'fid' => array(
       
   219         'type' => 'int',
       
   220         'not null' => TRUE,
       
   221         'default' => 0,
       
   222         'description' => 'The {aggregator_feed}.fid to which this item belongs.',
       
   223       ),
       
   224       'title' => array(
       
   225         'type' => 'varchar',
       
   226         'length' => 255,
       
   227         'not null' => TRUE,
       
   228         'default' => '',
       
   229         'description' => 'Title of the feed item.',
       
   230       ),
       
   231       'link' => array(
       
   232         'type' => 'text',
       
   233         'not null' => TRUE,
       
   234         'description' => 'Link to the feed item.',
       
   235       ),
       
   236       'author' => array(
       
   237         'type' => 'varchar',
       
   238         'length' => 255,
       
   239         'not null' => TRUE,
       
   240         'default' => '',
       
   241         'description' => 'Author of the feed item.',
       
   242       ),
       
   243       'description' => array(
       
   244         'type' => 'text',
       
   245         'not null' => TRUE,
       
   246         'size' => 'big',
       
   247         'description' => 'Body of the feed item.',
       
   248       ),
       
   249       'timestamp' => array(
       
   250         'type' => 'int',
       
   251         'not null' => FALSE,
       
   252         'description' => 'Posted date of the feed item, as a Unix timestamp.',
       
   253       ),
       
   254       'guid' => array(
       
   255         'type' => 'text',
       
   256         'not null' => TRUE,
       
   257         'description' => 'Unique identifier for the feed item.',
       
   258       )
       
   259     ),
       
   260     'primary key' => array('iid'),
       
   261     'indexes' => array(
       
   262       'fid' => array('fid'),
       
   263       'timestamp' => array('timestamp'),
       
   264     ),
       
   265     'foreign keys' => array(
       
   266       'aggregator_feed' => array(
       
   267         'table' => 'aggregator_feed',
       
   268         'columns' => array('fid' => 'fid'),
       
   269       ),
       
   270     ),
       
   271   );
       
   272 
       
   273   return $schema;
       
   274 }
       
   275 
       
   276 /**
       
   277  * @addtogroup updates-6.x-to-7.x
       
   278  * @{
       
   279  */
       
   280 
       
   281 /**
       
   282  * Add hash column to aggregator_feed table.
       
   283  */
       
   284 function aggregator_update_7000() {
       
   285   db_add_field('aggregator_feed', 'hash', array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => ''));
       
   286 }
       
   287 
       
   288 /**
       
   289  * Add aggregator teaser length to settings from old global default teaser length
       
   290  */
       
   291 function aggregator_update_7001() {
       
   292   variable_set('aggregator_teaser_length', variable_get('teaser_length'));
       
   293 }
       
   294 
       
   295 /**
       
   296  * Add queued timestamp.
       
   297  */
       
   298 function aggregator_update_7002() {
       
   299   db_add_field('aggregator_feed', 'queued', array(
       
   300     'type' => 'int',
       
   301     'not null' => TRUE,
       
   302     'default' => 0,
       
   303     'description' => 'Time when this feed was queued for refresh, 0 if not queued.',
       
   304   ));
       
   305   db_add_index('aggregator_feed', 'queued', array('queued'));
       
   306 }
       
   307 
       
   308 /**
       
   309  * @} End of "addtogroup updates-6.x-to-7.x"
       
   310  */
       
   311 
       
   312 /**
       
   313  * @addtogroup updates-7.x-extra
       
   314  * @{
       
   315  */
       
   316 
       
   317 /**
       
   318  * Increase the length of {aggregator_feed}.url.
       
   319  */
       
   320 function aggregator_update_7003() {
       
   321   db_drop_unique_key('aggregator_feed', 'url');
       
   322   db_change_field('aggregator_feed', 'url', 'url', array('type' => 'text', 'not null' => TRUE, 'description' => 'URL to the feed.'));
       
   323   db_change_field('aggregator_feed', 'link', 'link', array('type' => 'text', 'not null' => TRUE, 'description' => 'The parent website of the feed; comes from the <link> element in the feed.'));
       
   324   db_change_field('aggregator_item', 'link', 'link', array('type' => 'text', 'not null' => TRUE, 'description' => 'Link to the feed item.'));
       
   325   db_change_field('aggregator_item', 'guid', 'guid', array('type' => 'text', 'not null' => TRUE, 'description' => 'Unique identifier for the feed item.'));
       
   326   db_add_index('aggregator_feed', 'url', array(array('url', 255)));
       
   327 }
       
   328 
       
   329 /**
       
   330  * Add index on timestamp.
       
   331  */
       
   332 function aggregator_update_7004() {
       
   333   if (!db_index_exists('aggregator_item', 'timestamp')) {
       
   334     db_add_index('aggregator_item', 'timestamp', array('timestamp'));
       
   335   }
       
   336 }
       
   337 
       
   338 /**
       
   339  * @} End of "addtogroup updates-7.x-extra"
       
   340  */