diff --git a/main/survey/fillsurvey.php b/main/survey/fillsurvey.php index 90894abb48..13849c0b04 100644 --- a/main/survey/fillsurvey.php +++ b/main/survey/fillsurvey.php @@ -75,7 +75,7 @@ $table_user = Database :: get_main_table(TABLE_MAIN_USER); $table_survey_invitation = Database :: get_course_table(TABLE_SURVEY_INVITATION, $_course['db_name']); // first we check if the needed parameters are present -if (!isset ($_GET['course']) || !isset ($_GET['invitationcode'])) +if ((!isset ($_GET['course']) || !isset ($_GET['invitationcode']))&& !isset($_GET['user_id'])) { Display :: display_error_message(get_lang('SurveyParametersMissingUseCopyPaste'), false); Display :: display_footer(); @@ -94,7 +94,7 @@ if (Database :: num_rows($result) < 1) $survey_invitation = Database :: fetch_array($result, 'ASSOC'); // now we check if the user already filled the survey -if ($survey_invitation['answered'] == 1) +if ($survey_invitation['answered'] == 1 && !isset($_GET['user_id'])) { Display :: display_error_message(get_lang('YouAlreadyFilledThisSurvey'), false); Display :: display_footer(); @@ -606,6 +606,18 @@ if (isset ($_GET['show']) || isset ($_POST['personality'])) } if (key_exists($_GET['show'], $paged_questions)) { + if (isset($_GET['user_id'])) { + $sql = "SELECT survey_question.survey_group_sec1, survey_question.survey_group_sec2, survey_question.survey_group_pri, + survey_question.question_id, survey_question.survey_id, survey_question.survey_question, survey_question.display, survey_question.sort, survey_question.type, survey_question.max_value, + survey_question_option.question_option_id, survey_question_option.option_text, survey_question_option.sort as option_sort + FROM $table_survey_question survey_question + LEFT JOIN $table_survey_question_option survey_question_option + ON survey_question.question_id = survey_question_option.question_id + WHERE survey_question.survey_id = '" . Database :: escape_string($survey_invitation['survey_id']) . "' + AND survey_question.question_id NOT IN (SELECT sa.question_id FROM ".$table_survey_answer." sa WHERE sa.user=".api_get_user_id()." ) + ORDER BY survey_question.sort, survey_question_option.sort ASC"; + } else { + $sql = "SELECT survey_question.survey_group_sec1, survey_question.survey_group_sec2, survey_question.survey_group_pri, survey_question.question_id, survey_question.survey_id, survey_question.survey_question, survey_question.display, survey_question.sort, survey_question.type, survey_question.max_value, survey_question_option.question_option_id, survey_question_option.option_text, survey_question_option.sort as option_sort @@ -615,6 +627,7 @@ if (isset ($_GET['show']) || isset ($_POST['personality'])) WHERE survey_question.survey_id = '" . Database :: escape_string($survey_invitation['survey_id']) . "' AND survey_question.question_id IN (" . implode(',', $paged_questions[$_GET['show']]) . ") ORDER BY survey_question.sort, survey_question_option.sort ASC"; + } $result = api_sql_query($sql, __FILE__, __LINE__); $question_counter_max = Database :: num_rows($result); @@ -623,6 +636,7 @@ if (isset ($_GET['show']) || isset ($_POST['personality'])) $questions = array (); while ($row = Database :: fetch_array($result, 'ASSOC')) { + // if the type is not a pagebreak we store it in the $questions array if ($row['type'] <> 'pagebreak') { $questions[$row['sort']]['question_id'] = $row['question_id']; @@ -1057,11 +1071,10 @@ if (isset ($_GET['show']) || isset ($_POST['personality'])) WHERE survey_question.survey_id = '" . Database :: escape_string($survey_invitation['survey_id']) . "' AND survey_question.question_id IN (" .$imploded. ") ORDER $order_sql "; - $result = api_sql_query($sql, __FILE__, __LINE__); + $result = api_sql_query($sql, __FILE__, __LINE__); $question_counter_max = Database :: num_rows($result); } - } - + } if (!is_null($result)) { $counter = 0; @@ -1130,7 +1143,9 @@ $g_ic = (isset ($_GET['invitationcode']) ? Security :: remove_XSS($_GET['invitat $g_cr = (isset ($_GET['cidReq']) ? Security :: remove_XSS($_GET['cidReq']) : ''); $p_l = (isset ($_POST['language']) ? Security :: remove_XSS($_POST['language']) : ''); -echo '