Срок работы пробной версии продукта истек. Через две недели этот сайт полностью прекратит свою работу. Вы можете купить полнофункциональную версию продукта на сайте www.1c-bitrix.ru. Помощь Битрикс

Помощь Битрикс

вернуться

Счётчик в рассылку

Этот код записывает в файл пользователей, которые открыли письмо-рассылку.

В корневой папке сайта надо создать папку "po_stat_log" и в ней файл "in_log.php"

in_log.php:

<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

$image = imagecreatetruecolor(1,1)
   or die('Cannot create image');

	imagefill($image, 0, 0, 0xffffff);

// счетчик
$rsUser = CUser::GetByID($_GET["user_id"]);
$arUser = $rsUser->Fetch();
			
$file = fopen ($_SERVER['DOCUMENT_ROOT']."/po_stat_log/posting_".$_GET["code"].".txt","a+");
if($file ) {
	$str = $_GET["code"]."; ".date("d.m.Y H:i:s")."; ".$temail."; ".$arUser["LAST_NAME"]."; ".$arUser["NAME"]."; ".$arUser["LOGIN"]."; ".$_GET["user_id"]."\r\n";
	fwrite( $file, $str);
	fclose ($file);
}
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
?>

создаем обработчик события "BeforePostingSendMail" и добавляем в /bitrix/php_interface/init.php

обработчик события:

 AddEventHandler("subscribe", "BeforePostingSendMail", "beforePostingSendMailHandler");
 
        function beforePostingSendMailHandler($arFields){
			$arFields["BODY"] = str_replace("#EMAIL#", $arFields["EMAIL"], $arFields["BODY"]);
            //$USER_NAME = "Подписчик"; 
            //Попробуем найти подписчика. 
            $rs = CSubscription::GetByEmail($arFields["EMAIL"]);
            if($ar = $rs->Fetch()){
              
                $arFields["BODY"] = str_replace("#CONFIRM_CODE#", $ar["CONFIRM_CODE"], $arFields["BODY"]);
                $arFields["BODY"] = str_replace("#ID#", $ar["ID"], $arFields["BODY"]);
                $arFields["BODY"] = str_replace("#USER_EMAIL#", $ar["EMAIL"], $arFields["BODY"]);
				$arFields["BODY"] = str_replace("#USER_ID#", $ar["USER_ID"], $arFields["BODY"]);
            }
            //$arFields["BODY"] = str_replace("#NAME#", $USER_NAME, $arFields["BODY"]); 
			
            return $arFields;
        }

В выпуск рассылки надо добавить счётчик, который отработает на стороне пользователя. "КОД РАССЫЛКИ" при этом должен быть уникальным (латынь, цифра, дефис, подчёркивание без пробелов).

Счётчик:

<img src="http://САЙТ/po_stat_log/in_log.php?code=КОД_РАССЫЛКИ&user_id=#USER_ID#&temail=#EMAIL#"/>

При просмотре рассылки пользователем в лог-файл "/po_stat_log/posting_КОД_РАССЫЛКИ.txt" будут занесены данные пользователя в формате: "код рассылки; дата; email; фамилия; имя; логин; id пользователя"

Пример лог-файла:

test8; 19.06.2015 08:30:00; maik007@rambler.ru; Костюк; Эдуард; 4240298; 2620
test8; 19.06.2015 06:12:19; zolotuhina_tatya@mail.ru; Золотухина; Татьяна; 4841579; 604
test8; 18.06.2015 23:00:34; elens19@mail.ru; Соловьева; Елена; 4889328; 1142
test8; 18.06.2015 19:55:52; vitalijmisko@mail.ru; Мисько; Виталий; 4775335; 2938
test8; 18.06.2015 16:43:10; hripupu@mail.ru; Ломова; Инесса; 5034171; 11532
test8; 18.06.2015 15:42:57; okrina@mail.ru; Дюрягина; Светлана; 3947842; 6294
test8; 18.06.2015 15:33:52; zenonovna62@mail.ru; Карась; Анна; 4170314; 1904
test8; 18.06.2015 15:09:16; tanyacoral79@gmail.com; Ziegler; Tatyana; 3901919; 475
test8; 18.06.2015 13:45:30; vikanikatoday@mail.ru; Попова; Виктория; 5021566; 6447
test8; 18.06.2015 12:49:20; n.limanskaya@mail.ru; Лиманская; Наталья; 4445377; 8267
test8; 18.06.2015 12:28:03; anilirika@yandex.ru; Языкова; Евгения; 3988079; 1433
test8; 18.06.2015 12:06:30; mosina10@mail.ru; Мосина; Ольга; 4145492; 640
test8; 18.06.2015 11:33:28; masha_kerch@meta.ua; Кривошеева; Мария; 4596435; 410
test8; 18.06.2015 11:32:55; damshinskiy@mail.ru; Волков; Григорий; 4987695; 3272
test8; 18.06.2015 11:22:51; kazarezov@ukr.net; Казарезов; Дмитрий; 4796253; 8175
test8; 18.06.2015 11:20:18; nataliharina@mail.ru; Харина; Наталья; 4036004; 7687
test8; 18.06.2015 11:18:17; orlova.club@mail.ru; Орлова; Лилия; 3910094; 2159
test8; 18.06.2015 11:11:10; kmolch@bk.ru; Молчанова; Ксения; 4832687; 1484
test8; 18.06.2015 10:47:57; irina36mk@mail.ru; Маланухо; Ирина; 4213662; 1183
test8; 18.06.2015 10:16:54; pobalde@gmail.com; Гриценко; Андрей; 4809848; 422
test8; 18.06.2015 09:55:20; titova_gold@mail.ru; Титова; Ольга; 3954770; 1417
test8; 18.06.2015 09:46:48; lilita04@yandex.ru; Гераскина; Лилия; 4958177; 11739

Исходный файл