예제 #1
0
 public function envoyerReponse($info)
 {
     $questionnaire = new questionnaire();
     $questionnaire->confiance = $info['confiance'];
     $questionnaire->intelligence = $info['intelligence'];
     $questionnaire->interaction = $info['interaction'];
     $questionnaire->comportement = $info['comportement'];
     $questionnaire->nature_int = $info['nature_int'];
     $questionnaire->interaction_lab = $info['interaction_lab'];
     $questionnaire->sens = $info['sens'];
     $questionnaire->id_user = $_SESSION['id_user'];
     $questionnaire->id_video = $_SESSION['id_video'];
     $questionnaire->agent = $info['agent'];
     $questionnaire->save();
 }
$rid = required_param('rid', PARAM_INT);
$courseid = required_param('courseid', PARAM_INT);
$sec = required_param('sec', PARAM_INT);
$null = null;
$referer = $CFG->wwwroot . '/mod/questionnaire/report.php';
if (!($questionnaire = get_record("questionnaire", "id", $qid))) {
    error("Course module is incorrect");
}
if (!($course = get_record("course", "id", $questionnaire->course))) {
    error("Course is misconfigured");
}
if (!($cm = get_coursemodule_from_instance("questionnaire", $questionnaire->id, $course->id))) {
    error("Course Module ID was incorrect");
}
/// Check login and get context.
require_login($courseid);
$questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
if (!$questionnaire->user_can_take($USER->id)) {
    /// Should never happen, unless called directly by a snoop...
    print_error('nopermissions', 'questionnaire', $CFG->wwwroot . '/mod/questionnaire/view.php?id=' . $cm->id);
}
$currentcss = '';
if (!empty($questionnaire->survey->theme)) {
    $currentcss = '<link rel="stylesheet" type="text/css" href="' . $CFG->wwwroot . '/mod/questionnaire/css/' . $questionnaire->survey->theme . '" />';
} else {
    $currentcss = '<link rel="stylesheet" type="text/css" href="' . $CFG->wwwroot . '/mod/questionnaire/css/default.css" />';
}
print_header('Print Survey', '', '', '', $currentcss, true, '', '');
$questionnaire->survey_print_render('', '', $courseid);
close_window_button();
echo '</body></html>';
예제 #3
0
파일: lib.php 프로젝트: achocoza/moodle26
/**
 * This function prints the recent activity (since current user's last login)
 * for specified courses.
 * @param array $courses Array of courses to print activity for.
 * @param string by reference $htmlarray Array of html snippets for display some
 *        -where, which this function adds its new html to.
 */
function questionnaire_print_overview($courses, &$htmlarray)
{
    global $DB, $USER, $CFG;
    require_once $CFG->dirroot . '/mod/questionnaire/locallib.php';
    if (empty($courses) || !is_array($courses) || count($courses) == 0) {
        return array();
    }
    if (!($questionnaires = get_all_instances_in_courses('questionnaire', $courses))) {
        return;
    }
    // Get all questionnaire logs in ONE query (much better!).
    $params = array();
    $sql = "SELECT instance,cmid,l.course,COUNT(l.id) as count FROM {log} l " . " JOIN {course_modules} cm ON cm.id = cmid " . " JOIN {questionnaire} q ON cm.instance = q.id " . " WHERE (";
    foreach ($courses as $course) {
        $sql .= '(l.course = ? AND l.time > ?) OR ';
        $params[] = $course->id;
        $params[] = $course->lastaccess;
    }
    $sql = substr($sql, 0, -3);
    // Take off the last OR.
    $sql .= ") AND l.module = 'questionnaire' AND action = 'submit' " . " AND userid != ?" . " AND q.resp_view <> ?" . " GROUP BY cmid,l.course,instance";
    $params[] = $USER->id;
    $params[] = QUESTIONNAIRE_STUDENTVIEWRESPONSES_WHENANSWERED;
    if (!($new = $DB->get_records_sql($sql, $params))) {
        $new = array();
        // Avoid warnings.
    }
    $strquestionnaires = get_string('modulename', 'questionnaire');
    $site = get_site();
    if (count($courses) == 1 && isset($courses[$site->id])) {
        $strnumrespsince1 = get_string('overviewnumresplog1', 'questionnaire');
        $strnumrespsince = get_string('overviewnumresplog', 'questionnaire');
    } else {
        $strnumrespsince1 = get_string('overviewnumrespvw1', 'questionnaire');
        $strnumrespsince = get_string('overviewnumrespvw', 'questionnaire');
    }
    // Go through the list of all questionnaires build previously, and check whether
    // they have had any activity.
    require_once $CFG->dirroot . '/mod/questionnaire/questionnaire.class.php';
    foreach ($questionnaires as $questionnaire) {
        if (array_key_exists($questionnaire->id, $new) && !empty($new[$questionnaire->id])) {
            $cm = get_coursemodule_from_instance('questionnaire', $questionnaire->id);
            $context = context_module::instance($cm->id);
            $qobject = new questionnaire($questionnaire->id, $questionnaire, $questionnaire->course, $cm);
            $isclosed = $qobject->is_closed();
            $answered = !$qobject->user_can_take($USER->id);
            $count = $new[$questionnaire->id]->count;
            if ($count > 0 && (has_capability('mod/questionnaire:readallresponseanytime', $context) || has_capability('mod/questionnaire:readallresponses', $context) && ($questionnaire->resp_view == QUESTIONNAIRE_STUDENTVIEWRESPONSES_ALWAYS || $questionnaire->resp_view == QUESTIONNAIRE_STUDENTVIEWRESPONSES_WHENCLOSED && $isclosed || $questionnaire->resp_view == QUESTIONNAIRE_STUDENTVIEWRESPONSES_WHENANSWERED && $answered))) {
                if ($count == 1) {
                    $strresp = $strnumrespsince1;
                } else {
                    $strresp = $strnumrespsince;
                }
                $str = '<div class="overview questionnaire"><div class="name">' . $strquestionnaires . ': <a title="' . $strquestionnaires . '" href="' . $CFG->wwwroot . '/mod/questionnaire/view.php?a=' . $questionnaire->id . '">' . $questionnaire->name . '</a></div>';
                $str .= '<div class="info">';
                $str .= $count . ' ' . $strresp;
                $str .= '</div></div>';
                if (!array_key_exists($questionnaire->course, $htmlarray)) {
                    $htmlarray[$questionnaire->course] = array();
                }
                if (!array_key_exists('questionnaire', $htmlarray[$questionnaire->course])) {
                    $htmlarray[$questionnaire->course]['questionnaire'] = '';
                    // Initialize, avoid warnings.
                }
                $htmlarray[$questionnaire->course]['questionnaire'] .= $str;
            }
        }
    }
}
        print_error('requiredparameter', 'questionnaire');
    }
}
$SESSION->instance = $instance;
$usergraph = get_config('questionnaire', 'usergraph');
if (!($questionnaire = $DB->get_record("questionnaire", array("id" => $instance)))) {
    print_error('incorrectquestionnaire', 'questionnaire');
}
if (!($course = $DB->get_record("course", array("id" => $questionnaire->course)))) {
    print_error('coursemisconf');
}
if (!($cm = get_coursemodule_from_instance("questionnaire", $questionnaire->id, $course->id))) {
    print_error('invalidcoursemodule');
}
require_course_login($course, true, $cm);
$questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
// Add renderer and page objects to the questionnaire object for display use.
$questionnaire->add_renderer($PAGE->get_renderer('mod_questionnaire'));
$questionnaire->add_page(new \mod_questionnaire\output\reportpage());
// If you can't view the questionnaire, or can't view a specified response, error out.
$context = context_module::instance($cm->id);
if (!has_capability('mod/questionnaire:readallresponseanytime', $context) && !($questionnaire->capabilities->view && $questionnaire->can_view_response($rid))) {
    // Should never happen, unless called directly by a snoop...
    print_error('nopermissions', 'moodle', $CFG->wwwroot . '/mod/questionnaire/view.php?id=' . $cm->id);
}
$questionnaire->canviewallgroups = has_capability('moodle/site:accessallgroups', $context);
$sid = $questionnaire->survey->id;
$url = new moodle_url($CFG->wwwroot . '/mod/questionnaire/report.php');
if ($instance) {
    $url->param('instance', $instance);
}
        }
        // Log question created event.
        if (isset($qformdata)) {
            $context = context_module::instance($questionnaire->cm->id);
            $questiontype = \mod_questionnaire\question\base::qtypename($qformdata->type_id);
            $params = array('context' => $context, 'courseid' => $questionnaire->course->id, 'other' => array('questiontype' => $questiontype));
            $event = \mod_questionnaire\event\question_created::create($params);
            $event->trigger();
        }
        $questionsform->set_data($question);
    }
}
// Reload the form data if called for...
if ($reload) {
    unset($questionsform);
    $questionnaire = new questionnaire($questionnaire->id, null, $course, $cm);
    // Add renderer and page objects to the questionnaire object for display use.
    $questionnaire->add_renderer($PAGE->get_renderer('mod_questionnaire'));
    $questionnaire->add_page(new \mod_questionnaire\output\questionspage());
    if ($action == 'main') {
        $questionsform = new mod_questionnaire_questions_form('questions.php', $moveq);
        $sdata = clone $questionnaire->survey;
        $sdata->sid = $questionnaire->survey->id;
        $sdata->id = $cm->id;
        if (!empty($questionnaire->questions)) {
            $pos = 1;
            foreach ($questionnaire->questions as $qidx => $question) {
                $sdata->{'pos_' . $qidx} = $pos;
                $pos++;
            }
        }
예제 #6
0
if (!($course = $DB->get_record("course", array("id" => $cm->course)))) {
    print_error('coursemisconf');
}
if (!($questionnaire = $DB->get_record("questionnaire", array("id" => $cm->instance)))) {
    print_error('invalidcoursemodule');
}
// Needed here for forced language courses.
require_course_login($course, true, $cm);
$context = context_module::instance($cm->id);
$url = new moodle_url($CFG->wwwroot . '/mod/questionnaire/qsettings.php', array('id' => $id));
$PAGE->set_url($url);
$PAGE->set_context($context);
if (!isset($SESSION->questionnaire)) {
    $SESSION->questionnaire = new stdClass();
}
$questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
$SESSION->questionnaire->current_tab = 'settings';
if (!$questionnaire->capabilities->manage) {
    print_error('nopermissions', 'error', 'mod:questionnaire:manage');
}
$settingsform = new questionnaire_settings_form('qsettings.php');
$sdata = clone $questionnaire->survey;
$sdata->sid = $questionnaire->survey->id;
$sdata->id = $cm->id;
$draftideditor = file_get_submitted_draft_itemid('info');
$currentinfo = file_prepare_draft_area($draftideditor, $context->id, 'mod_questionnaire', 'info', $sdata->sid, array('subdirs' => true), $questionnaire->survey->info);
$sdata->info = array('text' => $currentinfo, 'format' => FORMAT_HTML, 'itemid' => $draftideditor);
$draftideditor = file_get_submitted_draft_itemid('thankbody');
$currentinfo = file_prepare_draft_area($draftideditor, $context->id, 'mod_questionnaire', 'thankbody', $sdata->sid, array('subdirs' => true), $questionnaire->survey->thank_body);
$sdata->thank_body = array('text' => $currentinfo, 'format' => FORMAT_HTML, 'itemid' => $draftideditor);
$draftideditor = file_get_submitted_draft_itemid('feedbacknotes');
예제 #7
0
//
//Cobalt on the web: http://cobalt.jvroig.com
//******************************************************************
require 'path.php';
init_cobalt('View questionnaire');
if (xsrf_guard()) {
    init_var($_POST['btn_cancel']);
    init_var($_POST['btn_submit']);
    if ($_POST['btn_cancel']) {
        log_action('Pressed cancel button');
        redirect("listview_questionnaire.php");
    }
    if ($_POST['btn_submit']) {
        log_action('Pressed submit button');
        require 'subclasses/questionnaire.php';
        $dbh_questionnaire = new questionnaire();
        if ($message == "") {
            log_action('Exported table data to CSV');
            $timestamp = date('Y-m-d');
            $token = generate_token(0, 'fs');
            $csv_name = $token . $_SESSION['user'] . '_questionnaire_' . $timestamp . '.csv';
            $filename = TMP_DIRECTORY . '/' . $csv_name;
            $csv_contents = $dbh_questionnaire->export_to_csv();
            $csv_file = fopen($filename, "wb");
            fwrite($csv_file, $csv_contents);
            fclose($csv_file);
            chmod($filename, 0755);
            $csv_name = urlencode($csv_name);
            $message = 'CSV file successfully generated: <a href="/' . BASE_DIRECTORY . '/download_generic.php?filename=' . $csv_name . '">Download the CSV file.</a>';
            $message_type = 'system';
        }
예제 #8
0
function questionnaire_check_page_breaks($questionnaire)
{
    global $DB;
    $msg = '';
    // Store the new page breaks ids.
    $newpbids = array();
    $delpb = 0;
    $sid = $questionnaire->survey->id;
    $questions = $DB->get_records('questionnaire_question', array('survey_id' => $sid, 'deleted' => 'n'), 'id');
    $positions = array();
    foreach ($questions as $key => $qu) {
        $positions[$qu->position]['question_id'] = $key;
        $positions[$qu->position]['dependquestion'] = $qu->dependquestion;
        $positions[$qu->position]['dependchoice'] = $qu->dependchoice;
        $positions[$qu->position]['type_id'] = $qu->type_id;
        $positions[$qu->position]['qname'] = $qu->name;
        $positions[$qu->position]['qpos'] = $qu->position;
    }
    $count = count($positions);
    for ($i = $count; $i > 0; $i--) {
        $qu = $positions[$i];
        $questionnb = $i;
        if ($qu['type_id'] == QUESPAGEBREAK) {
            $questionnb--;
            // If more than one consecutive page breaks, remove extra one(s).
            $prevqu = null;
            $prevtypeid = null;
            if ($i > 1) {
                $prevqu = $positions[$i - 1];
                $prevtypeid = $prevqu['type_id'];
            }
            // If $i == $count then remove that extra page break in last position.
            if ($prevtypeid == QUESPAGEBREAK || $i == $count || $qu['qpos'] == 1) {
                $qid = $qu['question_id'];
                $delpb++;
                $msg .= get_string("checkbreaksremoved", "questionnaire", $delpb) . '<br />';
                // Need to reload questions.
                $questions = $DB->get_records('questionnaire_question', array('survey_id' => $sid, 'deleted' => 'n'), 'id');
                $DB->set_field('questionnaire_question', 'deleted', 'y', array('id' => $qid, 'survey_id' => $sid));
                $select = 'survey_id = ' . $sid . ' AND deleted = \'n\' AND position > ' . $questions[$qid]->position;
                if ($records = $DB->get_records_select('questionnaire_question', $select, null, 'position ASC')) {
                    foreach ($records as $record) {
                        $DB->set_field('questionnaire_question', 'position', $record->position - 1, array('id' => $record->id));
                    }
                }
            }
        }
        // Add pagebreak between question child and not dependent question that follows.
        if ($qu['type_id'] != QUESPAGEBREAK) {
            $j = $i - 1;
            if ($j != 0) {
                $prevtypeid = $positions[$j]['type_id'];
                $prevdependquestion = $positions[$j]['dependquestion'];
                $prevdependchoice = $positions[$j]['dependchoice'];
                if ($prevtypeid != QUESPAGEBREAK && ($prevdependquestion != $qu['dependquestion'] || $prevdependchoice != $qu['dependchoice']) || $qu['dependquestion'] == 0 && $prevdependquestion != 0) {
                    $sql = 'SELECT MAX(position) as maxpos FROM {questionnaire_question} ' . 'WHERE survey_id = ' . $questionnaire->survey->id . ' AND deleted = \'n\'';
                    if ($record = $DB->get_record_sql($sql)) {
                        $pos = $record->maxpos + 1;
                    } else {
                        $pos = 1;
                    }
                    $question = new stdClass();
                    $question->survey_id = $questionnaire->survey->id;
                    $question->type_id = QUESPAGEBREAK;
                    $question->position = $pos;
                    $question->content = 'break';
                    if (!($newqid = $DB->insert_record('questionnaire_question', $question))) {
                        return false;
                    }
                    $newpbids[] = $newqid;
                    $movetopos = $i;
                    $questionnaire = new questionnaire($questionnaire->id, null, $course, $cm);
                    $questionnaire->move_question($newqid, $movetopos);
                }
            }
        }
    }
    if (empty($newpbids) && !$msg) {
        $msg = get_string('checkbreaksok', 'questionnaire');
    } else {
        if ($newpbids) {
            $msg .= get_string('checkbreaksadded', 'questionnaire') . '&nbsp;';
            $newpbids = array_reverse($newpbids);
            $questionnaire = new questionnaire($questionnaire->id, null, $course, $cm);
            foreach ($newpbids as $newpbid) {
                $msg .= $questionnaire->questions[$newpbid]->position . '&nbsp;';
            }
        }
    }
    return $msg;
}
if (!($course = $DB->get_record("course", array("id" => $cm->course)))) {
    print_error('coursemisconf');
}
if (!($questionnaire = $DB->get_record("questionnaire", array("id" => $cm->instance)))) {
    print_error('invalidcoursemodule');
}
// Needed here for forced language courses.
require_course_login($course, true, $cm);
$context = context_module::instance($cm->id);
$url = new moodle_url($CFG->wwwroot . '/mod/questionnaire/qsettings.php', array('id' => $id));
$PAGE->set_url($url);
$PAGE->set_context($context);
if (!isset($SESSION->questionnaire)) {
    $SESSION->questionnaire = new stdClass();
}
$questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
// Add renderer and page objects to the questionnaire object for display use.
$questionnaire->add_renderer($PAGE->get_renderer('mod_questionnaire'));
$questionnaire->add_page(new \mod_questionnaire\output\qsettingspage());
$SESSION->questionnaire->current_tab = 'settings';
if (!$questionnaire->capabilities->manage) {
    print_error('nopermissions', 'error', 'mod:questionnaire:manage');
}
$settingsform = new mod_questionnaire_settings_form('qsettings.php');
$sdata = clone $questionnaire->survey;
$sdata->sid = $questionnaire->survey->id;
$sdata->id = $cm->id;
$draftideditor = file_get_submitted_draft_itemid('info');
$currentinfo = file_prepare_draft_area($draftideditor, $context->id, 'mod_questionnaire', 'info', $sdata->sid, array('subdirs' => true), $questionnaire->survey->info);
$sdata->info = array('text' => $currentinfo, 'format' => FORMAT_HTML, 'itemid' => $draftideditor);
$draftideditor = file_get_submitted_draft_itemid('thankbody');
예제 #10
0
    $url->param('userid', $userid);
}
if (isset($byresponse)) {
    $url->param('byresponse', $byresponse);
}
if (isset($currentgroupid)) {
    $url->param('group', $currentgroupid);
}
if (isset($action)) {
    $url->param('action', $action);
}
$PAGE->set_url($url);
$PAGE->set_context($context);
$PAGE->set_title(get_string('questionnairereport', 'questionnaire'));
$PAGE->set_heading(format_string($course->fullname));
$questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
$sid = $questionnaire->survey->id;
$courseid = $course->id;
// Tab setup.
if (!isset($SESSION->questionnaire)) {
    $SESSION->questionnaire = new stdClass();
}
$SESSION->questionnaire->current_tab = 'myreport';
switch ($action) {
    case 'summary':
        if (empty($questionnaire->survey)) {
            print_error('surveynotexists', 'questionnaire');
        }
        $SESSION->questionnaire->current_tab = 'mysummary';
        $params = array('survey_id' => $questionnaire->sid, 'username' => $userid, 'complete' => 'y');
        $resps = $DB->get_records('questionnaire_response', $params);
$courseid = required_param('courseid', PARAM_INT);
$sec = required_param('sec', PARAM_INT);
$null = null;
$referer = $CFG->wwwroot . '/mod/questionnaire/report.php';
if (!($questionnaire = $DB->get_record("questionnaire", array("id" => $qid)))) {
    print_error('invalidcoursemodule');
}
if (!($course = $DB->get_record("course", array("id" => $questionnaire->course)))) {
    print_error('coursemisconf');
}
if (!($cm = get_coursemodule_from_instance("questionnaire", $questionnaire->id, $course->id))) {
    print_error('invalidcoursemodule');
}
// Check login and get context.
require_login($courseid);
$questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
// Add renderer and page objects to the questionnaire object for display use.
$questionnaire->add_renderer($PAGE->get_renderer('mod_questionnaire'));
$questionnaire->add_page(new \mod_questionnaire\output\previewpage());
// If you can't view the questionnaire, or can't view a specified response, error out.
if (!($questionnaire->capabilities->view && ($rid == 0 || $questionnaire->can_view_response($rid)))) {
    // Should never happen, unless called directly by a snoop...
    print_error('nopermissions', 'moodle', $CFG->wwwroot . '/mod/questionnaire/view.php?id=' . $cm->id);
}
$blankquestionnaire = true;
if ($rid != 0) {
    $blankquestionnaire = false;
}
$url = new moodle_url($CFG->wwwroot . '/mod/questionnaire/print.php');
$url->param('qid', $qid);
$url->param('rid', $rid);
    }
    if (!($questionnaire = $DB->get_record("questionnaire", array("id" => $cm->instance)))) {
        print_error('invalidcoursemodule');
    }
}
if (!($context = context_module::instance($cm->id))) {
    print_error('badcontext');
}
// We need the coursecontext to allow sending of mass mails.
if (!($coursecontext = context_course::instance($course->id))) {
    print_error('badcontext');
}
require_course_login($course, true, $cm);
$url = new moodle_url('/mod/questionnaire/show_nonrespondents.php', array('id' => $cm->id));
$PAGE->set_url($url);
$questionnaire = new questionnaire($sid, $questionnaire, $course, $cm);
// Add renderer and page objects to the questionnaire object for display use.
$questionnaire->add_renderer($PAGE->get_renderer('mod_questionnaire'));
$questionnaire->add_page(new \mod_questionnaire\output\nonrespondentspage());
$resume = $questionnaire->resume;
$fullname = $questionnaire->respondenttype == 'fullname';
$sid = $questionnaire->sid;
if (($formdata = data_submitted()) && !confirm_sesskey()) {
    print_error('invalidsesskey');
}
require_capability('mod/questionnaire:viewsingleresponse', $context);
// Anonymous questionnaire.
if (!$fullname) {
    $nonrespondents = questionnaire_get_incomplete_users($cm, $sid);
    $countnonrespondents = count($nonrespondents);
    if ($resume) {
list($cm, $course, $questionnaire) = questionnaire_get_standard_page_items($id, $a);
// Check login and get context.
require_course_login($course, true, $cm);
$context = context_module::instance($cm->id);
$url = new moodle_url($CFG->wwwroot . '/mod/questionnaire/view.php');
if (isset($id)) {
    $url->param('id', $id);
} else {
    $url->param('a', $a);
}
if (isset($sid)) {
    $url->param('sid', $sid);
}
$PAGE->set_url($url);
$PAGE->set_context($context);
$questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
// Add renderer and page objects to the questionnaire object for display use.
$questionnaire->add_renderer($PAGE->get_renderer('mod_questionnaire'));
$questionnaire->add_page(new \mod_questionnaire\output\viewpage());
$PAGE->set_title(format_string($questionnaire->name));
$PAGE->set_heading(format_string($course->fullname));
echo $questionnaire->renderer->header();
$questionnaire->page->add_to_page('questionnairename', clean_text($questionnaire->name));
// Print the main part of the page.
if ($questionnaire->intro) {
    $questionnaire->page->add_to_page('intro', format_module_intro('questionnaire', $questionnaire, $cm->id));
}
$cm = $questionnaire->cm;
$currentgroupid = groups_get_activity_group($cm);
if (!groups_is_member($currentgroupid, $USER->id)) {
    $currentgroupid = 0;
$resume = optional_param('resume', null, PARAM_INT);
// Is this attempt a resume of a saved attempt?
list($cm, $course, $questionnaire) = questionnaire_get_standard_page_items($id, $a);
// Check login and get context.
require_course_login($course, true, $cm);
$context = context_module::instance($cm->id);
require_capability('mod/questionnaire:view', $context);
$url = new moodle_url($CFG->wwwroot . '/mod/questionnaire/complete.php');
if (isset($id)) {
    $url->param('id', $id);
} else {
    $url->param('a', $a);
}
$PAGE->set_url($url);
$PAGE->set_context($context);
$questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
// Add renderer and page objects to the questionnaire object for display use.
$questionnaire->add_renderer($PAGE->get_renderer('mod_questionnaire'));
$questionnaire->add_page(new \mod_questionnaire\output\completepage());
$questionnaire->strquestionnaires = get_string("modulenameplural", "questionnaire");
$questionnaire->strquestionnaire = get_string("modulename", "questionnaire");
// Mark as viewed.
$completion = new completion_info($course);
$completion->set_module_viewed($cm);
if ($resume) {
    $context = context_module::instance($questionnaire->cm->id);
    $anonymous = $questionnaire->respondenttype == 'anonymous';
    $event = \mod_questionnaire\event\attempt_resumed::create(array('objectid' => $questionnaire->id, 'anonymous' => $anonymous, 'context' => $context));
    $event->trigger();
}
$questionnaire->view();
    $url->param('userid', $userid);
}
if (isset($byresponse)) {
    $url->param('byresponse', $byresponse);
}
if (isset($currentgroupid)) {
    $url->param('group', $currentgroupid);
}
if (isset($action)) {
    $url->param('action', $action);
}
$PAGE->set_url($url);
$PAGE->set_context($context);
$PAGE->set_title(get_string('questionnairereport', 'questionnaire'));
$PAGE->set_heading(format_string($course->fullname));
$questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
// Add renderer and page objects to the questionnaire object for display use.
$questionnaire->add_renderer($PAGE->get_renderer('mod_questionnaire'));
$questionnaire->add_page(new \mod_questionnaire\output\reportpage());
$sid = $questionnaire->survey->id;
$courseid = $course->id;
// Tab setup.
if (!isset($SESSION->questionnaire)) {
    $SESSION->questionnaire = new stdClass();
}
$SESSION->questionnaire->current_tab = 'myreport';
switch ($action) {
    case 'summary':
        if (empty($questionnaire->survey)) {
            print_error('surveynotexists', 'questionnaire');
        }
예제 #16
0
//******************************************************************
require 'path.php';
init_cobalt('Delete questionnaire');
if (isset($_GET['id'])) {
    $id = urldecode($_GET['id']);
    require_once 'form_data_questionnaire.php';
} elseif (xsrf_guard()) {
    init_var($_POST['btn_cancel']);
    init_var($_POST['btn_delete']);
    require 'components/query_string_standard.php';
    if ($_POST['btn_cancel']) {
        log_action('Pressed cancel button', $_SERVER['PHP_SELF']);
        redirect("listview_questionnaire.php?{$query_string}");
    } elseif ($_POST['btn_delete']) {
        log_action('Pressed delete button', $_SERVER['PHP_SELF']);
        require_once 'subclasses/questionnaire.php';
        $dbh_questionnaire = new questionnaire();
        $object_name = 'dbh_questionnaire';
        require 'components/create_form_data.php';
        $dbh_questionnaire->del($arr_form_data);
        redirect("listview_questionnaire.php?{$query_string}");
    }
}
require 'subclasses/questionnaire_html.php';
$html = new questionnaire_html();
$html->draw_header('Delete Questionnaire', $message, $message_type);
$html->draw_listview_referrer_info($filter_field_used, $filter_used, $page_from, $filter_sort_asc, $filter_sort_desc);
$html->draw_hidden('id');
$html->detail_view = TRUE;
$html->draw_controls('delete');
$html->draw_footer();
예제 #17
0
}
$url = new moodle_url($CFG->wwwroot . '/mod/questionnaire/myreport.php', array('instance' => $instance));
if (isset($userid)) {
    $url->param('userid', $userid);
}
if (isset($byresponse)) {
    $url->param('byresponse', $byresponse);
}
if (isset($action)) {
    $url->param('action', $action);
}
$PAGE->set_url($url);
$PAGE->set_context($context);
$PAGE->set_title(get_string('questionnairereport', 'questionnaire'));
$PAGE->set_heading(format_string($course->fullname));
$questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
// Tab setup.
$SESSION->questionnaire->current_tab = 'myreport';
switch ($action) {
    case $strsummary:
    case 'summary':
        if (empty($questionnaire->survey)) {
            print_error('surveynotexists', 'questionnaire');
        }
        $SESSION->questionnaire->current_tab = 'mysummary';
        $select = 'survey_id = ' . $questionnaire->sid . ' AND username = \'' . $userid . '\' AND complete=\'y\'';
        $resps = $DB->get_records_select('questionnaire_response', $select);
        if (!($resps = $DB->get_records_select('questionnaire_response', $select))) {
            $resps = array();
        }
        $rids = array_keys($resps);
    } else {
        error(get_string('requiredparameter', 'questionnaire'));
    }
}
$SESSION->instance = $instance;
if (!($questionnaire = get_record("questionnaire", "id", $instance))) {
    error(get_string('incorrectquestionnaire', 'questionnaire'));
}
if (!($course = get_record("course", "id", $questionnaire->course))) {
    error("get_string('misconfigured', 'questionnaire')");
}
if (!($cm = get_coursemodule_from_instance("questionnaire", $questionnaire->id, $course->id))) {
    error(get_string('incorrectmodule', 'questionnaire'));
}
require_login($course->id);
$questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
$questionnaire->canviewallgroups = has_capability('moodle/site:accessallgroups', $context, NULL, false);
$sid = $questionnaire->survey->id;
/// Tab setup:
$SESSION->questionnaire->current_tab = 'allreport';
$formdata = data_submitted();
$strcrossanalyze = get_string('crossanalyze', 'questionnaire');
$strcrosstabulate = get_string('crosstabulate', 'questionnaire');
$strdeleteallresponses = get_string('deleteallresponses', 'questionnaire');
$strdeleteresp = get_string('deleteresp', 'questionnaire');
$strdownloadcsv = get_string('downloadtext');
$strviewallresponses = get_string('viewallresponses', 'questionnaire');
$strsummary = get_string('summary', 'questionnaire');
$strviewbyresponse = get_string('viewbyresponse', 'questionnaire');
$strquestionnaires = get_string('modulenameplural', 'questionnaire');
예제 #19
0
//******************************************************************
//This file was generated by Cobalt, a rapid application development
//framework developed by JV Roig (jvroig@jvroig.com).
//
//Cobalt on the web: http://cobalt.jvroig.com
//******************************************************************
require 'path.php';
init_cobalt('Add questionnaire');
require 'components/get_listview_referrer.php';
if (xsrf_guard()) {
    init_var($_POST['btn_cancel']);
    init_var($_POST['btn_submit']);
    require 'components/query_string_standard.php';
    require 'subclasses/questionnaire.php';
    $dbh_questionnaire = new questionnaire();
    $object_name = 'dbh_questionnaire';
    require 'components/create_form_data.php';
    extract($arr_form_data);
    if ($_POST['btn_cancel']) {
        log_action('Pressed cancel button', $_SERVER['PHP_SELF']);
        redirect("listview_questionnaire.php?{$query_string}");
    }
    if ($_POST['btn_submit']) {
        log_action('Pressed submit button', $_SERVER['PHP_SELF']);
        $message .= $dbh_questionnaire->sanitize($arr_form_data)->lst_error;
        extract($arr_form_data);
        if ($dbh_questionnaire->check_uniqueness($arr_form_data)->is_unique) {
            //Good, no duplicate in database
        } else {
            $message = "Record already exists with the same primary identifiers!";
예제 #20
0
/**
 * Adds module specific settings to the settings block
 *
 * @param settings_navigation $settings The settings navigation object
 * @param navigation_node $questionnairenode The node to add module settings to
 */
function questionnaire_extend_settings_navigation(settings_navigation $settings, navigation_node $questionnairenode)
{
    global $PAGE, $DB, $USER, $CFG;
    $individualresponse = optional_param('individualresponse', false, PARAM_INT);
    $rid = optional_param('rid', false, PARAM_INT);
    // Response id.
    $currentgroupid = optional_param('group', 0, PARAM_INT);
    // Group id.
    require_once $CFG->dirroot . '/mod/questionnaire/questionnaire.class.php';
    $context = $PAGE->cm->context;
    $cmid = $PAGE->cm->id;
    $cm = $PAGE->cm;
    $course = $PAGE->course;
    if (!($questionnaire = $DB->get_record("questionnaire", array("id" => $cm->instance)))) {
        print_error('invalidcoursemodule');
    }
    $courseid = $course->id;
    $questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
    if ($survey = $DB->get_record('questionnaire_survey', array('id' => $questionnaire->sid))) {
        $owner = trim($survey->owner) == trim($courseid);
    } else {
        $survey = false;
        $owner = true;
    }
    // On view page, currentgroupid is not yet sent as an optional_param, so get it.
    $groupmode = groups_get_activity_groupmode($cm, $course);
    if ($groupmode > 0 && $currentgroupid == 0) {
        $currentgroupid = groups_get_activity_group($questionnaire->cm);
        if (!groups_is_member($currentgroupid, $USER->id)) {
            $currentgroupid = 0;
        }
    }
    // We want to add these new nodes after the Edit settings node, and before the
    // Locally assigned roles node. Of course, both of those are controlled by capabilities.
    $keys = $questionnairenode->get_children_key_list();
    $beforekey = null;
    $i = array_search('modedit', $keys);
    if ($i === false and array_key_exists(0, $keys)) {
        $beforekey = $keys[0];
    } else {
        if (array_key_exists($i + 1, $keys)) {
            $beforekey = $keys[$i + 1];
        }
    }
    if (has_capability('mod/questionnaire:manage', $context) && $owner) {
        $url = '/mod/questionnaire/qsettings.php';
        $node = navigation_node::create(get_string('advancedsettings'), new moodle_url($url, array('id' => $cmid)), navigation_node::TYPE_SETTING, null, 'advancedsettings', new pix_icon('t/edit', ''));
        $questionnairenode->add_node($node, $beforekey);
    }
    if (has_capability('mod/questionnaire:editquestions', $context) && $owner) {
        $url = '/mod/questionnaire/questions.php';
        $node = navigation_node::create(get_string('questions', 'questionnaire'), new moodle_url($url, array('id' => $cmid)), navigation_node::TYPE_SETTING, null, 'questions', new pix_icon('t/edit', ''));
        $questionnairenode->add_node($node, $beforekey);
    }
    if (has_capability('mod/questionnaire:preview', $context)) {
        $url = '/mod/questionnaire/preview.php';
        $node = navigation_node::create(get_string('preview_label', 'questionnaire'), new moodle_url($url, array('id' => $cmid)), navigation_node::TYPE_SETTING, null, 'preview', new pix_icon('t/preview', ''));
        $questionnairenode->add_node($node, $beforekey);
    }
    if ($questionnaire->user_can_take($USER->id)) {
        $url = '/mod/questionnaire/complete.php';
        $node = navigation_node::create(get_string('answerquestions', 'questionnaire'), new moodle_url($url, array('id' => $cmid)), navigation_node::TYPE_SETTING, null, '', new pix_icon('i/info', 'answerquestions'));
        $questionnairenode->add_node($node, $beforekey);
    }
    $usernumresp = $questionnaire->count_submissions($USER->id);
    if ($questionnaire->capabilities->readownresponses && $usernumresp > 0) {
        $url = '/mod/questionnaire/myreport.php';
        if ($usernumresp > 1) {
            $node = navigation_node::create(get_string('yourresponses', 'questionnaire'), new moodle_url($url, array('instance' => $questionnaire->id, 'userid' => $USER->id, 'byresponse' => 0, 'action' => 'summary', 'group' => $currentgroupid)), navigation_node::TYPE_SETTING, null, 'yourresponses');
            $myreportnode = $questionnairenode->add_node($node, $beforekey);
            $summary = $myreportnode->add(get_string('summary', 'questionnaire'), new moodle_url('/mod/questionnaire/myreport.php', array('instance' => $questionnaire->id, 'userid' => $USER->id, 'byresponse' => 0, 'action' => 'summary', 'group' => $currentgroupid)));
            $byresponsenode = $myreportnode->add(get_string('viewindividualresponse', 'questionnaire'), new moodle_url('/mod/questionnaire/myreport.php', array('instance' => $questionnaire->id, 'userid' => $USER->id, 'byresponse' => 1, 'action' => 'vresp', 'group' => $currentgroupid)));
            $allmyresponsesnode = $myreportnode->add(get_string('myresponses', 'questionnaire'), new moodle_url('/mod/questionnaire/myreport.php', array('instance' => $questionnaire->id, 'userid' => $USER->id, 'byresponse' => 0, 'action' => 'vall', 'group' => $currentgroupid)));
            if ($questionnaire->capabilities->downloadresponses) {
                $downloadmyresponsesnode = $myreportnode->add(get_string('downloadtext'), new moodle_url('/mod/questionnaire/report.php', array('instance' => $questionnaire->id, 'user' => $USER->id, 'action' => 'dwnpg', 'group' => $currentgroupid)));
            }
        } else {
            $node = navigation_node::create(get_string('yourresponse', 'questionnaire'), new moodle_url($url, array('instance' => $questionnaire->id, 'userid' => $USER->id, 'byresponse' => 1, 'action' => 'vresp', 'group' => $currentgroupid)), navigation_node::TYPE_SETTING, null, 'yourresponse');
            $myreportnode = $questionnairenode->add_node($node, $beforekey);
        }
    }
    $numresp = $questionnaire->count_submissions();
    // Number of responses in currently selected group (or all participants etc.).
    if (isset($SESSION->questionnaire->numselectedresps)) {
        $numselectedresps = $SESSION->questionnaire->numselectedresps;
    } else {
        $numselectedresps = $numresp;
    }
    // If questionnaire is set to separate groups, prevent user who is not member of any group
    // and is not a non-editing teacher to view All responses.
    $canviewgroups = true;
    $groupmode = groups_get_activity_groupmode($cm, $course);
    if ($groupmode == 1) {
        $canviewgroups = groups_has_membership($cm, $USER->id);
    }
    $canviewallgroups = has_capability('moodle/site:accessallgroups', $context);
    if (($canviewallgroups || $canviewgroups && $questionnaire->capabilities->readallresponseanytime) && $numresp > 0 && $owner && $numselectedresps > 0 || $questionnaire->capabilities->readallresponses && $numresp > 0 && $canviewgroups && ($questionnaire->resp_view == QUESTIONNAIRE_STUDENTVIEWRESPONSES_ALWAYS || $questionnaire->resp_view == QUESTIONNAIRE_STUDENTVIEWRESPONSES_WHENCLOSED && $questionnaire->is_closed() || $questionnaire->resp_view == QUESTIONNAIRE_STUDENTVIEWRESPONSES_WHENANSWERED && $usernumresp > 0) && $questionnaire->is_survey_owner()) {
        $url = '/mod/questionnaire/report.php';
        $node = navigation_node::create(get_string('viewallresponses', 'questionnaire'), new moodle_url($url, array('instance' => $questionnaire->id, 'action' => 'vall')), navigation_node::TYPE_SETTING, null, 'vall');
        $reportnode = $questionnairenode->add_node($node, $beforekey);
        if ($questionnaire->capabilities->viewsingleresponse) {
            $summarynode = $reportnode->add(get_string('summary', 'questionnaire'), new moodle_url('/mod/questionnaire/report.php', array('instance' => $questionnaire->id, 'action' => 'vall')));
        } else {
            $summarynode = $reportnode;
        }
        $defaultordernode = $summarynode->add(get_string('order_default', 'questionnaire'), new moodle_url('/mod/questionnaire/report.php', array('instance' => $questionnaire->id, 'action' => 'vall', 'group' => $currentgroupid)));
        $ascendingordernode = $summarynode->add(get_string('order_ascending', 'questionnaire'), new moodle_url('/mod/questionnaire/report.php', array('instance' => $questionnaire->id, 'action' => 'vallasort', 'group' => $currentgroupid)));
        $descendingordernode = $summarynode->add(get_string('order_descending', 'questionnaire'), new moodle_url('/mod/questionnaire/report.php', array('instance' => $questionnaire->id, 'action' => 'vallarsort', 'group' => $currentgroupid)));
        if ($questionnaire->capabilities->deleteresponses) {
            $deleteallnode = $summarynode->add(get_string('deleteallresponses', 'questionnaire'), new moodle_url('/mod/questionnaire/report.php', array('instance' => $questionnaire->id, 'action' => 'delallresp', 'group' => $currentgroupid)));
        }
        if ($questionnaire->capabilities->downloadresponses) {
            $downloadresponsesnode = $summarynode->add(get_string('downloadtextformat', 'questionnaire'), new moodle_url('/mod/questionnaire/report.php', array('instance' => $questionnaire->id, 'action' => 'dwnpg', 'group' => $currentgroupid)));
        }
        if ($questionnaire->capabilities->viewsingleresponse) {
            $byresponsenode = $reportnode->add(get_string('viewbyresponse', 'questionnaire'), new moodle_url('/mod/questionnaire/report.php', array('instance' => $questionnaire->id, 'action' => 'vresp', 'byresponse' => 1, 'group' => $currentgroupid)));
            $viewindividualresponsenode = $byresponsenode->add(get_string('view', 'questionnaire'), new moodle_url('/mod/questionnaire/report.php', array('instance' => $questionnaire->id, 'action' => 'vresp', 'byresponse' => 1, 'group' => $currentgroupid)));
            if ($individualresponse) {
                $deleteindividualresponsenode = $byresponsenode->add(get_string('deleteresp', 'questionnaire'), new moodle_url('/mod/questionnaire/report.php', array('instance' => $questionnaire->id, 'action' => 'dresp', 'byresponse' => 1, 'rid' => $rid, 'group' => $currentgroupid, 'individualresponse' => 1)));
            }
        }
    }
    if ($questionnaire->capabilities->viewsingleresponse && ($canviewallgroups || $canviewgroups)) {
        $url = '/mod/questionnaire/show_nonrespondents.php';
        $node = navigation_node::create(get_string('show_nonrespondents', 'questionnaire'), new moodle_url($url, array('id' => $cmid)), navigation_node::TYPE_SETTING, null, 'nonrespondents');
        $nonrespondentsnode = $questionnairenode->add_node($node, $beforekey);
    }
}
예제 #21
0
?>
</span></h1>
		</div>
	</div>
	<div id="espaceprincipal">
		<div id="module"><!-- Debut module --><?php 
if ($utilisateur_connecte != "" && in_array($utilisateur_connecte->_testauthentification, array(2, 1))) {
    require_once $adresserepertoiresite . '/scripts/php/class.questionnaire.php';
    if (isset($_GET["v"]) || isset($_POST["v"])) {
        if (isset($_GET["v"])) {
            $v = $_GET["v"];
        }
        if (isset($_POST["v"])) {
            $v = $_POST["v"];
        }
        $questionnaire = new questionnaire($v);
        if (isset($_POST["val"])) {
            $val = $_POST["val"];
        } else {
            $val = 0;
        }
        $questionnaire->qcm($val);
    } else {
        echo _AUCUN_QUESTIONNAIRE_SELECTIONNE_RETOUR_A_L_ACCEUIL_CONSEILLE;
    }
} else {
    echo _NON_CONNECTE_IL_FAUT_ETRE_CONNECTE_POUR_VOIR_UN_QUESTIONNAIRE;
}
?>
<!-- Fin module -->
		</div>			
    if (!($course = get_record("course", "id", $survey->owner))) {
        error("Course is misconfigured");
    }
    /// Dummy questionnaire object:
    $questionnaire = new Object();
    $questionnaire->id = 0;
    $questionnaire->course = $course->id;
    $questionnaire->name = $survey->title;
    $questionnaire->sid = $sid;
    $questionnaire->resume = 0;
    ///Dummy cm object:
    $cm = false;
}
/// Check login and get context.
require_login($course->id, false, $cm);
$questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
$owner = trim($questionnaire->survey->owner) == trim($course->id);
$canpreview = !isset($questionnaire->capabilities) && has_capability('mod/questionnaire:manage', get_context_instance(CONTEXT_COURSE, $course->id)) || isset($questionnaire->capabilities) && $questionnaire->capabilities->editquestions && $owner;
if (!$canpreview) {
    /// Should never happen, unless called directly by a snoop...
    print_error('nopermissions', 'questionnaire', $CFG->wwwroot . '/mod/questionnaire/view.php?id=' . $cm->id);
}
$SESSION->questionnaire->current_tab = 'preview';
$qp = get_string('preview_questionnaire', 'questionnaire');
$pq = get_string('previewing', 'questionnaire');
$currentcss = '';
if (!empty($questionnaire->survey->theme)) {
    $currentcss = '<link rel="stylesheet" type="text/css" href="' . $CFG->wwwroot . '/mod/questionnaire/css/' . $questionnaire->survey->theme . '" />';
} else {
    $currentcss = '<link rel="stylesheet" type="text/css" href="' . $CFG->wwwroot . '/mod/questionnaire/css/default.css" />';
}
예제 #23
0
        print_error('coursemisconf');
    }
    if (!($cm = get_coursemodule_from_instance("questionnaire", $questionnaire->id, $course->id))) {
        print_error('invalidcoursemodule');
    }
}
// Check login and get context.
require_course_login($course, true, $cm);
$context = context_module::instance($cm->id);
require_capability('mod/questionnaire:view', $context);
$url = new moodle_url($CFG->wwwroot . '/mod/questionnaire/complete.php');
if (isset($id)) {
    $url->param('id', $id);
} else {
    $url->param('a', $a);
}
$PAGE->set_url($url);
$PAGE->set_context($context);
$questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
$questionnaire->strquestionnaires = get_string("modulenameplural", "questionnaire");
$questionnaire->strquestionnaire = get_string("modulename", "questionnaire");
// Mark as viewed.
$completion = new completion_info($course);
$completion->set_module_viewed($cm);
if ($resume) {
    $context = context_module::instance($questionnaire->cm->id);
    $anonymous = $questionnaire->respondenttype == 'anonymous';
    $event = \mod_questionnaire\event\attempt_resumed::create(array('objectid' => $questionnaire->id, 'anonymous' => $anonymous, 'context' => $context));
    $event->trigger();
}
$questionnaire->view();
예제 #24
0
<?php

require 'components/get_listview_referrer.php';
require 'subclasses/questionnaire.php';
$dbh_questionnaire = new questionnaire();
$dbh_questionnaire->set_where("id='" . quote_smart($id) . "'");
if ($result = $dbh_questionnaire->make_query()->result) {
    $data = $result->fetch_assoc();
    extract($data);
}
예제 #25
0
 /**
  * Function to create a question.
  *
  * @param questionnaire $questionnaire
  * @param array|stdClass $record
  * @param array|stdClass $data - accompanying data for question - e.g. choices
  * @return \mod_questionnaire\question\base the question object
  */
 public function create_question(questionnaire $questionnaire, $record = null, $data = null)
 {
     global $DB;
     // Increment the question count.
     $this->questioncount++;
     $record = (array) $record;
     $record['position'] = count($questionnaire->questions);
     if (!isset($record['survey_id'])) {
         throw new coding_exception('survey_id must be present in phpunit_util::create_question() $record');
     }
     if (!isset($record['name'])) {
         throw new coding_exception('name must be present in phpunit_util::create_question() $record');
     }
     if (!isset($record['type_id'])) {
         throw new coding_exception('typeid must be present in phpunit_util::create_question() $record');
     }
     if (!isset($record['content'])) {
         $record['content'] = 'Random ' . $this->type_str($record['type_id']) . ' ' . uniqid();
     }
     // Get question type.
     $typeid = $record['type_id'];
     if ($typeid === QUESRATE && !isset($record['length'])) {
         $record['length'] = 5;
     }
     if ($typeid !== QUESPAGEBREAK && $typeid !== QUESSECTIONTEXT) {
         $qtype = $DB->get_record('questionnaire_question_type', ['id' => $typeid]);
         if (!$qtype) {
             throw new coding_exception('Could not find question type with id ' . $typeid);
         }
         // Throw an error if this requires choices and it hasn't got them.
         $this->validate_question($qtype->typeid, $data);
     }
     $record = (object) $record;
     // Add the question.
     $record->id = $DB->insert_record('questionnaire_question', $record);
     $typename = \mod_questionnaire\question\base::qtypename($record->type_id);
     $question = questionnaire::question_factory($typename, $record->id, $record);
     // Add the question choices if required.
     if ($typeid !== QUESPAGEBREAK && $typeid !== QUESSECTIONTEXT) {
         if ($question->has_choices()) {
             $this->add_question_choices($question, $data);
             $record->opts = $data;
         }
     }
     // Update questionnaire.
     $questionnaire->add_questions();
     return $question;
 }
예제 #26
0
        print_error('requiredparameter', 'questionnaire');
    }
}
$SESSION->instance = $instance;
$usergraph = get_config('questionnaire', 'usergraph');
if (!($questionnaire = $DB->get_record("questionnaire", array("id" => $instance)))) {
    print_error('incorrectquestionnaire', 'questionnaire');
}
if (!($course = $DB->get_record("course", array("id" => $questionnaire->course)))) {
    print_error('coursemisconf');
}
if (!($cm = get_coursemodule_from_instance("questionnaire", $questionnaire->id, $course->id))) {
    print_error('invalidcoursemodule');
}
require_course_login($course, true, $cm);
$questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
// If you can't view the questionnaire, or can't view a specified response, error out.
$context = context_module::instance($cm->id);
if (!has_capability('mod/questionnaire:readallresponseanytime', $context) && !($questionnaire->capabilities->view && $questionnaire->can_view_response($rid))) {
    // Should never happen, unless called directly by a snoop...
    print_error('nopermissions', 'moodle', $CFG->wwwroot . '/mod/questionnaire/view.php?id=' . $cm->id);
}
$questionnaire->canviewallgroups = has_capability('moodle/site:accessallgroups', $context);
$sid = $questionnaire->survey->id;
$url = new moodle_url($CFG->wwwroot . '/mod/questionnaire/report.php');
if ($instance) {
    $url->param('instance', $instance);
}
$url->param('action', $action);
if ($type) {
    $url->param('type', $type);
예제 #27
0
if (!$popup) {
    require_login($course->id, false, $cm);
}
$context = $cm ? context_module::instance($cm->id) : false;
$url = new moodle_url('/mod/questionnaire/preview.php');
if ($id !== 0) {
    $url->param('id', $id);
}
if ($sid) {
    $url->param('sid', $sid);
}
$PAGE->set_url($url);
$PAGE->set_context($context);
$PAGE->set_cm($cm);
// CONTRIB-5872 - I don't know why this is needed.
$questionnaire = new questionnaire($qid, $questionnaire, $course, $cm);
$canpreview = !isset($questionnaire->capabilities) && has_capability('mod/questionnaire:preview', context_course::instance($course->id)) || isset($questionnaire->capabilities) && $questionnaire->capabilities->preview;
if (!$canpreview && !$popup) {
    // Should never happen, unless called directly by a snoop...
    print_error('nopermissions', 'questionnaire', $CFG->wwwroot . '/mod/questionnaire/view.php?id=' . $cm->id);
}
if (!isset($SESSION->questionnaire)) {
    $SESSION->questionnaire = new stdClass();
}
$SESSION->questionnaire->current_tab = new stdClass();
$SESSION->questionnaire->current_tab = 'preview';
$qp = get_string('preview_questionnaire', 'questionnaire');
$pq = get_string('previewing', 'questionnaire');
// Print the page header.
if ($popup) {
    $PAGE->set_pagelayout('popup');
// screen
$qid = optional_param('qid', 0, PARAM_INT);
// Question id
$moveq = optional_param('moveq', 0, PARAM_INT);
// Question id to move
if (!($cm = get_coursemodule_from_id('questionnaire', $id))) {
    error("Course Module ID was incorrect");
}
if (!($course = get_record("course", "id", $cm->course))) {
    error("Course is misconfigured");
}
if (!($questionnaire = get_record("questionnaire", "id", $cm->instance))) {
    error("Course module is incorrect");
}
require_login($course->id);
$questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
if (!$questionnaire->capabilities->editquestions) {
    error(get_string('nopermissions', 'error', 'mod:questionnaire:edit'));
}
$SESSION->questionnaire->current_tab = 'questions';
$reload = false;
/// Process form data:
if ($action == 'main') {
    $questions_form = new questionnaire_questions_form('questions.php', $moveq);
    $sdata = clone $questionnaire->survey;
    $sdata->sid = $questionnaire->survey->id;
    $sdata->id = $cm->id;
    if (!empty($questionnaire->questions)) {
        $pos = 1;
        foreach ($questionnaire->questions as $qidx => $question) {
            $sdata->{'pos_' . $qidx} = $pos;
예제 #29
0
파일: print.php 프로젝트: achocoza/moodle26
$courseid = required_param('courseid', PARAM_INT);
$sec = required_param('sec', PARAM_INT);
$null = null;
$referer = $CFG->wwwroot . '/mod/questionnaire/report.php';
if (!($questionnaire = $DB->get_record("questionnaire", array("id" => $qid)))) {
    print_error('invalidcoursemodule');
}
if (!($course = $DB->get_record("course", array("id" => $questionnaire->course)))) {
    print_error('coursemisconf');
}
if (!($cm = get_coursemodule_from_instance("questionnaire", $questionnaire->id, $course->id))) {
    print_error('invalidcoursemodule');
}
// Check login and get context.
require_login($courseid);
$questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
// If you can't view the questionnaire, or can't view a specified response, error out.
if (!($questionnaire->capabilities->view && ($rid == 0 || $questionnaire->can_view_response($rid)))) {
    // Should never happen, unless called directly by a snoop...
    print_error('nopermissions', 'moodle', $CFG->wwwroot . '/mod/questionnaire/view.php?id=' . $cm->id);
}
$blankquestionnaire = true;
if ($rid != 0) {
    $blankquestionnaire = false;
}
$url = new moodle_url($CFG->wwwroot . '/mod/questionnaire/print.php');
$url->param('qid', $qid);
$url->param('rid', $rid);
$url->param('courseid', $courseid);
$url->param('sec', $sec);
$PAGE->set_url($url);
예제 #30
0
//gestion des couleurs
$couleur_fond = imagecolorallocate($im, 255, 255, 255);
$couleur_texte = imagecolorallocate($im, 0, 0, 0);
$couleur_contour = imagecolorallocate($im, 0, 0, 0);
$couleur_reponses_vrai = imagecolorallocate($im, 0, 255, 0);
$couleur_reponses_fausse = imagecolorallocate($im, 255, 0, 0);
$couleur_reponses_score_max = imagecolorallocate($im, 0, 255, 255);
$couleur_reponses_score = imagecolorallocate($im, 0, 0, 150);
//gestion de la police de caratere :
$vpolice_titre = 3;
$vpolice = 2;
//application de la couleur de fond:
imagefill($im, 0, 0, $couleur_fond);
//calcul du score sur le questionnaire
require_once $adresserepertoiresite . '/scripts/php/class.questionnaire.php';
$questionnaire = new questionnaire($_GET["i"]);
$score = $questionnaire->score_qcm();
//calcul de l'angle de l'arc de reponse(s) fausse(s)
if ($score[0] > 0) {
    $rapport_total_sur_faux = $score[3] / $score[0];
} else {
    $rapport_total_sur_faux = 0;
}
$vanglefaux = 360 * $rapport_total_sur_faux;
$vpctvrai = 1 - $rapport_total_sur_faux;
$vpctvrai = $vpctvrai * 100;
// French notation
$nombre_format_francais = number_format($vpctvrai, 2, ',', ' ');
$vtextepctvrai = $nombre_format_francais . "%";
$vtextevrai = _REPONSES_VRAI . $score[2] . "/" . $score[0];
//calcul de l'angle de l'arc du score