2020-09-19 10:24:58 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace BookStack\Http\Controllers;
|
|
|
|
|
2020-11-19 00:38:44 +01:00
|
|
|
use BookStack\Actions\ActivityType;
|
2020-11-22 00:20:54 +01:00
|
|
|
use BookStack\Entities\Tools\TrashCan;
|
2020-09-19 10:24:58 +02:00
|
|
|
use BookStack\Notifications\TestEmail;
|
|
|
|
use BookStack\Uploads\ImageService;
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
|
|
|
|
class MaintenanceController extends Controller
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Show the page for application maintenance.
|
|
|
|
*/
|
|
|
|
public function index()
|
|
|
|
{
|
|
|
|
$this->checkPermission('settings-manage');
|
|
|
|
$this->setPageTitle(trans('settings.maint'));
|
|
|
|
|
|
|
|
// Get application version
|
|
|
|
$version = trim(file_get_contents(base_path('version')));
|
|
|
|
|
2020-10-03 19:44:12 +02:00
|
|
|
// Recycle bin details
|
|
|
|
$recycleStats = (new TrashCan())->getTrashedCounts();
|
|
|
|
|
|
|
|
return view('settings.maintenance', [
|
2021-06-26 17:23:15 +02:00
|
|
|
'version' => $version,
|
2020-10-03 19:44:12 +02:00
|
|
|
'recycleStats' => $recycleStats,
|
|
|
|
]);
|
2020-09-19 10:24:58 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Action to clean-up images in the system.
|
|
|
|
*/
|
|
|
|
public function cleanupImages(Request $request, ImageService $imageService)
|
|
|
|
{
|
|
|
|
$this->checkPermission('settings-manage');
|
2020-11-19 00:38:44 +01:00
|
|
|
$this->logActivity(ActivityType::MAINTENANCE_ACTION_RUN, 'cleanup-images');
|
2020-09-19 10:24:58 +02:00
|
|
|
|
|
|
|
$checkRevisions = !($request->get('ignore_revisions', 'false') === 'true');
|
|
|
|
$dryRun = !($request->has('confirm'));
|
|
|
|
|
|
|
|
$imagesToDelete = $imageService->deleteUnusedImages($checkRevisions, $dryRun);
|
|
|
|
$deleteCount = count($imagesToDelete);
|
|
|
|
if ($deleteCount === 0) {
|
|
|
|
$this->showWarningNotification(trans('settings.maint_image_cleanup_nothing_found'));
|
2021-06-26 17:23:15 +02:00
|
|
|
|
2020-09-19 10:24:58 +02:00
|
|
|
return redirect('/settings/maintenance')->withInput();
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($dryRun) {
|
|
|
|
session()->flash('cleanup-images-warning', trans('settings.maint_image_cleanup_warning', ['count' => $deleteCount]));
|
|
|
|
} else {
|
|
|
|
$this->showSuccessNotification(trans('settings.maint_image_cleanup_success', ['count' => $deleteCount]));
|
|
|
|
}
|
|
|
|
|
|
|
|
return redirect('/settings/maintenance#image-cleanup')->withInput();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Action to send a test e-mail to the current user.
|
|
|
|
*/
|
|
|
|
public function sendTestEmail()
|
|
|
|
{
|
|
|
|
$this->checkPermission('settings-manage');
|
2020-11-19 00:38:44 +01:00
|
|
|
$this->logActivity(ActivityType::MAINTENANCE_ACTION_RUN, 'send-test-email');
|
2020-09-19 10:24:58 +02:00
|
|
|
|
|
|
|
try {
|
2021-12-13 19:34:18 +01:00
|
|
|
user()->notifyNow(new TestEmail());
|
2020-09-19 10:24:58 +02:00
|
|
|
$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();
|
|
|
|
}
|
|
|
|
}
|