diff --git a/src/imap_client.php b/src/imap_client.php new file mode 100644 index 0000000..44a1fde --- /dev/null +++ b/src/imap_client.php @@ -0,0 +1,27 @@ +mailbox = new PhpImap\Mailbox($imapPath, $login, $password); + } + + /** + * print all mails for the given $user. + * @param $user User + * @return array + */ + function get_emails(User $user): array { + // Search for mails with the recipient $address in TO or CC. + $mailsIdsTo = imap_sort($this->mailbox->getImapStream(), SORTARRIVAL, true, SE_UID, 'TO "' . $user->address . '"'); + $mailsIdsCc = imap_sort($this->mailbox->getImapStream(), SORTARRIVAL, true, SE_UID, 'CC "' . $user->address . '"'); + $mail_ids = array_merge($mailsIdsTo, $mailsIdsCc); + + $emails = _load_emails($mail_ids, $user); + return $emails; + } +} \ No newline at end of file diff --git a/src/index.php b/src/index.php index 6373137..b3f3bab 100644 --- a/src/index.php +++ b/src/index.php @@ -5,18 +5,23 @@ require_once '../../config.php'; # load php dependencies: require_once './backend-libs/autoload.php'; -$mailbox = new PhpImap\Mailbox($config['imap']['url'], - $config['imap']['username'], - $config['imap']['password']); require_once './user.php'; require_once './autolink.php'; require_once './pages.php'; require_once './router.php'; +require_once './imap_client.php'; $router = new Router($_SERVER['REQUEST_METHOD'], $_GET['action'] ?? NULL, $_GET, $_POST, $_SERVER['QUERY_STRING'], $config); $page = $router->route(); -$page->invoke(); + +// TODO: remove $mailbox +$mailbox = new PhpImap\Mailbox($config['imap']['url'], + $config['imap']['username'], + $config['imap']['password']); + +$imapClient = new ImapClient($config['imap']['url'], $config['imap']['username'], $config['imap']['password']); +$page->invoke($imapClient); // delete after each request delete_old_messages(); @@ -32,22 +37,7 @@ function error($status, $text) { die(); } -/** - * print all mails for the given $user. - * @param $user User - * @return array - */ -function get_emails($user) { - global $mailbox; - // Search for mails with the recipient $address in TO or CC. - $mailsIdsTo = imap_sort($mailbox->getImapStream(), SORTARRIVAL, true, SE_UID, 'TO "' . $user->address . '"'); - $mailsIdsCc = imap_sort($mailbox->getImapStream(), SORTARRIVAL, true, SE_UID, 'CC "' . $user->address . '"'); - $mail_ids = array_merge($mailsIdsTo, $mailsIdsCc); - - $emails = _load_emails($mail_ids, $user); - return $emails; -} /** diff --git a/src/pages.php b/src/pages.php index aa5925b..8e09a5e 100644 --- a/src/pages.php +++ b/src/pages.php @@ -2,7 +2,7 @@ abstract class Page { - function invoke() { + function invoke(ImapClient $imapClient) { } function if_invalid_redirect_to_random(User $user, array $config_domains) { @@ -22,7 +22,7 @@ class RedirectToAddressPage extends Page { $this->domain = $domain; } - function invoke() { + function invoke(ImapClient $imapClient) { $user = User::parseUsernameAndDomain($this->username, $this->domain); header("location: ?" . $user->username . "@" . $user->domain); } @@ -41,7 +41,7 @@ class DownloadEmailPage extends Page { } - function invoke() { + function invoke(ImapClient $imapClient) { $user = User::parseDomain($this->address); $this->if_invalid_redirect_to_random($user, $this->config_domains); @@ -62,7 +62,7 @@ class DeleteEmailPage extends Page { $this->config_domains = $config_domains; } - function invoke() { + function invoke(ImapClient $imapClient) { $user = User::parseDomain($this->address); $this->if_invalid_redirect_to_random($user, $this->config_domains); @@ -79,7 +79,7 @@ class RedirectToRandomAddressPage extends Page { $this->config_domains = $config_domains; } - function invoke() { + function invoke(ImapClient $imapClient) { redirect_to_random($this->config_domains); } @@ -95,20 +95,20 @@ class DisplayEmailsPage extends Page { } - function invoke() { + function invoke(ImapClient $imapClient) { // print emails with html template $user = User::parseDomain($this->address); $this->if_invalid_redirect_to_random($user, $this->config['domains']); global $emails; global $config; - $emails = get_emails($user); + $emails = $imapClient->get_emails($user); require "frontend.template.php"; } } class InvalidRequestPage extends Page { - function invoke() { + function invoke(ImapClient $imapClient) { error(400, "Bad Request"); } }