streams/Zotlabs/Module/Sites.php

147 lines
3.9 KiB
PHP
Raw Normal View History

2020-08-31 04:08:39 +00:00
<?php
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 22:33:36 +00:00
class Sites extends Controller {
2020-08-31 04:08:39 +00:00
function get() {
2021-04-01 21:46:50 +00:00
$sql_extra = (($_REQUEST['project']) ? " and site_project = '" . escape_tags(protect_sprintf(dbesc($_REQUEST['project']))) . "' " : "");
2020-08-31 04:08:39 +00:00
$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 = [];
2020-11-24 05:28:33 +00:00
$r = q("select * from site where site_flags != 256 and site_dead = 0 $sql_extra order by site_update desc");
2021-04-15 02:19:06 +00:00
if ($r) {
2021-04-15 02:19:06 +00:00
$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;
}
if ($rr['site_access'] == ACCESS_FREE)
2020-09-09 06:39:51 +00:00
$access = t('free');
elseif ($rr['site_access'] == ACCESS_PAID)
2020-09-09 06:39:51 +00:00
$access = t('subscription');
elseif ($rr['site_access'] == ACCESS_TIERED)
2020-09-09 06:39:51 +00:00
$access = t('tiered service plans');
else
$access = 'private';
2020-08-31 04:08:39 +00:00
if ($rr['site_register'] == REGISTER_OPEN)
2020-09-09 06:39:51 +00:00
$register = t('Register');
elseif ($rr['site_register'] == REGISTER_APPROVE)
2020-09-09 06:39:51 +00:00
$register = t('Register (requires approval)');
else
$register = 'closed';
2020-08-31 04:08:39 +00:00
2020-09-09 06:39:51 +00:00
$sitename = get_sconfig($rr['site_url'],'system','sitename',$rr['site_url']);
if ($sitename !== $rr['site_url']) {
$sitename .= ' (' . $rr['site_url'] . ')';
}
2020-09-09 06:39:51 +00:00
$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';
}
2020-09-09 06:39:51 +00:00
if (! $logo) {
2020-11-24 05:28:33 +00:00
if (intval($rr['site_type']) != 0) {
$logo = 'images/activitypub-300.png';
}
else {
$logo = 'images/default_profile_photos/red_koala_trans/300.png';
}
2020-09-09 06:39:51 +00:00
}
if ($rr['site_sellpage']) {
$register_link = $rr['site_sellpage'];
}
2020-09-09 06:39:51 +00:00
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'),
];
2020-08-31 04:08:39 +00:00
}
2020-09-09 06:39:51 +00:00
}
$o = replace_macros(get_markup_template('sitentry_header.tpl'), [
'$dirlbl' => t('Affiliated Sites'),
2020-09-09 06:39:51 +00:00
'$desc' => $desc,
'$entries' => $j,
]);
2020-08-31 04:08:39 +00:00
return $o;
}
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;
}
function sort_versions($a,$b) {
return version_compare($b['version'],$a['version']);
}
}