function OA_SPCGetJavaScript($affiliateid) { $aConf = $GLOBALS['_MAX']['CONF']; $varprefix = $aConf['var']['prefix']; $aZones = OA_cacheGetPublisherZones($affiliateid); foreach ($aZones as $zoneid => $aZone) { $zones[$aZone['type']][] = " '" . addslashes($aZone['name']) . "' : {$zoneid}"; } $additionalParams = ''; $magic_quotes_gpc = ini_get('magic_quotes_gpc'); foreach ($_GET as $key => $value) { if ($key == 'id') { continue; } if ($magic_quotes_gpc) { $value = stripslashes($value); } $additionalParams .= htmlspecialchars('&' . urlencode($key) . '=' . urlencode($value), ENT_QUOTES); } $script = "\n if (typeof({$varprefix}zones) != 'undefined') {\n var {$varprefix}zoneids = '';\n for (var zonename in {$varprefix}zones) {$varprefix}zoneids += escape(zonename+'=' + {$varprefix}zones[zonename] + \"|\");\n {$varprefix}zoneids += '&nz=1';\n } else {\n var {$varprefix}zoneids = escape('" . implode('|', array_keys($aZones)) . "');\n }\n\n if (typeof({$varprefix}source) == 'undefined') { {$varprefix}source = ''; }\n var {$varprefix}p=location.protocol=='https:'?'" . MAX_commonConstructSecureDeliveryUrl($aConf['file']['singlepagecall'], true) . "':'" . MAX_commonConstructDeliveryUrl($aConf['file']['singlepagecall']) . "';\n var {$varprefix}r=Math.floor(Math.random()*99999999);\n {$varprefix}output = new Array();\n\n var {$varprefix}spc=\"<\"+\"script type='text/javascript' \";\n {$varprefix}spc+=\"src='\"+{$varprefix}p+\"?zones=\"+{$varprefix}zoneids;\n {$varprefix}spc+=\"&source=\"+escape({$varprefix}source)+\"&r=\"+{$varprefix}r;" . (!empty($additionalParams) ? "\n {$varprefix}spc+=\"{$additionalParams}\";" : '') . "\n "; if (empty($_GET['charset'])) { $script .= "{$varprefix}spc+=(document.charset ? '&charset='+document.charset : (document.characterSet ? '&charset='+document.characterSet : ''));\n"; } $script .= "\n if (window.location) {$varprefix}spc+=\"&loc=\"+escape(window.location);\n if (document.referrer) {$varprefix}spc+=\"&referer=\"+escape(document.referrer);\n {$varprefix}spc+=\"'><\"+\"/script>\";\n document.write({$varprefix}spc);\n\n function {$varprefix}show(name) {\n if (typeof({$varprefix}output[name]) == 'undefined') {\n return;\n } else {\n document.write({$varprefix}output[name]);\n }\n }\n\n function {$varprefix}showpop(name) {\n zones = window.{$varprefix}zones ? window.{$varprefix}zones : false;\n var zoneid = name;\n if (typeof(window.{$varprefix}zones) != 'undefined') {\n if (typeof(zones[name]) == 'undefined') {\n return;\n }\n zoneid = zones[name];\n }\n\n {$varprefix}p=location.protocol=='https:'?'" . MAX_commonConstructSecureDeliveryUrl($aConf['file']['popup'], true) . "':'" . MAX_commonConstructDeliveryUrl($aConf['file']['popup']) . "';\n\n var {$varprefix}pop=\"<\"+\"script type='text/javascript' \";\n {$varprefix}pop+=\"src='\"+{$varprefix}p+\"?zoneid=\"+zoneid;\n {$varprefix}pop+=\"&source=\"+escape({$varprefix}source)+\"&r=\"+{$varprefix}r;" . (!empty($additionalParams) ? "\n {$varprefix}spc+=\"{$additionalParams}\";" : '') . "\n if (window.location) {$varprefix}pop+=\"&loc=\"+escape(window.location);\n if (document.referrer) {$varprefix}pop+=\"&referer=\"+escape(document.referrer);\n {$varprefix}pop+=\"'><\"+\"/script>\";\n\n document.write({$varprefix}pop);\n }\n"; // Add the FlashObject include to the SPC output $script .= MAX_javascriptToHTML(MAX_flashGetFlashObjectExternal(), $varprefix . 'fo'); return $script; }
/** * This function takes some HTML, and generates JavaScript document.write() code * to output that HTML via JavaScript * * @param string $string The string to be converted * @param string $varName The JS variable name to store the output in * @param boolean $output Should there be a document.write to output the code? * * @return string The JS-ified string */ function test_MAX_javascriptToHTML() { $string = '<div>write this to document/div>'; $varName = 'myVar'; $output = true; $return = MAX_javascriptToHTML($string, $varName, $output); $result = str_replace("\r", '', 'var myVar = \'\'; myVar += "<"+"div>write this to document/div>\\n"; document.write(myVar); '); $this->assertEqual($return, $result); }
function MAX_trackerbuildJSVariablesScript($trackerid, $conversionInfo, $trackerJsCode = null) { $conf = $GLOBALS['_MAX']['CONF']; $buffer = ''; $url = MAX_commonGetDeliveryUrl($conf['file']['conversionvars']); $tracker = MAX_cacheGetTracker($trackerid); $variables = MAX_cacheGetTrackerVariables($trackerid); $variableQuerystring = ''; if (empty($trackerJsCode)) { $trackerJsCode = md5(uniqid('', true)); } else { $tracker['variablemethod'] = 'default'; } if (!empty($variables)) { if ($tracker['variablemethod'] == 'dom') { $buffer .= "\n function MAX_extractTextDom(o)\n {\n var txt = '';\n\n if (o.nodeType == 3) {\n txt = o.data;\n } else {\n for (var i = 0; i < o.childNodes.length; i++) {\n txt += MAX_extractTextDom(o.childNodes[i]);\n }\n }\n\n return txt;\n }\n\n function MAX_TrackVarDom(id, v)\n {\n if (max_trv[id][v]) { return; }\n var o = document.getElementById(v);\n if (o) {\n max_trv[id][v] = escape(o.tagName == 'INPUT' ? o.value : MAX_extractTextDom(o));\n }\n }"; $funcName = 'MAX_TrackVarDom'; } elseif ($tracker['variablemethod'] == 'default') { $buffer .= "\n function MAX_TrackVarDefault(id, v)\n {\n if (max_trv[id][v]) { return; }\n if (typeof(window[v]) == undefined) { return; }\n max_trv[id][v] = window[v];\n }"; $funcName = 'MAX_TrackVarDefault'; } else { $buffer .= "\n function MAX_TrackVarJs(id, v, c)\n {\n if (max_trv[id][v]) { return; }\n if (typeof(window[v]) == undefined) { return; }\n if (typeof(c) != 'undefined') {\n eval(c);\n }\n max_trv[id][v] = window[v];\n }"; $funcName = 'MAX_TrackVarJs'; } $buffer .= "\n if (!max_trv) { var max_trv = new Array(); }\n if (!max_trv['{$trackerJsCode}']) { max_trv['{$trackerJsCode}'] = new Array(); }"; foreach ($variables as $key => $variable) { $variableQuerystring .= "&{$variable['name']}=\"+max_trv['{$trackerJsCode}']['{$variable['name']}']+\""; if ($tracker['variablemethod'] == 'custom') { $buffer .= "\n {$funcName}('{$trackerJsCode}', '{$variable['name']}', '" . addcslashes($variable['variablecode'], "'") . "');"; } else { $buffer .= "\n {$funcName}('{$trackerJsCode}', '{$variable['name']}');"; } } if (!empty($variableQuerystring)) { $conversionInfoParams = array(); foreach ($conversionInfo as $plugin => $pluginData) { if (is_array($pluginData)) { foreach ($pluginData as $key => $value) { $conversionInfoParams[] = $key . '=' . urlencode($value); } } } $conversionInfoParams = '&' . implode('&', $conversionInfoParams); $buffer .= "\n document.write (\"<\" + \"script language='JavaScript' type='text/javascript' src='\");\n document.write (\"{$url}?trackerid={$trackerid}{$conversionInfoParams}{$variableQuerystring}'\");"; $buffer .= "\n\tdocument.write (\"><\\/scr\"+\"ipt>\");"; } } if (!empty($tracker['appendcode'])) { $tracker['appendcode'] = preg_replace('/("\\?trackerid=\\d+&inherit)=1/', '$1=' . $trackerJsCode, $tracker['appendcode']); $jscode = MAX_javascriptToHTML($tracker['appendcode'], "MAX_{$trackerid}_appendcode"); $jscode = preg_replace("/\\{m3_trackervariable:(.+?)\\}/", "\"+max_trv['{$trackerJsCode}']['\$1']+\"", $jscode); $buffer .= "\n" . preg_replace('/^/m', "\t", $jscode) . "\n"; } if (empty($buffer)) { $buffer = "document.write(\"\");"; } return $buffer; }
$varname = $zonename; } else { $thisZoneid = $varname = $thisZone; } // Clear deiveryData between iterations unset($GLOBALS['_MAX']['deliveryData']); $what = 'zone:' . $thisZoneid; //OX_Delivery_logMessage('$what='.$what, 7); //OX_Delivery_logMessage('$context='.print_r($context,true), 7); // Get the banner $output = MAX_adSelect($what, $clientid, $target, $source, $withtext, $charset, $context, true, $ct0, $GLOBALS['loc'], $GLOBALS['referer']); //OX_Delivery_logMessage('$block='.@$block, 7); //OX_Delivery_logMessage(print_r($output, true), 7); //OX_Delivery_logMessage('output bannerid='.(empty($output['bannerid']) ? ' NO BANNERID' : $output['bannerid']), 7); // Store the html2js'd output for this ad $spc_output .= MAX_javascriptToHTML($output['html'], $conf['var']['prefix'] . "output['{$varname}']", false, false) . "\n"; // Block this banner for next invocation if (!empty($block) && !empty($output['bannerid'])) { $output['context'][] = array('!=' => 'bannerid:' . $output['bannerid']); } // Block this campaign for next invocation if (!empty($blockcampaign) && !empty($output['campaignid'])) { $output['context'][] = array('!=' => 'campaignid:' . $output['campaignid']); } // Pass the context array back to the next call, have to iterate over elements to prevent duplication if (!empty($output['context'])) { foreach ($output['context'] as $id => $contextArray) { if (!in_array($contextArray, $context)) { $context[] = $contextArray; } }
$uniqid = substr(md5(uniqid('', 1)), 0, 8); // Block this banner for next invocation if (!empty($block) && !empty($output['bannerid'])) { $output['context'][] = array('!=' => 'bannerid:' . $output['bannerid']); } // Block this campaign for next invocation if (!empty($blockcampaign) && !empty($output['campaignid'])) { $output['context'][] = array('!=' => 'campaignid:' . $output['campaignid']); } // Block this campaign for next invocation if (!empty($blockcampaign) && !empty($output['campaignid'])) { $output['context'][] = array('!=' => 'campaignid:' . $output['campaignid']); } // Append any data to the context array if (!empty($output['context'])) { foreach ($output['context'] as $id => $contextArray) { if (!in_array($contextArray, $context)) { $context[] = $contextArray; } } } // Include the FlashObject script if required if ($output['contenttype'] == 'swf') { echo MAX_flashGetFlashObjectInline(); } // Set document.context, if required $output['html'] .= !empty($context) ? "<script type='text/javascript'>document.context='" . MAX_commonPackContext($context) . "'; </script>" : ''; echo MAX_javascriptToHTML(MAX_layerGetHtml($output, $uniqid), "MAX_{$uniqid}"); MAX_layerPutJs($output, $uniqid); ob_flush(); }
if (!empty($output['context'])) { foreach ($output['context'] as $id => $contextArray) { if (!in_array($contextArray, $context)) { $context[] = $contextArray; } } } // Append context, if any $output['html'] .= !empty($context) ? "<script type='text/javascript'>document.context='" . MAX_commonPackContext($context) . "'; </script>" : ''; MAX_cookieFlush(); // Show the banner MAX_commonSendContentTypeHeader("text/javascript", $charset); if (isset($output['contenttype']) && $output['contenttype'] == 'swf' && !isset($mmm_fo)) { echo MAX_flashGetFlashObjectInline(); } echo MAX_javascriptToHTML($output['html'], 'OX_' . substr(md5(uniqid('', 1)), 0, 8)); // Backwards compatible block-banner JS variable (>2.4 tags do all this via document.context) if (!empty($block) && !empty($output['bannerid'])) { $varprefix = $GLOBALS['_MAX']['CONF']['var']['prefix']; echo "\nif (document.{$varprefix}used) document.{$varprefix}_used += 'bannerid:" . $output['bannerid'] . ",';\n"; // Provide backwards compatibility for the time-being echo "\nif (document.MAX_used) document.MAX_used += 'bannerid:" . $output['bannerid'] . ",';\n"; echo "\nif (document.phpAds_used) document.phpAds_used += 'bannerid:" . $output['bannerid'] . ",';\n"; } // Backwards compatible block-campaign JS variable (>2.4 tags do all this via document.context) if (!empty($blockcampaign) && !empty($output['campaignid'])) { $varprefix = $GLOBALS['_MAX']['CONF']['var']['prefix']; echo "\nif (document.{$varprefix}used) document.{$varprefix}used += 'campaignid:" . $output['campaignid'] . ",';\n"; // Provide backwards compatibility for the time-being echo "\nif (document.MAX_used) document.MAX_used += 'campaignid:" . $output['campaignid'] . ",';\n"; echo "\nif (document.phpAds_used) document.phpAds_used += 'campaignid:" . $output['campaignid'] . ",';\n";
} $logVars = true; } } MAX_cookieFlush(); // Write the code for tracking the variable values, and any // additional appended tracker code if ($logVars) { // The $logVars variable contains the code for tracking // the variable values (if required by the tracker), and // also the code for appending any additional tracker code // IF there was a conversion echo "{$variablesScript}"; } else { if ($append == true) { // As $logVars was empty, this could mean that there are // no variable values to track and there is no additional // appended code required; but it could also mean that // although there is additional appended code required, there // was no conversion recorded. As the $append variable // is true, double check to see if there is any additional // appended tracker code, and if so, send it $aTracker = MAX_cacheGetTracker($trackerid); if (!empty($aTracker['appendcode'])) { $appendScript = MAX_javascriptToHTML($aTracker['appendcode'], "MAX_{$trackerid}_appendcode", true); echo $appendScript; } } } // Post tracker render hook OX_Delivery_Common_hook('postTrackerRender', array(&$aConversion, &$aConversionInfo, &$trackerid, &$inherit));