Index: lib/accesslib.php =================================================================== RCS file: /cvsroot/moodle/moodle/lib/accesslib.php,v retrieving revision 1.421.2.44 diff -u -r1.421.2.44 accesslib.php --- lib/accesslib.php 25 Jan 2008 00:54:35 -0000 1.421.2.44 +++ lib/accesslib.php 29 Jan 2008 18:18:33 -0000 @@ -501,6 +501,7 @@ ON ra.roleid=rc.roleid AND ra.contextid=ctx.id WHERE ctx.contextlevel=10 AND ra.userid={$userid} + AND ".get_role_assignment_validity_sql()." AND rc.capability IN ('moodle/site:config', 'moodle/legacy:admin', 'moodle/site:doanything') GROUP BY rc.capability HAVING SUM(rc.permission) > 0"; @@ -509,6 +510,18 @@ return $isadmin; } +/** + * Returns the SQL clause required to check that a role assignment is currently + * valid (within the time period). + * @param string $table Alias for table, default 'ra' + * @return string SQL to include in WHERE clause + */ +function get_role_assignment_validity_sql($table='ra') { + $now=time(); + //print " ($table.timestart < $now AND ($table.timeend >= $now OR $table.timeend=0 )) "; exit; + return " ($table.timestart < $now AND ($table.timeend >= $now OR $table.timeend=0 )) "; +} + function get_course_from_path ($path) { // assume that nothing is more than 1 course deep if (preg_match('!^(/.+)/\d+$!', $path, $matches)) { @@ -992,7 +1005,7 @@ JOIN {$CFG->prefix}context ctx ON (c.id=ctx.instanceid AND ctx.contextlevel=".CONTEXT_COURSE.") LEFT OUTER JOIN {$CFG->prefix}role_assignments ra - ON (ra.contextid=ctx.id AND ra.userid=$userid) + ON (ra.contextid=ctx.id AND ra.userid=$userid AND ".get_role_assignment_validity_sql().") LEFT OUTER JOIN {$CFG->prefix}role_capabilities rc ON (rc.contextid=ctx.id AND (rc.capability='$cap' $capany)) WHERE ra.id IS NOT NULL @@ -1247,6 +1260,7 @@ LEFT OUTER JOIN {$CFG->prefix}role_capabilities rc ON (rc.roleid=ra.roleid AND rc.contextid=ra.contextid) WHERE ra.userid = $userid AND ctx.contextlevel <= ".CONTEXT_COURSE." + AND ".get_role_assignment_validity_sql()." ORDER BY ctx.depth, ctx.path"; $rs = get_recordset_sql($sql); // @@ -1346,6 +1360,7 @@ JOIN {$CFG->prefix}role_capabilities rco ON (rco.roleid=ra.roleid AND rco.contextid=sctx.id) WHERE ra.userid = $userid + AND ".get_role_assignment_validity_sql()." AND sctx.contextlevel <= ".CONTEXT_COURSE." ORDER BY sctx.depth, sctx.path, ra.roleid"; @@ -1418,6 +1433,7 @@ JOIN {$CFG->prefix}context ctx ON ra.contextid=ctx.id WHERE ra.userid = $userid + AND ".get_role_assignment_validity_sql()." AND (ctx.path = '{$context->path}' OR ctx.path LIKE '{$context->path}/%') ORDER BY ctx.depth, ctx.path"; $rs = get_recordset_sql($sql); @@ -4063,6 +4079,7 @@ '.$CFG->prefix.'role r, '.$CFG->prefix.'context c WHERE ra.userid = '.$userid. + 'AND'.get_role_assignment_validity_sql(). ' AND ra.roleid = r.id AND ra.contextid = c.id AND '.$contexts . $hiddensql .