/** * Given an object containing all the necessary data, * (defined by the form in mod_form.php) this function * will update an existing instance with new data. * * @param object $opencast Moodle {opencast} table DB record * * @return bool true if everything went well */ function opencast_update_instance($opencast) { global $DB; $opencast->id = $opencast->instance; $opencast->timemodified = time(); $scast = new mod_opencast_series(); $scast->fetch($opencast->id); //$scast->setCourseId(); // $scast->setLicense($opencast->license); // $scast->setDepartment($opencast->department); $scast->setAllowAnnotations($opencast->allow_annotations == OPENCAST_ANNOTATIONS); $scast->setIvt($opencast->is_ivt); if (!isset($opencast->inviting) || $opencast->is_ivt == false) { $opencast->inviting = false; } $scast->setInvitingPossible($opencast->inviting); // Existing channel $scast->setExtId($opencast->ext_id); $mod_opencast_update = $scast->update(); $opencast->ext_id = $scast->getExtId(); if (empty($opencast->timerestrict)) { $opencast->timeopen = 0; $opencast->timeclose = 0; } $moodle_update = $DB->update_record('opencast', $opencast); return $mod_opencast_update && $moodle_update; }
function validation($data, $files) { global $DB; $errors = parent::validation($data, $files); $scuser = new mod_opencast_user(); if ($data['channelnew'] == OPENCAST_CHANNEL_NEW) { if ($scuser->getExternalAccount() == '') { $errors['channelnew'] = get_string('user_notaai', 'opencast'); } if (!$data['newchannelname']) { $errors['newchannelname'] = get_string('required'); } } if ($data['channelnew'] == OPENCAST_CHANNEL_EXISTING) { // make sure we can be external_authority for this channel $scobj = new mod_opencast_series(); $ext_id = isset($data['ext_id']) ? $data['ext_id'] : $this->current->ext_id; $scobj->setExtId($ext_id); $sysaccount_extid = mod_opencast_series::getSysAccountOfUser(); // we must explicitly set $USER as a producer in $scobj or we won't be allowed to add his system_user $scobj->setOrganizationDomain(mod_opencast_series::getOrganizationByEmail($sysaccount_extid)); $scobj->setProducer($scuser->getExternalAccount()); // first, add SysAccount as producer (using $USER account), so we can use SysAccount later to make API calls // $scobj->addProducer($sysaccount_extid, false); $channelid = empty($this->_instance) ? $ext_id : $this->current->id; // if there already is one instance we must refer to it by its Moodle ID otherwise there could // be several records! $thechannel = $scobj->fetch($channelid, !empty($this->_instance), true); } else { if ($data['groupmode'] != NOGROUPS && !$data['is_ivt']) { $errors['groupmode'] = get_string('nogroups_withoutivt', 'opencast'); } } return $errors; }