/** * Formats the content in order to add the welcome message, * the notification preference, etc * @param string $content * @param array $senderInfo result of api_get_user_info() or * GroupPortalManager:get_group_data() * * @return string * */ public function formatContent($content, $senderInfo) { $hook = HookNotificationContent::create(); if (!empty($hook)) { $hook->setEventData(array('content' => $content)); $data = $hook->notifyNotificationContent(HOOK_EVENT_TYPE_PRE); if (isset($data['content'])) { $content = $data['content']; } } $newMessageText = $linkToNewMessage = ''; switch ($this->type) { case self::NOTIFICATION_TYPE_DIRECT_MESSAGE: $newMessageText = $content; $linkToNewMessage = Display::url(get_lang('SeeMessage'), api_get_path(WEB_CODE_PATH) . 'messages/inbox.php'); break; case self::NOTIFICATION_TYPE_MESSAGE: if (!empty($senderInfo)) { $senderName = api_get_person_name($senderInfo['firstname'], $senderInfo['lastname'], null, PERSON_NAME_EMAIL_ADDRESS); $newMessageText = sprintf(get_lang('YouHaveANewMessageFromX'), $senderName); } $linkToNewMessage = Display::url(get_lang('SeeMessage'), api_get_path(WEB_CODE_PATH) . 'messages/inbox.php'); break; case self::NOTIFICATION_TYPE_INVITATION: if (!empty($senderInfo)) { $senderName = api_get_person_name($senderInfo['firstname'], $senderInfo['lastname'], null, PERSON_NAME_EMAIL_ADDRESS); $newMessageText = sprintf(get_lang('YouHaveANewInvitationFromX'), $senderName); } $linkToNewMessage = Display::url(get_lang('SeeInvitation'), api_get_path(WEB_CODE_PATH) . 'social/invitations.php'); break; case self::NOTIFICATION_TYPE_GROUP: $topic_page = intval($_REQUEST['topics_page_nr']); if (!empty($senderInfo)) { $senderName = $senderInfo['group_info']['name']; $newMessageText = sprintf(get_lang('YouHaveReceivedANewMessageInTheGroupX'), $senderName); $senderName = api_get_person_name($senderInfo['user_info']['firstname'], $senderInfo['user_info']['lastname'], null, PERSON_NAME_EMAIL_ADDRESS); $senderName = Display::url($senderName, api_get_path(WEB_CODE_PATH) . 'social/profile.php?' . $senderInfo['user_info']['user_id']); $newMessageText .= '<br />' . get_lang('User') . ': ' . $senderName; } $group_url = api_get_path(WEB_CODE_PATH) . 'social/group_topics.php?id=' . $senderInfo['group_info']['id'] . '&topic_id=' . $senderInfo['group_info']['topic_id'] . '&msg_id=' . $senderInfo['group_info']['msg_id'] . '&topics_page_nr=' . $topic_page; $linkToNewMessage = Display::url(get_lang('SeeMessage'), $group_url); break; } $preference_url = api_get_path(WEB_CODE_PATH) . 'auth/profile.php'; // You have received a new message text if (!empty($newMessageText)) { $content = $newMessageText . '<br /><hr><br />' . $content; } // See message with link text if (!empty($linkToNewMessage) && api_get_setting('message.allow_message_tool') == 'true') { $content = $content . '<br /><br />' . $linkToNewMessage; } // You have received this message because you are subscribed text $content = $content . '<br /><hr><i>' . sprintf(get_lang('YouHaveReceivedThisNotificationBecauseYouAreSubscribedOrInvolvedInItToChangeYourNotificationPreferencesPleaseClickHereX'), Display::url($preference_url, $preference_url)) . '</i>'; if (!empty($hook)) { $hook->setEventData(array('content' => $content)); $data = $hook->notifyNotificationContent(HOOK_EVENT_TYPE_POST); if (isset($data['content'])) { $content = $data['content']; } } return $content; }
/** * This method will call the Hook management deleteHook to disable Hook observer from this plugin * @return int */ public function uninstallHook() { $hookObserver = HookAdvancedSubscription::create(); HookAdminBlock::create()->detach($hookObserver); HookWSRegistration::create()->detach($hookObserver); HookNotificationContent::create()->detach($hookObserver); HookNotificationTitle::create()->detach($hookObserver); }