/**
  * @param Application $app
  * @param int $exerciseId
  * @param int $questionId
  * @return Response
  */
 public function copyQuestionAction(Application $app, $exerciseId, $questionId)
 {
     $question = \Question::read($questionId);
     if ($question) {
         $newQuestionTitle = $question->selectTitle() . ' - ' . get_lang('Copy');
         $question->updateTitle($newQuestionTitle);
         //Duplicating the source question, in the current course
         $courseInfo = api_get_course_info();
         $newId = $question->duplicate($courseInfo);
         // Reading new question
         $newQuestion = \Question::read($newId);
         $newQuestion->addToList($exerciseId);
         // Reading Answers obj of the current course
         $newAnswer = new \Answer($questionId);
         $newAnswer->read();
         //Duplicating the Answers in the current course
         $newAnswer->duplicate($newId);
         /*$params = array(
               'cidReq' => api_get_course_id(),
               'id_session' => api_get_session_id(),
               'id' => $newId,
               'exerciseId' => $exerciseId
           );
           $url = $app['url_generator']->generate('exercise_question_pool', $params);
           return $app->redirect($url);*/
         $response = \Display::return_message(get_lang('QuestionCopied') . ": " . $newQuestionTitle);
         return new Response($response, 200, array());
     }
 }
예제 #2
0
                $current_course = api_get_course_info();
                foreach ($question_data as $old_question_id) {
                    //Reading the source question
                    $old_question_obj = Question::read($old_question_id, $origin_course_id);
                    if ($old_question_obj) {
                        $old_question_obj->updateTitle($old_question_obj->selectTitle() . ' - ' . get_lang('Copy'));
                        //Duplicating the source question, in the current course
                        $new_id = $old_question_obj->duplicate($current_course);
                        //Reading new question
                        $new_question_obj = Question::read($new_id);
                        $new_question_obj->addToList($fromExercise);
                        //Reading Answers obj of the current course
                        $new_answer_obj = new Answer($old_question_id, $origin_course_id);
                        $new_answer_obj->read();
                        //Duplicating the Answers in the current course
                        $new_answer_obj->duplicate($new_id, $current_course);
                        // destruction of the Question object
                        unset($new_question_obj);
                        unset($old_question_obj);
                        if (!$objExercise instanceof Exercise) {
                            $objExercise = new Exercise();
                            $objExercise->read($fromExercise);
                        }
                    }
                }
            }
            Session::write('objExercise', $objExercise);
        }
    }
}
if (isset($_SESSION['gradebook'])) {
예제 #3
0
 /**
  * Copies an exercise (duplicate all questions and answers)
  */
 public function copy_exercise()
 {
     $exercise_obj = new Exercise();
     $exercise_obj = $this;
     // force the creation of a new exercise
     $exercise_obj->updateTitle($exercise_obj->selectTitle() . ' - ' . get_lang('Copy'));
     //Hides the new exercise
     $exercise_obj->updateStatus(false);
     $exercise_obj->updateId(0);
     $exercise_obj->save();
     $new_exercise_id = $exercise_obj->selectId();
     $question_list = $exercise_obj->selectQuestionList();
     if (!empty($question_list)) {
         //Question creation
         foreach ($question_list as $old_question_id) {
             $old_question_obj = Question::read($old_question_id);
             $new_id = $old_question_obj->duplicate();
             if ($new_id) {
                 $new_question_obj = Question::read($new_id);
                 if (isset($new_question_obj) && $new_question_obj) {
                     $new_question_obj->addToList($new_exercise_id);
                     // This should be moved to the duplicate function
                     $new_answer_obj = new Answer($old_question_id);
                     $new_answer_obj->read();
                     $new_answer_obj->duplicate($new_id);
                 }
             }
         }
     }
 }
예제 #4
0
    } else {
        // goes back to the question viewing
        $editQuestion = $modifyQuestion;
        unset($newQuestion, $modifyQuestion);
    }
}
if (!empty($clone_question) && !empty($objExercise->id)) {
    $old_question_obj = Question::read($clone_question);
    $old_question_obj->question = $old_question_obj->question . ' - ' . get_lang('Copy');
    $new_id = $old_question_obj->duplicate();
    $new_question_obj = Question::read($new_id);
    $new_question_obj->addToList($exerciseId);
    // This should be moved to the duplicate function
    $new_answer_obj = new Answer($clone_question);
    $new_answer_obj->read();
    $new_answer_obj->duplicate($new_id);
    //Reloading tne $objExercise obj
    $objExercise->read($objExercise->id);
    header('Location: admin.php?' . api_get_cidreq() . '&exerciseId=' . $objExercise->id);
    exit;
}
// if cancelling answer creation/modification
if ($cancelAnswers) {
    // goes back to the question viewing
    $editQuestion = $modifyAnswers;
    unset($modifyAnswers);
}
$nameTools = null;
// modifies the query string that is used in the link of tool name
if ($editQuestion || $modifyQuestion || $newQuestion || $modifyAnswers) {
    $nameTools = get_lang('QuestionManagement');
예제 #5
0
                 // adds the new question ID into the question list of the Exercise object
                 $objExercise->addToList($new_question_id);
                 // construction of the duplicated Question
                 $objQuestion = new Question();
                 $objQuestion->read($new_question_id);
                 // adds the exercise ID into the exercise list of the Question object
                 $objQuestion->addToList($exerciseId);
                 // copies answers from the old qustion to the new
                 $objAnswer = new Answer($question_id);
                 $objAnswer->duplicate($new_question_id);
                 redirect_to_home_page("modules/exercise/admin.php?course={$course_code}&exerciseId={$exerciseId}&editQuestion={$new_question_id}");
                 //if the user comes from question pool
             } else {
                 $new_question_id = $objQuestion->duplicate();
                 $objAnswer = new Answer($question_id);
                 $objAnswer->duplicate($new_question_id);
                 redirect_to_home_page("modules/exercise/admin.php?course={$course_code}&editQuestion={$question_id}");
             }
         }
         $pageName = $langQuestionManagement;
         $navigation[] = array('url' => isset($exerciseId) ? "admin.php?course={$course_code}&exerciseId={$exerciseId}" : "question_pool.php?course={$course_code}&exerciseId=0", 'name' => isset($exerciseId) ? $langExerciseManagement : $langQuestionPool);
         include 'question_admin.inc.php';
     } elseif (isset($_GET['modifyAnswers'])) {
         $objAnswer = new Answer($question_id);
         include 'answer_admin.inc.php';
     } else {
         $pageName = $langInfoQuestion;
         $navigation[] = array('url' => isset($exerciseId) ? "admin.php?course={$course_code}&exerciseId={$exerciseId}" : "question_pool.php?course={$course_code}&exerciseId=0", 'name' => isset($exerciseId) ? $langExerciseManagement : $langQuestionPool);
         include 'statement_admin.inc.php';
     }
 } else {
예제 #6
0
 /**
  * Copies an exercise (duplicate all questions and answers)
  */
 public function copy_exercise()
 {
     $original_exercise = $this;
     $exercise_obj = new Exercise();
     $exercise_obj->setCategoriesGrouping(false);
     $exercise_obj->read($this->id);
     // force the creation of a new exercise
     $exercise_obj->updateTitle($exercise_obj->selectTitle() . ' - ' . get_lang('Copy'));
     //Hides the new exercise
     $exercise_obj->updateStatus(false);
     $exercise_obj->updateId(0);
     $exercise_obj->save();
     $exercise_obj->save_exercise_list_order($this->course['real_id'], api_get_session_id());
     $new_exercise_id = $exercise_obj->selectId();
     if ($new_exercise_id) {
         $original_exercise->copy_exercise_categories($exercise_obj);
         $question_list = $exercise_obj->getQuestionListWithMediasUncompressed();
         if (!empty($question_list)) {
             //Question creation
             foreach ($question_list as $old_question_id) {
                 $old_question_obj = Question::read($old_question_id);
                 $new_id = $old_question_obj->duplicate();
                 if ($new_id) {
                     $new_question_obj = Question::read($new_id);
                     if (isset($new_question_obj) && $new_question_obj) {
                         $new_question_obj->addToList($new_exercise_id);
                         // This should be moved to the duplicate function
                         $new_answer_obj = new Answer($old_question_id);
                         //$new_answer_obj->read();
                         $new_answer_obj->duplicate($new_id);
                     }
                 }
             }
         }
     }
 }