extInstance($ext); if (!$instance) { return; } $meta = MTTExtension::extMetaInfo($ext); if (!$meta || !isset($meta['name'])) { return; } $data = $instance->settingsPage(); $lang = Lang::instance(); $nameKey = 'ext.'. $ext. '.name'; if ($lang->hasKey($nameKey)) { $name = htmlspecialchars($lang->get($nameKey)); } else { $name = htmlspecialchars($meta['name']); } $escapedExt = htmlspecialchars($ext); $e = function($s) use($lang) { return htmlspecialchars($lang->get($s)); }; $formButtons = ''; if ($instance->settingsPageType() == 0) { $formButtons = << EOD; } $data = << $name
$data $formButtons
EOD; $this->response->htmlContent($data); } /** * Save extension settings * @return void * @throws Exception */ function put(string $ext) { checkWriteAccess(); /** @var MTTExtension|MTTExtensionSettingsInterface $instance */ $instance = $this->extInstance($ext); if (!$instance) { return; } //$userError = ''; $saved = $instance->saveSettings($this->req->jsonBody ?? [], $userError); $a = [ 'saved' => (int)$saved ]; if ($userError) { $a['msg'] = $userError; } $this->response->data = $a; } private function extInstance(string $ext): ?MTTExtensionSettingsInterface { $instance = MTTExtensionLoader::extensionInstance($ext); if (!$instance) { $this->response->data = [ 'msg' => "Unknown extension" ]; $this->response->code = 404; return null; } if (! ($instance instanceof MTTExtensionSettingsInterface) ) { $this->response->data = [ 'msg' => "No settings page for extension" ]; $this->response->code = 500; return null; } return $instance; } }