113 lines
3.4 KiB
PHP
113 lines
3.4 KiB
PHP
<?php
|
|
/**
|
|
* Copyright 2005-2017 Horde LLC (http://www.horde.org/)
|
|
*
|
|
* See the enclosed file COPYING for license information (GPL). If you
|
|
* did not receive this file, see http://www.horde.org/licenses/gpl.
|
|
*
|
|
* @category Horde
|
|
* @copyright 2005-2017 Horde LLC
|
|
* @license http://www.horde.org/licenses/gpl GPL
|
|
* @package IMP
|
|
*/
|
|
|
|
/**
|
|
* Block: show mailbox summary.
|
|
*
|
|
* @author Michael Slusarz <slusarz@horde.org>
|
|
* @category Horde
|
|
* @copyright 2005-2017 Horde LLC
|
|
* @license http://www.horde.org/licenses/gpl GPL
|
|
* @package IMP
|
|
*/
|
|
class IMP_Block_Summary extends Horde_Core_Block
|
|
{
|
|
/**
|
|
*/
|
|
public $updateable = true;
|
|
|
|
/**
|
|
*/
|
|
public function __construct($app, $params = array())
|
|
{
|
|
parent::__construct($app, $params);
|
|
|
|
$this->_name = _("Mailbox Summary");
|
|
}
|
|
|
|
/**
|
|
*/
|
|
protected function _title()
|
|
{
|
|
return Horde::link(IMP::getInitialPage()->url) . $GLOBALS['registry']->get('name') . '</a>';
|
|
}
|
|
|
|
/**
|
|
*/
|
|
protected function _params()
|
|
{
|
|
return array(
|
|
'show_unread' => array(
|
|
'type' => 'boolean',
|
|
'name' => _("Only display mailboxes with unread messages in them?"),
|
|
'default' => 0
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
*/
|
|
protected function _content()
|
|
{
|
|
global $injector;
|
|
|
|
/* Filter on INBOX display. INBOX is always polled. */
|
|
IMP_Mailbox::get('INBOX')->filterOnDisplay();
|
|
|
|
/* Get list of mailboxes to poll. */
|
|
$poll = $injector->getInstance('IMP_Ftree')->poll->getPollList(true);
|
|
$status = $injector->getInstance('IMP_Factory_Imap')->create()->status($poll, Horde_Imap_Client::STATUS_UNSEEN | Horde_Imap_Client::STATUS_MESSAGES | Horde_Imap_Client::STATUS_RECENT_TOTAL);
|
|
|
|
$anyUnseen = false;
|
|
$out = '';
|
|
|
|
foreach ($poll as $mbox) {
|
|
$mbox_str = strval($mbox);
|
|
|
|
if (isset($status[$mbox_str]) &&
|
|
(empty($this->_params['show_unread']) ||
|
|
!empty($status[$mbox_str]['unseen']))) {
|
|
$mbox_status = $status[$mbox_str];
|
|
|
|
$label = $mbox->url('mailbox')->link() . $mbox->display_html . '</a>';
|
|
if (!empty($mbox_status['unseen'])) {
|
|
$label = '<strong>' . $label . '</strong>';
|
|
$anyUnseen = true;
|
|
}
|
|
$out .= '<tr><td>' . $label . '</td>';
|
|
|
|
if (empty($mbox_status['unseen'])) {
|
|
$out .= '<td>-</td>';
|
|
} else {
|
|
$out .= '<td><strong>' . intval($mbox_status['unseen']) . '</strong>';
|
|
if (!empty($mbox_status['recent_total'])) {
|
|
$out .= ' (<span style="color:red">' . sprintf(ngettext("%d new", "%d new", $mbox_status['recent_total']), $mbox_status['recent_total']) . '</span>)';
|
|
}
|
|
$out .='</td>';
|
|
}
|
|
|
|
$out .= '<td>' . intval($mbox_status['messages']) . '</td></tr>';
|
|
}
|
|
}
|
|
|
|
if (!empty($this->_params['show_unread']) && !$anyUnseen) {
|
|
return '<em>' . _("No mailboxes with unseen messages") . '</em>';
|
|
}
|
|
|
|
return '<table class="impBlockSummary"><thead><tr><th>' . _("Mailbox") . '</th><th>' . _("Unseen") . '</th><th>' . _("Total") . '</th></tr></thead><tbody>' .
|
|
$out .
|
|
'</tbody></table>';
|
|
}
|
|
|
|
}
|