Exemplo n.º 1
0
 /**
  * Constructor for the base assign class.
  *
  * Note: For $coursemodule you can supply a stdclass if you like, but it
  * will be more efficient to supply a cm_info object.
  *
  * @param mixed $coursemodulecontext context|null the course module context
  *                                   (or the course context if the coursemodule has not been
  *                                   created yet).
  * @param mixed $coursemodule the current course module if it was already loaded,
  *                            otherwise this class will load one from the context as required.
  * @param mixed $course the current course  if it was already loaded,
  *                      otherwise this class will load one from the context as required.
  */
 public function __construct($coursemodulecontext, $coursemodule, $course)
 {
     $this->context = $coursemodulecontext;
     $this->course = $course;
     // Ensure that $this->coursemodule is a cm_info object (or null).
     $this->coursemodule = cm_info::create($coursemodule);
     // Temporary cache only lives for a single request - used to reduce db lookups.
     $this->cache = array();
     $this->submissionplugins = $this->load_plugins('assignsubmission');
     $this->feedbackplugins = $this->load_plugins('assignfeedback');
 }
Exemplo n.º 2
0
 /**
  * Constructor for the base assign class.
  *
  * Note: For $coursemodule you can supply a stdclass if you like, but it
  * will be more efficient to supply a cm_info object.
  *
  * @param mixed $coursemodulecontext context|null the course module context
  *                                   (or the course context if the coursemodule has not been
  *                                   created yet).
  * @param mixed $coursemodule the current course module if it was already loaded,
  *                            otherwise this class will load one from the context as required.
  * @param mixed $course the current course  if it was already loaded,
  *                      otherwise this class will load one from the context as required.
  */
 public function __construct($coursemodulecontext, $coursemodule, $course)
 {
     global $SESSION;
     $this->context = $coursemodulecontext;
     $this->course = $course;
     // Ensure that $this->coursemodule is a cm_info object (or null).
     $this->coursemodule = cm_info::create($coursemodule);
     // Temporary cache only lives for a single request - used to reduce db lookups.
     $this->cache = array();
     $this->submissionplugins = $this->load_plugins('assignsubmission');
     $this->feedbackplugins = $this->load_plugins('assignfeedback');
     // Extra entropy is required for uniqid() to work on cygwin.
     $this->useridlistid = clean_param(uniqid('', true), PARAM_ALPHANUM);
     if (!isset($SESSION->mod_assign_useridlist)) {
         $SESSION->mod_assign_useridlist = [];
     }
 }
 /**
  * Tests the function for constructing a cm_info from mixed data.
  */
 public function test_create()
 {
     global $CFG, $DB;
     $this->resetAfterTest();
     // Create a course and an activity.
     $generator = $this->getDataGenerator();
     $course = $generator->create_course();
     $page = $generator->create_module('page', array('course' => $course->id, 'name' => 'Annie'));
     // Null is passed through.
     $this->assertNull(cm_info::create(null));
     // Stdclass object turns into cm_info.
     $cm = cm_info::create((object) array('id' => $page->cmid, 'course' => $course->id));
     $this->assertInstanceOf('cm_info', $cm);
     $this->assertEquals('Annie', $cm->name);
     // A cm_info object stays as cm_info.
     $this->assertSame($cm, cm_info::create($cm));
     // Invalid object (missing fields) causes error.
     try {
         cm_info::create((object) array('id' => $page->cmid));
         $this->fail();
     } catch (Exception $e) {
         $this->assertInstanceOf('coding_exception', $e);
     }
     // Create a second hidden activity.
     $hiddenpage = $generator->create_module('page', array('course' => $course->id, 'name' => 'Annie', 'visible' => 0));
     // Create 2 user accounts, one is a manager who can see everything.
     $user = $generator->create_user();
     $generator->enrol_user($user->id, $course->id);
     $manager = $generator->create_user();
     $generator->enrol_user($manager->id, $course->id, $DB->get_field('role', 'id', array('shortname' => 'manager'), MUST_EXIST));
     // User can see the normal page but not the hidden one.
     $cm = cm_info::create((object) array('id' => $page->cmid, 'course' => $course->id), $user->id);
     $this->assertTrue($cm->uservisible);
     $cm = cm_info::create((object) array('id' => $hiddenpage->cmid, 'course' => $course->id), $user->id);
     $this->assertFalse($cm->uservisible);
     // Manager can see the hidden one too.
     $cm = cm_info::create((object) array('id' => $hiddenpage->cmid, 'course' => $course->id), $manager->id);
     $this->assertTrue($cm->uservisible);
 }
Exemplo n.º 4
0
Arquivo: lib.php Projeto: dg711/moodle
/**
 * @global object
 * @param object $choice
 * @param object $course
 * @param object $coursemodule
 * @param array $allresponses
 *  * @param bool $allresponses
 * @return object
 */
function prepare_choice_show_results($choice, $course, $cm, $allresponses)
{
    global $OUTPUT;
    $display = clone $choice;
    $display->coursemoduleid = $cm->id;
    $display->courseid = $course->id;
    if (!empty($choice->showunanswered)) {
        $choice->option[0] = get_string('notanswered', 'choice');
        $choice->maxanswers[0] = 0;
    }
    // Remove from the list of non-respondents the users who do not have access to this activity.
    if (!empty($display->showunanswered) && $allresponses[0]) {
        $info = new \core_availability\info_module(cm_info::create($cm));
        $allresponses[0] = $info->filter_user_list($allresponses[0]);
    }
    //overwrite options value;
    $display->options = array();
    $allusers = [];
    foreach ($choice->option as $optionid => $optiontext) {
        $display->options[$optionid] = new stdClass();
        $display->options[$optionid]->text = $optiontext;
        $display->options[$optionid]->maxanswer = $choice->maxanswers[$optionid];
        if (array_key_exists($optionid, $allresponses)) {
            $display->options[$optionid]->user = $allresponses[$optionid];
            $allusers = array_merge($allusers, array_keys($allresponses[$optionid]));
        }
    }
    unset($display->option);
    unset($display->maxanswers);
    $display->numberofuser = count(array_unique($allusers));
    $context = context_module::instance($cm->id);
    $display->viewresponsecapability = has_capability('mod/choice:readresponses', $context);
    $display->deleterepsonsecapability = has_capability('mod/choice:deleteresponses', $context);
    $display->fullnamecapability = has_capability('moodle/site:viewfullnames', $context);
    if (empty($allresponses)) {
        echo $OUTPUT->heading(get_string("nousersyet"), 3, null);
        return false;
    }
    return $display;
}