2020-08-31 04:08:39 +00:00
< ? php
namespace Zotlabs\Module ;
use Zotlabs\Lib\Libzotdir ;
class Sites extends \Zotlabs\Web\Controller {
function get () {
2020-09-09 06:39:51 +00:00
$sql_extra = (( $_REQUEST [ 'project' ]) ? " and site_project = ' " . escape_tags ( protect_sprintf ( $_REQUEST [ 'project' ])) . " ' " : " " );
2020-08-31 04:08:39 +00:00
2020-09-15 02:23:18 +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.' );
2020-09-03 06:02:32 +00:00
$j = [];
2020-09-09 06:39:51 +00:00
$r = q ( " select * from site where site_type = %d and site_flags != 256 and site_dead = 0 $sql_extra order by site_update desc " ,
2020-09-03 06:02:32 +00:00
intval ( SITE_TYPE_ZOT )
);
if ( $r ) {
foreach ( $r as $rr ) {
if ( $rr [ 'site_access' ] == ACCESS_FREE )
2020-09-09 06:39:51 +00:00
$access = t ( 'free' );
2020-09-03 06:02:32 +00:00
elseif ( $rr [ 'site_access' ] == ACCESS_PAID )
2020-09-09 06:39:51 +00:00
$access = t ( 'subscription' );
2020-09-03 06:02:32 +00:00
elseif ( $rr [ 'site_access' ] == ACCESS_TIERED )
2020-09-09 06:39:51 +00:00
$access = t ( 'tiered service plans' );
2020-09-03 06:02:32 +00:00
else
$access = 'private' ;
2020-08-31 04:08:39 +00:00
2020-09-03 06:02:32 +00:00
if ( $rr [ 'site_register' ] == REGISTER_OPEN )
2020-09-09 06:39:51 +00:00
$register = t ( 'Register' );
2020-09-03 06:02:32 +00:00
elseif ( $rr [ 'site_register' ] == REGISTER_APPROVE )
2020-09-09 06:39:51 +00:00
$register = t ( 'Register (requires approval)' );
2020-09-03 06:02:32 +00:00
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' ]);
2020-09-10 04:23:01 +00:00
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-03 06:02:32 +00:00
}
2020-09-09 06:39:51 +00:00
if ( ! $logo ) {
$logo = 'images/default_profile_photos/red_koala_trans/300.png' ;
}
if ( $rr [ 'site_sellpage' ]) {
$register_link = $rr [ 'site_sellpage' ];
2020-09-03 06:02:32 +00:00
}
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' => 'Affiliated Sites' ,
'$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' ]);
}
}