mirror of
https://github.com/OPSnet/Gazelle.git
synced 2026-01-16 18:04:34 -05:00
57 lines
2.6 KiB
PHP
57 lines
2.6 KiB
PHP
<?php
|
|
|
|
$Viewer = new Gazelle\User($LoggedUser['ID']);
|
|
$userMan = new Gazelle\Manager\User;
|
|
$user = $userMan->findById(isset($_REQUEST['userid']) ? (int)$_REQUEST['userid'] : $LoggedUser['ID']);
|
|
if (is_null($user)) {
|
|
error(404);
|
|
}
|
|
$userId = $user->id();
|
|
$ownProfile = $user->id() == $Viewer->id();
|
|
if (!($Viewer->permitted('users_view_invites') || ($ownProfile && $user->canPurchaseInvite()))) {
|
|
error(403);
|
|
}
|
|
|
|
$userSourceRaw = array_filter($_POST, function ($x) { return preg_match('/^user-\d+$/', $x); }, ARRAY_FILTER_USE_KEY);
|
|
$userSource = [];
|
|
foreach ($userSourceRaw as $fieldName => $fieldValue) {
|
|
if (preg_match('/^user-(\d+)$/', $fieldName, $userMatch) && preg_match('/^s-(\d+)$/', $fieldValue, $sourceMatch)) {
|
|
$userSource[$userMatch[1]] = (int)$sourceMatch[1];
|
|
}
|
|
}
|
|
|
|
$invSourceMan = new Gazelle\Manager\InviteSource;
|
|
if (count($userSource)) {
|
|
$invSourceMan->modifyUserSource($userId, $userSource);
|
|
}
|
|
|
|
$heading = new \Gazelle\Util\SortableTableHeader('joined', [
|
|
// see Gazelle\User::inviteList() for these table aliases
|
|
'id' => ['dbColumn' => 'um.ID', 'defaultSort' => 'desc'],
|
|
'username' => ['dbColumn' => 'um.Username', 'defaultSort' => 'desc', 'text' => 'Username'],
|
|
'email' => ['dbColumn' => 'um.Email', 'defaultSort' => 'desc', 'text' => 'Email'],
|
|
'joined' => ['dbColumn' => 'ui.JoinDate', 'defaultSort' => 'desc', 'text' => 'Joined'],
|
|
'lastseen' => ['dbColumn' => 'ula.last_access', 'defaultSort' => 'desc', 'text' => 'Last Seen'],
|
|
'uploaded' => ['dbColumn' => 'uls.Uploaded', 'defaultSort' => 'desc', 'text' => 'Uploaded'],
|
|
'downloaded' => ['dbColumn' => 'uls.Downloaded', 'defaultSort' => 'desc', 'text' => 'Downloaded'],
|
|
'ratio' => ['dbColumn' => '(uls.Uploaded / uls.Downloaded)', 'defaultSort' => 'desc', 'text' => 'Ratio'],
|
|
]);
|
|
|
|
View::show_header('Invites');
|
|
|
|
echo $Twig->render('user/invited.twig', [
|
|
'auth' => $user->auth(),
|
|
'edit_source' => ($_GET['edit'] ?? '') === 'source',
|
|
'heading' => $heading,
|
|
'invited' => $user->inviteList($heading->getOrderBy(), $heading->getOrderDir()),
|
|
'inviter_config' => $invSourceMan->inviterConfigurationActive($userId),
|
|
'invites_open' => $userMan->newUsersAllowed() || $user->permitted('site_can_invite_always'),
|
|
'invite_source' => $invSourceMan->userSource($userId),
|
|
'own_profile' => $ownProfile,
|
|
'user' => $user,
|
|
'user_source' => $invSourceMan->userSource($userId),
|
|
'view_pool' => $user->permitted('users_view_invites'),
|
|
'wiki_article' => 116,
|
|
]);
|
|
View::show_footer();
|