Тема навеяна из обсуждений на форуме.
Хак для того, чтобы записи на стене и в блоги закрытых клубов в ленте активности видели только участники клубов. В полной мере возвращается назначение закрытых клубов.
Итак, открываем файл /core/classes/actions.class.php и находим строку примерно 290 со следующим запросом
Прямо перед запросом вставляем следующий код
И всё. Обсуждаем всякие тайны в закрытых клубах и наслаждаемся тем, что другие не видят )
За оптимальность решения не ручаюсь. Возможно, можно было найти более простое. Например, создать поле в БД и заносить туда id участников клуба. Тогда пришлось бы заносить изменения в нескольких файлах. Предпочел более простой для конечного пользователя вариант(изменение в одном файле).
Приятного пользования!
Хак для того, чтобы записи на стене и в блоги закрытых клубов в ленте активности видели только участники клубов. В полной мере возвращается назначение закрытых клубов.
Итак, открываем файл /core/classes/actions.class.php и находим строку примерно 290 со следующим запросом
$sql = "SELECT log.id as id, log.object as object, log.object_url as object_url, log.target as target, log.target_url as target_url, log.pubdate as pubdate, log.description as description, a.message as message, a.name as name, u.nickname as user_nickname, u.login as user_login
//начало хака для скрытия комментариев приватных клубов в ленте //выбираем все закрытые клубы $pr_sql = "SELECT cc.id, cc.admin_id, cuc.club_id, cuc.user_id FROM cms_clubs cc LEFT JOIN cms_user_clubs cuc ON cuc.club_id = cc.id WHERE cc.clubtype = 'private' "; $pr_result = $inDB->query($pr_sql); if($inDB->num_rows($pr_result)){ //если пользователь, опрделеяем закрытые клубы в которых не состоит if($inUser->id){ while($club = $inDB->fetch_assoc($pr_result)){ if(($club['admin_id'] != $inUser->id) && ($club['user_id'] != $inUser->id)){ $clubs[] = $club['id']; } } if($clubs){ //отбрасываем повторяющиеся клубы //готовим условие (action_id=24(25)- добавление комментов и постов в клуб) foreach($uniq_clubs as $key=>$value){ $url_clubs[] = "'/clubs/".$value."'"; } $condition = "((log.action_id = 24 AND log.object_url NOT IN{$cond_list}) OR log.action_id != 24)"; $condition .= " AND ((log.action_id = 25 AND log.target_url NOT IN{$cond_list}) OR log.action_id != 25)"; $this->where($condition); } }else{ while($club = $inDB->fetch_assoc($pr_result)){ $clubs[] = $club['id']; } //отбрасываем повторяющиеся клубы //готовим условие (action_id=24(25)- добавление комментов и постов в клуб) foreach($uniq_clubs as $key=>$value){ $url_clubs[] = "'/clubs/".$value."'"; } $condition = "((log.action_id = 24 AND log.object_url NOT IN{$cond_list}) OR log.action_id != 24)"; $condition .= " AND ((log.action_id = 25 AND log.target_url NOT IN{$cond_list}) OR log.action_id != 25)"; $this->where($condition); } } //конец кода хака для скрытия комментариев приватных клубов в ленте
За оптимальность решения не ручаюсь. Возможно, можно было найти более простое. Например, создать поле в БД и заносить туда id участников клуба. Тогда пришлось бы заносить изменения в нескольких файлах. Предпочел более простой для конечного пользователя вариант(изменение в одном файле).
Приятного пользования!
Реклама #
qwest 13 лет назад #
Марат 13 лет назад #
А если всерьез, там еще много модулей, где комментарии и посты с приватных клубов выводятся публично. Так что, скорее всего увидят.
WALTERZ 13 лет назад #
СергейП 12 лет назад #