function Plugin_BannerTypeText_oxMarkedText_oxMarkedTextComponent_delivery_adRender(&$aBanner, $zoneId = 0, $source = '', $ct0 = '', $withText = false, $logClick = true, $logView = true, $useAlt = false, $loc, $referer) { $conf = $GLOBALS['_MAX']['CONF']; $pluginConf = $GLOBALS['conf']['oxMarkedText']; $linkStyle1 = $pluginConf['link1Style']; $linkStyle2 = $pluginConf['link2Style']; $prepend = !empty($aBanner['prepend']) ? $aBanner['prepend'] : ''; $append = !empty($aBanner['append']) ? $aBanner['append'] : ''; $aBanner['bannerContent'] = $aBanner['bannertext']; $find = array('[[', '[', ']]', ']'); $clickUrl = _adRenderBuildClickUrl($aBanner, $zoneId, $source, $ct0, $logClick); if (!empty($clickUrl)) { $status = _adRenderBuildStatusCode($aBanner); $target = !empty($aBanner['target']) ? $aBanner['target'] : '_blank'; $clickTag1 = "<a href='{$clickUrl}' {$linkStyle1} target='{$target}'{$status}>"; $clickTag2 = "<a href='{$clickUrl}' {$linkStyle2} target='{$target}'{$status}>"; $clickTagEnd = '</a>'; } else { $clickTag1 = ''; $clickTag2 = ''; $clickTagEnd = ''; } $replace = array($clickTag2, $clickTag1, $clickTagEnd, $clickTagEnd); $bannerText = str_replace($find, $replace, $aBanner['bannertext']); $beaconTag = $logView && $conf['logging']['adImpressions'] ? _adRenderImageBeacon($aBanner, $zoneId, $source, $loc, $referer) : ''; return $prepend . $bannerText . $beaconTag . $append; }
/** * * @package OpenXPlugin * @subpackage Plugins_BannerTypes * @abstract * * This function generates the code to show a "text" ad * * @param array $aBanner The ad-array for the ad to render code for * @param int $zoneId The zone ID of the zone used to select this ad (if zone-selected) * @param string $source The "source" parameter passed into the adcall * @param string $ct0 The 3rd party click tracking URL to redirect to after logging * @param int $withText Should "text below banner" be appended to the generated code * @param bookean $logClick Should this click be logged (clicks in admin should not be logged) * @param boolean $logView Should this view be logged (views in admin should not be logged * also - 3rd party callback logging should not be logged at view time) * @param boolean $useAlt Should the backup file be used for this code * @param boolean $richMedia Does this invocation method allow for serving 3rd party/html ads * @param string $loc The "current page" URL * @param string $referer The "referring page" URL * * @return string The HTML to display this ad */ function Plugin_BannerTypeText_delivery_adRender(&$aBanner, $zoneId = 0, $source = '', $ct0 = '', $withText = false, $logClick = true, $logView = true, $useAlt = false, $richMedia = true, $loc, $referer) { $conf = $GLOBALS['_MAX']['CONF']; $prepend = !empty($aBanner['prepend']) ? $aBanner['prepend'] : ''; $append = !empty($aBanner['append']) ? $aBanner['append'] : ''; $aBanner['bannerContent'] = $aBanner['bannertext']; // Create the anchor tag.. $clickUrl = _adRenderBuildClickUrl($aBanner, $zoneId, $source, $ct0, $logClick); if (!empty($clickUrl)) { // There is a link $status = _adRenderBuildStatusCode($aBanner); $target = !empty($aBanner['target']) ? $aBanner['target'] : '_blank'; $clickTag = "<a href='{$clickUrl}' target='{$target}'{$status}>"; $clickTagEnd = '</a>'; } else { $clickTag = ''; $clickTagEnd = ''; } // Get the text below the banner $bannerText = !empty($aBanner['bannertext']) ? "{$clickTag}{$aBanner['bannertext']}{$clickTagEnd}" : ''; // Get the image beacon... $beaconTag = $logView && $conf['logging']['adImpressions'] ? _adRenderImageBeacon($aBanner, $zoneId, $source, $loc, $referer) : ''; return $prepend . $bannerText . $beaconTag . $append; }
function _adRenderFlash(&$aBanner, $zoneId = 0, $source = '', $ct0 = '', $withText = false, $logClick = true, $logView = true, $useAlt = false, $richMedia = true, $loc = '', $referer = '', $context = array()) { $conf = $GLOBALS['_MAX']['CONF']; $prepend = !empty($aBanner['prepend']) ? $aBanner['prepend'] : ''; $append = !empty($aBanner['append']) ? $aBanner['append'] : ''; $width = !empty($aBanner['width']) ? $aBanner['width'] : 0; $height = !empty($aBanner['height']) ? $aBanner['height'] : 0; $pluginVersion = !empty($aBanner['pluginversion']) ? _adRenderGetRealPluginVersion($aBanner['pluginversion']) : '4'; $logURL = _adRenderBuildLogURL($aBanner, $zoneId, $source, $loc, $referer, '&'); if (!empty($aBanner['alt_filename']) || !empty($aBanner['alt_imageurl'])) { $altImageAdCode = _adRenderImage($aBanner, $zoneId, $source, $ct0, false, $logClick, false, true, true, $loc, $referer, $context, false); $fallBackLogURL = _adRenderBuildLogURL($aBanner, $zoneId, $source, $loc, $referer, '&', true); } else { $alt = !empty($aBanner['alt']) ? htmlspecialchars($aBanner['alt'], ENT_QUOTES) : ''; $altImageAdCode = "<img src='" . _adRenderBuildImageUrlPrefix() . '/1x1.gif' . "' alt='" . $alt . "' title='" . $alt . "' border='0' />"; if ($zoneId) { $fallBackLogURL = _adRenderBuildLogURL(array('ad_id' => 0, 'placement_id' => 0), $zoneId, $source, $loc, $referer, '&', true); } else { $fallBackLogURL = false; } } $clickUrl = _adRenderBuildClickUrl($aBanner, $zoneId, $source, $ct0, $logClick); if (!empty($clickUrl)) { $status = _adRenderBuildStatusCode($aBanner); $target = !empty($aBanner['target']) ? $aBanner['target'] : '_blank'; $swfParams = array('clickTARGET' => $target, 'clickTAG' => $clickUrl); $clickTag = "<a href='{$clickUrl}' target='{$target}'{$status}>"; $clickTagEnd = '</a>'; } else { $swfParams = array(); $clickTag = ''; $clickTagEnd = ''; } if (!empty($aBanner['parameters'])) { $aAdParams = unserialize($aBanner['parameters']); if (isset($aAdParams['swf']) && is_array($aAdParams['swf'])) { $swfParams = array(); $aBannerSwf = $aBanner; $aBannerSwf['noClickTag'] = true; foreach ($aAdParams['swf'] as $iKey => $aSwf) { $aBannerSwf['url'] = $aSwf['link']; $swfParams["alink{$iKey}"] = _adRenderBuildClickUrl($aBannerSwf, $zoneId, $source, $ct0, $logClick); $swfParams["atar{$iKey}"] = $aSwf['tar']; } } } $fileUrl = _adRenderBuildFileUrl($aBanner, false); $id = 'rv_swf_{random}'; $swfId = !empty($aBanner['alt']) ? $aBanner['alt'] : 'Advertisement'; $swfId = 'id-' . preg_replace('/[a-z0-1]+/', '', strtolower($swfId)); $code = "\n<div id='{$id}' style='display: inline;'>{$altImageAdCode}</div>\n<script type='text/javascript'><!--/" . "/ <![CDATA[\n var ox_swf = new FlashObject('{$fileUrl}', '{$swfId}', '{$width}', '{$height}', '{$pluginVersion}');\n"; foreach ($swfParams as $key => $value) { $code .= " ox_swf.addVariable('{$key}', '" . preg_replace('#%7B(.*?)%7D#', '{$1}', urlencode($value)) . "');\n"; } if (!empty($aBanner['transparent'])) { $code .= " ox_swf.addParam('wmode','transparent');\n"; } else { $code .= " ox_swf.addParam('wmode','opaque');\n"; } $code .= " ox_swf.addParam('allowScriptAccess','always');\n"; if ($logView && $conf['logging']['adImpressions']) { $code .= " ox_swf.write('{$id}', " . json_encode($logURL) . ", " . json_encode($fallBackLogURL) . ");\n"; } else { $code .= " ox_swf.write('{$id}');\n"; } $code .= "/" . "/ ]]> --></script>"; if ($fallBackLogURL) { $code .= '<noscript>' . _adRenderImageBeacon($aBanner, $zoneId, $source, $loc, $referer, $fallBackLogURL) . '</noscript>'; } $bannerText = $withText && !empty($aBanner['bannertext']) ? "<br />{$clickTag}{$aBanner['bannertext']}{$clickTagEnd}" : ''; return $prepend . $code . $bannerText . $append; }
/** * build click URL * */ function test_adRenderBuildClickUrl() { $this->sendMessage('test_adRenderBuildClickUrl'); // following line suggests that this func not used require_once MAX_PATH . '/lib/max/Delivery/common.php'; $aBanner = array('bannerid' => '9999', 'url' => 'http://www.somewhere.com', 'contenttype' => ''); $zoneId = 0; $source = ''; $ct0 = ''; $logClick = true; $overrideDest = false; $conf = $GLOBALS['_MAX']['CONF']; $ret = _adRenderBuildClickUrl($aBanner, $zoneId, $source, $ct0, $logClick, $overrideDest); $this->assertEqual($ret, "http://{$GLOBALS['_MAX']['CONF']['webpath']['delivery']}/ck.php?{$conf['var']['params']}=2__{$conf['var']['adId']}=9999__{$conf['var']['zoneId']}=0__{$conf['var']['cacheBuster']}={random}__{$conf['var']['dest']}=http%3A%2F%2Fwww.somewhere.com"); // XSS via ct0 $aBanner = array('bannerid' => '9999', 'url' => 'http://www.somewhere.com', 'contenttype' => ''); $zoneId = 0; $source = ''; $ct0 = 'http\'>XSS'; $logClick = true; $overrideDest = false; $conf = $GLOBALS['_MAX']['CONF']; $ret = _adRenderBuildClickUrl($aBanner, $zoneId, $source, $ct0, $logClick, $overrideDest); $this->assertEqual($ret, "http://{$GLOBALS['_MAX']['CONF']['webpath']['delivery']}/ck.php?{$conf['var']['params']}=2__{$conf['var']['adId']}=9999__{$conf['var']['zoneId']}=0__{$conf['var']['cacheBuster']}={random}__{$conf['var']['dest']}=http%27%3EXSShttp%253A%252F%252Fwww.somewhere.com"); }
function _adRenderFlash(&$aBanner, $zoneId = 0, $source = '', $ct0 = '', $withText = false, $logClick = true, $logView = true, $useAlt = false, $richMedia = true, $loc = '', $referer = '', $context = array()) { $conf = $GLOBALS['_MAX']['CONF']; $prepend = !empty($aBanner['prepend']) ? $aBanner['prepend'] : ''; $append = !empty($aBanner['append']) ? $aBanner['append'] : ''; $width = !empty($aBanner['width']) ? $aBanner['width'] : 0; $height = !empty($aBanner['height']) ? $aBanner['height'] : 0; $pluginVersion = !empty($aBanner['pluginversion']) ? $aBanner['pluginversion'] : '4'; // $imageUrlPrefix = ($_SERVER['SERVER_PORT'] == $conf['openads']['sslPort']) ? $conf['type_web_ssl_url'] : $conf['type_web_url']; if (!empty($aBanner['alt_filename']) || !empty($aBanner['alt_imageurl'])) { $altImageAdCode = _adRenderImage($aBanner, $zoneId, $source, $ct0, false, $logClick, false, true, true, $loc, $referer, false); $fallBackLogURL = _adRenderBuildLogURL($aBanner, $zoneId, $source, $loc, $referer, '&', true); } else { $altImageAdCode = "<img src='" . _adRenderBuildImageUrlPrefix() . '/1x1.gif' . "' alt='" . $aBanner['alt'] . "' title='" . $aBanner['alt'] . "' border='0' />"; $fallBackLogURL = false; } // Create the anchor tag.. $clickUrl = _adRenderBuildClickUrl($aBanner, $zoneId, $source, $ct0, $logClick); if (!empty($clickUrl)) { // There is a link $status = _adRenderBuildStatusCode($aBanner); $target = !empty($aBanner['target']) ? $aBanner['target'] : '_blank'; $swfParams = array('clickTARGET' => $target, 'clickTAG' => $clickUrl); $clickTag = "<a href='{$clickUrl}' target='{$target}'{$status}>"; $clickTagEnd = '</a>'; } else { $swfParams = array(); $clickTag = ''; $clickTagEnd = ''; } if (!empty($aBanner['parameters'])) { $aAdParams = unserialize($aBanner['parameters']); if (isset($aAdParams['swf']) && is_array($aAdParams['swf'])) { // Converted SWF file, use paramters content $swfParams = array(); $aBannerSwf = $aBanner; // Set the flag to let _adRenderBuildClickUrl know that we're not using clickTAG $aBannerSwf['noClickTag'] = true; foreach ($aAdParams['swf'] as $iKey => $aSwf) { $aBannerSwf['url'] = $aSwf['link']; $swfParams["alink{$iKey}"] = _adRenderBuildClickUrl($aBannerSwf, $zoneId, $source, $ct0, $logClick); $swfParams["atar{$iKey}"] = $aSwf['tar']; } } } $fileUrl = _adRenderBuildFileUrl($aBanner, false); $rnd = md5(microtime()); $swfId = !empty($aBanner['alt']) ? $aBanner['alt'] : 'Advertisement'; $code = "\n<div id='ox_{$rnd}' style='display: inline;'>{$altImageAdCode}</div>\n<script type='text/javascript'><!--/" . "/ <![CDATA[\nvar ox_swf = new FlashObject('{$fileUrl}', '{$swfId}', '{$width}', '{$height}', '{$pluginVersion}');\n"; foreach ($swfParams as $key => $value) { // URL encode the value, but leave any Openads "magic macros" unescaped to allow substitution $code .= " ox_swf.addVariable('{$key}', '" . preg_replace('#%7B(.*?)%7D#', '{$1}', urlencode($value)) . "');\n"; } if (!empty($aBanner['transparent'])) { $code .= "\n ox_swf.addParam('wmode','transparent');"; } $code .= "\nox_swf.addParam('allowScriptAccess','always');\nox_swf.write('ox_{$rnd}');\n"; if ($logView && $conf['logging']['adImpressions']) { // Only render the log beacon if the user has the minumum required flash player version $code .= " if (ox_swf.installedVer.versionIsValid(ox_swf.getAttribute('version'))) { document.write(\"" . _adRenderImageBeacon($aBanner, $zoneId, $source, $loc, $referer) . "\"); }"; // Otherwise log a fallback impression (if there is a fallback creative configured) if ($fallBackLogURL) { $code .= ' else { document.write("' . _adRenderImageBeacon($aBanner, $zoneId, $source, $loc, $referer, $fallBackLogURL) . '"); }'; } } $code .= "\n/" . "/ ]]> --></script>"; if ($fallBackLogURL) { $code .= '<noscript>' . _adRenderImageBeacon($aBanner, $zoneId, $source, $loc, $referer, $fallBackLogURL) . '</noscript>'; } $bannerText = $withText && !empty($aBanner['bannertext']) ? "<br />{$clickTag}{$aBanner['bannertext']}{$clickTagEnd}" : ''; return $prepend . $code . $bannerText . $append; }
/** * This function builds the Click through URL for this ad * * @param array $aBanner The ad-array for the ad to render code for * @param int $zoneId The zone ID of the zone used to select this ad (if zone-selected) * @param string $source The "source" parameter passed into the adcall * @param string $ct0 The 3rd party click tracking URL to redirect to after logging * @param bookean $logClick Should this click be logged (clicks in admin should not be logged) * * @return string The click URL */ function _adRenderBuildVideoClickThroughUrl($aBanner, $zoneId = 0, $source = '', $ct0 = '', $logClick = true) { // We dont pass $aBanner by reference - so the changes to this $aBanner are lost - which is a good thing // we need the url attribute of aBanner to contain the url we want created $clickUrl = ''; if (!empty($aBanner['vast_video_clickthrough_url'])) { $aBanner['url'] = $aBanner['vast_video_clickthrough_url']; $clickUrl = _adRenderBuildClickUrl($aBanner, $zoneId, $source, $ct0, $logClick); } return $clickUrl; }