records_ref
| record_id | published_id | owner_id | group1 | group2 | group3 | group4 | created_datetime | ... |
| 101 | 103 | 1 | 21 | 12312342353 | ... | |||
| 102 | 104 | 4 | 22 | 12312344355 | ... | |||
| 102 | 105 | 4 | 22 | 12312344355 | ... |
records
| record_id | supertag | body | owner_id | topic | ... |
| 101 | lance@suka:pervajazapis' | %body | 1 | ляляля | ... |
| 102 | somegay@suka:vtorajazapis' | body | 1 | ляляля | ... |
| 104 | gays@suka: | body | 1 | ляляля | ... |
groups
| id* | name | user_id* | type | ... |
| 21 | moyuzel | 1 | 0 | ... |
| 22 | communities | 4 | 0 | ... |
| 23 | members | 3 | 4 | ... |
users_groups
| group_id* | user_id* | ... |
| 21 | 2 | ... |
| 21 | 5 | ... |
| 22 | 3 | ... |
| 23 | 4 | ... |
| 23 | 2 | ... |
users
| id* | login | owner_id | ... |
| 1 | lance@suka | 0 | ... |
| 2 | kukutz@suka | 0 | ... |
| 3 | gays@suka | 4 | ... |
| 4 | somegay@suka | 0 | ... |
| 5 | node@lrpg | 0 | ... |
SELECT m.id
FROM records_ref as m,
groups as g,
groups as gc,
user_groups as ug,
user_groups as ugc
WHERE
( -- сборка ленты по друзьям -- здесь record_id корневых или некорневых рубрик журналов корресп.
(m.published_id in $friends)
)
AND
( -- секьюрити
(m.group1=" " AND gc.user_id=$user AND gc.group_type=5 AND g.group_type=5) OR
( -- получение группы
m.group1 = g.group_id OR m.group2 = g.group_id OR
m.group3 = g.group_id OR m.group4 = g.group_id
)
AND
( -- есть ли запросивший в группе
($user = ug.user_id AND $user=gc.user_id AND gc.group_type=5) OR
($nodeuser = ug.user_id AND $user=gc.user_id AND gc.group_type=5) OR
( ug.user_id = gc.user_id AND ugc.user_id = $user AND gc.group_type=4 )
)
)
AND g.user_id = m.owner_id
AND m.created_datetime < $time
AND g.group_id = ug.group_id
AND gc.group_id = ugc.group_id
ORDER BY m.created_datetime DESC
LIMIT $psize;