/** * Get list of actions that a User has on an administrable */ function getActionsOnAdministrable($user_id, $administrable_id) { $user_id = intval($user_id); $administrable_id = intval($administrable_id); $SQL = "SELECT DISTINCT actions.name FROM ((SELECT role_id FROM administrables_roles_users LEFT JOIN administrables_administrables ON administrables_roles_users.administrable_id = administrables_administrables.ancestor_id WHERE user_id = $user_id AND (administrable_id = $administrable_id OR descendant_id = $administrable_id)) UNION (SELECT role_id FROM administrables LEFT JOIN administrables_administrables ON administrables.id = administrables_administrables.ancestor_id WHERE (administrables.id = $administrable_id OR descendant_id = $administrable_id))) AS theRoles JOIN actions_roles ON theRoles.role_id=actions_roles.role_id JOIN actions ON actions_roles.action_id = actions.id"; return $this->query($SQL); }