first commit
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
<?php
|
||||
|
||||
|
||||
class appAdsTrackerFrontendActions extends stActions
|
||||
{
|
||||
public function executeCheckAds() {
|
||||
|
||||
// $hash = $this->getRequestParameter('hash');
|
||||
$id = $this->getRequestParameter('id');
|
||||
|
||||
$return = $appAdsTrackerListId = $id;
|
||||
|
||||
$c = new Criteria();
|
||||
$c->add(AdsTrackerEnteringPeer::CREATED_AT, sprintf("DATE(%s) = '%s'", AdsTrackerEnteringPeer::CREATED_AT, date('Y-m-d')), Criteria::CUSTOM);
|
||||
$c->add(AdsTrackerEnteringPeer::APP_ADS_TRACKER_LIST_ID , $appAdsTrackerListId);
|
||||
$adsTrackerEntering = AdsTrackerEnteringPeer::doSelectOne($c);
|
||||
|
||||
if($adsTrackerEntering){
|
||||
$adsTrackerEntering->setAdsEntering($adsTrackerEntering->getAdsEntering()+1);
|
||||
$adsTrackerEntering->save();
|
||||
}else{
|
||||
$adsTrackerEntering = new AdsTrackerEntering();
|
||||
$adsTrackerEntering->setAppAdsTrackerListId($appAdsTrackerListId);
|
||||
$adsTrackerEntering->setAdsEntering(1);
|
||||
$adsTrackerEntering->save();
|
||||
}
|
||||
|
||||
return $this->renderText($return);
|
||||
|
||||
}
|
||||
|
||||
public function executeDebug() {
|
||||
|
||||
$config = stConfig::getInstance($this->getContext(), 'appAdsTrackerBackend');
|
||||
$config->setCulture($this->getUser()->getCulture());
|
||||
|
||||
$url = $this->getRequestParameter('url');
|
||||
$referrer = $this->getRequestParameter('referrer');
|
||||
$browser = $this->getRequestParameter('browser');
|
||||
$ip = $this->getRequestParameter('ip');
|
||||
$hash = $this->getRequestParameter('hash');
|
||||
$ads_id = $this->getRequestParameter('ads_id');
|
||||
$cookie = $this->getRequestParameter('cookie');
|
||||
|
||||
$cookie_array = json_decode($cookie);
|
||||
|
||||
foreach ($cookie_array as $key => $ads_cookie) {
|
||||
|
||||
if($ads_cookie->ads_last=="true"){
|
||||
$cookieAdsHash = $ads_cookie->ads_cookie_hash;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$c = new Criteria();
|
||||
$adsTrackerDebug = AdsTrackerDebugPeer::doCount($c);
|
||||
|
||||
if($adsTrackerDebug<=100000 && $ip!=""){
|
||||
|
||||
$adsTrackerDebug = new AdsTrackerDebug();
|
||||
$adsTrackerDebug->setAppAdsTrackerListId($ads_id);
|
||||
$adsTrackerDebug->setCookieAdsHash($cookieAdsHash);
|
||||
$adsTrackerDebug->setUrl($url);
|
||||
$adsTrackerDebug->setReferrer($referrer);
|
||||
$adsTrackerDebug->setBrowser($browser);
|
||||
$adsTrackerDebug->setIp($ip);
|
||||
$adsTrackerDebug->setHash($hash);
|
||||
$adsTrackerDebug->setCookie($cookie);
|
||||
$adsTrackerDebug->setAdsHashControl($config->get('hash_control'));
|
||||
$adsTrackerDebug->save();
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function executeRemoteAddressData() {
|
||||
|
||||
$config = stConfig::getInstance($this->getContext(), 'appAdsTrackerBackend');
|
||||
$config->setCulture($this->getUser()->getCulture());
|
||||
|
||||
|
||||
$url = $this->getRequestParameter('url');
|
||||
$remote_address = $this->getRequestParameter('remote_address');
|
||||
$hash = $this->getRequestParameter('hash');
|
||||
$ads_id = $this->getRequestParameter('ads_id');
|
||||
$cookie = $this->getRequestParameter('cookie');
|
||||
|
||||
$cookie_array = json_decode($cookie);
|
||||
|
||||
foreach ($cookie_array as $key => $ads_cookie) {
|
||||
|
||||
if($ads_cookie->ads_last=="true"){
|
||||
$cookieAdsHash = $ads_cookie->ads_cookie_hash;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$c = new Criteria();
|
||||
$adsTrackerRemoteAddress = AdsTrackerRemoteAddressPeer::doCount($c);
|
||||
|
||||
if($remote_address!=""){
|
||||
|
||||
$adsTrackerRemoteAddress = new AdsTrackerRemoteAddress();
|
||||
$adsTrackerRemoteAddress->setAppAdsTrackerListId($ads_id);
|
||||
$adsTrackerRemoteAddress->setCookieAdsHash($cookieAdsHash);
|
||||
$adsTrackerRemoteAddress->setUrl($url);
|
||||
$adsTrackerRemoteAddress->setRemoteAddress($remote_address);
|
||||
$adsTrackerRemoteAddress->setHash($hash);
|
||||
$adsTrackerRemoteAddress->setCookie($cookie);
|
||||
$adsTrackerRemoteAddress->setAdsHashControl($config->get('hash_control'));
|
||||
$adsTrackerRemoteAddress->save();
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
/**
|
||||
* SOTESHOP/appAdsTrackerFrontendPlugin
|
||||
*
|
||||
*
|
||||
* @package appAdsTrackerFrontendPlugin
|
||||
* @author Bartosz Alejski <bartosz.alejski@sote.pl>
|
||||
*/
|
||||
class appAdsTrackerFrontendComponents extends sfComponents
|
||||
{
|
||||
public function executeShowAdsTracker()
|
||||
{
|
||||
if(appAdsTracker::getIsExcludeRemoteAddress()){
|
||||
return sfView::NONE;
|
||||
}
|
||||
|
||||
$config = stConfig::getInstance($this->getContext(), 'appAdsTrackerBackend');
|
||||
$config->setCulture($this->getUser()->getCulture());
|
||||
$this->config = $config;
|
||||
|
||||
$c = new Criteria();
|
||||
$c->add(AdsTrackerListPeer::IS_ACTIVE , 1);
|
||||
$adsTrackerList = AdsTrackerListPeer::doSelectJoinAll($c);
|
||||
|
||||
if($adsTrackerList){
|
||||
foreach ($adsTrackerList as $adsTracker) {
|
||||
$ads_array_hash[] = $adsTracker->getHash();
|
||||
$ads_array_ids[] = $adsTracker->getId();
|
||||
$ads_array_path[] = $adsTracker->getAdsTrackerPlatform()->getAdsName()."/".$adsTracker->getAdsTrackerCampaign()->getAdsName();
|
||||
|
||||
|
||||
|
||||
if ($adsTracker->getAdsTrackerPlatform()->getPlatformType ()==1) {
|
||||
$this->ads_direct = $adsTracker->getId();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
$this->ads_array_hash = json_encode($ads_array_hash);
|
||||
$this->ads_array_ids = json_encode($ads_array_ids);
|
||||
$this->ads_array_path = json_encode($ads_array_path);
|
||||
$this->ads_hash_control = $config->get('hash_control');
|
||||
|
||||
|
||||
|
||||
|
||||
// echo "<pre>";
|
||||
// print_r($ads_array_hash);
|
||||
// echo "</pre>";
|
||||
//
|
||||
// echo "<pre>";
|
||||
// print_r($ads_array_ids);
|
||||
// echo "</pre>";
|
||||
//
|
||||
// die();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,332 @@
|
||||
<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>
|
||||
Reference in New Issue
Block a user