From 45c3dd8fce9d5d116d7df58013e90fe50c68ccee Mon Sep 17 00:00:00 2001 From: skodak Date: Mon, 4 May 2009 19:56:04 +0000 Subject: [PATCH] MDL-18124 course creators can not delete any courses in their category any more, only those they created at most one day ago --- course/lib.php | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/course/lib.php b/course/lib.php index 46a945d7100..f1e8587a67c 100644 --- a/course/lib.php +++ b/course/lib.php @@ -3204,30 +3204,30 @@ function get_section_name($format) { /** * Can the current user delete this course? + * Course creators have exception, + * 1 day after the creation they can sill delete the course. * @param int $courseid * @return boolean - * - * Exception here to fix MDL-7796. - * - * FIXME - * Course creators who can manage activities in the course - * shoule be allowed to delete the course. We do it this - * way because we need a quick fix to bring the functionality - * in line with what we had pre-roles. We can't give the - * default course creator role moodle/course:delete at - * CONTEXT_SYSTEM level because this will allow them to - * delete any course in the site. So we hard code this here - * for now. - * - * @author vyshane AT gmail.com */ function can_delete_course($courseid) { + global $USER; $context = get_context_instance(CONTEXT_COURSE, $courseid); - return ( has_capability('moodle/course:delete', $context) - || (has_capability('moodle/legacy:coursecreator', $context) - && has_capability('moodle/course:manageactivities', $context)) ); + if (has_capability('moodle/course:delete', $context)) { + return true; + } + + // hack: now try to find out if creator created this course recently (1 day) + if (!has_capability('moodle/course:create', $context)) { + return false; + } + + $since = time() - 60*60*24; + + $select = "module = 'course' AND action = 'new' AND userid = $USER->id AND url='view.php?id=$courseid' AND time > $since"; + + return record_exists_select('log', $select); } /**