/** * @param $userId * @return bool */ public function join($userId) { if ($this->isPrivate()) { return false; } if ($this->userIn((int) $userId)) { return true; } //check user status in blog $member = $this->getUserMembership($userId); if (null === $member) { $member = new UserToBlog(); $member->blog_id = $this->id; $member->user_id = (int) $userId; $member->status = (int) $this->member_status; } else { if ($member->isDeleted()) { $member->activate(); } else { return false; } } if ($member->save()) { Yii::app()->eventManager->fire(BlogEvents::BLOG_JOIN, new BlogJoinLeaveEvent($this, $userId)); Yii::app()->getCache()->delete("Blog::Blog::members::{$userId}"); return true; } return false; }