Mercurial > defr > drupal > ad
comparison ad.admin.inc @ 1:948362c2a207 ad
update advertisement
| author | pierre |
|---|---|
| date | Thu, 02 Apr 2009 15:28:21 +0000 |
| parents | d8a3998dac8e |
| children | 416ea999ed76 |
comparison
equal
deleted
inserted
replaced
| 0:d8a3998dac8e | 1:948362c2a207 |
|---|---|
| 1 <?php | 1 <?php |
| 2 // $Id: ad.admin.inc,v 1.1.2.9 2009/02/17 19:22:45 jeremy Exp $ | 2 // $Id: ad.admin.inc,v 1.1.2.9.2.2 2009/03/02 07:31:23 jeremy Exp $ |
| 3 | 3 |
| 4 /** | 4 /** |
| 5 * @file | 5 * @file |
| 6 * Advertisement admin pages and functions. | 6 * Advertisement admin pages and functions. |
| 7 * | 7 * |
| 87 'offline' => array( | 87 'offline' => array( |
| 88 'label' => t('Mark as offline'), | 88 'label' => t('Mark as offline'), |
| 89 'callback' => 'ad_operations_callback', | 89 'callback' => 'ad_operations_callback', |
| 90 'callback arguments' => array('offline'), | 90 'callback arguments' => array('offline'), |
| 91 ), | 91 ), |
| 92 'unpublished' => array( | |
| 93 'label' => t('Mark as unpublished'), | |
| 94 'callback' => 'ad_operations_callback', | |
| 95 'callback arguments' => array('unpublished'), | |
| 96 ), | |
| 97 'denied' => array( | 92 'denied' => array( |
| 98 'label' => t('Mark as denied'), | 93 'label' => t('Mark as denied'), |
| 99 'callback' => 'ad_operations_callback', | 94 'callback' => 'ad_operations_callback', |
| 100 'callback arguments' => array('denied'), | 95 'callback arguments' => array('denied'), |
| 101 ), | 96 ), |
| 232 $args = array($ads); | 227 $args = array($ads); |
| 233 } | 228 } |
| 234 call_user_func_array($function, $args); | 229 call_user_func_array($function, $args); |
| 235 | 230 |
| 236 cache_clear_all(); | 231 cache_clear_all(); |
| 232 ad_rebuild_cache(TRUE); | |
| 237 drupal_set_message(t('The update has been performed.')); | 233 drupal_set_message(t('The update has been performed.')); |
| 238 } | 234 } |
| 239 } | 235 } |
| 240 | 236 |
| 241 /** | 237 /** |
| 260 $where[] = "$table.tid = %d"; | 256 $where[] = "$table.tid = %d"; |
| 261 $join .= "INNER JOIN {term_node} $table ON n.nid = $table.nid "; | 257 $join .= "INNER JOIN {term_node} $table ON n.nid = $table.nid "; |
| 262 break; | 258 break; |
| 263 case 'type': | 259 case 'type': |
| 264 $where[] = "a.adtype = '%s'"; | 260 $where[] = "a.adtype = '%s'"; |
| 261 default: | |
| 262 $return = module_invoke_all('adapi', 'admin_filter_query', $filter); | |
| 263 foreach ($return as $module => $funcs) { | |
| 264 if (isset($funcs['where'])) { | |
| 265 $where[] = $funcs['where']; | |
| 266 } | |
| 267 if (isset($funcs['join'])) { | |
| 268 $join .= $funcs['join']; | |
| 269 } | |
| 270 if (isset($funcs['value'])) { | |
| 271 $value = $funcs['value']; | |
| 272 } | |
| 273 } | |
| 274 break; | |
| 265 } | 275 } |
| 266 $args[] = $value; | 276 $args[] = $value; |
| 267 } | 277 } |
| 268 $where = count($where) ? 'WHERE '. implode(' AND ', $where) : ''; | 278 $where = count($where) ? 'WHERE '. implode(' AND ', $where) : ''; |
| 269 | 279 |
| 281 $options = array( | 291 $options = array( |
| 282 'pending-1' => t('pending'), | 292 'pending-1' => t('pending'), |
| 283 'approved-1' => t('approved'), | 293 'approved-1' => t('approved'), |
| 284 'active-1' => t('active'), | 294 'active-1' => t('active'), |
| 285 'offline-1' => t('offline'), | 295 'offline-1' => t('offline'), |
| 286 'unpublished-1' => t('unpublished'), | |
| 287 'expired-1' => t('expired'), | 296 'expired-1' => t('expired'), |
| 288 'denied-1' => t('denied'), | 297 'denied-1' => t('denied'), |
| 289 'pending-0' => t('not pending'), | 298 'pending-0' => t('not pending'), |
| 290 'approved-0' => t('not approved'), | 299 'approved-0' => t('not approved'), |
| 291 'active-0' => t('not active'), | 300 'active-0' => t('not active'), |
| 292 'offline-0' => t('not offline'), | 301 'offline-0' => t('not offline'), |
| 293 'unpublished-0' => t('not unpublished'), | |
| 294 'expired-0' => t('not expired'), | 302 'expired-0' => t('not expired'), |
| 295 'denied-0' => t('not denied') | 303 'denied-0' => t('not denied') |
| 296 ); | 304 ); |
| 297 | 305 |
| 298 $filters['status'] = array( | 306 $filters['status'] = array( |
| 313 $options[$term->tid] = check_plain($term->name); | 321 $options[$term->tid] = check_plain($term->name); |
| 314 } | 322 } |
| 315 $filters['group'] = array('title' => t('group'), 'options' => $options); | 323 $filters['group'] = array('title' => t('group'), 'options' => $options); |
| 316 } | 324 } |
| 317 | 325 |
| 326 $filters = array_merge($filters, module_invoke_all('adapi', 'admin_filters', array())); | |
| 318 return $filters; | 327 return $filters; |
| 319 } | 328 } |
| 320 | 329 |
| 321 /** | 330 /** |
| 322 * Theme ad administration filter selector. | 331 * Theme ad administration filter selector. |
| 468 $_SESSION['ad_overview_filter'] = array(); | 477 $_SESSION['ad_overview_filter'] = array(); |
| 469 break; | 478 break; |
| 470 } | 479 } |
| 471 } | 480 } |
| 472 | 481 |
| 473 | |
| 474 /** | |
| 475 * | |
| 476 */ | |
| 477 function ad_admin_statistics($form_state) { | |
| 478 $groups = ad_groups_list(TRUE); | |
| 479 foreach ($groups as $tid => $group) { | |
| 480 if ($tid) { | |
| 481 $ads = db_result(db_query("SELECT count(aid) FROM {ads} a JOIN {term_node} t ON a.aid = t.nid WHERE t.tid = %d AND adstatus = 'active'", $tid)); | |
| 482 $filter = "= ". $tid; | |
| 483 } | |
| 484 else { | |
| 485 $ads = db_result(db_query("SELECT count(aid) FROM {ads} a LEFT JOIN {term_node} t ON a.aid = t.nid WHERE t.tid IS NULL AND adstatus = 'active'")); | |
| 486 $filter = "IS NULL"; | |
| 487 } | |
| 488 if (!$ads) { | |
| 489 continue; | |
| 490 } | |
| 491 | |
| 492 $form[$group->name] = array( | |
| 493 '#type' => 'fieldset', | |
| 494 '#title' => check_plain($group->name), | |
| 495 '#collapsible' => TRUE, | |
| 496 ); | |
| 497 | |
| 498 // Get overall global statistics. | |
| 499 $statistics['global']['views'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'view' AND n.tid %s", $filter)); | |
| 500 $statistics['global']['clicks'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'click' AND n.tid %s", $filter)); | |
| 501 | |
| 502 // Get overall statistics for this year and last year. | |
| 503 $this_year = date('Y000000'); | |
| 504 $last_year = date('Y') - 1 .'000000'; | |
| 505 $statistics['last_year']['views'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'view' AND date >= %d AND date <= %d AND n.tid %s", $last_year, $this_year, $filter)); | |
| 506 $statistics['last_year']['clicks'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'click' AND date >= %d AND date <= %d AND n.tid %s", $last_year, $this_year, $filter)); | |
| 507 $statistics['this_year']['views'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'view' AND date >= %d AND n.tid %s", $this_year, $filter)); | |
| 508 $statistics['this_year']['clicks'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'click' AND date >= %d AND n.tid %s", $this_year, $filter)); | |
| 509 | |
| 510 // Get statistics for this month and last month. | |
| 511 $this_month = date('Ym0000'); | |
| 512 $last_month = date('m') - 1; | |
| 513 if ($last_month == 0) { | |
| 514 $last_month = date('Y') - 1 .'120000'; | |
| 515 } | |
| 516 else { | |
| 517 $last_month = date('Y') . ($last_month < 10 ? '0' : '') . $last_month .'0000'; | |
| 518 } | |
| 519 $statistics['last_month']['views'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'view' AND date >= %d AND date <= %d AND n.tid %s", $last_month, $this_month, $filter)); | |
| 520 $statistics['last_month']['clicks'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'click' AND date >= %d AND date <= %d AND n.tid %s", $last_month, $this_month, $filter)); | |
| 521 $statistics['this_month']['views'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'view' AND date >= %d AND n.tid %s", $this_month, $filter)); | |
| 522 $statistics['this_month']['clicks'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'click' AND date >= %d AND n.tid %s", $this_month, $filter)); | |
| 523 | |
| 524 // Get statistics for this week. | |
| 525 $this_week_start = date('Ymd00', time() - 60*60*24*6); | |
| 526 $statistics['this_week']['views'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'view' AND date >= %d AND n.tid %s", $this_week_start, $filter)); | |
| 527 $statistics['this_week']['clicks'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'click' AND date >= %d AND n.tid %s", $this_week_start, $filter)); | |
| 528 | |
| 529 // Get statistics for yesterday and today. | |
| 530 $yesterday_start = date('Ymd00', time() - 60*60*24); | |
| 531 $yesterday_end = date('Ymd24', time() - 60*60*24); | |
| 532 $today_start = date('Ymd00', time()); | |
| 533 $statistics['yesterday']['views'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'view' AND date >= %d AND date <= %d AND n.tid %s", $yesterday_start, $yesterday_end, $filter)); | |
| 534 $statistics['yesterday']['clicks'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'click' AND date >= %d AND date <= %d AND n.tid %s", $yesterday_start, $yesterday_end, $filter)); | |
| 535 $statistics['today']['views'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'view' AND date >= %d AND n.tid %s", $today_start, $filter)); | |
| 536 $statistics['today']['clicks'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'click' AND date >= %d AND n.tid %s", $today_start, $filter)); | |
| 537 | |
| 538 // Get statistics for this hour and the last hour. | |
| 539 $last_hour = date('YmdH', time() - 60*60); | |
| 540 $this_hour = date('YmdH', time()); | |
| 541 $statistics['last_hour']['views'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'view' AND date = %d AND n.tid %s", $last_hour, $filter)); | |
| 542 $statistics['last_hour']['clicks'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'click' AND date = %d AND n.tid %s", $last_hour, $filter)); | |
| 543 $statistics['this_hour']['views'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'view' AND date = %d AND n.tid %s", $this_hour, $filter)); | |
| 544 $statistics['this_hour']['clicks'] = (int)db_result(db_query("SELECT SUM(s.count) FROM {ad_statistics} s LEFT JOIN {ads} a ON s.aid = a.aid LEFT JOIN {term_node} n ON a.aid = n.nid WHERE action = 'click' AND date = %d AND n.tid %s", $this_hour, $filter)); | |
| 545 | |
| 546 // TODO: Create this view and remove the && FALSE to enable this code. | |
| 547 if (module_exists('views') && FALSE) { | |
| 548 $form[$group->name]['statistics'] = array( | |
| 549 '#type' => 'markup', | |
| 550 '#value' => '<p>'. format_plural($ads, 'There is <a href="!url">1 active ad</a> in this group.', 'There are <a href="!url">%count</a> active ads in this group.', array('!url' => url('ad/'. $group->tid .'/group'))) .'</p>'. theme('ad_statistics_display', $statistics), | |
| 551 ); | |
| 552 } | |
| 553 else { | |
| 554 $form[$group->name]['statistics'] = array( | |
| 555 '#type' => 'markup', | |
| 556 '#value' => '<p>'. format_plural($ads, 'There is 1 active ad in this group.', 'There are @count active ads in this group.') .'</p>'. theme('ad_statistics_display', $statistics), | |
| 557 ); | |
| 558 } | |
| 559 } | |
| 560 | |
| 561 if (!isset($form) || count($form) == 0) { | |
| 562 $form['header'] = array( | |
| 563 '#type' => 'markup', | |
| 564 '#value' => '<p>'. t('There are no active ads.') .'</p>', | |
| 565 ); | |
| 566 } | |
| 567 | |
| 568 return $form; | |
| 569 } | |
| 570 | |
| 571 /** | 482 /** |
| 572 * Display a form for the ad module settings. | 483 * Display a form for the ad module settings. |
| 573 */ | 484 */ |
| 574 function ad_admin_configure_settings($form_state) { | 485 function ad_admin_configure_settings($form_state) { |
| 575 _ad_check_installation(); | 486 _ad_check_installation(); |
