} } else { if (!(api_is_course_admin() || api_is_platform_admin())) { api_not_allowed(); exit; } } $return = survey_manager::empty_survey(intval($_GET['survey_id'])); if ($return) { Display::display_confirmation_message(get_lang('SurveyEmptied'), false); } else { Display::display_error_message(get_lang('ErrorOccurred'), false); } break; case 'copy_survey': survey_manager::copy_survey($_GET['survey_id']); break; } // Action handling: performing the same action on multiple surveys if (isset($_POST['action']) && $_POST['action']) { if (is_array($_POST['id'])) { foreach ($_POST['id'] as $key => &$value) { // getting the information of the survey (used for when the survey is shared) $survey_data = survey_manager::get_survey($value); // if the survey is shared => also delete the shared content if (is_numeric($survey_data['survey_share'])) { survey_manager::delete_survey($survey_data['survey_share'], true); } // delete the actual survey survey_manager::delete_survey($value); }
/** * This function stores a survey in the database. * * @param array $values * @return array $return the type of return message that has to be displayed and the message in it * * @author Patrick Cool <*****@*****.**>, Ghent University * @version February 2007 */ public static function store_survey($values) { $_user = api_get_user_info(); $course_id = api_get_course_int_id(); $table_survey = Database::get_course_table(TABLE_SURVEY); $shared_survey_id = 0; if (!$values['survey_id'] || !is_numeric($values['survey_id'])) { // Check if the code doesn't soon exists in this language $sql = 'SELECT 1 FROM ' . $table_survey . ' WHERE c_id = ' . $course_id . ' AND code="' . Database::escape_string($values['survey_code']) . '" AND lang="' . Database::escape_string($values['survey_language']) . '"'; $rs = Database::query($sql); if (Database::num_rows($rs) > 0) { $return['message'] = 'ThisSurveyCodeSoonExistsInThisLanguage'; $return['type'] = 'error'; $return['id'] = isset($values['survey_id']) ? $values['survey_id'] : 0; return $return; } if ($values['anonymous'] == '') { $values['anonymous'] = 0; } $additional['columns'] = ''; $additional['values'] = ''; if ($values['anonymous'] == 0) { // Input_name_list $additional['columns'] .= ', show_form_profile'; $additional['values'] .= ",'" . Database::escape_string($values['show_form_profile']) . "'"; if ($values['show_form_profile'] == 1) { // Input_name_list $fields = explode(',', $values['input_name_list']); $field_values = ''; foreach ($fields as &$field) { if ($field != '') { if ($values[$field] == '') { $values[$field] = 0; } $field_values .= $field . ':' . $values[$field] . '@'; } } $additional['columns'] .= ', form_fields'; $additional['values'] .= ",'" . Database::escape_string($field_values) . "'"; } else { $additional['columns'] .= ', form_fields'; $additional['values'] .= ",''"; } } else { // Input_name_list $additional['columns'] .= ', show_form_profile'; $additional['values'] .= ",'0'"; $additional['columns'] .= ', form_fields'; $additional['values'] .= ",''"; } if ($values['survey_type'] == 1) { $additional['columns'] .= ', survey_type'; $additional['values'] .= ",'1'"; $additional['columns'] .= ', shuffle'; $additional['values'] .= ",'" . Database::escape_string($values['shuffle']) . "'"; $additional['columns'] .= ', one_question_per_page'; $additional['values'] .= ",'" . Database::escape_string($values['one_question_per_page']) . "'"; $additional['columns'] .= ', parent_id'; $additional['values'] .= ",'" . Database::escape_string($values['parent_id']) . "'"; // Logic for versioning surveys if (!empty($values['parent_id'])) { $additional['columns'] .= ', survey_version'; $sql = 'SELECT survey_version FROM ' . $table_survey . ' WHERE c_id = ' . $course_id . ' AND parent_id = ' . Database::escape_string($values['parent_id']) . ' ORDER BY survey_version DESC LIMIT 1'; $rs = Database::query($sql); if (Database::num_rows($rs) === 0) { $sql = 'SELECT survey_version FROM ' . $table_survey . ' WHERE c_id = ' . $course_id . ' survey_id = ' . Database::escape_string($values['parent_id']); $rs = Database::query($sql); $getversion = Database::fetch_array($rs, 'ASSOC'); if (empty($getversion['survey_version'])) { $additional['values'] .= ",'" . ++$getversion['survey_version'] . "'"; } else { $additional['values'] .= ",'" . $getversion['survey_version'] . ".1'"; } } else { $row = Database::fetch_array($rs, 'ASSOC'); $pos = api_strpos($row['survey_version']); if ($pos === false) { //$new_version = substr($row['survey_version'],$pos, count()) $row['survey_version'] = $row['survey_version'] + 1; $additional['values'] .= ",'" . $row['survey_version'] . "'"; } else { $getlast = explode('\\.', $row['survey_version']); $lastversion = array_pop($getlast); $lastversion = $lastversion + 1; $add = implode('.', $getlast); if ($add != '') { $insertnewversion = $add . '.' . $lastversion; } else { $insertnewversion = $lastversion; } $additional['values'] .= ",'" . $insertnewversion . "'"; } } } } $course_id = api_get_course_int_id(); $sql = "INSERT INTO {$table_survey} (c_id, code, title, subtitle, author, lang, avail_from, avail_till, is_shared, template, intro, surveythanks, creation_date, anonymous" . $additional['columns'] . ", session_id) VALUES (\n\t\t\t\t\t\t{$course_id},\n\t\t\t\t\t\t'" . Database::escape_string(strtolower(generate_course_code(api_substr($values['survey_code'], 0)))) . "',\n\t\t\t\t\t\t'" . Database::escape_string($values['survey_title']) . "',\n\t\t\t\t\t\t'" . Database::escape_string($values['survey_subtitle']) . "',\n\t\t\t\t\t\t'" . Database::escape_string($_user['user_id']) . "',\n\t\t\t\t\t\t'" . Database::escape_string($values['survey_language']) . "',\n\t\t\t\t\t\t'" . Database::escape_string($values['start_date']) . "',\n\t\t\t\t\t\t'" . Database::escape_string($values['end_date']) . "',\n\t\t\t\t\t\t'" . Database::escape_string($shared_survey_id) . "',\n\t\t\t\t\t\t'" . Database::escape_string('template') . "',\n\t\t\t\t\t\t'" . Database::escape_string($values['survey_introduction']) . "',\n\t\t\t\t\t\t'" . Database::escape_string($values['survey_thanks']) . "',\n\t\t\t\t\t\t'" . date('Y-m-d H:i:s') . "',\n\t\t\t\t\t\t'" . Database::escape_string($values['anonymous']) . "'" . $additional['values'] . ",\n\t\t\t\t\t\t" . api_get_session_id() . "\n\t\t\t\t\t\t)"; Database::query($sql); $survey_id = Database::insert_id(); if ($survey_id > 0) { // Insert into item_property api_item_property_update(api_get_course_info(), TOOL_SURVEY, $survey_id, 'SurveyAdded', api_get_user_id()); } if ($values['survey_type'] == 1 && !empty($values['parent_id'])) { survey_manager::copy_survey($values['parent_id'], $survey_id); } $return['message'] = 'SurveyCreatedSuccesfully'; $return['type'] = 'confirmation'; $return['id'] = $survey_id; } else { // Check whether the code doesn't soon exists in this language $sql = 'SELECT 1 FROM ' . $table_survey . ' WHERE c_id = ' . $course_id . ' AND code="' . Database::escape_string($values['survey_code']) . '" AND lang="' . Database::escape_string($values['survey_language']) . '" AND survey_id!=' . intval($values['survey_id']); $rs = Database::query($sql); if (Database::num_rows($rs) > 0) { $return['message'] = 'ThisSurveyCodeSoonExistsInThisLanguage'; $return['type'] = 'error'; $return['id'] = isset($values['survey_id']) ? $values['survey_id'] : 0; return $return; } if ($values['anonymous'] == '') { $values['anonymous'] = 0; } $additionalsets = ", shuffle = '" . Database::escape_string($values['shuffle']) . "'"; $additionalsets .= ", one_question_per_page = '" . Database::escape_string($values['one_question_per_page']) . "'"; if ($values['anonymous'] == 0) { $additionalsets .= ", show_form_profile = '" . Database::escape_string($values['show_form_profile']) . "'"; if ($values['show_form_profile'] == 1) { $fields = explode(',', $values['input_name_list']); $field_values = ''; foreach ($fields as &$field) { if ($field != '') { if ($values[$field] == '') { $values[$field] = 0; } $field_values .= $field . ':' . $values[$field] . '@'; } } $additionalsets .= ", form_fields = '" . Database::escape_string($field_values) . "'"; } else { $additionalsets .= ", form_fields = '' "; } } else { $additionalsets .= ", show_form_profile = '0'"; $additionalsets .= ", form_fields = '' "; } $sql = "UPDATE {$table_survey} SET\n title \t\t\t= '" . Database::escape_string($values['survey_title']) . "',\n subtitle \t\t= '" . Database::escape_string($values['survey_subtitle']) . "',\n author \t\t\t= '" . Database::escape_string($_user['user_id']) . "',\n lang \t\t\t= '" . Database::escape_string($values['survey_language']) . "',\n avail_from \t\t= '" . Database::escape_string($values['start_date']) . "',\n avail_till\t\t= '" . Database::escape_string($values['end_date']) . "',\n is_shared\t\t= '" . Database::escape_string($shared_survey_id) . "',\n template \t\t= '" . Database::escape_string('template') . "',\n intro\t\t\t= '" . Database::escape_string($values['survey_introduction']) . "',\n surveythanks\t= '" . Database::escape_string($values['survey_thanks']) . "',\n anonymous = '" . Database::escape_string($values['anonymous']) . "'" . $additionalsets . "\n\t\t\t\t\tWHERE c_id = {$course_id} AND survey_id = '" . Database::escape_string($values['survey_id']) . "'"; Database::query($sql); // Update into item_property (update) api_item_property_update(api_get_course_info(), TOOL_SURVEY, $values['survey_id'], 'SurveyUpdated', api_get_user_id()); $return['message'] = 'SurveyUpdatedSuccesfully'; $return['type'] = 'confirmation'; $return['id'] = $values['survey_id']; } return $return; }