From ca61aec09585af5d07a2f206f306746ddc320132 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Fri, 25 Jan 2019 09:34:27 +0100 Subject: [PATCH 1/7] Add question code when showing a question see BT#15232 --- main/exercise/question.class.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/main/exercise/question.class.php b/main/exercise/question.class.php index f1d3317826..dd9af75f0e 100755 --- a/main/exercise/question.class.php +++ b/main/exercise/question.class.php @@ -38,6 +38,7 @@ abstract class Question public $questionTypeWithFeedback; public $extra; public $export = false; + public $code; public static $questionTypes = [ UNIQUE_ANSWER => ['unique_answer.class.php', 'UniqueAnswer'], MULTIPLE_ANSWER => ['multiple_answer.class.php', 'MultipleAnswer'], @@ -165,6 +166,7 @@ abstract class Question $objQuestion->course = $course_info; $objQuestion->feedback = isset($object->feedback) ? $object->feedback : ''; $objQuestion->category = TestCategory::getCategoryForQuestion($id, $course_id); + $objQuestion->code = isset($object->code) ? $object->code : ''; $tblQuiz = Database::get_course_table(TABLE_QUIZ_TEST); $sql = "SELECT DISTINCT q.exercice_id @@ -229,11 +231,16 @@ abstract class Question public function getTitleToDisplay($itemNumber) { $showQuestionTitleHtml = api_get_configuration_value('save_titles_as_html'); + $title = ''; + if (!empty($this->code) && api_get_configuration_value('allow_question_code')) { + $title .= '

'.$this->code.'

'; + } - $title = $showQuestionTitleHtml ? '' : ''; + $title .= $showQuestionTitleHtml ? '' : ''; $title .= $itemNumber.'. '.$this->selectTitle(); $title .= $showQuestionTitleHtml ? '' : ''; + return Display::div( $title, ['class' => 'question_title'] @@ -403,7 +410,7 @@ abstract class Question */ public function selectNbrExercises() { - return sizeof($this->exerciseList); + return count($this->exerciseList); } /** @@ -423,7 +430,7 @@ abstract class Question */ public function updateParentId($id) { - $this->parent_id = intval($id); + $this->parent_id = (int) $id; } /** From 481267293eba109ae329ff201565577fcf5b2202 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Fri, 25 Jan 2019 10:18:45 +0100 Subject: [PATCH 2/7] Block anon users --- main/inc/ajax/user_manager.ajax.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/main/inc/ajax/user_manager.ajax.php b/main/inc/ajax/user_manager.ajax.php index ff42ce54c0..154bcc5807 100755 --- a/main/inc/ajax/user_manager.ajax.php +++ b/main/inc/ajax/user_manager.ajax.php @@ -14,6 +14,8 @@ $action = $_GET['a']; switch ($action) { case 'get_user_like': + api_block_anonymous_users(false); + $query = $_REQUEST['q']; $conditions = [ 'username' => $query, From d209d182fbb68163c2a9aafa0d1b715f153132c8 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Fri, 25 Jan 2019 10:54:16 +0100 Subject: [PATCH 3/7] Fix default values of created_on/modified_on when importing lps see #2784 --- .../CourseBundle/Component/CourseCopy/CourseRestorer.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Chamilo/CourseBundle/Component/CourseCopy/CourseRestorer.php b/src/Chamilo/CourseBundle/Component/CourseCopy/CourseRestorer.php index 44babf0603..485b16dbe8 100644 --- a/src/Chamilo/CourseBundle/Component/CourseCopy/CourseRestorer.php +++ b/src/Chamilo/CourseBundle/Component/CourseCopy/CourseRestorer.php @@ -2712,8 +2712,8 @@ class CourseRestorer 'preview_image' => self::DBUTF8($lp->preview_image), 'use_max_score' => self::DBUTF8($lp->use_max_score), 'autolaunch' => self::DBUTF8(isset($lp->autolaunch) ? $lp->autolaunch : ''), - 'created_on' => self::DBUTF8($lp->created_on), - 'modified_on' => self::DBUTF8($lp->modified_on), + 'created_on' => empty($lp->created_on) ? api_get_utc_datetime() : self::DBUTF8($lp->created_on), + 'modified_on' => empty($lp->modified_on) ? api_get_utc_datetime() : self::DBUTF8($lp->modified_on), 'publicated_on' => empty($lp->publicated_on) ? api_get_utc_datetime() : self::DBUTF8($lp->publicated_on), 'expired_on' => self::DBUTF8($lp->expired_on), 'debug' => self::DBUTF8($lp->debug), From 709740fe49267674ae48c96121df55a246912235 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Fri, 25 Jan 2019 12:46:33 +0100 Subject: [PATCH 4/7] Add question code in question edition (admin only) see BT#15230 --- main/exercise/export/aiken/aiken_classes.php | 20 ------------ main/exercise/question.class.php | 34 ++++++++++++++++++++ main/exercise/question_admin.inc.php | 7 +++- 3 files changed, 40 insertions(+), 21 deletions(-) diff --git a/main/exercise/export/aiken/aiken_classes.php b/main/exercise/export/aiken/aiken_classes.php index 89dd422962..8d8447eb49 100755 --- a/main/exercise/export/aiken/aiken_classes.php +++ b/main/exercise/export/aiken/aiken_classes.php @@ -32,26 +32,6 @@ class Aiken2Question extends Question return $answer; } - /** - * @param string $code - * - * @return bool - */ - public function addCode($code) - { - if (api_get_configuration_value('allow_question_code') && !empty($this->id)) { - $code = Database::escape_string($code); - $table = Database::get_course_table(TABLE_QUIZ_QUESTION); - $sql = "UPDATE $table SET code = '$code' - WHERE iid = {$this->id} AND c_id = {$this->course['real_id']}"; - Database::query($sql); - - return true; - } - - return false; - } - public function createAnswersForm($form) { return true; diff --git a/main/exercise/question.class.php b/main/exercise/question.class.php index dd9af75f0e..ed5f80f9ba 100755 --- a/main/exercise/question.class.php +++ b/main/exercise/question.class.php @@ -1684,6 +1684,10 @@ abstract class Question //$form->addElement('select', 'parent_id', get_lang('AttachToMedia'), $course_medias); } + if (api_get_configuration_value('allow_question_code') && api_is_platform_admin()) { + $form->addText('code', get_lang('QuestionCode')); + } + $form->addElement('html', ''); if (!isset($_GET['fromExercise'])) { @@ -1723,6 +1727,10 @@ abstract class Question $defaults['questionCategory'] = $this->category; $defaults['feedback'] = $this->feedback; + if (api_get_configuration_value('allow_question_code') && api_is_platform_admin()) { + $defaults['code'] = $this->code; + } + // Came from he question pool if (isset($_GET['fromExercise'])) { $form->setDefaults($defaults); @@ -1755,6 +1763,10 @@ abstract class Question if ($this->type != MEDIA_QUESTION) { $this->save($exercise); + if (api_is_platform_admin()) { + $this->addCode($form->getSubmitValue('code')); + } + // modify the exercise $exercise->addToList($this->id); $exercise->update_question_positions(); @@ -2422,4 +2434,26 @@ abstract class Question return false; } + + + /** + * @param string $code + * + * @return bool + */ + public function addCode($code) + { + if (api_get_configuration_value('allow_question_code') && !empty($this->id)) { + $code = Database::escape_string($code); + $table = Database::get_course_table(TABLE_QUIZ_QUESTION); + $sql = "UPDATE $table SET code = '$code' + WHERE iid = {$this->id} AND c_id = {$this->course['real_id']}"; + Database::query($sql); + + return true; + } + + return false; + } + } diff --git a/main/exercise/question_admin.inc.php b/main/exercise/question_admin.inc.php index bc72f11eee..1f236b2c14 100755 --- a/main/exercise/question_admin.inc.php +++ b/main/exercise/question_admin.inc.php @@ -35,8 +35,13 @@ if (is_object($objQuestion)) { $typesInformation = Question::get_question_type_list(); $form_title_extra = isset($typesInformation[$type][1]) ? get_lang($typesInformation[$type][1]) : null; + $code = ''; + if (isset($objQuestion->code) && !empty($objQuestion->code)) { + $code = ' ('.$objQuestion->code.')'; + } + // form title - $form->addHeader($text.': '.$form_title_extra); + $form->addHeader($text.': '.$form_title_extra.$code); // question form elements $objQuestion->createForm($form, $objExercise); From 2937cf24cf6842c2f6ce9422028a1e5f9842ef09 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Fri, 25 Jan 2019 13:04:17 +0100 Subject: [PATCH 5/7] Only admins and hrm users can search for global users. --- main/inc/ajax/user_manager.ajax.php | 30 ++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/main/inc/ajax/user_manager.ajax.php b/main/inc/ajax/user_manager.ajax.php index 154bcc5807..b7b10d3d60 100755 --- a/main/inc/ajax/user_manager.ajax.php +++ b/main/inc/ajax/user_manager.ajax.php @@ -14,23 +14,23 @@ $action = $_GET['a']; switch ($action) { case 'get_user_like': - api_block_anonymous_users(false); - - $query = $_REQUEST['q']; - $conditions = [ - 'username' => $query, - 'firstname' => $query, - 'lastname' => $query, - ]; - $users = UserManager::getUserListLike($conditions, [], false, 'OR'); - $result = []; - if (!empty($users)) { - foreach ($users as $user) { - $result[] = ['id' => $user['id'], 'text' => $user['complete_name'].' ('.$user['username'].')']; + if (api_is_platform_admin() || api_is_drh()) { + $query = $_REQUEST['q']; + $conditions = [ + 'username' => $query, + 'firstname' => $query, + 'lastname' => $query, + ]; + $users = UserManager::getUserListLike($conditions, [], false, 'OR'); + $result = []; + if (!empty($users)) { + foreach ($users as $user) { + $result[] = ['id' => $user['id'], 'text' => $user['complete_name'].' ('.$user['username'].')']; + } + $result['items'] = $result; } - $result['items'] = $result; + echo json_encode($result); } - echo json_encode($result); break; case 'get_user_popup': $courseId = isset($_REQUEST['course_id']) ? (int) $_REQUEST['course_id'] : 0; From 40560f93229595bd1465c71e57abe0563b166597 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Fri, 25 Jan 2019 13:09:16 +0100 Subject: [PATCH 6/7] Disabled unused ticket pages --- main/ticket/course_user_list.php | 2 ++ main/ticket/report.php | 1 + 2 files changed, 3 insertions(+) diff --git a/main/ticket/course_user_list.php b/main/ticket/course_user_list.php index 24c86c8dd3..0cc36ff46f 100644 --- a/main/ticket/course_user_list.php +++ b/main/ticket/course_user_list.php @@ -1,6 +1,8 @@ Date: Fri, 25 Jan 2019 14:50:02 +0100 Subject: [PATCH 7/7] Minor - FormValidator->addFile returns the element (ofaj) --- main/inc/lib/formvalidator/FormValidator.class.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/main/inc/lib/formvalidator/FormValidator.class.php b/main/inc/lib/formvalidator/FormValidator.class.php index 641e302b8c..d2683f968f 100755 --- a/main/inc/lib/formvalidator/FormValidator.class.php +++ b/main/inc/lib/formvalidator/FormValidator.class.php @@ -914,6 +914,8 @@ EOT; * @param string $label * @param array $attributes * + * @return HTML_QuickForm_file + * * @throws Exception if the file doesn't have an id */ public function addFile($name, $label, $attributes = []) @@ -940,6 +942,8 @@ EOT; $this->addHidden($id.'_crop_result', ''); $this->addHidden($id.'_crop_image_base_64', ''); } + + return $element; } /**