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