merge with tagalog

skala
Yannick Warnier 12 years ago
commit a157e82e30
  1. 5
      main/admin/user_information.php
  2. 9
      main/create_course/add_course.php
  3. 13
      main/document/document.php
  4. 48
      main/exercice/exercise.class.php
  5. 2
      main/exercice/exercise.lib.php
  6. 142
      main/exercice/exercise_submit.php
  7. 48
      main/exercice/media.php
  8. 2
      main/exercice/multiple_answer_combination_true_false.class.php
  9. 14
      main/exercice/question.class.php
  10. 19
      main/exercice/question_admin.inc.php
  11. 20
      main/exercice/savescores.php
  12. 52
      main/exercice/showinframes.php
  13. 178
      main/exercice/testcategory.class.php
  14. 24
      main/inc/ajax/exercise.ajax.php
  15. 6
      main/install/install.lib.php
  16. 8
      main/newscorm/lp_upload.php
  17. 9
      main/newscorm/scorm.class.php
  18. 6
      main/survey/generate_link.php
  19. 2
      main/survey/survey.lib.php
  20. 18
      main/template/default/create_course/add_course.tpl
  21. 118
      main/upload/form.scorm.php
  22. 1
      main/upload/upload.scorm.php

@ -161,6 +161,7 @@ if (Database::num_rows($res) > 0) {
/**
* Show the classes in which this user is subscribed
*/
/*
$table_class_user = Database :: get_main_table(TABLE_MAIN_CLASS_USER);
$table_class = Database :: get_main_table(TABLE_MAIN_CLASS);
$sql = 'SELECT * FROM '.$table_class_user.' cu, '.$table_class.' c '.
@ -182,8 +183,8 @@ if (Database::num_rows($res) > 0) {
Display :: display_sortable_table($header, $data, array (), array (), array ('user_id' => intval($_GET['user_id'])));
echo '</blockquote>';
} else {
Display::display_warning_message(get_lang('NoClassesForThisUser'));
}
echo '<p>'.get_lang('NoClassesForThisUser').'</p>';
}*/
/**
* Show the URL in which this user is subscribed

@ -183,8 +183,9 @@ if (isset($_user['language']) && $_user['language'] != '') {
}
$form->setDefaults($values);
$message = null;
// Validate the form.
// Validate the form
if ($form->validate()) {
$course_values = $form->exportValues();
@ -237,9 +238,9 @@ if ($form->validate()) {
$tpl->assign('course_title', Display::url($title, $link));
$tpl->assign('course_id', $course_info['code']);
$add_course_tpl = $tpl->get_template('create_course/add_course.tpl');
$message = $tpl->fetch($add_course_tpl);
$template = $tpl->get_template('create_course/add_course.tpl');
$tpl->display($template);
exit;
} else {
$message = Display :: return_message(get_lang('CourseCreationFailed'), 'error', false);
// Display the form.

@ -878,9 +878,16 @@ if (isset($_GET['keyword']) && !empty($_GET['keyword'])) {
} else {
$docs_and_folders = DocumentManager::get_all_document_data($_course, $curdirpath, $to_group_id, null, $is_allowed_to_edit || $group_member_with_upload_rights, false);
}
if (GroupManager::is_subscribed(api_get_user_id(), api_get_group_id()) || GroupManager :: is_tutor_of_group(api_get_user_id(), api_get_group_id()) || UserManager::is_admin(api_get_user_id())) {
$folders = DocumentManager::get_all_document_folders($_course, $to_group_id, $is_allowed_to_edit || $group_member_with_upload_rights);
if (api_get_group_id() != 0) {
if (GroupManager::is_subscribed(api_get_user_id(), api_get_group_id()) || GroupManager :: is_tutor_of_group(api_get_user_id(), api_get_group_id()) || UserManager::is_admin(api_get_user_id())) {
$folders = DocumentManager::get_all_document_folders($_course, api_get_group_id(), $is_allowed_to_edit || $group_member_with_upload_rights);
}
} else {
$folders = DocumentManager::get_all_document_folders($_course, api_get_group_id(), $is_allowed_to_edit || $group_member_with_upload_rights);
}
//$folders = DocumentManager::get_all_document_folders($_course, $to_group_id, $is_allowed_to_edit || $group_member_with_upload_rights);
if ($folders === false) {
$folders = array();
}
@ -1010,7 +1017,7 @@ $table_footer = '';
$total_size = 0;
if (isset($docs_and_folders) && is_array($docs_and_folders)) {
if (GroupManager::is_subscribed(api_get_user_id(), api_get_group_id()) || GroupManager :: is_tutor_of_group(api_get_user_id(), api_get_group_id()) || UserManager::is_admin(api_get_user_id())) {
if (api_get_group_id() == 0 || (GroupManager::is_subscribed(api_get_user_id(), api_get_group_id()) || GroupManager :: is_tutor_of_group(api_get_user_id(), api_get_group_id()) || UserManager::is_admin(api_get_user_id()))) {
// Create a sortable table with our data
$sortable_data = array();

@ -3357,7 +3357,27 @@ class Exercise {
$url_email = api_get_path(WEB_CODE_PATH).'exercice/exercise_show.php?'.api_get_cidreq().'&id_session='.api_get_session_id().'&id='.$exe_id.'&action=qualify';
$user_info = UserManager::get_user_info_by_id(api_get_user_id());
$msg = '<p>'.get_lang('OralQuestionsAttempted').' :</p>
$oral_question_list = null;
foreach ($question_list_answers as $item) {
$question = $item['question'];
$answer = $item['answer'];
$answer_type = $item['answer_type'];
if (!empty($question) && !empty($answer) && $answer_type == ORAL_EXPRESSION) {
$oral_question_list.='<br /><table width="730" height="136" border="0" cellpadding="3" cellspacing="3"><tr>
<td width="220" valign="top" bgcolor="#E5EDF8">&nbsp;&nbsp;'.get_lang('Question').'</td>
<td width="473" valign="top" bgcolor="#F3F3F3">'.$question.'</td>
</tr>
<tr>
<td width="220" valign="top" bgcolor="#E5EDF8">&nbsp;&nbsp;'.get_lang('Answer').'</td>
<td valign="top" bgcolor="#F3F3F3">'.$answer.'</td>
</tr></table>';
}
}
if (!empty($oral_question_list)) {
$msg = '<p>'.get_lang('OralQuestionsAttempted').' :</p>
<p>'.get_lang('AttemptDetails').' : </p>
<table class="data_table">
<tr>
@ -3377,31 +3397,7 @@ class Exercise {
<td>#mail#</td>
</tr>
</table>';
$oral_question_list = null;
foreach ($question_list_answers as $item) {
$question = $item['question'];
$answer = $item['answer'];
$answer_type = $item['answer_type'];
if (!empty($question) && !empty($answer) && $answer_type == ORAL_EXPRESSION) {
$oral_question_list.='<tr>
<td width="220" valign="top" bgcolor="#E5EDF8">&nbsp;&nbsp;'.get_lang('Question').'</td>
<td width="473" valign="top" bgcolor="#F3F3F3">'.$question.'</td>
</tr>
<tr>
<td width="220" valign="top" bgcolor="#E5EDF8">&nbsp;&nbsp;'.get_lang('Answer').'</td>
<td valign="top" bgcolor="#F3F3F3">'.$answer.'</td>
</tr>';
}
}
if (!empty($oral_question_list)) {
$msg .= '<p><br />'.get_lang('OralQuestionsAttemptedAre').' :</p>
<table width="730" height="136" border="0" cellpadding="3" cellspacing="3">';
$msg .= $oral_question_list;
$msg.='</table><br />';
$msg .= '<br />'.sprintf(get_lang('OralQuestionsAttemptedAreX'),$oral_question_list).'<br />';
$msg1 = str_replace("#exercise#", $this->exercise, $msg);
$msg = str_replace("#firstName#", $user_info['firstname'],$msg1);
$msg1 = str_replace("#lastName#", $user_info['lastname'],$msg);

@ -425,7 +425,7 @@ function showQuestion($questionId, $only_questions = false, $origin = false, $cu
}
$correct_item = preg_quote($correct_item);
$correct_item = api_preg_replace('|/|', '\/', $correct_item); // to prevent error if there is a / in the text to find
$answer = api_preg_replace('/'.$correct_item.'/', Display::input('text', "choice[$questionId][]", $value), $answer);
$answer = api_preg_replace('/'.$correct_item.'/', Display::input('text', "choice[$questionId][]", $value), $answer, 1);
}
$i++;
}

@ -72,18 +72,12 @@ $reminder = isset($_REQUEST['reminder']) ? intval($_REQUEST['reminder']) : 0
$remind_question_id = isset($_REQUEST['remind_question_id']) ? intval($_REQUEST['remind_question_id']) : 0;
$exerciseId = isset($_REQUEST['exerciseId']) ? intval($_REQUEST['exerciseId']) : 0;
if (empty($formSent)) {
$formSent = $_REQUEST['formSent'];
}
if (empty($exerciseResult)) {
$exerciseResult = $_REQUEST['exerciseResult'];
}
if (empty($exerciseResultCoordinates)) {
$exerciseResultCoordinates = $_REQUEST['exerciseResultCoordinates'];
}
$formSent = isset($_REQUEST['formSent']) ? $_REQUEST['formSent'] : null;
$exerciseResult = isset($_REQUEST['exerciseResult']) ? $_REQUEST['exerciseResult'] : null;
$exerciseResultCoordinates = isset($_REQUEST['exerciseResultCoordinates']) ? $_REQUEST['exerciseResultCoordinates'] : null;
$choice = isset($_REQUEST['choice']) ? $_REQUEST['choice'] : null;
$choice = empty($choice) ? $_REQUEST['choice2'] : null;
$choice = empty($choice) ? isset($_REQUEST['choice2']) ? $_REQUEST['choice2'] : null : null;
//From submit modal
$current_question = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : null;
@ -95,7 +89,7 @@ $error = '';
$exercice_attemp_table = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
/* Teacher takes an exam and want to see a preview, we delete the objExercise from the session in order to get the latest changes in the exercise */
if (api_is_allowed_to_edit(null,true) && $_GET['preview'] == 1 ) {
if (api_is_allowed_to_edit(null,true) && isset($_GET['preview']) && $_GET['preview'] == 1 ) {
Session::erase('objExercise');
}
@ -200,7 +194,7 @@ if ($objExercise->selectAttempts() > 0) {
$attempt_html .= Display::return_message(sprintf(get_lang('ReachedMaxAttempts'), $exercise_title, $objExercise->selectAttempts()), 'warning', false);
}
} else {
$attempt_html .= Display :: return_message(sprintf(get_lang('ReachedMaxAttempts'), $exercise_title, $objExercise->selectAttempts()), 'warning', false);
$attempt_html .= Display :: return_message(sprintf(get_lang('ReachedMaxAttempts'), $exercise_title, $objExercise->selectAttempts()), 'warning', false);
//Display :: display_warning_message(sprintf(get_lang('ReachedMaxAttemptsAdmin'), $exercise_title, $objExercise->selectAttempts()), false);
}
@ -223,13 +217,13 @@ if ($debug) { error_log("4. Setting the exe_id: $exe_id");} ;
//5. Getting user exercise info (if the user took the exam before) - generating exe_id
//var_dump($learnpath_id.' - '.$learnpath_item_id.' - '.$learnpath_item_view_id);
$exercise_stat_info = $objExercise->get_stat_track_exercise_info($learnpath_id, $learnpath_item_id, $learnpath_item_view_id);
$clock_expired_time = null;
if (empty($exercise_stat_info)) {
if ($debug) error_log('5 $exercise_stat_info is empty ');
$total_weight = 0;
$questionList = $objExercise->get_question_list(true);
foreach ($questionList as $question_id) {
$objQuestionTmp = Question::read($question_id);
$total_weight += floatval($objQuestionTmp->weighting);
@ -346,8 +340,8 @@ if ($time_control) { //Sends the exercice form when the expired time is finished
// if the user has submitted the form
$exercise_title = $objExercise->selectTitle();
$exercise_sound = $objExercise->selectSound();
$exercise_title = $objExercise->selectTitle();
$exercise_sound = $objExercise->selectSound();
//Media questions
$media_questions = $objExercise->get_media_list();
@ -355,7 +349,7 @@ $media_is_activated = $objExercise->media_is_activated($media_questions);
//in LP's is enabled the "remember question" feature?
if (!isset($_SESSION['questionList'])) {
// selects the list of question ID
$questionList = $objExercise->get_question_list(false);
@ -366,7 +360,7 @@ if (!isset($_SESSION['questionList'])) {
Session::write('questionList', $questionList);
if ($debug > 0) { error_log('$_SESSION[questionList] was set'); }
} else {
if (isset($objExercise) && isset($_SESSION['objExercise'])) {
if (isset($objExercise) && isset($_SESSION['objExercise'])) {
$questionList = Session::read('questionList');
}
}
@ -392,7 +386,7 @@ if ($formSent && isset($_POST)) {
}
// Filling array exercise result
// if the user has answered at least one question
if (is_array($choice)) {
if ($debug) { error_log('9.1. $choice is an array '.print_r($choice, 1)); }
@ -474,13 +468,6 @@ if ($formSent && isset($_POST)) {
$sql_exe_result = ", exe_result = 0";
if ($debug) { error_log('exercise_time_control_is_valid is NOT valid then exe_result = 0 '); }
}
/*
//Clean incomplete - @todo why setting to blank the status?
$stat_table = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$update_query = "UPDATE $stat_table SET status = '', exe_date = '".api_get_utc_datetime() ."' , orig_lp_item_view_id = '$learnpath_item_view_id' $sql_exe_result WHERE exe_id = ".$exe_id;
if ($debug) { error_log('Updating track_e_exercises '.$update_query); }
Database::query($update_query);*/
}
if ($debug) { error_log('10. Redirecting to exercise_show.php'); }
header("Location: exercise_result.php?".api_get_cidreq()."&exe_id=$exe_id&origin=$origin&learnpath_id=$learnpath_id&learnpath_item_id=$learnpath_item_id&learnpath_item_view_id=$learnpath_item_view_id");
@ -528,9 +515,7 @@ if ($question_count != 0) {
}
exit;
}
}
//header("Location: exercise_result.php?origin=$origin&learnpath_id=$learnpath_id&learnpath_item_id=$learnpath_item_id&learnpath_item_view_id=$learnpath_item_view_id");
//exit;
}
} else {
//Time control is only enabled for ONE PER PAGE
if (!empty($exe_id) && is_numeric($exe_id)) {
@ -543,13 +528,14 @@ if ($question_count != 0) {
} else {
$sql_exe_result = ", exe_result = 0";
if ($debug) { error_log('12. exercise_time_control_is_valid is NOT valid then exe_result = 0 '); }
}
}
}
if ($objExercise->review_answers) {
header('Location: exercise_reminder.php?'.$params);
exit;
} else {
header("Location: exercise_result.php?".api_get_cidreq()."&exe_id=$exe_id&origin=$origin&learnpath_id=$learnpath_id&learnpath_item_id=$learnpath_item_id&learnpath_item_view_id=$learnpath_item_view_id");
exit;
}
}
} else {
@ -642,7 +628,7 @@ if ($limit_time_exists) {
exit;
} else {
$message_warning = $permission_to_start ? get_lang('ReachedTimeLimitAdmin') : get_lang('ExerciseNoStartedAdmin');
Display :: display_warning_message(sprintf($message_warning, $exercise_title, $objExercise->selectAttempts()));
Display :: display_warning_message(sprintf($message_warning, $exercise_title, $objExercise->selectAttempts()));
}
}
}
@ -660,7 +646,7 @@ if (isset($_custom['exercises_hidden_when_no_start_date']) && $_custom['exercise
//Timer control
if ($time_control) {
echo $objExercise->return_time_left_div();
echo $objExercise->return_time_left_div();
echo '<div style="display:none" class="warning-message" id="expired-message-id">'.get_lang('ExerciceExpiredTimeMessage').'</div>';
}
@ -685,7 +671,7 @@ if ($origin != 'learnpath') {
}
if ($reminder == 2) {
if ($debug) { error_log('. $reminder == 2'); }
if ($debug) { error_log(' $reminder == 2'); }
$data_tracking = $exercise_stat_info['data_tracking'];
$data_tracking = explode(',', $data_tracking);
@ -751,7 +737,7 @@ if (!empty($error)) {
$number_of_hotspot_questions = 0;
$onsubmit = '';
$i = 0;
if (!empty($questionList)) {
foreach ($questionList as $questionId) {
$i++;
@ -791,26 +777,26 @@ if (!empty($error)) {
//$(this).find(".exercise_save_now_button").hide();
$(this).removeClass("question_highlight");
});
$(".no_remind_highlight").hide();
$(".no_remind_highlight").hide();
});
function previous_question(question_num) {
url = "exercise_submit.php?'.$params.'&num="+question_num;
window.location = url;
}
function previous_question_and_save(previous_question_id, question_id_to_save) {
url = "exercise_submit.php?'.$params.'&num="+previous_question_id;
function previous_question_and_save(previous_question_id, question_id_to_save) {
url = "exercise_submit.php?'.$params.'&num="+previous_question_id;
//Save the current question
save_now(question_id_to_save, url);
}
function save_question_list(question_list) {
$.each(question_list, function(key, question_id) {
save_now(question_id, null, false);
});
var url = "";
if ('.$reminder.' == 1 ) {
url = "exercise_reminder.php?'.$params.'&num='.$current_question.'";
@ -819,15 +805,15 @@ if (!empty($error)) {
} else {
url = "exercise_submit.php?'.$params.'&num='.$current_question.'&remind_question_id='.$remind_question_id.'";
}
//$("#save_for_now_"+question_id).html("'.addslashes(Display::return_icon('save.png', get_lang('Saved'), array(), ICON_SIZE_SMALL)).'");
window.location = url;
//$("#save_for_now_"+question_id).html("'.addslashes(Display::return_icon('save.png', get_lang('Saved'), array(), ICON_SIZE_SMALL)).'");
window.location = url;
}
function save_now(question_id, url_extra, redirect) {
function save_now(question_id, url_extra, redirect) {
if (redirect == undefined) {
redirect = true;
}
//1. Normal choice inputs
var my_choice = $(\'*[name*="choice[\'+question_id+\']"]\').serialize();
@ -858,7 +844,7 @@ if (!empty($error)) {
// Only for the first time
$("#save_for_now_"+question_id).html(" '.addslashes(Display::return_icon('loading1.gif')).'");
$.ajax({
type:"post",
async: false,
@ -883,9 +869,9 @@ if (!empty($error)) {
if (url_extra) {
url = url_extra;
}
$("#save_for_now_"+question_id).html("'.addslashes(Display::return_icon('save.png', get_lang('Saved'), array(), ICON_SIZE_SMALL)).'");
if (redirect) {
window.location = url;
}
@ -897,7 +883,7 @@ if (!empty($error)) {
});
return false;
}
function save_now_all(validate) {
//1. Input choice
var my_choice = $(\'*[name*="choice"]\').serialize();
@ -925,7 +911,7 @@ if (!empty($error)) {
}
}
});
//lok+(fgt)= data base
free_answers = $.param(free_answers);
@ -957,7 +943,7 @@ if (!empty($error)) {
return false;
}
</script>';
echo '<form id="exercise_form" method="post" action="'.api_get_self().'?'.api_get_cidreq().'&autocomplete=off&gradebook='.$gradebook."&exerciseId=" . $exerciseId .'" name="frm_exercise" '.$onsubmit.'>
<input type="hidden" name="formSent" value="1" />
<input type="hidden" name="exerciseId" value="'.$exerciseId . '" />
@ -970,7 +956,7 @@ if (!empty($error)) {
//Show list of questions
$i = 1;
$attempt_list = array();
if (isset($exe_id)) {
$attempt_list = get_all_exercise_event_by_exe_id($exe_id);
@ -978,17 +964,17 @@ if (!empty($error)) {
$remind_list = array();
if (isset($exercise_stat_info['questions_to_check']) && !empty($exercise_stat_info['questions_to_check'])) {
$remind_list = explode(',', $exercise_stat_info['questions_to_check']);
}
render_question_list($objExercise, $questionList, $current_question, $exerciseResult, $attempt_list, $remind_list, $media_questions);
}
render_question_list($objExercise, $questionList, $current_question, $exerciseResult, $attempt_list, $remind_list, $media_questions);
echo '</form>';
}
function render_question_list($objExercise, $questionList, $current_question, $exerciseResult, $attempt_list, $remind_list, $media_questions = array()) {
function render_question_list($objExercise, $questionList, $current_question, $exerciseResult, $attempt_list, $remind_list, $media_questions = array()) {
global $origin;
$i = 1;
//Normal question list render
foreach ($questionList as $questionId) {
foreach ($questionList as $questionId) {
// for sequential exercises
if ($objExercise->type == ONE_PER_PAGE) {
// if it is not the right question, goes to the next loop iteration
@ -1000,7 +986,7 @@ function render_question_list($objExercise, $questionList, $current_question, $e
// if the user has already answered this question
if (isset($exerciseResult[$questionId])) {
// construction of the Question object
$objQuestionTmp = Question::read($questionId);
$objQuestionTmp = Question::read($questionId);
// destruction of the Question object
unset ($objQuestionTmp);
Display :: display_normal_message(get_lang('AlreadyAnswered'));
@ -1010,16 +996,16 @@ function render_question_list($objExercise, $questionList, $current_question, $e
}
}
}
//Medias question render
if (isset($media_questions) && !empty($media_questions)) {
$media_question_list = $media_questions[$questionId];
$media_question_list = $media_questions[$questionId];
$objQuestionTmp = Question::read($questionId);
$counter = 1;
if ($objQuestionTmp->type == MEDIA_QUESTION) {
echo $objQuestionTmp->show_media_content();
$count_of_questions_inside_media = count($media_question_list);
//var_dump($media_question_list);
//Show questions that belongs to a media
@ -1030,14 +1016,14 @@ function render_question_list($objExercise, $questionList, $current_question, $e
}
render_question($objExercise, $my_question_id, $attempt_list, $remind_list, $i, $current_question, $media_question_list, $last_question_in_media);
$counter++;
}
}
}
} else {
render_question($objExercise, $questionId, $attempt_list, $remind_list, $i, $current_question);
}
} else {
//Normal question render
render_question($objExercise, $questionId, $attempt_list, $remind_list, $i, $current_question);
render_question($objExercise, $questionId, $attempt_list, $remind_list, $i, $current_question);
}
$i++;
@ -1047,7 +1033,7 @@ function render_question_list($objExercise, $questionList, $current_question, $e
break;
}
}
// end foreach()
if ($objExercise->type == ALL_ON_ONE_PAGE) {
$exercise_actions = $objExercise->show_button($questionId, $current_question);
@ -1055,7 +1041,7 @@ function render_question_list($objExercise, $questionList, $current_question, $e
}
}
function render_question($objExercise, $questionId, $attempt_list, $remind_list, $i, $current_question, $questions_in_media = array(), $last_question_in_media = false) {
function render_question($objExercise, $questionId, $attempt_list, $remind_list, $i, $current_question, $questions_in_media = array(), $last_question_in_media = false) {
global $origin;
$user_choice = isset($attempt_list[$questionId]) ? $attempt_list[$questionId] : null;
@ -1063,21 +1049,21 @@ function render_question($objExercise, $questionId, $attempt_list, $remind_list,
//Hides questions when reviewing a ALL_ON_ONE_PAGE exercise see #4542 no_remind_highlight class hide with jquery
if ($objExercise->type == ALL_ON_ONE_PAGE && isset($_GET['reminder']) && $_GET['reminder'] == 2) {
$remind_highlight = 'no_remind_highlight';
$remind_highlight = 'no_remind_highlight';
}
$is_remind_on = false;
$attributes = array('id' =>'remind_list['.$questionId.']');
if (in_array($questionId, $remind_list)) {
$is_remind_on = true;
$attributes['checked'] = 1;
$attributes['checked'] = 1;
$remind_highlight = ' remind_highlight ';
}
//Showing the question
$exercise_actions = null;
echo '<div id="question_div_'.$questionId.'" class="main_question '.$remind_highlight.'" >';
@ -1096,11 +1082,11 @@ function render_question($objExercise, $questionId, $attempt_list, $remind_list,
$exercise_actions .= Display::div($button, array('class'=>'exercise_save_now_button'));
break;
}
if (!empty($questions_in_media)) {
if (!empty($questions_in_media)) {
/*$button = '<a href="javascript://" class="btn" onclick="save_now(\''.$questionId.'\'); ">'.get_lang('SaveForNow').'</a>';
$button .= '<span id="save_for_now_'.$questionId.'"></span>&nbsp;';
$exercise_actions = Display::div($button, array('class'=>'exercise_save_now_button'));
$exercise_actions = Display::div($button, array('class'=>'exercise_save_now_button'));
$exercise_actions .= $objExercise->show_button($questionId, $current_question);*/
$count_of_questions_inside_media = count($questions_in_media);
if ($count_of_questions_inside_media > 1) {
@ -1108,8 +1094,8 @@ function render_question($objExercise, $questionId, $attempt_list, $remind_list,
$button .= '<span id="save_for_now_'.$questionId.'" class="exercise_save_mini_message"></span>&nbsp;';
$exercise_actions = Display::div($button, array('class'=>'exercise_save_now_button'));
}
if ($last_question_in_media) {
if ($last_question_in_media) {
$exercise_actions = $objExercise->show_button($questionId, $current_question, $questions_in_media);
}
}
@ -1119,7 +1105,7 @@ function render_question($objExercise, $questionId, $attempt_list, $remind_list,
$remind_question_div = Display::tag('label', Display::input('checkbox', 'remind_list['.$questionId.']', '', $attributes).get_lang('ReviewQuestionLater'), array('class' => 'checkbox', 'for' =>'remind_list['.$questionId.']'));
$exercise_actions .= Display::div($remind_question_div, array('class'=>'exercise_save_now_button'));
}
echo Display::div($exercise_actions, array('class'=>'form-actions'));
echo '</div>';
}

@ -22,82 +22,86 @@ $action = isset($_GET['action']) ? $_GET['action'] : null;
$page_url = "media.php?".api_get_cidreq();
$token = Security::get_token();
switch ($action) {
case 'add':
$url = $page_url.'&action='.Security::remove_XSS($_GET['action']);
$objQuestion = Question::getInstance(MEDIA_QUESTION);
$form = new FormValidator('question_admin_form','post', $url);
$form = new FormValidator('question_admin_form', 'post' , $url);
// question form elements
$objQuestion->createForm($form);
$objQuestion->createAnswersForm($form);
if ($form->validate()) {
// question
$objQuestion->processCreation($form, null);
// answers
// answers
$objQuestion->processAnswersCreation($form, null);
header('Location: '.$page_url);
exit;
}
$form->display();
break;
case 'edit':
$url = $page_url.'&action='.Security::remove_XSS($_GET['action']).'&id='.intval($_GET['id']);
$objQuestion = Question::read($_GET['id']);
$form = new FormValidator('question_admin_form','post', $url);
// question form elements
$objQuestion->createForm($form);
$objQuestion->createAnswersForm($form);
$form->addElement('hidden', 'id', intval($_GET['id']));
$defaults = array();
$defaults = array();
$defaults['questionName'] = $objQuestion->question;
$defaults['questionDescription'] = $objQuestion->description;
$defaults['questionLevel'] = $objQuestion->level;
$defaults['questionLevel'] = $objQuestion->level;
$defaults['questionCategory'] = $objQuestion->category_list;
$defaults['parent_id'] = $objQuestion->parent_id;
$form->setDefaults($defaults);
$form->setDefaults($defaults);
$form->display();
if ($form->validate()) {
// question
$objQuestion->processCreation($form, null);
// answers
// answers
$objQuestion->processAnswersCreation($form, null);
}
break;
case 'delete':
case 'delete':
$objQuestion = Question::read($_GET['id']);
$objQuestion->delete();
$objQuestion->delete();
break;
}
//jqgrid will use this URL to do the selects
$url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_course_exercise_medias';
//The order is important you need to check the the $column variable in the model.ajax.php file
//The order is important you need to check the the $column variable in the model.ajax.php file
$columns = array(get_lang('Name'), get_lang('Actions'));
//Column config
$column_model = array(
array('name'=>'name', 'index'=>'name', 'width'=>'80', 'align'=>'left'),
array('name'=>'name', 'index'=>'name', 'width'=>'80', 'align'=>'left'),
array('name'=>'actions', 'index'=>'actions', 'width'=>'100', 'align'=>'left','formatter'=>'action_formatter','sortable'=>'false')
);
//Autowidth
);
//Autowidth
$extra_params['autowidth'] = 'true';
//height auto
$extra_params['height'] = 'auto';
//height auto
$extra_params['height'] = 'auto';
//With this function we can add actions to the jgrid (edit, delete, etc)
$action_links = 'function action_formatter(cellvalue, options, rowObject) {
return \'<a href="?action=edit&id=\'+options.rowId+\'">'.Display::return_icon('edit.png',get_lang('Edit'),'',ICON_SIZE_SMALL).'</a>'.
return \'<a href="?action=edit&id=\'+options.rowId+\'">'.Display::return_icon('edit.png',get_lang('Edit'),'',ICON_SIZE_SMALL).'</a>'.
'&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES))."\'".')) return false;" href="?sec_token='.$token.'&action=delete&id=\'+options.rowId+\'">'.Display::return_icon('delete.png',get_lang('Delete'),'',ICON_SIZE_SMALL).'</a>'.
'\';
'\';
}';
?>
<script>
$(function() {
<?php
<?php
// grid definition see the $career->display() function
echo Display::grid_js('medias', $url, $columns, $column_model, $extra_params, array(), $action_links, true);
?>
echo Display::grid_js('medias', $url, $columns, $column_model, $extra_params, array(), $action_links, true);
?>
});
</script>
<?php
@ -105,4 +109,4 @@ $items = array(
array('content' => Display::return_icon('add.png'), 'url' => $page_url.'&action=add')
);
echo Display::actions($items);
echo Display::grid_html('medias');
echo Display::grid_html('medias');

@ -10,7 +10,7 @@
* Code
*/
if(class_exists('MultipleAnswerCombinationTrueFalse')) { return true; }
require 'multiple_answer_combination.class.php';
require_once 'multiple_answer_combination.class.php';
/**
CLASS MultipleAnswer
*

@ -1199,9 +1199,9 @@ abstract class Question
// default content
$isContent = isset($_REQUEST['isContent']) ? intval($_REQUEST['isContent']) : null;
// question type
$answerType= intval($_REQUEST['answerType']);
$form->addElement('hidden','answerType',$_REQUEST['answerType']);
// Question type
$answerType = isset($_REQUEST['answerType']) ? intval($_REQUEST['answerType']) : null;
$form->addElement('hidden','answerType', $_REQUEST['answerType']);
// html editor
$editor_config = array('ToolbarSet' => 'TestQuestionDescription', 'Width' => '100%', 'Height' => '150');
@ -1222,7 +1222,8 @@ abstract class Question
$form -> addElement ('html','</div>');
// hidden values
$form->addElement('hidden', 'myid', intval($_REQUEST['myid']));
$my_id = isset($_REQUEST['myid']) ? intval($_REQUEST['myid']) : null;
$form->addElement('hidden', 'myid', $my_id);
if ($this->type != MEDIA_QUESTION) {
@ -1456,17 +1457,14 @@ abstract class Question
$question_title = $this->question;
// display question category, if any
$header = Testcategory::returnCategoryAndTitle($this->id);
//$header = Testcategory::returnCategoryAndTitle($this->id);
$show_media = null;
if ($show_media) {
$header .= $this->show_media_content();
}
$header .= Display::page_subheader2($counter_label.". ".$question_title);
//$header .= Display::div('<div class="rib rib-'.$class.'"><h3>'.$score_label.'</h3></div> <h4>'.($score['result']).' </h4><h5 class="'.$class.'">'.$score['result'].' </h5>', array('class'=>'ribbon'));
$header .= Display::div('<div class="rib rib-'.$class.'"><h3>'.$score_label.'</h3></div> <h4>'.$score['result'].' </h4>', array('class'=>'ribbon'));
$header .= Display::div($this->description, array('id'=>'question_description'));
return $header;
}

@ -1,12 +1,11 @@
<?php
/* For licensing terms, see /license.txt */
/**
* Statement (?) administration
* 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 $
* @author Julio Montoya
*/
/**
* Code
@ -16,7 +15,7 @@ $course_id = api_get_course_int_id();
// INIT QUESTION
if (isset($_GET['editQuestion'])) {
$objQuestion = Question::read ($_GET['editQuestion']);
$objQuestion = Question::read ($_GET['editQuestion']);
$action = api_get_self()."?".api_get_cidreq()."&myid=1&modifyQuestion=".$modifyQuestion."&editQuestion=".$objQuestion->id;
} else {
$objQuestion = Question :: getInstance($_REQUEST['answerType']);
@ -26,7 +25,7 @@ if (isset($_GET['editQuestion'])) {
if (is_object($objQuestion)) {
//FORM CREATION
$form = new FormValidator('question_admin_form','post', $action);
if(isset($_GET['editQuestion'])) {
$class="btn save";
$text=get_lang('ModifyQuestion');
@ -42,7 +41,7 @@ if (is_object($objQuestion)) {
// form title
$form->addElement('header', $text.': '.$form_title_extra);
// question form elements
$objQuestion->createForm($form);
@ -55,19 +54,19 @@ if (is_object($objQuestion)) {
}
// FORM VALIDATION
if (isset($_POST['submitQuestion']) && $form->validate()) {
// question
$objQuestion->processCreation($form, $objExercise);
// answers
// answers
$objQuestion->processAnswersCreation($form, $nb_answers);
// TODO: maybe here is the better place to index this tool, including answers text
// redirect
if ($objQuestion -> type != HOT_SPOT && $objQuestion -> type != HOT_SPOT_DELINEATION) {
if ($objQuestion -> type != HOT_SPOT && $objQuestion -> type != HOT_SPOT_DELINEATION) {
if(isset($_GET['editQuestion'])) {
echo '<script type="text/javascript">window.location.href="admin.php?exerciseId='.$exerciseId.'&message=ItemUpdated"</script>';
} else {
@ -77,7 +76,7 @@ if (is_object($objQuestion)) {
} else {
echo '<script type="text/javascript">window.location.href="admin.php?exerciseId='.$exerciseId.'&hotspotadmin='.$objQuestion->id.'"</script>';
}
} else {
} else {
echo '<h3>'.$questionName.'</h3>';
if(!empty($pictureName)){
echo '<img src="../document/download.php?doc_url=%2Fimages%2F'.$pictureName.'" border="0">';

@ -64,16 +64,14 @@ function save_scores($file, $score) {
// anonymous
$user_id = "NULL";
}
$sql = "INSERT INTO $TABLETRACK_HOTPOTATOES ".
"(exe_name, exe_user_id, exe_date,exe_cours_id,exe_result,exe_weighting)".
"VALUES".
"(
$sql = "INSERT INTO $TABLETRACK_HOTPOTATOES (exe_name, exe_user_id, exe_date, exe_cours_id, exe_result, exe_weighting) VALUES (
'".Database::escape_string($file)."',
'".Database::escape_string($user_id)."',
'".Database::escape_string($date)."',
'".Database::escape_string($_cid)."',
'".Database::escape_string($score)."',
'".Database::escape_string($weighting)."')";
Database::query($sql);
if ($origin == 'learnpath') {
@ -81,7 +79,15 @@ function save_scores($file, $score) {
//table to get tracking in there as well
global $jscript2run;
//record the results in the learning path, using the SCORM interface (API)
$jscript2run .= "<script>window.parent.API.void_save_asset('$score', '$weighting', 0, 'completed');</script>";
$jscript2run .= "<script>
$(document).ready(function() {
//API_obj = window.frames.window.content.API;
//API_obj = $('content_id').context.defaultView.content.API; //works only in FF
//console.log(window.parent.frames.window.top.API);
API_obj = window.parent.frames.window.top.API;
API_obj.void_save_asset('$score', '$weighting', 0, 'completed');
});
</script>";
}
}
@ -95,7 +101,7 @@ if ($origin != 'learnpath') {
echo $jscript2run;
} else {
$htmlHeadXtra[] = $jscript2run;
Display::display_header();
echo get_lang('HotPotatoesFinished');
Display::display_reduced_header();
Display::display_confirmation_message(get_lang('HotPotatoesFinished'));
Display::display_footer();
}

@ -13,7 +13,6 @@ require_once api_get_path(LIBRARY_PATH).'fileManage.lib.php';
require_once api_get_path(SYS_CODE_PATH).'exercice/hotpotatoes.lib.php';
$time = time();
$doc_url = str_replace(array('../', '\\', '\\0', '..'), array('', '', '', ''), urldecode($_GET['file']));
$cid = api_get_course_id();
$document_path = api_get_path(SYS_COURSE_PATH).$_course['path'].'/document';
@ -33,8 +32,8 @@ if ($content == '') {
$mit = "function Finish(){";
$js_content = "
//Code added - start
var SaveScoreVariable = 0;
function mySaveScore() {
var SaveScoreVariable = 0;
function mySaveScore() {
if (SaveScoreVariable==0) {
SaveScoreVariable = 1;
if (C.ie) {
@ -44,7 +43,7 @@ if ($content == '') {
window.location.href = '".api_get_path(WEB_PATH)."main/exercice/savescores.php?origin=$origin&learnpath_id=$learnpath_id&learnpath_item_id=$learnpath_item_id&time=".Security::remove_XSS($time)."&test=".$doc_url."&uid=".$user_id."&cid=".$cid."&score='+Score;
}
}
}
}
function Finish(){
mySaveScore();
//Code added - end
@ -58,10 +57,11 @@ if ($content == '') {
if (CheckSubFolder($full_file_path.$user_id.'.t.html') == 0) {
$newcontent = ReplaceImgTag($newcontent);
}
} else {
} else {
$newcontent = $content;
}
WriteFileCont($full_file_path.$user_id.'.t.html', $newcontent);
$doc_url = GetFolderPath($doc_url).urlencode(basename($doc_url));
@ -81,15 +81,15 @@ if (isset($_SESSION['gradebook'])){
if (!empty($gradebook) && $gradebook=='view') {
$interbreadcrumb[]= array (
'url' => '../gradebook/'.$_SESSION['gradebook_dest'],
'name' => get_lang('ToolGradebook')
);
'url' => '../gradebook/'.$_SESSION['gradebook_dest'],
'name' => get_lang('ToolGradebook')
);
}
$htmlHeadXtra[] = '
$htmlHeadXtra[] = '
<script>
var height = window.innerHeight;
$(document).ready( function(){
$("iframe").css("height", height)
var height = $(this).innerHeight() - 20;
$("#hotpotatoe").css("height", height)
});
</script>';
@ -100,32 +100,6 @@ if ($origin == 'learnpath') {
Display::display_header($nameTools,"Exercise");
}
$url = $document_web_path.$doc_url.$user_id.'.t.html?time='.Security::remove_XSS($time);
echo '<iframe id="hotpotatoe" width="100%" frameborder="0" src="'.$url.'"><iframe>';
echo '<iframe style="overflow:hidden" id="hotpotatoe" width="100%" frameborder="0" src="'.$url.'"></iframe>';
echo '</body></html>';
exit;
if ($origin!='learnpath') {
?>
<frameset rows="<?php echo $header_height; ?>,*" border="0" frameborder="no">
<frame name="top" scrolling="no" noresize target="contents" src="testheaderpage.php?file=<?php echo Security::remove_XSS(str_replace(array('../','\\','\\0','..'),array('','','',''),urldecode($_GET['file']))); ?>">
<frame name="main" src="<?php echo $document_web_path.$doc_url.$user_id.'.t.html?time='.Security::remove_XSS($time); ?>">
<noframes>
<body>
<p>This page uses frames, but your browser doesn't support them.
We suggest you try Mozilla, Firebird, Safari, Opera, or other browsers updated this millenium.
</p>
</body>
</noframes>
</frameset>
<?php
} else {
?>
<script>
s='<?php echo $document_web_path.$doc_url.$user_id; ?>.t.html?time=<?php echo Security::remove_XSS($time); ?>';
window.location=s;
</script>
<?php
}
?>
</html>

@ -8,7 +8,7 @@ class Testcategory {
public $id;
public $name;
public $description;
/**
* Constructor of the class Category
* @author - Hubert Borderiou
@ -29,7 +29,7 @@ class Testcategory {
$this->description = $in_description;
}
}
/** return the Testcategory object with id=in_id
*/
function getCategory($in_id) {
@ -45,7 +45,7 @@ class Testcategory {
$this->description = $row['description'];
}
}
/** add Testcategory in the database if name doesn't already exists
*/
function addCategoryInBDD() {
@ -67,13 +67,13 @@ class Testcategory {
}
else {
return false;
}
}
}
/**
/**
* Removes the category with id=in_id from the database if no question use this category
* @todo I'm removing the $in_id parameter because it seems that you're using $this->id instead of $in_id after confirmation delete this
* jmontoya
* jmontoya
*/
//function removeCategory($in_id) {
function removeCategory() {
@ -85,11 +85,11 @@ class Testcategory {
return false;
} else {
return true;
}
}
}
/** modify category name or description of category with id=in_id
/** modify category name or description of category with id=in_id
*/
//function modifyCategory($in_id, $in_name, $in_description) {
function modifyCategory() {
@ -106,8 +106,8 @@ class Testcategory {
return true;
}
}
/**
/**
* Gets the number of question of category id=in_id
* @todo I'm removing the $in_id parameter because it seems that you're using $this->id instead of $in_id after confirmation delete this
* jmontoya
@ -121,15 +121,15 @@ class Testcategory {
$row = Database::fetch_array($res);
return $row['nb'];
}
function display($in_color="#E0EBF5") {
echo "<textarea style='background-color:$in_color; width:60%; height:100px;'>";
print_r($this);
echo "</textarea>";
}
/** return an array of all Category objects in the database
If in_field=="" Return an array of all category objects in the database
Otherwise, return an array of all in_field value in the database (in_field = id or name or description)
@ -137,8 +137,8 @@ class Testcategory {
public static function getCategoryListInfo($in_field="", $in_courseid="") {
if (empty($in_courseid) || $in_courseid=="") {
$in_courseid = api_get_course_int_id();
}
$t_cattable = Database :: get_course_table(TABLE_QUIZ_QUESTION_CATEGORY);
}
$t_cattable = Database :: get_course_table(TABLE_QUIZ_QUESTION_CATEGORY);
$in_field = Database::escape_string($in_field);
$tabres = array();
if ($in_field=="") {
@ -158,7 +158,7 @@ class Testcategory {
}
return $tabres;
}
/**
Return the testcategory id for question with question_id = $in_questionid
@ -170,43 +170,43 @@ class Testcategory {
if (empty($in_courseid) || $in_courseid=="") {
$in_courseid = api_get_course_int_id();
}
$t_cattable = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY);
$t_cattable = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY);
$question_id = Database::escape_string($in_questionid);
$sql = "SELECT category_id FROM $t_cattable WHERE question_id = '$question_id' AND c_id = $in_courseid";
$res = Database::query($sql);
$res = Database::query($sql);
if (Database::num_rows($res) > 0) {
while ($row = Database::fetch_array($res)) {
$result[] = $row['category_id'];
}
$result[] = $row['category_id'];
}
}
return $result;
}
public static function getCategoryNamesForQuestion($in_questionid, $in_courseid = null, $display_into_labels = true) {
$result = array(); // result
if (empty($in_courseid) || $in_courseid=="") {
$in_courseid = api_get_course_int_id();
}
$t_cattable = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY);
$t_cattable = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY);
$table_category = Database::get_course_table(TABLE_QUIZ_QUESTION_CATEGORY);
$question_id = Database::escape_string($in_questionid);
$sql = "SELECT c.title FROM $t_cattable qc INNER JOIN $table_category c
$sql = "SELECT c.title FROM $t_cattable qc INNER JOIN $table_category c
ON (qc.category_id = c.id AND qc.c_id = $in_courseid AND c.c_id = $in_courseid)
WHERE question_id = '$question_id' ";
$res = Database::query($sql);
$res = Database::query($sql);
if (Database::num_rows($res) > 0) {
while ($row = Database::fetch_array($res)) {
$result[] = $row['title'];
}
$result[] = $row['title'];
}
}
if ($display_into_labels) {
$html = self::draw_category_label($result, 'header');
return $html;
}
return $result;
}
}
/**
* true if question id has a category
*/
@ -217,8 +217,8 @@ class Testcategory {
}
return false;
}
/**
* @todo fix this
Return the category name for question with question_id = $in_questionid
@ -230,11 +230,11 @@ class Testcategory {
$course_id = api_get_course_int_id();
}
$course_id = intval($course_id);
$category_list = Testcategory::getCategoryForQuestion($question_id, $course_id);
$result = array(); // result
$t_cattable = Database::get_course_table(TABLE_QUIZ_QUESTION_CATEGORY);
$t_cattable = Database::get_course_table(TABLE_QUIZ_QUESTION_CATEGORY);
$catid = Database::escape_string($catid);
$sql = "SELECT title FROM $t_cattable WHERE id='$catid' AND c_id = $course_id";
$res = Database::query($sql);
@ -244,7 +244,7 @@ class Testcategory {
}
return $result;
}
/**
* return the list of differents categories ID for a test
* input : test_id
@ -257,19 +257,19 @@ class Testcategory {
$quiz = new Exercise();
$quiz->read($exercise_id);
$question_list = $quiz->selectQuestionList();
// the array given by selectQuestionList start at indice 1 and not at indice 0 !!! ???
// the array given by selectQuestionList start at indice 1 and not at indice 0 !!! ???
for ($i=1; $i <= count($question_list); $i++) {
$category_list = Testcategory::getCategoryForQuestion($question_list[$i]);
if (!empty($category_list)) {
$categories_in_exercise = array_merge($categories_in_exercise, $category_list);
}
}
if (!empty($categories_in_exercise)) {
$categories_in_exercise = array_unique(array_filter($categories_in_exercise));
}
if (!empty($categories_in_exercise)) {
$categories_in_exercise = array_unique(array_filter($categories_in_exercise));
}
return $categories_in_exercise;
}
/**
* return the list of differents categories NAME for a test
* input : test_id
@ -286,7 +286,7 @@ class Testcategory {
}
return $tabcatName;
}
/**
* return the number of differents categories for a test
* input : test_id
@ -295,8 +295,8 @@ class Testcategory {
*/
public static function getNumberOfCategoriesForTest($in_testid) {
return count(Testcategory::getListOfCategoriesIDForTest($in_testid));
}
}
/**
* return the number of question of a category id in a test
* input : test_id, category_id
@ -310,14 +310,14 @@ class Testcategory {
$question_list = $exercise->selectQuestionList();
// the array given by selectQuestionList start at indice 1 and not at indice 0 !!! ? ? ?
for ($i=1; $i <= count($question_list); $i++) {
$category_in_question = Testcategory::getCategoryForQuestion($question_list[$i]);
$category_in_question = Testcategory::getCategoryForQuestion($question_list[$i]);
if (in_array($category_id, $category_in_question)) {
$number_questions_in_category++;
}
}
}
return $number_questions_in_category;
}
/**
* return the number of question for a test using random by category
* input : test_id, number of random question (min 1)
@ -327,8 +327,8 @@ class Testcategory {
public static function getNumberOfQuestionRandomByCategory($exercise_id, $in_nbrandom) {
$nbquestionresult = 0;
$list_categories = Testcategory::getListOfCategoriesIDForTest($exercise_id);
if (!empty($list_categories)) {
if (!empty($list_categories)) {
for ($i=0; $i < count($list_categories); $i++) {
if ($list_categories[$i] > 0) { // 0 = no category for this question
$nbQuestionInThisCat = Testcategory::getNumberOfQuestionsInCategoryForTest($exercise_id, $list_categories[$i]);
@ -343,8 +343,8 @@ class Testcategory {
}
return $nbquestionresult;
}
/**
* Return an array (id=>name)
* tabresult[0] = get_lang('NoCategory');
@ -353,7 +353,7 @@ class Testcategory {
static function getCategoriesIdAndName($in_courseid = "") {
if (empty($in_courseid) || $in_courseid=="") {
$in_courseid = api_get_course_int_id();
}
}
$tabcatobject = Testcategory::getCategoryListInfo("", $in_courseid);
$tabresult = array("0"=>get_lang('NoCategorySelected'));
for ($i=0; $i < count($tabcatobject); $i++) {
@ -361,7 +361,7 @@ class Testcategory {
}
return $tabresult;
}
/**
* return an array of question_id for each category
* tabres[0] = array of question id with category id = 0 (i.e. no category)
@ -369,11 +369,11 @@ class Testcategory {
* In this version, a question has 0 or 1 category
*/
static function getQuestionsByCat($in_exerciceId) {
$tabres = array();
$tabres = array();
$TBL_EXERCICE_QUESTION = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
$TBL_QUESTION_REL_CATEGORY = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY);
$in_exerciceId = intval($in_exerciceId);
$sql = "SELECT qrc.question_id, qrc.category_id FROM $TBL_QUESTION_REL_CATEGORY qrc, $TBL_EXERCICE_QUESTION eq
$sql = "SELECT qrc.question_id, qrc.category_id FROM $TBL_QUESTION_REL_CATEGORY qrc, $TBL_EXERCICE_QUESTION eq
WHERE exercice_id=$in_exerciceId AND eq.question_id=qrc.question_id AND eq.c_id=".api_get_course_int_id()." AND eq.c_id=qrc.c_id ORDER BY category_id, question_id";
$res = Database::query($sql);
while ($data = Database::fetch_array($res)) {
@ -384,8 +384,8 @@ class Testcategory {
}
return $tabres;
}
/**
* return a tab of $in_number random elements of $in_tab
*/
@ -397,7 +397,7 @@ class Testcategory {
}
return $tabres;
}
/**
* Display signs [+] and/or (>0) after question title if question has options
* scoreAlwaysPositive and/or uncheckedMayScore
@ -410,7 +410,7 @@ class Testcategory {
echo "<span style='font-size:75%'> [+]</span>";
}
}
/**
* sortTabByBracketLabel ($tabCategoryQuestions)
* key of $tabCategoryQuestions are the categopy id (0 for not in a category)
@ -433,7 +433,7 @@ class Testcategory {
}
return $tabResult;
}
/**
* return total score for test exe_id for all question in the category $in_cat_id for user
* If no question for this category, return ""
@ -444,8 +444,8 @@ class Testcategory {
$in_cat_id = intval($in_cat_id);
$in_exe_id = intval($in_exe_id);
$in_user_id = intval($in_user_id);
$query = "SELECT DISTINCT marks, exe_id, user_id, ta.question_id, category_id FROM $tbl_track_attempt ta , $tbl_question_rel_category qrc
$query = "SELECT DISTINCT marks, exe_id, user_id, ta.question_id, category_id FROM $tbl_track_attempt ta , $tbl_question_rel_category qrc
WHERE ta.question_id=qrc.question_id AND qrc.category_id=$in_cat_id AND exe_id=$in_exe_id AND user_id=$in_user_id";
$res = Database::query($query);
$totalcatscore = "";
@ -454,7 +454,7 @@ class Testcategory {
}
return $totalcatscore;
}
/**
* return the number max of question in a category
@ -475,7 +475,7 @@ class Testcategory {
}
return $res_num_max;
}
public static function getCategoryListName($course_id = null) {
$category_list = self::getCategoryListInfo(null, $course_id);
$category_name_list = array();
@ -483,26 +483,26 @@ class Testcategory {
foreach($category_list as $category) {
$category_name_list[$category->id] = $category->name;
}
}
}
return $category_name_list;
}
public static function return_category_labels($category_list, $all_categories) {
public static function return_category_labels($category_list, $all_categories) {
$category_list_to_render = array();
foreach ($category_list as $category_id) {
$category_name = null;
if (!isset($all_categories[$category_id])) {
$category_name = get_lang('Untitled');
$category_name = get_lang('Untitled');
} else {
$category_name = cut($all_categories[$category_id], 15);
$category_name = cut($all_categories[$category_id], 15);
}
$category_list_to_render[] = $category_name;
$category_list_to_render[] = $category_name;
}
$html = self::draw_category_label($category_list_to_render, 'label');
return $html;
}
static function draw_category_label($category_list, $type = 'label') {
static function draw_category_label($category_list, $type = 'label') {
$new_category_list = array();
foreach ($category_list as $category_name) {
switch ($type) {
@ -514,7 +514,7 @@ class Testcategory {
break;
}
}
$html = null;
if (!empty($new_category_list)) {
switch ($type) {
@ -524,11 +524,11 @@ class Testcategory {
case 'header':
$html = Display::page_subheader3(get_lang('Category').': '.implode(', ', $new_category_list));
}
}
}
return $html;
}
/**
/**
* Returns a category summary report
* @params int exercise id
* @params array prefilled array with the category_id, score, and weight example: array(1 => array('score' => '10', 'total' => 20));
@ -536,37 +536,37 @@ class Testcategory {
public static function get_stats_table_by_attempt($exercise_id, $category_list = array()) {
if (empty($category_list)) {
return null;
}
}
$category_name_list = Testcategory::getListOfCategoriesNameForTest($exercise_id);
$table = new HTML_Table(array('class' => 'data_table'));
$table->setHeaderContents(0, 0, get_lang('Categories'));
$table->setHeaderContents(0, 1, get_lang('AbsoluteScore'));
$table->setHeaderContents(0, 2, get_lang('RelativeScore'));
$row = 1;
$none_category = array();
if (isset($category_list['none'])) {
$none_category = $category_list['none'];
unset($category_list['none']);
$none_category = $category_list['none'];
unset($category_list['none']);
}
$total = array();
if (isset($category_list['total'])) {
$total = $category_list['total'];
unset($category_list['total']);
}
if (count($category_list) > 1) {
foreach ($category_list as $category_id => $category_item) {
foreach ($category_list as $category_id => $category_item) {
$table->setCellContents($row, 0, $category_name_list[$category_id]);
$table->setCellContents($row, 1, show_score($category_item['score'], $category_item['total'], false));
$table->setCellContents($row, 1, show_score($category_item['score'], $category_item['total'], false));
$table->setCellContents($row, 2, show_score($category_item['score'], $category_item['total'], true, false, true));
$row++;
}
if (!empty($none_category)) {
$table->setCellContents($row, 0, get_lang('None'));
$table->setCellContents($row, 1, show_score($none_category['score'], $none_category['total'], false));
$table->setCellContents($row, 1, show_score($none_category['score'], $none_category['total'], false));
$table->setCellContents($row, 2, show_score($none_category['score'], $none_category['total'], true, false, true));
$row++;
}
@ -579,8 +579,8 @@ class Testcategory {
}
return null;
}
}
endif;

@ -17,6 +17,9 @@ $course_id = api_get_course_int_id();
if ($debug) error_log("$action ajax call");
$session_id = isset($_REQUEST['session_id']) ? intval($_REQUEST['session_id']) : api_get_session_id();
$course_code = isset($_REQUEST['cidReq']) ? $_REQUEST['cidReq'] : api_get_course_id();
switch ($action) {
case 'get_live_stats':
if (!api_is_allowed_to_edit(null, true)) {
@ -140,17 +143,14 @@ switch ($action) {
echo json_encode($response);
break;
case 'update_exercise_list_order':
$session_id = api_get_session_id();
if (api_is_allowed_to_edit(null, true)) {
$new_list = $_REQUEST['exercise_list'];
$table = Database::get_course_table(TABLE_QUIZ_ORDER);
$counter = 1;
//Drop all
Database::query("DELETE FROM $table WHERE session_id = $session_id AND c_id = $course_id");
//Insert alll
//Insert all
foreach ($new_list as $new_order_id) {
/*Database::update($table, array('exercise_order' => $counter),
array('session_id = ? AND exercise_id = ? AND c_id = ? '=> array($session_id, intval($new_order_id), $course_id)));*/
Database::insert($table, array('exercise_order' => $counter, 'session_id' => $session_id, 'exercise_id' => intval($new_order_id), 'c_id' => $course_id));
$counter++;
}
@ -158,8 +158,6 @@ switch ($action) {
}
break;
case 'update_question_order':
$session_id = isset($_REQUEST['session_id']) ? intval($_REQUEST['session_id']) : api_get_session_id();
$course_code = isset($_REQUEST['cidReq']) ? $_REQUEST['cidReq'] : api_get_course_id();
$course_info = api_get_course_info($course_code);
$course_id = $course_info['real_id'];
@ -174,7 +172,7 @@ switch ($action) {
$TBL_QUESTIONS = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
$counter = 1;
foreach ($new_question_list as $new_order_id) {
Database::update($TBL_QUESTIONS, array('question_order' => $counter), array('question_id = ? AND c_id = ? AND exercice_id = ? '=>array(intval($new_order_id), $course_id, $exercise_id)), true);
Database::update($TBL_QUESTIONS, array('question_order' => $counter), array('question_id = ? AND c_id = ? AND exercice_id = ? '=>array(intval($new_order_id), $course_id, $exercise_id)));
$counter++;
}
Display::display_confirmation_message(get_lang('Saved'));
@ -190,6 +188,8 @@ switch ($action) {
}
break;
case 'save_exercise_by_now':
$course_info = api_get_course_info($course_code);
$course_id = $course_info['real_id'];
//Use have permissions?
if (api_is_allowed_to_session_edit()) {
@ -288,7 +288,7 @@ switch ($action) {
if ($type == 'simple') {
foreach ($question_list as $my_question_id) {
$objQuestionTmp = Question :: read($my_question_id);
$objQuestionTmp = Question::read($my_question_id, $course_id);
$total_weight += $objQuestionTmp->selectWeighting();
}
}
@ -309,7 +309,7 @@ switch ($action) {
if ($debug) error_log("my_choice = ".print_r($my_choice, 1)."");
// creates a temporary Question object
$objQuestionTmp = Question::read($my_question_id);
$objQuestionTmp = Question::read($my_question_id, $course_id);
//Getting free choice data
if ($objQuestionTmp->type == FREE_ANSWER && $type == 'all') {
@ -337,9 +337,9 @@ switch ($action) {
// Deleting old attempt
if (isset($attempt_list) && !empty($attempt_list[$my_question_id])) {
if ($debug) error_log("delete_attempt exe_id : $exe_id, my_question_id: $my_question_id");
delete_attempt($exe_id, api_get_user_id() , api_get_course_id(), api_get_session_id(), $my_question_id);
delete_attempt($exe_id, api_get_user_id() , $course_code, $session_id, $my_question_id);
if ($objQuestionTmp->type == HOT_SPOT) {
delete_attempt_hotspot($exe_id, api_get_user_id() , api_get_course_id(), $my_question_id);
delete_attempt_hotspot($exe_id, api_get_user_id() , $course_code, $my_question_id);
}
if (isset($attempt_list[$my_question_id]) && isset($attempt_list[$my_question_id]['marks'])) {
$total_score -= $attempt_list[$my_question_id]['marks'];
@ -384,7 +384,7 @@ switch ($action) {
$objExercise->selectId(),
$total_score,
$total_weight,
api_get_session_id(),
$session_id,
$exercise_stat_info['orig_lp_id'],
$exercise_stat_info['orig_lp_item_id'],
$exercise_stat_info['orig_lp_item_view_id'],

@ -715,15 +715,15 @@ function parse_sql_queries($sql_text) {
for ($i = 0; $i < $count; $i++) {
$this_sql_query = $sql_instructions[$i]['query'];
Database::query($this_sql_query);
//UTF8 fix see #5678
/*
if (strpos(strtolower($this_sql_query), 'create table') === false) {
Database::query($this_sql_query);
} else {
//$this_sql_query .= substr($this_sql_query, strlen($this_sql_query), strlen($this_sql_query)-1);
$this_sql_query .= ' DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci ';
Database::query($this_sql_query);
}*/
}
}
}
@ -3858,7 +3858,7 @@ function create_course_tables($course_db_name = null) {
Database::query($sql);
$table_quiz_order = $course_db_name . 'quiz_order';
$sql = " CREATE TABLE $table_quiz_order(
id int unsigned NOT NULL auto_increment,
c_id int unsigned NOT NULL,

@ -33,7 +33,7 @@ $is_error = isset($user_file['error']) ? $user_file['error'] : false;
if( Request::is_post() && $is_error){
return api_failure::set_failure('upload_file_too_big');
unset($_FILEs['user_file']);
}else if ($_SERVER['REQUEST_METHOD'] == 'POST' && count($_FILES) > 0 && !empty($_FILES['user_file']['name'])) {
} else if ($_SERVER['REQUEST_METHOD'] == 'POST' && count($_FILES) > 0 && !empty($_FILES['user_file']['name'])) {
// A file upload has been detected, now deal with the file...
@ -129,14 +129,14 @@ if( Request::is_post() && $is_error){
$new_dir = replace_dangerous_char(trim($file_base_name), 'strict');
require_once 'learnpath.class.php';
$result = learnpath::verify_document_size($s);
if ($result == true) {
return api_failure::set_failure('upload_file_too_big');
}
$type = learnpath::get_package_type($s, basename($s));
switch ($type) {
case 'scorm':
require_once 'scorm.class.php';

@ -350,6 +350,7 @@ class scorm extends learnpath {
}
$title = Database::escape_string($item['title']);
$title = api_utf8_decode($title);
$max_score = Database::escape_string($item['max_score']);
if ($max_score == 0 || is_null($max_score) || $max_score == '') {
@ -365,11 +366,15 @@ class scorm extends learnpath {
}
$identifier = Database::escape_string($item['identifier']);
if (empty($title)) {
$title = get_lang('Untitled');
}
$prereq = Database::escape_string($item['prerequisites']);
$sql_item = "INSERT INTO $new_lp_item (c_id, lp_id,item_type,ref,title, path,min_score,max_score, $field_add parent_item_id,previous_item_id,next_item_id, prerequisite,display_order,launch_data, parameters) VALUES " .
"($course_id, $lp_id, '$type','".$identifier."','".$title."'," .
"'$path',0,$max_score, $value_add" .
"($course_id, $lp_id, '$type','$identifier', '$title', '$path' , 0, $max_score, $value_add" .
"$parent, $previous, 0, " .
"'$prereq', ".$item['rel_order'] .", '".$item['datafromlms']."'," .
"'".$item['parameters']."'" .

@ -29,14 +29,14 @@ if (!survey_manager::survey_generation_hash_available()) {
$link = survey_manager::generate_survey_link($survey_id, api_get_course_int_id(), api_get_session_id(), api_get_group_id());
echo '<div class="row">';
echo '<div class="span12" style="text-align:center">';
echo Display::url(get_lang('GenerateSurveyLink'), $link, array('class' => 'btn btn-primary btn-large'));
echo Display::url(get_lang('GenerateSurveyAccessLink'), $link, array('class' => 'btn btn-primary btn-large'));
echo '</div>';
echo '<div class="span12">';
echo get_lang('GenerateSurveyLinkExplanation');
echo get_lang('GenerateSurveyAccessLinkExplanation');
echo '<pre>';
echo $link;
echo '</pre>';
echo '</div>';
echo '</div>';
echo '</div>';

@ -4207,7 +4207,7 @@ class SurveyUtil {
if (api_is_allowed_to_edit() || api_is_element_in_the_session(TOOL_SURVEY, $survey_id)) {
$return .= '<a href="create_new_survey.php?'.api_get_cidreq().'&amp;action=edit&amp;survey_id='.$survey_id.'">'.Display::return_icon('edit.png', get_lang('Edit'),'',ICON_SIZE_SMALL).'</a>';
if (survey_manager::survey_generation_hash_available()) {
$return .= Display::url(Display::return_icon('new_link.png', get_lang('Newlink'),'',ICON_SIZE_SMALL), 'generate_link.php?survey_id='.$survey_id.'&'.api_get_cidreq());
$return .= Display::url(Display::return_icon('new_link.png', get_lang('GenerateSurveyAccessLink'),'',ICON_SIZE_SMALL), 'generate_link.php?survey_id='.$survey_id.'&'.api_get_cidreq());
}
$return .= ' <a href="survey_list.php?'.api_get_cidreq().'&amp;action=empty&amp;survey_id='.$survey_id.'" onclick="javascript: if(!confirm(\''.addslashes(api_htmlentities(get_lang("EmptySurvey").'?')).'\')) return false;">'.Display::return_icon('clean.png', get_lang('EmptySurvey'),'',ICON_SIZE_SMALL).'</a>&nbsp;';

@ -1,3 +1,7 @@
{% extends "default/layout/layout_1_col.tpl" %}
{% block content %}
{{ just_created_link }}
<h3>{{ 'JustCreated'|get_lang }} {{ course_title }}</h3>
<hr />
@ -11,11 +15,11 @@
<div class="caption">
<a href="{{ course_url }}" class="btn">
{{'CourseHomepage'|get_lang}}
</a>
</a>
</div>
</div>
</div>
{% if ("allow_user_course_subscription_by_course_admin" | get_setting) == 'true' or _u.is_admin == 1 %}
<div class="span3">
<div class="thumbnail">
@ -23,12 +27,12 @@
<div class="caption">
<a href="{{ _p.web_main }}user/subscribe_user.php?cidReq={{ course_id }}" class="btn">
{{ 'SubscribeUserToCourse'|get_lang }}
</a>
</a>
</div>
</div>
</div>
{% endif %}
<div class="span3">
<div class="thumbnail">
<img src="{{ _p.web_img }}icons/64/info.png"/>
@ -40,7 +44,7 @@
</div>
</div>
<div class="span3">
<div class="thumbnail">
<div class="thumbnail">
<img src="{{ _p.web_img }}icons/64/reference.png"/>
<div class="caption">
<a href="{{ _p.web_main }}course_info/infocours.php?cidReq={{ course_id }}" class="btn">
@ -50,5 +54,5 @@
</div>
</div>
</div>
<div class="clear"></div>
<div class="clear"></div>
{% endblock %}

@ -1,4 +1,5 @@
<?php
/* For licensing terms, see /license.txt */
/**
* Display part of the SCORM sub-process for upload. This script MUST BE included by upload/index.php
@ -6,115 +7,88 @@
* @package chamilo.upload
* @author Yannick Warnier <ywarnier@beeznest.org>
*/
/**
* Small function to list files in archive/
*/
function get_zip_files_in_garbage(){
$list = array();
$dh = opendir(api_get_path(SYS_ARCHIVE_PATH));
if($dh === false){
//ignore
}else{
while($entry = readdir($dh)){
if(substr($entry,0,1) == '.'){/*ignore files starting with . */}
else
{
if(preg_match('/^.*\.zip$/i',$entry)){
$list[] = $entry;
}
}
}
natcasesort($list);
closedir($dh);
}
return $list;
function get_zip_files_in_garbage() {
$list = array();
$dh = opendir(api_get_path(SYS_ARCHIVE_PATH));
if ($dh === false) {
//ignore
} else {
while ($entry = readdir($dh)) {
if (substr($entry, 0, 1) == '.') {/* ignore files starting with . */
} else {
if (preg_match('/^.*\.zip$/i', $entry)) {
$list[] = $entry;
}
}
}
natcasesort($list);
closedir($dh);
}
return $list;
}
/**
* Just display the form needed to upload a SCORM and give its settings
*/
$nameTools = get_lang("FileUpload");
$interbreadcrumb[]= array ("url"=>"../newscorm/lp_controller.php?action=list", "name"=> get_lang("ToolLearnpath"));
Display::display_header($nameTools,"Path");
//show the title
//api_display_tool_title(get_lang("Learnpath")." - ".$nameTools.$add_group_to_title);
//TODO: Include right language file
$interbreadcrumb[] = array("url" => "../newscorm/lp_controller.php?action=list", "name" => get_lang("ToolLearnpath"));
Display::display_header($nameTools, "Path");
require_once '../newscorm/content_makers.inc.php';
require_once api_get_path(LIBRARY_PATH) . 'specific_fields_manager.lib.php';
require_once api_get_path(LIBRARY_PATH).'specific_fields_manager.lib.php';
echo '<div class="actions">';
echo '<a href="../newscorm/lp_controller.php?cidReq='.$_course['sysCode'].'">'.Display::return_icon('back.png',get_lang('ReturnToLearningPaths'),'',ICON_SIZE_MEDIUM).'</a>';
echo '<a href="../newscorm/lp_controller.php?cidReq='.$_course['sysCode'].'">'.Display::return_icon('back.png', get_lang('ReturnToLearningPaths'), '', ICON_SIZE_MEDIUM).'</a>';
echo '</div>';
$form = new FormValidator('','POST','upload.php','','id="upload_form" enctype="multipart/form-data" style="background-image: url(\'../img/scorm.jpg\'); background-repeat: no-repeat; background-position: 620px;"');
$form = new FormValidator('', 'POST', 'upload.php', '', 'id="upload_form" enctype="multipart/form-data" style="background-image: url(\'../img/scorm.jpg\'); background-repeat: no-repeat; background-position: 620px;"');
$form->addElement('header', '', $nameTools);
$form->addElement('hidden', 'curdirpath', $path);
$form->addElement('hidden', 'tool', $my_tool);
$form->addElement('file','user_file',get_lang('FileToUpload'));
$form->add_real_progress_bar('uploadScorm','user_file');
$form->addElement('file', 'user_file', get_lang('FileToUpload'));
$form->add_real_progress_bar('uploadScorm', 'user_file');
$form->addRule('user_file', get_lang('ThisFieldIsRequired'), 'required');
/*$select_content_marker = &$form->addElement('select','content_maker',get_lang('ContentMaker'));
foreach($content_origins as $index => $origin){
$select_content_marker->addOption($origin,$origin);
}*/
unset($content_origins[0]);
unset($content_origins[1]);
/*
$select_content_proximity = &$form->addElement('select','content_proximity',get_lang('ContentProximity'));
$select_content_proximity->addOption(get_lang('Local'),"local");
$select_content_proximity->addOption(get_lang('Remote'),"remote");
$select_content_proximity -> setSelected("local");
*/
if (api_get_setting('search_enabled')=='true') {
$form -> addElement ('checkbox', 'index_document','', get_lang('SearchFeatureDoIndexDocument'));
$specific_fields = get_specific_field_list();
foreach ($specific_fields as $specific_field) {
$form -> addElement ('text', $specific_field['code'], $specific_field['name'].' : ');
}
if (api_get_setting('search_enabled') == 'true') {
$form->addElement('checkbox', 'index_document', '', get_lang('SearchFeatureDoIndexDocument'));
$specific_fields = get_specific_field_list();
foreach ($specific_fields as $specific_field) {
$form->addElement('text', $specific_field['code'], $specific_field['name'].' : ');
}
}
if (api_is_platform_admin()) {
$form->addElement('checkbox', 'use_max_score', null, get_lang('UseMaxScore100'));
$form->addElement('checkbox', 'use_max_score', null, get_lang('UseMaxScore100'));
}
$form->addElement('style_submit_button','submit', get_lang('Send'),'class="upload"');
$form->addElement('style_submit_button', 'submit', get_lang('Send'), 'class="upload"');
$form->addElement('html', '<br /><br /><br />');
/*$list = get_zip_files_in_garbage();
if(count($list)>0){
$select_file_name = &$form->addElement('select','file_name',get_lang('Or').' '.api_strtolower(get_lang('UploadLocalFileFromGarbageDir')));
foreach($list as $file){
$select_file_name->addOption($file,$file);
}
$form->addElement('submit', 'submit', get_lang('Download'));
}
else{
$text_empty = &$form->addElement('text', 'empty', get_lang('Or').' '.api_strtolower(get_lang('UploadLocalFileFromGarbageDir')));
$defaults["empty"] = get_lang('Empty');
$text_empty->freeze();
}*/
if(is_dir(api_get_path(PLUGIN_PATH)."/pens")) {
require_once(api_get_path(PLUGIN_PATH)."/pens/chamilo_pens.php");
$list = ChamiloPens::findAll();
if(count($list) > 0) {
$select_pens = $form->addElement('select', 'pens_package', get_lang('Or').' '.get_lang('select a PENS package'));
foreach($list as $package) {
$select_pens->addOption($package->getPackageName(), $package->getPackageName());
}
}
if (is_dir(api_get_path(PLUGIN_PATH)."/pens")) {
require_once(api_get_path(PLUGIN_PATH)."/pens/chamilo_pens.php");
$list = ChamiloPens::findAll();
if (count($list) > 0) {
$select_pens = $form->addElement('select', 'pens_package', get_lang('Or').' '.get_lang('select a PENS package'));
foreach ($list as $package) {
$select_pens->addOption($package->getPackageName(), $package->getPackageName());
}
}
}
// the default values for the form
$defaults = array('index_document'=>'checked="checked"','use_max_score'=>1);
$defaults = array('index_document' => 'checked="checked"', 'use_max_score' => 1);
$form->setDefaults($defaults);
Display::display_normal_message(Display::tag('strong', get_lang('SupportedScormContentMakers')).': '.implode(', ', $content_origins), false);
$form->display();
// footer
Display::display_footer();

@ -13,6 +13,7 @@
$language_file = 'scorm';
$cwdir = getcwd();
require_once '../newscorm/lp_upload.php';
//reinit current working directory as many functions in upload change it
chdir($cwdir);

Loading…
Cancel
Save