Esempio n. 1
0
 public function clone_task_set()
 {
     $url = $this->uri->ruri_to_assoc(3);
     $task_set_id = isset($url['task_set_id']) ? intval($url['task_set_id']) : 0;
     $result = new stdClass();
     $result->result = FALSE;
     $result->message = $this->lang->line('admin_task_sets_error_task_set_not_found');
     if ($task_set_id !== 0) {
         $this->_transaction_isolation();
         $this->db->trans_begin();
         $task_set = new Task_set();
         $task_set->get_by_id($task_set_id);
         if ($task_set->exists()) {
             $new_task_set = $task_set->get_copy();
             $new_task_set->published = 0;
             if ($new_task_set->save()) {
                 $this->lang->clone_overlays('task_sets', $task_set->id, $new_task_set->id);
                 $tasks = new Task();
                 $tasks->include_join_fields();
                 $tasks->where_related_task_set($task_set);
                 $tasks->get_iterated();
                 foreach ($tasks as $task) {
                     $new_task_set->save_task($task);
                     $task->set_join_field($new_task_set, 'sorting', $task->join_sorting);
                     $task->set_join_field($new_task_set, 'points_total', $task->join_points_total);
                     $task->set_join_field($new_task_set, 'test_min_points', $task->join_test_min_points);
                     $task->set_join_field($new_task_set, 'test_max_points', $task->join_test_max_points);
                     $task->set_join_field($new_task_set, 'bonus_task', $task->join_bonus_task);
                     $task->set_join_field($new_task_set, 'max_projects_selections', $task->join_max_projects_selections);
                 }
                 $task_set_permissions = new Task_set_permission();
                 $task_set_permissions->where_related($task_set);
                 $task_set_permissions->get_iterated();
                 foreach ($task_set_permissions as $task_set_permission) {
                     $new_task_set_permission = $task_set_permission->get_copy();
                     $new_task_set_permission->save($new_task_set);
                 }
                 if ($this->db->trans_status()) {
                     $this->db->trans_commit();
                     $result->result = TRUE;
                     $result->message = $this->lang->line('admin_task_sets_success_task_set_cloned');
                     $this->_action_success();
                 } else {
                     $this->db->trans_rollback();
                     $result->message = $this->lang->line('admin_task_sets_error_task_set_cant_be_cloned');
                 }
             } else {
                 $this->db->trans_rollback();
                 $result->message = $this->lang->line('admin_task_sets_error_task_set_cant_be_cloned');
             }
         } else {
             $this->db->trans_rollback();
         }
     }
     $this->output->set_content_type('application/json');
     $this->output->set_output(json_encode($result));
 }