X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/1f9704779919a2e094c17e8f556ec9cc92ac437b..refs/heads/ldap_host_failover:/app/Http/Controllers/MaintenanceController.php diff --git a/app/Http/Controllers/MaintenanceController.php b/app/Http/Controllers/MaintenanceController.php index 664a896b2..8bfefb7ac 100644 --- a/app/Http/Controllers/MaintenanceController.php +++ b/app/Http/Controllers/MaintenanceController.php @@ -2,7 +2,10 @@ namespace BookStack\Http\Controllers; +use BookStack\Actions\ActivityType; +use BookStack\Entities\Tools\TrashCan; use BookStack\Notifications\TestEmail; +use BookStack\References\ReferenceStore; use BookStack\Uploads\ImageService; use Illuminate\Http\Request; @@ -19,7 +22,13 @@ class MaintenanceController extends Controller // Get application version $version = trim(file_get_contents(base_path('version'))); - return view('settings.maintenance', ['version' => $version]); + // Recycle bin details + $recycleStats = (new TrashCan())->getTrashedCounts(); + + return view('settings.maintenance', [ + 'version' => $version, + 'recycleStats' => $recycleStats, + ]); } /** @@ -28,6 +37,7 @@ class MaintenanceController extends Controller public function cleanupImages(Request $request, ImageService $imageService) { $this->checkPermission('settings-manage'); + $this->logActivity(ActivityType::MAINTENANCE_ACTION_RUN, 'cleanup-images'); $checkRevisions = !($request->get('ignore_revisions', 'false') === 'true'); $dryRun = !($request->has('confirm')); @@ -36,6 +46,7 @@ class MaintenanceController extends Controller $deleteCount = count($imagesToDelete); if ($deleteCount === 0) { $this->showWarningNotification(trans('settings.maint_image_cleanup_nothing_found')); + return redirect('/settings/maintenance')->withInput(); } @@ -54,15 +65,34 @@ class MaintenanceController extends Controller public function sendTestEmail() { $this->checkPermission('settings-manage'); + $this->logActivity(ActivityType::MAINTENANCE_ACTION_RUN, 'send-test-email'); try { - user()->notify(new TestEmail()); + user()->notifyNow(new TestEmail()); $this->showSuccessNotification(trans('settings.maint_send_test_email_success', ['address' => user()->email])); } catch (\Exception $exception) { $errorMessage = trans('errors.maintenance_test_email_failure') . "\n" . $exception->getMessage(); $this->showErrorNotification($errorMessage); } - return redirect('/settings/maintenance#image-cleanup')->withInput(); + return redirect('/settings/maintenance#image-cleanup'); + } + + /** + * Action to regenerate the reference index in the system. + */ + public function regenerateReferences(ReferenceStore $referenceStore) + { + $this->checkPermission('settings-manage'); + $this->logActivity(ActivityType::MAINTENANCE_ACTION_RUN, 'regenerate-references'); + + try { + $referenceStore->updateForAllPages(); + $this->showSuccessNotification(trans('settings.maint_regen_references_success')); + } catch (\Exception $exception) { + $this->showErrorNotification($exception->getMessage()); + } + + return redirect('/settings/maintenance#regenerate-references'); } }