/**
  * 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]));
 }