コード例 #1
0
 /**
  * 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);
             }
         }
     }
 }
コード例 #2
0
 public function testSendMessageObject()
 {
     $strText = generateSystemid() . " autotest";
     $strTitle = generateSystemid() . " title";
     $strIdentifier = generateSystemid() . " identifier";
     $strSender = generateSystemid();
     $strReference = generateSystemid();
     $objMessage = new class_module_messaging_message();
     $objMessage->setStrTitle($strTitle);
     $objMessage->setStrBody($strText);
     $objMessage->setStrInternalIdentifier($strIdentifier);
     $objMessage->setObjMessageProvider(new class_messageprovider_exceptions());
     $objMessage->setStrSenderId($strSender);
     $objMessage->setStrMessageRefId($strReference);
     $objMessageHandler = new class_module_messaging_messagehandler();
     $objMessageHandler->sendMessageObject($objMessage, new class_module_user_group(class_module_system_setting::getConfigValue("_admins_group_id_")));
     $objGroup = new class_module_user_group(class_module_system_setting::getConfigValue("_admins_group_id_"));
     $arrUsers = $objGroup->getObjSourceGroup()->getUserIdsForGroup();
     foreach ($arrUsers as $objOneUser) {
         $bitFound = false;
         $arrMessages = class_module_messaging_message::getObjectList($objOneUser);
         foreach ($arrMessages as $objOneMessage) {
             if ($objOneMessage->getStrBody() == $strText && $objOneMessage->getStrMessageProvider() == "class_messageprovider_exceptions") {
                 $bitFound = true;
                 $this->assertEquals($objOneMessage->getStrTitle(), $strTitle);
                 $this->assertEquals($objOneMessage->getStrInternalIdentifier(), $strIdentifier);
                 $this->assertEquals($objOneMessage->getStrSenderId(), $strSender);
                 $this->assertEquals($objOneMessage->getStrMessageRefId(), $strReference);
                 $this->assertTrue($objOneMessage->deleteObjectFromDatabase());
             }
         }
         $this->assertTrue($bitFound);
     }
     $this->flushDBCache();
 }