Лента - отделяем блоги от пользователей

Доброго времени суток!

Копался с 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 }


Теперь стало получше:
— Показываем топики только из блогов на которые подписан пользователь;
— Показываем топики (из персональных блогов) пользователей, на которых подписан пользователь;

Читать дальше →