Skip to content

Commit b10344e

Browse files
josaphatimamaninyumu1
authored andcommitted
Fix using Hm_IMAP_List instead of Hm_Mailbox
1 parent 3221593 commit b10344e

File tree

4 files changed

+56
-43
lines changed

4 files changed

+56
-43
lines changed

lib/servers.php

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -274,13 +274,26 @@ private static function match($server, $user, $name) {
274274
return false;
275275
}
276276

277+
private static function appendPpasswordAndUsername(array $server) {
278+
$server['password'] = $server['pass'];
279+
$server['username'] = $server['user'];
280+
return $server;
281+
}
282+
277283
public static function getForMailbox($id) {
278284
$server = self::get($id, true);
279285
if ($server) {
280-
$server['password'] = $server['pass'];
281-
$server['username'] = $server['user'];
282-
return $server;
286+
return self::appendPpasswordAndUsername($server);
283287
}
284288
return false;
285289
}
290+
291+
public static function dumpForMailbox($id = false) {
292+
$list = self::dump($id, true);
293+
foreach ($list as $index => $server) {
294+
$server = self::appendPpasswordAndUsername($server);
295+
$list[$index] = $server;
296+
}
297+
return $list;
298+
}
286299
}

modules/imap/handler_modules.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1723,7 +1723,8 @@ public function process() {
17231723
'port' => $auth_server['port'],
17241724
'tls' => $auth_server['tls'],
17251725
'user' => $auth_server['username'],
1726-
'pass' => $auth_server['password']
1726+
'pass' => $auth_server['password'],
1727+
'type' => 'imap',
17271728
);
17281729
if (! empty($auth_server['sieve_config_host'])) {
17291730
$imap_details['sieve_config_host'] = $auth_server['sieve_config_host'];

modules/smtp/functions.php

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@ function get_reply_type($request) {
6666
* @subpackage smtp/functions
6767
*/
6868
if (!hm_exists('send_scheduled_message')) {
69-
function send_scheduled_message($handler, $imap, $folder, $msg_id, $send_now = false) {
70-
$msg_headers = $imap->get_message_headers($folder, $msg_id);
71-
$imap_details = $imap->get_config();
69+
function send_scheduled_message($handler, $mailbox, $folder, $msg_id, $send_now = false) {
70+
$msg_headers = $mailbox->get_message_headers($folder, $msg_id);
71+
$mailbox_details = $mailbox->get_config();
7272

7373
try {
7474
if (empty($msg_headers['X-Schedule'])) {
@@ -78,10 +78,10 @@ function send_scheduled_message($handler, $imap, $folder, $msg_id, $send_now = f
7878
if (new DateTime($msg_headers['X-Schedule']) <= new DateTime() || $send_now) {
7979
$profile = Hm_Profiles::get($msg_headers['X-Profile-ID']);
8080
if (!$profile) {
81-
$profiles = Hm_Profiles::search('server', $imap_details['server']);
81+
$profiles = Hm_Profiles::search('server', $mailbox_details['server']);
8282

8383
if (!$profiles) {
84-
Hm_Debug::add(sprintf('ERRCannot find profiles corresponding with IMAP server: %s', $imap_details['server']));
84+
Hm_Debug::add(sprintf('ERRCannot find profiles corresponding with MAILBOX server: %s', $mailbox_details['server']));
8585
return false;
8686
}
8787
$profile = $profiles[0];
@@ -99,14 +99,14 @@ function send_scheduled_message($handler, $imap, $folder, $msg_id, $send_now = f
9999
}
100100
}
101101

102-
$msg_content = $imap->get_message_content($folder, $msg_id, 0);
102+
$msg_content = $mailbox->get_message_content($folder, $msg_id, 0);
103103
$from = process_address_fld($msg_headers['From']);
104104

105105
$err_msg = $smtp->send_message($from[0]['email'], $recipients, $msg_content, $delivery_receipt);
106106

107107
if (!$err_msg) {
108-
$imap->delete_message($folder, $msg_id, false);
109-
save_sent_msg($handler, $imap->get_config()['id'], $imap, $imap_details, $msg_content, $msg_id, false);
108+
$mailbox->delete_message($folder, $msg_id, false);
109+
save_sent_msg($handler, $mailbox->get_config()['id'], $mailbox, $mailbox_details, $msg_content, $msg_id, false);
110110
return true;
111111
}
112112
}
@@ -121,11 +121,11 @@ function send_scheduled_message($handler, $imap, $folder, $msg_id, $send_now = f
121121
* @subpackage smtp/functions
122122
*/
123123
if (!hm_exists('reschedule_message_sending')) {
124-
function reschedule_message_sending($handler, $imap, $msg_id, $folder, $new_date) {
124+
function reschedule_message_sending($handler, $mailbox, $msg_id, $folder, $new_date) {
125125
if ($new_date == 'now') {
126-
return send_scheduled_message($handler, $imap, $folder, $msg_id, true);
126+
return send_scheduled_message($handler, $mailbox, $folder, $msg_id, true);
127127
}
128-
$msg = $imap->get_message_content($folder, $msg_id, 0);
128+
$msg = $mailbox->get_message_content($folder, $msg_id, 0);
129129
$new_date = get_scheduled_date($new_date);
130130
preg_match("/^X-Schedule:.*(\r?\n[ \t]+.*)*\r?\n?/im", $msg, $matches);
131131

@@ -139,12 +139,12 @@ function reschedule_message_sending($handler, $imap, $msg_id, $folder, $new_date
139139
$msg = rtrim($msg)."\r\n";
140140

141141
$schedule_folder = 'Scheduled';
142-
if (!count($imap->get_folder_status($schedule_folder))) {
142+
if (!count($mailbox->get_folder_status($schedule_folder))) {
143143
return;
144144
}
145145
$res = false;
146-
if ($imap->store_message($schedule_folder, $msg)) {
147-
if ($imap->delete_message($folder, $msg_id, false)) {
146+
if ($mailbox->store_message($schedule_folder, $msg)) {
147+
if ($mailbox->delete_message($folder, $msg_id, false)) {
148148
$res = true;
149149
}
150150
}

modules/smtp/modules.php

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1566,37 +1566,36 @@ class Hm_Handler_send_scheduled_messages extends Hm_Handler_Module {
15661566
* Send delayed messages
15671567
* This should use cron
15681568
*/
1569-
public function process() {
1570-
if (!($this->module_is_supported('imap') || $this->module_is_supported('profiles'))) {
1571-
return;
1572-
}
1569+
public function process() {
1570+
if (!($this->module_is_supported('imap') || $this->module_is_supported('profiles'))) {
1571+
return;
1572+
}
15731573

1574-
$servers = Hm_IMAP_List::dump();
1575-
$scheduled_msg_count = 0;
1574+
$servers = Hm_IMAP_List::dumpForMailbox();
1575+
$scheduled_msg_count = 0;
15761576

1577-
foreach (array_keys($servers) as $server_id) {
1578-
$cache = Hm_IMAP_List::get_cache($this->cache, $server_id);
1579-
$imap = Hm_IMAP_List::connect($server_id, $cache);
1580-
1581-
if ($imap->authed()) {
1582-
$folder = 'Scheduled';
1583-
$ret = $imap->get_messages($folder, 'DATE', false, 'ALL');
1584-
foreach ($ret[1] as $msg) {
1585-
$msg_headers = $imap->get_message_headers($folder, $msg['uid']);
1586-
if (! empty($msg_headers['X-Schedule'])) {
1587-
$scheduled_msg_count++;
1588-
} else {
1589-
continue;
1590-
}
1591-
if (send_scheduled_message($this, $imap, $folder, $msg['uid'])) {
1592-
$scheduled_msg_count++;
1577+
foreach ($servers as $server_id => $config) {
1578+
$mailbox = new Hm_Mailbox($server_id, $this->user_config, $this->session, $config);
1579+
if ($mailbox && $mailbox->connect()) {
1580+
$folder = 'Scheduled';
1581+
$ret = $mailbox->get_messages($folder, 'DATE', false, 'ALL');
1582+
foreach ($ret[1] as $msg) {
1583+
$msg_headers = $mailbox->get_message_headers($folder, $msg['uid']);
1584+
if (! empty($msg_headers['X-Schedule'])) {
1585+
$scheduled_msg_count++;
1586+
} else {
1587+
continue;
1588+
}
1589+
if (send_scheduled_message($this, $mailbox, $folder, $msg['uid'])) {
1590+
$scheduled_msg_count++;
1591+
}
15931592
}
15941593
}
15951594
}
1596-
}
15971595

1598-
$this->out('scheduled_msg_count', $scheduled_msg_count);
1599-
}}
1596+
$this->out('scheduled_msg_count', $scheduled_msg_count);
1597+
}
1598+
}
16001599

16011600
/**
16021601
* Changes the schedule of the message

0 commit comments

Comments
 (0)