Use entity to save question

pull/3064/head
Julio Montoya 6 years ago
parent 16fe9561d3
commit 255b9b3e3b
  1. 87
      main/exercise/question.class.php

@ -5,6 +5,7 @@ use Chamilo\CoreBundle\Entity\Resource\ResourceLink;
use Chamilo\CoreBundle\Framework\Container; use Chamilo\CoreBundle\Framework\Container;
use Chamilo\CourseBundle\Entity\CDocument; use Chamilo\CourseBundle\Entity\CDocument;
use Chamilo\CourseBundle\Entity\CQuizAnswer; use Chamilo\CourseBundle\Entity\CQuizAnswer;
use Chamilo\CourseBundle\Entity\CQuizQuestion;
use Chamilo\CourseBundle\Entity\CQuizQuestionCategory; use Chamilo\CourseBundle\Entity\CQuizQuestionCategory;
/** /**
@ -913,25 +914,21 @@ abstract class Question
// question already exists // question already exists
if (!empty($id)) { if (!empty($id)) {
$params = [ /** @var CQuizQuestion $question */
'question' => $question, $question = $questionRepo->find($id);
'description' => $description, $question
'ponderation' => $weighting, ->setQuestion($this->question)
'position' => $position, ->setDescription($this->description)
'type' => $type, ->setPonderation($this->weighting)
'picture' => $picture, ->setPosition($this->position)
'extra' => $extra, ->setType($this->type)
'level' => $level, ->setExtra($this->extra)
]; ->setLevel($this->level)
if ($exercise->questionFeedbackEnabled) { ->setFeedback($this->feedback)
$params['feedback'] = $this->feedback; ;
}
$em->persist($question);
Database::update( $em->flush();
$TBL_QUESTIONS,
$params,
['c_id = ? AND id = ?' => [$c_id, $id]]
);
Event::addEvent( Event::addEvent(
LOG_QUESTION_UPDATED, LOG_QUESTION_UPDATED,
@ -939,23 +936,6 @@ abstract class Question
$this->iid $this->iid
); );
$this->saveCategory($categoryId); $this->saveCategory($categoryId);
if (!empty($exerciseId)) {
/*api_item_property_update(
$this->course,
TOOL_QUIZ,
$id,
'QuizQuestionUpdated',
api_get_user_id()
);*/
}
/** @var CQuizQuestionCategory $questionCategory */
/*$questionCategory = $repo->find($this->iid);
$questionCategory->setTitle('');
$repo->addResourceNode($questionCategory, api_get_user_entity(api_get_user_id()));
$repo->addResourceToCourse($questionCategory->getResourceNode());*/
if (api_get_setting('search_enabled') === 'true') { if (api_get_setting('search_enabled') === 'true') {
$this->search_engine_edit($exerciseId); $this->search_engine_edit($exerciseId);
} }
@ -974,22 +954,23 @@ abstract class Question
$this->updatePosition($current_position + 1); $this->updatePosition($current_position + 1);
$position = $this->position; $position = $this->position;
$params = [ $question = new CQuizQuestion();
'c_id' => $c_id, $question
'question' => $question, ->setCId($c_id)
'description' => $description, ->setQuestion($this->question)
'ponderation' => $weighting, ->setDescription($this->description)
'position' => $position, ->setPonderation($this->weighting)
'type' => $type, ->setPosition($position)
'picture' => $picture, ->setType($this->type)
'extra' => $extra, ->setExtra($this->extra)
'level' => $level, ->setLevel($this->level)
]; ->setFeedback($this->feedback)
;
$em->persist($question);
$em->flush();
if ($exercise->questionFeedbackEnabled) { $this->id = $question->getIid();
$params['feedback'] = $this->feedback;
}
$this->id = Database::insert($TBL_QUESTIONS, $params);
if ($this->id) { if ($this->id) {
$sql = "UPDATE $TBL_QUESTIONS SET id = iid WHERE iid = {$this->id}"; $sql = "UPDATE $TBL_QUESTIONS SET id = iid WHERE iid = {$this->id}";
@ -1000,10 +981,8 @@ abstract class Question
LOG_QUESTION_ID, LOG_QUESTION_ID,
$this->id $this->id
); );
$questionEntity = $questionRepo->find($this->id);
$exerciseEntity = $exerciseRepo->find($exerciseId); $exerciseEntity = $exerciseRepo->find($exerciseId);
$node = $questionRepo->addResourceNode($questionEntity, api_get_user_entity(api_get_user_id()), $exerciseEntity); $node = $questionRepo->addResourceNode($question, api_get_user_entity(api_get_user_id()), $exerciseEntity);
$questionRepo->addResourceNodeToCourse( $questionRepo->addResourceNodeToCourse(
$node, $node,
ResourceLink::VISIBILITY_PUBLISHED, ResourceLink::VISIBILITY_PUBLISHED,

Loading…
Cancel
Save