- Logger::info('Deleting orphaned post-thread-user entries - start');
- $condition = ["NOT EXISTS (SELECT `uri-id` FROM `post-user` WHERE `post-user`.`uri-id` = `post-thread-user`.`uri-id`)"];
- DBA::delete('post-thread-user', $condition);
- Logger::info('Orphaned post-thread-user entries deleted', ['rows' => DBA::affectedRows()]);
+ Logger::notice('Start collecting orphaned entries', ['table' => $table]);
+ $uris = DBA::select($table, ['uri-id'], ["NOT `uri-id` IN (SELECT `uri-id` FROM `post-user`)"]);
+ $affected_count = 0;
+ Logger::notice('Deleting orphaned entries - start', ['table' => $table]);
+ while ($rows = DBA::toArray($uris, false, 100)) {
+ $ids = array_column($rows, 'uri-id');
+ DBA::delete($table, ['uri-id' => $ids]);
+ $affected_count += DBA::affectedRows();
+ }
+ DBA::close($uris);
+ Logger::notice('Orphaned entries deleted', ['table' => $table, 'rows' => $affected_count]);
+ }
+ Logger::notice('Delete orphaned entries - done');
+ }
+
+ /**
+ * Add missing entries in some post related tables
+ *
+ * @return void
+ */
+ private static function addMissingEntries()
+ {
+ Logger::notice('Adding missing entries');
+
+ $rows = 0;
+ $userposts = DBA::select('post-user', [], ["`uri-id` not in (select `uri-id` from `post`)"]);
+ while ($fields = DBA::fetch($userposts)) {
+ $post_fields = DBStructure::getFieldsForTable('post', $fields);
+ DBA::insert('post', $post_fields, Database::INSERT_IGNORE);
+ $rows++;
+ }
+ DBA::close($userposts);
+ if ($rows > 0) {
+ Logger::notice('Added post entries', ['rows' => $rows]);
+ } else {
+ Logger::notice('No post entries added');
+ }