Files
roi-theme/wp-content/plugins/wp-marketing-automations/woofunnels/assets/js/utm-tracker.js
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

360 lines
11 KiB
JavaScript
Executable File

/*global wffnUtm */
var wffnUtm_terms = wffnUtm.cookieKeys, wffnCookieManage = {
setCookie: function (e, o, t) {
var r = new Date();
r.setTime(r.getTime() + 24 * t * 60 * 60 * 1e3);
var c = "expires=" + r.toUTCString();
var basehost = ';domain=.' + wffnGetHost(document.location.hostname);
document.cookie = e + "=" + o + ";" + c + basehost + ";path=/";
}, getCookie: function (e) {
for (var o = e + "=", t = document.cookie.split(";"), r = 0; r < t.length; r++) {
for (var c = t[r]; " " == c.charAt(0);) c = c.substring(1);
if (0 == c.indexOf(o)) return c.substring(o.length, c.length);
}
return "";
}, remove: function (e) {
var o = new Date();
o.setTime(o.getTime() - 864e5);
var t = "expires=" + o.toUTCString();
document.cookie = e + "=;" + t + ";path=/";
}, commons: {
inArray: function (e, o) {
return -1 === o.indexOf(e);
}
}
};
function wffnGetHost(url) {
var o = {
strictMode: false,
key: ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'],
q: {
name: 'queryKey',
parser: /(?:^|&)([^&=]*)=?([^&]*)/g
},
parser: {
strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
}
},
m = o.parser[o.strictMode ? 'strict' : 'loose'].exec(url),
uri = {},
i = 14;
while (i--) {
uri[o.key[i]] = m[i] || '';
}
uri[o.q.name] = {};
uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
if ($1) {
uri[o.q.name][$1] = $2;
}
});
return uri.host.replace('www.', '');
}
function wffnGetQueryVars() {
try {
var result = {}, tmp = [];
window.location.search
.substr(1)
.split("&")
.forEach(function (item) {
tmp = item.split('=');
if (tmp.length > 1) {
result[tmp[0]] = tmp[1];
}
});
return wffnDefaultEvent(result);
} catch (e) {
console.log(e);
}
}
/** Add default parameter utm event **/
function wffnDefaultEvent(result) {
if (typeof Intl === "object" && typeof Intl.DateTimeFormat() === "object") {
let resolved = Intl.DateTimeFormat().resolvedOptions();
if (resolved.hasOwnProperty('timeZone')) {
result.timezone = resolved.timeZone;
}
}
result.flt = wffnGetAdminTime();
/**
* save referrer when manually pass by url
*/
if (result.hasOwnProperty('fkreferrer') && result.fkreferrer !== '') {
result.referrer = result.fkreferrer;
delete result.fkreferrer;
} else {
const WffnfkRef = document.referrer;
const getDomain = url => new URL(url).hostname;
result.referrer = (WffnfkRef && !wffnUtm.excludeDomain.some(domain => getDomain(WffnfkRef).endsWith(domain)) && !WffnfkRef.includes(window.location.hostname)) ? WffnfkRef : '';
}
result.fl_url = (typeof window.location.pathname !== "undefined") ? window.location.pathname : '/';
let getDevice = wffnDetectDevice();
if (typeof getDevice !== "undefined" && getDevice !== "") {
if (typeof getDevice.browser.name !== "undefined") {
result.browser = getDevice.browser.name;
}
if (typeof getDevice.is_mobile !== "undefined") {
result.is_mobile = getDevice.is_mobile;
}
}
return result;
}
/** get wp admin current time*/
function wffnGetAdminTime(getEpochTime = false, isObject = false) {
var getTime = new Date();
var getIsoString = getTime.toISOString();
// Convert the ISO string to a Date object
var dateFromIso = new Date(getIsoString);
// Set Admin offset to get user time according admin
dateFromIso.setMinutes(dateFromIso.getMinutes() + parseInt(wffnUtm.utc_offset));
getIsoString = dateFromIso.toISOString();
const [datePart, timePart] = getIsoString.split("T");
// Extract year, month, day
const [getYear, getMonth, getDay] = datePart.split("-").map(Number);
// Extract hours, minutes, seconds
const [getHours, getMinutes, secondsWithMillis] = timePart.split(":");
const getSeconds = secondsWithMillis.split(".")[0];
if (true === getEpochTime) {
/** get time in seconds **/
dateFromIso = new Date(getYear + '-' + (getMonth) + '-' + getDay + ' ' + getHours + ':' + getMinutes + ':' + getSeconds);
return Math.round(dateFromIso.getTime() / 1000);
}
if (true === isObject) {
return new Date(getYear + '-' + (getMonth) + '-' + getDay + ' ' + getHours + ':' + getMinutes + ':' + getSeconds);
}
return getYear + '-' + (getMonth) + '-' + getDay + ' ' + getHours + ':' + getMinutes + ':' + getSeconds;
}
function wffnGetTrafficSource() {
try {
var referrer = document.referrer.toString();
var direct = referrer.length === 0;
//noinspection JSUnresolvedVariable
var internal = direct ? false : referrer.indexOf(wffnUtm.site_url) === 0;
var external = !(direct || internal);
var cookie = wffnCookieManage.getCookie('wffn_traffic_source') === '' ? false : wffnCookieManage.getCookie('wffn_traffic_source');
if (external === false) {
return cookie ? cookie : 'direct';
} else {
return cookie && cookie === referrer ? cookie : referrer;
}
} catch (e) {
return '';
}
}
function wffnManageCookies() {
try {
var source = wffnGetTrafficSource();
if (source !== 'direct') {
wffnCookieManage.setCookie('wffn_traffic_source', source, 2);
} else {
wffnCookieManage.remove('wffn_traffic_source');
}
var queryVars = wffnGetQueryVars();
for (var k in wffnUtm_terms) {
if (Object.prototype.hasOwnProperty.call(queryVars, wffnUtm_terms[k])) {
/**
* restricted override cookies for user journey
*/
if (['flt', 'fl_url', 'referrer'].indexOf(wffnUtm_terms[k]) !== -1) {
if ('undefined' !== typeof wffnCookieManage && '' === wffnCookieManage.getCookie('wffn_' + wffnUtm_terms[k])) {
wffnCookieManage.setCookie('wffn_' + wffnUtm_terms[k], queryVars[wffnUtm_terms[k]], 2);
}
} else {
wffnCookieManage.setCookie('wffn_' + wffnUtm_terms[k], queryVars[wffnUtm_terms[k]], 2);
}
}
}
} catch (e) {
console.log(e);
}
}
/**
* Return UTM terms from request query variables or from cookies.
*/
function wffnGetUTMs() {
try {
var terms = {};
var queryVars = wffnGetQueryVars();
/** exclude parameter for utm event **/
var excludeArray = ["flt", "timezone", "is_mobile", "browser", "fbclid", "gclid", "referrer", "fl_url"];
for (var k in wffnUtm_terms) {
if (wffnCookieManage.getCookie('wffn_' + wffnUtm_terms[k]) === '' && Object.prototype.hasOwnProperty.call(queryVars, wffnUtm_terms[k])) {
terms[wffnUtm_terms[k]] = wffnCookieManage.getCookie('wffn_' + wffnUtm_terms[k]);
}
}
return terms;
} catch (e) {
return {};
}
}
/* eslint-disable no-unused-vars */
function wffnAddTrafficParamsToEvent(params) {
try {
var get_generic_params = wffnUtm.genericParamEvents;
var json_get_generic_params = JSON.parse(get_generic_params);
for (var k in json_get_generic_params) {
params[k] = json_get_generic_params[k];
}
/**
* getting current day and time to send with this event
*/
var e = wffnGetAdminTime(false, true);
var a = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"][e.getDay()],
b = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"][e.getMonth()],
c = ["00-01", "01-02", "02-03", "03-04", "04-05", "05-06", "06-07", "07-08", "08-09", "09-10", "10-11", "11-12", "12-13", "13-14", "14-15", "15-16", "16-17", "17-18", "18-19", "19-20", "20-21", "21-22", "22-23", "23-24"][e.getHours()];
params.event_month = b;
params.event_day = a;
params.event_hour = c;
params.traffic_source = wffnGetTrafficSource();
var getUTMs = wffnGetUTMs();
for (var ki in getUTMs) {
params[ki] = getUTMs[ki];
}
return params;
} catch (eeX) {
return params;
}
}
/** return device and browser info **/
function wffnDetectDevice() {
let header = [navigator.userAgent, navigator.vendor, window.opera];
let is_mobile = false;
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
is_mobile = true;
}
/** check device for facebook application **/
if (false === is_mobile) {
let fbAgent = navigator.userAgent || navigator.vendor || window.opera;
if ((fbAgent.indexOf("FBAN") > -1) || (fbAgent.indexOf("FBAV") > -1)) {
is_mobile = true;
}
}
let databrowser = [
{name: 'Chrome', value: 'Chrome', version: 'Chrome'},
{name: 'Firefox', value: 'Firefox', version: 'Firefox'},
{name: 'Safari', value: 'Safari', version: 'Version'},
{name: 'Internet Explorer', value: 'MSIE', version: 'MSIE'},
{name: 'Opera', value: 'Opera', version: 'Opera'},
{name: 'BlackBerry', value: 'CLDC', version: 'CLDC'},
{name: 'Mozilla', value: 'Mozilla', version: 'Mozilla'}
];
var agent = header.join(' '),
browser = wffnDetectBrowser(agent, databrowser);
return {is_mobile: is_mobile, browser: browser};
}
function wffnDetectBrowser(string, data) {
var i = 0,
j = 0,
regex,
regexv,
match,
matches,
version;
for (i = 0; i < data.length; i += 1) {
regex = new RegExp(data[i].value, 'i');
match = regex.test(string);
if (match) {
regexv = new RegExp(data[i].version + '[- /:;]([\\d._]+)', 'i');
matches = string.match(regexv);
version = '';
if (matches) {
if (matches[1]) {
matches = matches[1];
}
}
if (matches) {
matches = matches.split(/[._]+/);
for (j = 0; j < matches.length; j += 1) {
if (j === 0) {
version += matches[j] + '.';
} else {
version += matches[j];
}
}
} else {
version = '0';
}
return {
name: data[i].name,
version: parseFloat(version)
};
}
}
return {name: 'unknown', version: 0};
}
wffnManageCookies();