예제 #1
0
 /**
  * Tests getting forum object from id and cmid, inc clones.
  */
 public function test_lib_hooks()
 {
     global $USER, $DB;
     $this->resetAfterTest();
     $generator = $this->getDataGenerator()->get_plugin_generator('mod_forumng');
     $course = $this->get_new_course();
     $suser = $this->get_new_user('student', $course->id);
     $forum = $this->get_new_forumng($course->id, array('name' => 'TEST', 'intro' => 'abc123', 'enableratings' => mod_forumng::FORUMNG_STANDARD_RATING, 'ratingscale' => 10));
     $cm = get_coursemodule_from_instance('forumng', $forum->get_id());
     $result = forumng_rating_permissions($forum->get_context()->id, 'mod_forumng', 'post');
     $this->assertTrue(is_array($result));
     foreach ($result as $cap) {
         $this->assertFalse($cap);
     }
     $this->setAdminUser();
     $result = forumng_rating_permissions($forum->get_context()->id, 'mod_forumng', 'post');
     $this->assertTrue(is_array($result));
     foreach ($result as $cap) {
         $this->assertTrue($cap);
     }
     $did1 = $generator->create_discussion(array('course' => $course, 'forum' => $forum->get_id(), 'userid' => $USER->id));
     $post = $generator->create_post(array('discussionid' => $did1[0], 'parentpostid' => $did1[1], 'userid' => $suser->id));
     $rm = new rating_manager();
     $params = array();
     $params['context'] = $forum->get_context();
     $params['component'] = 'mod_forumng';
     $params['ratingarea'] = 'post';
     $params['itemid'] = $did1[1];
     $params['scaleid'] = $forum->get_rating_scale();
     $params['rateduserid'] = $USER->id;
     $params['rating'] = 21;
     // Check rating valid, should fail with same user + rating too high.
     $this->setExpectedException('rating_exception', get_string('nopermissiontorate', 'error'));
     $rm->check_rating_is_valid($params);
     $params['itemid'] = $post->id;
     $params['rateduserid'] = $suser->id;
     $this->setExpectedException('rating_exception', get_string('invalidnum', 'error'));
     $rm->check_rating_is_valid($params);
     $params['rating'] = 10;
     $result = $rm->check_rating_is_valid($params);
     $this->assertTrue($result);
     // Call to update grades (should do nothing as grading not set, no assertions).
     forumng_update_grades($DB->get_record('forumng', array('id' => $forum->get_id())));
     // Check clones.
     $forum1 = $this->get_new_forumng($course->id, array('name' => 'TEST', 'intro' => 'abc123', 'shared' => true, 'cmidnumber' => 'SF1', 'enableratings' => mod_forumng::FORUMNG_STANDARD_RATING, 'ratingscale' => 10));
     $forum2 = $this->get_new_forumng($course->id, array('name' => 'TEST', 'usesharedgroup' => array('useshared' => true, 'originalcmidnumber' => 'SF1')));
     $did1 = $generator->create_discussion(array('course' => $course, 'forum' => $forum1->get_id(), 'userid' => $USER->id));
     $post = $generator->create_post(array('discussionid' => $did1[0], 'parentpostid' => $did1[1], 'userid' => $suser->id));
     $params['itemid'] = $post->id;
     $params['context'] = $forum2->get_context(true);
     $result = $rm->check_rating_is_valid($params);
     $this->assertTrue($result);
 }
예제 #2
0
    echo $OUTPUT->header();
    echo get_string('ratepermissiondenied', 'rating');
    echo $OUTPUT->footer();
    die;
}
$rm = new rating_manager();
//check the module rating permissions
//doing this check here rather than within rating_manager::get_ratings() so we can return a json error response
$pluginpermissionsarray = $rm->get_plugin_permissions_array($context->id, $component, $ratingarea);
if (!$pluginpermissionsarray['rate']) {
    $result->error = get_string('ratepermissiondenied', 'rating');
    echo json_encode($result);
    die;
} else {
    $params = array('context' => $context, 'component' => $component, 'ratingarea' => $ratingarea, 'itemid' => $itemid, 'scaleid' => $scaleid, 'rating' => $userrating, 'rateduserid' => $rateduserid);
    if (!$rm->check_rating_is_valid($params)) {
        echo $OUTPUT->header();
        echo get_string('ratinginvalid', 'rating');
        echo $OUTPUT->footer();
        die;
    }
}
if ($userrating != RATING_UNSET_RATING) {
    $ratingoptions = new stdClass();
    $ratingoptions->context = $context;
    $ratingoptions->component = $component;
    $ratingoptions->ratingarea = $ratingarea;
    $ratingoptions->itemid = $itemid;
    $ratingoptions->scaleid = $scaleid;
    $ratingoptions->userid = $USER->id;
    $rating = new rating($ratingoptions);
예제 #3
0
    echo $OUTPUT->header();
    echo get_string('ratepermissiondenied', 'rating');
    echo $OUTPUT->footer();
    die;
}
$rm = new rating_manager();
//check the module rating permissions
//doing this check here rather than within rating_manager::get_ratings() so we can return a json error response
$pluginpermissionsarray = $rm->get_plugin_permissions_array($context->id, $component);
if (!$pluginpermissionsarray['rate']) {
    $result->error = get_string('ratepermissiondenied', 'rating');
    echo json_encode($result);
    die;
} else {
    $params = array('context' => $context, 'itemid' => $itemid, 'scaleid' => $scaleid, 'rating' => $userrating, 'rateduserid' => $rateduserid);
    if (!$rm->check_rating_is_valid($component, $params)) {
        echo $OUTPUT->header();
        echo get_string('ratinginvalid', 'rating');
        echo $OUTPUT->footer();
        die;
    }
}
if ($userrating != RATING_UNSET_RATING) {
    $ratingoptions = new stdClass();
    $ratingoptions->context = $context;
    $ratingoptions->component = $component;
    $ratingoptions->itemid = $itemid;
    $ratingoptions->scaleid = $scaleid;
    $ratingoptions->userid = $USER->id;
    $rating = new rating($ratingoptions);
    $rating->update_rating($userrating);