Доброго времени суток!
Копался с livestreet (AltoCMS) и заметил такой глюк, в ленте не показываются посты из закрытых блогов (напрочь), даже если пользователь на них подписан… Не стал разбираться, что там и как должно работать, глянул запрос:
SELECT
t.topic_id
FROM
".Config::Get('db.table.topic')." as t,
".Config::Get('db.table.blog')." as b
WHERE
t.topic_publish = 1
AND t.blog_id=b.blog_id
AND b.blog_type!='close'
{ AND t.topic_id < ?d }
AND ( 1=0 { OR t.blog_id IN (?a) } { OR t.user_id IN (?a) } )
ORDER BY t.topic_id DESC
{ LIMIT 0, ?d }
Я нашел более изящное решение). Вот мой запрос:
SELECT
t.topic_id
FROM
".Config::Get('db.table.topic')." as t,
".Config::Get('db.table.blog')." as b
WHERE
t.topic_publish = 1
AND t.blog_id=b.blog_id
{ AND t.topic_id < ?d }
AND ( false
{ OR t.blog_id IN (?a) }
{ OR (t.user_id IN (?a) AND b.blog_type='personal') }
)
ORDER BY t.topic_id DESC
{ LIMIT 0, ?d }
Теперь стало получше:
— Показываем топики только из блогов на которые подписан пользователь;
— Показываем топики (из персональных блогов) пользователей, на которых подписан пользователь;
Читать дальше →