/** * @return bool */ public function execute() { //loop all messages by user foreach (class_module_user_user::getObjectList() as $objOneUser) { //skip inactive users if ($objOneUser->getIntActive() == 0) { continue; } if (class_module_messaging_message::getNumberOfMessagesForUser($objOneUser->getSystemid(), true) == 0) { continue; } $arrUnreadMessages = array(); foreach (class_module_messaging_message::getObjectList($objOneUser->getSystemid()) as $objOneMessage) { if ($objOneMessage->getBitRead() == 0 && !$objOneMessage->getObjMessageProvider() instanceof class_messageprovider_summary) { $arrUnreadMessages[] = $objOneMessage; } if ($objOneMessage->getBitRead() == 0 && $objOneMessage->getObjMessageProvider() instanceof class_messageprovider_summary) { $objOneMessage->deleteObjectFromDatabase(); } } if (count($arrUnreadMessages) > 0) { $this->createMessageForUser($objOneUser, $arrUnreadMessages); } } //trigger again return false; }
public function testUnreadCount() { $strText = generateSystemid() . " autotest"; $objMessageHandler = new class_module_messaging_messagehandler(); $objMessageHandler->sendMessage($strText, new class_module_user_group(class_module_system_setting::getConfigValue("_admins_group_id_")), new class_messageprovider_exceptions()); $bitFound = false; $objGroup = new class_module_user_group(class_module_system_setting::getConfigValue("_admins_group_id_")); $arrUsers = $objGroup->getObjSourceGroup()->getUserIdsForGroup(); $arrMessages = class_module_messaging_message::getObjectList($arrUsers[0]); $intUnread = class_module_messaging_message::getNumberOfMessagesForUser($arrUsers[0], true); $this->assertTrue($intUnread > 0); $this->flushDBCache(); foreach ($arrMessages as $objOneMessage) { if ($objOneMessage->getStrBody() == $strText && $objOneMessage->getStrMessageProvider() == "class_messageprovider_exceptions") { $bitFound = true; $objOneMessage->setBitRead(true); $objOneMessage->updateObjectToDb(); $this->assertEquals($intUnread - 1, class_module_messaging_message::getNumberOfMessagesForUser($arrUsers[0], true)); $objOneMessage->deleteObjectFromDatabase(); } } $this->assertTrue($bitFound); $this->flushDBCache(); }
/** * Creates a list of the recent messages for the current user. * The structure is returned in an json-format. * * @permissions view * @xml * @autoTestable * * @return string */ protected function actionGetRecentMessages() { class_carrier::getInstance()->getObjSession()->setBitBlockDbUpdate(true); class_session::getInstance()->sessionClose(); class_module_system_changelog::$bitChangelogEnabled = false; class_response_object::getInstance()->setStrResponseType(class_http_responsetypes::STR_TYPE_JSON); $intMaxAmount = $this->getParam("limit") != "" ? $this->getParam("limit") : 5; $arrMessages = class_module_messaging_message::getObjectList($this->objSession->getUserID(), 0, $intMaxAmount - 1); $arrReturn = array(); foreach ($arrMessages as $objOneMessage) { $arrReturn[] = array("systemid" => $objOneMessage->getSystemid(), "title" => $objOneMessage->getStrDisplayName(), "unread" => $objOneMessage->getBitRead(), "details" => class_link::getLinkAdminHref($objOneMessage->getArrModule("modul"), "edit", "&systemid=" . $objOneMessage->getSystemid(), false)); } $arrReturn = array("messages" => $arrReturn, "messageCount" => class_module_messaging_message::getNumberOfMessagesForUser($this->objSession->getUserID(), true)); return json_encode($arrReturn); }