Exemple #1
0
 /**
  * On User delete, also delete his space related stuff
  *
  * @param type $event
  */
 public static function onUserDelete($event)
 {
     $user = $event->sender;
     // Check if the user owns some spaces
     foreach (Membership::GetUserSpaces($user->id) as $space) {
         if ($space->isSpaceOwner($user->id)) {
             throw new HttpException(500, Yii::t('SpaceModule.base', 'Could not delete user who is a space owner! Name of Space: {spaceName}', array('spaceName' => $space->name)));
         }
     }
     // Cancel all space memberships
     foreach (Membership::findAll(array('user_id' => $user->id)) as $membership) {
         $membership->space->removeMember($user->id);
     }
     // Cancel all space invites by the user
     foreach (Membership::findAll(array('originator_user_id' => $user->id, 'status' => Membership::STATUS_INVITED)) as $membership) {
         $membership->space->removeMember($membership->user_id);
     }
     return true;
 }
Exemple #2
0
 /**
  * @inheritdoc
  */
 public function beforeDelete()
 {
     foreach (Setting::findAll(['space_id' => $this->id]) as $spaceSetting) {
         $spaceSetting->delete();
     }
     foreach ($this->getAvailableModules() as $moduleId => $module) {
         if ($this->isModuleEnabled($moduleId)) {
             $this->disableModule($moduleId);
         }
     }
     Yii::$app->search->delete($this);
     $this->getProfileImage()->delete();
     \humhub\modules\user\models\Follow::deleteAll(['object_id' => $this->id, 'object_model' => 'Space']);
     foreach (Membership::findAll(['space_id' => $this->id]) as $spaceMembership) {
         $spaceMembership->delete();
     }
     \humhub\modules\user\models\Invite::deleteAll(['space_invite_id' => $this->id]);
     // When this workspace is used in a group as default workspace, delete the link
     foreach (\humhub\modules\user\models\Group::findAll(['space_id' => $this->id]) as $group) {
         $group->space_id = "";
         $group->save();
     }
     return parent::beforeDelete();
 }
 /**
  * Members Administration Action
  */
 public function actionMembers()
 {
     $membersPerPage = 20;
     $space = $this->getSpace();
     // User Role Management
     if (isset($_POST['users'])) {
         $users = Yii::$app->request->post('users');
         // Loop over all users in Form
         foreach ($users as $userGuid) {
             // Get informations
             if (isset($_POST['user_' . $userGuid])) {
                 $userSettings = Yii::$app->request->post('user_' . $userGuid);
                 $user = User::findOne(['guid' => $userGuid]);
                 if ($user != null) {
                     // No changes on the Owner
                     if ($space->isSpaceOwner($user->id)) {
                         continue;
                     }
                     $membership = \humhub\modules\space\models\Membership::findOne(['user_id' => $user->id, 'space_id' => $space->id]);
                     if ($membership != null) {
                         $membership->invite_role = isset($userSettings['inviteRole']) && $userSettings['inviteRole'] == 1 ? 1 : 0;
                         $membership->admin_role = isset($userSettings['adminRole']) && $userSettings['adminRole'] == 1 ? 1 : 0;
                         $membership->share_role = isset($userSettings['shareRole']) && $userSettings['shareRole'] == 1 ? 1 : 0;
                         $membership->save();
                     }
                 }
             }
         }
         // Change owner if changed
         if ($space->isSpaceOwner()) {
             $owner = $space->getSpaceOwner();
             $newOwnerId = Yii::$app->request->post('ownerId');
             if ($newOwnerId != $owner->id) {
                 if ($space->isMember($newOwnerId)) {
                     $space->setSpaceOwner($newOwnerId);
                     // Redirect to current space
                     return $this->redirect($space->createUrl('admin/members'));
                 }
             }
         }
         Yii::$app->getSession()->setFlash('data-saved', Yii::t('SpaceModule.controllers_AdminController', 'Saved'));
     }
     // Updated Users
     $query = $space->getMemberships();
     #$query = Membership::find();
     // Allow User Searches
     $search = Yii::$app->request->post('search');
     if ($search != "") {
         $query->joinWith('user');
         $query->andWhere('user.username LIKE :search OR user.email LIKE :search', [':search' => '%' . $search . '%']);
     }
     $countQuery = clone $query;
     $pagination = new \yii\data\Pagination(['totalCount' => $countQuery->count(), 'pageSize' => $membersPerPage]);
     $query->offset($pagination->offset)->limit($pagination->limit);
     $invitedMembers = Membership::findAll(['space_id' => $space->id, 'status' => Membership::STATUS_INVITED]);
     $members = $query->all();
     return $this->render('members', array('space' => $space, 'pagination' => $pagination, 'members' => $members, 'invited_members' => $invitedMembers, 'search' => $search));
 }
 /**
  * Remove Membership
  *
  * @param $userId UserId of User to Remove
  */
 public function removeMember($userId = "")
 {
     if ($userId == "") {
         $userId = Yii::$app->user->id;
     }
     $user = User::findOne(['id' => $userId]);
     $membership = $this->getMembership($userId);
     if ($this->isSpaceOwner($userId)) {
         return false;
     }
     if ($membership == null) {
         return true;
     }
     // If was member, create a activity for that
     if ($membership->status == Membership::STATUS_MEMBER) {
         $activity = new \humhub\modules\space\activities\MemberRemoved();
         $activity->source = $this->owner;
         $activity->originator = $user;
         $activity->create();
     } elseif ($membership->status == Membership::STATUS_INVITED && $membership->originator !== null) {
         // Was invited, but declined the request - inform originator
         $notification = new \humhub\modules\space\notifications\InviteDeclined();
         $notification->source = $this->owner;
         $notification->originator = $user;
         $notification->send($membership->originator);
     } elseif ($membership->status == Membership::STATUS_APPLICANT) {
         $notification = new \humhub\modules\space\notifications\ApprovalRequestDeclined();
         $notification->source = $this->owner;
         $notification->originator = Yii::$app->user->getIdentity();
         $notification->send($user);
     }
     foreach (Membership::findAll(['user_id' => $userId, 'space_id' => $this->owner->id]) as $membership) {
         $membership->delete();
     }
     $notificationApproval = new \humhub\modules\space\notifications\ApprovalRequest();
     $notificationApproval->source = $this->owner;
     $notificationApproval->originator = $user;
     $notificationApproval->delete();
     $notificationInvite = new \humhub\modules\space\notifications\Invite();
     $notificationInvite->source = $this->owner;
     $notificationInvite->delete($user);
 }