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

143 lines
3.7 KiB
PHP

<?php
/**
* Copyright 2012-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 2012-2017 Horde LLC
* @license http://www.horde.org/licenses/gpl GPL
* @package IMP
*/
/**
* Compose view utilities for AJAX data.
*
* @author Michael Slusarz <slusarz@horde.org>
* @category Horde
* @copyright 2012-2017 Horde LLC
* @license http://www.horde.org/licenses/gpl GPL
* @package IMP
*/
class IMP_Ajax_Application_Compose
{
/**
* Forward mapping of id -> compose object constants.
*
* @var array
*/
public $forward_map = array(
'editasnew' => IMP_Compose::EDITASNEW,
'forward_attach' => IMP_Compose::FORWARD_ATTACH,
'forward_auto' => IMP_Compose::FORWARD_AUTO,
'forward_body' => IMP_Compose::FORWARD_BODY,
'forward_both' => IMP_Compose::FORWARD_BOTH
);
/**
* Reply mapping of id -> compose object constant.
*
* @var array
*/
public $reply_map = array(
'reply' => IMP_Compose::REPLY_SENDER,
'reply_all' => IMP_Compose::REPLY_ALL,
'reply_auto' => IMP_Compose::REPLY_AUTO,
'reply_list' => IMP_Compose::REPLY_LIST
);
/**
* Compose object.
*
* @var IMP_Compose
*/
protected $_compose;
/**
* Compose type.
*
* @var string
*/
protected $_type;
/**
* Constuctor.
*
* @param IMP_Compose $ob Compose object.
* @param string $type Compose type.
*/
public function __construct(IMP_Compose $ob, $type = null)
{
$this->_composeOb = $ob;
$this->_type = $type;
}
/**
*/
public function getResponse($result)
{
$ob = $this->getBaseResponse($result);
$ob->body = $result['body'];
$ob->format = $result['format'];
$ob->identity = $result['identity'];
if (!empty($result['attach'])) {
$ob->opts->attach = 1;
}
if ($search = array_search($result['type'], $this->reply_map)) {
if ($this->_type == 'reply_auto') {
$ob->opts->auto = $search;
if (isset($result['reply_list_id'])) {
$ob->opts->reply_list_id = $result['reply_list_id'];
}
if (isset($result['reply_recip'])) {
$ob->opts->reply_recip = $result['reply_recip'];
}
}
if (!empty($result['lang'])) {
$ob->opts->reply_lang = array_values($result['lang']);
}
$ob->opts->focus = 'composeMessage';
} elseif ($search = array_search($result['type'], $this->forward_map)) {
if ($this->_type == 'forward_auto') {
$ob->opts->auto = $search;
}
} else {
$ob->opts->priority = $result['priority'];
$ob->opts->readreceipt = $result['readreceipt'];
}
return $ob;
}
/**
*/
public function getBaseResponse($result = array())
{
$ob = new stdClass;
$ob->body = '';
$ob->opts = new stdClass;
$ob->subject = isset($result['subject'])
? $result['subject']
: '';
$ob->type = $this->_type;
if (isset($result['addr'])) {
$ob->addr = array(
'to' => array_map('strval', $result['addr']['to']->base_addresses),
'cc' => array_map('strval', $result['addr']['cc']->base_addresses),
'bcc' => array_map('strval', $result['addr']['bcc']->base_addresses),
);
}
return $ob;
}
}