Add language filter to server list #68
|
@ -4,7 +4,7 @@ namespace Friendica\Directory\Controllers\Web;
|
||||||
|
|
||||||
use Friendica\Directory\Content\Pager;
|
use Friendica\Directory\Content\Pager;
|
||||||
use Friendica\Directory\Views\Widget\PopularCountries;
|
use Friendica\Directory\Views\Widget\PopularCountries;
|
||||||
use Friendica\Directory\Views\Widget\PopularLanguages;
|
use Friendica\Directory\Views\Widget\PopularProfileLanguages;
|
||||||
use Friendica\Directory\Views\Widget\PopularTags;
|
use Friendica\Directory\Views\Widget\PopularTags;
|
||||||
use Slim\Http\Request;
|
use Slim\Http\Request;
|
||||||
use Slim\Http\Response;
|
use Slim\Http\Response;
|
||||||
|
@ -54,7 +54,7 @@ class Directory extends BaseController
|
||||||
{
|
{
|
||||||
$popularTags = new PopularTags($this->atlas, $this->renderer);
|
$popularTags = new PopularTags($this->atlas, $this->renderer);
|
||||||
$popularCountries = new PopularCountries($this->atlas, $this->renderer);
|
$popularCountries = new PopularCountries($this->atlas, $this->renderer);
|
||||||
$popularLanguages = new PopularLanguages($this->atlas, $this->renderer);
|
$popularLanguages = new PopularProfileLanguages($this->atlas, $this->renderer);
|
||||||
|
|
||||||
$pager = new Pager($this->l10n, $request, 20);
|
$pager = new Pager($this->l10n, $request, 20);
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace Friendica\Directory\Views\Widget;
|
||||||
/**
|
/**
|
||||||
* @author Hypolite Petovan <hypolite@mrpetovan.com>
|
* @author Hypolite Petovan <hypolite@mrpetovan.com>
|
||||||
*/
|
*/
|
||||||
class PopularLanguages
|
class PopularProfileLanguages
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var \Atlas\Pdo\Connection
|
* @var \Atlas\Pdo\Connection
|
||||||
|
@ -36,6 +36,6 @@ class PopularLanguages
|
||||||
'languages' => $languages
|
'languages' => $languages
|
||||||
];
|
];
|
||||||
|
|
||||||
return $this->renderer->fetch('widget/popularlanguages.phtml', $vars);
|
return $this->renderer->fetch('widget/popularprofilelanguages.phtml', $vars);
|
||||||
}
|
}
|
||||||
}
|
}
|
44
src/classes/Views/Widget/PopularServerLanguages.php
Normal file
44
src/classes/Views/Widget/PopularServerLanguages.php
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Friendica\Directory\Views\Widget;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Hypolite Petovan <hypolite@mrpetovan.com>
|
||||||
|
*/
|
||||||
|
class PopularServerLanguages
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var \Atlas\Pdo\Connection
|
||||||
|
*/
|
||||||
|
private $connection;
|
||||||
|
/**
|
||||||
|
* @var \Friendica\Directory\Views\PhpRenderer
|
||||||
|
*/
|
||||||
|
private $renderer;
|
||||||
|
|
||||||
|
public function __construct(\Atlas\Pdo\Connection $connection, \Friendica\Directory\Views\PhpRenderer $renderer)
|
||||||
|
{
|
||||||
|
$this->connection = $connection;
|
||||||
|
$this->renderer = $renderer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function render(): string
|
||||||
|
{
|
||||||
|
$stmt = 'SELECT LEFT(`language`, 2) AS `language`, COUNT(*) AS `total`
|
||||||
|
FROM `server`
|
||||||
|
WHERE `reg_policy` != "REGISTER_CLOSED"
|
||||||
|
AND `available`
|
||||||
|
AND NOT `hidden`
|
||||||
|
AND `language` IS NOT NULL
|
||||||
|
GROUP BY LEFT(`language`, 2)
|
||||||
|
ORDER BY `total` DESC
|
||||||
|
LIMIT 10';
|
||||||
|
$languages = $this->connection->fetchAll($stmt);
|
||||||
|
|
||||||
|
$vars = [
|
||||||
|
'languages' => $languages
|
||||||
|
];
|
||||||
|
|
||||||
|
return $this->renderer->fetch('widget/popularserverlanguages.phtml', $vars);
|
||||||
|
}
|
||||||
|
}
|
13
src/templates/widget/popularserverlanguages.phtml
Normal file
13
src/templates/widget/popularserverlanguages.phtml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<div>
|
||||||
|
<h3><?php echo $this->__('Filter by language')?></h3>
|
||||||
|
<ul>
|
||||||
|
<?php foreach ($languages as $language): ?>
|
||||||
|
<li>
|
||||||
|
<a href="<?php echo $this->escapeHtmlAttr($this->r('servers', ['language' => $language['language']])) ?>">
|
||||||
|
<?php echo $this->e(Friendica\Directory\Utils\L10n::localeToLanguageString($language['language'])) ?>
|
||||||
|
(<?php echo $this->e($language['total'])?>)
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</ul>
|
||||||
|
</div>
|
Loading…
Reference in a new issue