You are here

function ad_get_ads in Advertisement 7.3

Callback for the Ajax request to get ads.

1 call to ad_get_ads()
ad_serve.php in ./ad_serve.php
1 string reference to 'ad_get_ads'
ad_menu in ./ad.module
Implements hook_menu().

File

./ad.module, line 165
Core code for the ad module.

Code

function ad_get_ads() {
  $result = array();
  $page_unique_id = ad_uniqid('page');
  if (!empty($_POST['ads'])) {
    if (!empty($_POST['page'])) {
      $page_url = $_POST['page']['url'];
      $page_title = $_POST['page']['title'];
    }
    $uid = (int) $_POST['uid'];
    ad_session_start();
    foreach ($_POST['ads'] as $element_id => $data) {
      $view_name = $data['view'];
      $display = isset($data['display']) ? $data['display'] : 'default';

      // Be sure the view is specifically set for ads.
      if (ad_is_view_ad_enabled($view_name, $display)) {
        $view_arguments = array(
          $view_name,
          $display,
        );
        if (!empty($data['arguments'])) {
          $view_arguments = array_merge($view_arguments, explode('/', $data['arguments']));
        }
        $view_result = ad_get_cache('views_get_view_result', $view_arguments);

        // Finally, return a result.
        if (!empty($view_result)) {

          // Choose one.
          $random_id = $view_result[array_rand($view_result)]['nid'];
          $view_mode = ad_get_view_view_mode($view_name, $display);
          $rendered_ad = ad_get_rendered_node($random_id, $view_mode);

          // Track it.
          $impression_unique_id = ad_track_event('impression', $random_id, '', $page_url, $page_title, $page_unique_id, NULL, $uid);
          $rendered_ad = strtr($rendered_ad, array(
            AD_IMPRESSION_ID_PLACEHOLDER => $impression_unique_id,
          ));
          $result[$element_id] = array(
            'rendered_ad' => $rendered_ad,
          );
        }
      }
    }
  }
  drupal_json_output($result);
}