diff --git a/modules/communication/communication.controller.php b/modules/communication/communication.controller.php
index f185a9177..b5014a6d4 100644
--- a/modules/communication/communication.controller.php
+++ b/modules/communication/communication.controller.php
@@ -184,7 +184,7 @@ class communicationController extends communication
// messages to save in the receiver's message box
$receiver_args = new stdClass();
$receiver_args->message_srl = $related_srl;
- $receiver_args->related_srl = 0;
+ $receiver_args->related_srl = $message_srl;
$receiver_args->list_order = $related_srl * -1;
$receiver_args->sender_srl = $sender_srl;
if(!$receiver_args->sender_srl)
@@ -349,6 +349,16 @@ class communicationController extends communication
{
return $output;
}
+
+ // Delete attachment, only if related message has also been deleted
+ $related = $message->related_srl ? $oCommunicationModel->getSelectedMessage($message->related_srl) : true;
+ if (!$related)
+ {
+ $oFileController = getController('file');
+ $oFileController->deleteFiles($message->message_srl);
+ $oFileController->deleteFiles($message->related_srl);
+ }
+
$this->updateFlagFile($member_srl);
$this->setMessage('success_deleted');
}
@@ -408,7 +418,7 @@ class communicationController extends communication
throw new Rhymix\Framework\Exception('msg_cart_is_null');
}
- // Delete
+ // Organize variables
$args = new stdClass();
$args->message_srls = implode(',', $target);
@@ -430,11 +440,39 @@ class communicationController extends communication
$args->receiver_srl = $member_srl;
}
+ // Find related messages
+ $related = array();
+ $output = executeQueryArray('communication.getRelatedMessages', $args);
+ foreach ($output->data as $item)
+ {
+ $related[$item->related_srl] = $item->message_srl;
+ }
+ if (count($related))
+ {
+ $output = executeQueryArray('communication.getMessages', (object)array(
+ 'message_srl_list' => array_keys($related)
+ ), array('message_srl'));
+ foreach ($output->data as $item)
+ {
+ unset($related[$item->message_srl]);
+ }
+ }
+
+ // Delete
$output = executeQuery('communication.deleteMessages', $args);
if(!$output->toBool())
{
return $output;
}
+
+ // Delete attachment, only if related message has also been deleted
+ $oFileController = getController('file');
+ foreach ($related as $message_srl => $related_srl)
+ {
+ $oFileController->deleteFiles($message_srl);
+ $oFileController->deleteFiles($related_srl);
+ }
+
$this->updateFlagFile($member_srl);
$this->setMessage('success_deleted');
diff --git a/modules/communication/queries/getMessages.xml b/modules/communication/queries/getMessages.xml
new file mode 100644
index 000000000..cde6b67ce
--- /dev/null
+++ b/modules/communication/queries/getMessages.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/communication/queries/getRelatedMessages.xml b/modules/communication/queries/getRelatedMessages.xml
new file mode 100644
index 000000000..0967d7783
--- /dev/null
+++ b/modules/communication/queries/getRelatedMessages.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+