Alter the js array.
Parameters
string $key: Key that can be used to lookup the value from the js array.
array $value: Inner part of the js array.
array $aggregate_settings: Array of settings.
Return value
array An array of inline scripts found and locations for them in the file.
Related topics
3 calls to advagg_relocate_js_script_rewrite_list()
- advagg_relocate_advagg_get_info_on_files_alter in advagg_relocate/
advagg_relocate.advagg.inc - Implements hook_advagg_get_info_on_files_alter().
- advagg_relocate_advagg_get_js_file_contents_alter in advagg_relocate/
advagg_relocate.advagg.inc - Implements hook_advagg_get_js_file_contents_alter().
- advagg_relocate_js_post_alter in advagg_relocate/
advagg_relocate.module - Alter the js array.
File
-
advagg_relocate/
advagg_relocate.module, line 421
Code
function advagg_relocate_js_script_rewrite_list($key, array $value, array $aggregate_settings) {
$scripts_found = array();
// Handle analytics.js.
if (!empty($aggregate_settings['variables']['advagg_relocate_js_ga_local'])) {
$start = strpos($value['data'], '(function(i,s,o,g,r,a,m){i["GoogleAnalyticsObject"]=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date()');
$middle = strpos($value['data'], '})(window,document,"script",', $start);
$end = strpos($value['data'], ',"ga");ga("create",', $middle);
// Found the GA code.
if ($start !== FALSE && $middle !== FALSE && $end !== FALSE) {
$scripts_found['analytics.js'] = array(
$key,
$start,
$middle,
$end,
);
}
}
// Handle piwik.js.
if (!empty($aggregate_settings['variables']['advagg_relocate_js_piwik_local'])) {
$start = strpos($value['data'], 'var _paq');
$middle = strpos($value['data'], '_paq.push(["setTrackerUrl"', $start);
// Skip if not the paq code.
if ($start !== FALSE && $middle !== FALSE) {
$scripts_found['piwik.js'] = array(
$key,
$start,
$middle,
);
}
}
// Handle gtm.js.
if (!empty($aggregate_settings['variables']['advagg_relocate_js_gtm_local'])) {
$start = strpos($value['data'], '(function(w,d,s,l,i){');
$middle = strpos($value['data'], 'var f=d.getElementsByTagName(s)[0]', $start);
$end = strpos($value['data'], '})(window,document,', $middle);
// Skip if not the GTM code.
if ($start !== FALSE && $middle !== FALSE && $end !== FALSE) {
$scripts_found['gtm.js'] = array(
$key,
$start,
$middle,
$end,
);
}
}
// Handle fbds.js.
if (!empty($aggregate_settings['variables']['advagg_relocate_js_fbds_local'])) {
$start = strpos($value['data'], 'var _fbq');
$middle = strpos($value['data'], '(!_fbq.loaded)', $start);
$end = strpos($value['data'], 's.parentNode.insertBefore(fbds', $middle);
// Skip if not the fbds code.
if ($start !== FALSE && $middle !== FALSE && $end !== FALSE) {
$scripts_found['fbds.js'] = array(
$key,
$start,
$middle,
$end,
);
}
}
// Handle fbevents.js.
if (!empty($aggregate_settings['variables']['advagg_relocate_js_fbevents_local'])) {
$end = strpos($value['data'], 'connect.facebook.net/en_US/fbevents.js');
// Skip if not the fbevents code.
if ($end !== FALSE) {
// Get middle of string.
$matches = array();
preg_match('/fbq\\s*=\\s*function\\(\\)/', $value['data'], $matches, PREG_OFFSET_CAPTURE);
if (!empty($matches[0][1])) {
$middle = $matches[0][1];
// Get start of string.
$matches = array();
preg_match('/\\!\\s*function\\(f,b,e,v,n,t,s\\)/', $value['data'], $matches, PREG_OFFSET_CAPTURE);
if (isset($matches[0][1])) {
$start = $matches[0][1];
if ($middle - $start <= 90) {
$scripts_found['fbevents.js'] = array(
$key,
$start,
$middle,
$end,
);
}
}
}
}
}
// Handle perfectaudience.js.
if (!empty($aggregate_settings['variables']['advagg_relocate_js_perfectaudience_local'])) {
$matches = array();
preg_match('/window\\._pa\\s*=\\s*window._pa\\s*\\|\\|\\s*\\{\\s*\\}\\s*;/', $value['data'], $matches, PREG_OFFSET_CAPTURE);
if (!empty($matches[0][1])) {
$start = $matches[0][1];
$middle = strpos($value['data'], '//tag.perfectaudience.com/serve/', $start);
$end = strpos($value['data'], 's.parentNode.insertBefore(pa, s);', $middle);
// Add if perfectaudience code.
if ($start !== FALSE && $middle !== FALSE && $end !== FALSE) {
$scripts_found['perfectaudience.js'] = array(
$key,
$start,
$middle,
$end,
);
}
}
// Handle twitter uwt.js.
if (!empty($aggregate_settings['variables']['advagg_relocate_js_twitter_uwt_local'])) {
$start = strpos($value['data'], '!function(e,t,n,s,u,a){e.twq||');
$middle = strpos($value['data'], '//static.ads-twitter.com/uwt.js', $start);
$end = strpos($value['data'], "a.parentNode.insertBefore(u,a))}(window,document,'script');", $middle);
// Add in twitter uwt.js code.
if ($start !== FALSE && $middle !== FALSE && $end !== FALSE) {
$scripts_found['uwt.js'] = array(
$key,
$start,
$middle,
$end,
);
}
}
// Handle linkedin insight.js.
if (!empty($aggregate_settings['variables']['advagg_relocate_js_linkedin_insight_local'])) {
$start = strpos($value['data'], '_linkedin_data_partner_id');
$middle = strpos($value['data'], '//snap.licdn.com/li.lms-analytics/insight.min.js', $start);
$end = strpos($value['data'], "s.parentNode.insertBefore(b, s)", $middle);
// Add in linkedin insight.js code.
if ($start !== FALSE && $middle !== FALSE && $end !== FALSE) {
$scripts_found['linkedin_insight.js'] = array(
$key,
$start,
$middle,
$end,
);
}
}
}
return $scripts_found;
}