Completed
Push — master ( 176090...b969a1 )
by Peter
02:10
created

Cleaner::cleanBuild()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 23

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 20

Importance

Changes 0
Metric Value
dl 0
loc 23
ccs 0
cts 13
cp 0
rs 9.552
c 0
b 0
f 0
cc 4
nc 4
nop 1
crap 20
1
<?php
2
3
4
namespace Maslosoft\Addendum\Cache\PhpCache;
5
6
7
use function basename;
8
use DirectoryIterator;
9
use function file_exists;
10
use function is_dir;
11
use Maslosoft\Addendum\Builder\Builder;
12
use Maslosoft\Addendum\Helpers\Cacher;
13
use function strpos;
14
use function unlink;
15
16
class Cleaner extends CacheComponent
17
{
18 31
	public function clean($className)
19
	{
20 31
		$file = $this->getFilename($className);
21 31
		if(file_exists($file))
22
		{
23
			unlink($file);
24
			$this->cleanBuild($file);
25
		}
26 31
		$partialsDir = $this->getPartialsDir($className);
27 31
		if(file_exists($partialsDir) && is_dir($partialsDir))
28
		{
29
			foreach (new DirectoryIterator($partialsDir) as $info)
30
			{
31
				$usingFile = $info->getPathname();
32
				if(!$info->isFile())
33
				{
34
					continue;
35
				}
36
				unlink($usingFile);
37
				$this->cleanBuild($usingFile);
38
			}
39
		}
40 31
	}
41
42
	private function cleanBuild($file)
43
	{
44
		// TODO Temp rough build cleaner
45
		$baseName = basename($file, '.php');
46
		$basePath = sprintf(
47
			'%s/%s@addendum',
48
			dirname($this->basePath),
49
			Cacher::classToFile(Builder::class)
50
		);
51
		foreach(new DirectoryIterator($basePath) as $info)
52
		{
53
			if(!$info->isFile())
54
			{
55
				continue;
56
			}
57
			$name = $info->getFilename();
58
			// NOTE: Coarse check, might remove more files
59
			if(strpos($name, $baseName) !== false)
60
			{
61
				unlink($info->getPathname());
62
			}
63
		}
64
	}
65
}