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

99 lines
2.6 KiB
PHP

<?php
/**
* Copyright 2013-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 2013-2017 Horde LLC
* @license http://www.horde.org/licenses/gpl GPL
* @package IMP
*/
/**
* Implementation of the account object for a remote server.
*
* @author Michael Slusarz <slusarz@horde.org>
* @category Horde
* @copyright 2013-2017 Horde LLC
* @license http://www.horde.org/licenses/gpl GPL
* @package IMP
*/
class IMP_Ftree_Account_Remote extends IMP_Ftree_Account_Imap
{
/* Remote account key. */
const REMOTE_KEY = "remote\0";
/**
*/
public function __construct($id = null)
{
if (is_null($id)) {
throw new InvalidArgumentException('Constructor requires an account ID.');
}
parent::__construct($id);
}
/**
*/
public function getList($query = array(), $mask = 0)
{
global $injector;
$out = array();
$init = $this->imp_imap->init;
$remote = $injector->getInstance('IMP_Remote');
$raccount = $remote[strval($this)];
$query = array_filter(
array_map(array($remote, 'getMailboxById'), $query)
);
if (empty($query)) {
$mask |= self::INIT;
}
if ($mask & self::INIT) {
$out[] = array(
'a' => IMP_Ftree::ELT_REMOTE | IMP_Ftree::ELT_NOSELECT | IMP_Ftree::ELT_NONIMAP,
'v' => self::REMOTE_KEY
);
$out[] = array(
'a' => ($init ? IMP_Ftree::ELT_REMOTE_AUTH : 0) | IMP_Ftree::ELT_REMOTE | IMP_Ftree::ELT_IS_SUBSCRIBED | IMP_Ftree::ELT_NONIMAP,
'p' => self::REMOTE_KEY,
'v' => strval($this)
);
}
if ($init) {
foreach (parent::getList($query, $mask) as $val) {
$out[] = array_filter(array(
'a' => $val['a'] | IMP_Ftree::ELT_REMOTE_MBOX,
'p' => isset($val['p']) ? $raccount->mailbox($val['p']) : strval($raccount),
'v' => $raccount->mailbox($val['v'])
));
}
}
return $out;
}
/**
*/
public function delete(IMP_Ftree_Element $elt)
{
if ($elt->remote_auth) {
return self::DELETE_ELEMENT_QUICK | self::DELETE_RECURSIVE;
}
return $elt->remote
? self::DELETE_ELEMENT_QUICK
: self::DELETE_ELEMENT;
}
}