%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/space/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/space/Events.php |
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2018 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\modules\space;
use humhub\modules\space\permissions\SpaceDirectoryAccess;
use humhub\modules\ui\menu\MenuLink;
use humhub\modules\user\events\UserEvent;
use humhub\modules\space\models\Space;
use humhub\modules\space\models\Membership;
use humhub\modules\space\helpers\MembershipHelper;
use Yii;
use yii\base\BaseObject;
use humhub\components\Event;
/**
* Events provides callbacks for all defined module events.
*
* @author luke
*/
class Events extends BaseObject
{
/**
* On rebuild of the search index, rebuild all space records
*
* @param Event $event
*/
public static function onSearchRebuild($event)
{
foreach (Space::find()->each() as $space) {
Yii::$app->search->add($space);
}
}
/**
* Callback on user soft deletion
*
* @param UserEvent $event
*/
public static function onUserSoftDelete(UserEvent $event)
{
$user = $event->user;
// Delete spaces which this user owns
foreach (MembershipHelper::getOwnSpaces($user) as $ownedSpace) {
$ownedSpace->delete();
}
// Cancel all space memberships
foreach (Membership::findAll(['user_id' => $user->id]) as $membership) {
// Avoid activities
$membership->delete();
}
// Cancel all space invites by the user
foreach (Membership::findAll(['originator_user_id' => $user->id, 'status' => Membership::STATUS_INVITED]) as $membership) {
// Avoid activities
$membership->delete();
}
}
/**
* Callback to validate module database records.
*
* @param Event $event
*/
public static function onIntegrityCheck($event)
{
$integrityController = $event->sender;
$integrityController->showTestHeadline("Space Module - Spaces (" . Space::find()->count() . " entries)");
foreach (Space::find()->each() as $space) {
foreach ($space->applicants as $applicant) {
if ($applicant->user == null) {
if ($integrityController->showFix("Deleting applicant record id " . $applicant->id . " without existing user!")) {
$applicant->delete();
}
}
}
}
$integrityController->showTestHeadline("Space Module - Memberships (" . models\Membership::find()->count() . " entries)");
foreach (models\Membership::find()->joinWith('space')->each() as $membership) {
if ($membership->space == null) {
if ($integrityController->showFix("Deleting space membership " . $membership->space_id . " without existing space!")) {
$membership->delete();
}
}
if ($membership->user == null) {
if ($integrityController->showFix("Deleting space membership " . $membership->user_id . " without existing user!")) {
$membership->delete();
}
}
}
}
/**
* On build of the TopMenu
*
* @param Event $event
*/
public static function onTopMenuInit($event)
{
/** @var Module $module */
$module = Yii::$app->getModule('space');
if ($module->hideSpacesPage) {
return;
}
if (!Yii::$app->user->isGuest &&
!Yii::$app->user->can(SpaceDirectoryAccess::class)) {
return;
}
$event->sender->addEntry(new MenuLink([
'id' => 'spaces',
'icon' => 'dot-circle-o',
'label' => Yii::t('SpaceModule.base', 'Spaces'),
'url' => ['/space/spaces'],
'sortOrder' => 250,
'isActive' => MenuLink::isActiveState('space', 'spaces'),
]));
}
}