private function inject_batch_valuation($task_set_id) { $filter = $this->input->post('filter'); $filter = is_array($filter) && count($filter) > 0 ? $filter : $this->get_batch_valuation_filter((int) $task_set_id); $this->store_batch_valuation_filter($filter, (int) $task_set_id); $task_set = new Task_set(); $task_set->get_by_id($task_set_id); $task_set_permissions = new Task_set_permission(); $task_set_permissions->where_related($task_set); $task_set_permissions->where('enabled', 1); $task_set_permissions->get_iterated(); $solutions = new Solution(); $solutions->where_related($task_set); $solutions->group_by('student_id'); if (isset($filter['group']) && (int) $filter['group'] > 0) { $solutions->where_related('student/participant/group', 'id', (int) $filter['group']); } $solutions->get_iterated(); $additional_student_ids = array(0); foreach ($solutions as $solution) { $additional_student_ids[] = $solution->student_id; } $data = array(); if ($task_set->exists()) { $students = new Student(); $students->where_related('participant', 'allowed', 1); $students->where_related('participant/course/task_set', 'id', intval($task_set_id)); if ($task_set_permissions->result_count() == 0) { if (!is_null($task_set->group_id)) { $students->where_related('participant/group', 'id', intval($task_set->group_id)); } } else { $group_ids = array(); foreach ($task_set_permissions as $task_set_permission) { $group_ids[] = (int) $task_set_permission->group_id; } $students->where_in_related('participant/group', 'id', $group_ids); } $students->include_related('solution'); $students->add_join_condition('`solutions`.`task_set_id` = ?', array($task_set->id)); $students->order_by_as_fullname('fullname', 'asc'); $students->order_by('email', 'asc'); if (isset($filter['group']) && (int) $filter['group'] > 0) { $students->where_related('participant/group', 'id', (int) $filter['group']); } $students->or_where_in('id', $additional_student_ids); $students->get_iterated(); foreach ($students as $student) { $data[$student->id] = clone $student; } } $this->parser->assign('batch_valuation_students', $data); }