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