Автоматическая подписка на рассылку после отправки вебформы — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «== Задача == Сделать так, чтобы после отправки вебформы введенный пользователем e-mail подпис…»)
 
 
(не показаны 2 промежуточные версии 1 участника)
Строка 1: Строка 1:
 +
'''Актуально для версии 2.9'''
 +
 
== Задача ==
 
== Задача ==
  
Строка 24: Строка 26:
  
 
 
public function autoSubscribe(umiEventPoint $event) {
+
public function autoSubscribe(umiEventPoint $event)  
$email = $event->getParam("email");
+
{
$fio = $event->getParam("fio");
+
if ($event->getMode() === "after"){
+
list($lname, $fname) = split(" ", $fio);
+
$email = getRequest('data');
+
$email=$email['new']['email'];
if(getRequest("autosubscribe")) {
+
 
return $subscriber_id = $this->import_subscriber($email, $fname, $lname);
+
$fio = getRequest('data');
} else {
+
$fio = $fio['new']['name'];
return false;
+
 +
list($lname, $fname) = split(" ", $fio);
 +
 +
if(getRequest("autosubscribe")) {
 +
return $subscriber_id = $this->import_subscriber($email, $fname, $lname);
 +
} else {
 +
return false;
 +
}
 +
return true;
 
}
 
}
 
}
 
}
Строка 47: Строка 57:
 
?>
 
?>
 
</source>
 
</source>
 +
 +
Было проверено на localpack версии 2.8.5.3
 +
 +
[[Категория:Написание кастомных макросов]][[Категория:Модуль Обратная связь]]

Текущая версия на 11:01, 5 июня 2013

Актуально для версии 2.9

Задача

Сделать так, чтобы после отправки вебформы введенный пользователем e-mail подписывался на рассылки.

Решение

Добавить в шаблон вебформы ячейку

<div>
<input class="checkbox" type="checkbox" name="autosubscribe" id="autosubscribe" value="Подписаться на рассылки компании" checked="checked" />
<label class="inline" for="autosubscribe">Подписаться на рассылки компании</label>
</div>

Разместить кастомные макросы, перехватывающие событие отправки вебформы, в директорию ~/classes/modules/dispatches/

__custom.php:

<?php

	abstract class __custom_dispatches {

		//TODO: Write here your own macroses

		
		public function autoSubscribe(umiEventPoint $event) 
		{
			if ($event->getMode() === "after"){ 
				
				$email = getRequest('data');
				$email=$email['new']['email'];

				$fio = getRequest('data');
				$fio = $fio['new']['name'];
				
				list($lname, $fname) = split(" ", $fio);
				
				if(getRequest("autosubscribe")) {
					return $subscriber_id = $this->import_subscriber($email, $fname, $lname);
				} else {
					return false;
				}
				return true;
			}
		}
	};

?>

custom_events.php:

<?php
$listener = new umiEventListener("webforms_post", "dispatches", "autoSubscribe");
?>

Было проверено на localpack версии 2.8.5.3