Вобщем не знаю, что произошло, в БД не лазил, хотя мне кажется дело там, возможно какой то плагин, что то наделал.
Плагин Компании не причем, протестили. Возможно 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);
}
Т.е. сначала получаем роли пользователя в блогах в которых он состоит, вот тут и начинается проблема. Насколько я могу судить создатель блога не имеет ролей в блоге. Может и имеет, но в движке с первого взгляда найти не удалось.
Полагаю имеет смысл исключать только не активированные блоги компаний, без ролей пользователей в обычных блогах.
будем рады если кому то помогли или внесли свою лепту в улучшения плагина.