X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fadmin.php;h=841aaa7871463cc9e16bc3d108ece4f2384465e6;hb=db2d0e009503539b134fd43837d440028d5b8de7;hp=b9c714f3773d531d1f4aca9ffa410395d842d11b;hpb=350887f8923300a99cb403b0cfea5b14ce4efe8c;p=friendica.git diff --git a/mod/admin.php b/mod/admin.php index b9c714f377..841aaa7871 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -32,13 +32,12 @@ function admin_post(&$a){ // do not allow a page manager to access the admin panel at all. - if(x($_SESSION,'submanage') && intval($_SESSION['submanage'])) + if (x($_SESSION,'submanage') && intval($_SESSION['submanage'])) { return; - - + } // urls - if($a->argc > 1) { + if ($a->argc > 1) { switch ($a->argv[1]){ case 'site': admin_page_site_post($a); @@ -134,8 +133,9 @@ function admin_content(&$a) { return login(false); } - if(x($_SESSION,'submanage') && intval($_SESSION['submanage'])) + if (x($_SESSION,'submanage') && intval($_SESSION['submanage'])) { return ""; + } // APC deactivated, since there are problems with PHP 5.5 //if (function_exists("apc_delete")) { @@ -285,20 +285,27 @@ function admin_page_federation(&$a) { // get a total count for the platform, the name and version of the // highest version and the protocol tpe $c = qu('SELECT COUNT(*) AS `total`, `platform`, `network`, `version` FROM `gserver` - WHERE `platform` LIKE "%s" AND `last_contact` > `last_failure` AND `version` != "" + WHERE `platform` LIKE "%s" AND `last_contact` >= `last_failure` ORDER BY `version` ASC;', $p); $total = $total + $c[0]['total']; // what versions for that platform do we know at all? // again only the active nodes $v = qu('SELECT COUNT(*) AS `total`, `version` FROM `gserver` - WHERE `last_contact` > `last_failure` AND `platform` LIKE "%s" AND `version` != "" + WHERE `last_contact` >= `last_failure` AND `platform` LIKE "%s" GROUP BY `version` ORDER BY `version`;', $p); // // clean up version numbers // + // some platforms do not provide version information, add a unkown there + // to the version string for the displayed list. + foreach ($v as $key => $value) { + if ($v[$key]['version'] == '') { + $v[$key] = array('total'=>$v[$key]['total'], 'version'=>t('unknown')); + } + } // in the DB the Diaspora versions have the format x.x.x.x-xx the last // part (-xx) should be removed to clean up the versions from the "head // commit" information and combined into a single entry for x.x.x.x @@ -369,7 +376,7 @@ function admin_page_federation(&$a) { '$counts' => $counts, '$version' => FRIENDICA_VERSION, '$legendtext' => sprintf(t('Currently this node is aware of %d nodes from the following platforms:'), $total), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => App::get_baseurl(), )); } @@ -421,6 +428,21 @@ function admin_page_queue(&$a) { * @return string */ function admin_page_summary(&$a) { + global $db; + // are there MyISAM tables in the DB? If so, trigger a warning message + $r = q("SELECT `engine` FROM `information_schema`.`tables` WHERE `engine` = 'myisam' AND `table_schema` = '%s' LIMIT 1", + dbesc($db->database_name())); + $showwarning = false; + $warningtext = array(); + if (dbm::is_result($r)) { + $showwarning = true; + $warningtext[] = sprintf(t('Your DB still runs with MyISAM tables. You should change the engine type to InnoDB. As Friendica will use InnoDB only features in the future, you should change this! See here for a guide that may be helpful converting the table engines. You may also use the convert_innodb.sql in the /util directory of your Friendica installation.
'), 'https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html'); + } + // MySQL >= 5.7.4 doesn't support the IGNORE keyword in ALTER TABLE statements + if ((version_compare($db->server_info(), '5.7.4') >= 0) AND + !(strpos($db->server_info(), 'MariaDB') !== false)) { + $warningtext[] = t('You are using a MySQL version which does not support all features that Friendica uses. You should consider switching to MariaDB.'); + } $r = q("SELECT `page-flags`, COUNT(`uid`) AS `count` FROM `user` GROUP BY `page-flags`"); $accounts = array( array(t('Normal Account'), 0), @@ -467,11 +489,13 @@ function admin_page_summary(&$a) { '$accounts' => $accounts, '$pending' => array(t('Pending registrations'), $pending), '$version' => array(t('Version'), FRIENDICA_VERSION), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => App::get_baseurl(), '$platform' => FRIENDICA_PLATFORM, '$codename' => FRIENDICA_CODENAME, '$build' => get_config('system','build'), - '$plugins' => array(t('Active plugins'), $a->plugins) + '$plugins' => array(t('Active plugins'), $a->plugins), + '$showwarning' => $showwarning, + '$warningtext' => $warningtext )); } @@ -503,7 +527,7 @@ function admin_page_site_post(&$a) { * send relocate for every local user * */ - $old_url = $a->get_baseurl(true); + $old_url = App::get_baseurl(true); // Generate host names for relocation the addresses in the format user@address.tld $new_host = str_replace("http://", "@", normalise_link($new_url)); @@ -645,6 +669,7 @@ function admin_page_site_post(&$a) { $worker_queues = ((x($_POST,'worker_queues')) ? intval($_POST['worker_queues']) : 4); $worker_dont_fork = ((x($_POST,'worker_dont_fork')) ? True : False); $worker_fastlane = ((x($_POST,'worker_fastlane')) ? True : False); + $worker_frontend = ((x($_POST,'worker_frontend')) ? True : False); if($a->get_path() != "") $diaspora_enabled = false; @@ -795,6 +820,7 @@ function admin_page_site_post(&$a) { set_config('system','worker_queues', $worker_queues); set_config('system','worker_dont_fork', $worker_dont_fork); set_config('system','worker_fastlane', $worker_fastlane); + set_config('system','frontend_worker', $worker_frontend); if($rino==2 and !function_exists('mcrypt_create_iv')) { notice(t("RINO2 needs mcrypt php extension to work.")); @@ -935,7 +961,7 @@ function admin_page_site(&$a) { '$performance' => t('Performance'), '$worker_title' => t('Worker'), '$relocate'=> t('Relocate - WARNING: advanced function. Could make this server unreachable.'), - '$baseurl' => $a->get_baseurl(true), + '$baseurl' => App::get_baseurl(true), // name, label, value, help string, extra data... '$sitename' => array('sitename', t("Site name"), $a->config['sitename'],''), '$hostname' => array('hostname', t("Host name"), $a->config['hostname'], ""), @@ -1017,7 +1043,7 @@ function admin_page_site(&$a) { '$old_pager' => array('old_pager', t("Enable old style pager"), get_config('system','old_pager'), t("The old style pager has page numbers but slows down massively the page speed.")), '$only_tag_search' => array('only_tag_search', t("Only search in tags"), get_config('system','only_tag_search'), t("On large systems the text search can slow down the system extremely.")), - '$relocate_url' => array('relocate_url', t("New base url"), $a->get_baseurl(), t("Change base url for this server. Sends relocate message to all DFRN contacts of all users.")), + '$relocate_url' => array('relocate_url', t("New base url"), App::get_baseurl(), t("Change base url for this server. Sends relocate message to all DFRN contacts of all users.")), '$rino' => array('rino', t("RINO Encryption"), intval(get_config('system','rino_encrypt')), t("Encryption layer between nodes."), array("Disabled", "RINO1 (deprecated)", "RINO2")), '$embedly' => array('embedly', t("Embedly API key"), get_config('system','embedly'), t("Embedly is used to fetch additional data for web pages. This is an optional parameter.")), @@ -1026,6 +1052,7 @@ function admin_page_site(&$a) { '$worker_queues' => array('worker_queues', t("Maximum number of parallel workers"), get_config('system','worker_queues'), t("On shared hosters set this to 2. On larger systems, values of 10 are great. Default value is 4.")), '$worker_dont_fork' => array('worker_dont_fork', t("Don't use 'proc_open' with the worker"), get_config('system','worker_dont_fork'), t("Enable this if your system doesn't allow the use of 'proc_open'. This can happen on shared hosters. If this is enabled you should increase the frequency of poller calls in your crontab.")), '$worker_fastlane' => array('worker_fastlane', t("Enable fastlane"), get_config('system','worker_fastlane'), t("When enabed, the fastlane mechanism starts an additional worker if processes with higher priority are blocked by processes of lower priority.")), + '$worker_frontend' => array('worker_frontend', t('Enable frontend worker'), get_config('system','frontend_worker'), t('When enabled the Worker process is triggered when backend access is performed (e.g. messages being delivered). On smaller sites you might want to call yourdomain.tld/worker on a regular basis via an external cron job. You should only enable this option if you cannot utilize cron/scheduled jobs on your server. The worker background process needs to be activated for this.')), '$form_security_token' => get_form_security_token("admin_site") @@ -1094,27 +1121,27 @@ function admin_page_dbsync(&$a) { $failed = array(); $r = q("SELECT `k`, `v` FROM `config` WHERE `cat` = 'database' "); - if(count($r)) { - foreach($r as $rr) { + if (dbm::is_result($r)) { + foreach ($r as $rr) { $upd = intval(substr($rr['k'],7)); if($upd < 1139 || $rr['v'] === 'success') continue; $failed[] = $upd; } } - if(! count($failed)) { + if (! count($failed)) { $o = replace_macros(get_markup_template('structure_check.tpl'),array( - '$base' => $a->get_baseurl(true), + '$base' => App::get_baseurl(true), '$banner' => t('No failed updates.'), - '$check' => t('Check database structure'), + '$check' => t('Check database structure'), )); } else { $o = replace_macros(get_markup_template('failed_updates.tpl'),array( - '$base' => $a->get_baseurl(true), + '$base' => App::get_baseurl(true), '$banner' => t('Failed Updates'), - '$desc' => t('This does not include updates prior to 1139, which did not return a status.'), - '$mark' => t('Mark success (if update was manually applied)'), - '$apply' => t('Attempt to execute this update step automatically'), + '$desc' => t('This does not include updates prior to 1139, which did not return a status.'), + '$mark' => t('Mark success (if update was manually applied)'), + '$apply' => t('Attempt to execute this update step automatically'), '$failed' => $failed )); } @@ -1129,11 +1156,11 @@ function admin_page_dbsync(&$a) { * @param App $a */ function admin_page_users_post(&$a){ - $pending = (x($_POST, 'pending') ? $_POST['pending'] : array()); - $users = (x($_POST, 'user') ? $_POST['user'] : array()); - $nu_name = (x($_POST, 'new_user_name') ? $_POST['new_user_name'] : ''); - $nu_nickname = (x($_POST, 'new_user_nickname') ? $_POST['new_user_nickname'] : ''); - $nu_email = (x($_POST, 'new_user_email') ? $_POST['new_user_email'] : ''); + $pending = (x($_POST, 'pending') ? $_POST['pending'] : array()); + $users = (x($_POST, 'user') ? $_POST['user'] : array()); + $nu_name = (x($_POST, 'new_user_name') ? $_POST['new_user_name'] : ''); + $nu_nickname = (x($_POST, 'new_user_nickname') ? $_POST['new_user_nickname'] : ''); + $nu_email = (x($_POST, 'new_user_email') ? $_POST['new_user_email'] : ''); $nu_language = get_config('system', 'language'); check_form_security_token_redirectOnErr('/admin/users', 'admin_users'); @@ -1178,7 +1205,7 @@ function admin_page_users_post(&$a){ Thank you and welcome to %4$s.')); $preamble = sprintf($preamble, $nu['username'], $a->config['sitename']); - $body = sprintf($body, $a->get_baseurl(), $nu['email'], $result['password'], $a->config['sitename']); + $body = sprintf($body, App::get_baseurl(), $nu['email'], $result['password'], $a->config['sitename']); notification(array( 'type' => "SYSTEM_EMAIL", @@ -1381,6 +1408,7 @@ function admin_page_users(&$a){ '$h_deleted' => t('User waiting for permanent deletion'), '$th_pending' => array(t('Request date'), t('Name'), t('Email')), '$no_pending' => t('No registrations.'), + '$pendingnotetext' => t('Note from the user'), '$approve' => t('Approve'), '$deny' => t('Deny'), '$delete' => t('Delete'), @@ -1402,7 +1430,7 @@ function admin_page_users(&$a){ '$form_security_token' => get_form_security_token("admin_users"), // values // - '$baseurl' => $a->get_baseurl(true), + '$baseurl' => App::get_baseurl(true), '$pending' => $pending, 'deleted' => $deleted, @@ -1494,7 +1522,7 @@ function admin_page_plugins(&$a){ '$page' => t('Plugins'), '$toggle' => t('Toggle'), '$settings' => t('Settings'), - '$baseurl' => $a->get_baseurl(true), + '$baseurl' => App::get_baseurl(true), '$plugin' => $plugin, '$status' => $status, @@ -1518,32 +1546,35 @@ function admin_page_plugins(&$a){ * List plugins */ - if(x($_GET,"a") && $_GET['a']=="r") { - check_form_security_token_redirectOnErr($a->get_baseurl().'/admin/plugins', 'admin_themes', 't'); + if (x($_GET,"a") && $_GET['a']=="r") { + check_form_security_token_redirectOnErr(App::get_baseurl().'/admin/plugins', 'admin_themes', 't'); reload_plugins(); info("Plugins reloaded"); - goaway($a->get_baseurl().'/admin/plugins'); + goaway(App::get_baseurl().'/admin/plugins'); } $plugins = array(); $files = glob("addon/*/"); - if($files) { - foreach($files as $file) { - if(is_dir($file)) { + if ($files) { + foreach ($files as $file) { + if (is_dir($file)) { list($tmp, $id)=array_map("trim", explode("/",$file)); $info = get_plugin_info($id); $show_plugin = true; // If the addon is unsupported, then only show it, when it is enabled - if((strtolower($info["status"]) == "unsupported") AND !in_array($id, $a->plugins)) + if ((strtolower($info["status"]) == "unsupported") AND !in_array($id, $a->plugins)) { $show_plugin = false; + } // Override the above szenario, when the admin really wants to see outdated stuff - if(get_config("system", "show_unsupported_addons")) + if (get_config("system", "show_unsupported_addons")) { $show_plugin = true; + } - if($show_plugin) + if ($show_plugin) { $plugins[] = array($id, (in_array($id, $a->plugins)?"on":"off") , $info); + } } } } @@ -1554,7 +1585,7 @@ function admin_page_plugins(&$a){ '$page' => t('Plugins'), '$submit' => t('Save Settings'), '$reload' => t('Reload active plugins'), - '$baseurl' => $a->get_baseurl(true), + '$baseurl' => App::get_baseurl(true), '$function' => 'plugins', '$plugins' => $plugins, '$pcount' => count($plugins), @@ -1752,7 +1783,7 @@ function admin_page_themes(&$a){ '$page' => t('Themes'), '$toggle' => t('Toggle'), '$settings' => t('Settings'), - '$baseurl' => $a->get_baseurl(true), + '$baseurl' => App::get_baseurl(true), '$plugin' => $theme, '$status' => $status, '$action' => $action, @@ -1770,18 +1801,18 @@ function admin_page_themes(&$a){ // reload active themes - if(x($_GET,"a") && $_GET['a']=="r") { - check_form_security_token_redirectOnErr($a->get_baseurl().'/admin/themes', 'admin_themes', 't'); - if($themes) { - foreach($themes as $th) { - if($th['allowed']) { + if (x($_GET,"a") && $_GET['a']=="r") { + check_form_security_token_redirectOnErr(App::get_baseurl().'/admin/themes', 'admin_themes', 't'); + if ($themes) { + foreach ($themes as $th) { + if ($th['allowed']) { uninstall_theme($th['name']); install_theme($th['name']); } } } info("Themes reloaded"); - goaway($a->get_baseurl().'/admin/themes'); + goaway(App::get_baseurl().'/admin/themes'); } /* @@ -1789,7 +1820,7 @@ function admin_page_themes(&$a){ */ $xthemes = array(); - if($themes) { + if ($themes) { foreach($themes as $th) { $xthemes[] = array($th['name'],(($th['allowed']) ? "on" : "off"), get_theme_info($th['name'])); } @@ -1798,17 +1829,17 @@ function admin_page_themes(&$a){ $t = get_markup_template("admin_plugins.tpl"); return replace_macros($t, array( - '$title' => t('Administration'), - '$page' => t('Themes'), - '$submit' => t('Save Settings'), - '$reload' => t('Reload active themes'), - '$baseurl' => $a->get_baseurl(true), - '$function' => 'themes', - '$plugins' => $xthemes, - '$pcount' => count($themes), - '$noplugshint' => sprintf(t('No themes found on the system. They should be paced in %1$s'),'/view/themes'), - '$experimental' => t('[Experimental]'), - '$unsupported' => t('[Unsupported]'), + '$title' => t('Administration'), + '$page' => t('Themes'), + '$submit' => t('Save Settings'), + '$reload' => t('Reload active themes'), + '$baseurl' => App::get_baseurl(true), + '$function' => 'themes', + '$plugins' => $xthemes, + '$pcount' => count($themes), + '$noplugshint' => sprintf(t('No themes found on the system. They should be paced in %1$s'),'/view/themes'), + '$experimental' => t('[Experimental]'), + '$unsupported' => t('[Unsupported]'), '$form_security_token' => get_form_security_token("admin_themes"), )); } @@ -1876,7 +1907,7 @@ function admin_page_logs(&$a){ '$page' => t('Logs'), '$submit' => t('Save Settings'), '$clear' => t('Clear'), - '$baseurl' => $a->get_baseurl(true), + '$baseurl' => App::get_baseurl(true), '$logname' => get_config('system','logfile'), // name, label, value, help string, extra data...