streams/Zotlabs/Module/Sites.php

149 lines
5.2 KiB
PHP
Raw Normal View History

2020-08-31 04:08:39 +00:00
<?php
2021-12-03 03:01:39 +00:00
2020-08-31 04:08:39 +00:00
namespace Zotlabs\Module;
use Zotlabs\Lib\Libzotdir;
2021-04-15 02:19:06 +00:00
use Zotlabs\Lib\LibBlock;
2021-12-02 22:33:36 +00:00
use Zotlabs\Web\Controller;
2020-08-31 04:08:39 +00:00
2021-12-02 23:02:31 +00:00
class Sites extends Controller
{
public function get()
{
$sql_extra = (($_REQUEST['project']) ? " and site_project = '" . escape_tags(protect_sprintf(dbesc($_REQUEST['project']))) . "' " : "");
$desc = t('This page provides information about related projects and websites that are currently known to this system. These are a small fraction of the thousands of websites and dozens of projects and providers which make up the fediverse.');
$j = [];
$r = q("select * from site where site_flags != 256 and site_dead = 0 $sql_extra order by site_update desc");
if ($r) {
$blocked = LibBlock::fetch($channel['channel_id'], BLOCKTYPE_SERVER);
foreach ($r as $rr) {
$found_block = false;
if ($blocked) {
foreach ($blocked as $b) {
if (strpos($rr['site_url'], $b['block_entity']) !== false) {
$found_block = true;
break;
}
}
if ($found_block) {
continue;
}
}
if (!check_siteallowed($rr['site_url'])) {
continue;
}
2021-12-03 03:01:39 +00:00
if ($rr['site_access'] == ACCESS_FREE) {
2021-12-02 23:02:31 +00:00
$access = t('free');
2021-12-03 03:01:39 +00:00
} elseif ($rr['site_access'] == ACCESS_PAID) {
2021-12-02 23:02:31 +00:00
$access = t('subscription');
2021-12-03 03:01:39 +00:00
} elseif ($rr['site_access'] == ACCESS_TIERED) {
2021-12-02 23:02:31 +00:00
$access = t('tiered service plans');
2021-12-03 03:01:39 +00:00
} else {
2021-12-02 23:02:31 +00:00
$access = 'private';
2021-12-03 03:01:39 +00:00
}
2021-12-02 23:02:31 +00:00
2021-12-03 03:01:39 +00:00
if ($rr['site_register'] == REGISTER_OPEN) {
2021-12-02 23:02:31 +00:00
$register = t('Register');
2021-12-03 03:01:39 +00:00
} elseif ($rr['site_register'] == REGISTER_APPROVE) {
2021-12-02 23:02:31 +00:00
$register = t('Register (requires approval)');
2021-12-03 03:01:39 +00:00
} else {
2021-12-02 23:02:31 +00:00
$register = 'closed';
2021-12-03 03:01:39 +00:00
}
2021-12-02 23:02:31 +00:00
$sitename = get_sconfig($rr['site_url'], 'system', 'sitename', $rr['site_url']);
if ($sitename !== $rr['site_url']) {
$sitename .= ' (' . $rr['site_url'] . ')';
}
$disabled = (($access === 'private' || $register === 'closed') ? true : false);
$logo = get_sconfig($rr['site_url'], 'system', 'logo');
$about = get_sconfig($rr['site_url'], 'system', 'about');
if (!$logo && file_exists('images/' . strtolower($rr['site_project']) . '.png')) {
$logo = 'images/' . strtolower($rr['site_project']) . '.png';
}
if (!$logo) {
if (intval($rr['site_type']) != 0) {
$logo = 'images/activitypub-300.png';
} else {
$logo = 'images/default_profile_photos/red_koala_trans/300.png';
}
}
if ($rr['site_sellpage']) {
$register_link = $rr['site_sellpage'];
} else {
$register_link = $rr['site_url'] . '/register';
}
$j[] = [
'profile_link' => $rr['site_url'],
'name' => $sitename,
'access' => $access,
'register' => $register_link,
'sellpage' => $rr['site_sellpage'],
'location_label' => t('Location'),
'location' => $rr['site_location'],
'project' => $rr['site_project'],
'version' => $rr['site_version'],
'photo' => $logo,
'about' => bbcode($about),
'hash' => substr(hash('sha256', $rr['site_url']), 0, 16),
'network_label' => t('Project'),
'network' => $rr['site_project'],
'version_label' => t('Version'),
'version' => $rr['site_version'],
'private' => $disabled,
'connect' => (($disabled) ? '' : $register_link),
'connect_label' => $register,
'access' => (($access === 'private') ? '' : $access),
'access_label' => t('Access type'),
];
}
}
$o = replace_macros(get_markup_template('sitentry_header.tpl'), [
'$dirlbl' => t('Affiliated Sites'),
'$desc' => $desc,
'$entries' => $j,
]);
return $o;
}
public function sort_sites($a)
{
$ret = [];
if ($a) {
foreach ($a as $e) {
$projectname = explode(' ', $e['project']);
$ret[$projectname[0]][] = $e;
}
}
$projects = array_keys($ret);
rsort($projects);
$newret = [];
foreach ($projects as $p) {
$newret[$p] = $ret[$p];
}
return $newret;
}
public function sort_versions($a, $b)
{
return version_compare($b['version'], $a['version']);
}
2020-08-31 04:08:39 +00:00
}