Merge branch '1.11.x' of github.com:chamilo/chamilo-lms into 1.11.x

pull/2731/head
Yannick Warnier 7 years ago
commit 13963ba00a
  1. 2
      app/Migrations/Schema/V111/Version20160715122300.php
  2. BIN
      main/img/icons/128/add_doodle.png
  3. BIN
      main/img/icons/22/add_doodle.png
  4. BIN
      main/img/icons/32/add_doodle.png
  5. BIN
      main/img/icons/48/add_doodle.png
  6. BIN
      main/img/icons/64/add_doodle.png
  7. 2218
      main/img/icons/svg/add_doodle.svg
  8. 13
      main/lp/learnpath.class.php
  9. 53
      main/lp/learnpathItem.class.php
  10. 4
      main/lp/lp_content.php
  11. 1
      main/lp/lp_controller.php
  12. 2
      main/lp/lp_edit_item_prereq.php
  13. 2
      main/survey/create_new_survey.php
  14. 1
      main/survey/surveyUtil.class.php
  15. 1
      main/survey/survey_invite.php
  16. 2
      main/survey/survey_list.php

@ -23,7 +23,7 @@ class Version20160715122300 extends AbstractMigrationChamilo
$this->addSql('ALTER TABLE c_student_publication CHANGE session_id session_id INT DEFAULT NULL'); $this->addSql('ALTER TABLE c_student_publication CHANGE session_id session_id INT DEFAULT NULL');
$this->addSql('UPDATE c_student_publication SET session_id = NULL WHERE session_id = 0'); $this->addSql('UPDATE c_student_publication SET session_id = NULL WHERE session_id = 0');
// Fix not existing session id // Fix not existing session id
$this->addSql('DELETE FROM c_student_publication WHERE session_id not in (SELECT id FROM session)'); $this->addSql('DELETE FROM c_student_publication WHERE session_id <> NULL AND session_id not in (SELECT id FROM session)');
$this->addSql('ALTER TABLE c_student_publication ADD CONSTRAINT fk_session FOREIGN KEY (session_id) REFERENCES session (id)'); $this->addSql('ALTER TABLE c_student_publication ADD CONSTRAINT fk_session FOREIGN KEY (session_id) REFERENCES session (id)');
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 76 KiB

@ -10290,8 +10290,10 @@ class learnpath
public function display_item_prerequisites_form($item_id = 0) public function display_item_prerequisites_form($item_id = 0)
{ {
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
$item_id = (int) $item_id;
$tbl_lp_item = Database::get_course_table(TABLE_LP_ITEM); $tbl_lp_item = Database::get_course_table(TABLE_LP_ITEM);
$item_id = intval($item_id);
/* Current prerequisite */ /* Current prerequisite */
$sql = "SELECT * FROM $tbl_lp_item $sql = "SELECT * FROM $tbl_lp_item
WHERE iid = $item_id"; WHERE iid = $item_id";
@ -10329,10 +10331,13 @@ class learnpath
$selectedMinScore = []; $selectedMinScore = [];
$selectedMaxScore = []; $selectedMaxScore = [];
$masteryScore = [];
while ($row = Database::fetch_array($result)) { while ($row = Database::fetch_array($result)) {
if ($row['id'] == $item_id) { if ($row['id'] == $item_id) {
$selectedMinScore[$row['prerequisite']] = $row['prerequisite_min_score']; $selectedMinScore[$row['prerequisite']] = $row['prerequisite_min_score'];
$selectedMaxScore[$row['prerequisite']] = $row['prerequisite_max_score']; $selectedMaxScore[$row['prerequisite']] = $row['prerequisite_max_score'];
$masteryScore[$row['prerequisite']] = $row['mastery_score'];
} }
$arrLP[] = [ $arrLP[] = [
'id' => $row['iid'], 'id' => $row['iid'],
@ -10366,6 +10371,7 @@ class learnpath
$selectedMaxScoreValue = isset($selectedMaxScore[$item['id']]) ? $selectedMaxScore[$item['id']] : $item['max_score']; $selectedMaxScoreValue = isset($selectedMaxScore[$item['id']]) ? $selectedMaxScore[$item['id']] : $item['max_score'];
$selectedMinScoreValue = isset($selectedMinScore[$item['id']]) ? $selectedMinScore[$item['id']] : 0; $selectedMinScoreValue = isset($selectedMinScore[$item['id']]) ? $selectedMinScore[$item['id']] : 0;
$masteryScoreAsMinValue = isset($masteryScore[$item['id']]) ? $masteryScore[$item['id']] : 0;
$return .= '<tr>'; $return .= '<tr>';
$return .= '<td '.(($item['item_type'] != TOOL_QUIZ && $item['item_type'] != TOOL_HOTPOTATOES) ? ' colspan="3"' : '').'>'; $return .= '<td '.(($item['item_type'] != TOOL_QUIZ && $item['item_type'] != TOOL_HOTPOTATOES) ? ' colspan="3"' : '').'>';
@ -10398,6 +10404,11 @@ class learnpath
$lpItemObj->update(); $lpItemObj->update();
$item['max_score'] = $lpItemObj->max_score; $item['max_score'] = $lpItemObj->max_score;
if (empty($selectedMinScoreValue) && !empty($masteryScoreAsMinValue)) {
// Backwards compatibility with 1.9.x use mastery_score as min value
$selectedMinScoreValue = $masteryScoreAsMinValue;
}
$return .= '<td>'; $return .= '<td>';
$return .= '<input $return .= '<input
class="form-control" class="form-control"

@ -2175,10 +2175,9 @@ class learnpathItem
break; break;
} }
} }
if (empty($this->prereq_alert) && !$andstatus) { if (empty($this->prereq_alert) && !$andstatus) {
$this->prereq_alert = get_lang( $this->prereq_alert = get_lang('LearnpathPrereqNotCompleted');
'LearnpathPrereqNotCompleted'
);
} }
return $andstatus; return $andstatus;
@ -2452,7 +2451,7 @@ class learnpathItem
/** @var learnpathItem $itemToCheck */ /** @var learnpathItem $itemToCheck */
$itemToCheck = $items[$refs_list[$prereqs_string]]; $itemToCheck = $items[$refs_list[$prereqs_string]];
if ($itemToCheck->type == 'quiz') { if ($itemToCheck->type === 'quiz') {
// 1. Checking the status in current items. // 1. Checking the status in current items.
$status = $itemToCheck->get_status(true); $status = $itemToCheck->get_status(true);
$returnstatus = $status == $this->possible_status[2] || $status == $this->possible_status[3]; $returnstatus = $status == $this->possible_status[2] || $status == $this->possible_status[3];
@ -2496,10 +2495,18 @@ class learnpathItem
LIMIT 0, 1'; LIMIT 0, 1';
$rs_quiz = Database::query($sql); $rs_quiz = Database::query($sql);
if ($quiz = Database::fetch_array($rs_quiz)) { if ($quiz = Database::fetch_array($rs_quiz)) {
$minScore = $items[$refs_list[$this->get_id( /** @var learnpathItem $myItemToCheck */
)]]->getPrerequisiteMinScore(); $myItemToCheck = $items[$refs_list[$this->get_id()]];
$maxScore = $items[$refs_list[$this->get_id( $minScore = $myItemToCheck->getPrerequisiteMinScore();
)]]->getPrerequisiteMaxScore(); $maxScore = $myItemToCheck->getPrerequisiteMaxScore();
if (empty($minScore)) {
// Try with mastery_score
$masteryScoreAsMin = $myItemToCheck->get_mastery_score();
if (!empty($masteryScoreAsMin)) {
$minScore = $masteryScoreAsMin;
}
}
if (isset($minScore) && isset($minScore)) { if (isset($minScore) && isset($minScore)) {
// Taking min/max prerequisites values see BT#5776 // Taking min/max prerequisites values see BT#5776
@ -2545,19 +2552,29 @@ class learnpathItem
exe_exo_id = '.$items[$refs_list[$prereqs_string]]->path.' AND exe_exo_id = '.$items[$refs_list[$prereqs_string]]->path.' AND
exe_user_id = '.$user_id.' AND exe_user_id = '.$user_id.' AND
orig_lp_id = '.$this->lp_id.' AND orig_lp_id = '.$this->lp_id.' AND
orig_lp_item_id = '.$prereqs_string.' '; orig_lp_item_id = '.$prereqs_string;
$rs_quiz = Database::query($sql); $rs_quiz = Database::query($sql);
if (Database::num_rows($rs_quiz) > 0) { if (Database::num_rows($rs_quiz) > 0) {
while ($quiz = Database::fetch_array($rs_quiz)) { while ($quiz = Database::fetch_array($rs_quiz)) {
$minScore = $items[$refs_list[$this->get_id( /** @var learnpathItem $myItemToCheck */
)]]->getPrerequisiteMinScore(); $myItemToCheck = $items[$refs_list[$this->get_id()]];
$maxScore = $items[$refs_list[$this->get_id( $minScore = $myItemToCheck->getPrerequisiteMinScore();
)]]->getPrerequisiteMaxScore(); $maxScore = $myItemToCheck->getPrerequisiteMaxScore();
if (empty($minScore)) {
// Try with mastery_score
$masteryScoreAsMin = $myItemToCheck->get_mastery_score();
if (!empty($masteryScoreAsMin)) {
$minScore = $masteryScoreAsMin;
}
}
if (isset($minScore) && isset($minScore)) { if (isset($minScore) && isset($minScore)) {
// Taking min/max prerequisites values see BT#5776 // Taking min/max prerequisites values see BT#5776
if ($quiz['exe_result'] >= $minScore && $quiz['exe_result'] <= $maxScore) { if ($quiz['exe_result'] >= $minScore &&
$quiz['exe_result'] <= $maxScore
) {
$returnstatus = true; $returnstatus = true;
break; break;
} else { } else {
@ -2575,9 +2592,7 @@ class learnpathItem
$returnstatus = true; $returnstatus = true;
break; break;
} else { } else {
$this->prereq_alert = get_lang( $this->prereq_alert = get_lang('LearnpathPrereqNotCompleted');
'LearnpathPrereqNotCompleted'
);
$returnstatus = false; $returnstatus = false;
} }
} }
@ -2728,9 +2743,7 @@ class learnpathItem
} }
} }
if (!$orstatus && empty($this->prereq_alert)) { if (!$orstatus && empty($this->prereq_alert)) {
$this->prereq_alert = get_lang( $this->prereq_alert = get_lang('LearnpathPrereqNotCompleted');
'LearnpathPrereqNotCompleted'
);
} }
return $orstatus; return $orstatus;

@ -62,7 +62,7 @@ if ($dir) {
$src = $learnPath->fixBlockedLinks($src); $src = $learnPath->fixBlockedLinks($src);
break; break;
} }
$src = 'blank.php?error=prerequisites&prerequisite_message='.$learnPath->error; $src = 'blank.php?error=prerequisites&prerequisite_message='.Security::remove_XSS($learnPath->error);
break; break;
case 2: case 2:
$learnPath->stop_previous_item(); $learnPath->stop_previous_item();
@ -72,7 +72,7 @@ if ($dir) {
$src = $learnPath->get_link('http', $lpItemId); $src = $learnPath->get_link('http', $lpItemId);
$learnPath->start_current_item(); // starts time counter manually if asset $learnPath->start_current_item(); // starts time counter manually if asset
} else { } else {
$src = 'blank.php?error=prerequisites&prerequisite_message='.$learnPath->error; $src = 'blank.php?error=prerequisites&prerequisite_message='.Security::remove_XSS($learnPath->error);
} }
break; break;
case 3: case 3:

@ -757,6 +757,7 @@ switch ($action) {
$is_success = true; $is_success = true;
} }
Display::addFlash(Display::return_message(get_lang('Updated')));
$url = api_get_self().'?action=add_item&type=step&lp_id='.intval($_SESSION['oLP']->lp_id).'&'.api_get_cidreq(); $url = api_get_self().'?action=add_item&type=step&lp_id='.intval($_SESSION['oLP']->lp_id).'&'.api_get_cidreq();
header('Location: '.$url); header('Location: '.$url);
exit; exit;

@ -25,7 +25,7 @@ $learnpath_id = isset($_REQUEST['lp_id']) ? (int) $_REQUEST['lp_id'] : null;
$submit = isset($_POST['submit_button']) ? $_POST['submit_button'] : null; $submit = isset($_POST['submit_button']) ? $_POST['submit_button'] : null;
/* MAIN CODE */ /* MAIN CODE */
if ((!$is_allowed_to_edit) || ($isStudentView)) { if ((!$is_allowed_to_edit) || $isStudentView) {
error_log('New LP - User not authorized in lp_edit_item_prereq.php'); error_log('New LP - User not authorized in lp_edit_item_prereq.php');
header('location:lp_controller.php?action=view&lp_id='.$learnpath_id); header('location:lp_controller.php?action=view&lp_id='.$learnpath_id);
exit; exit;

@ -16,6 +16,8 @@
*/ */
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
$_course = api_get_course_info();
$this_section = SECTION_COURSES; $this_section = SECTION_COURSES;
$allowSurveyAvailabilityDatetime = api_get_configuration_value('allow_survey_availability_datetime'); $allowSurveyAvailabilityDatetime = api_get_configuration_value('allow_survey_availability_datetime');

@ -1845,7 +1845,6 @@ class SurveyUtil
foreach ($questions as $key => &$question) { foreach ($questions as $key => &$question) {
if (is_array($allowed_question_types)) { if (is_array($allowed_question_types)) {
if (in_array($question['type'], $allowed_question_types)) { if (in_array($question['type'], $allowed_question_types)) {
//echo '<option value="'.$question['question_id'].'"';
if (isset($_GET['xaxis']) && $_GET['xaxis'] == $question['question_id']) { if (isset($_GET['xaxis']) && $_GET['xaxis'] == $question['question_id']) {
$defaults['xaxis'] = $question['question_id']; $defaults['xaxis'] = $question['question_id'];
} }

@ -23,6 +23,7 @@ if (!api_is_allowed_to_edit(false, true)) {
} }
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
$_course = api_get_course_info();
// Getting the survey information // Getting the survey information
$survey_id = Security::remove_XSS($_GET['survey_id']); $survey_id = Security::remove_XSS($_GET['survey_id']);

@ -189,7 +189,7 @@ if (!api_is_session_general_coach() || $extend_rights_for_coachs == 'true') {
echo '<a href="'.api_get_path(WEB_CODE_PATH).'survey/create_new_survey.php?'.api_get_cidreq().'&amp;action=add">'. echo '<a href="'.api_get_path(WEB_CODE_PATH).'survey/create_new_survey.php?'.api_get_cidreq().'&amp;action=add">'.
Display::return_icon('new_survey.png', get_lang('CreateNewSurvey'), '', ICON_SIZE_MEDIUM).'</a> '; Display::return_icon('new_survey.png', get_lang('CreateNewSurvey'), '', ICON_SIZE_MEDIUM).'</a> ';
$url = api_get_path(WEB_CODE_PATH).'survey/create_meeting.php?'.api_get_cidreq(); $url = api_get_path(WEB_CODE_PATH).'survey/create_meeting.php?'.api_get_cidreq();
echo Display::url(Display::return_icon('add.png', get_lang('CreateNewSurvey'), '', ICON_SIZE_MEDIUM), $url); echo Display::url(Display::return_icon('add_doodle.png', get_lang('CreateNewSurveyDoodle'), '', ICON_SIZE_MEDIUM), $url);
} }
echo '<a href="'.api_get_self().'?'.api_get_cidreq().'&amp;search=advanced">'. echo '<a href="'.api_get_self().'?'.api_get_cidreq().'&amp;search=advanced">'.
Display::return_icon('search.png', get_lang('Search'), '', ICON_SIZE_MEDIUM).'</a>'; Display::return_icon('search.png', get_lang('Search'), '', ICON_SIZE_MEDIUM).'</a>';

Loading…
Cancel
Save