/** * Invites a registered user to this space * * If user is already invited, retrigger invitation. * If user is applicant approve it. * * @param type $userId * @param type $originatorUserId */ public function inviteMember($userId, $originatorUserId) { $membership = $this->getMembership($userId); if ($membership != null) { // User is already member if ($membership->status == Membership::STATUS_MEMBER) { return; } // User requested already membership, just approve him if ($membership->status == Membership::STATUS_APPLICANT) { $this->addMember(Yii::$app->user->id); return; } // Already invite, reinvite him if ($membership->status == Membership::STATUS_INVITED) { // Remove existing notification $notification = new \humhub\modules\space\notifications\Invite(); $notification->source = $this->owner; $notification->delete(User::findOne(['id' => $userId])); } } else { $membership = new Membership(); } $membership->space_id = $this->owner->id; $membership->user_id = $userId; $membership->originator_user_id = $originatorUserId; $membership->status = Membership::STATUS_INVITED; $membership->invite_role = 0; $membership->admin_role = 0; $membership->share_role = 0; if (!$membership->save()) { throw new \yii\base\Exception("Could not save membership!" . print_r($membership->getErrors(), 1)); } $notification = new \humhub\modules\space\notifications\Invite(); $notification->source = $this->owner; $notification->originator = User::findOne(['id' => $originatorUserId]); $notification->send(User::findOne(['id' => $userId])); }