Пример написания манифеста для модуля — различия между версиями
Kublan (обсуждение | вклад) |
Kublan (обсуждение | вклад) |
||
(не показано 9 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
[[category:Вопросы и уроки разработки сайтов на UMI.CMS]] | [[category:Вопросы и уроки разработки сайтов на UMI.CMS]] | ||
− | + | '''Актуально для версии 18.''' | |
− | '''Актуально для версии | ||
Начиная с 16 версии в UMI.CMS появились [[http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/manifesty/ манифесты]]. | Начиная с 16 версии в UMI.CMS появились [[http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/manifesty/ манифесты]]. | ||
Строка 9: | Строка 8: | ||
Например, сам модуль будет называться mailer. | Например, сам модуль будет называться mailer. | ||
Структура файлов у нас будет следующая: | Структура файлов у нас будет следующая: | ||
− | + | <source lang="php"> | |
/classes/components/mailer/manifest/install.xml | /classes/components/mailer/manifest/install.xml | ||
/classes/components/mailer/manifest/update.xml | /classes/components/mailer/manifest/update.xml | ||
/classes/components/mailer/manifest/actions/SendMail.php | /classes/components/mailer/manifest/actions/SendMail.php | ||
− | + | </source> | |
В файл install.xml мы добавим следующий код: | В файл install.xml мы добавим следующий код: | ||
<source lang="xml"> | <source lang="xml"> | ||
Строка 99: | Строка 98: | ||
После этого вызываем файл example.com/manifest_checker.php, манифесты выполняются вручную и отображаются на экране. | После этого вызываем файл example.com/manifest_checker.php, манифесты выполняются вручную и отображаются на экране. | ||
+ | |||
+ | [[category:API]][[category:Написание кастомных макросов]] |
Текущая версия на 13:10, 28 июня 2018
Актуально для версии 18.
Начиная с 16 версии в UMI.CMS появились [манифесты].
В данной статье мы покажем пример написания манифеста, который при установке и обновлении модуля присылает письмо на определенную почту.
Например, сам модуль будет называться mailer. Структура файлов у нас будет следующая:
/classes/components/mailer/manifest/install.xml
/classes/components/mailer/manifest/update.xml
/classes/components/mailer/manifest/actions/SendMail.php
В файл install.xml мы добавим следующий код:
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<route>
<transaction name="send_mail_on_install">
<action name="\UmiCms\Manifest\Mail\SendMail" />
</transaction>
</route>
</manifest>
В файл update.xml добавляем код:
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<route>
<transaction name="send_mail_on_update">
<action name="\UmiCms\Manifest\Mail\SendMail" />
</transaction>
</route>
</manifest>
В файл SendMail.php добавим:
<?php
namespace UmiCms\Manifest\Mail;
class SendMailAction extends \Action
{
public function __construct($name, array $params = []) {
parent::__construct($name, $params);
}
public function execute()
{
$lMail = new \umiMail;
$lMail->addRecipient("recipient@example.com", "Testing");
$lMail->setFrom("from@example.com", "Testing");
$lMail->setSubject("Обновление CMS");
$lMail->setPriorityLevel("highest");
$lMail->setContent("Обновление завершено");
$lMail->commit();
$lMail->send();
return $this;
}
public function rollback()
{
return $this;
}
}
В данном файле в строке
$lMail->addRecipient("recipient@example.com", "Testing");
recipient@example.com необходимо заменить на адрес получателя, а в строке
$lMail->setFrom("from@example.com", "Testing");
from@example.com заменить на заголовок From письма.
Если модуль не добавлен к лицензионному ключу и не размещен на UMI.Market, то при установке и обновлении запуск манифестов происходить не будет.
Для проверки работы манифестов их нужно запускать вручную.
Для этого создадим файл manifest_checker.php в корне сайта и добавим в него следующий код:
<?php
include 'standalone.php';
$manifest = \UmiCms\Service::ManifestFactory()
->createByModule('update', ‘mail’);
do {
$manifest->execute();
} while (!$manifest->isReady());
foreach ($manifest->getLog() as $message) {
echo $message, PHP_EOL;
}
Первый аргумент в методе createByModule это тип манифеста (install или update), а второй аргумент — имя вашего модуля.
После этого вызываем файл example.com/manifest_checker.php, манифесты выполняются вручную и отображаются на экране.