$entry = file_prepare_standard_filemanager($entry, 'attachment', $attachmentoptions, $sitecontext, 'blog', 'attachment', $entry->id); if (!empty($CFG->usetags) && !empty($entry->id)) { include_once $CFG->dirroot . '/tag/lib.php'; $entry->tags = tag_get_tags_array('post', $entry->id); } $entry->action = $action; // set defaults $blogeditform->set_data($entry); if ($blogeditform->is_cancelled()) { redirect($returnurl); } else { if ($data = $blogeditform->get_data()) { switch ($action) { case 'add': $blogentry = new blog_entry(null, $data, $blogeditform); $blogentry->add(); $blogentry->edit($data, $blogeditform, $summaryoptions, $attachmentoptions); break; case 'edit': if (empty($entry->id)) { print_error('wrongentryid', 'blog'); } $entry->edit($data, $blogeditform, $summaryoptions, $attachmentoptions); break; default: print_error('invalidaction'); } redirect($returnurl); } } // gui setup
/** * Test various blog related events. */ public function test_blog_entry_created_event() { global $USER; $this->setAdminUser(); $this->resetAfterTest(); // Create a blog entry for another user as Admin. $sink = $this->redirectEvents(); $blog = new blog_entry(); $blog->subject = "Subject of blog"; $blog->userid = $this->userid; $states = blog_entry::get_applicable_publish_states(); $blog->publishstate = reset($states); $blog->add(); $events = $sink->get_events(); $sink->close(); $event = reset($events); $sitecontext = context_system::instance(); // Validate event data. $this->assertInstanceOf('\\core\\event\\blog_entry_created', $event); $url = new moodle_url('/blog/index.php', array('entryid' => $event->objectid)); $this->assertEquals($url, $event->get_url()); $this->assertEquals($sitecontext->id, $event->contextid); $this->assertEquals($blog->id, $event->objectid); $this->assertEquals($USER->id, $event->userid); $this->assertEquals($this->userid, $event->relateduserid); $this->assertEquals("post", $event->objecttable); $arr = array(SITEID, 'blog', 'add', 'index.php?userid=' . $this->userid . '&entryid=' . $blog->id, $blog->subject); $this->assertEventLegacyLogData($arr, $event); $this->assertEquals("blog_entry_added", $event->get_legacy_eventname()); $this->assertEventLegacyData($blog, $event); $this->assertEventContextNotUsed($event); }
/** * Prepares environment for test_move_tags_* tests */ protected function prepare_move_tags() { global $CFG; require_once $CFG->dirroot . '/blog/locallib.php'; $this->setUser($this->getDataGenerator()->create_user()); $collid1 = core_tag_collection::get_default(); $collid2 = core_tag_collection::create(array('name' => 'newcoll'))->id; $user1 = $this->getDataGenerator()->create_user(); $user2 = $this->getDataGenerator()->create_user(); $blogpost = new blog_entry(null, array('subject' => 'test'), null); $states = blog_entry::get_applicable_publish_states(); $blogpost->publishstate = reset($states); $blogpost->add(); core_tag_tag::set_item_tags('core', 'user', $user1->id, context_user::instance($user1->id), array('Tag1', 'Tag2')); core_tag_tag::set_item_tags('core', 'user', $user2->id, context_user::instance($user2->id), array('Tag2', 'Tag3')); $this->getDataGenerator()->create_tag(array('rawname' => 'Tag4', 'tagcollid' => $collid1, 'tagtype' => 'official')); $this->getDataGenerator()->create_tag(array('rawname' => 'Tag5', 'tagcollid' => $collid2, 'tagtype' => 'official')); return array($collid1, $collid2, $user1, $user2, $blogpost); }
/** * Test various blog related events. */ public function test_blog_entry_events() { global $USER, $DB; $this->setAdminUser(); $this->resetAfterTest(); // Create a blog entry. $blog = new blog_entry(); $blog->summary = "This is summary of blog"; $blog->subject = "Subject of blog"; $states = blog_entry::get_applicable_publish_states(); $blog->publishstate = reset($states); $sink = $this->redirectEvents(); $blog->add(); $events = $sink->get_events(); $event = reset($events); $sitecontext = context_system::instance(); // Validate event data. $this->assertInstanceOf('\core\event\blog_entry_created', $event); $this->assertEquals($sitecontext->id, $event->contextid); $this->assertEquals($blog->id, $event->objectid); $this->assertEquals($USER->id, $event->userid); $this->assertEquals("post", $event->objecttable); // Delete a blog entry. $record = $DB->get_record('post', array('id' => $blog->id)); $blog->delete(); $events = $sink->get_events(); $event = array_pop($events); // Validate event data. $this->assertInstanceOf('\core\event\blog_entry_deleted', $event); $this->assertEquals(context_system::instance()->id, $event->contextid); $this->assertEquals($blog->id, $event->objectid); $this->assertEquals($USER->id, $event->userid); $this->assertEquals("post", $event->objecttable); $this->assertEquals($record, $event->get_record_snapshot("post", $blog->id)); $this->assertSame('blog_entry_deleted', $event->get_legacy_eventname()); }