PageScannerController::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
c 0
b 0
f 0
nc 1
nop 2
dl 0
loc 6
rs 10
1
<?php
2
3
namespace PiedWeb\CMSBundle\Extension\PageScanner;
4
5
use DateInterval;
6
use PiedWeb\CMSBundle\Utils\LastTime;
7
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
8
use Symfony\Component\DependencyInjection\Container;
9
use Symfony\Component\DependencyInjection\ParameterBag\ContainerBag;
10
use Symfony\Component\Filesystem\Filesystem;
11
12
class PageScannerController extends AbstractController
13
{
14
    /**
15
     * @var PageScannerService
16
     */
17
    protected $scanner;
18
19
    /**
20
     * @var Container
21
     */
22
    protected $container;
23
24
    /**
25
     * @var ContainerBag
26
     */
27
    protected $params;
28
    protected $filesystem;
29
    protected $eventDispatcher;
30
31
    public static $fileCache = '/page-scan';
32
33
    public function __construct(
34
        Filesystem $filesystem,
35
        string $varDir
36
    ) {
37
        $this->filesystem = $filesystem;
38
        self::$fileCache = $varDir.self::$fileCache;
39
    }
40
41
    public function scanAction()
42
    {
43
        if ($this->filesystem->exists(self::$fileCache)) {
44
            $errors = unserialize(file_get_contents(self::$fileCache));
45
            $lastEdit = filemtime(self::$fileCache);
46
        } else {
47
            $lastEdit = 0;
48
            $errors = [];
49
        }
50
51
        $lastTime = new LastTime(self::$fileCache);
52
        if (false === $lastTime->wasRunSince(new DateInterval('PT5M'))) { // todo config
53
            exec('cd ../ && php bin/console page:scan > /dev/null 2>/dev/null &');
54
            $newRunLaunched = true;
55
            $lastTime->setWasRun('now', false);
56
        }
57
58
        return $this->render('@pwcPageScanner/results.html.twig', [
59
            'newRun' => $newRunLaunched ?? false,
60
            'lastEdit' => $lastEdit,
61
            'errorsByPages' => $errors,
62
        ]);
63
    }
64
}
65