if (!isset($allclips[$clip['identifier']])) {
     $mod_opencast_clip = new mod_opencast_event($sc_obj, $clip['identifier'], false, $opencast->id);
     $mod_opencast_clip->editdetails_page = '#opencast-inactive';
     $mod_opencast_clip->deleteclip_page = '#opencast-inactive';
     $mod_opencast_clip->clipmembers_page = '#opencast-inactive';
     if (has_capability('mod/opencast:isproducer', $context)) {
         // current USER is channel producer in Moodle (i.e. Teacher)
         if ($sc_obj->getIvt()) {
             $mod_opencast_clip->editdetails_page = '#some-page';
         }
         if ($sc_obj->isProducer($sc_user->getExternalAccount())) {
             // current user is actual SwitchCast producer
             $mod_opencast_clip->deleteclip_page = '#some-page';
         }
     }
     if ($mod_opencast_clip->getOwnerUserId() == $USER->id) {
         // current USER is clip owner
         if ($sc_obj->getIvt() && $sc_obj->getInvitingPossible()) {
             $mod_opencast_clip->clipmembers_page = '#some-page';
         }
     }
     $owner = $mod_opencast_clip->getOwner();
     unset($mod_opencast_clip->owner);
     // we don't want SWITCHaai uniqueID to appear in the JSON output
     if ($owner == '') {
         $mod_opencast_clip->owner_name = '';
     } else {
         $mod_opencast_clip->owner_name = 'SOME_NAME';
     }
     $allclips[$clip['identifier']] = $mod_opencast_clip;
 } else {
}
$return_course = new moodle_url('/course/view.php', ['id' => $course->id]);
if ($userid !== 0 && !($user = $DB->get_record('user', ['id' => $userid]))) {
    print_error('invaliduser', null, $return_channel);
}
if ($action !== '' && !in_array($action, ['add', 'remove'])) {
    print_error('invalidaction', null, $return_channel);
}
require_course_login($course, false, $cm);
if (!($opencast = opencast_get_opencast($cm->instance))) {
    print_error('invalidcoursemodule', null, $return_course);
}
$sc_obj = new mod_opencast_series();
$sc_obj->fetch($opencast->id);
$sc_clip = new mod_opencast_event($sc_obj, $clip_ext_id, false, $opencast->id);
if ($sc_clip->getOwnerUserId() != $USER->id) {
    print_error('invalidaction', null, $return_channel);
}
// Perform action ?
if ($action !== '' && $userid !== 0 && confirm_sesskey() && has_capability('mod/opencast:use', $context) && $opencast->inviting && ($USER->id == $sc_clip->getOwnerUserId() || has_capability('mod/opencast:isproducer', $context))) {
    /*
     * $action AND $userid are defined
     * and channel allows clip inviting
     * and $USER has rights and is clip owner
     */
    if ($action == 'add') {
        $sc_clip->addMember($userid, $course->id, $opencast->id);
    } else {
        if ($action == 'remove') {
            $sc_clip->removeMember($userid, $course->id, $opencast->id);
        }