mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-02-03 03:49:33 +01:00
backport of changeFolder and deleteFolder
This commit is contained in:
parent
b39e15f6e7
commit
d98aac5381
@ -185,16 +185,32 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
);
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
$sigOptions = array(
|
||||||
|
'send'=>'yes, always add EGroupware signatures to outgoing mails',
|
||||||
|
'nosend'=>'no, never add EGroupware signatures to outgoing mails',
|
||||||
|
);
|
||||||
|
if (!isset($hook_data['setup']) && in_array($hook_data['type'], array('user', 'group'))&&$hook_data['account_id'])
|
||||||
|
{
|
||||||
|
$pID=self::$profileID;
|
||||||
|
if ($GLOBALS['egw_info']['user']['preferences']['activesync']['mail-ActiveSyncProfileID']=='G')
|
||||||
|
{
|
||||||
|
$pID=Mail\Account::get_default_acc_id();
|
||||||
|
}
|
||||||
|
$acc = Mail\Account::read($pID);
|
||||||
|
error_log(__METHOD__.__LINE__.':'.$pID.'->'.array2string($acc));
|
||||||
|
$Identities = Mail\Account::identities($pID);
|
||||||
|
foreach($Identities as &$identity)
|
||||||
|
{
|
||||||
|
$Identity = self::identity_name($identity);
|
||||||
|
}
|
||||||
|
error_log(__METHOD__.__LINE__.array2string($Identities));
|
||||||
|
}
|
||||||
$settings['mail-useSignature'] = array(
|
$settings['mail-useSignature'] = array(
|
||||||
'type' => 'select',
|
'type' => 'select',
|
||||||
'label' => 'control if and which available signature is added to outgoing mails',
|
'label' => 'control if and which available signature is added to outgoing mails',
|
||||||
'name' => 'mail-useSignature',
|
'name' => 'mail-useSignature',
|
||||||
'help' => 'control the use of signatures',
|
'help' => 'control the use of signatures',
|
||||||
'values' => array(
|
'values' => $sigOptions,
|
||||||
'sendifnocalnotif'=>'only send if there is no notification in calendar',
|
|
||||||
'send'=>'yes, always add EGroupware signatures to outgoing mails',
|
|
||||||
'nosend'=>'no, never add EGroupware signatures to outgoing mails',
|
|
||||||
),
|
|
||||||
'xmlrpc' => True,
|
'xmlrpc' => True,
|
||||||
'default' => 'nosend',
|
'default' => 'nosend',
|
||||||
'admin' => False,
|
'admin' => False,
|
||||||
@ -996,6 +1012,7 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
'<body>';
|
'<body>';
|
||||||
if ($output->nativebodytype==2)
|
if ($output->nativebodytype==2)
|
||||||
{
|
{
|
||||||
|
if ($css) Api\Mail\Html::replaceTagsCompletley($body,'style');
|
||||||
// as we fetch html, and body is HTML, we may not need to handle this
|
// as we fetch html, and body is HTML, we may not need to handle this
|
||||||
$htmlbody .= $body;
|
$htmlbody .= $body;
|
||||||
}
|
}
|
||||||
@ -1904,27 +1921,73 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
* @param string $displayname => new folder name (to be created, or to be renamed to)
|
* @param string $displayname => new folder name (to be created, or to be renamed to)
|
||||||
* @param string $type folder type, ignored in IMAP
|
* @param string $type folder type, ignored in IMAP
|
||||||
*
|
*
|
||||||
|
* @throws StatusException could throw specific SYNC_FSSTATUS_* exceptions
|
||||||
* @return array|boolean stat array or false on error
|
* @return array|boolean stat array or false on error
|
||||||
*/
|
*/
|
||||||
public function ChangeFolder($id, $oldid, $displayname, $type)
|
public function ChangeFolder($id, $oldid, $displayname, $type)
|
||||||
{
|
{
|
||||||
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."('$id', '$oldid', '$displayname', $type) NOT supported!");
|
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."('$id', '$oldid', '$displayname', $type)");
|
||||||
return false;
|
$account = $parent_id = null;
|
||||||
|
$this->splitID($id, $account, $parentFolder, $app);
|
||||||
|
|
||||||
|
$parent_id = $this->folder2hash($account, $parentFolder);
|
||||||
|
$old_hash = $oldFolder = null;
|
||||||
|
|
||||||
|
if (empty($oldid))
|
||||||
|
{
|
||||||
|
$action = 'create';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$action = 'rename';
|
||||||
|
$this->splitID($oldid, $account, $oldFolder, $app);
|
||||||
|
$old_hash = $this->folder2hash($account, $oldFolder);
|
||||||
|
}
|
||||||
|
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__.":{$action}Folder('$id'=>($parentFolder ($parent_id)), '$oldid'".($oldid?"=>($oldFolder ($old_hash))":'').", '$displayname', $type)");
|
||||||
|
$this->_connect($this->account);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if ($action=='rename')
|
||||||
|
{
|
||||||
|
$newFolderName = $this->mail->renameFolder($oldFolder, $parentFolder, $displayname);
|
||||||
|
}
|
||||||
|
elseif ($action=='create')
|
||||||
|
{
|
||||||
|
$error=null;
|
||||||
|
$newFolderName = $this->mail->createFolder($parentFolder, $displayname, $error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (\Exception $e)
|
||||||
|
{
|
||||||
|
//throw new Exception(__METHOD__." $action failed for $oldFolder ($action: $displayname) with error:".$e->getMessage());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$newHash = $this->rename_folder_hash($account, $old_hash, $newFolderName);
|
||||||
|
$newID = $this->createID($account, $newHash);
|
||||||
|
|
||||||
|
ZLog::Write(LOGLEVEL_DEBUG,":{$action}Folder('$id'=>($parentFolder), '$oldid'".($oldid?"=>($oldFolder)":'').", '$displayname' => $newFolderName (ID:$newID))");
|
||||||
|
return $this->StatFolder($newID);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes (really delete) a Folder
|
* Deletes (really delete) a Folder
|
||||||
*
|
*
|
||||||
* @param string $parentid of the folder to delete
|
|
||||||
* @param string $id of the folder to delete
|
* @param string $id of the folder to delete
|
||||||
|
* @param string $parentid (=false) of the folder to delete, may be false/not set
|
||||||
*
|
*
|
||||||
* @return
|
* @throws StatusException could throw specific SYNC_FSSTATUS_* exceptions
|
||||||
* @TODO check what is to be returned
|
* @return boolean true or false on error
|
||||||
*/
|
*/
|
||||||
public function DeleteFolder($parentid, $id)
|
public function DeleteFolder($id, $parentid=false)
|
||||||
{
|
{
|
||||||
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."('$parentid', '$id') NOT supported!");
|
$account = $parent_id = $app = null;
|
||||||
return false;
|
$this->splitID($id, $account, $folder, $app);
|
||||||
|
$old_hash = $this->folder2hash($account, $folder);
|
||||||
|
if ($parentid) $this->splitID($parentid, $account, $parentfolder, $app);
|
||||||
|
ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."( '$id (-> $folder)','$parentid ".($parentid?'(->'.$parentfolder.')':'')."') called!");
|
||||||
|
$ret = $this->mail->deleteFolder($folder);
|
||||||
|
if ($ret) $newHash = $this->rename_folder_hash($account, $old_hash, "##Dele#edFolder#$folder##");
|
||||||
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1974,22 +2037,22 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Split an ID string into $app, $folder and $id
|
* Split an ID string into $app, $account $folder and $appid
|
||||||
*
|
*
|
||||||
* @param string $str
|
* @param string $str
|
||||||
* @param int &$account mail account id
|
* @param int &$account mail account id
|
||||||
* @param string &$folder
|
* @param string &$folder
|
||||||
* @param int &$id=null
|
* @param int &$appid=null (for mail=mail is to be expected)
|
||||||
* @throws Api\Exception\WrongParameter
|
* @throws Api\Exception\WrongParameter
|
||||||
*/
|
*/
|
||||||
private function splitID($str,&$account,&$folder,&$id=null)
|
private function splitID($str,&$account,&$folder,&$appid=null)
|
||||||
{
|
{
|
||||||
$this->backend->splitID($str, $account, $folder, $id);
|
$this->backend->splitID($str, $account, $folder, $appid);
|
||||||
|
|
||||||
// convert numeric folder-id back to folder name
|
// convert numeric folder-id back to folder name
|
||||||
$folder = $this->hash2folder($account,$f=$folder);
|
$folder = $this->hash2folder($account,$f=$folder);
|
||||||
|
|
||||||
if ($this->debugLevel>1) ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."('$str','$account','$folder',$id)");
|
if ($this->debugLevel>1) ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."('$str','$account','$folder',$appid)");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2036,6 +2099,25 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail,
|
|||||||
return isset($this->folderHashes[$account]) ? $this->folderHashes[$account][$index] : null;
|
return isset($this->folderHashes[$account]) ? $this->folderHashes[$account][$index] : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rename or create a folder in hash table
|
||||||
|
*
|
||||||
|
* @param int $account
|
||||||
|
* @param int $index or null to create
|
||||||
|
* @param string $new_name
|
||||||
|
* @return int $index or new hash if $index is not found
|
||||||
|
*/
|
||||||
|
private function rename_folder_hash($account, $index, $new_name)
|
||||||
|
{
|
||||||
|
if ((string)$index === '' || !$this->hash2folder($account, $index))
|
||||||
|
{
|
||||||
|
return $this->folder2hash($account, $new_name);
|
||||||
|
}
|
||||||
|
$this->folderHashes[$account][$index] = $new_name;
|
||||||
|
$this->storeFolderHashes();
|
||||||
|
return $index;
|
||||||
|
}
|
||||||
|
|
||||||
private $folderHashes;
|
private $folderHashes;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user