diff ad.install @ 0:d8a3998dac8e ad

ajout module ad
author pierre
date Fri, 20 Feb 2009 14:04:09 +0000
parents
children 948362c2a207
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ad.install	Fri Feb 20 14:04:09 2009 +0000
@@ -0,0 +1,445 @@
+<?php
+// $Id: ad.install,v 1.2.2.4.2.27.2.7 2009/02/17 18:56:25 jeremy Exp $
+
+/**
+ * @file
+ * Advertisement module database schema.
+ *
+ * Copyright (c) 2005-2009.
+ *   Jeremy Andrews <jeremy@tag1consulting.com>.
+ */
+
+/**
+ * Ad module database schema.
+ */
+function ad_schema() {
+ /**
+  * The ad table stores administrative information about each ad.  The
+  * actual ad itself can be found in the appropriate ad type table.
+  */
+  $schema['ads'] = array(
+    'description' => 'The ad table stores administrative information about each ad.  The actual ad itself can be found in the appropriate ad type table.',
+    'fields' => array(
+      'aid' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => 'Unique ad ID. Equals to ad nid.',
+      ),
+      'uid' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => 'The {users}.uid that owns this node; initially, this is the user that created it.',
+      ),
+      'adstatus' => array(
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => '',
+        'description' => 'Ad status',
+      ),
+      'adtype' => array(
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => '',
+        'description' => 'Ad type',
+      ),
+      'redirect' => array(
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => '',
+        'description' => 'Ad redirect URL',
+      ),
+      'autoactivate' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => 'Is ad autoactivating?',
+      ),
+      'autoactivated' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => 'Is ad autoactivated?',
+      ),
+      'autoexpire' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => 'Is ad autoexpiring?',
+      ),
+      'autoexpired' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => 'Is ad autoexpired?',
+      ),
+      'activated' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => 'Is ad activated?',
+      ),
+      'maxviews' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => 'Maximum ad impressions',
+      ),
+      'maxclicks' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => 'Maximum ad clicks',
+      ),
+      'expired' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => 'Is ad expired?',
+      ),
+    ),
+    'primary key' => array('aid'),
+    'indexes' => array(
+      'uid' => array('uid'),
+      'autoactivate' => array('autoactivate'),
+      'autoactivate' => array('autoactivate'),
+    ),
+  );
+
+ /**
+  * This table counts each time a given action occurs on an ad.  Actions
+  * include when the ad is viewed, clicked, enabled and disabled.
+  * Statistics are collected at an hourly granularity.
+  *
+  * The source column is used for tracking statistics for externally
+  * hosted ads.
+  *
+  * Actions:
+  *  'view', 'click', 'enable', 'disable'
+  */
+  $schema['ad_statistics'] = array(
+    'description' => 'Stores ad statistics.',
+    'fields' => array(
+      'sid' => array(
+        'type' => 'serial',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'description' => 'Statistics entry ID.',
+      ),
+      'aid' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => 'Ad id.',
+      ),
+      'date' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => 'Date when action was made.',
+      ),
+      'action' => array(
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => '',
+        'description' => 'Actions: "view", "click", "enable", "disable".',
+      ),
+      'adgroup' => array(
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => FALSE,
+        'default' => '',
+        'description' => 'Ad group.',
+      ),
+      'hostid' => array(
+        'type' => 'varchar',
+        'length' => 32,
+        'not null' => TRUE,
+        'default' => '',
+        'description' => 'Host from which acion was made.',
+      ),
+      'count' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => 'Count of actions triggered.',
+      ),
+    ),
+    'primary key' => array('sid'),
+    'indexes' => array(
+      'aid' => array('aid'),
+      'date' => array('date'),
+      'action' => array('action'),
+      'adgroup' => array('adgroup'),
+      'hostid' => array('hostid'),
+    ),
+  );
+
+ /**
+  * The ad_clicks table tracks when a given advertisement was clicked,
+  * who clicked it (uid if any and IP address), and what page they were
+  * on when they clicked it.
+  */
+  $schema['ad_clicks'] = array(
+    'description' => 'The ad_clicks table tracks when a given advertisement was clicked, who clicked it (uid if any and IP address), and what page they were on when they clicked it.',
+    'fields' => array(
+      'cid' => array(
+        'type' => 'serial',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'description' => 'Statistics entry ID.',
+      ),
+      'aid' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => 'Ad id.',
+      ),
+      'uid' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => '',
+      ),
+      'status' => array(
+        'type' => 'int',
+        'size' => 'tiny',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => '',
+      ),
+      'hostname' => array(
+        'type' => 'varchar',
+        'length' => 128,
+        'not null' => TRUE,
+        'default' => '',
+        'description' => 'Host from which acion was made.',
+      ),
+      'user_agent' => array(
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => '',
+        'description' => 'Clicker\'s browser agent.',
+      ),
+      'adgroup' => array(
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => '',
+        'description' => 'Ad group.',
+      ),
+      'hostid' => array(
+        'type' => 'varchar',
+        'length' => 32,
+        'not null' => TRUE,
+        'default' => '',
+        'description' => 'Host from which acion was made.',
+      ),
+      'url' => array(
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => FALSE,
+        'default' => '',
+        'description' => 'Clicked URL.',
+      ),
+      'timestamp' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => 'Date when action was made.',
+      ),
+    ),
+    'primary key' => array('cid'),
+    'indexes' => array(
+      'aid' => array('aid'),
+      'status' => array('status'),
+      'hostname' => array('hostname'),
+      'user_agent' => array('user_agent'),
+      'adgroup' => array('adgroup'),
+      'hostid' => array('hostid'),
+      'url' => array('url'),
+    ),
+  );
+
+ /**
+  * The ad_hosts table is used to configure users that can display ads
+  * remotely.
+  */
+  $schema['ad_hosts'] = array(
+    'description' => 'The ad_hosts table is used to configure users that can display ads remotely. ',
+    'fields' => array(
+      'uid' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => '',
+      ),
+      'hostid' => array(
+        'type' => 'varchar',
+        'length' => 32,
+        'not null' => TRUE,
+        'default' => '',
+        'description' => 'Host from which acion was made.',
+      ),
+      'status' => array(
+        'type' => 'int',
+        'size' => 'tiny',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => '',
+      ),
+      'description' => array(
+        'type' => 'text',
+        'not null' => FALSE,
+        'description' => 'Host from which acion was made.',
+      ),
+    ),
+    'primary key' => array('uid'),
+    'indexes' => array(
+      'status' => array('status'),
+      'hostid' => array('hostid'),
+    ),
+  );
+
+  return $schema;
+}
+
+/**
+ * Ad module installation.
+ */
+function ad_install() {
+  // Create tables.
+  drupal_install_schema('ad');
+}
+
+/**
+ * Allow complete uninstallation of the ad module.
+ */
+function ad_uninstall() {
+  // Remove tables.
+  drupal_uninstall_schema('ad');
+
+  // Delete all ad content.
+  $result = db_query("SELECT nid FROM {node} WHERE type = 'ad'");
+  while ($node = db_fetch_object($result)) {
+    node_delete($node->nid);
+    variable_del("ad_autoactivate_warning_$node->nid");
+  }
+
+  // Delete all remaining ad module variables.
+  $variables = array('ad_cron_timestamp', 'ad_link_target', 'ad_cache', 'ad_cache_file', 'adserve', 'ad_group_vid', 'ad_groups', 'ad_validate_url', 'ad_display');
+  foreach ($variables as $variable) {
+    variable_del($variable);
+  }
+  db_query("DELETE FROM {variable} WHERE name LIKE 'ad_block_quantity_%'");
+}
+
+/**
+ * Convert some things from absolete dev. schema to new schema API
+ */
+function ad_update_6001() {
+  $ret = array();
+  // When we touching index columns, we should first remove it from schema
+  db_drop_index($ret, 'ad_clicks', 'status');
+  db_change_field($ret, 'ad_clicks', 'status', 'status',
+      array(
+        'type' => 'int',
+        'size' => 'tiny',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => '',
+      ),
+      array('indexes' => array(
+        'status' => array('status'),
+      ),
+    )
+  );
+  db_drop_index($ret, 'ad_hosts', 'status');
+  db_change_field($ret, 'ad_hosts', 'status', 'status',
+      array(
+        'type' => 'int',
+        'size' => 'tiny',
+        'not null' => TRUE,
+        'unsigned' => TRUE,
+        'default' => 0,
+        'description' => '',
+      ),
+      array('indexes' => array(
+        'status' => array('status'),
+      ),
+    )
+  );
+
+  db_drop_index($ret, 'ad_statistics', 'hostid');
+  db_change_field($ret, 'ad_statistics', 'hostid', 'hostid',
+      array(
+        'type' => 'varchar',
+        'length' => 32,
+        'not null' => TRUE,
+        'default' => '',
+        'description' => 'Host from which acion was made.',
+      ),
+      array('indexes' => array(
+        'hostid' => array('hostid'),
+      ),
+    )
+  );
+
+  db_drop_index($ret, 'ad_hosts', 'hostid');
+  db_change_field($ret, 'ad_hosts', 'hostid', 'hostid',
+      array(
+        'type' => 'varchar',
+        'length' => 32,
+        'not null' => TRUE,
+        'default' => '',
+        'description' => 'Host from which acion was made.',
+      ),
+      array('indexes' => array(
+        'hostid' => array('hostid'),
+      ),
+    )
+  );
+  return $ret;
+}
+
+/**
+ * Rebuild menu for anyone using the ad_embed module.
+ */
+function ad_update_6002() {
+  menu_rebuild();
+  return array();
+}
+
+/**
+ * Flush all caches for new themeable ad display functions.
+ */
+function ad_update_6003() {
+  drupal_flush_all_caches();
+  return array();
+}