gpt_async.inc in DFP Small Business (Google Ad Manager) 6.3
File
plugins/ad_providers/gpt_async.inc
View source
<?php
$plugin = array(
'title' => t('Google Publisher Tags (Async)'),
'defaults' => array(
'account' => '',
),
'admin form' => 'google_admanager_gpt_async_admin_form',
'init' => 'google_admanager_gpt_async_init',
'display ad' => 'google_admanager_gpt_async_display_ad',
);
function google_admanager_gpt_async_admin_form(&$form_state, $conf) {
$form = array();
$form['account'] = array(
'#type' => 'textfield',
'#title' => t('DFP Network Code'),
'#default_value' => $conf['account'],
'#size' => 30,
'#maxlength' => 40,
);
return $form;
}
function google_admanager_gpt_async_init($conf) {
$script = <<<EOL
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
(function() {
var gads = document.createElement('script');
gads.async = true;
gads.type = 'text/javascript';
var useSSL = 'https:' == document.location.protocol;
gads.src = (useSSL ? 'https:' : 'http:') + '//www.googletagservices.com/tag/js/gpt.js';
var node =document.getElementsByTagName('script')[0];
node.parentNode.insertBefore(gads, node);
})();
EOL;
google_admanager_add_js($script, 'init');
$script = <<<EOF
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
EOF;
google_admanager_add_js('googletag.cmd.push(function() {', 'slot');
google_admanager_add_js($script, 'slot');
}
function google_admanager_gpt_async_targetting() {
static $targetting;
if (!isset($targetting)) {
$targetting = array();
foreach (google_admanager_get_variables() as $key => $value) {
$targetting[] = " .setTargeting('" . check_plain($key) . "', '" . check_plain($value) . "')";
}
$targetting = !empty($targetting) ? "\n" . implode("\n", $targetting) : '';
}
return $targetting;
}
function google_admanager_gpt_async_display_ad($ad_slot, $conf) {
$script = " googletag.defineSlot('/{$conf['account']}/{$ad_slot['name']}', [{$ad_slot['width']}, {$ad_slot['height']}], 'gam-holder-{$ad_slot['name']}').addService(googletag.pubads())" . google_admanager_gpt_async_targetting() . ';';
google_admanager_add_js($script, 'slot', -1);
$script = "googletag.cmd.push(function() {googletag.display('gam-holder-{$ad_slot['name']}');});";
$style = 'width:' . $ad_slot['width'] . 'px;height:' . $ad_slot['height'] . 'px;';
return '<div id="gam-holder-' . $ad_slot['name'] . '" class="gam-holder" style="' . $style . '"><script type="text/javascript">' . $script . '</script></div>';
}