Skip to content

Commit

Permalink
merged fix for MDL-6882
Browse files Browse the repository at this point in the history
  • Loading branch information
toyomoyo committed Oct 11, 2006
1 parent c5846d4 commit 89491db
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 34 deletions.
41 changes: 25 additions & 16 deletions calendar/event.php
Expand Up @@ -581,28 +581,37 @@ function validate_form(&$form, &$err) {

function calendar_add_event_allowed($courseid, $groupid, $userid) {
global $USER;

// can not be using guest account
if ($USER->username == "guest") {
return false;
}

$coursecontext = get_context_instance(CONTEXT_COURSE, $group->courseid);

if ($courseid == 0 && $groupid == 0 && $userid == $USER->id && has_capability('moodle/calendar:manageownentries', $context)) {
$sitecontext = get_context_instance(CONTEXT_SYSTEM, SITEID);
// if user has manageentries at site level, return true
if (has_capability('manageentries', $sitecontext)) {
return true;
}
else if($courseid == 0 && $groupid != 0) {
$group = get_record('groups', 'id', $groupid);

// editting userid account
if ($event->userid) {
if ($event->userid == $USER->id) {
return (has_capability('moodle/calendar:manageownentries', $sitecontext));
}
} else if ($event->groupid) {
$group = get_record('groups', 'id', $event->groupid);
if($group === false) {
return false;
}
$course = get_record('course', 'id', $courseid);
if ($course->groupmode == SEPARATE_GROUPS) {
return has_capability('moodle/calendar:manageentries', $context) && ismember($groupid);
} else {
return has_capability('moodle/calendar:manageentries', $context);
}
}

// this is ok because if you have this capability at course level, you should be able
// to edit group calendar too
// there is no need to check membership, because if you have this capability
// you will have a role in this group context
return has_capability('moodle/calendar:manageentries', get_context_instance(CONTEXT_GROUP, $group->id));
} else if ($event->courseid) {
return has_capability('moodle/calendar:manageentries', get_context_instance(CONTEXT_COURSE, $event->courseid));
}
else if($courseid != 0 && has_capability('moodle/calendar:manageentries', $context)) {
return true;
}

return false;
}

Expand Down
41 changes: 23 additions & 18 deletions calendar/lib.php
Expand Up @@ -1164,34 +1164,39 @@ function calendar_set_filters(&$courses, &$group, &$user, $courseeventsfrom = NU
}

function calendar_edit_event_allowed($event) {

global $USER;

$context = get_context_instance(CONTEXT_COURSE, $event->courseid);
// can not be using guest account
if ($USER->username == "guest") {
return false;
}

if(!has_capability('moodle/calendar:manageownentries', $context)) {
return false;
$sitecontext = get_context_instance(CONTEXT_SYSTEM, SITEID);
// if user has manageentries at site level, return true
if (has_capability('manageentries', $sitecontext)) {
return true;
}

if ($event->courseid != 0 && has_capability('moodle/calendar:manageentries', $context)) {
return true;
} else if ($event->courseid == 0 && $event->groupid != 0) {
// Group event
// editting userid account
if ($event->userid) {
if ($event->userid == $USER->id) {
return (has_capability('moodle/calendar:manageownentries', $sitecontext));
}
} else if ($event->groupid) {
$group = get_record('groups', 'id', $event->groupid);
if($group === false) {
return false;
}
$course = get_record('course', 'id', $event->courseid);
}

if ($course->groupmode == SEPARATE_GROUPS) {
return has_capability('moodle/calendar:manageownentries', $context) && ismember($event->groupid);
} else {
return has_capability('moodle/calendar:manageownentries', $context);
}
} else if ($event->courseid == 0 && $event->groupid == 0 && $event->userid == $USER->id && has_capability('moodle/calendar:manageownentries', $context)) {
// User event, owned by this user
return true;
// this is ok because if you have this capability at course level, you should be able
// to edit group calendar too
// there is no need to check membership, because if you have this capability
// you will have a role in this group context
return has_capability('moodle/calendar:manageentries', get_context_instance(CONTEXT_GROUP, $group->id));
} else if ($event->courseid) {
return has_capability('moodle/calendar:manageentries', get_context_instance(CONTEXT_COURSE, $event->courseid));
}

return false;
}

Expand Down

0 comments on commit 89491db

Please sign in to comment.