/** * This function saves a question in the database. * This can be either an update of an existing survey or storing a new survey * * @param array $form_content all the information of the form * * @author Patrick Cool <*****@*****.**>, Ghent University * @version January 2007 */ public function save_question($survey_data, $form_content) { if (strlen($form_content['question']) > 1) { // Checks lenght of the question $empty_answer = false; if ($survey_data['survey_type'] == 1) { if (empty($form_content['choose'])) { $return_message = 'PleaseChooseACondition'; return $return_message; } if ($form_content['choose'] == 2 && $form_content['assigned1'] == $form_content['assigned2']) { $return_message = 'ChooseDifferentCategories'; return $return_message; } } if ($form_content['type'] != 'percentage') { for ($i = 0; $i < count($form_content['answers']); $i++) { if (strlen($form_content['answers'][$i]) < 1) { $empty_answer = true; break; } } } if ($form_content['type'] == 'score') { if (strlen($form_content['maximum_score']) < 1) { $empty_answer = true; } } $additional = array(); $course_id = api_get_course_int_id(); if (!$empty_answer) { // Table definitions $tbl_survey_question = Database::get_course_table(TABLE_SURVEY_QUESTION); // Getting all the information of the survey $survey_data = survey_manager::get_survey($form_content['survey_id']); // Storing the question in the shared database if (is_numeric($survey_data['survey_share']) && $survey_data['survey_share'] != 0) { $shared_question_id = survey_manager::save_shared_question($form_content, $survey_data); $form_content['shared_question_id'] = $shared_question_id; } // Storing a new question if ($form_content['question_id'] == '' || !is_numeric($form_content['question_id'])) { // Finding the max sort order of the questions in the given survey $sql = "SELECT max(sort) AS max_sort\n\t\t\t\t\t FROM {$tbl_survey_question}\n WHERE c_id = {$course_id} AND survey_id='" . Database::escape_string($form_content['survey_id']) . "'"; $result = Database::query($sql); $row = Database::fetch_array($result, 'ASSOC'); $max_sort = $row['max_sort']; // Some variables defined for survey-test type $additional['column'] = ''; $additional['value'] = ''; if ($_POST['choose'] == 1) { $additional['column'] = ',survey_group_pri'; $additional['value'] = ",'" . Database::escape_string($_POST['assigned']) . "'"; } elseif ($_POST['choose'] == 2) { $additional['column'] = ',survey_group_sec1, survey_group_sec2'; $additional['value'] = ",'" . Database::escape_string($_POST['assigned1']) . "'" . ",'" . Database::escape_string($_POST['assigned2']) . "'"; } // Adding the question to the survey_question table $sql = "INSERT INTO {$tbl_survey_question} (c_id, survey_id,survey_question,survey_question_comment,type,display, sort, shared_question_id, max_value" . $additional['column'] . ") VALUES (\n\t\t\t\t\t\t\t\t{$course_id},\n\t\t\t\t\t\t\t\t'" . Database::escape_string($form_content['survey_id']) . "',\n\t\t\t\t\t\t\t\t'" . Database::escape_string($form_content['question']) . "',\n\t\t\t\t\t\t\t\t'" . Database::escape_string($form_content['question_comment']) . "',\n\t\t\t\t\t\t\t\t'" . Database::escape_string($form_content['type']) . "',\n\t\t\t\t\t\t\t\t'" . Database::escape_string($form_content['horizontalvertical']) . "',\n\t\t\t\t\t\t\t\t'" . Database::escape_string($max_sort + 1) . "',\n\t\t\t\t\t\t\t\t'" . Database::escape_string($form_content['shared_question_id']) . "',\n\t\t\t\t\t\t\t\t'" . Database::escape_string($form_content['maximum_score']) . "'" . $additional['value'] . "\n\t\t\t\t\t\t\t\t)"; Database::query($sql); $question_id = Database::insert_id(); $form_content['question_id'] = $question_id; $return_message = 'QuestionAdded'; } else { // Updating an existing question $additionalsets = ''; if ($_POST['choose'] == 1) { $additionalsets = ',survey_group_pri = \'' . Database::escape_string($_POST['assigned']) . '\', survey_group_sec1 = \'0\', survey_group_sec2 = \'0\' '; } elseif ($_POST['choose'] == 2) { $additionalsets = ',survey_group_pri = \'0\', survey_group_sec1 = \'' . Database::escape_string($_POST['assigned1']) . '\', survey_group_sec2 = \'' . Database::escape_string($_POST['assigned2']) . '\' '; } $setadditionals = $additional['set'][1] . $additional['set'][2] . $additional['set'][3]; // Adding the question to the survey_question table $sql = "UPDATE {$tbl_survey_question} SET\n survey_question \t\t= '" . Database::escape_string($form_content['question']) . "',\n survey_question_comment = '" . Database::escape_string($form_content['question_comment']) . "',\n display \t\t\t\t= '" . Database::escape_string($form_content['horizontalvertical']) . "',\n max_value \t\t\t\t= '" . Database::escape_string($form_content['maximum_score']) . "'" . $additionalsets . "\n WHERE c_id = {$course_id} AND question_id = '" . Database::escape_string($form_content['question_id']) . "'"; Database::query($sql); $return_message = 'QuestionUpdated'; } if (!empty($form_content['survey_id'])) { //Updating survey api_item_property_update(api_get_course_info(), TOOL_SURVEY, $form_content['survey_id'], 'SurveyUpdated', api_get_user_id()); } // Storing the options of the question $message_options = survey_manager::save_question_options($form_content, $survey_data); } else { $return_message = 'PleasFillAllAnswer'; } } else { $return_message = 'PleaseEnterAQuestion'; } return $return_message; }