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

Материал из Umicms
Перейти к:навигация, поиск

Задача

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