diff --git a/main/admin/questions.php b/main/admin/questions.php
index b25964cb45..064644ff79 100644
--- a/main/admin/questions.php
+++ b/main/admin/questions.php
@@ -54,6 +54,9 @@ if ($formSent) {
$questions = $repo->matching($criteria);
+ if (empty($id)) {
+ $id = '';
+ }
$params = [
'id' => $id,
'title' => $title,
@@ -127,7 +130,6 @@ if ($formSent) {
$url.http_build_query([
'cidReq' => $courseCode,
'id_session' => $exercise->sessionId,
- 'myid' => 1,
'exerciseId' => $exerciseId,
'type' => $question->getType(),
'editQuestion' => $question->getId(),
@@ -136,10 +138,14 @@ if ($formSent) {
}
$question->questionData .= '
'.$exerciseData;
} else {
- $question->questionData .= get_lang('Course').': '.Display::url(
- $courseInfo['name'],
- $exerciseUrl.http_build_query([
+ $question->questionData = Display::url(
+ Display::return_icon('edit.png', get_lang('Edit')),
+ $url.http_build_query([
'cidReq' => $courseCode,
+ 'id_session' => $exercise->sessionId,
+ 'exerciseId' => $exerciseId,
+ 'type' => $question->getType(),
+ 'editQuestion' => $question->getId(),
])
);
}
diff --git a/main/dropbox/dropbox_init.inc.php b/main/dropbox/dropbox_init.inc.php
index f2195cf66c..6e5759fbbb 100755
--- a/main/dropbox/dropbox_init.inc.php
+++ b/main/dropbox/dropbox_init.inc.php
@@ -180,7 +180,7 @@ if (empty($session_id)) {
// only when it is needed.
if ($action == 'add') {
$dropbox_person = new Dropbox_Person(
- $_user['user_id'],
+ $user_id,
$is_courseAdmin,
$is_courseTutor
);
diff --git a/main/dropbox/index.php b/main/dropbox/index.php
index 036db75c93..9f68593ae2 100755
--- a/main/dropbox/index.php
+++ b/main/dropbox/index.php
@@ -4,6 +4,8 @@
// The file that contains all the initialisation stuff (and includes all the configuration stuff)
require_once 'dropbox_init.inc.php';
+$_course = api_get_course_info();
+
$last_access = '';
// get the last time the user accessed the tool
if (isset($_SESSION[$_course['id']]) &&
diff --git a/main/exercise/ReadingComprehension.php b/main/exercise/ReadingComprehension.php
index b871aaf8db..e093709650 100755
--- a/main/exercise/ReadingComprehension.php
+++ b/main/exercise/ReadingComprehension.php
@@ -155,10 +155,8 @@ class ReadingComprehension extends UniqueAnswer
}
// hidden values
- $my_id = isset($_REQUEST['myid']) ? intval($_REQUEST['myid']) : null;
- $form->addElement('hidden', 'myid', $my_id);
$form->addRule('questionName', get_lang('GiveQuestion'), 'required');
- $isContent = isset($_REQUEST['isContent']) ? intval($_REQUEST['isContent']) : null;
+ $isContent = isset($_REQUEST['isContent']) ? (int) $_REQUEST['isContent'] : null;
// default values
$defaults = [];
@@ -172,12 +170,8 @@ class ReadingComprehension extends UniqueAnswer
$form->setDefaults($defaults);
}
- if (!empty($_REQUEST['myid'])) {
+ if (!isset($_GET['newQuestion']) || $isContent) {
$form->setDefaults($defaults);
- } else {
- if ($isContent == 1) {
- $form->setDefaults($defaults);
- }
}
}
diff --git a/main/exercise/admin.php b/main/exercise/admin.php
index dcde8deeb5..853577a740 100755
--- a/main/exercise/admin.php
+++ b/main/exercise/admin.php
@@ -62,7 +62,7 @@ if (!$is_allowedToEdit) {
api_not_allowed(true);
}
-$exerciseId = isset($_GET['exerciseId']) ? (int) $_GET['exerciseId'] : '0';
+$exerciseId = isset($_GET['exerciseId']) ? (int) $_GET['exerciseId'] : 0;
/* stripslashes POST data */
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
@@ -253,6 +253,8 @@ if (!empty($clone_question) && !empty($objExercise->id)) {
// Reloading tne $objExercise obj
$objExercise->read($objExercise->id, false);
+ Display::addFlash(Display::return_message(get_lang('ItemCopied')));
+
header('Location: admin.php?'.api_get_cidreq().'&exerciseId='.$objExercise->id.'&page='.$page);
exit;
}
@@ -299,7 +301,7 @@ if (!$exerciseId && $nameTools != get_lang('ExerciseManagement')) {
}
// if the question is duplicated, disable the link of tool name
-if ($modifyIn == 'thisExercise') {
+if ($modifyIn === 'thisExercise') {
if ($buttonBack) {
$modifyIn = 'allExercises';
}
@@ -328,12 +330,12 @@ $inATest = isset($exerciseId) && $exerciseId > 0;
if ($inATest) {
echo '
';
- if (isset($_GET['hotspotadmin']) || isset($_GET['newQuestion']) || isset($_GET['myid'])) {
+ if (isset($_GET['hotspotadmin']) || isset($_GET['newQuestion'])) {
echo '
'.
Display::return_icon('back.png', get_lang('GoBackToQuestionList'), '', ICON_SIZE_MEDIUM).'';
}
- if (!isset($_GET['hotspotadmin']) && !isset($_GET['newQuestion']) && !isset($_GET['myid']) && !isset($_GET['editQuestion'])) {
+ if (!isset($_GET['hotspotadmin']) && !isset($_GET['newQuestion']) && !isset($_GET['editQuestion'])) {
echo '
'.
Display::return_icon('back.png', get_lang('BackToExercisesList'), '', ICON_SIZE_MEDIUM).'';
}
diff --git a/main/exercise/exercise.class.php b/main/exercise/exercise.class.php
index 39936b8b26..e27ae4b151 100755
--- a/main/exercise/exercise.class.php
+++ b/main/exercise/exercise.class.php
@@ -1720,23 +1720,36 @@ class Exercise
/**
* Updates question position.
+ *
+ * @return bool
*/
public function update_question_positions()
{
$table = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
- //Fixes #3483 when updating order
- $question_list = $this->selectQuestionList(true);
- if (!empty($question_list)) {
- foreach ($question_list as $position => $questionId) {
+ // Fixes #3483 when updating order
+ $questionList = $this->selectQuestionList(true);
+
+ $this->id = (int) $this->id;
+
+ if (empty($this->id)) {
+ return false;
+ }
+
+ if (!empty($questionList)) {
+ foreach ($questionList as $position => $questionId) {
+ $position = (int) $position;
+ $questionId = (int) $questionId;
$sql = "UPDATE $table SET
- question_order ='".intval($position)."'
+ question_order ='".$position."'
WHERE
c_id = ".$this->course_id." AND
- question_id = ".intval($questionId)." AND
- exercice_id=".intval($this->id);
+ question_id = ".$questionId." AND
+ exercice_id=".$this->id;
Database::query($sql);
}
}
+
+ return true;
}
/**
diff --git a/main/exercise/hotspot_actionscript_admin.as.php b/main/exercise/hotspot_actionscript_admin.as.php
index b0c002080c..3775e8a41a 100755
--- a/main/exercise/hotspot_actionscript_admin.as.php
+++ b/main/exercise/hotspot_actionscript_admin.as.php
@@ -59,11 +59,9 @@ $data['image_height'] = $pictureHeight;
$data['courseCode'] = $_course['path'];
$data['hotspots'] = [];
-// Init
$i = 0;
$nmbrTries = 0;
$answer_type = $objQuestion->type;
-
$answers = Session::read('tmp_answers');
$nbrAnswers = count($answers['answer']);
diff --git a/main/exercise/multiple_answer.class.php b/main/exercise/multiple_answer.class.php
index 73fe459f6a..ddce8b528d 100755
--- a/main/exercise/multiple_answer.class.php
+++ b/main/exercise/multiple_answer.class.php
@@ -188,7 +188,7 @@ class MultipleAnswer extends Question
*/
public function processAnswersCreation($form, $exercise)
{
- $questionWeighting = $nbrGoodAnswers = 0;
+ $questionWeighting = 0;
$objAnswer = new Answer($this->id);
$nb_answers = $form->getSubmitValue('nb_answers');
diff --git a/main/exercise/multiple_answer_combination.class.php b/main/exercise/multiple_answer_combination.class.php
index 18a49d5290..95c1937b1a 100755
--- a/main/exercise/multiple_answer_combination.class.php
+++ b/main/exercise/multiple_answer_combination.class.php
@@ -182,7 +182,7 @@ class MultipleAnswerCombination extends Question
*/
public function processAnswersCreation($form, $exercise)
{
- $questionWeighting = $nbrGoodAnswers = 0;
+ $questionWeighting = 0;
$objAnswer = new Answer($this->id);
$nb_answers = $form->getSubmitValue('nb_answers');
diff --git a/main/exercise/multiple_answer_true_false.class.php b/main/exercise/multiple_answer_true_false.class.php
index 633e95f963..3d6583feea 100755
--- a/main/exercise/multiple_answer_true_false.class.php
+++ b/main/exercise/multiple_answer_true_false.class.php
@@ -239,7 +239,7 @@ class MultipleAnswerTrueFalse extends Question
*/
public function processAnswersCreation($form, $exercise)
{
- $questionWeighting = $nbrGoodAnswers = 0;
+ $questionWeighting = 0;
$objAnswer = new Answer($this->id);
$nb_answers = $form->getSubmitValue('nb_answers');
$course_id = api_get_course_int_id();
diff --git a/main/exercise/question.class.php b/main/exercise/question.class.php
index 362d83791a..775ed51d81 100755
--- a/main/exercise/question.class.php
+++ b/main/exercise/question.class.php
@@ -952,6 +952,7 @@ abstract class Question
if ($exercise->questionFeedbackEnabled) {
$params['feedback'] = $this->feedback;
}
+
Database::update(
$TBL_QUESTIONS,
$params,
@@ -974,24 +975,17 @@ abstract class Question
api_get_user_id()
);
}
- if (api_get_setting('search_enabled') == 'true') {
- if ($exerciseId != 0) {
- $this->search_engine_edit($exerciseId);
- } else {
- /**
- * actually there is *not* an user interface for
- * creating questions without a relation with an exercise.
- */
- }
+ if (api_get_setting('search_enabled') === 'true') {
+ $this->search_engine_edit($exerciseId);
}
} else {
- // creates a new question
+ // Creates a new question
$sql = "SELECT max(position)
FROM $TBL_QUESTIONS as question,
$TBL_EXERCISE_QUESTION as test_question
WHERE
question.id = test_question.question_id AND
- test_question.exercice_id = ".intval($exerciseId)." AND
+ test_question.exercice_id = ".$exerciseId." AND
question.c_id = $c_id AND
test_question.c_id = $c_id ";
$result = Database::query($sql);
@@ -1087,33 +1081,33 @@ abstract class Question
}
}
- if (api_get_setting('search_enabled') == 'true') {
- if ($exerciseId != 0) {
- $this->search_engine_edit($exerciseId, true);
- } else {
- /**
- * actually there is *not* an user interface for
- * creating questions without a relation with an exercise.
- */
- }
+ if (api_get_setting('search_enabled') === 'true') {
+ $this->search_engine_edit($exerciseId, true);
}
}
}
// if the question is created in an exercise
- if ($exerciseId) {
+ if (!empty($exerciseId)) {
// adds the exercise into the exercise list of this question
$this->addToList($exerciseId, true);
}
}
+ /**
+ * @param int $exerciseId
+ * @param bool $addQs
+ * @param bool $rmQs
+ */
public function search_engine_edit(
$exerciseId,
$addQs = false,
$rmQs = false
) {
// update search engine and its values table if enabled
- if (api_get_setting('search_enabled') == 'true' && extension_loaded('xapian')) {
+ if (!empty($exerciseId) && api_get_setting('search_enabled') == 'true' &&
+ extension_loaded('xapian')
+ ) {
$course_id = api_get_course_id();
// get search_did
$tbl_se_ref = Database::get_main_table(TABLE_MAIN_SEARCH_ENGINE_REF);
@@ -1260,9 +1254,11 @@ abstract class Question
public function addToList($exerciseId, $fromSave = false)
{
$exerciseRelQuestionTable = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
- $id = $this->id;
+ $id = (int) $this->id;
+ $exerciseId = (int) $exerciseId;
+
// checks if the exercise ID is not in the list
- if (!in_array($exerciseId, $this->exerciseList)) {
+ if (!empty($exerciseId) && !in_array($exerciseId, $this->exerciseList)) {
$this->exerciseList[] = $exerciseId;
$courseId = isset($this->course['real_id']) ? $this->course['real_id'] : 0;
$newExercise = new Exercise($courseId);
@@ -1270,7 +1266,7 @@ abstract class Question
$count = $newExercise->getQuestionCount();
$count++;
$sql = "INSERT INTO $exerciseRelQuestionTable (c_id, question_id, exercice_id, question_order)
- VALUES ({$this->course['real_id']}, ".intval($id).", ".intval($exerciseId).", '$count')";
+ VALUES ({$this->course['real_id']}, ".$id.", ".$exerciseId.", '$count')";
Database::query($sql);
// we do not want to reindex if we had just saved adnd indexed the question
@@ -1606,10 +1602,10 @@ abstract class Question
$form->addRule('questionName', get_lang('GiveQuestion'), 'required');
// default content
- $isContent = isset($_REQUEST['isContent']) ? intval($_REQUEST['isContent']) : null;
+ $isContent = isset($_REQUEST['isContent']) ? (int) $_REQUEST['isContent'] : null;
// Question type
- $answerType = isset($_REQUEST['answerType']) ? intval($_REQUEST['answerType']) : null;
+ $answerType = isset($_REQUEST['answerType']) ? (int) $_REQUEST['answerType'] : null;
$form->addElement('hidden', 'answerType', $answerType);
// html editor
@@ -1632,10 +1628,6 @@ abstract class Question
$editorConfig
);
- // hidden values
- $my_id = isset($_REQUEST['myid']) ? intval($_REQUEST['myid']) : null;
- $form->addElement('hidden', 'myid', $my_id);
-
if ($this->type != MEDIA_QUESTION) {
// Advanced parameters
$select_level = self::get_default_levels();
@@ -1746,13 +1738,17 @@ abstract class Question
$form->setDefaults($defaults);
}
- if (!empty($_REQUEST['myid'])) {
+ if (!isset($_GET['newQuestion']) || $isContent) {
+ $form->setDefaults($defaults);
+ }
+
+ /*if (!empty($_REQUEST['myid'])) {
$form->setDefaults($defaults);
} else {
if ($isContent == 1) {
$form->setDefaults($defaults);
}
- }
+ }*/
}
/**
diff --git a/main/exercise/question_admin.inc.php b/main/exercise/question_admin.inc.php
index efa566b4d1..6b4df1eb0c 100755
--- a/main/exercise/question_admin.inc.php
+++ b/main/exercise/question_admin.inc.php
@@ -13,10 +13,10 @@
*/
if (isset($_GET['editQuestion'])) {
$objQuestion = Question::read($_GET['editQuestion']);
- $action = api_get_self()."?".api_get_cidreq()."&myid=1&modifyQuestion=".$modifyQuestion."&editQuestion=".$objQuestion->id.'&page='.$page;
+ $action = api_get_self().'?'.api_get_cidreq().'&modifyQuestion='.$modifyQuestion.'&editQuestion='.$objQuestion->id.'&page='.$page;
} else {
$objQuestion = Question::getInstance($_REQUEST['answerType']);
- $action = api_get_self()."?".api_get_cidreq()."&modifyQuestion=".$modifyQuestion."&newQuestion=".$newQuestion;
+ $action = api_get_self().'?'.api_get_cidreq().'&modifyQuestion='.$modifyQuestion.'&newQuestion='.$newQuestion;
}
if (is_object($objQuestion)) {
@@ -50,7 +50,7 @@ if (is_object($objQuestion)) {
$objQuestion->createAnswersForm($form);
// this variable $show_quiz_edition comes from admin.php blocks the exercise/quiz modifications
- if ($objExercise->edit_exercise_in_lp == false) {
+ if (!empty($objExercise->id) && $objExercise->edit_exercise_in_lp == false) {
$form->freeze();
}
@@ -65,6 +65,12 @@ if (is_object($objQuestion)) {
$objQuestion->type != HOT_SPOT_DELINEATION
) {
if (isset($_GET['editQuestion'])) {
+ if (empty($exerciseId)) {
+ Display::addFlash(Display::return_message(get_lang('ItemUpdated')));
+ $url = 'admin.php?exerciseId='.$exerciseId.'&'.api_get_cidreq().'&editQuestion='.$objQuestion->id;
+ echo '';
+ exit;
+ }
echo '';
} else {
// New question
diff --git a/main/exercise/question_list_admin.inc.php b/main/exercise/question_list_admin.inc.php
index 2649133ce1..b23505da73 100755
--- a/main/exercise/question_list_admin.inc.php
+++ b/main/exercise/question_list_admin.inc.php
@@ -254,7 +254,6 @@ if (!$inATest) {
api_get_self().'?'.api_get_cidreq().'&'
.http_build_query([
'type' => $objQuestionTmp->selectType(),
- 'myid' => 1,
'editQuestion' => $id,
'page' => $page,
]),
diff --git a/main/gradebook/gradebook_add_eval.php b/main/gradebook/gradebook_add_eval.php
index 4f23c7a7fc..0092b5a658 100755
--- a/main/gradebook/gradebook_add_eval.php
+++ b/main/gradebook/gradebook_add_eval.php
@@ -14,9 +14,12 @@ api_block_anonymous_users();
GradebookUtils::block_students();
$select_cat = isset($_GET['selectcat']) ? (int) $_GET['selectcat'] : 0;
-$is_allowedToEdit = $is_courseAdmin;
+$is_allowedToEdit = api_is_course_admin();
+
+$userId = api_get_user_id();
+
$evaladd = new Evaluation();
-$evaladd->set_user_id($_user['user_id']);
+$evaladd->set_user_id($userId);
if (!empty($select_cat)) {
$evaladd->set_category_id($_GET['selectcat']);
$cat = Category::load($_GET['selectcat']);
diff --git a/main/inc/ajax/document.ajax.php b/main/inc/ajax/document.ajax.php
index eb38c533a6..108ffa0f6e 100755
--- a/main/inc/ajax/document.ajax.php
+++ b/main/inc/ajax/document.ajax.php
@@ -20,16 +20,10 @@ switch ($action) {
$courseQuota = DocumentManager::get_course_quota();
// Calculating the total space
- $already_consumed_space_course = DocumentManager::documents_total_space(
- api_get_course_int_id()
- );
+ $total = DocumentManager::documents_total_space(api_get_course_int_id());
// Displaying the quota
- echo DocumentManager::displaySimpleQuota(
- $courseQuota,
- $already_consumed_space_course
- );
-
+ echo DocumentManager::displaySimpleQuota($courseQuota, $total);
break;
case 'upload_file':
api_protect_course_script(true);
diff --git a/main/inc/lib/events.lib.php b/main/inc/lib/events.lib.php
index c22bc4541b..8081d02ccf 100644
--- a/main/inc/lib/events.lib.php
+++ b/main/inc/lib/events.lib.php
@@ -1282,13 +1282,14 @@ class Event
$course_id,
$session_id = 0
) {
- $track_e_exercises = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCISES);
$user_id = (int) $user_id;
$exercise_id = (int) $exercise_id;
$course_id = (int) $course_id;
$session_id = (int) $session_id;
- if (!empty($user_id) && !empty($exercise_id) && !empty($course_code)) {
- $sql = "DELETE FROM $track_e_exercises
+
+ if (!empty($user_id) && !empty($exercise_id) && !empty($course_id)) {
+ $table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCISES);
+ $sql = "DELETE FROM $table
WHERE
exe_user_id = $user_id AND
exe_exo_id = $exercise_id AND
@@ -1311,9 +1312,9 @@ class Event
/**
* Gets all exercise results (NO Exercises in LPs ) from a given exercise id, course, session.
*
- * @param int exercise id
+ * @param int $exercise_id
* @param int $courseId
- * @param int session id
+ * @param int $session_id
*
* @return array with the results
*/
@@ -1365,8 +1366,8 @@ class Event
/**
* Gets all exercise results (NO Exercises in LPs ) from a given exercise id, course, session.
*
- * @param int $courseId
- * @param int session id
+ * @param int $courseId
+ * @param int $session_id
* @param bool $get_count
*
* @return array with the results
@@ -1409,9 +1410,9 @@ class Event
/**
* Gets all exercise results (NO Exercises in LPs) from a given exercise id, course, session.
*
- * @param int exercise id
+ * @param int $user_id
* @param int $courseId
- * @param int session id
+ * @param int $session_id
*
* @return array with the results
*/
@@ -1454,7 +1455,7 @@ class Event
/**
* Gets exercise results (NO Exercises in LPs) from a given exercise id, course, session.
*
- * @param int $exe_id exercise id
+ * @param int $exe_id attempt id
* @param string $status
*
* @return array with the results
@@ -1574,9 +1575,9 @@ class Event
* Count exercise attempts (NO Exercises in LPs ) from a given exercise id, course, session.
*
* @param int $user_id
- * @param int exercise id
+ * @param int $exercise_id
* @param int $courseId
- * @param int session id
+ * @param int $session_id
*
* @return array with the results
*/
diff --git a/main/inc/lib/link.lib.php b/main/inc/lib/link.lib.php
index 7dc9ae447f..b87d4b550c 100755
--- a/main/inc/lib/link.lib.php
+++ b/main/inc/lib/link.lib.php
@@ -1100,7 +1100,7 @@ class Link extends Model
false
);
- $url .= api_get_self().'?'.api_get_cidreq().'&sec_token='.$token.'&action=deletelink&id='.$linkId.'&category_id='.$categoryId;
+ $url = api_get_self().'?'.api_get_cidreq().'&sec_token='.$token.'&action=deletelink&id='.$linkId.'&category_id='.$categoryId;
$event = "javascript: if(!confirm('".get_lang('LinkDelconfirm')."'))return false;";
$title = get_lang('Delete');
diff --git a/main/inc/lib/pear/HTML/QuickForm/Renderer/Default.php b/main/inc/lib/pear/HTML/QuickForm/Renderer/Default.php
index 2efe4a67dc..44ed6dc6b6 100755
--- a/main/inc/lib/pear/HTML/QuickForm/Renderer/Default.php
+++ b/main/inc/lib/pear/HTML/QuickForm/Renderer/Default.php
@@ -334,6 +334,7 @@ class HTML_QuickForm_Renderer_Default extends HTML_QuickForm_Renderer
} else {
$html = preg_replace("/([ \t\n\r]*)?.*([ \t\n\r]*)?/isU", '', $html);
}
+
if (isset($error)) {
$html = str_replace('{error}', $error, $html);
$html = str_replace('{error_class}', 'error has-error', $html);
diff --git a/main/inc/lib/social.lib.php b/main/inc/lib/social.lib.php
index 65c65618fe..18154b5bf2 100755
--- a/main/inc/lib/social.lib.php
+++ b/main/inc/lib/social.lib.php
@@ -3132,7 +3132,8 @@ class SocialManager extends UserManager
}
} else {
// Load my groups
- $results = $userGroup->get_groups_by_user($userId,
+ $results = $userGroup->get_groups_by_user(
+ $userId,
[
GROUP_USER_PERMISSION_ADMIN,
GROUP_USER_PERMISSION_READER,
diff --git a/main/inc/lib/system_announcements.lib.php b/main/inc/lib/system_announcements.lib.php
index e457219c3a..3838603951 100755
--- a/main/inc/lib/system_announcements.lib.php
+++ b/main/inc/lib/system_announcements.lib.php
@@ -843,7 +843,7 @@ class SystemAnnouncementManager
$sql .= self::getVisibilityCondition($visible);
if (isset($id) && !empty($id)) {
- $id = intval($id);
+ $id = (int) $id;
$sql .= " AND id = $id ";
}
@@ -852,7 +852,7 @@ class SystemAnnouncementManager
$sql .= " AND access_url_id IN ('1', '$current_url_id') ";
}
- $sql .= " ORDER BY date_start DESC";
+ $sql .= ' ORDER BY date_start DESC';
$result = Database::query($sql);
$announcements = [];
diff --git a/main/lang/arabic/trad4all.inc.php b/main/lang/arabic/trad4all.inc.php
index 0103f3dfe5..fc51af0a13 100644
--- a/main/lang/arabic/trad4all.inc.php
+++ b/main/lang/arabic/trad4all.inc.php
@@ -1192,7 +1192,7 @@ $HideAndSubscribeClosed = " مخفي / مغلق";
$HideAndSubscribeOpen = " مخفي / مفتوح";
$ShowAndSubscribeOpen = " ظاهر / مفتوح";
$ShowAndSubscribeClosed = " ظاهر / مغلق";
-$AdminThisUser = " Back to user";
+$AdminThisUser = "الرجوع للمستخدم";
$Manage = " Portal ادارة الـ";
$EnrollToCourseSuccessful = " لقد تم تسجيلك في المقرر";
$SubCat = " التصانيف الفرعية";
@@ -1644,7 +1644,7 @@ $ShowIconsInNavigationsMenuComment = " هل ستظهر قائمة التصفح
$Plugin = " ادخال";
$MainMenu = " القائمة الرئيسية";
$MainMenuLogged = " القائمة الرئيسية بعد تسجيل الدخول";
-$Banner = " Banner";
+$Banner = "لافتة";
$ImageResizeTitle = " تغيير حجم صور المستخدم التي تم تحميلها";
$ImageResizeComment = " .غير متاح يتم تجاهل هذا الإعداد بشكل صامت (GD) إذا كان جي دي
GD library - مكتبة معالجة الصور بـ PHP ال (compile) يمكن إعادة تحجيم صور المستخدم عند التحميل إذا تم تجميع";
$MaxImageWidthTitle = " الحد الأقصى لعرض صورة المستخدم";
@@ -3098,7 +3098,7 @@ $Logout = "تسجيل خروج";
$MyAgenda = "التقويم الشخصي";
$CourseHomepage = "صفحة المقرر";
$SwitchToTeacherView = "معاينة منظور المدرس";
-$SwitchToStudentView = " معاينة واجهة الطلاب";
+$SwitchToStudentView = "عرض منظور الطالب";
$AddResource = "أضفه";
$AddedResources = "مرفقات";
$TimeReportForTeacherX = "تقرير الوقت للمدرس %s";
@@ -8419,4 +8419,6 @@ $VoteDislike = "لا يعجبني";
$GenerateStats = "توليد احصاءات";
$BasicCourseDocuments = "المستندات الاساسية للمقرر";
$WeekX = "اسبوعX";
+$QuizWrongAnswerHereIsTheCorrectOne = ":اجابة خاطئة. الاجابة الصحيحة كانت";
+$ThisQuizCanBeEmbeddable = "يمكن تضمين الاختبار في الفيديوهات او محتوى الموبايل";
?>
\ No newline at end of file
diff --git a/main/lang/brazilian/trad4all.inc.php b/main/lang/brazilian/trad4all.inc.php
index 309df0f700..ee6a897869 100644
--- a/main/lang/brazilian/trad4all.inc.php
+++ b/main/lang/brazilian/trad4all.inc.php
@@ -8272,4 +8272,6 @@ $VoteDislike = "Dislike";
$GenerateStats = "Gerar estatísticas";
$BasicCourseDocuments = "Documentos básicos do curso";
$WeekX = "Semana %s";
+$QuizWrongAnswerHereIsTheCorrectOne = "Resposta errada. O correto foi:";
+$ThisQuizCanBeEmbeddable = "Este questionário pode ser incorporado em vídeos ou conteúdo para dispositivos móveis";
?>
\ No newline at end of file
diff --git a/main/lang/english/trad4all.inc.php b/main/lang/english/trad4all.inc.php
index a166f15e2a..0b07fbe5f3 100644
--- a/main/lang/english/trad4all.inc.php
+++ b/main/lang/english/trad4all.inc.php
@@ -8390,4 +8390,5 @@ $BasicCourseDocuments = "Basic course documents";
$WeekX = "Week %s";
$QuizWrongAnswerHereIsTheCorrectOne = "Wrong answer. The correct one was:";
$ThisQuizCanBeEmbeddable = "This quiz can be embeddable on videos or mobile content";
+$SearchGeolocalization = "Search for this location";
?>
\ No newline at end of file
diff --git a/main/lang/french/trad4all.inc.php b/main/lang/french/trad4all.inc.php
index 263b8f3a7e..214035d60b 100644
--- a/main/lang/french/trad4all.inc.php
+++ b/main/lang/french/trad4all.inc.php
@@ -8321,4 +8321,6 @@ $GenerateStats = "Générer les statistiques";
$BasicCourseDocuments = "Documents de base du cours";
$WeekX = "Semaine %s";
$QuizWrongAnswerHereIsTheCorrectOne = "Vous vous êtes trompé. La réponse correcte était :";
+$ThisQuizCanBeEmbeddable = "Cet exercice peut être inséré dans une vidéo ou du contenu mobile";
+$SearchGeolocalization = "Localiser par l'adresse";
?>
\ No newline at end of file
diff --git a/main/lang/spanish/trad4all.inc.php b/main/lang/spanish/trad4all.inc.php
index 444dfde937..3d155bf01a 100644
--- a/main/lang/spanish/trad4all.inc.php
+++ b/main/lang/spanish/trad4all.inc.php
@@ -8415,4 +8415,6 @@ $GenerateStats = "Generar estatisticas";
$BasicCourseDocuments = "Documentos básicos del curso";
$WeekX = "Semana %s";
$QuizWrongAnswerHereIsTheCorrectOne = "Su selección ha sido errónea, la correcta es:";
+$ThisQuizCanBeEmbeddable = "Este ejercicio puede ser integrado con videos o contenido móvil";
+$SearchGeolocalization = "Localizar por esta dirección";
?>
\ No newline at end of file
diff --git a/main/lp/learnpath.class.php b/main/lp/learnpath.class.php
index 0491a580bb..f552c11685 100755
--- a/main/lp/learnpath.class.php
+++ b/main/lp/learnpath.class.php
@@ -2299,11 +2299,15 @@ class learnpath
$lpItemId = (int) $lpItemId;
/** @var learnpathItem $item */
- $item = $this->items[$lpItemId];
- $itemViewId = (int) $item->db_item_view_id;
+ $item = isset($this->items[$lpItemId]) ? $this->items[$lpItemId] : null;
+ $itemViewId = 0;
+ if ($item) {
+ $itemViewId = (int) $item->db_item_view_id;
+ }
// Getting all the information about the item.
- $sql = "SELECT lpi.audio, lpi.item_type, lp_view.status FROM $tbl_lp_item as lpi
+ $sql = "SELECT lpi.audio, lpi.item_type, lp_view.status
+ FROM $tbl_lp_item as lpi
INNER JOIN $tbl_lp_item_view as lp_view
ON (lpi.iid = lp_view.lp_item_id)
WHERE
@@ -2404,7 +2408,6 @@ class learnpath
}
$isBlocked = false;
-
if (!empty($prerequisite)) {
$progress = self::getProgress(
$prerequisite,
@@ -2438,12 +2441,6 @@ class learnpath
$accumulateWorkTime = ($pl * $tc * $perc / 100);
// Spent time (in seconds) so far in the learning path
- /*$lpTime = Tracking::get_time_spent_in_lp(
- $studentId,
- $courseInfo['code'],
- [$prerequisite],
- $sessionId
- );*/
$lpTimeList = Tracking::getCalculateTime($studentId, $courseId, $sessionId);
$lpTime = isset($lpTimeList[TOOL_LEARNPATH][$prerequisite]) ? $lpTimeList[TOOL_LEARNPATH][$prerequisite] : 0;
@@ -2614,7 +2611,6 @@ class learnpath
$userId = (int) $userId;
$courseId = (int) $courseId;
$sessionId = (int) $sessionId;
- $progress = 0;
$sessionCondition = api_get_session_condition($sessionId);
$table = Database::get_course_table(TABLE_LP_VIEW);
@@ -2624,12 +2620,14 @@ class learnpath
lp_id = $lpId AND
user_id = $userId $sessionCondition ";
$res = Database::query($sql);
+
+ $progress = 0;
if (Database::num_rows($res) > 0) {
$row = Database:: fetch_array($res);
- $progress = $row['progress'];
+ $progress = (int) $row['progress'];
}
- return (int) $progress;
+ return $progress;
}
/**
@@ -4718,6 +4716,10 @@ class learnpath
return false;
}
+ if (empty($courseId)) {
+ return false;
+ }
+
$link = self::getCategoryLinkForTool($id);
/** @var CTool $tool */
diff --git a/main/lp/lp_add_audio.php b/main/lp/lp_add_audio.php
index 3d1f870944..d8435c0a84 100755
--- a/main/lp/lp_add_audio.php
+++ b/main/lp/lp_add_audio.php
@@ -162,7 +162,6 @@ $documentTree = DocumentManager::get_document_preview(
api_get_path(WEB_CODE_PATH).'lp/lp_controller.php?action=add_audio&lp_id='.$lp->get_id().'&id='.$lp_item_id,
false,
true
- //$folderId = false
);
$page .= $recordVoiceForm;
diff --git a/main/lp/lp_controller.php b/main/lp/lp_controller.php
index 331ddeb5af..c1433059f1 100755
--- a/main/lp/lp_controller.php
+++ b/main/lp/lp_controller.php
@@ -310,7 +310,6 @@ if (isset($_SESSION['oLP'])) {
$_SESSION['oLP']->update_queue = [];
}
-
$action = !empty($_REQUEST['action']) ? $_REQUEST['action'] : '';
if ($debug) {
diff --git a/main/mySpace/myStudents.php b/main/mySpace/myStudents.php
index 8330bf181c..9df6e33ac9 100755
--- a/main/mySpace/myStudents.php
+++ b/main/mySpace/myStudents.php
@@ -95,12 +95,10 @@ if ($export) {
}
$csv_content = [];
$from_myspace = false;
-
+$this_section = SECTION_COURSES;
if (isset($_GET['from']) && $_GET['from'] == 'myspace') {
$from_myspace = true;
$this_section = SECTION_TRACKING;
-} else {
- $this_section = SECTION_COURSES;
}
$nameTools = get_lang('StudentDetails');
@@ -163,7 +161,7 @@ if (!empty($details)) {
}
$nameTools = get_lang('DetailsStudentInCourse');
} else {
- if ($origin == 'resume_session') {
+ if ($origin === 'resume_session') {
$interbreadcrumb[] = [
'url' => "../session/session_list.php",
'name' => get_lang('SessionList'),
@@ -393,7 +391,6 @@ switch ($action) {
$params = [
'pdf_title' => get_lang('Resume'),
- //'course_code' => api_get_course_id(),
'session_info' => $sessionInfo,
'course_info' => '',
'pdf_date' => '',
@@ -572,6 +569,7 @@ switch ($action) {
default:
break;
}
+
$courses_in_session = [];
// See #4676
@@ -657,15 +655,7 @@ $isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh(
if (api_is_drh() && !api_is_platform_admin()) {
if (!empty($student_id)) {
if (api_drh_can_access_all_session_content()) {
- //@todo securize drh with student id
- /*$users = SessionManager::getAllUsersFromCoursesFromAllSessionFromStatus('drh_all', api_get_user_id());
- $userList = array();
- foreach ($users as $user) {
- $userList[] = $user['user_id'];
- }
- if (!in_array($student_id, $userList)) {
- api_not_allowed(true);
- }*/
+
} else {
if (!$isDrhOfCourse) {
if (api_is_drh() &&
@@ -775,7 +765,12 @@ $avg_student_progress = $avg_student_score = 0;
if (empty($sessionId)) {
$isSubscribedToCourse = CourseManager::is_user_subscribed_in_course($user_info['user_id'], $course_code);
} else {
- $isSubscribedToCourse = CourseManager::is_user_subscribed_in_course($user_info['user_id'], $course_code, true, $sessionId);
+ $isSubscribedToCourse = CourseManager::is_user_subscribed_in_course(
+ $user_info['user_id'],
+ $course_code,
+ true,
+ $sessionId
+ );
}
if ($isSubscribedToCourse) {
@@ -884,7 +879,7 @@ $userInfo = [
'profile_url' => $user_info['profile_url'],
'groups' => $userGroupManager,
'avatar' => $userPicture,
- 'online' => $online
+ 'online' => $online,
];
if (!empty($course_code)) {
@@ -973,8 +968,11 @@ if (api_get_setting('allow_terms_conditions') === 'true') {
?>
+
+
+
@@ -1632,7 +1630,7 @@ if (empty($details)) {
$i = 0;
if (Database::num_rows($result_exercices) > 0) {
while ($exercices = Database::fetch_array($result_exercices)) {
- $exercise_id = intval($exercices['id']);
+ $exercise_id = (int) $exercices['id'];
$count_attempts = Tracking::count_student_exercise_attempts(
$student_id,
$courseInfo['real_id'],
diff --git a/main/social/group_view.php b/main/social/group_view.php
index acfb4c37ca..d6fe402cca 100644
--- a/main/social/group_view.php
+++ b/main/social/group_view.php
@@ -112,8 +112,7 @@ if ($group_id != 0) {
$groupInfo = $usergroup->get($group_id);
$groupInfo['name'] = Security::remove_XSS($groupInfo['name']);
$groupInfo['description'] = Security::remove_XSS($groupInfo['description']);
-
- $interbreadcrumb[] = ['url' => '#', 'name' => $group_info['name']];
+ $interbreadcrumb[] = ['url' => '#', 'name' => $groupInfo['name']];
if (isset($_GET['action']) && $_GET['action'] == 'leave') {
$user_leaved = intval($_GET['u']);
@@ -244,7 +243,7 @@ if ($is_group_member || $groupInfo['visibility'] == GROUP_PERMISSION_OPEN) {
// My friends
$friend_html = SocialManager::listMyFriendsBlock(
- $user_id,
+ api_get_user_id(),
'',
''
);
@@ -328,7 +327,7 @@ $social_menu_block = SocialManager::show_social_menu('groups', $group_id);
$tpl->setHelp('Groups');
$tpl->assign('create_link', $create_thread_link);
$tpl->assign('is_group_member', $is_group_member);
-$tpl->assign('group_info', $group_info);
+$tpl->assign('group_info', $groupInfo);
$tpl->assign('social_friend_block', $friend_html);
$tpl->assign('social_menu_block', $social_menu_block);
$tpl->assign('social_forum', $socialForum);
diff --git a/main/template/default/social/map.tpl b/main/template/default/social/map.tpl
index 76487050e8..3d889e9f3d 100644
--- a/main/template/default/social/map.tpl
+++ b/main/template/default/social/map.tpl
@@ -61,7 +61,6 @@ function start()
});
// Auto-boxing
-
if (markers.length) {
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < markers.length; ++i) {
diff --git a/main/template/default/social/skills_block.tpl b/main/template/default/social/skills_block.tpl
index d320bde539..edaf7d5188 100644
--- a/main/template/default/social/skills_block.tpl
+++ b/main/template/default/social/skills_block.tpl
@@ -8,7 +8,8 @@ $(function() {
-
+
{{ "Skills" | get_lang }}
diff --git a/main/template/default/social/terms.tpl b/main/template/default/social/terms.tpl
index 9f47e779ff..ebf975c224 100644
--- a/main/template/default/social/terms.tpl
+++ b/main/template/default/social/terms.tpl
@@ -13,8 +13,6 @@
{% if term %}
{{ display.panel('TermsAndConditions'|get_lang, term.content, term.date_text ) }}
{% endif %}
-
-
{% endblock %}
diff --git a/main/template/default/social/user_block.tpl b/main/template/default/social/user_block.tpl
index 94384298d2..0eec42bfe7 100644
--- a/main/template/default/social/user_block.tpl
+++ b/main/template/default/social/user_block.tpl
@@ -3,7 +3,8 @@
@@ -21,7 +22,7 @@

{% endif %}
- {% elseif user.status == 1 %}
+ {% elseif user.status == 1 or user.status == 17 %}
{% if user.is_admin %}

@@ -33,9 +34,7 @@
-
-
{% if user.language %}
{% if user.language.code == 'fr' %}

@@ -56,7 +55,6 @@
{% for item in extra_info %}
{% if item.variable == 'langue_cible' %}
-
{% if item.value == 'French2' %}

{% elseif item.value == 'German2' %}
@@ -70,18 +68,12 @@
{% elseif item.value == 'English' %}

{% endif %}
-
{% endif %}
{% endfor %}
-
-
{# Ofaj #}
-
-
-
-
{{ user.complete_name }}
@@ -149,13 +141,9 @@
{{ "Chat" | get_lang }} ({{ "Online" | get_lang }})
- {# else #}
- {#
#}
- {# {{ "Chat" | get_lang }} ({{ "Offline" | get_lang }}) #}
{% endif %}
{% endif %}
{% endif %}
-
{% for item in extra_info %}
{% if item.variable != 'langue_cible' %}
diff --git a/main/wiki/wiki.inc.php b/main/wiki/wiki.inc.php
index 1ff7ec828f..daddefc1ea 100755
--- a/main/wiki/wiki.inc.php
+++ b/main/wiki/wiki.inc.php
@@ -2739,23 +2739,17 @@ class Wiki
$sql = "SELECT * FROM ".$tbl_wiki."
WHERE
c_id = $course_id AND
- title LIKE '%".Database::escape_string(
- $search_term
- )."%' OR
+ title LIKE '%".Database::escape_string($search_term)."%' OR
content LIKE '%".Database::escape_string(
$search_term
- )."%' AND
- ".$groupfilter.$condition_session."";
- //search all pages and all versions
+ )."%' AND ".$groupfilter.$condition_session;
} else {
$sql = "SELECT * FROM ".$tbl_wiki."
WHERE
c_id = $course_id AND
title LIKE '%".Database::escape_string(
$search_term
- )."%' AND
- ".$groupfilter.$condition_session."";
- //search all pages and all versions
+ )."%' AND ".$groupfilter.$condition_session;
}
} else {
if ($search_content == '1') {
@@ -2797,24 +2791,16 @@ class Wiki
WHERE
c_id = $course_id AND
visibility=1 AND
- title LIKE '%".Database::escape_string(
- $search_term
- )."%' OR
- content LIKE '%".Database::escape_string(
- $search_term
- )."%' AND
- ".$groupfilter.$condition_session."";
- //search all pages and all versions
+ title LIKE '%".Database::escape_string($search_term)."%' OR
+ content LIKE '%".Database::escape_string($search_term)."%' AND
+ ".$groupfilter.$condition_session;
} else {
$sql = "SELECT * FROM ".$tbl_wiki."
WHERE
c_id = $course_id AND
visibility=1 AND
- title LIKE '%".Database::escape_string(
- $search_term
- )."%' AND
- ".$groupfilter.$condition_session."";
- //search all pages and all versions
+ title LIKE '%".Database::escape_string($search_term)."%' AND
+ ".$groupfilter.$condition_session;
}
} else {
if ($search_content == '1') {
@@ -2822,12 +2808,8 @@ class Wiki
WHERE
s1.c_id = $course_id AND
visibility=1 AND
- title LIKE '%".Database::escape_string(
- $search_term
- )."%' OR
- content LIKE '%".Database::escape_string(
- $search_term
- )."%' AND
+ title LIKE '%".Database::escape_string($search_term)."%' OR
+ content LIKE '%".Database::escape_string($search_term)."%' AND
id=(
SELECT MAX(s2.id)
FROM ".$tbl_wiki." s2
diff --git a/plugin/surveyexportcsv/export.php b/plugin/surveyexportcsv/export.php
index c961e51bd6..da678bf370 100644
--- a/plugin/surveyexportcsv/export.php
+++ b/plugin/surveyexportcsv/export.php
@@ -128,13 +128,13 @@ function getQuestionOptions($user, $courseId, $surveyId, $questionId)
$options = Database::getManager()
->createQuery(
'SELECT sqo FROM ChamiloCourseBundle:CSurveyQuestionOption sqo
- INNER JOIN ChamiloCourseBundle:CSurveyAnswer sa
- WITH
- sqo.cId = sa.cId
- AND sqo.questionId = sa.questionId
- AND sqo.surveyId = sa.surveyId
- AND sqo.iid = sa.optionId
- WHERE sa.user = :user AND sa.cId = :course AND sa.surveyId = :survey AND sa.questionId = :question'
+ INNER JOIN ChamiloCourseBundle:CSurveyAnswer sa
+ WITH
+ sqo.cId = sa.cId
+ AND sqo.questionId = sa.questionId
+ AND sqo.surveyId = sa.surveyId
+ AND sqo.iid = sa.optionId
+ WHERE sa.user = :user AND sa.cId = :course AND sa.surveyId = :survey AND sa.questionId = :question'
)
->setParameters(
[
@@ -201,9 +201,10 @@ function otherRow($questions, $user, $courseId)
$question['survey_id'],
$question['question_id']
);
+ /** @var CSurveyQuestionOption|null $option */
+ $option = end($options);
- /** @var CSurveyQuestionOption $option */
- foreach ($options as $option) {
+ if ($option) {
$value = $option->getSort();
$row[] = '"'.$value.'"';
}
diff --git a/tests/behat/features/bootstrap/FeatureContext.php b/tests/behat/features/bootstrap/FeatureContext.php
index f2d807a992..3975687b8a 100644
--- a/tests/behat/features/bootstrap/FeatureContext.php
+++ b/tests/behat/features/bootstrap/FeatureContext.php
@@ -21,7 +21,7 @@ class FeatureContext extends MinkContext
*/
public function iAmAPlatformAdministrator()
{
- $this->visit('/index.php?logout=logout');
+ $this->visit('/index.php?logout=logout&uid=1');
$this->iAmOnHomepage();
$this->fillField('login', 'admin');
$this->fillField('password', 'admin');
diff --git a/tests/behat/features/toolLp.feature b/tests/behat/features/toolLp.feature
index 0c895a2003..4bb93b63dd 100644
--- a/tests/behat/features/toolLp.feature
+++ b/tests/behat/features/toolLp.feature
@@ -48,6 +48,8 @@ Feature: LP tool
Then I should see "LP 1"
And I should see "Document 1"
And I should see "Exercise 1"
+ And I am on "/main/lp/lp_controller.php?cidReq=TEMP&action=list"
+ Then I should see "LP 1"
# Scenario: Check the PDF export in LP list if hide SCORM PDF link is false
# Given I am on "/main/admin/settings.php?category=Course"
@@ -64,8 +66,7 @@ Feature: LP tool
# Then I should not see an icon with title "Export to PDF"
Scenario: LP exists and LP category exists
- Given I am on course "TEMP" homepage
- And I am on "/main/lp/lp_controller.php?cidReq=TEMP"
+ And I am on "/main/lp/lp_controller.php?cidReq=TEMP&id_session=0&gidReq=0&gradebook=0&origin="
Then I should see "LP 1"
And I should see "LP category 1"