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;
 }
Example #3
0
 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);
 }