/** * Sends a message. * If the list of recipients contains a group, the message is duplicated for each member. * * * @param class_module_messaging_message $objMessage * @param class_module_user_group[]|class_module_user_user[]|class_module_user_group|class_module_user_user $arrRecipients * * @return bool */ public function sendMessageObject(class_module_messaging_message $objMessage, $arrRecipients) { $objValidator = new class_email_validator(); if ($arrRecipients instanceof class_module_user_group || $arrRecipients instanceof class_module_user_user) { $arrRecipients = array($arrRecipients); } $arrRecipients = $this->getRecipientsFromArray($arrRecipients); foreach ($arrRecipients as $objOneUser) { //skip inactive users if ($objOneUser->getIntActive() != 1) { continue; } $objConfig = class_module_messaging_config::getConfigForUserAndProvider($objOneUser->getSystemid(), $objMessage->getObjMessageProvider()); if ($objConfig->getBitEnabled()) { //clone the message $objCurrentMessage = new class_module_messaging_message(); $objCurrentMessage->setStrTitle($objMessage->getStrTitle()); $objCurrentMessage->setStrBody($objMessage->getStrBody()); $objCurrentMessage->setStrUser($objOneUser->getSystemid()); $objCurrentMessage->setStrInternalIdentifier($objMessage->getStrInternalIdentifier()); $objCurrentMessage->setStrMessageProvider($objMessage->getStrMessageProvider()); $objCurrentMessage->setStrMessageRefId($objMessage->getStrMessageRefId()); $objCurrentMessage->setStrSenderId(validateSystemid($objMessage->getStrSenderId()) ? $objMessage->getStrSenderId() : class_carrier::getInstance()->getObjSession()->getUserID()); $objCurrentMessage->updateObjectToDb(); if ($objConfig->getBitBymail() && $objValidator->validate($objOneUser->getStrEmail())) { $this->sendMessageByMail($objCurrentMessage, $objOneUser); } } } }