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

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «== Задача == Сделать так, чтобы после отправки вебформы введенный пользователем e-mail подпис…»)
 
(Решение)
Строка 24: Строка 24:
  
 
 
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;
 
}
 
}
 
}
 
}

Версия 09:37, 24 октября 2012

Задача

Сделать так, чтобы после отправки вебформы введенный пользователем 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");
?>