# disk-usage-insights/trunk/src/Frontend/Controller/ScanController.php

Disk Usage Insights, version trunk. 42 lines.

- Page: https://pluginprobe.com/plugins/disk-usage-insights/trunk/code/src/Frontend/Controller/ScanController.php
- Raw: https://pluginprobe.com/plugins/disk-usage-insights/trunk/raw/src/Frontend/Controller/ScanController.php
- Modified: 2025-04-08T13:00:06+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/disk-usage-insights/trunk/code/src/Frontend/Controller/ScanController.php#L10-L20`.

```php
<?php
namespace Mgleis\DiskUsageInsights\Frontend\Controller;

use Mgleis\DiskUsageInsights\Domain\Collect\ScanDirForSubDirsJob;
use Mgleis\DiskUsageInsights\Domain\DatabaseRepository;
use Mgleis\DiskUsageInsights\Domain\FileEntry;
use Mgleis\DiskUsageInsights\Plugin;
use Mgleis\DiskUsageInsights\WpHelper;

class ScanController {


    public function scan() {
        check_ajax_referer(Plugin::NONCE);

        // Create a new Snapshot Database
        $snapshotName = gmdate('Ymd_His_') . random_int(10000, 99999);
        $database = (new DatabaseRepository())->loadDatabase($snapshotName);
        $snapshot = $database->snapshotRepository->load();
        $snapshot->root = rtrim(ABSPATH, '/');
        $database->snapshotRepository->save($snapshot);

        // create root entry ""
        $rootFileEntry = new FileEntry();
        $rootFileEntry->type = FileEntry::TYPE_DIR;
        $database->fileEntryRepository->createOrUpdate($rootFileEntry);

        $database->q->push((new ScanDirForSubDirsJob($rootFileEntry->id))->toArray());

        // NEW Code
        $WP_NONCE = wp_create_nonce(Plugin::NONCE);
        $WP_ADMIN_AJAX_URL = admin_url('admin-ajax.php');
        $WP_SNAPSHOT_FILE = $snapshotName;
        $WP_PLUGIN_URL = WpHelper::getPluginUrl();

        include_once __DIR__ . '/../../../views/scan.php';

        wp_die(); // All ajax handlers should die when finished
    }

}

```
