Completed
Push — master ( d9b343...f2a430 )
by Freek
02:00
created

DirectoryCleaner::deleteFilesOlderThanMinutes()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 18
Code Lines 9

Duplication

Lines 0
Ratio 0 %
Metric Value
dl 0
loc 18
rs 9.4285
cc 1
eloc 9
nc 1
nop 1
1
<?php
2
3
namespace Spatie\DirectoryCleanup;
4
5
use Carbon\Carbon;
6
use Illuminate\Filesystem\Filesystem;
7
use Illuminate\Support\Collection;
8
9
class DirectoryCleaner
10
{
11
    /** @var \Illuminate\Filesystem\Filesystem */
12
    protected $filesystem;
13
14
    /** @var string */
15
    protected $directory;
16
17
    /**
18
     * @param \Illuminate\Filesystem\Filesystem $filesystem
19
     */
20
    public function __construct(Filesystem $filesystem)
21
    {
22
        $this->filesystem = $filesystem;
23
    }
24
25
    /**
26
     * @param string $directory
27
     *
28
     * @return $this
29
     */
30
    public function setDirectory(string $directory)
31
    {
32
        $this->directory = $directory;
33
34
        return $this;
35
    }
36
37
    /**
38
     * @param int $minutes
39
     *
40
     * @return \Illuminate\Support\Collection
41
     */
42
    public function deleteFilesOlderThanMinutes(int $minutes) : Collection
43
    {
44
        $timeInPast = Carbon::now()->subMinutes($minutes);
45
46
        $deletedFiles = collect($this->filesystem->files($this->directory))
47
            ->filter(function ($file) use ($timeInPast) {
48
49
                $timeWhenFileWasModified = Carbon::createFromTimestamp(filemtime($file));
50
51
                return $timeWhenFileWasModified->lt($timeInPast);
52
53
            })
54
            ->each(function ($file) {
55
                $this->filesystem->delete($file);
56
            });
57
58
        return $deletedFiles;
59
    }
60
}
61