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;
// 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,
+ ]);
}
/**
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'));
$deleteCount = count($imagesToDelete);
if ($deleteCount === 0) {
$this->showWarningNotification(trans('settings.maint_image_cleanup_nothing_found'));
+
return redirect('/settings/maintenance')->withInput();
}
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');
}
}