Skip to content
This repository has been archived by the owner on Dec 27, 2023. It is now read-only.

Commit

Permalink
fix(Felamimail/Message): skip copy check
Browse files Browse the repository at this point in the history
... when copying message via message bl pipe

Change-Id: I9e130a42ea27f685ad984cc88646eb4fff8a90d8
Reviewed-on: http://gerrit.tine20.com/customers/18469
Tested-by: Jenkins CI (http://ci.tine20.com/) <tine20-jenkins@metaways.de>
Reviewed-by: Philipp Schüle <p.schuele@metaways.de>
  • Loading branch information
pschuele committed Nov 16, 2020
1 parent 82dc28c commit c386750
Showing 1 changed file with 21 additions and 8 deletions.
29 changes: 21 additions & 8 deletions tine20/Felamimail/Controller/Message/Move.php
Expand Up @@ -63,9 +63,10 @@ public static function getInstance()
* @param mixed $_messages
* @param mixed $_targetFolder can be one of: folder_id, Felamimail_Model_Folder or Felamimail_Model_Folder::FOLDER_TRASH (constant)
* @param boolean $keepOriginalMessages
* @param boolean $checkCopyPreventionConfig
* @return Tinebase_Record_RecordSet of Felamimail_Model_Folder
*/
public function moveMessages($_messages, $_targetFolder, $keepOriginalMessages = false)
public function moveMessages($_messages, $_targetFolder, $keepOriginalMessages = false, $checkCopyPreventionConfig = true)
{
if ($_targetFolder !== Felamimail_Model_Folder::FOLDER_TRASH) {
$targetFolder = ($_targetFolder instanceof Felamimail_Model_Folder) ? $_targetFolder : Felamimail_Controller_Folder::getInstance()->get($_targetFolder);
Expand All @@ -80,15 +81,15 @@ public function moveMessages($_messages, $_targetFolder, $keepOriginalMessages =
'filter' => $_messages,
'function' => 'processMoveIteration',
));
$iterateResult = $iterator->iterate($targetFolder, $keepOriginalMessages);
$iterateResult = $iterator->iterate($targetFolder, $keepOriginalMessages, $checkCopyPreventionConfig);

if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__
. ' Moved/copied ' . $iterateResult['totalcount'] . ' message(s).');

$result = (! empty($iterateResult['results'])) ? array_pop($iterateResult['results']) : new Tinebase_Record_RecordSet('Felamimail_Model_Folder');
} else {
$messages = $this->_convertToRecordSet($_messages, TRUE);
$result = $this->processMoveIteration($messages, $targetFolder, $keepOriginalMessages);
$result = $this->processMoveIteration($messages, $targetFolder, $keepOriginalMessages, $checkCopyPreventionConfig);
}

return $result;
Expand All @@ -100,9 +101,10 @@ public function moveMessages($_messages, $_targetFolder, $keepOriginalMessages =
* @param Tinebase_Record_RecordSet $_messages
* @param mixed $_targetFolder can be one of: Felamimail_Model_Folder or Felamimail_Model_Folder::FOLDER_TRASH (constant)
* @param boolean $keepOriginalMessages
* @param boolean $checkCopyPreventionConfig
* @return Tinebase_Record_RecordSet of Felamimail_Model_Folder
*/
public function processMoveIteration($_messages, $_targetFolder, $keepOriginalMessages = false)
public function processMoveIteration($_messages, $_targetFolder, $keepOriginalMessages = false, $checkCopyPreventionConfig = true)
{
$folderName = ($_targetFolder instanceof Felamimail_Model_Folder ? $_targetFolder->globalname : $_targetFolder);
if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__
Expand All @@ -112,7 +114,12 @@ public function processMoveIteration($_messages, $_targetFolder, $keepOriginalMe

$movedMessages = FALSE;
foreach (array_unique($_messages->folder_id) as $folderId) {
$movedMessages = ($this->_moveMessagesByFolder($_messages, $folderId, $_targetFolder, $keepOriginalMessages) || $movedMessages);
$movedMessages = ($this->_moveMessagesByFolder($_messages,
$folderId,
$_targetFolder,
$keepOriginalMessages,
$checkCopyPreventionConfig
) || $movedMessages);
}

if (! $movedMessages) {
Expand Down Expand Up @@ -144,10 +151,15 @@ public function processMoveIteration($_messages, $_targetFolder, $keepOriginalMe
* @param string $_folderId
* @param Felamimail_Model_Folder|string $_targetFolder
* @param boolean $keepOriginalMessages
* @param boolean $checkCopyPreventionConfig
* @return boolean did we move messages?
* @throws Tinebase_Exception_SystemGeneric
*/
protected function _moveMessagesByFolder(Tinebase_Record_RecordSet $_messages, $_folderId, $_targetFolder, $keepOriginalMessages = false)
protected function _moveMessagesByFolder(Tinebase_Record_RecordSet $_messages,
$_folderId,
$_targetFolder,
$keepOriginalMessages = false,
$checkCopyPreventionConfig = true)
{
$messagesInFolder = $_messages->filter('folder_id', $_folderId);
if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__
Expand All @@ -160,8 +172,9 @@ protected function _moveMessagesByFolder(Tinebase_Record_RecordSet $_messages, $
// no need to move
$result = FALSE;
} else if ($messagesInFolder->getFirstRecord()->account_id == $_targetFolder->account_id) {
if (Felamimail_Config::getInstance()->get(Felamimail_Config::PREVENT_COPY_OF_MAILS_IN_SAME_ACCOUNT) &&
$keepOriginalMessages
if (Felamimail_Config::getInstance()->get(Felamimail_Config::PREVENT_COPY_OF_MAILS_IN_SAME_ACCOUNT)
&& $keepOriginalMessages
&& $checkCopyPreventionConfig
) {
$translation = Tinebase_Translation::getTranslation('Felamimail');
throw new Tinebase_Exception_SystemGeneric($translation->_('It is not allowed to copy e-mails in the same account.'));
Expand Down

0 comments on commit c386750

Please sign in to comment.