function create_page($pagetitle) { global $USER, $PAGE; $data = $this->mform->get_data(); if (isset($data->groupinfo)) { $groupid = $data->groupinfo; } else if (!empty($this->gid)) { $groupid = $this->gid; } else { $groupid = '0'; } if (empty($this->subwiki)) { // If subwiki is not set then try find one and set else create one. if (!$this->subwiki = wiki_get_subwiki_by_group($this->wid, $groupid, $this->uid)) { $swid = wiki_add_subwiki($PAGE->activityrecord->id, $groupid, $this->uid); $this->subwiki = wiki_get_subwiki($swid); } } if ($data) { $this->set_title($data->pagetitle); $id = wiki_create_page($this->subwiki->id, $data->pagetitle, $data->pageformat, $USER->id); } else { $this->set_title($pagetitle); $id = wiki_create_page($this->subwiki->id, $pagetitle, $PAGE->activityrecord->defaultformat, $USER->id); } $this->page = $id; return $id; }
if (!($page = wiki_get_page($pageid))) { print_error('incorrectpageid', 'wiki'); } if ($groupanduser) { list($currentgroup, $userid) = explode('-', $groupanduser); $currentgroup = clean_param($currentgroup, PARAM_INT); $userid = clean_param($userid, PARAM_INT); } if ($wid) { // in group mode if (!($wiki = wiki_get_wiki($wid))) { print_error('incorrectwikiid', 'wiki'); } if (!($subwiki = wiki_get_subwiki_by_group($wiki->id, $currentgroup, $userid))) { // create subwiki if doesn't exist $subwikiid = wiki_add_subwiki($wiki->id, $currentgroup, $userid); $subwiki = wiki_get_subwiki($subwikiid); } } else { // no group if (!($subwiki = wiki_get_subwiki($page->subwikiid))) { print_error('incorrectsubwikiid', 'wiki'); } // Checking wiki instance of that subwiki if (!($wiki = wiki_get_wiki($subwiki->wikiid))) { print_error('incorrectwikiid', 'wiki'); } } // Checking course module instance if (!($cm = get_coursemodule_from_instance("wiki", $subwiki->wikiid))) { print_error('invalidcoursemodule');
function create_page($pagetitle) { global $USER, $CFG, $PAGE; $data = $this->mform->get_data(); if (empty($this->subwiki)) { $swid = wiki_add_subwiki($PAGE->activityrecord->id, $this->gid, $this->uid); $this->subwiki = wiki_get_subwiki($swid); } if ($data) { $id = wiki_create_page($this->subwiki->id, $data->pagetitle, $data->pageformat, $USER->id); } else { $id = wiki_create_page($this->subwiki->id, $pagetitle, $PAGE->activityrecord->defaultformat, $USER->id); } redirect($CFG->wwwroot . '/mod/wiki/edit.php?pageid=' . $id); }
/** * Test the tag removed event. */ public function test_tag_removed() { global $DB; $this->setAdminUser(); // Create a course to tag. $course = $this->getDataGenerator()->create_course(); // Create a wiki page to tag. $wikigenerator = $this->getDataGenerator()->get_plugin_generator('mod_wiki'); $wiki = $wikigenerator->create_instance(array('course' => $course->id)); $subwikiid = wiki_add_subwiki($wiki->id, 0); $wikipageid = wiki_create_page($subwikiid, 'Title', FORMAT_HTML, '2'); // Create the tag. $tag = $this->getDataGenerator()->create_tag(); // Assign a tag to a course. tag_assign('course', $course->id, $tag->id, 1, 2, 'core', context_course::instance($course->id)->id); // Trigger and capture the event for untagging a course. $sink = $this->redirectEvents(); coursetag_delete_keyword($tag->id, 2, $course->id); $events = $sink->get_events(); $event = reset($events); // Check that the tag was removed from the course and the event data is valid. $this->assertEquals(0, $DB->count_records('tag_instance')); $this->assertInstanceOf('\\core\\event\\tag_removed', $event); $this->assertEquals(context_course::instance($course->id), $event->get_context()); // Create the tag. $tag = $this->getDataGenerator()->create_tag(); // Assign a tag to a wiki this time. tag_assign('wiki_pages', $wikipageid, $tag->id, 1, 2, 'mod_wiki', context_module::instance($wiki->cmid)->id); // Trigger and capture the event for deleting this tag instance. $sink = $this->redirectEvents(); tag_delete_instance('wiki_pages', $wikipageid, $tag->id); $events = $sink->get_events(); $event = reset($events); // Check that tag was removed from the wiki page and the event data is valid. $this->assertEquals(0, $DB->count_records('tag_instance')); $this->assertInstanceOf('\\core\\event\\tag_removed', $event); $this->assertEquals(context_module::instance($wiki->cmid), $event->get_context()); // Create a tag again - the other would have been deleted since there were no more instances associated with it. $tag = $this->getDataGenerator()->create_tag(); // Assign a tag to the wiki again. tag_assign('wiki_pages', $wikipageid, $tag->id, 1, 2, 'mod_wiki', context_module::instance($wiki->cmid)->id); // Now we want to delete this tag, and because there is only one tag instance // associated with it, it should get deleted as well. $sink = $this->redirectEvents(); tag_delete($tag->id); $events = $sink->get_events(); $event = reset($events); // Check that tag was removed from the wiki page and the event data is valid. $this->assertEquals(0, $DB->count_records('tag_instance')); $this->assertInstanceOf('\\core\\event\\tag_removed', $event); $this->assertEquals(context_module::instance($wiki->cmid), $event->get_context()); // Create a tag again - the other would have been deleted since there were no more instances associated with it. $tag = $this->getDataGenerator()->create_tag(); // Assign a tag to the wiki again. tag_assign('wiki_pages', $wikipageid, $tag->id, 1, 2, 'mod_wiki', context_module::instance($wiki->cmid)->id); // Delete all tag instances for this wiki instance. $sink = $this->redirectEvents(); tag_delete_instances('mod_wiki', context_module::instance($wiki->cmid)->id); $events = $sink->get_events(); $event = reset($events); // Check that tag was removed from the wiki page and the event data is valid. $this->assertEquals(0, $DB->count_records('tag_instance')); $this->assertInstanceOf('\\core\\event\\tag_removed', $event); $this->assertEquals(context_module::instance($wiki->cmid), $event->get_context()); // Create another wiki. $wiki2 = $wikigenerator->create_instance(array('course' => $course->id)); $subwikiid2 = wiki_add_subwiki($wiki2->id, 0); $wikipageid2 = wiki_create_page($subwikiid2, 'Title', FORMAT_HTML, '2'); // Assign a tag to both wiki pages. tag_assign('wiki_pages', $wikipageid, $tag->id, 1, 2, 'mod_wiki', context_module::instance($wiki->cmid)->id); tag_assign('wiki_pages', $wikipageid2, $tag->id, 1, 2, 'mod_wiki', context_module::instance($wiki2->cmid)->id); // Now remove all tag_instances associated with all wikis. $sink = $this->redirectEvents(); tag_delete_instances('mod_wiki'); $events = $sink->get_events(); // There will be two events - one for each wiki instance removed. $event1 = reset($events); $event2 = $events[1]; // Check that the tags were removed from the wiki pages. $this->assertEquals(0, $DB->count_records('tag_instance')); // Check the first event data is valid. $this->assertInstanceOf('\\core\\event\\tag_removed', $event1); $this->assertEquals(context_module::instance($wiki->cmid), $event1->get_context()); // Check that the second event data is valid. $this->assertInstanceOf('\\core\\event\\tag_removed', $event2); $this->assertEquals(context_module::instance($wiki2->cmid), $event2->get_context()); }
function create_page($pagetitle) { global $USER, $PAGE; $data = $this->mform->get_data(); if (isset($data->groupinfo)) { $groupid = $data->groupinfo; } else { $groupid = '0'; } if (!($this->subwiki = wiki_get_subwiki_by_group($this->wid, $groupid))) { $swid = wiki_add_subwiki($PAGE->activityrecord->id, $groupid, $this->uid); $this->subwiki = wiki_get_subwiki($swid); } if ($data) { $this->set_title($data->pagetitle); $id = wiki_create_page($this->subwiki->id, $data->pagetitle, $data->pageformat, $USER->id); } else { $this->set_title($pagetitle); $id = wiki_create_page($this->subwiki->id, $pagetitle, $PAGE->activityrecord->defaultformat, $USER->id); } $this->page = $id; return $id; }
/** * Creates a new page. * * @param string $title New page title. * @param string $content Page contents. * @param int $contentformat Page contents format. If an invalid format is provided, default wiki format is used. * @param int $subwikiid The Subwiki ID where to store the page. * @param int $wikiid Page\'s wiki ID. Used if subwiki does not exists. * @param int $userid Subwiki\'s user ID. Used if subwiki does not exists. * @param int $groupid Subwiki\'s group ID. Used if subwiki does not exists. * @return array of warnings and page data. * @since Moodle 3.1 */ public static function new_page($title, $content, $contentformat = null, $subwikiid = null, $wikiid = null, $userid = null, $groupid = null) { global $USER; $params = self::validate_parameters(self::new_page_parameters(), array('title' => $title, 'content' => $content, 'contentformat' => $contentformat, 'subwikiid' => $subwikiid, 'wikiid' => $wikiid, 'userid' => $userid, 'groupid' => $groupid)); $warnings = array(); // Get wiki and subwiki instances. if (!empty($params['subwikiid'])) { if (!($subwiki = wiki_get_subwiki($params['subwikiid']))) { throw new moodle_exception('incorrectsubwikiid', 'wiki'); } if (!($wiki = wiki_get_wiki($subwiki->wikiid))) { throw new moodle_exception('incorrectwikiid', 'wiki'); } // Permission validation. $cm = get_coursemodule_from_instance('wiki', $wiki->id, $wiki->course); $context = context_module::instance($cm->id); self::validate_context($context); } else { if (!($wiki = wiki_get_wiki($params['wikiid']))) { throw new moodle_exception('incorrectwikiid', 'wiki'); } // Permission validation. $cm = get_coursemodule_from_instance('wiki', $wiki->id, $wiki->course); $context = context_module::instance($cm->id); self::validate_context($context); // Determine groupid and userid to use. list($groupid, $userid) = self::determine_group_and_user($cm, $wiki, $params['groupid'], $params['userid']); // Get subwiki and validate it. $subwiki = wiki_get_subwiki_by_group_and_user_with_validation($wiki, $groupid, $userid); if ($subwiki === false) { // User cannot view page. throw new moodle_exception('cannoteditpage', 'wiki'); } else { if ($subwiki->id < 0) { // Subwiki needed to check edit permissions. if (!wiki_user_can_edit($subwiki)) { throw new moodle_exception('cannoteditpage', 'wiki'); } // Subwiki does not exists and it can be created. $swid = wiki_add_subwiki($wiki->id, $groupid, $userid); if (!($subwiki = wiki_get_subwiki($swid))) { throw new moodle_exception('incorrectsubwikiid', 'wiki'); } } } } // Subwiki needed to check edit permissions. if (!wiki_user_can_edit($subwiki)) { throw new moodle_exception('cannoteditpage', 'wiki'); } if ($page = wiki_get_page_by_title($subwiki->id, $params['title'])) { throw new moodle_exception('pageexists', 'wiki'); } // Ignore invalid formats and use default instead. if (!$params['contentformat'] || $wiki->forceformat) { $params['contentformat'] = $wiki->defaultformat; } else { $formats = wiki_get_formats(); if (!in_array($params['contentformat'], $formats)) { $params['contentformat'] = $wiki->defaultformat; } } $newpageid = wiki_create_page($subwiki->id, $params['title'], $params['contentformat'], $USER->id); if (!($page = wiki_get_page($newpageid))) { throw new moodle_exception('incorrectpageid', 'wiki'); } // Save content. $save = wiki_save_page($page, $params['content'], $USER->id); if (!$save) { throw new moodle_exception('savingerror', 'wiki'); } $result = array(); $result['pageid'] = $page->id; $result['warnings'] = $warnings; return $result; }
function create_page($pagetitle) { global $USER, $CFG, $PAGE; $data = $this->mform->get_data(); if (empty($this->subwiki)) { $swid = wiki_add_subwiki($PAGE->activityrecord->id, $this->gid, $this->uid); $this->subwiki = wiki_get_subwiki($swid); } if ($data) { $this->set_title($data->pagetitle); $id = wiki_create_page($this->subwiki->id, $data->pagetitle, $data->pageformat, $USER->id); } else { $this->set_title($pagetitle); $id = wiki_create_page($this->subwiki->id, $pagetitle, $PAGE->activityrecord->defaultformat, $USER->id); } $this->page = $id; return $id; }
/** * Generates a page in wiki. * * @param stdClass wiki object returned from create_instance (if known) * @param stdClass|array $record data to insert as wiki entry. * @return stdClass * @throws coding_exception if neither $record->wikiid nor $wiki->id is specified */ public function create_page($wiki, $record = array()) { global $CFG, $USER; require_once $CFG->dirroot . '/mod/wiki/locallib.php'; $this->pagecount++; $record = (array) $record + array('title' => 'wiki page ' . $this->pagecount, 'wikiid' => $wiki->id, 'subwikiid' => 0, 'group' => 0, 'content' => 'Wiki page content ' . $this->pagecount, 'format' => $wiki->defaultformat); if (empty($record['wikiid']) && empty($record['subwikiid'])) { throw new coding_exception('wiki page generator requires either wikiid or subwikiid'); } if (!$record['subwikiid']) { if (!isset($record['userid'])) { $record['userid'] = $wiki->wikimode == 'individual' ? $USER->id : 0; } if ($subwiki = wiki_get_subwiki_by_group($record['wikiid'], $record['group'], $record['userid'])) { $record['subwikiid'] = $subwiki->id; } else { $record['subwikiid'] = wiki_add_subwiki($record['wikiid'], $record['group'], $record['userid']); } } if ($wikipage = wiki_get_page_by_title($record['subwikiid'], $record['title'])) { $rv = wiki_save_page($wikipage, $record['content'], $USER->id); return $rv['page']; } $pageid = wiki_create_page($record['subwikiid'], $record['title'], $record['format'], $USER->id); $wikipage = wiki_get_page($pageid); $rv = wiki_save_page($wikipage, $record['content'], $USER->id); return $rv['page']; }
/** * Generates a page in wiki. * * @param stdClass wiki object returned from create_instance (if known) * @param stdClass|array $record data to insert as wiki entry. * @return stdClass * @throws coding_exception if neither $record->wikiid nor $wiki->id is specified */ public function create_page($wiki, $record = array()) { global $CFG, $USER; require_once $CFG->dirroot . '/mod/wiki/locallib.php'; $this->pagecount++; $record = (array) $record + array('title' => 'wiki page ' . $this->pagecount, 'wikiid' => $wiki->id, 'subwikiid' => 0, 'group' => 0, 'content' => 'Wiki page content ' . $this->pagecount, 'format' => $wiki->defaultformat); if (empty($record['wikiid']) && empty($record['subwikiid'])) { throw new coding_exception('wiki page generator requires either wikiid or subwikiid'); } if (!$record['subwikiid']) { if (!isset($record['userid'])) { $record['userid'] = $wiki->wikimode == 'individual' ? $USER->id : 0; } if ($subwiki = wiki_get_subwiki_by_group($record['wikiid'], $record['group'], $record['userid'])) { $record['subwikiid'] = $subwiki->id; } else { $record['subwikiid'] = wiki_add_subwiki($record['wikiid'], $record['group'], $record['userid']); } } $wikipage = wiki_get_page_by_title($record['subwikiid'], $record['title']); if (!$wikipage) { $pageid = wiki_create_page($record['subwikiid'], $record['title'], $record['format'], $USER->id); $wikipage = wiki_get_page($pageid); } $rv = wiki_save_page($wikipage, $record['content'], $USER->id); if (array_key_exists('tags', $record)) { $tags = is_array($record['tags']) ? $record['tags'] : preg_split('/,/', $record['tags']); if (empty($wiki->cmid)) { $cm = get_coursemodule_from_instance('wiki', $wiki->id, isset($wiki->course) ? $wiki->course : 0); $wiki->cmid = $cm->id; } core_tag_tag::set_item_tags('mod_wiki', 'wiki_pages', $wikipage->id, context_module::instance($wiki->cmid), $tags); } return $rv['page']; }