<?php

/**
 * Implements HOOK_init().
 */
function diy_ads_preprocess_html() {
  if($ad_provider = diy_ads_get_ad_provider()) {
    if($ad_provider == 'dfp-at') {
      diy_ads_add_dfp_js('at');
    }

    if($ad_provider == 'dfp-de') {
      diy_ads_add_dfp_js('de');
      diy_ads_add_conative_script();
    }

    if($ad_provider == 'dfp-ch') {
      diy_ads_add_dfp_js('ch');
    }
  }
}

function diy_ads_dfp_get_country() {
  if($ad_provider = diy_ads_get_ad_provider()) {

    if($ad_provider == 'dfp-at') {
      return 'at';
    }

    if($ad_provider == 'dfp-de') {
      return 'de';
    }

    if($ad_provider == 'dfp-ch') {
      return 'ch';
    }
  }

  return false;
}

function diy_ads_get_ad_provider() {
  $current_domain = domain_get_domain();

  switch($current_domain['domain_id']) {
    case 4:
      return 'dfp-at';
      break;
    case 5:
      return 'dfp-de';
      break;
    case 3:
      return 'dfp-ch';
      break;
  }

  return false;
}


function diy_ads_render_dfp_placement($placement) {

  switch($placement) {
    case 'node-article-below-1':
    case 'node-werkzeug-below-1':
    case 'node-material-below-1':
    case 'node-video-below-1':
    case 'node-news-below-1':
      return diy_ads_dfp_slot_markup('ad_slot_3');
      break;

    case 'node-article-below-2':
    case 'node-werkzeug-below-2':
    case 'node-material-below-2':
    case 'node-video-below-2':
    case 'node-news-below-2':
      return diy_ads_dfp_slot_markup('ad_slot_4');
      break;

    case 'view-search-1':
      return diy_ads_dfp_slot_markup('ad_slot_3');
      break;

    case 'view-search-2':
      return diy_ads_dfp_slot_markup('ad_slot_4');
      break;

    case 'node-article-inside-steps':
      return diy_ads_dfp_slot_markup('ad_slot_0');
      break;
  }
}

/**
 * Called from a template or theme, renders specific block
 * Has to take care of domain and implementation
 */
function diy_ads_render_placement($placement) {
  if($ad_provider = diy_ads_get_ad_provider()) {

    if($ad_provider == 'dfp-de' || $ad_provider == 'dfp-ch' || $ad_provider == 'dfp-at') {
      return diy_ads_render_dfp_placement($placement);
    }
  }
}

/**
 * Adding a special script only for .de
 * @see
 */
function diy_ads_add_conative_script() {
  drupal_add_js('https://cdn.conative.de/serve/domain/168/config.js', array(
    'type' => 'file',
    'scope' => 'header',
    'force header' => TRUE
  ));
}

/**
 * Ads dfp JS dependant of country
 */
function diy_ads_add_dfp_js($country) {

  drupal_add_js('//storage.googleapis.com/adtags/diybook/QMAX_diybook.'. $country .'_async.js', array(
    'type' => 'file',
    'scope' => 'header',
    'force header' => TRUE
  ));

}


/**
 * Implements HOOK_block_info().
 */
function diy_ads_block_info() {
  $blocks = array();

  // we can use de here, there are the same tags
  $dfp_slot_infos = diy_ads_get_dfp_definitions('de');
  foreach($dfp_slot_infos as $slot_id => $dfp_slot_info) {
    $blocks['diy_ads_dfp_'. $slot_id] = array(
      'info' => t('DIY ADs DFP Block: !id', array('!id' => $dfp_slot_info['label'])),
    );
  }

  return $blocks;
}

/**
 * Implements HOOK_block_view().
 */
function diy_ads_block_view($delta = '') {
  $block = array();

  $dfp_slot_infos = diy_ads_get_dfp_definitions('de');
  foreach($dfp_slot_infos as $slot_id => $dfp_slot_info) {
    if($delta == 'diy_ads_dfp_'. $slot_id) {
      $block['content'] = diy_ads_dfp_slot_markup($slot_id);
    }
  }

  return $block;
}


/**
 * Returns markup for render slot
 *
 * @param $render_slot_id
 */
function diy_ads_dfp_slot_markup($render_slot_id) {
  $country = diy_ads_dfp_get_country();
  if($definition = diy_ads_get_dfp_definitions($country)) {
    $render_id = $definition[$render_slot_id]['id'];

    return theme('diy_ads_dfp_slot_markup', array('render_slot_id' => $render_id));
  }

  return array();
}

function diy_ads_get_dfp_definitions($country) {

  $definitions = array(
    'at' => array(
      'ad_slot_0' => array(
        'id' => 'div-gpt-ad-803614631840196416-oop',
        'label' => 'AdSlot 0 - Outstream'
      ),
      'ad_slot_1' => array(
        'id' => 'div-gpt-ad-803614631840196416-1',
        'path' => '/27763518/diybook_KG/diybook.at',
        'sizes' => '[[728,90],[800,250],[900,250]]',
        'label' => 'AdSlot 1 [728,90],[800,250],[900,250]'
      ),
      'ad_slot_2' => array(
        'id' => 'div-gpt-ad-803614631840196416-2',
        'path' => '/27763518/diybook_KG/diybook.at',
        'sizes' => '[[300,250],[300,600]]',
        'label' => 'AdSlot 2 [300,250],[300,600]'
      ),
      'ad_slot_3' => array(
        'id' => 'div-gpt-ad-803614631840196416-3',
        'path' => '/27763518/diybook_KG/diybook.at',
        'sizes' => '[[300,250]]',
        'label' => 'AdSlot 3 [300,250]'
      ),
      'ad_slot_4' => array(
        'id' => 'div-gpt-ad-803614631840196416-4',
        'path' => '/27763518/diybook_KG/diybook.at',
        'sizes' => '[[300,250]]',
        'label' => 'AdSlot 4 [300,250]'
      ),
      'ad_slot_5' => array(
        'id' => 'div-gpt-ad-535359300699220127-5',
        'path' => '/27763518/diybook_KG/diybook.at/bs_unten',
        'sizes' => '[[728,90],[800,250],[900,250]]',
        'label' => 'AdSlot 5 [728,90],[800,250],[900,250]'
      )
    ),
    'ch' => array(
      'ad_slot_0' => array(
        'id' => 'div-gpt-ad-364310162361713456-oop',
        'label' => 'AdSlot 0 - Outstream'
      ),
      'ad_slot_1' => array(
        'id' => 'div-gpt-ad-345404273008755016-1',
        'path' => '/27763518,35031065/diybook_KG/diybook.ch',
        'sizes' => '[[728,90],[800,250],[900,250]]',
        'label' => 'AdSlot 1 [728,90],[800,250],[900,250]'
      ),
      'ad_slot_2' => array(
        'id' => 'div-gpt-ad-345404273008755016-2',
        'path' => '/27763518,35031065/diybook_KG/diybook.ch',
        'sizes' => '[[300,250],[300,600]]',
        'label' => 'AdSlot 2 [300,250],[300,600]'
      ),
      'ad_slot_3' => array(
        'id' => 'div-gpt-ad-345404273008755016-3',
        'path' => '/27763518,35031065/diybook_KG/diybook.ch',
        'sizes' => '[[300,250]]',
        'label' => 'AdSlot 3 [300,250]'
      ),
      'ad_slot_4' => array(
        'id' => 'div-gpt-ad-345404273008755016-4',
        'path' => '/27763518,35031065/diybook_KG/diybook.ch',
        'sizes' => '[[300,250]]',
        'label' => 'AdSlot 4 [300,250]'
      ),
      'ad_slot_5' => array(
        'id' => 'div-gpt-ad-670216419742134883-5',
        'path' => '/27763518,35031065/diybook_KG/diybook.ch/bs_unten',
        'sizes' => '[[728,90],[800,250],[900,250]]',
        'label' => 'AdSlot 5 [728,90],[800,250],[900,250]'
      )
    ),
    'de' => array(
      'ad_slot_0' => array(
        'id' => 'div-gpt-ad-364310162361713456-oop',
        'label' => 'AdSlot 0 - Outstream'
      ),
      'ad_slot_1' => array(
        'id' => 'div-gpt-ad-803614631840196416-1',
        'path' => '/27763518,35031065/diybook_KG/diybook.de',
        'sizes' => '[[728,90],[800,250],[900,250]]',
        'label' => 'AdSlot 1 [728,90],[800,250],[900,250]'
      ),
      'ad_slot_2' => array(
        'id' => 'div-gpt-ad-803614631840196416-2',
        'path' => '/27763518,35031065/diybook_KG/diybook.de',
        'sizes' => '[[300,250],[300,600]]',
        'label' => 'AdSlot 2 [300,250],[300,600]'
      ),
      'ad_slot_3' => array(
        'id' => 'div-gpt-ad-803614631840196416-3',
        'path' => '/27763518,35031065/diybook_KG/diybook.de',
        'sizes' => '[[300,250]]',
        'label' => 'AdSlot 3 [300,250]'
      ),
      'ad_slot_4' => array(
        'id' => 'div-gpt-ad-803614631840196416-4',
        'path' => '/27763518,35031065/diybook_KG/diybook.de',
        'sizes' => '[[300,250]]',
        'label' => 'AdSlot 4 [300,250]'
      ),
      'ad_slot_5' => array(
        'id' => 'div-gpt-ad-535359300699220127-5',
        'path' => '/27763518,35031065/diybook_KG/diybook.de/bs_unten',
        'sizes' => '[[728,90],[800,250],[900,250]]',
        'label' => 'AdSlot 5 [728,90],[800,250],[900,250]'
      )
    )
  );

  if(isset($definitions[$country])) {
    return $definitions[$country];
  }

  return array();
}

/**
 * Implements HOOK_menu().
 */
function diy_ads_menu() {
  $items = array();

  $items['diy/ads/test'] = array(
    'title' => 'Test callback',
    'page callback' => 'diy_ads_test',
    'access callback' => TRUE,
  );

  return $items;
}

/*
 * Implement hook_theme().
 */
function diy_ads_theme(){
  return array(
    'diy_ads_test' => array(
      'template' => 'diy-ads-tester'
    ),
    'diy_ads_dfp_slot_markup' => array(
      'template' => 'diy-ads-dfp-slot-markup',
      'variables' => array(
        'render_slot_id' => NULL
      )
    )
  );
}

/**
 * Test page callback
 */
function diy_ads_test() {
  return theme('diy_ads_test');
}
