Fix #2253 add triggers before/after communication.deleteMessage and deleteMessages

This commit is contained in:
Kijin Sung 2024-01-01 17:25:08 +09:00
parent 85fd994156
commit faa89442c6

View file

@ -418,15 +418,14 @@ class CommunicationController extends communication
$member_srl = $logged_info->member_srl; $member_srl = $logged_info->member_srl;
// Check the variable // Check the variable
$message_srl = Context::get('message_srl'); $message_srl = intval(Context::get('message_srl'));
if(!$message_srl) if(!$message_srl)
{ {
throw new Rhymix\Framework\Exceptions\InvalidRequest; throw new Rhymix\Framework\Exceptions\InvalidRequest;
} }
// Get the message // Get the message
$oCommunicationModel = getModel('communication'); $message = CommunicationModel::getSelectedMessage($message_srl);
$message = $oCommunicationModel->getSelectedMessage($message_srl);
if(!$message) if(!$message)
{ {
throw new Rhymix\Framework\Exceptions\InvalidRequest; throw new Rhymix\Framework\Exceptions\InvalidRequest;
@ -450,9 +449,16 @@ class CommunicationController extends communication
break; break;
} }
// Delete // Call trigger (before)
$args = new stdClass(); $args = new stdClass();
$args->message_srl = $message_srl; $args->message_srl = $message_srl;
$trigger_output = ModuleHandler::triggerCall('communication.deleteMessage', 'before', $args);
if(!$trigger_output->toBool())
{
return $trigger_output;
}
// Delete
$output = executeQuery('communication.deleteMessage', $args); $output = executeQuery('communication.deleteMessage', $args);
if(!$output->toBool()) if(!$output->toBool())
{ {
@ -460,14 +466,17 @@ class CommunicationController extends communication
} }
// Delete attachment, only if related message has also been deleted // Delete attachment, only if related message has also been deleted
$related = $message->related_srl ? $oCommunicationModel->getSelectedMessage($message->related_srl) : true; $related = $message->related_srl ? CommunicationModel::getSelectedMessage($message->related_srl) : true;
if (!$related) if (!$related)
{ {
$oFileController = getController('file'); $oFileController = FileController::getInstance();
$oFileController->deleteFiles($message->message_srl); $oFileController->deleteFiles($message->message_srl);
$oFileController->deleteFiles($message->related_srl); $oFileController->deleteFiles($message->related_srl);
} }
// Call trigger (after)
ModuleHandler::triggerCall('communication.deleteMessage', 'after', $args);
$this->updateFlagFile($member_srl); $this->updateFlagFile($member_srl);
$this->setMessage('success_deleted'); $this->setMessage('success_deleted');
} }
@ -487,19 +496,27 @@ class CommunicationController extends communication
$logged_info = Context::get('logged_info'); $logged_info = Context::get('logged_info');
$member_srl = $logged_info->member_srl; $member_srl = $logged_info->member_srl;
// check variables // Get list of messages
if(!Context::get('message_srl_list')) $message_srl_list = Context::get('message_srl_list');
if (!$message_srl_list)
{ {
throw new Rhymix\Framework\Exception('msg_cart_is_null'); throw new Rhymix\Framework\Exception('msg_cart_is_null');
} }
if (!is_array($message_srl_list))
$message_srl_list = Context::get('message_srl_list');
if(!is_array($message_srl_list))
{ {
$message_srl_list = explode('|@|', trim($message_srl_list)); $message_srl_list = explode('|@|', trim($message_srl_list));
} }
$target = array();
foreach ($message_srl_list as $message_srl)
{
$message_srl = intval($message_srl, 10);
if ($message_srl > 0)
{
$target[] = $message_srl;
}
if(!count($message_srl_list)) }
if (!count($target))
{ {
throw new Rhymix\Framework\Exception('msg_cart_is_null'); throw new Rhymix\Framework\Exception('msg_cart_is_null');
} }
@ -510,26 +527,9 @@ class CommunicationController extends communication
throw new Rhymix\Framework\Exceptions\InvalidRequest; throw new Rhymix\Framework\Exceptions\InvalidRequest;
} }
$message_count = count($message_srl_list);
$target = array();
for($i = 0; $i < $message_count; $i++)
{
$message_srl = (int) trim($message_srl_list[$i]);
if(!$message_srl)
{
continue;
}
$target[] = $message_srl;
}
if(!count($target))
{
throw new Rhymix\Framework\Exception('msg_cart_is_null');
}
// Organize variables // Organize variables
$args = new stdClass(); $args = new stdClass();
$args->message_srls = implode(',', $target); $args->message_srls = $target;
if ($message_type === 'N') if ($message_type === 'N')
{ {
@ -549,6 +549,13 @@ class CommunicationController extends communication
$args->receiver_srl = $member_srl; $args->receiver_srl = $member_srl;
} }
// Call trigger (before)
$trigger_output = ModuleHandler::triggerCall('communication.deleteMessages', 'before', $args);
if(!$trigger_output->toBool())
{
return $trigger_output;
}
// Find related messages // Find related messages
$related = array(); $related = array();
$output = executeQueryArray('communication.getRelatedMessages', $args); $output = executeQueryArray('communication.getRelatedMessages', $args);
@ -582,6 +589,9 @@ class CommunicationController extends communication
$oFileController->deleteFiles($related_srl); $oFileController->deleteFiles($related_srl);
} }
// Call trigger (after)
ModuleHandler::triggerCall('communication.deleteMessages', 'after', $args);
$this->updateFlagFile($member_srl); $this->updateFlagFile($member_srl);
$this->setMessage('success_deleted'); $this->setMessage('success_deleted');