public function inject_task_set_possible_groups($task_set_id) { $task_sets = new Task_set(); $task_sets->where('group_id', NULL); $task_sets->include_related('course/group'); $task_sets->where('id', (int) $task_set_id); $task_sets->where_subquery(0, '(SELECT COUNT(`tsp`.`id`) AS `count` FROM `task_set_permissions` tsp WHERE `tsp`.`task_set_id` = `task_sets`.`id` AND `tsp`.`enabled` = 1)'); $task_sets2 = new Task_set(); $task_sets2->where('id', (int) $task_set_id); $task_sets2->include_related('task_set_permission/group', '*', 'course_group'); $task_sets2->where_related('task_set_permission', 'enabled', 1); $task_sets2->group_start(' NOT '); $task_sets2->or_where_subquery(0, '(SELECT COUNT(`tsp`.`id`) AS `count` FROM `task_set_permissions` tsp WHERE `tsp`.`task_set_id` = `task_sets`.`id` AND `tsp`.`enabled` = 1)'); $task_sets2->or_where_subquery(1, '(SELECT COUNT(`tsp`.`id`) AS `count` FROM `task_set_permissions` tsp WHERE `tsp`.`task_set_id` = `task_sets`.`id` AND `tsp`.`enabled` = 1)'); $task_sets2->group_end(); $task_sets->union_iterated($task_sets2, FALSE, $task_sets->union_order_by_constant('course_group_name', 'asc')); $data = array('' => ''); foreach ($task_sets as $task_set) { $data[$task_set->course_group_id] = $task_set->course_group_name; } $this->parser->assign('possible_groups', $data); }