feat: add regional and tech listings

main
gravel 4 months ago
parent e76827c6e1
commit 49d9cb9be1
Signed by: gravel
GPG Key ID: C0538F3C906B308F

@ -8,13 +8,26 @@
</p>
</aside>
<footer id="footer">
<nav id="about-us">
<nav id="nav-communities">
<a
href="/"
class="footer__nav-target"
title="Go back to the main page of sessioncommunities.online"
>Home</a
>Main page</a
><a
href="/groups/regional"
class="footer__nav-target"
title="See our list of world-wide Session Communities"
>Regional Communities</a
><a
href="/groups/tech"
class="footer__nav-target"
title="See our list of technology-focused Session Communities"
>Tech Communities</a
>
</nav>
<nav id="about-us">
<a
href="/about/"
class="footer__nav-target"
target="_blank"

@ -1,6 +1,7 @@
<?php
require_once 'php/servers/servers-rooms.php';
require_once 'php/utils/utils.php';
require_once 'php/servers/room-listings-api.php';
class RoomSieve {
/**
@ -34,18 +35,18 @@
public function saveStickies() {
$stickied = CommunityRoom::get_stickied_rooms($this->rooms, $rest);
$rooms = $rest;
return new RoomSieve($rooms, $stickied);
return $this->cloneWith($rooms, $stickied);
}
/**
* @param CommunityRoom[] $rooms
*/
public function addRooms(array $rooms) {
return new RoomSieve(array_merge($this->rooms, $rooms), $this->stickies);
return $this->cloneWith(array_merge($this->rooms, $rooms));
}
public function apply(Closure $filter) {
return new RoomSieve($filter($this->rooms), $this->stickies);
return $this->cloneWith($filter($this->rooms));
}
public function getWithStickies() {
@ -62,13 +63,13 @@
public function onlyTop(int $count = RoomSieve::TOP_DEFAULT) {
$rooms = $this->rooms;
return new RoomSieve(array_slice(array_reverse($rooms), 0, $count), $this->stickies);
return $this->cloneWith(array_slice(array_reverse($rooms), 0, $count));
}
public function exceptTop(int $count = RoomSieve::TOP_DEFAULT) {
$rooms = $this->rooms;
CommunityRoom::sort_rooms_num($rooms, 'active_users');
return new RoomSieve(array_slice(array_reverse($rooms), $count), $this->stickies);
return $this->cloneWith(array_slice(array_reverse($rooms), $count));
}
private static function isIndexApproved(CommunityRoom $room): bool {
@ -112,5 +113,14 @@
}));
return new RoomSieve($rooms, $this->stickies);
}
private function clone(): self {
return $this->cloneWith();
}
private function cloneWith($rooms = null, $stickies = null): self {
$clone = new RoomSieve($rooms ?? $this->rooms, $stickies ?? $this->stickies);
return $clone;
}
}
?>

@ -0,0 +1 @@
<h1 id="headline">Regional Session Communities</h1>

@ -0,0 +1,15 @@
<title>Regional Communities — sessioncommunities.online</title>
<meta name="description" content="Chat in Session Communities! <?php
?>Use our list to join your favorite Community in Session Messenger. <?php
?>Copy public Session group links into the Session app!<?php
?>">
<?php
?>
<meta name="keywords" content="session communities,session groups,session group list,session chat">
<meta property="og:title" content="Session Messenger — Regional Communities">
<meta
property="og:description"
content="Discover places to chat with people from your country!"
>
<meta property="og:type" content="website">
<meta property="og:locale" content="en_US"/>

@ -0,0 +1,16 @@
<?php
require_once '+getenv.php';
require_once 'php/utils/getopt.php';
require_once 'php/servers/room-database.php';
require_once 'sites/_fragment/+room-sieve.php';
$room_database = CommunityDatabase::read_from_file($ROOMS_FILE)->fetch_assets();
$listing_database = CommunityListingDatabase::resolve_listings_from_ini($LISTINGS_INI, $room_database->servers);
$rooms =
RoomSieve::takeRooms($listing_database->get_listing('regional')->rooms)
->saveStickies()
->applyPreferentialSort()
->getWithStickies();
include "+templates/index.php";
?>

@ -0,0 +1 @@
<h1 id="headline">Tech Session Communities</h1>

@ -0,0 +1,15 @@
<title>Tech Communities — sessioncommunities.online</title>
<meta name="description" content="Chat in Session Communities! <?php
?>Use our list to join your favorite Community in Session Messenger. <?php
?>Copy public Session group links into the Session app!<?php
?>">
<?php
?>
<meta name="keywords" content="session communities,session groups,session group list,session chat">
<meta property="og:title" content="Session Messenger — Regional Communities">
<meta
property="og:description"
content="Tech Communities — chat in the Session app!"
>
<meta property="og:type" content="website">
<meta property="og:locale" content="en_US"/>

@ -0,0 +1,16 @@
<?php
require_once '+getenv.php';
require_once 'php/utils/getopt.php';
require_once 'php/servers/room-database.php';
require_once 'sites/_fragment/+room-sieve.php';
$room_database = CommunityDatabase::read_from_file($ROOMS_FILE)->fetch_assets();
$listing_database = CommunityListingDatabase::resolve_listings_from_ini($LISTINGS_INI, $room_database->servers);
$rooms =
RoomSieve::takeRooms($listing_database->get_listing('tech')->rooms)
->saveStickies()
->applyPreferentialSort()
->getWithStickies();
include "+templates/index.php";
?>
Loading…
Cancel
Save