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

Cleaner   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 22.22%

Importance

Changes 0
Metric Value
wmc 10
lcom 1
cbo 2
dl 0
loc 50
ccs 6
cts 27
cp 0.2222
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
B clean() 0 23 6
A cleanBuild() 0 23 4
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
}