mirror of https://github.com/avecms/AVE.cms.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.3 KiB
119 lines
3.3 KiB
<?php |
|
/* |
|
Версия от 06.03.2018г. |
|
|
|
Как это работает: |
|
1) Пользователь зашел на сайт первый раз. |
|
2) Если есть хотя бы один параметр - сохраняет cookies |
|
3) Если utm_history уже есть, то сохраняет данные в utm_last |
|
4) utm_last перезаписывается при каждом новом значении, а utm_history всегда остаётся неизменной (если был передан хотя бы один параметр) |
|
5) utm_source сохраняется всегда до закрытия браузера |
|
*/ |
|
class UTMCookie |
|
{ |
|
|
|
private $parameters = array('utm_source', 'utm_medium', 'utm_campaign'); |
|
|
|
private $utm_history = ''; |
|
private $utm_last = ''; |
|
private $utm_source = ''; |
|
|
|
//Проверка параметров: Если все присутствуют - true, иначе false |
|
private function check_parameters() |
|
{ |
|
//return true; //Сохранять всегда! |
|
|
|
$return = false; |
|
|
|
foreach ($this->parameters as $param) |
|
if (isset($_GET[$param]) && $_GET[$param] != '') |
|
$return = true; |
|
|
|
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] != '') |
|
{ |
|
$content .= $param.'='.$_GET[$param].'; '; |
|
|
|
} |
|
else |
|
{ |
|
$content .= $param.'=none; '; |
|
} |
|
} |
|
|
|
return $content; |
|
} |
|
|
|
//Сохраняет переданные параметры, если требуется |
|
//Если utm_history присутствует, то сохраняет utm_last |
|
public function save_parameters() |
|
{ |
|
if (isset($_GET['utm_source']) && trim($_GET['utm_source']) != '') |
|
{ |
|
setcookie('utm_source', $_GET['utm_source']); |
|
|
|
$this->utm_source = $_GET['utm_source']; |
|
} |
|
|
|
//$utm_history = ''; |
|
|
|
if (! isset($_COOKIE['utm_history']) || $_COOKIE['utm_history'] == '') |
|
{ |
|
//Отсутствует utm_history |
|
if($this->check_parameters() == true) |
|
{ |
|
|
|
$utm_history = $this->create_parameters(); |
|
setcookie('utm_history', $utm_history, time()+15552000); //На 6 месяцев |
|
setcookie('utm_last', ''); |
|
|
|
$this->utm_history = $utm_history; |
|
} |
|
|
|
} |
|
else |
|
{ |
|
//utm_history присутствует |
|
|
|
$this->utm_history = $_COOKIE['utm_history']; |
|
|
|
//Перезапишем utm_last, если есть данные для этого |
|
if($this->check_parameters() == true){ |
|
|
|
$utm_last = $this->create_parameters(); |
|
|
|
if($utm_last != $_COOKIE['utm_history']) |
|
setcookie('utm_last', $utm_last, time()+15552000); //На 6 месяцев |
|
|
|
$this->utm_last = $utm_last; |
|
|
|
} |
|
|
|
} |
|
|
|
return true; |
|
} |
|
|
|
//Возвращает значение cookies |
|
public function get_value($name = '') |
|
{ |
|
$name = trim($name); |
|
|
|
if ($name == '' || ! in_array($name, array('utm_history', 'utm_last', 'utm_source'))) |
|
$name = 'utm_history'; |
|
|
|
if (isset($this->$name) && $this->$name != '') |
|
return $this->$name; |
|
|
|
return isset($_COOKIE[$name]) ? $_COOKIE[$name] : ''; |
|
} |
|
} |
|
?>
|