332 lines
16 KiB
PHP
332 lines
16 KiB
PHP
<script type="text/javascript" src="/js/jquery.cookie.js"></script>
|
|
<script type="text/javascript" src="/js/jquery.md5.js"></script>
|
|
<script type="text/javascript">
|
|
jQuery(function ($)
|
|
{
|
|
$(document).ready(function()
|
|
{
|
|
console.log("ads tracker status: active");
|
|
|
|
var getUrlParameter = function getUrlParameter(sParam) {
|
|
var sPageURL = window.location.search.substring(1),
|
|
sURLVariables = sPageURL.split('&'),
|
|
sParameterName,
|
|
i;
|
|
|
|
for (i = 0; i < sURLVariables.length; i++) {
|
|
sParameterName = sURLVariables[i].split('=');
|
|
|
|
if (sParameterName[0] === sParam) {
|
|
return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
|
|
}
|
|
}
|
|
};
|
|
|
|
function updateDebug(ads_id, ads_tracker_cookie) {
|
|
|
|
var referrer = document.referrer;
|
|
var browser = "<?php echo $_SERVER['HTTP_USER_AGENT']; ?>";
|
|
var ip = "<?php echo $_SERVER['REMOTE_ADDR']; ?>";
|
|
var hash = getUrlParameter('hash');
|
|
var url = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search
|
|
|
|
var cookie = JSON.stringify(ads_tracker_cookie);
|
|
|
|
console.log("debug url: " + url);
|
|
console.log("debug referrer: " + referrer);
|
|
console.log("debug browser: " + browser);
|
|
console.log("debug ip: " + ip);
|
|
console.log("debug ads hash: " + hash);
|
|
console.log("debug ads id: " + ads_id);
|
|
console.log("debug cookies: " + cookie);
|
|
|
|
|
|
$.post( "<?php echo st_url_for('appAdsTrackerFrontend/debug') ?>", { url: url, referrer: referrer, browser: browser, ip: ip, hash: hash, ads_id: ads_id, cookie: cookie })
|
|
.done(function( data ) {
|
|
console.log("debug update");
|
|
});
|
|
|
|
}
|
|
|
|
function updateRemoteAddressData(ads_id, ads_tracker_cookie) {
|
|
|
|
var remote_address = "<?php echo $_SERVER['REMOTE_ADDR']; ?>";
|
|
var hash = getUrlParameter('hash');
|
|
var url = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search
|
|
|
|
if(!hash){
|
|
hash="###direct###"
|
|
}
|
|
|
|
var cookie = JSON.stringify(ads_tracker_cookie);
|
|
|
|
console.log("remote url: " + url);
|
|
console.log("remote address: " + remote_address);
|
|
console.log("remote ads hash: " + hash);
|
|
console.log("remote ads id: " + ads_id);
|
|
console.log("remote cookies: " + cookie);
|
|
|
|
|
|
$.post( "<?php echo st_url_for('appAdsTrackerFrontend/remoteAddressData') ?>", { url: url, remote_address: remote_address, hash: hash, ads_id: ads_id, cookie: cookie })
|
|
.done(function( data ) {
|
|
console.log("remote address data update");
|
|
});
|
|
|
|
}
|
|
|
|
|
|
function getKeyByValue(object, value) {
|
|
for (var prop in object) {
|
|
if (object.hasOwnProperty(prop)) {
|
|
if (object[prop] === value)
|
|
return prop;
|
|
}
|
|
}
|
|
}
|
|
|
|
function getDateFormat() {
|
|
var d = new Date();
|
|
d = d.getFullYear() + "-" + ('0' + (d.getMonth() + 1)).slice(-2) + "-" + ('0' + d.getDate()).slice(-2) + " " + ('0' + d.getHours()).slice(-2) + ":" + ('0' + d.getMinutes()).slice(-2) + ":" + ('0' + d.getSeconds()).slice(-2);
|
|
return d;
|
|
}
|
|
|
|
|
|
function prepareCookies(ads_id, ads_tracker_cookie) {
|
|
|
|
var ads_hash_control = "<?php echo $ads_hash_control ?>";
|
|
var ads_tracker_cookie_json = JSON.stringify(ads_tracker_cookie);
|
|
|
|
console.log(ads_tracker_cookie_json);
|
|
|
|
|
|
<?php if($config->get('is_extend')): ?>
|
|
updateRemoteAddressData(ads_id, ads_tracker_cookie);
|
|
<?php endif; ?>
|
|
|
|
<?php if($config->get('is_debug')): ?>
|
|
updateDebug(ads_id, ads_tracker_cookie);
|
|
<?php endif; ?>
|
|
|
|
|
|
|
|
var expires_at = new Date();
|
|
|
|
var days = <?php echo $config->get('ads_terminate'); ?>;
|
|
|
|
expires_at.setTime(expires_at.getTime() + 1000 * days * 24 * 60 * 60);
|
|
$.cookies.set('ads_tracker_'+ads_hash_control, ads_tracker_cookie_json, {path: '/', expiresAt: expires_at});
|
|
|
|
}
|
|
|
|
function addCookiesData(ads_id, ads_path) {
|
|
|
|
var ads_hash_control = "<?php echo $ads_hash_control ?>";
|
|
var date_time = getDateFormat();
|
|
var md5 = $.md5(date_time);
|
|
|
|
var ads_tracker_entering = {};
|
|
ads_tracker_entering['ads_cookie_hash'] = md5;
|
|
ads_tracker_entering['ads_id'] = ads_id;
|
|
ads_tracker_entering['ads_path'] = ads_path;
|
|
ads_tracker_entering['ads_entering'] = 1;
|
|
ads_tracker_entering['ads_last'] = "true";
|
|
ads_tracker_entering['ads_create'] = date_time;
|
|
ads_tracker_entering['ads_update'] = date_time;
|
|
ads_tracker_entering['ads_sum_control'] = "";
|
|
|
|
var md5control = $.md5(JSON.stringify(ads_tracker_entering)+ads_hash_control);
|
|
ads_tracker_entering['ads_sum_control'] = md5control;
|
|
|
|
var ads_tracker_cookie = [];
|
|
ads_tracker_cookie.push(ads_tracker_entering);
|
|
|
|
console.log(ads_tracker_cookie);
|
|
|
|
return ads_tracker_cookie;
|
|
}
|
|
|
|
function checkSumControl(ads_tracker_entering) {
|
|
|
|
var ads_hash_control = "<?php echo $ads_hash_control ?>";
|
|
|
|
var check_sum_entering = Object.assign({}, ads_tracker_entering);
|
|
|
|
var check_hash = check_sum_entering['ads_sum_control'];
|
|
|
|
//console.log("check_hash :"+check_hash);
|
|
|
|
check_sum_entering['ads_last'] = "true";
|
|
check_sum_entering['ads_sum_control'] = "";
|
|
var md5control = $.md5(JSON.stringify(check_sum_entering)+ads_hash_control);
|
|
console.log(check_hash + " = " + md5control);
|
|
|
|
if(check_hash==md5control){
|
|
console.log("sum control status: true");
|
|
return true;
|
|
|
|
}else{
|
|
console.log("sum control status: false");
|
|
return false;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
function updateCookiesData(ads_tracker_cookie, ads_id, ads_path) {
|
|
var ads_hash_control = "<?php echo $ads_hash_control ?>";
|
|
var is_exist = 0;
|
|
|
|
$.each( ads_tracker_cookie, function( key, ads_tracker_entering ) {
|
|
|
|
var sum_control_status = checkSumControl(ads_tracker_entering);
|
|
|
|
ads_tracker_entering['ads_last'] = "false";
|
|
|
|
if(ads_tracker_entering['ads_id'] == ads_id){
|
|
|
|
console.log("finded");
|
|
console.log("sum control:"+ads_tracker_entering['ads_sum_control']);
|
|
|
|
is_exist = 1;
|
|
|
|
var date_time = getDateFormat();
|
|
|
|
ads_tracker_entering['ads_entering'] = ads_tracker_entering['ads_entering']+1 ;
|
|
ads_tracker_entering['ads_update'] = date_time;
|
|
ads_tracker_entering['ads_last'] = "true";
|
|
ads_tracker_entering['ads_sum_control'] = "";
|
|
|
|
var md5control = $.md5(JSON.stringify(ads_tracker_entering)+ads_hash_control);
|
|
ads_tracker_entering['ads_sum_control'] = md5control;
|
|
|
|
console.log("new sum control:"+ads_tracker_entering['ads_sum_control']);
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
if(is_exist==0){
|
|
var ads_hash_control = "<?php echo $ads_hash_control ?>";
|
|
var date_time = getDateFormat();
|
|
var md5 = $.md5(date_time);
|
|
|
|
var ads_tracker_entering = {};
|
|
ads_tracker_entering['ads_cookie_hash'] = md5;
|
|
ads_tracker_entering['ads_id'] = ads_id;
|
|
ads_tracker_entering['ads_path'] = ads_path;
|
|
ads_tracker_entering['ads_entering'] = 1;
|
|
ads_tracker_entering['ads_last'] = "true";
|
|
ads_tracker_entering['ads_create'] = date_time;
|
|
ads_tracker_entering['ads_update'] = date_time;
|
|
ads_tracker_entering['ads_sum_control'] = "";
|
|
|
|
var md5control = $.md5(JSON.stringify(ads_tracker_entering)+ads_hash_control);
|
|
ads_tracker_entering['ads_sum_control'] = md5control;
|
|
|
|
ads_tracker_cookie.push(ads_tracker_entering);
|
|
|
|
}
|
|
|
|
return ads_tracker_cookie
|
|
|
|
}
|
|
|
|
|
|
//************* start recognize active ads ******************
|
|
|
|
var ads_hash_control = "<?php echo $ads_hash_control ?>";
|
|
var url_hash = getUrlParameter('hash');
|
|
console.log("ads tracker hash: "+url_hash);
|
|
|
|
var ads_array_hash = $.parseJSON('<?php echo $ads_array_hash ?>');
|
|
var ads_array_ids = $.parseJSON('<?php echo $ads_array_ids ?>');
|
|
var ads_array_path = $.parseJSON('<?php echo $ads_array_path ?>');
|
|
|
|
|
|
if($.inArray(url_hash, ads_array_hash) !== -1){
|
|
|
|
console.log("recognize active ads");
|
|
|
|
|
|
var key = getKeyByValue(ads_array_hash, url_hash);
|
|
var ads_id = ads_array_ids[key];
|
|
var ads_path = ads_array_path[key];
|
|
|
|
var active_ads_session = window.sessionStorage.getItem("active_ads_"+ads_id);
|
|
window.sessionStorage.setItem("active_session", "active");
|
|
|
|
if(active_ads_session!="active"){
|
|
console.log("add to session ads "+ads_id);
|
|
|
|
window.sessionStorage.setItem("active_ads_"+ads_id, "active");
|
|
|
|
|
|
$.post( "<?php echo st_url_for('appAdsTrackerFrontend/checkAds') ?>", { id: ads_id })
|
|
.done(function( data ) {
|
|
// alert( "Data Loaded: " + data );
|
|
});
|
|
|
|
|
|
if (!$.cookies.get('ads_tracker_'+ads_hash_control)) {
|
|
|
|
var ads_tracker_cookie = addCookiesData(ads_id, ads_path);
|
|
|
|
prepareCookies(ads_id, ads_tracker_cookie);
|
|
|
|
}else{
|
|
|
|
var ads_tracker_cookie = $.cookies.get('ads_tracker_'+ads_hash_control);
|
|
|
|
ads_tracker_cookie = updateCookiesData(ads_tracker_cookie, ads_id, ads_path);
|
|
|
|
prepareCookies(ads_id, ads_tracker_cookie);
|
|
|
|
}
|
|
|
|
}else{
|
|
console.log("ads was active: "+ads_id);
|
|
}
|
|
|
|
}else{
|
|
console.log("can't ads recognize");
|
|
|
|
var active_session = window.sessionStorage.getItem("active_session");
|
|
|
|
if(active_session!="active"){
|
|
console.log("welcome to direct enterence");
|
|
|
|
window.sessionStorage.setItem("active_session", "active");
|
|
|
|
var ads_id = <?php echo $ads_direct; ?>;
|
|
var ads_path = "Wejścia bezpośrednie"
|
|
|
|
|
|
$.post( "<?php echo st_url_for('appAdsTrackerFrontend/checkAds') ?>", { id: ads_id })
|
|
.done(function( data ) {
|
|
});
|
|
|
|
if (!$.cookies.get('ads_tracker_'+ads_hash_control)) {
|
|
|
|
var ads_tracker_cookie = addCookiesData(ads_id, ads_path);
|
|
|
|
prepareCookies(ads_id, ads_tracker_cookie);
|
|
|
|
}else{
|
|
|
|
var ads_tracker_cookie = $.cookies.get('ads_tracker_'+ads_hash_control);
|
|
|
|
ads_tracker_cookie = updateCookiesData(ads_tracker_cookie, ads_id, ads_path);
|
|
|
|
prepareCookies(ads_id, ads_tracker_cookie);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
});
|
|
});
|
|
</script>
|