'uer.`Timestamp`',
'outcome' => 'uer.`Outcome`',
'handled_timestamp' => 'uer.`HandledTimestamp`');
$Where = [];
$Joins = [];
// Default orderings
$OrderBy = "uer.`Timestamp`";
$OrderWay = "DESC";
// Build query for different views
// TODO: Work with encrypted values
if (!isset($_GET['view'])) {
$_GET['view'] = 'main';
}
switch ($_GET['view']) {
case 'perfect':
$Where[] = "um.`Email` = uer.`Email`";
$Joins[] = "JOIN `users_main` um ON um.`ID` = uer.`UserID`";
$Where[] = "uer.`IP` = (SELECT `IP` FROM `users_history_ips` uhi1 WHERE uhi1.`StartTime` = (SELECT MAX(`StartTime`) FROM `users_history_ips` uhi2 WHERE uhi2.`UserID` = uer.`UserID` ORDER BY `StartTime` DESC LIMIT 1))";
$Where[] = "(SELECT 1 FROM `users_history_ips` uhi WHERE uhi.`IP` = uer.`IP` AND uhi.`UserID` != uer.`UserID`) IS NULL";
$Where[] = "ui.`BanReason` = '3'";
break;
case 'minus_ip':
$Where[] = "um.`Email` = uer.`Email`";
$Joins[] = "JOIN `users_main` um ON um.`ID` = uer.`UserID`";
$Where[] = "ui.`BanReason` = '3'";
break;
case 'invalid_email':
$Joins[] = "JOIN `users_main` um ON um.`ID` = uer.`UserID`";
$Where[] = "um.`Email` != uer.`Email`";
break;
case 'ip_overlap':
$Joins[] = "JOIN `users_history_ips` uhi ON uhi.`IP` = uer.`IP` AND uhi.`UserID` != uer.`UserID`";
break;
case 'manual_disable':
$Where[] = "ui.`BanReason` != '3'";
break;
default:
$Joins[] = '';
break;
}
// End views
// Build query further based on search
if (isset($_GET['search'])) {
$Username = db_string($_GET['username']);
$IP = db_string($_GET['ip']);
$SubmittedBetween = db_string($_GET['submitted_between']);
$SubmittedTimestamp1 = db_string($_GET['submitted_timestamp1']);
$SubmittedTimestamp2 = db_string($_GET['submitted_timestamp2']);
$HandledUsername = db_string($_GET['handled_username']);
$HandledBetween = db_string($_GET['handled_between']);
$HandledTimestamp1 = db_string($_GET['handled_timestamp1']);
$HandledTimestamp2 = db_string($_GET['handled_timestamp2']);
$OutcomeSearch = (int) $_GET['outcome_search'];
$Checked = (isset($_GET['show_checked']));
if (array_key_exists($_GET['order'], $OrderBys)) {
$OrderBy = $OrderBys[$_GET['order']];
}
if ($_GET['way'] === 'asc' || $_GET['way'] === 'desc') {
$OrderWay = $_GET['way'];
}
if (!empty($Username)) {
$Joins[] = "JOIN `users_main` um1 ON um1.`ID` = uer.`UserID`";
}
if (!empty($HandledUsername)) {
$Joins[] = "JOIN `users_main` um2 ON um2.`ID` = uer.`CheckedBy`";
}
$Where = array_merge($Where, AutoEnable::build_search_query(
$Username,
$IP,
$SubmittedBetween,
$SubmittedTimestamp1,
$SubmittedTimestamp2,
$HandledUsername,
$HandledBetween,
$HandledTimestamp1,
$HandledTimestamp2,
$OutcomeSearch,
$Checked
));
}
// End search queries
$ShowChecked = (isset($Checked) && $Checked) || !empty($HandledUsername) || !empty($HandledTimestamp1) || !empty($OutcomeSearch);
if (!$ShowChecked || count($Where) === 0) {
// If no search is entered, add this to the query to only show unchecked requests
$Where[] = '`Outcome` IS NULL';
}
$QueryID = $DB->query("
SELECT SQL_CALC_FOUND_ROWS
uer.`ID`,
uer.`UserID`,
uer.`Email`,
uer.`IP`,
uer.`UserAgent`,
uer.`Timestamp`,
ui.`BanReason`,
uer.`CheckedBy`,
uer.`HandledTimestamp`,
uer.`Outcome`
FROM
`users_enable_requests` AS uer
JOIN `users_info` ui ON
ui.`UserID` = uer.`UserID` ".implode(' ', $Joins)."
WHERE
".implode(' AND ', $Where)."
ORDER BY
$OrderBy $OrderWay
LIMIT
$Limit
");
$DB->query("SELECT FOUND_ROWS()");
list($NumResults) = $DB->next_record();
$DB->set_query_id($QueryID);
?>
Username
Checked
query("
SELECT
COUNT(`CheckedBy`),
`CheckedBy`
FROM
`users_enable_requests`
WHERE
`CheckedBy` IS NOT NULL
GROUP BY
`CheckedBy`
ORDER BY
COUNT(`CheckedBy`)
DESC
LIMIT 50
");
while (list($Checked, $UserID) = $DB->next_record()) { ?>
=Users::format_username($UserID)?>
=$Checked?>
set_query_id($QueryID); ?>
0) { ?>
No new pending auto enable requests =($_GET['view'] === 'main') ? '' : ' in this view' ?>