/** * Set up the form definition. */ public function definition() { global $CFG; $mform =& $this->_form; $mform->addElement('header', 'setup', get_string('registration_options', 'lti')); // Tool Provider name. $mform->addElement('text', 'lti_registrationname', get_string('registrationname', 'lti')); $mform->setType('lti_registrationname', PARAM_TEXT); $mform->addHelpButton('lti_registrationname', 'registrationname', 'lti'); $mform->addRule('lti_registrationname', null, 'required', null, 'client'); // Registration URL. $mform->addElement('text', 'lti_registrationurl', get_string('registrationurl', 'lti'), array('size' => '64')); $mform->setType('lti_registrationurl', PARAM_TEXT); $mform->addHelpButton('lti_registrationurl', 'registrationurl', 'lti'); // LTI Capabilities. $options = array_keys(lti_get_capabilities()); natcasesort($options); $attributes = array( 'multiple' => 1, 'size' => min(count($options), 10) ); $mform->addElement('select', 'lti_capabilities', get_string('capabilities', 'lti'), array_combine($options, $options), $attributes); $mform->setType('lti_capabilities', PARAM_TEXT); $mform->addHelpButton('lti_capabilities', 'capabilities', 'lti'); // LTI Services. $services = lti_get_services(); $options = array(); foreach ($services as $service) { $options[$service->get_id()] = $service->get_name(); } $attributes = array( 'multiple' => 1, 'size' => min(count($options), 10) ); $mform->addElement('select', 'lti_services', get_string('services', 'lti'), $options, $attributes); $mform->setType('lti_services', PARAM_TEXT); $mform->addHelpButton('lti_services', 'services', 'lti'); $mform->addElement('hidden', 'toolproxyid'); $mform->setType('toolproxyid', PARAM_INT); $tab = optional_param('tab', '', PARAM_ALPHAEXT); $mform->addElement('hidden', 'tab', $tab); $mform->setType('tab', PARAM_ALPHAEXT); $courseid = optional_param('course', 1, PARAM_INT); $mform->addElement('hidden', 'course', $courseid); $mform->setType('course', PARAM_INT); // Add standard buttons, common to all modules. $this->add_action_buttons(); }
/** * Update the database with a tool proxy instance * * @param object $config Tool proxy definition * * @return int Record id number */ function lti_add_tool_proxy($config) { global $USER, $DB; $toolproxy = new \stdClass(); if (isset($config->lti_registrationname)) { $toolproxy->name = trim($config->lti_registrationname); } if (isset($config->lti_registrationurl)) { $toolproxy->regurl = trim($config->lti_registrationurl); } if (isset($config->lti_capabilities)) { $toolproxy->capabilityoffered = implode("\n", $config->lti_capabilities); } else { $toolproxy->capabilityoffered = implode("\n", array_keys(lti_get_capabilities())); } if (isset($config->lti_services)) { $toolproxy->serviceoffered = implode("\n", $config->lti_services); } else { $func = function ($s) { return $s->get_id(); }; $servicenames = array_map($func, lti_get_services()); $toolproxy->serviceoffered = implode("\n", $servicenames); } if (isset($config->toolproxyid) && !empty($config->toolproxyid)) { $toolproxy->id = $config->toolproxyid; if (!isset($toolproxy->state) || $toolproxy->state != LTI_TOOL_PROXY_STATE_ACCEPTED) { $toolproxy->state = LTI_TOOL_PROXY_STATE_CONFIGURED; $toolproxy->guid = random_string(); $toolproxy->secret = random_string(); } $id = lti_update_tool_proxy($toolproxy); } else { $toolproxy->state = LTI_TOOL_PROXY_STATE_CONFIGURED; $toolproxy->timemodified = time(); $toolproxy->timecreated = $toolproxy->timemodified; if (!isset($toolproxy->createdby)) { $toolproxy->createdby = $USER->id; } $toolproxy->guid = random_string(); $toolproxy->secret = random_string(); $id = $DB->insert_record('lti_tool_proxies', $toolproxy); } return $id; }
/** * Parse a custom parameter to replace any substitution variables * * @param object $toolproxy Tool proxy instance object * @param object $tool Tool instance object * @param array $params LTI launch parameters * @param string $value Custom parameter value * @param boolean $islti2 True if an LTI 2 tool is being launched * * @return Parsed value of custom parameter */ function lti_parse_custom_parameter($toolproxy, $tool, $params, $value, $islti2) { global $USER, $COURSE; if ($value) { if (substr($value, 0, 1) == '\\') { $value = substr($value, 1); } else { if (substr($value, 0, 1) == '$') { $value1 = substr($value, 1); $enabledcapabilities = lti_get_enabled_capabilities($tool); if (!$islti2 || in_array($value1, $enabledcapabilities)) { $capabilities = lti_get_capabilities(); if (array_key_exists($value1, $capabilities)) { $val = $capabilities[$value1]; if ($val) { if (substr($val, 0, 1) != '$') { $value = $params[$val]; } else { $valarr = explode('->', substr($val, 1), 2); $value = "{${$valarr[0]}->{$valarr[1]}}"; $value = str_replace('<br />', ' ', $value); $value = str_replace('<br>', ' ', $value); $value = format_string($value); } } } else { if ($islti2) { $val = $value; $services = lti_get_services(); foreach ($services as $service) { $service->set_tool_proxy($toolproxy); $value = $service->parse_value($val); if ($val != $value) { break; } } } } } } } } return $value; }