Files
server/usr/share/psa-horde/imp/lib/Block/Summary.php
2026-01-07 20:52:11 +01:00

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>';
}
}