%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/mail/
Upload File :
Create Path :
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');
    }

}

Zerion Mini Shell 1.0