diff --git a/src/console/controllers/DefaultController.php b/src/console/controllers/DefaultController.php new file mode 100644 index 0000000..2d53c13 --- /dev/null +++ b/src/console/controllers/DefaultController.php @@ -0,0 +1,57 @@ +select('entryId, siteId, max(dateCreated) MaxDateCreated') + ->from('{{%entryversions}}') + ->groupBy('entryId, siteId'); + + $query = (new Query()) + ->select('e.id') + ->from('{{%entryversions}} e') + ->innerJoin(['g' => $subQuery], [ + 'and', + 'e.entryId = g.entryId', + 'e.siteId = g.siteId', + 'e.dateCreated = g.MaxDateCreated' + ]); + + $ids = $query->column(); + + // Delete all other versions + $count = Craft::$app->getDb()->createCommand() + ->delete('{{%entryversions}}', ['not in', 'id', $ids]) + ->execute(); + + if (!$count) { + echo Craft::t('delete-entry-versions', 'No entry versions exist yet.'); + + return false; + } + + // Update the latest versions’ version number + Craft::$app->getDb()->createCommand() + ->update('{{%entryversions}}', ['num' => 1]) + ->execute(); + + echo Craft::t('delete-entry-versions', '{count} entry versions deleted.', ['count' => $count]); + + return true; + } +}