示例#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 $survey_data
  * @param array $form_content all the information of the form
  *
  * @author Patrick Cool <*****@*****.**>, Ghent University
  * @version January 2007
  */
 public static function save_question($survey_data, $form_content)
 {
     $return_message = '';
     if (strlen($form_content['question']) > 1) {
         // Checks length 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') {
             if (isset($form_content['answers'])) {
                 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 = SurveyManager::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 = SurveyManager::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='" . intval($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
                 $extraParams = [];
                 if (isset($_POST['choose'])) {
                     if ($_POST['choose'] == 1) {
                         $extraParams['survey_group_pri'] = $_POST['assigned'];
                     } elseif ($_POST['choose'] == 2) {
                         $extraParams['survey_group_sec1'] = $_POST['assigned1'];
                         $extraParams['survey_group_sec2'] = $_POST['assigned2'];
                     }
                 }
                 $questionComment = isset($form_content['question_comment']) ? $form_content['question_comment'] : '';
                 $maxScore = isset($form_content['maximum_score']) ? $form_content['maximum_score'] : '';
                 $display = isset($form_content['horizontalvertical']) ? $form_content['horizontalvertical'] : '';
                 $params = ['c_id' => $course_id, 'survey_id' => $form_content['survey_id'], 'survey_question' => $form_content['question'], 'survey_question_comment' => $questionComment, 'type' => $form_content['type'], 'display' => $display, 'sort' => $max_sort + 1, 'shared_question_id' => $form_content['shared_question_id'], 'max_value' => $maxScore];
                 $params = array_merge($params, $extraParams);
                 $question_id = Database::insert($tbl_survey_question, $params);
                 if ($question_id) {
                     $sql = "UPDATE {$tbl_survey_question} SET question_id = {$question_id}\n                                WHERE iid = {$question_id}";
                     Database::query($sql);
                     $form_content['question_id'] = $question_id;
                     $return_message = 'QuestionAdded';
                 }
             } else {
                 // Updating an existing question
                 $extraParams = [];
                 if (isset($_POST['choose'])) {
                     if ($_POST['choose'] == 1) {
                         $extraParams['survey_group_pri'] = $_POST['assigned'];
                         $extraParams['survey_group_sec1'] = 0;
                         $extraParams['survey_group_sec2'] = 0;
                     } elseif ($_POST['choose'] == 2) {
                         $extraParams['survey_group_pri'] = 0;
                         $extraParams['survey_group_sec1'] = $_POST['assigned1'];
                         $extraParams['survey_group_sec2'] = $_POST['assigned2'];
                     }
                 }
                 $maxScore = isset($form_content['maximum_score']) ? $form_content['maximum_score'] : null;
                 $questionComment = isset($form_content['question_comment']) ? $form_content['question_comment'] : null;
                 // Adding the question to the survey_question table
                 $params = ['survey_question' => $form_content['question'], 'survey_question_comment' => $questionComment, 'display' => $form_content['horizontalvertical']];
                 $params = array_merge($params, $extraParams);
                 Database::update($tbl_survey_question, $params, ['c_id = ? AND question_id = ?' => [$course_id, $form_content['question_id']]]);
                 $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
             SurveyManager::save_question_options($form_content, $survey_data);
         } else {
             $return_message = 'PleasFillAllAnswer';
         }
     } else {
         $return_message = 'PleaseEnterAQuestion';
     }
     if (!empty($return_message)) {
         Display::addFlash(Display::return_message(get_lang($return_message)));
     }
     return $return_message;
 }