Esempio n. 1
0
 public function test_course_module_viewed()
 {
     // There is no proper API to call to trigger this event, so what we are
     // doing here is simply making sure that the events returns the right information.
     $course = $this->getDataGenerator()->create_course();
     $book = $this->getDataGenerator()->create_module('book', array('course' => $course->id));
     $params = array('context' => context_module::instance($book->cmid), 'objectid' => $book->id);
     $event = \mod_book\event\course_module_viewed::create($params);
     // Triggering and capturing the event.
     $sink = $this->redirectEvents();
     $event->trigger();
     $events = $sink->get_events();
     $this->assertCount(1, $events);
     $event = reset($events);
     // Checking that the event contains the expected values.
     $this->assertInstanceOf('\\mod_book\\event\\course_module_viewed', $event);
     $this->assertEquals(context_module::instance($book->cmid), $event->get_context());
     $this->assertEquals($book->id, $event->objectid);
     $expected = array($course->id, 'book', 'view', 'view.php?id=' . $book->cmid, $book->id, $book->cmid);
     $this->assertEventLegacyLogData($expected, $event);
     $this->assertEventContextNotUsed($event);
 }
Esempio n. 2
0
 /**
  * Tests for replace_placeholders method.
  */
 public function test_replace_placeholders()
 {
     global $USER;
     $this->resetAfterTest();
     $this->setAdminUser();
     $msgsink = $this->redirectMessages();
     // Generate data.
     $course = $this->getDataGenerator()->create_course();
     $toolgenerator = $this->getDataGenerator()->get_plugin_generator('tool_monitor');
     $context = \context_user::instance($USER->id, IGNORE_MISSING);
     // Creating book.
     $cm = new stdClass();
     $cm->course = $course->id;
     $book = $this->getDataGenerator()->create_module('book', $cm);
     // Creating rule.
     $rulerecord = new stdClass();
     $rulerecord->courseid = $course->id;
     $rulerecord->eventname = '\\mod_book\\event\\course_module_viewed';
     $rulerecord->cmid = $book->cmid;
     $rulerecord->frequency = 1;
     $rulerecord->template = '{link} {modulelink} {rulename} {description} {eventname}';
     $rule = $toolgenerator->create_rule($rulerecord);
     // Creating subscription.
     $subrecord = new stdClass();
     $subrecord->courseid = $course->id;
     $subrecord->ruleid = $rule->id;
     $subrecord->userid = $USER->id;
     $toolgenerator->create_subscription($subrecord);
     // Now let us trigger the event.
     $params = array('context' => context_module::instance($book->cmid), 'objectid' => $book->id);
     $event = \mod_book\event\course_module_viewed::create($params);
     $event->trigger();
     $this->run_adhock_tasks();
     $msgs = $msgsink->get_messages();
     $msg = array_pop($msgs);
     $modurl = new moodle_url('/mod/book/view.php', array('id' => $book->cmid));
     $expectedmsg = $event->get_url()->out() . ' ' . $modurl->out() . ' ' . $rule->get_name($context) . ' ' . $rule->get_description($context) . ' ' . $rule->get_event_name();
     $this->assertEquals($expectedmsg, $msg->fullmessage);
 }
    /**
     * Tests for replace_placeholders method.
     */
    public function test_replace_placeholders()
    {
        global $USER;
        $this->resetAfterTest();
        $this->setAdminUser();
        $msgsink = $this->redirectMessages();
        // Generate data.
        $course = $this->getDataGenerator()->create_course();
        $toolgenerator = $this->getDataGenerator()->get_plugin_generator('tool_monitor');
        $context = \context_user::instance($USER->id, IGNORE_MISSING);
        // Creating book.
        $cm = new stdClass();
        $cm->course = $course->id;
        $book = $this->getDataGenerator()->create_module('book', $cm);
        // Creating rule.
        $rulerecord = new stdClass();
        $rulerecord->courseid = $course->id;
        $rulerecord->eventname = '\\mod_book\\event\\course_module_viewed';
        $rulerecord->cmid = $book->cmid;
        $rulerecord->frequency = 1;
        $rulerecord->template = '## {link} ##

* {modulelink}
* __{rulename}__
* {description}
* {eventname}';
        $rulerecord->templateformat = FORMAT_MARKDOWN;
        $rule = $toolgenerator->create_rule($rulerecord);
        // Creating subscription.
        $subrecord = new stdClass();
        $subrecord->courseid = $course->id;
        $subrecord->ruleid = $rule->id;
        $subrecord->userid = $USER->id;
        $toolgenerator->create_subscription($subrecord);
        // Now let us trigger the event.
        $params = array('context' => context_module::instance($book->cmid), 'objectid' => $book->id);
        $event = \mod_book\event\course_module_viewed::create($params);
        $event->trigger();
        $this->run_adhock_tasks();
        $msgs = $msgsink->get_messages();
        $msg = array_pop($msgs);
        $modurl = new moodle_url('/mod/book/view.php', array('id' => $book->cmid));
        $this->assertContains('<h2>' . $event->get_url()->out() . '</h2>', $msg->fullmessagehtml);
        $this->assertContains('<li>' . $modurl->out() . '</li>', $msg->fullmessagehtml);
        $this->assertContains('<li><strong>' . $rule->get_name($context) . '</strong></li>', $msg->fullmessagehtml);
        $this->assertContains('<li>' . $rule->get_description($context) . '</li>', $msg->fullmessagehtml);
        $this->assertContains('<li>' . $rule->get_event_name() . '</li>', $msg->fullmessagehtml);
        $this->assertEquals(FORMAT_PLAIN, $msg->fullmessageformat);
        $this->assertNotContains('<h2>', $msg->fullmessage);
        $this->assertNotContains('##', $msg->fullmessage);
        $this->assertContains(strtoupper($event->get_url()->out()), $msg->fullmessage);
        $this->assertContains('* ' . $modurl->out(), $msg->fullmessage);
        $this->assertContains('* ' . strtoupper($rule->get_name($context)), $msg->fullmessage);
        $this->assertContains('* ' . $rule->get_description($context), $msg->fullmessage);
        $this->assertContains('* ' . $rule->get_event_name(), $msg->fullmessage);
    }
Esempio n. 4
0
        }
    }
} else {
    $edit = 0;
}
// read chapters
$chapters = book_preload_chapters($book);
if ($allowedit and !$chapters) {
    redirect('edit.php?cmid=' . $cm->id);
    // No chapters - add new one.
}
// Check chapterid and read chapter data
if ($chapterid == '0') {
    // Go to first chapter if no given.
    $params = array('context' => $context, 'objectid' => $book->id);
    $event = \mod_book\event\course_module_viewed::create($params);
    $event->add_record_snapshot('book', $book);
    $event->trigger();
    foreach ($chapters as $ch) {
        if ($edit) {
            $chapterid = $ch->id;
            break;
        }
        if (!$ch->hidden) {
            $chapterid = $ch->id;
            break;
        }
    }
}
$courseurl = new moodle_url('/course/view.php', array('id' => $course->id));
// No content in the book.