public function onDispatchChanges(iUmiEventPoint $oEvent) { $sTemplate = "default"; try { list($sTemplateSubject, $sTemplateMessage) = def_module::loadTemplatesForMail("forum/mails/".$sTemplate, "mail_subject", "mail_message"); } catch (publicException $e) { return false; } $iTopicId = $oEvent->getParam("topic_id"); $iMessageId = $oEvent->getParam("message_id"); $message = umiHierarchy::getInstance()->getElement($iMessageId); $sel = new selector('objects'); $sel->types('object-type')->name("users", "user"); $sel->where('subscribed_pages')->equals($iTopicId); if (!$sel->length()) return false; $hierarchy = umiHierarchy::getInstance(); $block_arr = Array(); $sTemplateSubject = def_module::parseTemplateForMail($sTemplateSubject, $block_arr, $iMessageId); $sFromEmail = regedit::getInstance()->getVal("//settings/email_from"); $sFromFio = regedit::getInstance()->getVal("//settings/fio_from"); $oMail = new umiMail(); $oMail->setFrom($sFromEmail, $sFromFio); $oMail->setSubject($sTemplateSubject); foreach($sel->result() as $oUser) { $oMailUser = clone $oMail; $sUserMail = $oUser->getValue('e-mail'); $block_arr['h1'] = $message->getValue('h1'); $block_arr['message'] = $message->getValue('message'); $hierarchy->forceAbsolutePath(true); $block_arr['unsubscribe_link'] = $hierarchy->getPathById($iTopicId) . "?unsubscribe=" . base64_encode($iUserId); $sTemplateMessageUser = def_module::parseTemplateForMail($sTemplateMessage, $block_arr, $iMessageId); $oMailUser->setContent($sTemplateMessageUser); $hierarchy->forceAbsolutePath(false); if (umiMail::checkEmail($sUserMail)) { $sUserFio = $oUser->getValue('lname') . " ". $oUser->getValue('fname') . " " . $oUser->getValue('father_name'); $oMailUser->addRecipient($sUserMail, $sUserFio); $oMailUser->commit(); $oMailUser->send(); } else continue; } return true; }
public function confirmUserAnswer($oElement) { $bConfirmUserAnswer = (bool) regedit::getInstance()->getVal("//modules/faq/confirm_user_answer"); if (!$bConfirmUserAnswer) { return true; } if ($oElement instanceof umiHierarchyElement && $oElement->getIsActive()) { $iAuthorId = $oElement->getValue("author_id"); $author_name = ""; $author_email = ""; $oAuthor = umiObjectsCollection::getInstance()->getObject($iAuthorId); if ($oAuthor instanceof umiObject) { $author_user = null; if ($oAuthor->getValue("is_registrated")) { $user_id = $oAuthor->getValue("user_id"); $author_user = umiObjectsCollection::getInstance()->getObject($user_id); } if ($author_user instanceof umiObject) { // author user $author_name = $author_user->getValue("lname") . " " . $author_user->getValue("fname"); $author_email = $author_user->getValue("e-mail"); } else { // author guest $author_name = $oAuthor->getValue("nickname"); $author_email = $oAuthor->getValue("email"); } } if (umiMail::checkEmail($author_email)) { list($sMailSubject, $sMailBody) = def_module::loadTemplatesForMail("faq/default", "answer_mail_subj", "answer_mail"); $block_arr = array(); $block_arr['domain'] = $sDomain = $_SERVER['HTTP_HOST']; $block_arr['element_id'] = $iElementId = $oElement->getId(); $block_arr['author_id'] = $oElement->getValue("author_id"); $bOldFHStatus = umiHierarchy::getInstance()->forceAbsolutePath(true); $block_arr['question_link'] = umiHierarchy::getInstance()->getPathById($iElementId); umiHierarchy::getInstance()->forceAbsolutePath($bOldFHStatus); $block_arr['ticket'] = $iElementId; $sSubject = def_module::parseTemplateForMail($sMailSubject, $block_arr, $iElementId); $sBody = def_module::parseTemplateForMail($sMailBody, $block_arr, $iElementId); $from = regedit::getInstance()->getVal("//settings/fio_from"); $from_email = regedit::getInstance()->getVal("//settings/email_from"); $oMail = new umiMail(); $oMail->addRecipient($author_email); $oMail->setFrom($from_email, $from); $oMail->setSubject($sSubject); $oMail->setContent($sBody); $oMail->commit(); } } return true; }
public function subscribe_do() { $sResult = ""; // input $sSbsMail = trim(getRequest('sbs_mail')); $sSbsLName = getRequest('sbs_lname'); $sSbsFName = getRequest('sbs_fname'); $iSbsGender = (int) getRequest('sbs_gender'); $sSbsFatherName = getRequest('sbs_father_name'); $arrSbsDispatches = getRequest('subscriber_dispatches'); if (is_array($arrSbsDispatches)) { $arrSbsDispatches = array_map('intval', $arrSbsDispatches); } else { $arrSbsDispatches = array(); } $controller = cmsController::getInstance(); $templater = $controller->getCurrentTemplater(); $oSubscriber = null; // check user registred $this->is_auth = false; if ($oMdlUsers = $controller->getModule("users")) { if ($oMdlUsers->is_auth()) { $iUserId = (int) $oMdlUsers->user_id; $this->is_auth = true; $this->user_id = $iUserId; if ($oUserObj = umiObjectsCollection::getInstance()->getObject($iUserId)) { $sSbsMail = $oUserObj->getValue("e-mail"); $sSbsLName = $oUserObj->getValue("lname"); $sSbsFName = $oUserObj->getValue("fname"); $sSbsFatherName = $oUserObj->getValue("father_name"); $iSbsGender = $oUserObj->getValue("gender"); } $oSubscriber = self::getSubscriberByUserId($iUserId); } elseif (umiMail::checkEmail($sSbsMail)) { $oSubscriber = self::getSubscriberByMail($sSbsMail); $arrSbsDispatches = self::getAllDispatches(); } else { $sResult = "%subscribe_incorrect_email%"; return !def_module::isXSLTResultMode() ? $sResult : array("result" => $sResult); } if (!$oSubscriber instanceof umiObject && !empty($sSbsMail)) { $oSubscriber = self::getSubscriberByMail($sSbsMail); } } elseif (!umiMail::checkEmail($sSbsMail)) { $sResult = "%subscribe_incorrect_email%"; return !def_module::isXSLTResultMode() ? $sResult : array("result" => $sResult); } if ($oSubscriber instanceof umiObject) { $iSbsObjId = $oSubscriber->getId(); if (!$this->is_auth) { list($template_block) = def_module::loadTemplates("dispatches/default", "subscribe_guest_alredy_subscribed"); $block_arr = array(); $block_arr['unsubscribe_link'] = $this->pre_lang . "/dispatches/unsubscribe/" . $oSubscriber->getId() . "/?email=" . $oSubscriber->name; return def_module::parseTemplate($template_block, $block_arr); } } else { // create sbs $iSbsHierarchyTypeId = umiHierarchyTypesCollection::getInstance()->getTypeByName("dispatches", "subscriber")->getId(); $iSbsTypeId = umiObjectTypesCollection::getInstance()->getTypeByHierarchyTypeId($iSbsHierarchyTypeId); $iSbsObjId = umiObjectsCollection::getInstance()->addObject($sSbsMail, $iSbsTypeId); } if (count($arrSbsDispatches)) { $from = regedit::getInstance()->getVal("//settings/fio_from"); $from_email = regedit::getInstance()->getVal("//settings/email_from"); list($template_mail, $template_mail_subject) = def_module::loadTemplatesForMail("dispatches/default", "subscribe_confirm", "subscribe_confirm_subject"); $mail_arr = array(); $mail_arr['domain'] = $domain = $_SERVER['HTTP_HOST']; $mail_arr['unsubscribe_link'] = "http://" . $domain . $this->pre_lang . "/dispatches/unsubscribe/" . $iSbsObjId . "/?email=" . $sSbsMail; $mail_subject = def_module::parseTemplateForMail($template_mail_subject, $mail_arr); $mail_content = def_module::parseTemplateForMail($template_mail, $mail_arr); $confirmMail = new umiMail(); $confirmMail->addRecipient($sSbsMail); $confirmMail->setFrom($from_email, $from); $confirmMail->setSubject($mail_subject); $confirmMail->setContent($mail_content); $confirmMail->commit(); } // try get object $oSubscriber = umiObjectsCollection::getInstance()->getObject($iSbsObjId); if ($oSubscriber instanceof umiObject) { $oSubscriber->setName($sSbsMail); $oSubscriber->setValue('lname', $sSbsLName); $oSubscriber->setValue('fname', $sSbsFName); $oSubscriber->setValue('father_name', $sSbsFatherName); $oCurrDate = new umiDate(time()); $oSubscriber->setValue('subscribe_date', $oCurrDate); $oSubscriber->setValue('gender', $iSbsGender); if ($this->is_auth) { $oSubscriber->setValue('uid', $this->user_id); $oSubscriber->setValue('subscriber_dispatches', $arrSbsDispatches); $sDispForm = "%subscribe_subscribe_user%:<br /><ul>%rows%</ul>"; $sDispFormRow = "<li>%disp_name%</li>"; $sResult = self::parseDispatches($sDispForm, $sDispFormRow, $arrSbsDispatches, true); } else { // subscriber has all dispatches $oSubscriber->setValue('subscriber_dispatches', $arrSbsDispatches); $sResult = "%subscribe_subscribe%"; } $oSubscriber->commit(); } return !def_module::isXSLTResultMode() ? $sResult : array("result" => $sResult); }