%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/mail/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/mail/Events.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2015 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\modules\mail; use humhub\modules\mail\models\Message; use humhub\modules\mail\models\UserMessageTag; use humhub\modules\mail\permissions\StartConversation; use humhub\modules\user\models\User; use Yii; use humhub\modules\mail\helpers\Url; use humhub\modules\mail\models\MessageEntry; use humhub\modules\mail\models\UserMessage; use humhub\modules\mail\widgets\NewMessageButton; use humhub\modules\mail\widgets\NotificationInbox; use humhub\modules\mail\permissions\SendMail; use humhub\modules\mail\models\Config; /** * Description of Events * * @author luke */ class Events { /** * @param $event */ public static function onIntegrityCheck($event) { $integrityController = $event->sender; $integrityController->showTestHeadline("Mail Module (" . Message::find()->count() . " conversations)"); try { foreach (Message::find()->each() as $message) { /* @var $message Message */ if(!$message->getAuthor()->count()) { if ($integrityController->showFix("Deleting conversation id " . $message->id . " without existing author!")) { $message->delete(); } } } $integrityController->showTestHeadline("Mail Module (" . MessageEntry::find()->count() . " message entries)"); foreach (MessageEntry::find()->each() as $messageEntry) { /* @var $messageEntry MessageEntry */ if(!$messageEntry->getUser()->count()) { if ($integrityController->showFix("Deleting message entry id " . $messageEntry->id . " without existing user!")) { $messageEntry->delete(); } } } $integrityController->showTestHeadline("Mail Module (" . UserMessage::find()->count() . " user message entries)"); foreach (UserMessage::find()->each() as $userMessage) { /* @var $userMessage UserMessage */ if(!$userMessage->getUser()->count()) { if ($integrityController->showFix("Deleting user message id " . $userMessage->message_id . " without existing user!")) { $userMessage->delete(); } } } $integrityController->showTestHeadline("Mail Module (" . UserMessageTag::find()->count() . " user message tag entries)"); foreach (UserMessageTag::find()->each() as $messageTag) { /* @var $messageTag UserMessageTag */ if(!$messageTag->getUser()->count()) { if ($integrityController->showFix("Deleting user tag id " . $messageTag->id . " without existing user!")) { $messageTag->delete(); } } } } catch(\Throwable $e) { Yii::error($e); } } /** * On User delete, also delete all comments * * @param type $event * @return bool */ public static function onUserDelete($event) { try { foreach (Message::findAll(['created_by' => $event->sender->id]) as $message) { $message->delete(); } foreach (MessageEntry::findAll(['user_id' => $event->sender->id]) as $messageEntry) { $messageEntry->delete(); } foreach (UserMessage::findAll(['user_id' => $event->sender->id]) as $userMessage) { if($userMessage->message) { $userMessage->message->leave($event->sender->id); } $userMessage->delete(); } foreach (UserMessageTag::findAll(['user_id' => $event->sender->id]) as $userMessageTag) { $userMessageTag->delete(); } } catch(\Throwable $e) { Yii::error($e); } return true; } /** * On build of the TopMenu, check if module is enabled * When enabled add a menu item * * @param type $event */ public static function onTopMenuInit($event) { try { if (Yii::$app->user->isGuest) { return; } $module = Config::getModule(); // See https://github.com/humhub/humhub-modules-mail/issues/201 if (method_exists($module, 'hideInTopNav') && !$module->hideInTopNav()) { $event->sender->addItem([ 'label' => Yii::t('MailModule.base', 'Messages'), 'url' => Url::toMessenger(), 'icon' => '<i class="fa fa-envelope"></i>', 'isActive' => (Yii::$app->controller->module && Yii::$app->controller->module->id == 'mail'), 'sortOrder' => 300, ]); } } catch(\Throwable $e) { Yii::error($e); } } public static function onNotificationAddonInit($event) { try { if (Yii::$app->user->isGuest) { return; } $event->sender->addWidget(NotificationInbox::className(), [], ['sortOrder' => 90]); } catch (\Throwable $e) { Yii::error($e); } } public static function onProfileHeaderControlsInit($event) { try { /** @var User $profileContainer */ $profileContainer = $event->sender->user; if ($profileContainer->isCurrentUser() || !Yii::$app->user->can(StartConversation::class)) { return; } // Is the current logged user allowed to send mails to profile user? if (!Yii::$app->user->isAdmin() && !$profileContainer->can(SendMail::class)) { return; } $event->sender->addWidget(NewMessageButton::class, ['guid' => $event->sender->user->guid, 'size' => null, 'icon' => null], ['sortOrder' => 90]); } catch (\Throwable $e) { Yii::error($e); } } public static function onRestApiAddRules() { /* @var \humhub\modules\rest\Module $restModule */ $restModule = Yii::$app->getModule('rest'); $restModule->addRules([ // Conversations ['pattern' => 'mail', 'route' => 'mail/rest/message/index', 'verb' => 'GET'], ['pattern' => 'mail/<id:\d+>', 'route' => 'mail/rest/message/view', 'verb' => 'GET'], ['pattern' => 'mail', 'route' => 'mail/rest/message/create', 'verb' => 'POST'], // Participants ['pattern' => 'mail/<messageId:\d+>/users', 'route' => 'mail/rest/user/index', 'verb' => 'GET'], ['pattern' => 'mail/<messageId:\d+>/user/<userId:\d+>', 'route' => 'mail/rest/user/add', 'verb' => 'POST'], ['pattern' => 'mail/<messageId:\d+>/user/<userId:\d+>', 'route' => 'mail/rest/user/leave', 'verb' => 'DELETE'], // Entries ['pattern' => 'mail/<messageId:\d+>/entries', 'route' => 'mail/rest/entry/index', 'verb' => 'GET'], ['pattern' => 'mail/<messageId:\d+>/entry', 'route' => 'mail/rest/entry/add', 'verb' => 'POST'], ['pattern' => 'mail/<messageId:\d+>/entry/<entryId:\d+>', 'route' => 'mail/rest/entry/view', 'verb' => 'GET'], ['pattern' => 'mail/<messageId:\d+>/entry/<entryId:\d+>', 'route' => 'mail/rest/entry/update', 'verb' => 'PUT'], ['pattern' => 'mail/<messageId:\d+>/entry/<entryId:\d+>', 'route' => 'mail/rest/entry/delete', 'verb' => 'DELETE'], // Tags ['pattern' => 'mail/<messageId:\d+>/tags', 'route' => 'mail/rest/tag/index', 'verb' => 'GET'], ['pattern' => 'mail/<messageId:\d+>/tags', 'route' => 'mail/rest/tag/update', 'verb' => 'PUT'], ], 'mail'); } }