auth->user_prefs->get('interface')->get('colorsyntax')) { dcCore::app()->addBehavior('pluginsToolsHeadersV2', fn (bool $plugin): string => Page::jsLoadCodeMirror(dcCore::app()->auth->user_prefs->get('interface')->get('colorsyntax_theme'))); } self::$hidden_modules = (string) My::settings()->getGlobal('hidden_modules'); self::$distant_api_url = (string) My::settings()->getGlobal('distant_api_url'); if (empty($_POST)) { return true; } if (!empty($_POST['clear_cache'])) { Utils::clearCache(); Notices::AddSuccessNotice(__('Cache directory sucessfully cleared.')); } self::$hidden_modules = ''; foreach (explode(',', $_POST['hidden_modules']) as $hidden) { $hidden = trim($hidden); if (!empty($hidden)) { self::$hidden_modules .= trim($hidden) . ','; } } self::$distant_api_url = !empty($_POST['distant_api_url']) && is_string($_POST['distant_api_url']) ? $_POST['distant_api_url'] : Utils::DISTANT_API_URL; My::settings()->put('hidden_modules', self::$hidden_modules, 'string', 'Hidden modules from report', true, true); My::settings()->put('distant_api_url', self::$distant_api_url, 'string', 'Distant API report URL', true, true); Notices::AddSuccessNotice(__('Settings successfully updated.')); if (!empty($_POST['send_report'])) { Utils::sendReport(true); Notices::AddSuccessNotice(__('Report sent.')); } dcCore::app()->admin->url->redirect('admin.plugins', ['module' => My::id(), 'conf' => '1']); return true; } public static function render(): void { if (!self::status()) { return; } echo (new Div())->items([ (new Text('p', __('Settings are globals. Reports are by blog.')))->class('message'), (new Text('pre', sprintf(__('API %s'), Utils::DISTANT_API_VERSION))), (new Para())->items([ (new Label(__('Hidden modules:')))->for('hidden_modules'), (new Input('hidden_modules'))->class('maximal')->size(65)->maxlenght(255)->value(self::$hidden_modules), ]), (new Note())->class('form-note')->text(__('This is the comma separated list of plugins IDs and themes IDs to ignore in report.')), (new Para())->items([ (new Label(__('Distant API URL:')))->for('distant_api_url'), (new Input('distant_api_url'))->class('maximal')->size(65)->maxlenght(255)->value(self::$distant_api_url), ]), (new Note())->class('form-note')->text(__('This is the URL of the API to send report. Leave empty to reset value.')), (new Para())->items([ (new Checkbox('clear_cache', false))->value(1), (new Label(__('Clear reports cache directory'), Label::OUTSIDE_LABEL_AFTER))->for('clear_cache')->class('classic'), ]), (new Note())->class('form-note')->text(__('This deletes all blogs reports in cache.')), (new Para())->items([ (new Checkbox('send_report', false))->value(1), (new Label(__('Send report now'), Label::OUTSIDE_LABEL_AFTER))->for('send_report')->class('classic'), ]), (new Note())->class('form-note')->text(__('This sent report for current blog even if report exists in cache.')), ])->render(); $contents = Utils::getReport(); if (!empty($contents)) { echo (new Para())->items([ (new Label(__('Report that will be sent for this blog:')))->for('report_contents'), (new Textarea('report_contents', Html::escapeHTML($contents))) ->cols(165) ->rows(14) ->readonly(true) ->class('maximal'), ])->render() . ( !dcCore::app()->auth->user_prefs->get('interface')->get('colorsyntax') ? '' : Page::jsRunCodeMirror(My::id() . 'editor', 'report_contents', 'json', dcCore::app()->auth->user_prefs->get('interface')->get('colorsyntax_theme')) ); } } }