Add CQuizQuestion repository

pull/3064/head
Julio Montoya 5 years ago
parent c524d09705
commit 69739e2be6
  1. 9
      main/exercise/admin.php
  2. 19
      main/exercise/exercise.class.php
  3. 1
      main/exercise/exercise_admin.php
  4. 25
      main/exercise/question.class.php
  5. 2
      main/exercise/question_admin.inc.php
  6. 10
      src/CoreBundle/Framework/Container.php
  7. 4
      src/CoreBundle/Migrations/Schema/V200/Version20.php
  8. 2
      src/CoreBundle/Resources/config/tools.yml
  9. 30
      src/CourseBundle/Entity/CQuizQuestion.php
  10. 13
      src/CourseBundle/Repository/CQuizQuestionRepository.php
  11. 4
      src/CourseBundle/Resources/config/services.yml

@ -118,15 +118,6 @@ if (isset($_REQUEST['convertAnswer'])) {
$objAnswer = Session::read('objAnswer');
$_course = api_get_course_info();
// document path
$documentPath = api_get_path(SYS_COURSE_PATH).$_course['path'].'/document';
// picture path
$picturePath = $documentPath.'/images';
// audio path
$audioPath = $documentPath.'/audio';
// tables used in the exercise tool
if (!empty($_GET['action']) && $_GET['action'] == 'exportqti2' && !empty($_GET['questionId'])) {
require_once 'export/qti2/qti2_export.php';

@ -23,7 +23,7 @@ use Doctrine\DBAL\Types\Type;
*/
class Exercise
{
const PAGINATION_ITEMS_PER_PAGE = 20;
public const PAGINATION_ITEMS_PER_PAGE = 20;
public $iId;
public $id;
public $name;
@ -968,6 +968,7 @@ class Exercise
if (!empty($questions_by_category)) {
$newCategoryList = [];
$em = Database::getManager();
$repo = $em->getRepository('ChamiloCoreBundle:CQuizCategory');
foreach ($questions_by_category as $categoryId => $questionList) {
$cat = new TestCategory();
@ -987,7 +988,6 @@ class Exercise
} else {
$categoryEntity = $parentsLoaded[$cat['parent_id']];
}
$repo = $em->getRepository('ChamiloCoreBundle:CQuizCategory');
$path = $repo->getPath($categoryEntity);
$index = 0;
@ -1527,6 +1527,7 @@ class Exercise
$expired_time = (int) $this->expired_time;
$repo = Container::getExerciseRepository();
$courseEntity = api_get_course_entity($this->course_id);
// Exercise already exists
if ($id) {
@ -1690,7 +1691,7 @@ class Exercise
Database::query($sql);
$exercise = $repo->find($this->id);
$node = $repo->addResourceNode($exercise, api_get_user_entity(api_get_user_id()));
$node = $repo->addResourceNode($exercise, api_get_user_entity(api_get_user_id()), $courseEntity);
$repo->addResourceToCourse(
$node,
ResourceLink::VISIBILITY_PUBLISHED,
@ -1700,7 +1701,7 @@ class Exercise
);
// insert into the item_property table
api_item_property_update(
/*api_item_property_update(
$this->course,
TOOL_QUIZ,
$this->id,
@ -1715,7 +1716,7 @@ class Exercise
TOOL_QUIZ,
null,
$this->course
);
);*/
if (api_get_setting('search_enabled') == 'true' && extension_loaded('xapian')) {
$this->search_engine_save();
@ -1851,7 +1852,11 @@ class Exercise
WHERE c_id = ".$this->course_id." AND id = ".intval($this->id);
Database::query($sql);
api_item_property_update(
$repo = Container::getExerciseRepository();
$exercise = $repo->find($this->iId);
$repo->softDelete($exercise);
/*api_item_property_update(
$this->course,
TOOL_QUIZ,
$this->id,
@ -1864,7 +1869,7 @@ class Exercise
$this->id,
'delete',
api_get_user_id()
);
);*/
Skill::deleteSkillsFromItem($this->iId, ITEM_TYPE_EXERCISE);

@ -11,6 +11,7 @@ use ChamiloSession as Session;
* @author Olivier Brouckaert, Julio Montoya
*/
require_once __DIR__.'/../inc/global.inc.php';
$this_section = SECTION_COURSES;
api_protect_course_script(true);

@ -946,7 +946,8 @@ abstract class Question
$c_id = $this->course['real_id'];
$categoryId = $this->category;
$repo = Container::getQuestionCategoryRepository();
$questionRepo = Container::getQuestionRepository();
$exerciseRepo = Container::getExerciseRepository();
// question already exists
if (!empty($id)) {
@ -1038,18 +1039,16 @@ abstract class Question
$this->id
);
/** @var CQuizQuestionCategory $questionCategory */
/*$questionCategory = $repo->find($this->id);
$repo->addResourceNode($questionCategory, api_get_user_entity(api_get_user_id()));
$repo->addResourceToCourse($questionCategory->getResourceNode());*/
/*api_item_property_update(
$this->course,
TOOL_QUIZ,
$this->id,
'QuizQuestionAdded',
api_get_user_id()
);*/
$questionEntity = $questionRepo->find($this->id);
$exerciseEntity = $exerciseRepo->find($exerciseId);
$node = $questionRepo->addResourceNode($questionEntity, api_get_user_entity(api_get_user_id()), $exerciseEntity);
$questionRepo->addResourceToCourse(
$node,
\Chamilo\CoreBundle\Entity\Resource\ResourceLink::VISIBILITY_PUBLISHED,
api_get_course_entity(),
api_get_session_entity(),
api_get_group_entity()
);
// If hotspot, create first answer
if ($type == HOT_SPOT || $type == HOT_SPOT_ORDER) {

@ -5,8 +5,6 @@
* This script allows to manage the statements of questions.
* It is included from the script admin.php.
*
* @package chamilo.exercise
*
* @author Olivier Brouckaert
*
* @version $Id: question_admin.inc.php 22126 2009-07-15 22:38:39Z juliomontoya $

@ -9,9 +9,11 @@ use Chamilo\CoreBundle\Repository\AccessUrlRepository;
use Chamilo\CoreBundle\Repository\CourseRepository;
use Chamilo\CoreBundle\Repository\IllustrationRepository;
use Chamilo\CoreBundle\ToolChain;
use Chamilo\CourseBundle\Entity\CQuizQuestion;
use Chamilo\CourseBundle\Repository\CDocumentRepository;
use Chamilo\CourseBundle\Repository\CExerciseCategoryRepository;
use Chamilo\CourseBundle\Repository\CQuizQuestionCategoryRepository;
use Chamilo\CourseBundle\Repository\CQuizQuestionRepository;
use Chamilo\CourseBundle\Repository\CQuizRepository;
use Chamilo\PageBundle\Entity\Page;
use Chamilo\SettingsBundle\Manager\SettingsManager;
@ -348,6 +350,14 @@ class Container
return self::$container->get('Chamilo\CourseBundle\Repository\CExerciseCategoryRepository');
}
/**
* @return CQuizQuestionRepository
*/
public static function getQuestionRepository()
{
return self::$container->get('Chamilo\CourseBundle\Repository\CQuizQuestionRepository');
}
/**
* @return CQuizQuestionCategoryRepository
*/

@ -945,7 +945,9 @@ class Version20 extends AbstractMigrationChamilo
//CREATE TABLE illustration (id INT AUTO_INCREMENT NOT NULL, resource_node_id INT DEFAULT NULL, name VARCHAR(255) NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, UNIQUE INDEX UNIQ_D67B9A421BAD783F (resource_node_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB ROW_FORMAT = DYNAMIC;
//ALTER TABLE illustration ADD CONSTRAINT FK_D67B9A421BAD783F FOREIGN KEY (resource_node_id) REFERENCES resource_node (id) ON DELETE CASCADE;
/*ALTER TABLE c_quiz_question ADD resource_node_id INT DEFAULT NULL;
ALTER TABLE c_quiz_question ADD CONSTRAINT FK_9A48A59F1BAD783F FOREIGN KEY (resource_node_id) REFERENCES resource_node (id) ON DELETE CASCADE;
CREATE UNIQUE INDEX UNIQ_9A48A59F1BAD783F ON c_quiz_question (resource_node_id);*/
}
/**

@ -223,7 +223,7 @@ services:
- exercise/exercise.php
- quiz.gif
- '@chamilo_course.settings.exercise'
- [CQuiz, CQuizQuestionCategory, CQuizQuestionCategory, CExerciseCategory]
- [CQuiz, CQuizQuestion, CQuizQuestionCategory, CQuizQuestionCategory, CExerciseCategory]
- 0
tags:
- {name: chamilo_core.tool}

@ -3,6 +3,8 @@
namespace Chamilo\CourseBundle\Entity;
use Chamilo\CoreBundle\Entity\Resource\AbstractResource;
use Chamilo\CoreBundle\Entity\Resource\ResourceInterface;
use Doctrine\ORM\Mapping as ORM;
/**
@ -17,7 +19,7 @@ use Doctrine\ORM\Mapping as ORM;
* )
* @ORM\Entity()
*/
class CQuizQuestion
class CQuizQuestion extends AbstractResource implements ResourceInterface
{
/**
* @var int
@ -386,4 +388,30 @@ class CQuizQuestion
{
return $this->iid;
}
/**
* Resource identifier.
*
* @return int
*/
public function getResourceIdentifier(): int
{
return $this->getIid();
}
/**
* @return string
*/
public function getResourceName(): string
{
return $this->getQuestion();
}
/**
* @return string
*/
public function getToolName(): string
{
return 'CQuizQuestion';
}
}

@ -0,0 +1,13 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CourseBundle\Repository;
use Chamilo\CoreBundle\Repository\ResourceRepository;
/**
* Class CQuizQuestionRepository.
*/
final class CQuizQuestionRepository extends ResourceRepository
{
}

@ -40,6 +40,10 @@ services:
arguments:
$className: 'Chamilo\CourseBundle\Entity\CExerciseCategory'
Chamilo\CourseBundle\Repository\CQuizQuestionRepository:
arguments:
$className: 'Chamilo\CourseBundle\Entity\CQuizQuestion'
# Event Listeners
chamilo_course.listener.course:
class: Chamilo\CourseBundle\EventListener\CourseListener

Loading…
Cancel
Save