X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fadmin.php;h=cc2256b73dd37ba36585f1cb78c4a16e0fa0e963;hb=41663c7592abe55a958632c3a48265e0a8544d2b;hp=9b8a054c423e4cb391d76aef7a08e7c35173f2bc;hpb=ad7b85e0ec516bd9a59419ad5aa9e216ecaa8a0a;p=friendica.git diff --git a/mod/admin.php b/mod/admin.php index 9b8a054c42..cc2256b73d 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -19,12 +19,14 @@ use Friendica\Core\System; use Friendica\Core\Theme; use Friendica\Core\Update; use Friendica\Core\Worker; +use Friendica\Core\StorageManager; use Friendica\Database\DBA; use Friendica\Database\DBStructure; use Friendica\Model\Contact; use Friendica\Model\Item; use Friendica\Model\Register; use Friendica\Model\User; +use Friendica\Module; use Friendica\Module\Login; use Friendica\Module\Tos; use Friendica\Util\Arrays; @@ -32,6 +34,7 @@ use Friendica\Util\DateTimeFormat; use Friendica\Util\Network; use Friendica\Util\Strings; use Friendica\Util\Temporal; +use Psr\Log\LogLevel; /** * Sets the current theme for theme settings pages. @@ -61,7 +64,8 @@ function admin_init(App $a) * return the HTML for the pages of the admin panel. * * @param App $a - * + * @throws ImagickException + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_post(App $a) { @@ -160,6 +164,7 @@ function admin_post(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_content(App $a) { @@ -300,8 +305,7 @@ function admin_content(App $a) if ($a->isAjax()) { echo $o; - killme(); - return ''; + exit(); } else { return $o; } @@ -312,6 +316,7 @@ function admin_content(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_tos(App $a) { @@ -334,6 +339,7 @@ function admin_page_tos(App $a) * @brief Process send data from Admin TOS Page * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_tos_post(App $a) { @@ -366,6 +372,7 @@ function admin_page_tos_post(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_blocklist(App $a) { @@ -406,6 +413,7 @@ function admin_page_blocklist(App $a) * @brief Process send data from Admin Blocklist Page * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_blocklist_post(App $a) { @@ -450,6 +458,8 @@ function admin_page_blocklist_post(App $a) * @brief Process data send by the contact block admin page * * @param App $a + * @throws ImagickException + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_contactblock_post(App $a) { @@ -482,6 +492,7 @@ function admin_page_contactblock_post(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_contactblock(App $a) { @@ -534,6 +545,7 @@ function admin_page_contactblock(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_deleteitem(App $a) { @@ -558,6 +570,7 @@ function admin_page_deleteitem(App $a) * URLs like the full /display URL to make the process more easy for the admin. * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_deleteitem_post(App $a) { @@ -597,6 +610,7 @@ function admin_page_deleteitem_post(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_federation(App $a) { @@ -783,6 +797,7 @@ function admin_page_federation(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_queue(App $a) { @@ -825,7 +840,9 @@ function admin_page_queue(App $a) * The returned string holds the content of the page. * * @param App $a + * @param $deferred * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_workerqueue(App $a, $deferred) { @@ -875,6 +892,7 @@ function admin_page_workerqueue(App $a, $deferred) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_summary(App $a) { @@ -993,6 +1011,7 @@ function admin_page_summary(App $a) * @brief Process send data from Admin Site Page * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_site_post(App $a) { @@ -1171,6 +1190,43 @@ function admin_page_site_post(App $a) $relay_user_tags = !empty($_POST['relay_user_tags']); $active_panel = (!empty($_POST['active_panel']) ? "#" . Strings::escapeTags(trim($_POST['active_panel'])) : ''); + /** + * @var $storagebackend \Friendica\Model\Storage\IStorage + */ + $storagebackend = Strings::escapeTags(trim(defaults($_POST, 'storagebackend', ''))); + StorageManager::setBackend($storagebackend); + + // save storage backend form + if (!is_null($storagebackend) && $storagebackend != "") { + $storage_opts = $storagebackend::getOptions(); + $storage_form_prefix=preg_replace('|[^a-zA-Z0-9]|' ,'', $storagebackend); + $storage_opts_data = []; + foreach($storage_opts as $name => $info) { + $fieldname = $storage_form_prefix . '_' . $name; + switch ($info[0]) { // type + case 'checkbox': + case 'yesno': + $value = !empty($_POST[$fieldname]); + break; + default: + $value = defaults($_POST, $fieldname, ''); + } + $storage_opts_data[$name] = $value; + } + unset($name); + unset($info); + + $storage_form_errors = $storagebackend::saveOptions($storage_opts_data); + if (count($storage_form_errors)) { + foreach($storage_form_errors as $name => $err) { + notice('Storage backend, ' . $storage_opts[$name][1] . ': ' . $err); + } + $a->internalRedirect('admin/site' . $active_panel); + } + } + + + // Has the directory url changed? If yes, then resubmit the existing profiles there if ($global_directory != Config::get('system', 'directory') && ($global_directory != '')) { Config::set('system', 'directory', $global_directory); @@ -1244,7 +1300,7 @@ function admin_page_site_post(App $a) Config::set('system', 'banner', $banner); } - if ($info == "") { + if (empty($info)) { Config::delete('config', 'info'); } else { Config::set('config', 'info', $info); @@ -1363,6 +1419,7 @@ function admin_page_site_post(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_site(App $a) { @@ -1454,9 +1511,9 @@ function admin_page_site(App $a) /* Register policy */ $register_choices = [ - REGISTER_CLOSED => L10n::t("Closed"), - REGISTER_APPROVE => L10n::t("Requires approval"), - REGISTER_OPEN => L10n::t("Open") + Module\Register::CLOSED => L10n::t("Closed"), + Module\Register::APPROVE => L10n::t("Requires approval"), + Module\Register::OPEN => L10n::t("Open") ]; $ssl_choices = [ @@ -1482,6 +1539,36 @@ function admin_page_site(App $a) $optimize_max_tablesize = -1; } + /* storage backend */ + $storage_backends = StorageManager::listBackends(); + /** + * @var $storage_current_backend \Friendica\Model\Storage\IStorage + */ + $storage_current_backend = StorageManager::getBackend(); + + $storage_backends_choices = [ + '' => L10n::t('None') + ]; + foreach($storage_backends as $name=>$class) { + $storage_backends_choices[$class] = $name; + } + unset($storage_backends); + + // build storage config form, + $storage_form_prefix=preg_replace('|[^a-zA-Z0-9]|' ,'', $storage_current_backend); + + $storage_form = []; + if (!is_null($storage_current_backend) && $storage_current_backend != "") { + foreach($storage_current_backend::getOptions() as $name => $info) { + $type = $info[0]; + $info[0] = $storage_form_prefix . '_' . $name; + $info['type'] = $type; + $info['field'] = 'field_' . $type . '.tpl'; + $storage_form[$name] = $info; + } + } + + $t = Renderer::getMarkupTemplate('admin/site.tpl'); return Renderer::replaceMacros($t, [ '$title' => L10n::t('Administration'), @@ -1515,6 +1602,9 @@ function admin_page_site(App $a) '$force_ssl' => ['force_ssl', L10n::t("Force SSL"), Config::get('system', 'force_ssl'), L10n::t("Force all Non-SSL requests to SSL - Attention: on some systems it could lead to endless loops.")], '$hide_help' => ['hide_help', L10n::t("Hide help entry from navigation menu"), Config::get('system', 'hide_help'), L10n::t("Hides the menu entry for the Help pages from the navigation menu. You can still access it calling /help directly.")], '$singleuser' => ['singleuser', L10n::t("Single user instance"), Config::get('system', 'singleuser', '---'), L10n::t("Make this instance multi-user or single-user for the named user"), $user_names], + + '$storagebackend' => ['storagebackend', L10n::t("File storage backend"), $storage_current_backend, L10n::t('Backend used to store uploaded files data'), $storage_backends_choices], + '$storageform' => $storage_form, '$maximagesize' => ['maximagesize', L10n::t("Maximum image size"), Config::get('system', 'maximagesize'), L10n::t("Maximum size in bytes of uploaded images. Default is 0, which means no limits.")], '$maximagelength' => ['maximagelength', L10n::t("Maximum image length"), Config::get('system', 'max_image_length'), L10n::t("Maximum length in pixels of the longest side of uploaded images. Default is -1, which means no limits.")], '$jpegimagequality' => ['jpegimagequality', L10n::t("JPEG image quality"), Config::get('system', 'jpeg_quality'), L10n::t("Uploaded JPEGS will be saved at this quality setting [0-100]. Default is 100, which is full quality.")], @@ -1613,7 +1703,8 @@ function admin_page_site(App $a) * * @param App $a * @return string - * */ + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + */ function admin_page_dbsync(App $a) { $o = ''; @@ -1703,6 +1794,7 @@ function admin_page_dbsync(App $a) * @brief Process data send by Users admin page * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_users_post(App $a) { @@ -1820,6 +1912,7 @@ function admin_page_users_post(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_users(App $a) { @@ -1897,17 +1990,18 @@ function admin_page_users(App $a) $adminlist = explode(",", str_replace(" ", "", Config::get('config', 'admin_email'))); $_setup_users = function ($e) use ($adminlist) { $page_types = [ - Contact::PAGE_NORMAL => L10n::t('Normal Account Page'), - Contact::PAGE_SOAPBOX => L10n::t('Soapbox Page'), - Contact::PAGE_COMMUNITY => L10n::t('Public Forum'), - Contact::PAGE_FREELOVE => L10n::t('Automatic Friend Page'), - Contact::PAGE_PRVGROUP => L10n::t('Private Forum') + User::PAGE_FLAGS_NORMAL => L10n::t('Normal Account Page'), + User::PAGE_FLAGS_SOAPBOX => L10n::t('Soapbox Page'), + User::PAGE_FLAGS_COMMUNITY => L10n::t('Public Forum'), + User::PAGE_FLAGS_FREELOVE => L10n::t('Automatic Friend Page'), + User::PAGE_FLAGS_PRVGROUP => L10n::t('Private Forum') ]; $account_types = [ - Contact::ACCOUNT_TYPE_PERSON => L10n::t('Personal Page'), - Contact::ACCOUNT_TYPE_ORGANISATION => L10n::t('Organisation Page'), - Contact::ACCOUNT_TYPE_NEWS => L10n::t('News Page'), - Contact::ACCOUNT_TYPE_COMMUNITY => L10n::t('Community Forum') + User::ACCOUNT_TYPE_PERSON => L10n::t('Personal Page'), + User::ACCOUNT_TYPE_ORGANISATION => L10n::t('Organisation Page'), + User::ACCOUNT_TYPE_NEWS => L10n::t('News Page'), + User::ACCOUNT_TYPE_COMMUNITY => L10n::t('Community Forum'), + User::ACCOUNT_TYPE_RELAY => L10n::t('Relay'), ]; $e['page_flags_raw'] = $e['page-flags']; @@ -2018,6 +2112,7 @@ function admin_page_users(App $a) * @param App $a * @param array $addons_admin A list of admin addon names * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_addons(App $a, array $addons_admin) { @@ -2223,6 +2318,7 @@ function rebuild_theme_table($themes) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_themes(App $a) { @@ -2393,6 +2489,7 @@ function admin_page_themes(App $a) * @brief Prosesses data send by Logs admin page * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_logs_post(App $a) { @@ -2401,7 +2498,7 @@ function admin_page_logs_post(App $a) $logfile = (!empty($_POST['logfile']) ? Strings::escapeTags(trim($_POST['logfile'])) : ''); $debugging = !empty($_POST['debugging']); - $loglevel = (!empty($_POST['loglevel']) ? intval(trim($_POST['loglevel'])) : 0); + $loglevel = defaults($_POST, 'loglevel', LogLevel::ERROR); Config::set('system', 'logfile', $logfile); Config::set('system', 'debugging', $debugging); @@ -2428,16 +2525,16 @@ function admin_page_logs_post(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_logs(App $a) { $log_choices = [ - Logger::WARNING => 'Warning', - Logger::INFO => 'Info', - Logger::TRACE => 'Trace', - Logger::DEBUG => 'Debug', - Logger::DATA => 'Data', - Logger::ALL => 'All' + LogLevel::ERROR => 'Error', + LogLevel::WARNING => 'Warning', + LogLevel::NOTICE => 'Notice', + LogLevel::INFO => 'Info', + LogLevel::DEBUG => 'Debug', ]; if (ini_get('log_errors')) { @@ -2484,6 +2581,7 @@ function admin_page_logs(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_viewlogs(App $a) { @@ -2527,6 +2625,7 @@ function admin_page_viewlogs(App $a) * @brief Prosesses data send by the features admin page * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_features_post(App $a) { @@ -2574,6 +2673,7 @@ function admin_page_features_post(App $a) * * @param App $a * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function admin_page_features(App $a) {