Skip to content

Commit a17ae8a

Browse files
committed
Merge pull request #131 from Lewiscowles1986/patch-2
can now get number of messages in a sub-folder
2 parents 55a2756 + a3b85d5 commit a17ae8a

File tree

3 files changed

+21
-12
lines changed

3 files changed

+21
-12
lines changed

src/Fetch/Server.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,11 +322,22 @@ protected function setImapStream()
322322
/**
323323
* This returns the number of messages that the current mailbox contains.
324324
*
325+
* @param string $mailbox
325326
* @return int
326327
*/
327-
public function numMessages()
328+
public function numMessages($mailbox='')
328329
{
329-
return imap_num_msg($this->getImapStream());
330+
$cnt = 0;
331+
if ($mailbox==='') {
332+
$cnt = imap_num_msg($this->getImapStream());
333+
} elseif ($this->hasMailbox($mailbox) && $mailbox !== '') {
334+
$oldMailbox = $this->getMailBox();
335+
$this->setMailbox($mailbox);
336+
$cnt = $this->numMessages();
337+
$this->setMailbox($oldMailbox);
338+
}
339+
340+
return ((int) $cnt);
330341
}
331342

332343
/**

tests/Fetch/Test/MessageTest.php

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -212,32 +212,29 @@ public function testMoveToMailbox()
212212
// Testing by moving message from "Test Folder" to "Sent"
213213

214214
// Count Test Folder
215-
$server->setMailBox('Test Folder');
216-
$testFolderNumStart = $server->numMessages();
215+
$testFolderNumStart = $server->numMessages('Test Folder');
216+
$server->setMailbox('Test Folder');
217+
$this->assertEquals($testFolderNumStart, $server->numMessages(), 'Server presents consistent information between numMessages when mailbox set and directly queried for number of messages');
217218

218219
// Get message from Test Folder
219-
$message = $server->getMessageByUid(1);
220+
$message = current($server->getMessages(1));
220221
$this->assertInstanceOf('\Fetch\Message', $message, 'Server returned Message.');
221222

222223
// Switch to Sent folder, count messages
223-
$server->setMailBox('Sent');
224-
$sentFolderNumStart = $server->numMessages();
224+
$sentFolderNumStart = $server->numMessages('Sent');
225+
$server->setMailbox('Sent');
226+
$this->assertEquals($sentFolderNumStart, $server->numMessages(), 'Server presents consistent information between numMessages when mailbox set and directly queried for number of messages');
225227

226228
// Switch to "Flagged" folder in order to test that function properly returns to it
227229
$this->assertTrue($server->setMailBox('Flagged Email'));
228-
229230
// Move the message!
230231
$this->assertTrue($message->moveToMailBox('Sent'));
231-
232232
// Make sure we're still in the same folder
233233
$this->assertEquals('Flagged Email', $server->getMailBox(), 'Returned Server back to right mailbox.');
234-
235234
$this->assertAttributeEquals('Sent', 'mailbox', $message, 'Message mailbox changed to new location.');
236-
237235
// Make sure Test Folder lost a message
238236
$this->assertTrue($server->setMailBox('Test Folder'));
239237
$this->assertEquals($testFolderNumStart - 1, $server->numMessages(), 'Message moved out of Test Folder.');
240-
241238
// Make sure Sent folder gains one
242239
$this->assertTrue($server->setMailBox('Sent'));
243240
$this->assertEquals($sentFolderNumStart + 1, $server->numMessages(), 'Message moved into Sent Folder.');

tests/Fetch/Test/ServerTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ public function testNumMessages()
100100
$server = static::getServer();
101101
$numMessages = $server->numMessages();
102102
$this->assertEquals(self::$num_messages_inbox, $numMessages);
103+
$this->assertEquals(0, $server->numMessages( 'DOESNOTEXIST'.time() ) );
103104
}
104105

105106
public function testGetMessages()

0 commit comments

Comments
 (0)