/** * 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); } } } }
/** * Stores the submitted config-data back to the database. * This method stores only one value message for one messageprovider (either "_bymail" or "_enabled"). * * @permissions edit * @xml * * @return string */ protected function actionSaveConfigAjax() { $objHandler = new class_module_messaging_messagehandler(); $arrMessageproviders = $objHandler->getMessageproviders(); $strMessage = ""; foreach ($arrMessageproviders as $objOneProvider) { $objConfig = class_module_messaging_config::getConfigForUserAndProvider($this->objSession->getUserID(), $objOneProvider); //only update the message provider which is set in the param "messageprovidertype" if ($this->getParam("messageprovidertype") == get_class($objOneProvider)) { if ($this->getParam(get_class($objOneProvider) . "_bymail") != "") { $bitA = $this->getParam(get_class($objOneProvider) . "_bymail") == "true"; $objConfig->setBitBymail($bitA); $objConfig->updateObjectToDb(); $strMessage = $objOneProvider->getStrName() . " " . $this->getLang("provider_bymail") . "=" . $this->getParam(get_class($objOneProvider) . "_bymail"); break; } else { if ($this->getParam(get_class($objOneProvider) . "_enabled") != "") { $bitA = $this->getParam(get_class($objOneProvider) . "_enabled") == "true"; $objConfig->setBitEnabled($bitA); $objConfig->updateObjectToDb(); $strMessage = $objOneProvider->getStrName() . " " . $this->getLang("provider_enabled") . "=" . $this->getParam(get_class($objOneProvider) . "_enabled"); break; } } } } return "<message>" . $strMessage . "</message>"; }
/** * Returns the configuration of a single provider for a user. * * @param string $strUserid * @param \interface_messageprovider|string $objProvider * * @return class_module_messaging_config * @static */ public static function getConfigForUserAndProvider($strUserid, interface_messageprovider $objProvider) { $objORM = new class_orm_objectlist(); $objORM->addWhereRestriction(new class_orm_objectlist_restriction("AND config_user = ?", $strUserid)); $objORM->addWhereRestriction(new class_orm_objectlist_restriction("AND config_provider = ?", get_class($objProvider))); $objConfig = $objORM->getSingleObject(get_called_class()); if ($objConfig === null) { $objConfig = new class_module_messaging_config(); $objConfig->setStrUser($strUserid); $objConfig->setStrMessageprovider(get_class($objProvider)); } return $objConfig; }