Пример #1
0
 /**
  * Returns user's results for a specific choice
  * and a list of those users that did not answered yet.
  *
  * @param int $choiceid the choice instance id
  * @return array of responses details
  * @since Moodle 3.0
  */
 public static function get_choice_results($choiceid)
 {
     global $USER, $PAGE;
     $params = self::validate_parameters(self::get_choice_results_parameters(), array('choiceid' => $choiceid));
     if (!($choice = choice_get_choice($params['choiceid']))) {
         throw new moodle_exception("invalidcoursemodule", "error");
     }
     list($course, $cm) = get_course_and_cm_from_instance($choice, 'choice');
     $context = context_module::instance($cm->id);
     self::validate_context($context);
     $groupmode = groups_get_activity_groupmode($cm);
     // Check if we have to include responses from inactive users.
     $onlyactive = $choice->includeinactive ? false : true;
     $users = choice_get_response_data($choice, $cm, $groupmode, $onlyactive);
     // Show those who haven't answered the question.
     if (!empty($choice->showunanswered)) {
         $choice->option[0] = get_string('notanswered', 'choice');
         $choice->maxanswers[0] = 0;
     }
     $results = prepare_choice_show_results($choice, $course, $cm, $users);
     $options = array();
     $fullnamecap = has_capability('moodle/site:viewfullnames', $context);
     foreach ($results->options as $optionid => $option) {
         $userresponses = array();
         $numberofuser = 0;
         $percentageamount = 0;
         if (property_exists($option, 'user') and (has_capability('mod/choice:readresponses', $context) or choice_can_view_results($choice))) {
             $numberofuser = count($option->user);
             $percentageamount = (double) $numberofuser / (double) $results->numberofuser * 100.0;
             if ($choice->publish) {
                 foreach ($option->user as $userresponse) {
                     $response = array();
                     $response['userid'] = $userresponse->id;
                     $response['fullname'] = fullname($userresponse, $fullnamecap);
                     $userpicture = new user_picture($userresponse);
                     $userpicture->size = 1;
                     // Size f1.
                     $response['profileimageurl'] = $userpicture->get_url($PAGE)->out(false);
                     // Add optional properties.
                     foreach (array('answerid', 'timemodified') as $field) {
                         if (property_exists($userresponse, 'answerid')) {
                             $response[$field] = $userresponse->{$field};
                         }
                     }
                     $userresponses[] = $response;
                 }
             }
         }
         $options[] = array('id' => $optionid, 'text' => external_format_string($option->text, $context->id), 'maxanswer' => $option->maxanswer, 'userresponses' => $userresponses, 'numberofuser' => $numberofuser, 'percentageamount' => $percentageamount);
     }
     $warnings = array();
     return array('options' => $options, 'warnings' => $warnings);
 }
Пример #2
0
    } else {
        if (!is_enrolled($context)) {
            // Only people enrolled can make a choice
            $SESSION->wantsurl = qualified_me();
            $SESSION->enrolcancel = get_local_referer(false);
            $coursecontext = context_course::instance($course->id);
            $courseshortname = format_string($course->shortname, true, array('context' => $coursecontext));
            echo $OUTPUT->box_start('generalbox', 'notice');
            echo '<p align="center">' . get_string('notenrolledchoose', 'choice') . '</p>';
            echo $OUTPUT->container_start('continuebutton');
            echo $OUTPUT->single_button(new moodle_url('/enrol/index.php?', array('id' => $course->id)), get_string('enrolme', 'core_enrol', $courseshortname));
            echo $OUTPUT->container_end();
            echo $OUTPUT->box_end();
        }
    }
}
// print the results at the bottom of the screen
if (choice_can_view_results($choice, $current, $choiceopen)) {
    if (!empty($choice->showunanswered)) {
        $choice->option[0] = get_string('notanswered', 'choice');
        $choice->maxanswers[0] = 0;
    }
    $results = prepare_choice_show_results($choice, $course, $cm, $allresponses);
    $renderer = $PAGE->get_renderer('mod_choice');
    echo $renderer->display_result($results);
} else {
    if (!$choiceformshown) {
        echo $OUTPUT->box(get_string('noresultsviewable', 'choice'));
    }
}
echo $OUTPUT->footer();
Пример #3
0
                echo $ug2 . "\t";
                if (isset($option_text)) {
                    echo format_string($option_text, true);
                }
                echo "\n";
            }
        }
    }
    exit;
}
// Show those who haven't answered the question.
if (!empty($choice->showunanswered)) {
    $choice->option[0] = get_string('notanswered', 'choice');
    $choice->maxanswers[0] = 0;
}
$results = prepare_choice_show_results($choice, $course, $cm, $users);
$renderer = $PAGE->get_renderer('mod_choice');
echo $renderer->display_result($results, has_capability('mod/choice:readresponses', $context));
//now give links for downloading spreadsheets.
if (!empty($users) && has_capability('mod/choice:downloadresponses', $context)) {
    $downloadoptions = array();
    $options = array();
    $options["id"] = "{$cm->id}";
    $options["download"] = "ods";
    $button = $OUTPUT->single_button(new moodle_url("report.php", $options), get_string("downloadods"));
    $downloadoptions[] = html_writer::tag('li', $button, array('class' => 'reportoption'));
    $options["download"] = "xls";
    $button = $OUTPUT->single_button(new moodle_url("report.php", $options), get_string("downloadexcel"));
    $downloadoptions[] = html_writer::tag('li', $button, array('class' => 'reportoption'));
    $options["download"] = "txt";
    $button = $OUTPUT->single_button(new moodle_url("report.php", $options), get_string("downloadtext"));