Skip to content

Commit

Permalink
GH-126 Allow to limit batch deletion to a specific category of messages
Browse files Browse the repository at this point in the history
  • Loading branch information
mdziekon committed Aug 1, 2020
1 parent 887d59c commit d614d9b
Showing 1 changed file with 23 additions and 3 deletions.
26 changes: 23 additions & 3 deletions modules/messages/commands/batchDeleteUserMessages.commands.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,20 @@
* @param array $params
* @param number $params['userID']
* The ID of a user whose messages should be deleted.
* @param number|null $params['messageTypeID']
* (Optional) Narrows the messages to be deleted to the specified type.
* @param number $params['untilTimestamp']
* Determines the cut-off point for deletion, meaning that all messages
* prior to this point in time (inclusive) will be deleted.
*/
function batchDeleteUserMessages($params) {
$ownerID = $params['userID'];
$utilTimestamp = $params['untilTimestamp'];
$messageTypeID = (
isset($params['messageTypeID']) ?
$params['messageTypeID'] :
null
);

$excludedMessageTypesString = _getBatchDeletionExcludedMessageTypesQueryString();

Expand All @@ -24,9 +31,13 @@ function batchDeleteUserMessages($params) {
"SET " .
"`deleted` = true " .
"WHERE " .
(
$messageTypeID !== null ?
"`type` = {$messageTypeID} AND " :
"`type` NOT IN ({$excludedMessageTypesString}) AND "
) .
"`time` <= {$utilTimestamp} AND" .
"`id_owner` = {$ownerID} AND " .
"`type` NOT IN ({$excludedMessageTypesString}) " .
"`id_owner` = {$ownerID} " .
";"
);

Expand Down Expand Up @@ -61,15 +72,24 @@ function ($value) { return strval($value); },
function _updateMessageThreadsAffectedByBatchDeletion($params) {
$ownerID = $params['userID'];
$utilTimestamp = $params['untilTimestamp'];
$messageTypeID = (
isset($params['messageTypeID']) ?
$params['messageTypeID'] :
null
);

$excludedMessageTypesString = _getBatchDeletionExcludedMessageTypesQueryString();

$fetchThreadedMessagesQuery = (
"SELECT `Thread_ID` FROM {{table}} " .
"WHERE " .
(
$messageTypeID !== null ?
"`type` = {$messageTypeID} AND " :
"`type` NOT IN ({$excludedMessageTypesString}) AND "
) .
"`time` <= {$utilTimestamp} AND " .
"`id_owner` = {$ownerID} AND " .
"`type` NOT IN ({$excludedMessageTypesString}) AND " .
"`Thread_ID` > 0 " .
";"
);
Expand Down

0 comments on commit d614d9b

Please sign in to comment.