Разбираюсь с api umi пока не все понятно, помогите пожалуйста
Задача на почту отправлять информацию по странице с которой отправлен комментарий.
Как сейчас реализовано
1) Отлавливаю событие comments_message_post_do
2) Добавил кастомную функцию
public function onAddComment(iUmiEventPoint $oEventPoint) {
if ($oEventPoint->getMode() === "before") return true;
if ($oEventPoint->getMode() === "after") {
$element = $oEventPoint->getRef('element');
// берем необходимые параметры
$iCommentId = $oEventPoint->getParam("message_id");
$hierarchy = umiHierarchy::getInstance();
// получаем объект "Комментарий"
$oComment = umiHierarchy::getInstance()->getElement($iCommentId);
if ($oComment instanceof umiHierarchyElement) {
// формируем письмо
$oMyMail = new umiMail();
$oMyMail->setFrom("mailer@example.com", "mailer");
$oMyMail->setSubject("Добавлен новый комментарий");
$oMyMail->setContent($oComment->getValue("message"));
$oMyMail->addRecipient("warrior84spb@gmail.com", "Admin");
// отправляем письмо
$oMyMail->commit();
}
return true;
}
}
Задача усложняется тем что комментарии у меня вложенные и просто взять парент страницы не получится
Подскажите пожалуйста, как правильно сделать.
берешь всех родителей своего комментария и перебирая каждого их них проверяешь их тип данных, если он не является комментарием, то это та страница которая тебе нужна
$parents = umiHierarchy::getInstance()->getAllParents($itemElementId, false, true);
foreach($parents as $parent_id){
$page = umiHierarchy::getInstance()->getElement($parent_id); // получаем саму страницу
if(!$page) continue;
$page_type_id = $page->getObject()->getTypeId();
if($page_type_id==128){ //128 type id типа данных "комментарий"
// делаем то что надо... то есть сохраняем название родительской страницы
break;
}
}