示例#1
0
 /**
  * Проверяет можно или нет юзеру просматривать блог
  *
  * @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);
 }
示例#2
0
 /**
  * Выполняет отправку приглашения в блог
  * (по внутренней почте и на 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());
 }