forked from extern/egroupware
optionally return quota and groups too
This commit is contained in:
parent
690a19c77e
commit
624a69a6bd
@ -353,23 +353,41 @@ class Sql extends Mail\Smtp
|
|||||||
* Get configured mailboxes of a domain
|
* Get configured mailboxes of a domain
|
||||||
*
|
*
|
||||||
* @param boolean $return_inactive return mailboxes NOT marked as accountStatus=active too
|
* @param boolean $return_inactive return mailboxes NOT marked as accountStatus=active too
|
||||||
* @return array uid => name-part of mailMessageStore
|
* @param boolean $return_extra =false true: return quota and groups
|
||||||
|
* @return array uid => name-part of mailMessageStore or $return_extra array with keys "mbox", "quota" and "groups"
|
||||||
*/
|
*/
|
||||||
function getMailboxes($return_inactive)
|
function getMailboxes($return_inactive, $return_extra=false)
|
||||||
{
|
{
|
||||||
|
$cols = 'account_lid AS uid,'.self::TABLE.'.mail_value AS mailbox';
|
||||||
$join = 'JOIN '.Api\Accounts\Sql::TABLE.' ON '.self::TABLE.'.account_id='.Api\Accounts\Sql::TABLE.'.account_id';
|
$join = 'JOIN '.Api\Accounts\Sql::TABLE.' ON '.self::TABLE.'.account_id='.Api\Accounts\Sql::TABLE.'.account_id';
|
||||||
if (!$return_inactive)
|
if (!$return_inactive)
|
||||||
{
|
{
|
||||||
$join .= ' JOIN '.self::TABLE.' active ON active.account_id='.self::TABLE.'.account_id AND active.mail_type='.self::TYPE_ENABLED;
|
$join .= ' JOIN '.self::TABLE.' active ON active.account_id='.self::TABLE.'.account_id AND active.mail_type='.self::TYPE_ENABLED;
|
||||||
}
|
}
|
||||||
|
if ($return_extra)
|
||||||
|
{
|
||||||
|
$join .= ' JOIN '.self::TABLE.' quota ON quota.account_id='.Api\Accounts\Sql::TABLE.'.account_id';
|
||||||
|
$cols .= ',account_id,quota.mail_value AS quota';
|
||||||
|
}
|
||||||
$mailboxes = array();
|
$mailboxes = array();
|
||||||
foreach($this->db->select(self::TABLE, 'account_lid AS uid,'.self::TABLE.'.mail_value AS mailbox',
|
foreach($this->db->select(self::TABLE, $cols,
|
||||||
self::TABLE.'.mail_type='.self::TYPE_MAILBOX,
|
self::TABLE.'.mail_type='.self::TYPE_MAILBOX,
|
||||||
__LINE__, __FILE__, false, 'ORDER BY account_lid', self::APP, 0, $join) as $row)
|
__LINE__, __FILE__, false, 'ORDER BY account_lid', self::APP, 0, $join) as $row)
|
||||||
{
|
{
|
||||||
if ($row['uid'] == 'anonymous') continue; // anonymous is never a mail-user!
|
if ($row['uid'] == 'anonymous') continue; // anonymous is never a mail-user!
|
||||||
list($mailbox) = explode('@', $row['mailbox']);
|
list($mailbox) = explode('@', $row['mailbox']);
|
||||||
$mailboxes[$row['uid']] = $mailbox;
|
if (!$return_extra)
|
||||||
|
{
|
||||||
|
$mailboxes[$row['uid']] = $mailbox;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$mailboxes[$row['uid']] = [
|
||||||
|
'mbox' => $mailbox,
|
||||||
|
'quota' => $row['quota'] ? $row['quota'] : $GLOBALS['egw_info']['server']['default_quota'],
|
||||||
|
'groups' => array_values($GLOBALS['egw']->accounts->memberships($row['account_id'])),
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return $mailboxes;
|
return $mailboxes;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user