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;
// Check the variable
$message_srl = Context::get('message_srl');
$message_srl = intval(Context::get('message_srl'));
if(!$message_srl)
{
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
// Get the message
$oCommunicationModel = getModel('communication');
$message = $oCommunicationModel->getSelectedMessage($message_srl);
$message = CommunicationModel::getSelectedMessage($message_srl);
if(!$message)
{
throw new Rhymix\Framework\Exceptions\InvalidRequest;
@ -450,9 +449,16 @@ class CommunicationController extends communication
break;
}
// Delete
// Call trigger (before)
$args = new stdClass();
$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);
if(!$output->toBool())
{
@ -460,14 +466,17 @@ class CommunicationController extends communication
}
// 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)
{
$oFileController = getController('file');
$oFileController = FileController::getInstance();
$oFileController->deleteFiles($message->message_srl);
$oFileController->deleteFiles($message->related_srl);
}
// Call trigger (after)
ModuleHandler::triggerCall('communication.deleteMessage', 'after', $args);
$this->updateFlagFile($member_srl);
$this->setMessage('success_deleted');
}
@ -487,19 +496,27 @@ class CommunicationController extends communication
$logged_info = Context::get('logged_info');
$member_srl = $logged_info->member_srl;
// check variables
if(!Context::get('message_srl_list'))
// Get list of messages
$message_srl_list = Context::get('message_srl_list');
if (!$message_srl_list)
{
throw new Rhymix\Framework\Exception('msg_cart_is_null');
}
$message_srl_list = Context::get('message_srl_list');
if(!is_array($message_srl_list))
if (!is_array($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');
}
@ -510,26 +527,9 @@ class CommunicationController extends communication
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
$args = new stdClass();
$args->message_srls = implode(',', $target);
$args->message_srls = $target;
if ($message_type === 'N')
{
@ -549,6 +549,13 @@ class CommunicationController extends communication
$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
$related = array();
$output = executeQueryArray('communication.getRelatedMessages', $args);
@ -582,6 +589,9 @@ class CommunicationController extends communication
$oFileController->deleteFiles($related_srl);
}
// Call trigger (after)
ModuleHandler::triggerCall('communication.deleteMessages', 'after', $args);
$this->updateFlagFile($member_srl);
$this->setMessage('success_deleted');