[MDL-22112]
Finishing some todos and fixing some bugs
This commit is contained in:
+24
-21
@@ -15,9 +15,8 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
require_once('../../config.php');
|
||||
require_once(dirname(__FILE__).'/create_form.php');
|
||||
require_once(dirname(__FILE__) . '/create_form.php');
|
||||
require_once($CFG->dirroot . '/mod/wiki/lib.php');
|
||||
require_once($CFG->dirroot . '/mod/wiki/locallib.php');
|
||||
require_once($CFG->dirroot . '/mod/wiki/pagelib.php');
|
||||
@@ -29,11 +28,11 @@ require_once($CFG->dirroot . '/mod/wiki/pagelib.php');
|
||||
// page editing page.
|
||||
$action = optional_param('action', 'new', PARAM_TEXT);
|
||||
// The title of the new page, can be empty
|
||||
$title = optional_param('title', '', PARAM_TEXT);
|
||||
$swid = optional_param('swid', 0, PARAM_INT);
|
||||
$wid = optional_param('wid', 0, PARAM_INT);
|
||||
$gid = optional_param('gid', 0, PARAM_INT);
|
||||
$uid = optional_param('uid', 0, PARAM_INT);
|
||||
$title = optional_param('title', '', PARAM_TEXT);
|
||||
$wid = optional_param('wid', 0, PARAM_INT);
|
||||
$swid = optional_param('swid', 0, PARAM_INT);
|
||||
$gid = optional_param('gid', 0, PARAM_INT);
|
||||
$uid = optional_param('uid', 0, PARAM_INT);
|
||||
|
||||
// 'create' action must be submitted by moodle form
|
||||
// so sesskey must be checked
|
||||
@@ -43,22 +42,20 @@ if ($action == 'create') {
|
||||
}
|
||||
}
|
||||
|
||||
$swiki = null;
|
||||
if (!empty($swid)) {
|
||||
$subwiki = wiki_get_subwiki($swid);
|
||||
|
||||
if (!empty($wid)) {
|
||||
// @TODO: Check for capabilities
|
||||
if (!$swid = wiki_add_subwiki($wid, $gid, $uid)) {
|
||||
print_error('invalidwikiid');
|
||||
if (!$wiki = wiki_get_wiki($subwiki->wikiid)) {
|
||||
print_error('invalidwikiid', 'wiki');
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
$subwiki = wiki_get_subwiki_by_group($wid, $gid, $uid);
|
||||
|
||||
if (!$subwiki = wiki_get_subwiki($swid)) {
|
||||
print_error('invalidswid', 'wiki');
|
||||
}
|
||||
if (!$wiki = wiki_get_wiki($wid)) {
|
||||
print_error('invalidwikiid', 'wiki');
|
||||
}
|
||||
|
||||
if (!$wiki = wiki_get_wiki($subwiki->wikiid)) {
|
||||
print_error('invalidwikiid', 'wiki');
|
||||
}
|
||||
|
||||
if (!$cm = get_coursemodule_from_instance('wiki', $wiki->id)) {
|
||||
@@ -71,12 +68,18 @@ if (!$course = get_course_by_id($cm->course)) {
|
||||
|
||||
require_course_login($course->id, true, $cm);
|
||||
|
||||
add_to_log($course->id, 'createpage', 'createpage', 'view.php?id='.$cm->id, $wiki->id);
|
||||
add_to_log($course->id, 'createpage', 'createpage', 'view.php?id=' . $cm->id, $wiki->id);
|
||||
|
||||
$wikipage = new page_wiki_create($wiki, $subwiki, $cm);
|
||||
|
||||
$wikipage->set_gid($gid);
|
||||
$wikipage->set_swid($swid);
|
||||
if (!empty($swid)) {
|
||||
$wikipage->set_gid($subwiki->groupid);
|
||||
$wikipage->set_uid($subwiki->userid);
|
||||
} else {
|
||||
$wikipage->set_gid($gid);
|
||||
$wikipage->set_uid($uid);
|
||||
}
|
||||
|
||||
if (!empty($title)) {
|
||||
$wikipage->set_title($title);
|
||||
} else {
|
||||
|
||||
@@ -197,13 +197,6 @@ function wiki_get_version($versionid) {
|
||||
*/
|
||||
function wiki_get_first_page($subwikid, $module = null) {
|
||||
global $DB, $USER;
|
||||
// TODO:
|
||||
// not sure if we should use current userid
|
||||
|
||||
$extra = '';
|
||||
if ($module && $module->wikimode == 'individual') {
|
||||
$extra = ' AND p.userid=' . $USER->id;
|
||||
}
|
||||
|
||||
$sql = 'SELECT p.* ' .
|
||||
'FROM {wiki} w, {wiki_subwikis} s, {wiki_pages} p ' .
|
||||
@@ -211,7 +204,6 @@ function wiki_get_first_page($subwikid, $module = null) {
|
||||
's.wikiid = w.id AND ' .
|
||||
'w.firstpagetitle = p.title AND ' .
|
||||
'p.subwikiid = s.id';
|
||||
$sql .= $extra;
|
||||
|
||||
return $DB->get_record_sql($sql, array($subwikid));
|
||||
}
|
||||
|
||||
+21
-5
@@ -64,6 +64,10 @@ abstract class page_wiki {
|
||||
*/
|
||||
protected $gid;
|
||||
|
||||
/**
|
||||
* @var int Current user ID
|
||||
*/
|
||||
protected $uid;
|
||||
/**
|
||||
* @var array The tabs set used in wiki module
|
||||
*/
|
||||
@@ -194,6 +198,14 @@ abstract class page_wiki {
|
||||
$this->gid = $gid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to set current user id
|
||||
* @param int $uid Current user id
|
||||
*/
|
||||
function set_uid($uid) {
|
||||
$this->uid = $uid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to set the URL of the page.
|
||||
* This method must be overwritten by every type of page.
|
||||
@@ -346,7 +358,7 @@ class page_wiki_edit extends page_wiki {
|
||||
global $CFG, $PAGE;
|
||||
parent::__construct($wiki, $subwiki, $cm);
|
||||
self::$attachmentoptions = array(
|
||||
'subdirs' => false,
|
||||
'subdirs' => false,
|
||||
'maxfiles' => -1,
|
||||
'maxbytes' => $CFG->maxbytes,
|
||||
'accepted_types'=>'*'
|
||||
@@ -522,7 +534,7 @@ class page_wiki_edit extends page_wiki {
|
||||
$data->newcontentformat = FORMAT_HTML;
|
||||
$data = file_prepare_standard_editor($data, 'newcontent', page_wiki_edit::$attachmentoptions, $context, 'wiki_attachments', $this->subwiki->id);
|
||||
break;
|
||||
default:
|
||||
default:
|
||||
//$draftitemid = file_get_submitted_draft_itemid('attachments');
|
||||
//file_prepare_draft_area($draftitemid, $context->id, 'wiki_attachments', $this->subwiki->id);
|
||||
//$data->attachments = $draftitemid;
|
||||
@@ -872,10 +884,11 @@ class page_wiki_create extends page_wiki {
|
||||
}
|
||||
|
||||
function set_action($action) {
|
||||
global $PAGE;
|
||||
$this->action = $action;
|
||||
|
||||
require_once(dirname(__FILE__) . '/create_form.php');
|
||||
$url = new moodle_url('/mod/wiki/create.php', array('action' => 'create', 'swid' => $this->swid));
|
||||
$url = new moodle_url('/mod/wiki/create.php', array('action' => 'create', 'wid' => $PAGE->activityrecord->id, 'gid' => $this->gid, 'uid' => $this->uid));
|
||||
$formats = wiki_get_formats();
|
||||
$options = array('formats' => $formats);
|
||||
if ($this->title != get_string('newpage', 'wiki')) {
|
||||
@@ -894,7 +907,6 @@ class page_wiki_create extends page_wiki {
|
||||
global $PAGE;
|
||||
|
||||
$context = get_context_instance(CONTEXT_MODULE, $PAGE->cm->id);
|
||||
$wiki = wiki_get_wiki($this->swid);
|
||||
|
||||
// @TODO: Change this to has_capability and show an alternative interface.
|
||||
require_capability('mod/wiki:createpage', $context, NULL, true, 'nocreatepermission', 'wiki');
|
||||
@@ -909,8 +921,12 @@ class page_wiki_create extends page_wiki {
|
||||
}
|
||||
|
||||
function create_page() {
|
||||
global $USER, $CFG;
|
||||
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);
|
||||
}
|
||||
$id = wiki_create_page($this->subwiki->id, $data->pagetitle, $data->pageformat, $USER->id);
|
||||
redirect($CFG->wwwroot . '/mod/wiki/edit.php?pageid=' . $id);
|
||||
}
|
||||
|
||||
+65
-20
@@ -36,7 +36,7 @@ class mod_wiki_renderer extends plugin_renderer_base {
|
||||
|
||||
// @TODO: Fix call to wiki_get_subwiki_by_group
|
||||
$gid = groups_get_activity_group($this->page->cm);
|
||||
$gid = !empty($gid)?$gid:0;
|
||||
$gid = !empty($gid) ? $gid : 0;
|
||||
if (!$subwiki = wiki_get_subwiki_by_group($this->page->cm->instance, $gid)) {
|
||||
return false;
|
||||
}
|
||||
@@ -314,20 +314,17 @@ class mod_wiki_renderer extends plugin_renderer_base {
|
||||
// Only people with these capabilities can view all wikis
|
||||
if ($view && $manage) {
|
||||
// @TODO: Print here a combo that contains all users.
|
||||
$subwikis = wiki_get_subwikis($wiki->id);
|
||||
$users = get_enrolled_users($context);
|
||||
$options = array();
|
||||
foreach ($subwikis as $subwiki) {
|
||||
if ($subwiki->userid == 0) {
|
||||
continue;
|
||||
}
|
||||
$user = user_get_users_by_id(array($subwiki->userid));
|
||||
$options[$subwiki->id] = fullname($user[$subwiki->userid]);
|
||||
foreach ($users as $user) {
|
||||
$options[$user->id] = fullname($user);
|
||||
}
|
||||
|
||||
echo $this->output->container_start('wiki_right');
|
||||
$url = $CFG->wwwroot . '/mod/wiki/view.php?pageid=' . $page->id;
|
||||
$name = 'swid';
|
||||
$selected = $page->subwikiid;
|
||||
$params = array('wid' => $wiki->id, 'title' => $page->title);
|
||||
$url = new moodle_url('/mod/wiki/view.php', $params);
|
||||
$name = 'uid';
|
||||
$selected = $subwiki->userid;
|
||||
echo $this->output->single_select($url, $name, $options, $selected);
|
||||
echo $this->output->container_end();
|
||||
}
|
||||
@@ -340,7 +337,7 @@ class mod_wiki_renderer extends plugin_renderer_base {
|
||||
if ($wiki->wikimode == 'collaborative') {
|
||||
// We need to print a select to choose a course group
|
||||
|
||||
$params = 'pageid=' . $page->id;
|
||||
$params = 'wid=' . $wiki->id . '&title=' . urlencode($page->title);
|
||||
|
||||
echo $this->output->container_start('wiki_right');
|
||||
groups_print_activity_menu($cm, $CFG->wwwroot . '/mod/wiki/view.php?' . $params);
|
||||
@@ -348,10 +345,41 @@ class mod_wiki_renderer extends plugin_renderer_base {
|
||||
return;
|
||||
} else if ($wiki->wikimode == 'individual') {
|
||||
// @TODO: Print here a combo that contains all users of that subwiki.
|
||||
$view = has_capability('mod/wiki:viewpage', $context, $USER);
|
||||
$manage = has_capability('mod/wiki:managewiki', $context, $USER);
|
||||
|
||||
// Only people with these capabilities can view all wikis
|
||||
if ($view && $manage) {
|
||||
$users = get_enrolled_users($context);
|
||||
$options = array();
|
||||
foreach ($users as $user) {
|
||||
$groups = groups_get_all_groups($cm->course, $user->id);
|
||||
if (!empty($groups)) {
|
||||
foreach ($groups as $group) {
|
||||
$options[$group->id][$group->name][$group->id . '-' . $user->id] = fullname($user);
|
||||
}
|
||||
} else {
|
||||
$name = get_string('notingroup', 'wiki');
|
||||
$options[0][$name]['0' . '-' . $user->id] = fullname($user);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$group = groups_get_group($subwiki->groupid);
|
||||
$users = groups_get_members($subwiki->groupid);
|
||||
foreach ($users as $user) {
|
||||
$options[$group->id][$group->name][$group->id . '-' . $user->id] = fullname($user);
|
||||
}
|
||||
}
|
||||
echo $this->output->container_start('wiki_right');
|
||||
echo "TODO: Print here a combo to choose user wiki from that subwiki";
|
||||
$params = array('wid' => $wiki->id, 'title' => $page->title);
|
||||
$url = new moodle_url('/mod/wiki/view.php', $params);
|
||||
$name = 'groupanduser';
|
||||
$selected = $subwiki->groupid . '-' . $subwiki->userid;
|
||||
echo $this->output->single_select($url, $name, $options, $selected);
|
||||
echo $this->output->container_end();
|
||||
|
||||
return;
|
||||
|
||||
} else {
|
||||
// error
|
||||
return;
|
||||
@@ -359,8 +387,7 @@ class mod_wiki_renderer extends plugin_renderer_base {
|
||||
CASE VISIBLEGROUPS:
|
||||
if ($wiki->wikimode == 'collaborative') {
|
||||
// We need to print a select to choose a course group
|
||||
|
||||
$params = 'pageid=' . $page->id;
|
||||
$params = 'wid=' . $wiki->id . '&title=' . urlencode($page->title);
|
||||
|
||||
echo $this->output->container_start('wiki_right');
|
||||
groups_print_activity_menu($cm, $CFG->wwwroot . '/mod/wiki/view.php?' . $params);
|
||||
@@ -368,10 +395,28 @@ class mod_wiki_renderer extends plugin_renderer_base {
|
||||
return;
|
||||
|
||||
} else if ($wiki->wikimode == 'individual') {
|
||||
// @TODO: Print here a combo that contains all users of that wiki grouped by group.
|
||||
$users = get_enrolled_users($context);
|
||||
$options = array();
|
||||
foreach ($users as $user) {
|
||||
$groups = groups_get_all_groups($cm->course, $user->id);
|
||||
if (!empty($groups)) {
|
||||
foreach ($groups as $group) {
|
||||
$options[$group->id][$group->name][$group->id . '-' . $user->id] = fullname($user);
|
||||
}
|
||||
} else {
|
||||
$name = get_string('notingroup', 'wiki');
|
||||
$options[0][$name]['0' . '-' . $user->id] = fullname($user);
|
||||
}
|
||||
}
|
||||
|
||||
echo $this->output->container_start('wiki_right');
|
||||
echo "TODO: Print here a combo to choose user wiki from that wiki";
|
||||
$params = array('wid' => $wiki->id, 'title' => $page->title);
|
||||
$url = new moodle_url('/mod/wiki/view.php', $params);
|
||||
$name = 'groupanduser';
|
||||
$selected = $subwiki->groupid . '-' . $subwiki->userid;
|
||||
echo $this->output->single_select($url, $name, $options, $selected);
|
||||
echo $this->output->container_end();
|
||||
|
||||
return;
|
||||
|
||||
} else {
|
||||
@@ -393,10 +438,10 @@ class mod_wiki_renderer extends plugin_renderer_base {
|
||||
$items[] = get_string($opt, 'wiki');
|
||||
}
|
||||
$selectoptions = array();
|
||||
foreach ($items as $key=>$item) {
|
||||
$selectoptions[$key+1] = $item;
|
||||
foreach ($items as $key => $item) {
|
||||
$selectoptions[$key + 1] = $item;
|
||||
}
|
||||
$select = new single_select(new moodle_url('/mod/wiki/map.php', array('pageid'=>$pageid)), 'option', $selectoptions, $currentselect);
|
||||
$select = new single_select(new moodle_url('/mod/wiki/map.php', array('pageid' => $pageid)), 'option', $selectoptions, $currentselect);
|
||||
$select->label = get_string('mapmenu', 'wiki') . ': ';
|
||||
return $this->output->container($this->output->render($select), 'midpad');
|
||||
}
|
||||
|
||||
+115
-134
@@ -36,15 +36,20 @@ require_once($CFG->dirroot . '/mod/wiki/lib.php');
|
||||
require_once($CFG->dirroot . '/mod/wiki/locallib.php');
|
||||
require_once($CFG->dirroot . '/mod/wiki/pagelib.php');
|
||||
|
||||
$currentgroup = optional_param('group', 0, PARAM_INT); // Group ID
|
||||
$userid = optional_param('userid', 0, PARAM_INT); // User ID
|
||||
$title = optional_param('title', '', PARAM_TEXT); // Page Title
|
||||
$action = optional_param('action', '', PARAM_ALPHA);
|
||||
$id = optional_param('id', 0, PARAM_INT); // Course Module ID
|
||||
$swid = optional_param('swid', 0, PARAM_INT); // Subwiki ID
|
||||
$id = optional_param('id', 0, PARAM_INT); // Course Module ID
|
||||
|
||||
$pageid = optional_param('pageid', 0, PARAM_INT); // Page ID
|
||||
$wid = optional_param('wid', 0, PARAM_INT); // Wiki ID
|
||||
$edit = optional_param('edit', -1, PARAM_BOOL);
|
||||
|
||||
$wid = optional_param('wid', 0, PARAM_INT); // Wiki ID
|
||||
$title = optional_param('title', '', PARAM_TEXT); // Page Title
|
||||
$currentgroup = optional_param('group', 0, PARAM_INT); // Group ID
|
||||
$userid = optional_param('uid', 0, PARAM_INT); // User ID
|
||||
$groupanduser = optional_param('groupanduser', 0, PARAM_TEXT);
|
||||
|
||||
$edit = optional_param('edit', -1, PARAM_BOOL);
|
||||
|
||||
$action = optional_param('action', '', PARAM_ALPHA);
|
||||
$swid = optional_param('swid', 0, PARAM_INT); // Subwiki ID
|
||||
|
||||
/*
|
||||
* Case 0:
|
||||
@@ -78,38 +83,26 @@ if ($id) {
|
||||
|
||||
// Getting current group id
|
||||
$currentgroup = groups_get_activity_group($cm);
|
||||
$currentgroup = !empty($currentgroup)?$currentgroup:0;
|
||||
$currentgroup = !empty($currentgroup) ? $currentgroup : 0;
|
||||
// Getting current user id
|
||||
if ($wiki->wikimode == 'individual'){
|
||||
if (empty($userid)){
|
||||
$userid = $USER->id;
|
||||
}
|
||||
if ($wiki->wikimode == 'individual') {
|
||||
$userid = $USER->id;
|
||||
} else {
|
||||
$userid = 0;
|
||||
}
|
||||
$subwiki = wiki_get_subwiki_by_group($wiki->id, $currentgroup, $userid);
|
||||
$page = null;
|
||||
if (!empty($subwiki)){
|
||||
$page = wiki_get_first_page($subwiki->id, $wiki);
|
||||
}
|
||||
if (!empty($page)){
|
||||
$pageid = $page->id;
|
||||
} else {
|
||||
// the first page doesn't exist, create first page automatically
|
||||
// Then redirct to editing page
|
||||
$page = null;
|
||||
$title = $wiki->firstpagetitle;
|
||||
$default = $wiki->defaultformat;
|
||||
if (empty($subwiki)) {
|
||||
if (!$swid = wiki_add_subwiki($wiki->id, $currentgroup, $userid)) {
|
||||
print_error('invalidwikiid');
|
||||
}
|
||||
} else {
|
||||
$swid = $subwiki->id;
|
||||
}
|
||||
|
||||
$id = wiki_create_page($swid, $title, $default, $USER->id);
|
||||
redirect($CFG->wwwroot . '/mod/wiki/edit.php?pageid=' . $id);
|
||||
// Getting subwiki. If it does not exists, redirecting to create page
|
||||
if (!$subwiki = wiki_get_subwiki_by_group($wiki->id, $currentgroup, $userid)) {
|
||||
$params = array('wid' => $wiki->id, 'gid' => $currentgroup, 'uid' => $userid, 'title' => $wiki->firstpagetitle);
|
||||
$url = new moodle_url('/mod/wiki/create.php', $params);
|
||||
redirect($url);
|
||||
}
|
||||
|
||||
// Getting first page. If it does not exists, redirecting to create page
|
||||
if (!$page = wiki_get_first_page($subwiki->id, $wiki)) {
|
||||
$params = array('swid' => $wiki->id, 'title' => $wiki->firstpagetitle);
|
||||
$url = new moodle_url('/mod/wiki/create.php', $params);
|
||||
redirect($url);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -117,12 +110,7 @@ if ($id) {
|
||||
*
|
||||
* A user wants to see a page.
|
||||
*
|
||||
* If group is set, system must show the page with the same name from another group.
|
||||
* In this case, is probable that there is no version of that page for the
|
||||
* given group
|
||||
*
|
||||
* URL Params: pageid -> page id
|
||||
* group -> group id (optional)
|
||||
*
|
||||
*/
|
||||
} elseif ($pageid) {
|
||||
@@ -131,24 +119,9 @@ if ($id) {
|
||||
if (!$page = wiki_get_page($pageid)) {
|
||||
print_error('incorrectpageid', 'wiki');
|
||||
}
|
||||
if (!empty($swid)){
|
||||
// User wants to view another subwiki
|
||||
if ($subwiki = wiki_get_subwiki($swid)){
|
||||
// Trying to get the same page but from another subwiki
|
||||
if (!$page = wiki_get_page_by_title($swid, $page->title)) {
|
||||
// That page does not exists
|
||||
// Getting the first page of that wiki
|
||||
$wiki = wiki_get_wiki($subwiki->wikiid);
|
||||
if (!$page = wiki_get_page_by_title($swid, $wiki->firstpagetitle)){
|
||||
$url = new moodle_url('/mod/wiki/view.php', array('id'=>$subwiki->id));
|
||||
print_error('individualpagedoesnotexist', 'wiki', $url->out());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
print_error('incorrectsubwikiid', 'wiki');
|
||||
}
|
||||
|
||||
} else if (!$subwiki = wiki_get_subwiki($page->subwikiid)) {
|
||||
// Checking subwiki
|
||||
if (!$subwiki = wiki_get_subwiki($page->subwikiid)) {
|
||||
print_error('incorrectsubwikiid', 'wiki');
|
||||
}
|
||||
|
||||
@@ -167,53 +140,30 @@ if ($id) {
|
||||
print_error('coursemisconf');
|
||||
}
|
||||
|
||||
// Switching to the correct page and subwiki if group param is present
|
||||
if ($currentgroup = groups_get_activity_group($cm)) {
|
||||
if ($subwiki->groupid != $currentgroup) {
|
||||
|
||||
// Setting new subwiki instance
|
||||
// @TODO: Fix call to wiki_get_subwiki_by_group
|
||||
$subwiki = wiki_get_subwiki_by_group($wiki->id, $currentgroup);
|
||||
|
||||
// Setting new page instance or page title
|
||||
$title = $page->title;
|
||||
if ($page = wiki_get_page_by_title($subwiki->id, $page->title)) {
|
||||
unset($title);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Case 2:
|
||||
*
|
||||
* Trying to read a page by using subwiki->id and title.
|
||||
* Trying to read a page from another group or user
|
||||
*
|
||||
* Page can exists or not.
|
||||
* * If it exists, page must be shown
|
||||
* * If it does not exists, system must ask for its creation
|
||||
*
|
||||
* URL params: swid -> subwiki id
|
||||
* title -> a page title
|
||||
* URL params: wid -> subwiki id (required)
|
||||
* title -> a page title (required)
|
||||
* group -> group id (optional)
|
||||
* uid -> user id (optional)
|
||||
* groupanduser -> (optional)
|
||||
*/
|
||||
} elseif ($swid && $title) {
|
||||
|
||||
// Getting subwiki instance
|
||||
if (!$subwiki = wiki_get_subwiki($swid)) {
|
||||
print_error('incorrectsubwikiid', 'wiki');
|
||||
}
|
||||
|
||||
// Checking is there is a page with this title
|
||||
if ($page = wiki_get_page_by_title($swid, $title)) {
|
||||
unset($title);
|
||||
}
|
||||
} elseif ($wid && $title) {
|
||||
|
||||
// Setting wiki instance
|
||||
if (!$wiki = wiki_get_wiki($subwiki->wikiid)) {
|
||||
if (!$wiki = wiki_get_wiki($wid)) {
|
||||
print_error('incorrectwikiid', 'wiki');
|
||||
}
|
||||
|
||||
// Checking course module
|
||||
if (!$cm = get_coursemodule_from_instance("wiki", $subwiki->wikiid)) {
|
||||
if (!$cm = get_coursemodule_from_instance("wiki", $wiki->id)) {
|
||||
print_error('invalidcoursemodule');
|
||||
}
|
||||
|
||||
@@ -222,66 +172,97 @@ if ($id) {
|
||||
print_error('coursemisconf');
|
||||
}
|
||||
|
||||
/*
|
||||
* Case 3:
|
||||
*
|
||||
* A user switches group when is 'reading' a non-existent page.
|
||||
*
|
||||
* URL Params: wid -> wiki id
|
||||
* title -> page title
|
||||
* currentgroup -> group id
|
||||
*
|
||||
*/
|
||||
} elseif ($wid && $title && $currentgroup) {
|
||||
|
||||
// Checking wiki instance
|
||||
if (!$wiki = wiki_get_wiki($wid)) {
|
||||
print_error('incorrectwikiid', 'wiki');
|
||||
$groupmode = groups_get_activity_groupmode($cm);
|
||||
if (empty($currentgroup)) {
|
||||
$currentgroup = groups_get_activity_group($cm);
|
||||
$currentgroup = !empty($currentgroup) ? $currentgroup : 0;
|
||||
}
|
||||
|
||||
// Checking subwiki instance
|
||||
// @TODO: Fix call to wiki_get_subwiki_by_group
|
||||
if (!$currentgroup = groups_get_activity_group($cm)){
|
||||
$currentgroup = 0;
|
||||
}
|
||||
if (!$subwiki = wiki_get_subwiki_by_group($wid, $currentgroup)) {
|
||||
print_error('incorrectsubwikiid', 'wiki');
|
||||
if ($wiki->wikimode == 'individual' && ($groupmode == SEPARATEGROUPS || $groupmode == VISIBLEGROUPS)) {
|
||||
list($gid, $uid) = explode('-', $groupanduser);
|
||||
} else if ($wiki->wikimode == 'individual') {
|
||||
$gid = 0;
|
||||
$uid = $userid;
|
||||
} else if ($groupmode == NOGROUPS) {
|
||||
$gid = 0;
|
||||
$uid = 0;
|
||||
} else {
|
||||
$gid = $currentgroup;
|
||||
$uid = 0;
|
||||
}
|
||||
|
||||
// Checking page instance
|
||||
if ($page = wiki_get_page_by_title($subwiki->id, $title)) {
|
||||
unset($title);
|
||||
// Getting subwiki instance. If it does not exists, redirect to create page
|
||||
if (!$subwiki = wiki_get_subwiki_by_group($wiki->id, $gid, $uid)) {
|
||||
$params = array('wid' => $wiki->id, 'gid' => $gid, 'uid' => $uid, 'title' => $title);
|
||||
$url = new moodle_url('/mod/wiki/create.php', $params);
|
||||
redirect($url);
|
||||
}
|
||||
|
||||
// Checking course instance
|
||||
if (!$course = get_course_by_id($wiki->course)) {
|
||||
print_error('coursemisconf');
|
||||
// Checking is there is a page with this title. If it does not exists, redirect to first page
|
||||
if (!$page = wiki_get_page_by_title($subwiki->id, $title)) {
|
||||
$params = array('wid' => $wiki->id, 'gid' => $gid, 'uid' => $uid, 'title' => $wiki->firstpagetitle);
|
||||
$url = new moodle_url('/mod/wiki/view.php', $params);
|
||||
redirect($url);
|
||||
}
|
||||
|
||||
// Checking course module instance
|
||||
if (!$cm = get_coursemodule_from_instance("wiki", $wiki->id, $course->id)) {
|
||||
print_error('invalidcoursemodule');
|
||||
}
|
||||
|
||||
$subwiki = null;
|
||||
$page = null;
|
||||
|
||||
/*
|
||||
* Case 4:
|
||||
*
|
||||
* Error. No more options
|
||||
*/
|
||||
} else {
|
||||
// /*
|
||||
// * Case 3:
|
||||
// *
|
||||
// * A user switches group when is 'reading' a non-existent page.
|
||||
// *
|
||||
// * URL Params: wid -> wiki id
|
||||
// * title -> page title
|
||||
// * currentgroup -> group id
|
||||
// *
|
||||
// */
|
||||
//} elseif ($wid && $title && $currentgroup) {
|
||||
//
|
||||
// // Checking wiki instance
|
||||
// if (!$wiki = wiki_get_wiki($wid)) {
|
||||
// print_error('incorrectwikiid', 'wiki');
|
||||
// }
|
||||
//
|
||||
// // Checking subwiki instance
|
||||
// // @TODO: Fix call to wiki_get_subwiki_by_group
|
||||
// if (!$currentgroup = groups_get_activity_group($cm)){
|
||||
// $currentgroup = 0;
|
||||
// }
|
||||
// if (!$subwiki = wiki_get_subwiki_by_group($wid, $currentgroup)) {
|
||||
// print_error('incorrectsubwikiid', 'wiki');
|
||||
// }
|
||||
//
|
||||
// // Checking page instance
|
||||
// if ($page = wiki_get_page_by_title($subwiki->id, $title)) {
|
||||
// unset($title);
|
||||
// }
|
||||
//
|
||||
// // Checking course instance
|
||||
// if (!$course = get_course_by_id($wiki->course)) {
|
||||
// print_error('coursemisconf');
|
||||
// }
|
||||
//
|
||||
// // Checking course module instance
|
||||
// if (!$cm = get_coursemodule_from_instance("wiki", $wiki->id, $course->id)) {
|
||||
// print_error('invalidcoursemodule');
|
||||
// }
|
||||
//
|
||||
// $subwiki = null;
|
||||
// $page = null;
|
||||
//
|
||||
// /*
|
||||
// * Case 4:
|
||||
// *
|
||||
// * Error. No more options
|
||||
// */
|
||||
} else {
|
||||
print_error('incorrectparameters');
|
||||
}
|
||||
|
||||
|
||||
require_course_login($course, true, $cm);
|
||||
|
||||
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
|
||||
require_capability('mod/wiki:viewpage', $context);
|
||||
|
||||
add_to_log($course->id, 'wiki', 'view', 'view.php?id='.$cm->id, $wiki->id);
|
||||
add_to_log($course->id, 'wiki', 'view', 'view.php?id=' . $cm->id, $wiki->id);
|
||||
|
||||
if (($edit != - 1) and $PAGE->user_allowed_editing()) {
|
||||
$USER->editing = $edit;
|
||||
|
||||
Reference in New Issue
Block a user