controller cleanup

This commit is contained in:
synox 2019-03-11 20:09:26 +07:00
parent fc03444fa1
commit fed05235a4
2 changed files with 21 additions and 15 deletions

View File

@ -15,9 +15,12 @@ class DisplayEmailsController {
public static function invoke(ImapClient $imapClient, array $config) { public static function invoke(ImapClient $imapClient, array $config) {
$address = $_SERVER['QUERY_STRING'] ?? ''; $address = $_SERVER['QUERY_STRING'] ?? '';
// print emails with html template
$user = User::parseDomain($address, $config['blocked_usernames']); $user = User::parseDomain($address, $config['blocked_usernames']);
$user->isInvalid($config['domains']) && RedirectToRandomAddressController::invoke($imapClient, $config); if ($user->isInvalid($config['domains'])) {
RedirectToRandomAddressController::invoke($imapClient, $config);
return;
}
$emails = $imapClient->get_emails($user); $emails = $imapClient->get_emails($user);
DisplayEmailsController::render($emails, $config, $user); DisplayEmailsController::render($emails, $config, $user);
@ -53,15 +56,11 @@ class RedirectToRandomAddressController {
public static function invoke(ImapClient $imapClient, array $config) { public static function invoke(ImapClient $imapClient, array $config) {
$address = User::get_random_address($config{'domains'}); $address = User::get_random_address($config{'domains'});
RedirectToAddressController::render($address); RedirectToAddressController::render($address);
// finish rendering, this might be called from another controller as a fallback
exit();
} }
} }
class HasNewMessagesController { class HasNewMessagesControllerJson {
public static function matches() { public static function matches() {
return ($_GET['action'] ?? null) === "has_new_messages" return ($_GET['action'] ?? null) === "has_new_messages"
&& isset($_GET['email_ids']) && isset($_GET['email_ids'])
@ -74,18 +73,19 @@ class HasNewMessagesController {
$address = $_GET['address']; $address = $_GET['address'];
$user = User::parseDomain($address, $config['blocked_usernames']); $user = User::parseDomain($address, $config['blocked_usernames']);
$user->isInvalid($config['domains']) && RedirectToRandomAddressController::invoke($imapClient, $config); if ($user->isInvalid($config['domains'])) {
render_error(400, "invalid email address");
}
$emails = $imapClient->get_emails($user); $emails = $imapClient->get_emails($user);
$knownMailIds = explode('|', $email_ids); $knownMailIds = explode('|', $email_ids);
$newMailIds = array_map(function ($mail) { $newMailIds = array_map(function ($mail) {
return $mail->id; return $mail->id;
}, $emails); }, $emails);
$onlyNewMailIds = array_diff($newMailIds, $knownMailIds); $onlyNewMailIds = array_diff($newMailIds, $knownMailIds);
HasNewMessagesController::render(count($onlyNewMailIds)); HasNewMessagesControllerJson::render(count($onlyNewMailIds));
} }
public static function render($counter) { public static function render($counter) {
@ -107,7 +107,10 @@ class DownloadEmailController {
$address = $_GET['address']; $address = $_GET['address'];
$user = User::parseDomain($address, $config['blocked_usernames']); $user = User::parseDomain($address, $config['blocked_usernames']);
$user->isInvalid($config['domains']) && RedirectToRandomAddressController::invoke($imapClient, $config); if ($user->isInvalid($config['domains'])) {
RedirectToRandomAddressController::invoke($imapClient, $config);
return;
}
$download_email_id = filter_var($email_id, FILTER_SANITIZE_NUMBER_INT); $download_email_id = filter_var($email_id, FILTER_SANITIZE_NUMBER_INT);
$full_email = $imapClient->load_one_email_fully($download_email_id, $user); $full_email = $imapClient->load_one_email_fully($download_email_id, $user);
@ -138,7 +141,10 @@ class DeleteEmailController {
$address = $_GET['address']; $address = $_GET['address'];
$user = User::parseDomain($address, $config['blocked_usernames']); $user = User::parseDomain($address, $config['blocked_usernames']);
$user->isInvalid($config['domains']) && RedirectToRandomAddressController::invoke($imapClient, $config); if ($user->isInvalid($config['domains'])) {
RedirectToRandomAddressController::invoke($imapClient, $config);
return;
}
$delete_email_id = filter_var($email_id, FILTER_SANITIZE_NUMBER_INT); $delete_email_id = filter_var($email_id, FILTER_SANITIZE_NUMBER_INT);
if ($imapClient->delete_email($delete_email_id, $user)) { if ($imapClient->delete_email($delete_email_id, $user)) {

View File

@ -28,8 +28,8 @@ if (DisplayEmailsController::matches()) {
DownloadEmailController::invoke($imapClient, $config); DownloadEmailController::invoke($imapClient, $config);
} elseif (DeleteEmailController::matches()) { } elseif (DeleteEmailController::matches()) {
DeleteEmailController::invoke($imapClient, $config); DeleteEmailController::invoke($imapClient, $config);
} elseif (HasNewMessagesController::matches()) { } elseif (HasNewMessagesControllerJson::matches()) {
HasNewMessagesController::invoke($imapClient, $config); HasNewMessagesControllerJson::invoke($imapClient, $config);
} else { } else {
// If requesting the main site, just redirect to a new random mailbox. // If requesting the main site, just redirect to a new random mailbox.
RedirectToRandomAddressController::invoke($imapClient, $config); RedirectToRandomAddressController::invoke($imapClient, $config);