/** * Core function for creation of form defined in block_panopto_edit_form class */ protected function specific_definition($mform) { global $COURSE, $CFG; // Construct the Panopto data proxy object. $panoptodata = new panopto_data($COURSE->id); if (!empty($panoptodata->servername) && !empty($panoptodata->instancename) && !empty($panoptodata->applicationkey)) { $mform->addElement('header', 'configheader', get_string('block_edit_header', 'block_panopto')); $params = new stdClass(); $params->course_id = $COURSE->id; $params->return_url = $_SERVER['REQUEST_URI']; $querystring = http_build_query($params, '', '&'); $provisionurl = "{$CFG->wwwroot}/blocks/panopto/provision_course.php?" . $querystring; $addtopanopto = get_string('add_to_panopto', 'block_panopto'); $or = get_string('or', 'block_panopto'); $mform->addElement('html', "<a href='{$provisionurl}'>{$addtopanopto}</a><br><br>-- {$or} --<br><br>"); $courselist = $panoptodata->get_course_options(); $mform->addElement('selectgroups', 'config_course', get_string('existing_course', 'block_panopto'), $courselist['courses']); $mform->setDefault('config_course', $courselist['selected']); // Set course context to get roles. $context = context_course::instance($COURSE->id); // Get current role mappings. $currentmappings = $panoptodata->get_course_role_mappings($COURSE->id); // Get roles that current user may assign in this course. $currentcourseroles = get_assignable_roles($context, $rolenamedisplay = ROLENAME_ALIAS, $withusercounts = false, $user = null); while ($role = current($currentcourseroles)) { $rolearray[key($currentcourseroles)] = $currentcourseroles[key($currentcourseroles)]; next($currentcourseroles); } $mform->addElement('header', 'rolemapheader', get_string('role_map_header', 'block_panopto')); $mform->addElement('html', get_string('role_map_info_text', 'block_panopto')); $createselect = $mform->addElement('select', 'config_creator', get_string('creator', 'block_panopto'), $rolearray, null); $createselect->setMultiple(true); // Set default selected to previous setting. if (!empty($currentmappings['creator'])) { $createselect->setSelected($currentmappings['creator']); } $pubselect = $mform->addElement('select', 'config_publisher', get_string('publisher', 'block_panopto'), $rolearray, null); $pubselect->setMultiple(true); // Set default selected to previous setting. if (!empty($currentmappings['publisher'])) { $pubselect->setSelected($currentmappings['publisher']); } } else { $mform->addElement('static', 'error', '', get_string('block_edit_error', 'block_panopto')); } }
/** * Called when an role has been removed. */ public static function roledeleted(\core\event\role_unassigned $event) { global $CFG; if (\panopto_data::get_panopto_course_id($event->courseid) === false || $CFG->version < $requiredVersion) { return; } $task = new \block_panopto\task\update_user(); $task->set_custom_data(array('courseid' => $event->courseid, 'relateduserid' => $event->relateduserid, 'contextid' => $event->contextid, 'eventtype' => "role")); if ($CFG->block_panopto_async_tasks) { \core\task\manager::queue_adhoc_task($task); } else { $task->execute(); } }
$courses = $data->courses; $selectedserver = $aserverarray[$data->servers]; $selectedkey = $appkeyarray[$data->servers]; $CFG->servername = $selectedserver; $CFG->appkey = $selectedkey; } $manageblocks = new moodle_url('/admin/blocks.php'); $panoptosettings = new moodle_url('/admin/settings.php?section=blocksettingpanopto'); $PAGE->navbar->add(get_string('blocks'), $manageblocks); $PAGE->navbar->add(get_string('pluginname', 'block_panopto'), $panoptosettings); } $PAGE->navbar->add($provisiontitle, new moodle_url($PAGE->url)); echo $OUTPUT->header(); if ($courses) { $provisioned = array(); $panoptodata = new panopto_data(null); foreach ($courses as $courseid) { if (empty($courseid)) { continue; } // Set the current Moodle course to retrieve info for / provision. $panoptodata->moodlecourseid = $courseid; // If an application key and server name are pre-set (happens when provisioning from multi-select page) use those, otherwise retrieve // values from the db. if (isset($selectedserver)) { $panoptodata->servername = $selectedserver; } else { $panoptodata->servername = $panoptodata->get_panopto_servername($panoptodata->moodlecourseid); } if (isset($selectedkey)) { $panoptodata->applicationkey = $selectedkey;
try { require_login(); require_sesskey(); header('Content-Type: text/html; charset=utf-8'); global $CFG; $courseid = $_POST["courseid"]; // Sync role mapping. In case this is the first time block is running we need to load old settings from db. // They will be the default values if this is the first time running. $mapping = panopto_data::get_course_role_mappings($courseid); panopto_data::set_course_role_permissions($courseid, $mapping['publisher'], $mapping['creator']); $content = new stdClass(); //Initialize $content->text to an empty string here to avoid trying to append to it before //it has been initialized and throwing a warning. Bug 33163 $content->text = ""; // Construct the Panopto data proxy object. $panoptodata = new panopto_data($courseid); if (empty($panoptodata->servername) || empty($panoptodata->instancename) || empty($panoptodata->applicationkey)) { $content->text = get_string('unprovisioned', 'block_panopto') . "\n <br/><br/>\n <a href='{$CFG->wwwroot}/blocks/panopto/provision_course_internal.php?id={$courseid}'>" . get_string('provision_course_link_text', 'block_panopto') . "</a>"; $content->footer = ""; return $content; } try { if (!$panoptodata->sessiongroupid) { $content->text = get_string('no_course_selected', 'block_panopto'); } else { // Get course info from SOAP service. $courseinfo = $panoptodata->get_course(); // Panopto course was deleted, or an exception was thrown while retrieving course data. if ($courseinfo->Access == "Error") { $content->text .= "<span class='error'>" . get_string('error_retrieving', 'block_panopto') . "</span>"; } else {
/** * Gives selected capabilities to specified roles. */ public static function set_course_role_permissions($courseid, $publisherroles, $creatorroles) { $coursecontext = context_course::instance($courseid); // Clear capabilities from all of course's roles to be reassigned. self::clear_capabilities_for_course($courseid); foreach ($publisherroles as $role) { if (isset($role) && trim($role) !== '') { assign_capability('block/panopto:provision_aspublisher', CAP_ALLOW, $role, $coursecontext, $overwrite = false); } } foreach ($creatorroles as $role) { if (isset($role) && trim($role) !== '') { assign_capability('block/panopto:provision_asteacher', CAP_ALLOW, $role, $coursecontext, $overwrite = false); } } // Mark dirty (moodle standard for capability changes at context level). $coursecontext->mark_dirty(); panopto_data::set_course_role_mappings($courseid, $publisherroles, $creatorroles); }