imap_client with get_emails
This commit is contained in:
parent
5149869952
commit
a3f5c35406
27
src/imap_client.php
Normal file
27
src/imap_client.php
Normal file
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
|
||||
|
||||
class ImapClient {
|
||||
|
||||
/*PhpImap\Mailbox */
|
||||
private $mailbox;
|
||||
|
||||
public function __construct($imapPath, $login, $password) {
|
||||
$this->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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user