From 3f58800ed1fca4cd274125b812aa2faadcbfd989 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sat, 22 Sep 2018 17:30:42 +0100 Subject: [PATCH] Added ability to configure revision limit --- app/Repos/EntityRepo.php | 11 +++++++---- composer.json | 3 ++- config/app.php | 7 +++++++ tests/Entity/PageRevisionTest.php | 30 ++++++++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 5 deletions(-) diff --git a/app/Repos/EntityRepo.php b/app/Repos/EntityRepo.php index 1167ea7da..d6736886e 100644 --- a/app/Repos/EntityRepo.php +++ b/app/Repos/EntityRepo.php @@ -746,10 +746,13 @@ class EntityRepo $revision->revision_number = $page->revision_count; $revision->save(); - // Clear old revisions - if ($this->pageRevision->where('page_id', '=', $page->id)->count() > 50) { - $this->pageRevision->where('page_id', '=', $page->id) - ->orderBy('created_at', 'desc')->skip(50)->take(5)->delete(); + $revisionLimit = config('app.revision_limit'); + if ($revisionLimit !== false) { + $revisionsToDelete = $this->pageRevision->where('page_id', '=', $page->id) + ->orderBy('created_at', 'desc')->skip(intval($revisionLimit))->take(10)->get(['id']); + if ($revisionsToDelete->count() > 0) { + $this->pageRevision->whereIn('id', $revisionsToDelete->pluck('id'))->delete(); + } } return $revision; diff --git a/composer.json b/composer.json index c9eb3821c..318dbb3a6 100644 --- a/composer.json +++ b/composer.json @@ -6,9 +6,10 @@ "type": "project", "require": { "php": ">=7.0.0", + "ext-tidy": "*", + "ext-dom": "*", "laravel/framework": "~5.5.42", "fideloper/proxy": "~3.3", - "ext-tidy": "*", "intervention/image": "^2.4", "laravel/socialite": "^3.0", "league/flysystem-aws-s3-v3": "^1.0", diff --git a/config/app.php b/config/app.php index 21ac6441b..9b5ac2f8c 100755 --- a/config/app.php +++ b/config/app.php @@ -12,6 +12,13 @@ return [ 'books' => env('APP_VIEWS_BOOKS', 'list') ], + /** + * The number of revisions to keep in the database. + * Once this limit is reached older revisions will be deleted. + * If set to false then a limit will not be enforced. + */ + 'revision_limit' => env('REVISION_LIMIT', 50), + /** * Allow