Ne verujem da ćemo sa našim rešenjem zagrditi baš ovoliko, ali me nervira kako stvari trenutno izgledaju (o ovome sam pričao na meetupu prošli vikend):
Kôd:
SELECT acx_activity_logs.*
FROM acx_activity_logs, acx_project_objects
WHERE acx_activity_logs.object_id = acx_project_objects.id AND ((acx_project_objects.project_id = '23' AND (acx_project_objects.type IN ('discussion', 'page', 'ticket', 'timerecord') OR acx_project_objects.parent_type IN ('discussion', 'page', 'ticket', 'timerecord'))) OR (acx_project_objects.project_id = 31)) AND acx_activity_logs.created_by_id != '3' AND acx_project_objects.state >= '1' AND acx_project_objects.visibility >= '1'
ORDER BY acx_activity_logs.created_on DESC
LIMIT 0, 15
Problem je ovaj deo:
Kôd:
((acx_project_objects.project_id = '23' AND (acx_project_objects.type IN ('discussion', 'page', 'ticket', 'timerecord') OR acx_project_objects.parent_type IN ('discussion', 'page', 'ticket', 'timerecord'))) OR (acx_project_objects.project_id = 31))
Pošto svaki korisnik na svakom projektu može imati različite dozvole (na nekima sme da vidi tickete, na nekima ne pa tako za svaki) tipovi koje sistem traži nisu poznati unapred, već se na osnovu dozvola i projekta određuju. Ovaj deo uslova se množi brojem aktivnih projekata kojima korisnik ima pristup (gore je primer samo za jedan).
Kao što rekoh, nismo zagrdili kao ovi gore, ali mi se rešenje ne sviđa previše.