Пример #1
0
 /**
  * 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;
 }