UMIhelp

Разработка дополнительного функционала => Custom макросы => Тема начата: igor84 от 08 Апреля 2013, 20:09:31

Название: Получить название страницы с которой отправлен комментарий
Отправлено: igor84 от 08 Апреля 2013, 20:09:31
Разбираюсь с 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;
   }
}

Задача усложняется тем что комментарии у меня вложенные и просто взять парент страницы не получится
Подскажите пожалуйста, как правильно сделать.
Название: Re:Получить название страницы с которой отправлен комментарий
Отправлено: admin от 22 Мая 2013, 10:51:06
берешь всех родителей  своего комментария и перебирая каждого их них проверяешь их тип данных, если он не является комментарием, то это та страница которая тебе нужна

$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;
}
}
Название: Re:Получить название страницы с которой отправлен комментарий
Отправлено: igor84 от 27 Мая 2013, 12:07:25
admin, понял. Спасибо.