friendica-directory/src/classes/Controllers/Web/Servers.php

104 lines
2.7 KiB
PHP
Raw Normal View History

2018-11-12 03:08:33 +01:00
<?php
namespace Friendica\Directory\Controllers\Web;
use \Friendica\Directory\Content\Pager;
use PDO;
use Slim\Http\Request;
use Slim\Http\Response;
/**
* @author Hypolite Petovan <hypolite@mrpetovan.com>
2018-11-12 03:08:33 +01:00
*/
class Servers extends BaseController
2018-11-12 03:08:33 +01:00
{
/**
* @var \Atlas\Pdo\Connection
*/
private $atlas;
/**
* @var \Friendica\Directory\Views\PhpRenderer
*/
private $renderer;
/**
* @var \Gettext\TranslatorInterface
2018-11-12 03:08:33 +01:00
*/
private $l10n;
/**
* @var \Psr\SimpleCache\CacheInterface
*/
private $simplecache;
public function __construct(
\Atlas\Pdo\Connection $atlas,
\Friendica\Directory\Views\PhpRenderer $renderer,
\Gettext\TranslatorInterface $l10n,
2018-11-12 03:08:33 +01:00
\Psr\SimpleCache\CacheInterface $simplecache
)
{
$this->atlas = $atlas;
$this->renderer = $renderer;
$this->l10n = $l10n;
$this->simplecache = $simplecache;
}
public function render(Request $request, Response $response, array $args): array
2018-11-12 03:08:33 +01:00
{
$stable_version = $this->simplecache->get('stable_version');
if (!$stable_version) {
$stable_version = trim(file_get_contents('https://git.friendi.ca/friendica/friendica/raw/branch/stable/VERSION'));
2018-11-12 03:08:33 +01:00
$this->simplecache->set('stable_version', $stable_version);
}
$dev_version = $this->simplecache->get('dev_version');
if (!$dev_version) {
$dev_version = trim(file_get_contents('https://git.friendi.ca/friendica/friendica/raw/branch/develop/VERSION'));
$this->simplecache->set('dev_version', $dev_version);
}
2018-12-19 10:09:23 +01:00
$rc_version = str_replace('-dev', '-rc', $dev_version);
2018-11-12 03:08:33 +01:00
$pager = new Pager($this->l10n, $request, 20);
$stmt = 'SELECT *
FROM `server` s
WHERE `reg_policy` != "REGISTER_CLOSED"
2018-11-12 03:08:33 +01:00
AND `available`
AND NOT `hidden`
ORDER BY `health_score` DESC, `ssl_state` DESC, `info` != "" DESC, `last_seen` DESC
2018-11-12 03:08:33 +01:00
LIMIT :start, :limit';
$servers = $this->atlas->fetchAll($stmt, [
'start' => [$pager->getStart(), PDO::PARAM_INT],
'limit' => [$pager->getItemsPerPage(), PDO::PARAM_INT]
]);
foreach ($servers as $key => $server) {
$servers[$key]['user_count'] = $this->atlas->fetchValue(
'SELECT COUNT(*) FROM `profile` WHERE `available` AND NOT `hidden` AND `server_id` = :server_id',
2018-11-12 03:08:33 +01:00
['server_id' => [$server['id'], PDO::PARAM_INT]]
);
}
$stmt = 'SELECT COUNT(*)
FROM `server` s
WHERE `reg_policy` != "REGISTER_CLOSED"
2018-11-12 03:08:33 +01:00
AND `available`
AND NOT `hidden`';
$count = $this->atlas->fetchValue($stmt);
$vars = [
'title' => $this->l10n->gettext('Public Servers'),
2018-11-12 03:08:33 +01:00
'servers' => $servers,
'pager' => $pager->renderFull($count),
'stable_version' => $stable_version,
2018-12-19 10:09:23 +01:00
'rc_version' => $rc_version,
2018-11-12 03:08:33 +01:00
'dev_version' => $dev_version,
];
$content = $this->renderer->fetch('servers.phtml', $vars);
// Render index view
return ['content' => $content];
2018-11-12 03:08:33 +01:00
}
}