You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sessioncommunities.online/sites/+components/table/community-row.php

135 lines
3.8 KiB
PHP

<?php
require_once 'php/utils/utils.php';
require_once 'php/servers/servers-rooms.php';
require_once 'php/assets/room-invites.php';
require_once 'php/assets/room-icons.php';
require_once 'php/assets/server-icons.php';
function renderCommunityRoomRow(CommunityRoom $room) {
if ($room->is_off_record()) {
// This can later allow SOGS
// to pass server-wide info using hidden dummy rooms.
return;
}
$pubkey = $room->server->get_pubkey();
$icon_hue = hexdec($pubkey[2] . $pubkey[2]);
$icon_color = "hsl($icon_hue, 80%, 50%)";
$server_icon = server_icon($room->server, '64x64');
$pubkey_shorthand = strtoupper($pubkey[0] . $pubkey[1]);
$id = html_sanitize($room->get_room_identifier());
$language = html_sanitize($room->get_language_flag());
$name = html_sanitize($room->name);
// $name_trunc = truncate($name, 16);
$name_trunc = "Community";
$desc = html_sanitize($room->description);
$users = html_sanitize($room->active_users);
$users_cutoff = html_sanitize($room->format_user_cutoff_period());
$users_tooltip = $room->read
? "$users active users in the last $users_cutoff"
: "$users users with read privileges, ??? others";
$users = $room->read ? $users : "";
$preview_link = html_sanitize($room->get_preview_url());
$join_link = html_sanitize($room->get_join_url());
$pubkey = html_sanitize($pubkey);
$hostname = html_sanitize($room->server->get_hostname());
$class_list = ["room-row"];
if ($room->is_stickied_room()) {
$class_list[] = "room-row-stickied";
}
$classname = implode(" ", $class_list);
/**
* Note on refactoring:
* Icon is hard to move to JSON because it'd have to be generated by fetching code
* Icon safety is depended on by CSS styles
*/
?>
<tr class="<?=$classname?>"
itemscope
itemtype="https://schema.org/EntryPoint"
data-id="<?=$id?>"
data-icon='<?=room_icon($room, '64x64')?>:<?=$room->icon_safety()?>'
>
<td class="td_language" title="Language flag for '<?=$name_trunc?>'"><?=$language?></td>
<td class="td_name">
<a
href="<?=$preview_link?>"
target="_blank"
title="Click here to preview <?=$name_trunc?>"
rel="noopener noreferrer external nofollow"
itemprop="url"
><span itemprop="name"><?=
$name
?></span></a>
<span><?php /* class="tags-container" */ ?>
<?php foreach ($room->get_showcased_room_tags() as $tag): ?>
<span
class="tag <?=$tag->get_tag_classname()?> badge"
title="<?=$tag->get_description_sanitized()?>"
><?=
truncate($tag->get_text_sanitized(), 16)
?></span>
<?php endforeach; ?>
</span>
</td>
<td
class="td_description"
title="Description"
itemprop="description"
><?=$desc?></td>
<td
class="td_users"
title="<?=$users_tooltip?>."
><?=$users?></td>
<td class="td_preview">
<a
href="<?=$preview_link?>"
title="Preview <?=$name_trunc?>"
target="_blank"
rel="noopener noreferrer external nofollow"
>
<span></span>
</a>
</td>
<td class="td_qr_code">
<a
href="<?=room_qr_code($room)?>"
target="_blank"
title="Click here to view details for <?=$name_trunc?>"
>
<div></div>
</a>
</td>
<td class="td_server_icon"
title="Host: <?=$hostname?>"
>
<?php if (empty($server_icon)): ?>
<div class="td_server_icon-circle" style="background-color: <?=$icon_color?>">
<span class="td_server_icon-text"><?=$pubkey_shorthand?></span>
</div>
<?php else: ?>
<div class="td_server_icon-circle" style="background-image: url('<?=$server_icon?>')"></div>
<?php endif; ?>
</td>
<td class="td_join_url">
<div>
<span></span><?php /* Join URL preview */ ?>
<a
class="noscript"
href="<?=$join_link?>"
title="Right click -> Copy link"
rel="external nofollow"
>Copy this</a>
</div>
</td>
</tr>
<?php
}
?>