]> git.mxchange.org Git - friendica.git/commitdiff
Move admin summary to src/Module
authorHypolite Petovan <hypolite@mrpetovan.com>
Sun, 14 Apr 2019 15:13:18 +0000 (11:13 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Thu, 2 May 2019 13:52:41 +0000 (09:52 -0400)
- Add BaseAdminModule class
- Add Module\Admin\Summary class
- Add Route for Admin\Summary module
- Remove admin_page_summary() in mod/admin
- Remove $showwarning variable from admin/summary.tpl

mod/admin.php
src/App/Router.php
src/Module/Admin/Summary.php [new file with mode: 0644]
src/Module/BaseAdminModule.php [new file with mode: 0644]
view/templates/admin/summary.tpl
view/theme/frio/templates/admin/summary.tpl

index 22bb66265b32c63776b49b89c44fefda6c094da7..0c7724573dfd8cb1f4bb4a2c44dce845147ecd09 100644 (file)
@@ -298,8 +298,6 @@ function admin_content(App $a)
                        default:
                                notice(L10n::t("Item not found."));
                }
-       } else {
-               $o = admin_page_summary($a);
        }
 
        if ($a->isAjax()) {
@@ -837,137 +835,6 @@ function admin_page_workerqueue(App $a, $deferred)
        ]);
 }
 
-/**
- * @brief Admin Summary Page
- *
- * The summary page is the "start page" of the admin panel. It gives the admin
- * a first overview of the open adminastrative tasks.
- *
- * The returned string contains the HTML content of the generated page.
- *
- * @param App $a
- * @return string
- * @throws \Friendica\Network\HTTPException\InternalServerErrorException
- */
-function admin_page_summary(App $a)
-{
-       // 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", DBA::escape(DBA::databaseName()));
-       $showwarning = false;
-       $warningtext = [];
-       if (DBA::isResult($r)) {
-               $showwarning = true;
-               $warningtext[] = L10n::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 <a href="%s">here</a> for a guide that may be helpful converting the table engines. You may also use the command <tt>php bin/console.php dbstructure toinnodb</tt> of your Friendica installation for an automatic conversion.<br />', 'https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html');
-       }
-       // Check if github.com/friendica/master/VERSION is higher then
-       // the local version of Friendica. Check is opt-in, source may be master or devel branch
-       if (Config::get('system', 'check_new_version_url', 'none') != 'none') {
-               $gitversion = Config::get('system', 'git_friendica_version');
-               if (version_compare(FRIENDICA_VERSION, $gitversion) < 0) {
-                       $warningtext[] = L10n::t('There is a new version of Friendica available for download. Your current version is %1$s, upstream version is %2$s', FRIENDICA_VERSION, $gitversion);
-                       $showwarning = true;
-               }
-       }
-
-       if (Config::get('system', 'dbupdate', DBStructure::UPDATE_NOT_CHECKED) == DBStructure::UPDATE_NOT_CHECKED) {
-               DBStructure::update($a->getBasePath(), false, true);
-       }
-       if (Config::get('system', 'dbupdate') == DBStructure::UPDATE_FAILED) {
-               $showwarning = true;
-               $warningtext[] = L10n::t('The database update failed. Please run "php bin/console.php dbstructure update" from the command line and have a look at the errors that might appear.');
-       }
-       if (Config::get('system', 'update') == Update::FAILED) {
-               $showwarning = true;
-               $warningtext[] = L10n::t('The last update failed. Please run "php bin/console.php dbstructure update" from the command line and have a look at the errors that might appear. (Some of the errors are possibly inside the logfile.)');
-       }
-
-       $last_worker_call = Config::get('system', 'last_worker_execution', false);
-       if (!$last_worker_call) {
-               $showwarning = true;
-               $warningtext[] = L10n::t('The worker was never executed. Please check your database structure!');
-       } elseif ((strtotime(DateTimeFormat::utcNow()) - strtotime($last_worker_call)) > 60 * 60) {
-               $showwarning = true;
-               $warningtext[] = L10n::t('The last worker execution was on %s UTC. This is older than one hour. Please check your crontab settings.', $last_worker_call);
-       }
-
-       // Legacy config file warning
-       if (file_exists('.htconfig.php')) {
-               $showwarning = true;
-               $warningtext[] = L10n::t('Friendica\'s configuration now is stored in config/local.config.php, please copy config/local-sample.config.php and move your config from <code>.htconfig.php</code>. See <a href="%s">the Config help page</a> for help with the transition.', $a->getBaseURL() . '/help/Config');
-       }
-       if (file_exists('config/local.ini.php')) {
-               $showwarning = true;
-               $warningtext[] = L10n::t('Friendica\'s configuration now is stored in config/local.config.php, please copy config/local-sample.config.php and move your config from <code>config/local.ini.php</code>. See <a href="%s">the Config help page</a> for help with the transition.', $a->getBaseURL() . '/help/Config');
-       }
-
-       // Check server vitality
-       if (!admin_page_server_vital()) {
-               $showwarning = true;
-               $well_known = $a->getBaseURL() . '/.well-known/host-meta';
-               $warningtext[] = L10n::t('<a href="%s">%s</a> is not reachable on your system. This is a severe configuration issue that prevents server to server communication. See <a href="%s">the installation page</a> for help.',
-                       $well_known, $well_known, $a->getBaseURL() . '/help/Install');
-       }
-
-       $r = q("SELECT `page-flags`, COUNT(`uid`) AS `count` FROM `user` GROUP BY `page-flags`");
-       $accounts = [
-               [L10n::t('Normal Account'), 0],
-               [L10n::t('Automatic Follower Account'), 0],
-               [L10n::t('Public Forum Account'), 0],
-               [L10n::t('Automatic Friend Account'), 0],
-               [L10n::t('Blog Account'), 0],
-               [L10n::t('Private Forum Account'), 0]
-       ];
-
-       $users = 0;
-       foreach ($r as $u) {
-               $accounts[$u['page-flags']][1] = $u['count'];
-               $users += $u['count'];
-       }
-
-       Logger::log('accounts: ' . print_r($accounts, true), Logger::DATA);
-
-       $pending = Register::getPendingCount();
-
-       $deferred = DBA::count('workerqueue', ["`executed` <= ? AND NOT `done` AND `next_try` > ?",
-               DBA::NULL_DATETIME, DateTimeFormat::utcNow()]);
-
-       $workerqueue = DBA::count('workerqueue', ["`executed` <= ? AND NOT `done` AND `next_try` < ?",
-               DBA::NULL_DATETIME, DateTimeFormat::utcNow()]);
-
-       // We can do better, but this is a quick queue status
-
-       $queues = ['label' => L10n::t('Message queues'), 'deferred' => $deferred, 'workerq' => $workerqueue];
-
-
-       $r = q("SHOW variables LIKE 'max_allowed_packet'");
-       $max_allowed_packet = (($r) ? $r[0]['Value'] : 0);
-
-       $server_settings = ['label' => L10n::t('Server Settings'),
-               'php' => ['upload_max_filesize' => ini_get('upload_max_filesize'),
-                       'post_max_size' => ini_get('post_max_size'),
-                       'memory_limit' => ini_get('memory_limit')],
-               'mysql' => ['max_allowed_packet' => $max_allowed_packet]];
-
-       $t = Renderer::getMarkupTemplate('admin/summary.tpl');
-       return Renderer::replaceMacros($t, [
-               '$title' => L10n::t('Administration'),
-               '$page' => L10n::t('Summary'),
-               '$queues' => $queues,
-               '$users' => [L10n::t('Registered users'), $users],
-               '$accounts' => $accounts,
-               '$pending' => [L10n::t('Pending registrations'), $pending],
-               '$version' => [L10n::t('Version'), FRIENDICA_VERSION],
-               '$baseurl' => System::baseUrl(),
-               '$platform' => FRIENDICA_PLATFORM,
-               '$codename' => FRIENDICA_CODENAME,
-               '$build' => Config::get('system', 'build'),
-               '$addons' => [L10n::t('Active addons'), Addon::getEnabledList()],
-               '$serversettings' => $server_settings,
-               '$showwarning' => $showwarning,
-               '$warningtext' => $warningtext
-       ]);
-}
-
 /**
  * @brief Process send data from Admin Site Page
  *
index cdd40ac9da4f9952da87100419b1a7176af72465..85134bf444895314cab6416b505adccb37defc14 100644 (file)
@@ -117,6 +117,10 @@ class Router
                $this->routeCollector->addRoute(['GET'],         '/tos',                 Module\Tos::class);
                $this->routeCollector->addRoute(['GET'],         '/webfinger',           Module\WebFinger::class);
                $this->routeCollector->addRoute(['GET'],         '/xrd',                 Module\Xrd::class);
+
+               $this->routeCollector->addGroup('/admin', function (RouteCollector $collector) {
+                       $collector->addRoute(['GET']        , '[/]'                     , Module\Admin\Summary::class);
+               });
        }
 
        public function __construct(RouteCollector $routeCollector = null)
diff --git a/src/Module/Admin/Summary.php b/src/Module/Admin/Summary.php
new file mode 100644 (file)
index 0000000..49ad59c
--- /dev/null
@@ -0,0 +1,149 @@
+<?php\r
+\r
+namespace Friendica\Module\Admin;\r
+\r
+use Friendica\Core\Addon;\r
+use Friendica\Core\Config;\r
+use Friendica\Core\L10n;\r
+use Friendica\Core\Logger;\r
+use Friendica\Core\Renderer;\r
+use Friendica\Core\System;\r
+use Friendica\Core\Update;\r
+use Friendica\Database\DBA;\r
+use Friendica\Database\DBStructure;\r
+use Friendica\Model\Register;\r
+use Friendica\Module\BaseAdminModule;\r
+use Friendica\Util\DateTimeFormat;\r
+use Friendica\Util\Network;\r
+\r
+class Summary extends BaseAdminModule\r
+{\r
+       public static function content()\r
+       {\r
+               parent::content();\r
+\r
+               $a = self::getApp();\r
+\r
+               // are there MyISAM tables in the DB? If so, trigger a warning message\r
+               $warningtext = [];\r
+               if (DBA::count('`information_schema`.`tables`', ['engine' => 'myisam', 'table_schema' => DBA::databaseName()])) {\r
+                       $warningtext[] = L10n::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 <a href="%s">here</a> for a guide that may be helpful converting the table engines. You may also use the command <tt>php bin/console.php dbstructure toinnodb</tt> of your Friendica installation for an automatic conversion.<br />', 'https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html');\r
+               }\r
+\r
+               // Check if github.com/friendica/master/VERSION is higher then\r
+               // the local version of Friendica. Check is opt-in, source may be master or devel branch\r
+               if (Config::get('system', 'check_new_version_url', 'none') != 'none') {\r
+                       $gitversion = Config::get('system', 'git_friendica_version');\r
+                       if (version_compare(FRIENDICA_VERSION, $gitversion) < 0) {\r
+                               $warningtext[] = L10n::t('There is a new version of Friendica available for download. Your current version is %1$s, upstream version is %2$s', FRIENDICA_VERSION, $gitversion);\r
+                       }\r
+               }\r
+\r
+               if (Config::get('system', 'dbupdate', DBStructure::UPDATE_NOT_CHECKED) == DBStructure::UPDATE_NOT_CHECKED) {\r
+                       DBStructure::update($a->getBasePath(), false, true);\r
+               }\r
+\r
+               if (Config::get('system', 'dbupdate') == DBStructure::UPDATE_FAILED) {\r
+                       $warningtext[] = L10n::t('The database update failed. Please run "php bin/console.php dbstructure update" from the command line and have a look at the errors that might appear.');\r
+               }\r
+\r
+               if (Config::get('system', 'update') == Update::FAILED) {\r
+                       $warningtext[] = L10n::t('The last update failed. Please run "php bin/console.php dbstructure update" from the command line and have a look at the errors that might appear. (Some of the errors are possibly inside the logfile.)');\r
+               }\r
+\r
+               $last_worker_call = Config::get('system', 'last_worker_execution', false);\r
+               if (!$last_worker_call) {\r
+                       $warningtext[] = L10n::t('The worker was never executed. Please check your database structure!');\r
+               } elseif ((strtotime(DateTimeFormat::utcNow()) - strtotime($last_worker_call)) > 60 * 60) {\r
+                       $warningtext[] = L10n::t('The last worker execution was on %s UTC. This is older than one hour. Please check your crontab settings.', $last_worker_call);\r
+               }\r
+\r
+               // Legacy config file warning\r
+               if (file_exists('.htconfig.php')) {\r
+                       $warningtext[] = L10n::t('Friendica\'s configuration now is stored in config/local.config.php, please copy config/local-sample.config.php and move your config from <code>.htconfig.php</code>. See <a href="%s">the Config help page</a> for help with the transition.', $a->getBaseURL() . '/help/Config');\r
+               }\r
+\r
+               if (file_exists('config/local.ini.php')) {\r
+                       $warningtext[] = L10n::t('Friendica\'s configuration now is stored in config/local.config.php, please copy config/local-sample.config.php and move your config from <code>config/local.ini.php</code>. See <a href="%s">the Config help page</a> for help with the transition.', $a->getBaseURL() . '/help/Config');\r
+               }\r
+\r
+               // Check server vitality\r
+               if (!self::checkSelfHostMeta()) {\r
+                       $well_known = $a->getBaseURL() . '/.well-known/host-meta';\r
+                       $warningtext[] = L10n::t('<a href="%s">%s</a> is not reachable on your system. This is a severe configuration issue that prevents server to server communication. See <a href="%s">the installation page</a> for help.',\r
+                               $well_known, $well_known, $a->getBaseURL() . '/help/Install');\r
+               }\r
+\r
+               $accounts = [\r
+                       [L10n::t('Normal Account'), 0],\r
+                       [L10n::t('Automatic Follower Account'), 0],\r
+                       [L10n::t('Public Forum Account'), 0],\r
+                       [L10n::t('Automatic Friend Account'), 0],\r
+                       [L10n::t('Blog Account'), 0],\r
+                       [L10n::t('Private Forum Account'), 0]\r
+               ];\r
+\r
+               $users = 0;\r
+               $pageFlagsCountStmt = DBA::p('SELECT `page-flags`, COUNT(`uid`) AS `count` FROM `user` GROUP BY `page-flags`');\r
+               while ($pageFlagsCount = DBA::fetch($pageFlagsCountStmt)) {\r
+                       $accounts[$pageFlagsCount['page-flags']][1] = $pageFlagsCount['count'];\r
+                       $users += $pageFlagsCount['count'];\r
+               }\r
+               DBA::close($pageFlagsCountStmt);\r
+\r
+               Logger::log('accounts: ' . print_r($accounts, true), Logger::DATA);\r
+\r
+               $pending = Register::getPendingCount();\r
+\r
+               $queue = DBA::count('queue', []);\r
+\r
+               $deferred = DBA::count('workerqueue', ['`executed` <= ? AND NOT `done` AND `next_try` > ?',\r
+                       DBA::NULL_DATETIME, DateTimeFormat::utcNow()]);\r
+\r
+               $workerqueue = DBA::count('workerqueue', ['`executed` <= ? AND NOT `done` AND `next_try` < ?',\r
+                       DBA::NULL_DATETIME, DateTimeFormat::utcNow()]);\r
+\r
+               // We can do better, but this is a quick queue status\r
+               $queues = ['label' => L10n::t('Message queues'), 'queue' => $queue, 'deferred' => $deferred, 'workerq' => $workerqueue];\r
+\r
+               $variables = DBA::toArray(DBA::p('SHOW variables LIKE "max_allowed_packet"'));\r
+               $max_allowed_packet = $variables ? $variables[0]['Value'] : 0;\r
+\r
+               $server_settings = [\r
+                       'label' => L10n::t('Server Settings'),\r
+                       'php' => [\r
+                               'upload_max_filesize' => ini_get('upload_max_filesize'),\r
+                               'post_max_size' => ini_get('post_max_size'),\r
+                               'memory_limit' => ini_get('memory_limit')\r
+                       ],\r
+                       'mysql' => [\r
+                               'max_allowed_packet' => $max_allowed_packet\r
+                       ]\r
+               ];\r
+\r
+               $t = Renderer::getMarkupTemplate('admin/summary.tpl');\r
+               return Renderer::replaceMacros($t, [\r
+                       '$title' => L10n::t('Administration'),\r
+                       '$page' => L10n::t('Summary'),\r
+                       '$queues' => $queues,\r
+                       '$users' => [L10n::t('Registered users'), $users],\r
+                       '$accounts' => $accounts,\r
+                       '$pending' => [L10n::t('Pending registrations'), $pending],\r
+                       '$version' => [L10n::t('Version'), FRIENDICA_VERSION],\r
+                       '$baseurl' => System::baseUrl(),\r
+                       '$platform' => FRIENDICA_PLATFORM,\r
+                       '$codename' => FRIENDICA_CODENAME,\r
+                       '$build' => Config::get('system', 'build'),\r
+                       '$addons' => [L10n::t('Active addons'), Addon::getEnabledList()],\r
+                       '$serversettings' => $server_settings,\r
+                       '$warningtext' => $warningtext\r
+               ]);\r
+       }\r
+\r
+       private static function checkSelfHostMeta()\r
+       {\r
+               // Fetch the host-meta to check if this really is a vital server\r
+               return Network::curl(System::baseUrl() . '/.well-known/host-meta')->isSuccess();\r
+       }\r
+\r
+}
\ No newline at end of file
diff --git a/src/Module/BaseAdminModule.php b/src/Module/BaseAdminModule.php
new file mode 100644 (file)
index 0000000..4664c90
--- /dev/null
@@ -0,0 +1,74 @@
+<?php\r
+\r
+namespace Friendica\Module;\r
+\r
+use Friendica\BaseModule;\r
+use Friendica\Core\L10n;\r
+use Friendica\Core\Renderer;\r
+use Friendica\Database\DBA;\r
+\r
+class BaseAdminModule extends BaseModule\r
+{\r
+       public static function post()\r
+       {\r
+               if (!is_site_admin()) {\r
+                       return;\r
+               }\r
+\r
+               // do not allow a page manager to access the admin panel at all.\r
+               if (!empty($_SESSION['submanage'])) {\r
+                       return;\r
+               }\r
+       }\r
+\r
+       public static function content()\r
+       {\r
+               if (!is_site_admin()) {\r
+                       return Login::form();\r
+               }\r
+\r
+               if (!empty($_SESSION['submanage'])) {\r
+                       return '';\r
+               }\r
+\r
+               $a = self::getApp();\r
+\r
+               // APC deactivated, since there are problems with PHP 5.5\r
+               //if (function_exists("apc_delete")) {\r
+               // $toDelete = new APCIterator('user', APC_ITER_VALUE);\r
+               // apc_delete($toDelete);\r
+               //}\r
+               // Header stuff\r
+               $a->page['htmlhead'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('admin/settings_head.tpl'), []);\r
+\r
+               /*\r
+                * Side bar links\r
+                */\r
+\r
+               // array(url, name, extra css classes)\r
+               // not part of $aside to make the template more adjustable\r
+               $aside_sub = [\r
+                       'information' => [L10n::t('Information'), [\r
+                               'overview'     => ['admin'             , L10n::t('Overview')                , 'overview'],\r
+                       ]],\r
+               ];\r
+\r
+               $addons_admin = [];\r
+               $addonsAdminStmt = DBA::select('addon', ['name'], ['plugin_admin' => 1], ['order' => ['name']]);\r
+               foreach (DBA::toArray($addonsAdminStmt) as $addon) {\r
+                       $addons_admin[] = ['admin/addons/' . $addon['name'], $addon['name'], 'addon'];\r
+               }\r
+\r
+               $t = Renderer::getMarkupTemplate('admin/aside.tpl');\r
+               $a->page['aside'] .= Renderer::replaceMacros($t, [\r
+                       '$admin' => ['addons_admin' => $addons_admin],\r
+                       '$subpages' => $aside_sub,\r
+                       '$admtxt' => L10n::t('Admin'),\r
+                       '$plugadmtxt' => L10n::t('Addon Features'),\r
+                       '$h_pending' => L10n::t('User registrations waiting for confirmation'),\r
+                       '$admurl' => 'admin/'\r
+               ]);\r
+\r
+               return '';\r
+       }\r
+}\r
index 09419929d2168984a804cff287993a6c8dcc89a8..7b655a8ecc0d4953d682f67f2d22b8f6cb575fc2 100644 (file)
@@ -1,7 +1,7 @@
 
 <div id='adminpage'>
        <h1>{{$title}} - {{$page}}</h1>
-{{if $showwarning}}
+{{if $warningtext|count}}
        <div id="admin-warning-message-wrapper">
                {{foreach $warningtext as $wt}}
                <p class="warning-message">{{$wt nofilter}}</p>
index d183e3fa20ab674b2af2def3cca2433ccdff1068..9dbd3f7e6b3a25662279885237897a3949510e35 100644 (file)
@@ -2,7 +2,7 @@
 <div id='adminpage-summery' class="adminpage generic-page-wrapper">
        <h1>{{$title}} - {{$page}}</h1>
 
-       {{if $showwarning}}
+       {{if $warningtext|count}}
        <div id="admin-warning-message-wrapper" class="alert alert-warning">
                {{foreach $warningtext as $wt}}
                <p>{{$wt nofilter}}</p>