ave-cms/class/class.utm.php

121 lines
3.2 KiB
PHP
Raw Normal View History

2018-05-16 23:14:07 +03:00
<?php
2019-08-19 09:34:29 +03:00
/*
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
Версия от 06.03.2018г.
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
Как это работает:
1) Пользователь зашел на сайт первый раз.
2) Если есть хотя бы один параметр - сохраняет cookies
3) Если utm_history уже есть, то сохраняет данные в utm_last
4) utm_last перезаписывается при каждом новом значении, а utm_history всегда остаётся неизменной (если был передан хотя бы один параметр)
5) utm_source сохраняется всегда до закрытия браузера
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
*/
class UTMCookie
{
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
private $parameters = array('utm_source', 'utm_medium', 'utm_campaign');
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
private $utm_history = '';
private $utm_last = '';
private $utm_source = '';
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
//Проверка параметров: Если все присутствуют - true, иначе false
private function check_parameters()
{
//return true; //Сохранять всегда!
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
$return = false;
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
foreach ($this->parameters as $param)
if (isset($_GET[$param]) && $_GET[$param] != '')
$return = true;
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
return $return;
}
//Создаёт строку с параметрами вот такого вида: utm_source=test; utm_medium=none; utm_campaign=kompaniya1;
private function create_parameters()
{
$content = '';
foreach($this->parameters as $param){
if (isset($_GET[$param]) && $_GET[$param] != '')
2018-05-16 23:14:07 +03:00
{
2019-08-19 09:34:29 +03:00
$content .= $param.'='.$_GET[$param].'; ';
2018-05-16 23:14:07 +03:00
2018-09-20 11:04:28 +03:00
}
2019-08-19 09:34:29 +03:00
else
{
$content .= $param.'=none; ';
}
}
return $content;
}
2018-09-20 11:04:28 +03:00
2019-08-19 09:34:29 +03:00
//Сохраняет переданные параметры, если требуется
//Если utm_history присутствует, то сохраняет utm_last
public function save_parameters()
{
if (isset($_GET['utm_source']) && trim($_GET['utm_source']) != '')
{
setcookie('utm_source', $_GET['utm_source']);
2018-09-20 11:04:28 +03:00
2019-08-19 09:34:29 +03:00
$this->utm_source = $_GET['utm_source'];
}
2018-09-20 11:04:28 +03:00
2019-08-19 09:34:29 +03:00
//$utm_history = '';
2018-09-20 11:04:28 +03:00
2019-08-19 09:34:29 +03:00
if (! isset($_COOKIE['utm_history']) || $_COOKIE['utm_history'] == '')
{
//Отсутствует utm_history
if($this->check_parameters() == true)
{
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
$utm_history = $this->create_parameters();
setcookie('utm_history', $utm_history, time()+15552000); //На 6 месяцев
setcookie('utm_last', '');
$this->utm_history = $utm_history;
2018-05-16 23:14:07 +03:00
}
2019-08-19 09:34:29 +03:00
}
else
{
//utm_history присутствует
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
$this->utm_history = $_COOKIE['utm_history'];
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
//Перезапишем utm_last, если есть данные для этого
if($this->check_parameters() == true){
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
$utm_last = $this->create_parameters();
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
if($utm_last != $_COOKIE['utm_history'])
setcookie('utm_last', $utm_last, time()+15552000); //На 6 месяцев
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
$this->utm_last = $utm_last;
2018-05-16 23:14:07 +03:00
}
}
2019-08-19 09:34:29 +03:00
return true;
}
//Возвращает значение cookies
public function get_value($name = '')
{
$name = trim($name);
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
if ($name == '' || ! in_array($name, array('utm_history', 'utm_last', 'utm_source')))
$name = 'utm_history';
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
if (isset($this->$name) && $this->$name != '')
return $this->$name;
2018-05-16 23:14:07 +03:00
2019-08-19 09:34:29 +03:00
return isset($_COOKIE[$name]) ? $_COOKIE[$name] : '';
2018-05-16 23:14:07 +03:00
}
2019-08-19 09:34:29 +03:00
}
2018-05-16 23:14:07 +03:00
?>