primo commit
This commit is contained in:
@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage mod_stats_admin
|
||||
*
|
||||
* @copyright (C) 2024 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Module\StatsAdmin\Administrator\Dispatcher;
|
||||
|
||||
use Joomla\CMS\Dispatcher\AbstractModuleDispatcher;
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\Helper\HelperFactoryAwareInterface;
|
||||
use Joomla\CMS\Helper\HelperFactoryAwareTrait;
|
||||
use Joomla\Database\DatabaseInterface;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Dispatcher class for mod_stats_admin
|
||||
*
|
||||
* @since 5.1.0
|
||||
*/
|
||||
class Dispatcher extends AbstractModuleDispatcher implements HelperFactoryAwareInterface
|
||||
{
|
||||
use HelperFactoryAwareTrait;
|
||||
|
||||
/**
|
||||
* Returns the layout data.
|
||||
*
|
||||
* @return array
|
||||
*
|
||||
* @since 5.1.0
|
||||
*/
|
||||
protected function getLayoutData()
|
||||
{
|
||||
$data = parent::getLayoutData();
|
||||
|
||||
$data['serverinfo'] = $data['params']->get('serverinfo');
|
||||
$data['siteinfo'] = $data['params']->get('siteinfo');
|
||||
$data['list'] = $this->getHelperFactory()->getHelper('StatsAdminHelper')->getStatsData($data['params'], $this->getApplication(), Factory::getContainer()->get(DatabaseInterface::class));
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,169 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage mod_stats_admin
|
||||
*
|
||||
* @copyright (C) 2012 Open Source Matters, Inc. <https://www.joomla.org>
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Module\StatsAdmin\Administrator\Helper;
|
||||
|
||||
use Joomla\CMS\Application\CMSApplication;
|
||||
use Joomla\CMS\Language\Text;
|
||||
use Joomla\CMS\Plugin\PluginHelper;
|
||||
use Joomla\CMS\Router\Route;
|
||||
use Joomla\Database\DatabaseInterface;
|
||||
use Joomla\Registry\Registry;
|
||||
|
||||
// phpcs:disable PSR1.Files.SideEffects
|
||||
\defined('_JEXEC') or die;
|
||||
// phpcs:enable PSR1.Files.SideEffects
|
||||
|
||||
/**
|
||||
* Helper class for admin stats module
|
||||
*
|
||||
* @since 3.0
|
||||
*/
|
||||
class StatsAdminHelper
|
||||
{
|
||||
/**
|
||||
* Method to retrieve information about the site
|
||||
*
|
||||
* @param Registry $params The module parameters
|
||||
* @param CMSApplication $app The application
|
||||
* @param DatabaseInterface $db The database
|
||||
*
|
||||
* @return array Array containing site information
|
||||
*
|
||||
* @since 5.1.0
|
||||
*/
|
||||
public function getStatsData(Registry $params, CMSApplication $app, DatabaseInterface $db)
|
||||
{
|
||||
$user = $app->getIdentity();
|
||||
|
||||
$rows = [];
|
||||
$query = $db->getQuery(true);
|
||||
|
||||
$serverinfo = $params->get('serverinfo', 0);
|
||||
$siteinfo = $params->get('siteinfo', 0);
|
||||
|
||||
$i = 0;
|
||||
|
||||
if ($serverinfo) {
|
||||
$rows[$i] = new \stdClass();
|
||||
$rows[$i]->title = Text::_('MOD_STATS_PHP');
|
||||
$rows[$i]->icon = 'cogs';
|
||||
$rows[$i]->data = PHP_VERSION;
|
||||
$i++;
|
||||
|
||||
$rows[$i] = new \stdClass();
|
||||
$rows[$i]->title = Text::_($db->name);
|
||||
$rows[$i]->icon = 'database';
|
||||
$rows[$i]->data = $db->getVersion();
|
||||
$i++;
|
||||
|
||||
$rows[$i] = new \stdClass();
|
||||
$rows[$i]->title = Text::_('MOD_STATS_CACHING');
|
||||
$rows[$i]->icon = 'tachometer-alt';
|
||||
$rows[$i]->data = $app->get('caching') ? Text::_('JENABLED') : Text::_('JDISABLED');
|
||||
$i++;
|
||||
|
||||
$rows[$i] = new \stdClass();
|
||||
$rows[$i]->title = Text::_('MOD_STATS_GZIP');
|
||||
$rows[$i]->icon = 'bolt';
|
||||
$rows[$i]->data = $app->get('gzip') ? Text::_('JENABLED') : Text::_('JDISABLED');
|
||||
$i++;
|
||||
}
|
||||
|
||||
if ($siteinfo) {
|
||||
$query->select('COUNT(id) AS count_users')
|
||||
->from('#__users');
|
||||
$db->setQuery($query);
|
||||
|
||||
try {
|
||||
$users = $db->loadResult();
|
||||
} catch (\RuntimeException $e) {
|
||||
$users = false;
|
||||
}
|
||||
|
||||
$query->clear()
|
||||
->select('COUNT(id) AS count_items')
|
||||
->from('#__content')
|
||||
->where('state = 1');
|
||||
$db->setQuery($query);
|
||||
|
||||
try {
|
||||
$items = $db->loadResult();
|
||||
} catch (\RuntimeException $e) {
|
||||
$items = false;
|
||||
}
|
||||
|
||||
if ($users) {
|
||||
$rows[$i] = new \stdClass();
|
||||
$rows[$i]->title = Text::_('MOD_STATS_USERS');
|
||||
$rows[$i]->icon = 'users';
|
||||
$rows[$i]->data = $users;
|
||||
|
||||
if ($user->authorise('core.manage', 'com_users')) {
|
||||
$rows[$i]->link = Route::_('index.php?option=com_users');
|
||||
}
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
||||
if ($items) {
|
||||
$rows[$i] = new \stdClass();
|
||||
$rows[$i]->title = Text::_('MOD_STATS_ARTICLES');
|
||||
$rows[$i]->icon = 'file';
|
||||
$rows[$i]->data = $items;
|
||||
$rows[$i]->link = Route::_('index.php?option=com_content&view=articles&filter[published]=1');
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
|
||||
// Include additional data defined by published system plugins
|
||||
PluginHelper::importPlugin('system');
|
||||
|
||||
$arrays = (array) $app->triggerEvent('onGetStats', ['mod_stats_admin']);
|
||||
|
||||
foreach ($arrays as $response) {
|
||||
foreach ($response as $row) {
|
||||
// We only add a row if the title and data are given
|
||||
if (isset($row['title']) && isset($row['data'])) {
|
||||
$rows[$i] = new \stdClass();
|
||||
$rows[$i]->title = $row['title'];
|
||||
$rows[$i]->icon = $row['icon'] ?? 'info';
|
||||
$rows[$i]->data = $row['data'];
|
||||
$rows[$i]->link = $row['link'] ?? null;
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $rows;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to retrieve information about the site
|
||||
*
|
||||
* @param Registry $params The module parameters
|
||||
* @param CMSApplication $app The application
|
||||
* @param DatabaseInterface $db The database
|
||||
*
|
||||
* @return array Array containing site information
|
||||
*
|
||||
* @since 3.0
|
||||
*
|
||||
* @deprecated 5.1.0 will be removed in 7.0
|
||||
* Use the non-static method getStatsData
|
||||
* Example: Factory::getApplication()->bootModule('mod_stats_admin', 'administrator')
|
||||
* ->getHelper('StatsAdminHelper')
|
||||
* ->getStatsData($params, Factory::getApplication(), Factory::getContainer()->get(DatabaseInterface::class))
|
||||
*/
|
||||
public static function getStats(Registry $params, CMSApplication $app, DatabaseInterface $db)
|
||||
{
|
||||
return (new self())->getStatsData($params, $app, $db);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user