Beispiel #1
0
 public function test_ipaddress_access_rule()
 {
     $quiz = new stdClass();
     $attempt = new stdClass();
     $cm = new stdClass();
     $cm->id = 0;
     // Test the allowed case by getting the user's IP address. However, this
     // does not always work, for example using the mac install package on my laptop.
     $quiz->subnet = getremoteaddr(null);
     if (!empty($quiz->subnet)) {
         $quiz->questions = '';
         $quizobj = new quiz($quiz, $cm, null);
         $rule = new quizaccess_ipaddress($quizobj, 0);
         $this->assertFalse($rule->prevent_access());
         $this->assertFalse($rule->description());
         $this->assertFalse($rule->prevent_new_attempt(0, $attempt));
         $this->assertFalse($rule->is_finished(0, $attempt));
         $this->assertFalse($rule->end_time($attempt));
         $this->assertFalse($rule->time_left_display($attempt, 0));
     }
     $quiz->subnet = '0.0.0.0';
     $quiz->questions = '';
     $quizobj = new quiz($quiz, $cm, null);
     $rule = new quizaccess_ipaddress($quizobj, 0);
     $this->assertNotEmpty($rule->prevent_access());
     $this->assertEmpty($rule->description());
     $this->assertFalse($rule->prevent_new_attempt(0, $attempt));
     $this->assertFalse($rule->is_finished(0, $attempt));
     $this->assertFalse($rule->end_time($attempt));
     $this->assertFalse($rule->time_left_display($attempt, 0));
 }
 /**
  * Check to see if the user should be prevented from reviewing based on their
  * IP address.
  *
  * @return mixed A string indicating that the IP address is invalid, or false
  *         if review should be allowed.
  */
 public function prevent_review_ipaddress()
 {
     global $CFG;
     require_once $CFG->dirroot . '/mod/quiz/accessrule/ipaddress/rule.php';
     // Check for administrative access and bypass IP restriction.
     if (has_capability('mod/quiz:manage', $this->quizobj->get_context())) {
         return false;
     }
     // Create the IP address rule and check.
     $reviewrule = quizaccess_ipaddress::make($this->quizobj, $this->timenow, false);
     if (is_object($reviewrule)) {
         return $reviewrule->prevent_access();
     } else {
         return false;
     }
 }