public function test_participation() { global $USER; $this->resetAfterTest(true); $this->setAdminUser(); $course = $this->getDataGenerator()->create_course(); $ouwiki = $this->get_new_ouwiki($course->id, OUWIKI_SUBWIKIS_SINGLE); $cm = get_coursemodule_from_instance('ouwiki', $ouwiki->id); $this->assertNotEmpty($cm); $context = context_module::instance($cm->id); $subwiki = ouwiki_get_subwiki($course, $ouwiki, $cm, $context, 0, $USER->id, true); $pageversion = ouwiki_get_current_page($subwiki, 'TEST PAGE', OUWIKI_GETPAGE_CREATE); $user = $this->get_new_user('student', $course->id); $content = 'content'; $plus = ' plus'; for ($i = 1; $i <= 5; $i++) { $content .= $plus . $i; $wordcount = ouwiki_count_words($content); $this->save_new_version($pageversion->pageid, $content, $user->id, $wordcount); } // Remove one word. $content = str_replace('plus3', '', $content); $wordcount = ouwiki_count_words($content); $this->save_new_version($pageversion->pageid, $content, $user->id, $wordcount); // User participation. list($returneduser, $participation) = ouwiki_get_user_participation($user->id, $subwiki); $this->assertEquals($user->id, $returneduser->id); $this->assertNotNull($participation); $this->assertEquals(6, count($participation)); // All participation. $participation = ouwiki_get_participation($ouwiki, $subwiki, $context, 0); $this->assertNotNull($participation); $userexists = array_key_exists($user->id, $participation); $this->assertTrue($userexists); $this->assertEquals(1, count($participation)); $this->assertEquals(6, $participation[$user->id]->pageedits); $this->assertEquals(25, $participation[$user->id]->wordsadded); $this->assertEquals(0, $participation[$user->id]->wordsdeleted); $this->assertEquals(0, $participation[$user->id]->pagecreates); $user2 = $this->get_new_user('student', $course->id); $participation = ouwiki_get_participation($ouwiki, $subwiki, $context, 0); // A user who is enrolled, but with no contribution. $userexists = array_key_exists($user2->id, $participation); $this->assertTrue($userexists); $this->assertEquals(fullname($user2), fullname($participation[$user2->id])); }
$context = context_module::instance($cm->id); $PAGE->set_pagelayout('incourse'); require_course_login($course, true, $cm); // participation capability check $canview = ouwiki_can_view_participation($course, $ouwiki, $subwiki, $cm); if ($canview != OUWIKI_USER_PARTICIPATION) { print_error('nopermissiontoshow'); } $viewfullnames = has_capability('moodle/site:viewfullnames', $context); $groupname = ''; if ($groupid) { $groupname = $DB->get_field('groups', 'name', array('id' => $groupid)); } // all enrolled users for table pagination $coursecontext = context_course::instance($course->id); $participation = ouwiki_get_participation($ouwiki, $subwiki, $context, $groupid); // is grading enabled and available for the current user $grading_info = array(); if ($ouwiki->grade != 0 && has_capability('mod/ouwiki:grade', $context) && (!$groupid || ($groupid && has_capability('moodle/site:accessallgroups', $context) || $groupid && groups_is_member($groupid)))) { $grading_info = grade_get_grades($course->id, 'mod', 'ouwiki', $ouwiki->id, array_keys($participation)); } $ouwikioutput = $PAGE->get_renderer('mod_ouwiki'); // Headers if (empty($download)) { echo $ouwikioutput->ouwiki_print_start($ouwiki, $cm, $course, $subwiki, get_string('userparticipation', 'ouwiki'), $context); // gets a message after grades updated if (isset($SESSION->ouwikigradesupdated)) { $message = $SESSION->ouwikigradesupdated; unset($SESSION->ouwikigradesupdated); echo $OUTPUT->notification($message, 'notifysuccess'); }
public function test_participation() { $ouwiki = $this->get_new_ouwiki($this->courses['single']->id, OUWIKI_SUBWIKIS_SINGLE); $cm = $this->get_new_course_module($this->courses['single']->id, $ouwiki->id, NOGROUPS); $context = get_context_instance(CONTEXT_MODULE, $cm->id); $subwiki = ouwiki_get_subwiki($this->courses['single'], $ouwiki, $cm, $context, 0, $this->admin->id, true); $pageversion = ouwiki_get_current_page($subwiki, 'TEST PAGE', OUWIKI_GETPAGE_CREATE); $user = $this->get_new_user('student'); $content = 'content'; $plus = ' plus'; for ($i = 1; $i <= 5; $i++) { $content .= $plus . $i; $wordcount = ouwiki_count_words($content); $this->save_new_version($pageversion->pageid, $content, $user->id, $wordcount); } // remove one word $content = preg_replace('/plus3/', '', $content); $wordcount = ouwiki_count_words($content); $this->save_new_version($pageversion->pageid, $content, $user->id, $wordcount); list($returneduser, $participation) = ouwiki_get_user_participation($user->id, $subwiki); $this->assertEqual($returneduser->id, $user->id); $this->assertNotNull($participation); // another user $user2 = $this->get_new_user('student'); $users[0] = $user->id; $users[1] = $user2->id; $participation = ouwiki_get_participation($ouwiki, $subwiki, $context, 0); $this->assertNotNull($participation); $userexists = array_key_exists($user->id, $participation); $this->assertTrue($userexists); // a user who isn't enrolled $userexists = array_key_exists($this->nouser->id, $participation); $this->assertFalse($userexists); }