From 963374bb3e4463b56922d3cbfdf54d0c793d4264 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 30 Mar 2023 21:48:41 +0000 Subject: [PATCH] Ensure to only delete data of a valid contact --- src/Worker/ExpireAndRemoveUsers.php | 38 +++++++++++++++-------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/Worker/ExpireAndRemoveUsers.php b/src/Worker/ExpireAndRemoveUsers.php index e147809cae..f7591bf4a3 100644 --- a/src/Worker/ExpireAndRemoveUsers.php +++ b/src/Worker/ExpireAndRemoveUsers.php @@ -68,27 +68,29 @@ class ExpireAndRemoveUsers Logger::warning('Error deleting user photos', ['errno' => DBA::errorNo(), 'errmsg' => DBA::errorMessage()]); } - $result = DBA::delete('post-tag', ['cid' => $pcid]); - if ($result) { - Logger::debug('Deleted post-tag entries', ['result' => $result, 'rows' => DBA::affectedRows()]); - } else { - Logger::warning('Error deleting post-tag entries', ['errno' => DBA::errorNo(), 'errmsg' => DBA::errorMessage()]); - } + if (!empty($pcid)) { + $result = DBA::delete('post-tag', ['cid' => $pcid]); + if ($result) { + Logger::debug('Deleted post-tag entries', ['result' => $result, 'rows' => DBA::affectedRows()]); + } else { + Logger::warning('Error deleting post-tag entries', ['errno' => DBA::errorNo(), 'errmsg' => DBA::errorMessage()]); + } - $tables = ['post', 'post-user', 'post-thread', 'post-thread-user']; + $tables = ['post', 'post-user', 'post-thread', 'post-thread-user']; - if (DBStructure::existsTable('item')) { - $tables[] = 'item'; - } + if (DBStructure::existsTable('item')) { + $tables[] = 'item'; + } - // Delete all entries with the public contact in post related tables - foreach ($tables as $table) { - foreach (['owner-id', 'author-id', 'causer-id'] as $field) { - $result = DBA::delete($table, [$field => $pcid]); - if ($result) { - Logger::debug('Deleted entries', ['table' => $table, 'field' => $field, 'result' => $result, 'rows' => DBA::affectedRows()]); - } else { - Logger::warning('Error deleting entries', ['table' => $table, 'field' => $field, 'errno' => DBA::errorNo(), 'errmsg' => DBA::errorMessage()]); + // Delete all entries with the public contact in post related tables + foreach ($tables as $table) { + foreach (['owner-id', 'author-id', 'causer-id'] as $field) { + $result = DBA::delete($table, [$field => $pcid]); + if ($result) { + Logger::debug('Deleted entries', ['table' => $table, 'field' => $field, 'result' => $result, 'rows' => DBA::affectedRows()]); + } else { + Logger::warning('Error deleting entries', ['table' => $table, 'field' => $field, 'errno' => DBA::errorNo(), 'errmsg' => DBA::errorMessage()]); + } } } }