У меня вот такой КОСЯК с ЗАКРЫТЫМИ блогами

Вобщем не знаю, что произошло, в БД не лазил, хотя мне кажется дело там, возможно какой то плагин, что то наделал.

Плагин Компании не причем, протестили. Возможно aceBlogEx… что то в свое время нафигачил, но сейчас уже не используем.

Вобщем вот порядок косяков:
1. Люди создают закрытый блог, но при публикации топика не видет его в выборе, хотя они там админ, а главный админ видит у себя.
2. При публикации админов топика в закрытый блог он почему то появляется в ленте компаний!!! и в ленте блогов.

В чем может быть беда? Скину денег скока надо, если поможете :)

UPD
все таки всему виной плагин «Компании», но честно скажу возможно это уникальный случай, так как общался с gran с разработчиком плагина он показывал на тесте что у него все ок по этому вопросу, поэтому где то у меня что то. Вот как мой теперь уже очень хороший знакомый :) помог решить проблему.

1. открываем файл /plugins/company/classes/modules/blog/Blog.class.php

2. меняем код
public function GetBlogsAllowByUser($oUser) {
        $aAllowBlogsUser = parent::GetBlogsAllowByUser($oUser);
        //если используется активация то отдаем только блоги активированных компаний
        if (Config::Get('module.company.use_activate') and !$oUser->isAdministrator()) {
            $aInaccessible = $this->GetInaccessibleBlogsByUser($oUser);
            $aReturn = array();
            foreach ($aAllowBlogsUser as $aRow) {
                if (!in_array($aRow->getId(),$aInaccessible))
                    $aReturn[$aRow->getId()]=$aRow;
            }
            return $aReturn;
        }
        return $aAllowBlogsUser;
    }


поменять на

public function GetBlogsAllowByUser($oUser) {
        $aAllowBlogsUser = parent::GetBlogsAllowByUser($oUser);
        //если используется активация то отдаем только блоги активированных компаний
        if (Config::Get('module.company.use_activate') and !$oUser->isAdministrator()) {
            $aInaccessible = $this->PluginCompany_Company_GetInaccessibleCompanyBlogs(); //$this->GetInaccessibleBlogsByUser($oUser);
            $aReturn = array();
            foreach ($aAllowBlogsUser as $aRow) {
                if (!in_array($aRow->getId(),$aInaccessible))
                    $aReturn[$aRow->getId()]=$aRow;
            }
            return $aReturn;
        }
        return $aAllowBlogsUser;
    }


3. суть в чем
Есть механизм определяющий все блоги куда может публиковать пользователь Blog_GetBlogsAllowByUser

В плагине есть переопределение данного метода

public function GetBlogsAllowByUser($oUser) {
        $aAllowBlogsUser = parent::GetBlogsAllowByUser($oUser);
        //если используется активация то отдаем только блоги активированных компаний
        if (Config::Get('module.company.use_activate') and !$oUser->isAdministrator()) {
            $aInaccessible = $this->GetInaccessibleBlogsByUser($oUser);
            $aReturn = array();
            foreach ($aAllowBlogsUser as $aRow) {
                if (!in_array($aRow->getId(),$aInaccessible))
                    $aReturn[$aRow->getId()]=$aRow;
            }
            return $aReturn;
        }
        return $aAllowBlogsUser;
    }

Все дело в $this->GetInaccessibleBlogsByUser($oUser), этот метод кстати тоже переопределен

public function GetInaccessibleBlogsByUser($oUser=null) {
  $aCloseBlogs = parent::GetInaccessibleBlogsByUser($oUser);
  $aCloseInactiveBlogs = $this->PluginCompany_Company_GetInaccessibleCompanyBlogs(); //print_r($aCloseInactiveBlogs);
  return array_merge($aCloseBlogs,$aCloseInactiveBlogs);
 }


Т.е. сначала получаем роли пользователя в блогах в которых он состоит, вот тут и начинается проблема. Насколько я могу судить создатель блога не имеет ролей в блоге. Может и имеет, но в движке с первого взгляда найти не удалось.
Полагаю имеет смысл исключать только не активированные блоги компаний, без ролей пользователей в обычных блогах.

будем рады если кому то помогли или внесли свою лепту в улучшения плагина.

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.