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