/** * Проверяет можно или нет юзеру просматривать блог * * @param ModuleBlog_EntityBlog $oBlog Блог * @param ModuleUser_EntityUser $oUser Пользователь * * @return bool */ public function IsAllowShowBlog($oBlog, $oUser) { if ($oUser && ($oUser->isModerator() || $oUser->isAdministrator() || $oBlog->getOwnerId() == $oUser->getId())) { return true; } if ($oBlogType = $oBlog->getBlogType()) { if ($oBlogType->GetAclRead(ModuleBlog::BLOG_USER_ACL_GUEST)) { return true; } elseif ($oBlogType->GetAclRead(ModuleBlog::BLOG_USER_ACL_USER)) { return $oUser ? true : false; } } return (bool) E::ModuleBlog()->GetBlogsAllowTo('read', $oUser, $oBlog, true); }
/** * Выполняет отправку приглашения в блог * (по внутренней почте и на email) * * @param ModuleBlog_EntityBlog $oBlog * @param ModuleUser_EntityUser $oUser */ protected function SendBlogInvite($oBlog, $oUser) { $sTitle = E::ModuleLang()->Get('blog_user_invite_title', array('blog_title' => $oBlog->getTitle())); F::IncludeLib('XXTEA/encrypt.php'); // Формируем код подтверждения в URL $sCode = $oBlog->getId() . '_' . $oUser->getId(); $sCode = rawurlencode(base64_encode(xxtea_encrypt($sCode, Config::Get('module.blog.encrypt')))); $aPath = array('accept' => R::GetPath('blog') . 'invite/accept/?code=' . $sCode, 'reject' => R::GetPath('blog') . 'invite/reject/?code=' . $sCode); // Сформируем название типа блога на языке приложения. // Это может быть либо название, либо текстовка. $sBlogType = mb_strtolower(preg_match('~^\\{\\{(.*)\\}\\}$~', $sBlogType = $oBlog->getBlogType()->getTypeName(), $aMatches) ? E::ModuleLang()->Get($aMatches[1]) : $sBlogType, 'UTF-8'); $sText = E::ModuleLang()->Get('blog_user_invite_text', array('login' => $this->oUserCurrent->getLogin(), 'accept_path' => $aPath['accept'], 'reject_path' => $aPath['reject'], 'blog_title' => $oBlog->getTitle(), 'blog_type' => $sBlogType)); $oTalk = E::ModuleTalk()->SendTalk($sTitle, $sText, $this->oUserCurrent, array($oUser), false, false); // Отправляем пользователю заявку E::ModuleNotify()->SendBlogUserInvite($oUser, $this->oUserCurrent, $oBlog, R::GetPath('talk') . 'read/' . $oTalk->getId() . '/'); // Удаляем отправляющего юзера из переписки E::ModuleTalk()->DeleteTalkUserByArray($oTalk->getId(), $this->oUserCurrent->getId()); }