Ignore:
Timestamp:
May 2, 2016, 12:09:23 PM (3 years ago)
Author:
jrpelegrina
Message:

Updated to moodle 3.0.3

File:
1 edited

Legend:

Unmodified
Added
Removed
  • moodle/trunk/fuentes/calendar/externallib.php

    r136 r1331  
    143143                                             VALUE_DEFAULT, 0, NULL_ALLOWED),
    144144                                    'timeend' => new external_value(PARAM_INT,
    145                                              "Time to which the events should be returned",
    146                                              VALUE_DEFAULT, time(), NULL_ALLOWED),
     145                                             "Time to which the events should be returned. We treat 0 and null as no end",
     146                                             VALUE_DEFAULT, 0, NULL_ALLOWED),
    147147                                    'ignorehidden' => new external_value(PARAM_BOOL,
    148148                                             "Ignore hidden events or not",
     
    174174        // Let us findout courses that we can return events from.
    175175        if (!$hassystemcap) {
    176             $courses = enrol_get_my_courses();
     176            $courses = enrol_get_my_courses('id');
    177177            $courses = array_keys($courses);
    178178            foreach ($params['events']['courseids'] as $id) {
    179                 if (in_array($id, $courses)) {
     179               try {
     180                    $context = context_course::instance($id);
     181                    self::validate_context($context);
    180182                    $funcparam['courses'][] = $id;
    181                 } else {
    182                     $warnings[] = array('item' => $id, 'warningcode' => 'nopermissions', 'message' => 'you do not have permissions to access this course');
     183                } catch (Exception $e) {
     184                    $warnings[] = array(
     185                        'item' => 'course',
     186                        'itemid' => $id,
     187                        'warningcode' => 'nopermissions',
     188                        'message' => 'No access rights in course context '.$e->getMessage().$e->getTraceAsString()
     189                    );
    183190                }
    184191            }
     
    216223        }
    217224
     225        // We treat 0 and null as no end.
     226        if (empty($params['options']['timeend'])) {
     227            $params['options']['timeend'] = PHP_INT_MAX;
     228        }
     229
     230        // Event list does not check visibility and permissions, we'll check that later.
    218231        $eventlist = calendar_get_events($params['options']['timestart'], $params['options']['timeend'], $funcparam['users'], $funcparam['groups'],
    219232                $funcparam['courses'], true, $params['options']['ignorehidden']);
     233
    220234        // WS expects arrays.
    221235        $events = array();
    222         foreach ($eventlist as $id => $event) {
    223             $events[$id] = (array) $event;
    224         }
    225236
    226237        // We need to get events asked for eventids.
    227         $eventsbyid = calendar_get_events_by_id($params['events']['eventids']);
    228         foreach ($eventsbyid as $eventid => $eventobj) {
     238        if ($eventsbyid = calendar_get_events_by_id($params['events']['eventids'])) {
     239            $eventlist += $eventsbyid;
     240        }
     241
     242        foreach ($eventlist as $eventid => $eventobj) {
    229243            $event = (array) $eventobj;
    230             if (isset($events[$eventid])) {
    231                    continue;
    232             }
     244
    233245            if ($hassystemcap) {
    234246                // User can see everything, no further check is needed.
Note: See TracChangeset for help on using the changeset viewer.