Esempio n. 1
0
 /**
  * get Clips
  *
  * @param array $filters
  *
  * @return bool|stdClass
  * @throws moodle_exception
  */
 public function getEvents($filters = [])
 {
     $url = '/events';
     $url .= '?limit=1000';
     $url .= '&withpublications=true';
     $url .= '&filter=series:' . $this->getExtId();
     $events = mod_opencast_apicall::sendRequest($url, 'GET', null, false, true, null, false, true);
     // dont run-as, we want all events, we'll be filtering later
     $count_events = count($events);
     for ($i = 0; $i < $count_events; $i++) {
         if ($events[$i]->processing_state != OPENCAST_PROCESSING_SUCCEEDED) {
             // do not dislay unprocessed events as part of the series
             unset($events[$i]);
             continue;
         }
         // then process filters
         foreach ($filters as $filter_key => $value) {
             if (!$value) {
                 // skip empty filters
                 continue;
             }
             if (in_array($filter_key, ['title', 'location'])) {
                 // TODO WAIT FOR SWITCH : check if works when "presenter" bug is resolved, cf. https://dokuwiki.toolbox.switch.ch/opencast-api/api_known_issues
                 // direct attributes: easy!
                 if (strpos($events[$i]->{$filter_key}, $value) === false) {
                     unset($events[$i]);
                     continue 2;
                 }
             } else {
                 if ($filter_key == 'ivt_owner') {
                     // we have to check this event's full ACLs
                     $event = new mod_opencast_event($this, $events[$i]->identifier);
                     $event->fetch();
                     if ($event->getOwner() != $value) {
                         unset($events[$i]);
                         continue 2;
                     }
                 } else {
                     if ($filter_key == 'withoutowner' && $value == 'true') {
                         $event = new mod_opencast_event($this, $events[$i]->identifier);
                         $event->fetch();
                         if ($event->getOwner() != '') {
                             unset($events[$i]);
                             continue 2;
                         }
                     } else {
                         if ($filter_key == 'presenter') {
                             $event = new mod_opencast_event($this, $events[$i]->identifier);
                             $event->fetch();
                             if (strpos($event->getPresenter(), $value) === false) {
                                 unset($events[$i]);
                                 continue 2;
                             }
                         }
                     }
                 }
             }
         }
     }
     return $events;
 }