annotate ad.install @ 6:b7653861e0b4 ad

nettoyage modules filefield, ad, panels
author piotre
date Thu, 28 May 2009 14:53:07 +0000
parents e5584a19768b
children
rev   line source
pierre@0 1 <?php
sly@2 2 // $Id: ad.install,v 1.2.2.4.2.27.2.7.2.4 2009/04/03 17:01:02 jeremy Exp $
pierre@0 3
pierre@0 4 /**
pierre@0 5 * @file
pierre@0 6 * Advertisement module database schema.
pierre@0 7 *
pierre@0 8 * Copyright (c) 2005-2009.
pierre@0 9 * Jeremy Andrews <jeremy@tag1consulting.com>.
pierre@0 10 */
pierre@0 11
pierre@0 12 /**
pierre@0 13 * Ad module database schema.
pierre@0 14 */
pierre@0 15 function ad_schema() {
pierre@0 16 /**
pierre@0 17 * The ad table stores administrative information about each ad. The
pierre@0 18 * actual ad itself can be found in the appropriate ad type table.
pierre@0 19 */
pierre@0 20 $schema['ads'] = array(
pierre@0 21 'description' => 'The ad table stores administrative information about each ad. The actual ad itself can be found in the appropriate ad type table.',
pierre@0 22 'fields' => array(
pierre@0 23 'aid' => array(
pierre@0 24 'type' => 'int',
pierre@0 25 'not null' => TRUE,
pierre@0 26 'unsigned' => TRUE,
pierre@0 27 'default' => 0,
pierre@0 28 'description' => 'Unique ad ID. Equals to ad nid.',
pierre@0 29 ),
pierre@0 30 'uid' => array(
pierre@0 31 'type' => 'int',
pierre@0 32 'not null' => TRUE,
pierre@0 33 'unsigned' => TRUE,
pierre@0 34 'default' => 0,
pierre@0 35 'description' => 'The {users}.uid that owns this node; initially, this is the user that created it.',
pierre@0 36 ),
pierre@0 37 'adstatus' => array(
pierre@0 38 'type' => 'varchar',
pierre@0 39 'length' => 255,
pierre@0 40 'not null' => TRUE,
pierre@0 41 'default' => '',
pierre@0 42 'description' => 'Ad status',
pierre@0 43 ),
pierre@0 44 'adtype' => array(
pierre@0 45 'type' => 'varchar',
pierre@0 46 'length' => 255,
pierre@0 47 'not null' => TRUE,
pierre@0 48 'default' => '',
pierre@0 49 'description' => 'Ad type',
pierre@0 50 ),
pierre@0 51 'redirect' => array(
pierre@0 52 'type' => 'varchar',
pierre@0 53 'length' => 255,
pierre@0 54 'not null' => TRUE,
pierre@0 55 'default' => '',
pierre@0 56 'description' => 'Ad redirect URL',
pierre@0 57 ),
pierre@0 58 'autoactivate' => array(
pierre@0 59 'type' => 'int',
pierre@0 60 'not null' => TRUE,
pierre@0 61 'unsigned' => TRUE,
pierre@0 62 'default' => 0,
pierre@0 63 'description' => 'Is ad autoactivating?',
pierre@0 64 ),
pierre@0 65 'autoactivated' => array(
pierre@0 66 'type' => 'int',
pierre@0 67 'not null' => TRUE,
pierre@0 68 'unsigned' => TRUE,
pierre@0 69 'default' => 0,
pierre@0 70 'description' => 'Is ad autoactivated?',
pierre@0 71 ),
pierre@0 72 'autoexpire' => array(
pierre@0 73 'type' => 'int',
pierre@0 74 'not null' => TRUE,
pierre@0 75 'unsigned' => TRUE,
pierre@0 76 'default' => 0,
pierre@0 77 'description' => 'Is ad autoexpiring?',
pierre@0 78 ),
pierre@0 79 'autoexpired' => array(
pierre@0 80 'type' => 'int',
pierre@0 81 'not null' => TRUE,
pierre@0 82 'unsigned' => TRUE,
pierre@0 83 'default' => 0,
pierre@0 84 'description' => 'Is ad autoexpired?',
pierre@0 85 ),
pierre@0 86 'activated' => array(
pierre@0 87 'type' => 'int',
pierre@0 88 'not null' => TRUE,
pierre@0 89 'unsigned' => TRUE,
pierre@0 90 'default' => 0,
pierre@0 91 'description' => 'Is ad activated?',
pierre@0 92 ),
pierre@0 93 'maxviews' => array(
pierre@0 94 'type' => 'int',
pierre@0 95 'not null' => TRUE,
pierre@0 96 'unsigned' => TRUE,
pierre@0 97 'default' => 0,
pierre@0 98 'description' => 'Maximum ad impressions',
pierre@0 99 ),
pierre@0 100 'maxclicks' => array(
pierre@0 101 'type' => 'int',
pierre@0 102 'not null' => TRUE,
pierre@0 103 'unsigned' => TRUE,
pierre@0 104 'default' => 0,
pierre@0 105 'description' => 'Maximum ad clicks',
pierre@0 106 ),
pierre@0 107 'expired' => array(
pierre@0 108 'type' => 'int',
pierre@0 109 'not null' => TRUE,
pierre@0 110 'unsigned' => TRUE,
pierre@0 111 'default' => 0,
pierre@0 112 'description' => 'Is ad expired?',
pierre@0 113 ),
pierre@0 114 ),
pierre@0 115 'primary key' => array('aid'),
pierre@0 116 'indexes' => array(
pierre@0 117 'uid' => array('uid'),
pierre@0 118 'autoactivate' => array('autoactivate'),
pierre@0 119 'autoactivate' => array('autoactivate'),
pierre@0 120 ),
pierre@0 121 );
pierre@0 122
pierre@0 123 /**
pierre@0 124 * This table counts each time a given action occurs on an ad. Actions
pierre@0 125 * include when the ad is viewed, clicked, enabled and disabled.
pierre@0 126 * Statistics are collected at an hourly granularity.
pierre@0 127 *
pierre@0 128 * The source column is used for tracking statistics for externally
pierre@0 129 * hosted ads.
pierre@0 130 *
pierre@0 131 * Actions:
pierre@0 132 * 'view', 'click', 'enable', 'disable'
pierre@0 133 */
pierre@0 134 $schema['ad_statistics'] = array(
pierre@0 135 'description' => 'Stores ad statistics.',
pierre@0 136 'fields' => array(
pierre@0 137 'sid' => array(
pierre@0 138 'type' => 'serial',
pierre@0 139 'not null' => TRUE,
pierre@0 140 'unsigned' => TRUE,
pierre@0 141 'description' => 'Statistics entry ID.',
pierre@0 142 ),
pierre@0 143 'aid' => array(
pierre@0 144 'type' => 'int',
pierre@0 145 'not null' => TRUE,
pierre@0 146 'unsigned' => TRUE,
pierre@0 147 'default' => 0,
pierre@0 148 'description' => 'Ad id.',
pierre@0 149 ),
pierre@0 150 'date' => array(
pierre@0 151 'type' => 'int',
pierre@0 152 'not null' => TRUE,
pierre@0 153 'unsigned' => TRUE,
pierre@0 154 'default' => 0,
pierre@0 155 'description' => 'Date when action was made.',
pierre@0 156 ),
pierre@0 157 'action' => array(
pierre@0 158 'type' => 'varchar',
pierre@0 159 'length' => 255,
pierre@0 160 'not null' => TRUE,
pierre@0 161 'default' => '',
pierre@0 162 'description' => 'Actions: "view", "click", "enable", "disable".',
pierre@0 163 ),
pierre@0 164 'adgroup' => array(
pierre@0 165 'type' => 'varchar',
pierre@0 166 'length' => 255,
pierre@0 167 'not null' => FALSE,
pierre@0 168 'default' => '',
pierre@0 169 'description' => 'Ad group.',
pierre@0 170 ),
pierre@0 171 'hostid' => array(
pierre@0 172 'type' => 'varchar',
pierre@0 173 'length' => 32,
pierre@0 174 'not null' => TRUE,
pierre@0 175 'default' => '',
pierre@0 176 'description' => 'Host from which acion was made.',
pierre@0 177 ),
pierre@0 178 'count' => array(
pierre@0 179 'type' => 'int',
pierre@0 180 'not null' => TRUE,
pierre@0 181 'unsigned' => TRUE,
pierre@0 182 'default' => 0,
pierre@0 183 'description' => 'Count of actions triggered.',
pierre@0 184 ),
sly@2 185 'extra' => array(
sly@2 186 'type' => 'varchar',
sly@2 187 'length' => 255,
sly@2 188 'not null' => TRUE,
sly@2 189 'default' => '',
sly@2 190 'description' => 'Alow add-on modules to provide additional statistics granularity.',
sly@2 191 ),
pierre@0 192 ),
pierre@0 193 'primary key' => array('sid'),
pierre@0 194 'indexes' => array(
pierre@0 195 'aid' => array('aid'),
pierre@0 196 'date' => array('date'),
pierre@0 197 'action' => array('action'),
pierre@0 198 'adgroup' => array('adgroup'),
pierre@0 199 'hostid' => array('hostid'),
sly@2 200 'extra' => array('extra'),
pierre@0 201 ),
pierre@0 202 );
pierre@0 203
pierre@0 204 /**
pierre@0 205 * The ad_clicks table tracks when a given advertisement was clicked,
pierre@0 206 * who clicked it (uid if any and IP address), and what page they were
pierre@0 207 * on when they clicked it.
pierre@0 208 */
pierre@0 209 $schema['ad_clicks'] = array(
pierre@0 210 '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.',
pierre@0 211 'fields' => array(
pierre@0 212 'cid' => array(
pierre@0 213 'type' => 'serial',
pierre@0 214 'not null' => TRUE,
pierre@0 215 'unsigned' => TRUE,
pierre@0 216 'description' => 'Statistics entry ID.',
pierre@0 217 ),
pierre@0 218 'aid' => array(
pierre@0 219 'type' => 'int',
pierre@0 220 'not null' => TRUE,
pierre@0 221 'unsigned' => TRUE,
pierre@0 222 'default' => 0,
pierre@0 223 'description' => 'Ad id.',
pierre@0 224 ),
pierre@0 225 'uid' => array(
pierre@0 226 'type' => 'int',
pierre@0 227 'not null' => TRUE,
pierre@0 228 'unsigned' => TRUE,
pierre@0 229 'default' => 0,
pierre@0 230 'description' => '',
pierre@0 231 ),
pierre@0 232 'status' => array(
pierre@0 233 'type' => 'int',
pierre@0 234 'size' => 'tiny',
pierre@0 235 'not null' => TRUE,
pierre@0 236 'unsigned' => TRUE,
pierre@0 237 'default' => 0,
pierre@0 238 'description' => '',
pierre@0 239 ),
pierre@0 240 'hostname' => array(
pierre@0 241 'type' => 'varchar',
pierre@0 242 'length' => 128,
pierre@0 243 'not null' => TRUE,
pierre@0 244 'default' => '',
pierre@0 245 'description' => 'Host from which acion was made.',
pierre@0 246 ),
pierre@0 247 'user_agent' => array(
pierre@0 248 'type' => 'varchar',
pierre@0 249 'length' => 255,
pierre@0 250 'not null' => TRUE,
pierre@0 251 'default' => '',
pierre@0 252 'description' => 'Clicker\'s browser agent.',
pierre@0 253 ),
pierre@0 254 'adgroup' => array(
pierre@0 255 'type' => 'varchar',
pierre@0 256 'length' => 255,
pierre@0 257 'not null' => TRUE,
pierre@0 258 'default' => '',
pierre@0 259 'description' => 'Ad group.',
pierre@0 260 ),
pierre@0 261 'hostid' => array(
pierre@0 262 'type' => 'varchar',
pierre@0 263 'length' => 32,
pierre@0 264 'not null' => TRUE,
pierre@0 265 'default' => '',
pierre@0 266 'description' => 'Host from which acion was made.',
pierre@0 267 ),
pierre@0 268 'url' => array(
pierre@0 269 'type' => 'varchar',
pierre@0 270 'length' => 255,
pierre@0 271 'not null' => FALSE,
pierre@0 272 'default' => '',
pierre@0 273 'description' => 'Clicked URL.',
pierre@0 274 ),
pierre@0 275 'timestamp' => array(
pierre@0 276 'type' => 'int',
pierre@0 277 'not null' => TRUE,
pierre@0 278 'unsigned' => TRUE,
pierre@0 279 'default' => 0,
pierre@0 280 'description' => 'Date when action was made.',
pierre@0 281 ),
sly@2 282 'extra' => array(
sly@2 283 'type' => 'varchar',
sly@2 284 'length' => 255,
sly@2 285 'not null' => TRUE,
sly@2 286 'default' => '',
sly@2 287 'description' => 'Alow add-on modules to provide additional statistics granularity.',
sly@2 288 ),
pierre@0 289 ),
pierre@0 290 'primary key' => array('cid'),
pierre@0 291 'indexes' => array(
pierre@0 292 'aid' => array('aid'),
pierre@0 293 'status' => array('status'),
pierre@0 294 'hostname' => array('hostname'),
pierre@0 295 'user_agent' => array('user_agent'),
pierre@0 296 'adgroup' => array('adgroup'),
pierre@0 297 'hostid' => array('hostid'),
pierre@0 298 'url' => array('url'),
sly@2 299 'extra' => array('extra'),
pierre@0 300 ),
pierre@0 301 );
pierre@0 302
pierre@0 303 return $schema;
pierre@0 304 }
pierre@0 305
pierre@0 306 /**
pierre@0 307 * Ad module installation.
pierre@0 308 */
pierre@0 309 function ad_install() {
pierre@0 310 // Create tables.
pierre@0 311 drupal_install_schema('ad');
pierre@0 312 }
pierre@0 313
pierre@0 314 /**
pierre@0 315 * Allow complete uninstallation of the ad module.
pierre@0 316 */
pierre@0 317 function ad_uninstall() {
pierre@0 318 // Delete all ad content.
pierre@0 319 $result = db_query("SELECT nid FROM {node} WHERE type = 'ad'");
pierre@0 320 while ($node = db_fetch_object($result)) {
pierre@0 321 node_delete($node->nid);
pierre@0 322 variable_del("ad_autoactivate_warning_$node->nid");
pierre@0 323 }
pierre@0 324
pierre@0 325 // Delete all remaining ad module variables.
pierre@0 326 $variables = array('ad_cron_timestamp', 'ad_link_target', 'ad_cache', 'ad_cache_file', 'adserve', 'ad_group_vid', 'ad_groups', 'ad_validate_url', 'ad_display');
pierre@0 327 foreach ($variables as $variable) {
pierre@0 328 variable_del($variable);
pierre@0 329 }
pierre@0 330 db_query("DELETE FROM {variable} WHERE name LIKE 'ad_block_quantity_%'");
pierre@1 331
pierre@1 332 // Remove tables.
pierre@1 333 drupal_uninstall_schema('ad');
pierre@0 334 }
pierre@0 335
pierre@0 336 /**
pierre@0 337 * Convert some things from absolete dev. schema to new schema API
pierre@0 338 */
pierre@0 339 function ad_update_6001() {
pierre@0 340 $ret = array();
pierre@0 341 // When we touching index columns, we should first remove it from schema
pierre@0 342 db_drop_index($ret, 'ad_clicks', 'status');
pierre@0 343 db_change_field($ret, 'ad_clicks', 'status', 'status',
pierre@0 344 array(
pierre@0 345 'type' => 'int',
pierre@0 346 'size' => 'tiny',
pierre@0 347 'not null' => TRUE,
pierre@0 348 'unsigned' => TRUE,
pierre@0 349 'default' => 0,
pierre@0 350 'description' => '',
pierre@0 351 ),
pierre@0 352 array('indexes' => array(
pierre@0 353 'status' => array('status'),
pierre@0 354 ),
pierre@0 355 )
pierre@0 356 );
pierre@0 357 db_drop_index($ret, 'ad_hosts', 'status');
pierre@0 358 db_change_field($ret, 'ad_hosts', 'status', 'status',
pierre@0 359 array(
pierre@0 360 'type' => 'int',
pierre@0 361 'size' => 'tiny',
pierre@0 362 'not null' => TRUE,
pierre@0 363 'unsigned' => TRUE,
pierre@0 364 'default' => 0,
pierre@0 365 'description' => '',
pierre@0 366 ),
pierre@0 367 array('indexes' => array(
pierre@0 368 'status' => array('status'),
pierre@0 369 ),
pierre@0 370 )
pierre@0 371 );
pierre@0 372
pierre@0 373 db_drop_index($ret, 'ad_statistics', 'hostid');
pierre@0 374 db_change_field($ret, 'ad_statistics', 'hostid', 'hostid',
pierre@0 375 array(
pierre@0 376 'type' => 'varchar',
pierre@0 377 'length' => 32,
pierre@0 378 'not null' => TRUE,
pierre@0 379 'default' => '',
pierre@0 380 'description' => 'Host from which acion was made.',
pierre@0 381 ),
pierre@0 382 array('indexes' => array(
pierre@0 383 'hostid' => array('hostid'),
pierre@0 384 ),
pierre@0 385 )
pierre@0 386 );
pierre@0 387
pierre@0 388 db_drop_index($ret, 'ad_hosts', 'hostid');
pierre@0 389 db_change_field($ret, 'ad_hosts', 'hostid', 'hostid',
pierre@0 390 array(
pierre@0 391 'type' => 'varchar',
pierre@0 392 'length' => 32,
pierre@0 393 'not null' => TRUE,
pierre@0 394 'default' => '',
pierre@0 395 'description' => 'Host from which acion was made.',
pierre@0 396 ),
pierre@0 397 array('indexes' => array(
pierre@0 398 'hostid' => array('hostid'),
pierre@0 399 ),
pierre@0 400 )
pierre@0 401 );
pierre@0 402 return $ret;
pierre@0 403 }
pierre@0 404
pierre@0 405 /**
pierre@0 406 * Rebuild menu for anyone using the ad_embed module.
pierre@0 407 */
pierre@0 408 function ad_update_6002() {
pierre@0 409 menu_rebuild();
pierre@0 410 return array();
pierre@0 411 }
pierre@0 412
pierre@0 413 /**
pierre@0 414 * Flush all caches for new themeable ad display functions.
pierre@0 415 */
pierre@0 416 function ad_update_6003() {
pierre@0 417 drupal_flush_all_caches();
pierre@0 418 return array();
pierre@0 419 }
pierre@1 420
pierre@1 421 /**
pierre@1 422 * Introduce "extra" field for ad statistics and clicks, optionally allowing
pierre@1 423 * add-on modules to provide additional granularity.
pierre@1 424 */
pierre@1 425 function ad_update_6004() {
pierre@1 426 $ret = array();
pierre@1 427 db_add_field($ret, 'ad_statistics', 'extra',
pierre@1 428 array(
pierre@1 429 'type' => 'varchar',
pierre@1 430 'length' => 255,
pierre@1 431 'not null' => TRUE,
pierre@1 432 'default' => '',
pierre@1 433 'description' => 'Alow add-on modules to provide additional statistics granularity.',
pierre@1 434 ),
pierre@1 435 array('indexes' => array(
pierre@1 436 'extra' => array('extra'))
pierre@1 437 ));
pierre@1 438 db_add_field($ret, 'ad_clicks', 'extra',
pierre@1 439 array(
pierre@1 440 'type' => 'varchar',
pierre@1 441 'length' => 255,
pierre@1 442 'not null' => TRUE,
pierre@1 443 'default' => '',
pierre@1 444 'description' => 'Alow add-on modules to provide additional statistics granularity.',
pierre@1 445 ),
pierre@1 446 array('indexes' => array(
pierre@1 447 'extra' => array('extra'))
pierre@1 448 ));
pierre@1 449 return $ret;
pierre@1 450 }
pierre@1 451
pierre@1 452 /**
pierre@1 453 * Flush all caches for AHAH ad type switcher to work.
pierre@1 454 */
pierre@1 455 function ad_update_6005() {
pierre@1 456 drupal_flush_all_caches();
pierre@1 457 return array();
pierre@1 458 }
pierre@1 459