Passed
Push — master ( ba7917...6c027d )
by Jean-Christophe
06:26
created

ModelsCacheTrait::getModels()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 5
nc 2
nop 2
dl 0
loc 7
ccs 6
cts 6
cp 1
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
namespace Ubiquity\cache\traits;
3
4
use Ubiquity\orm\parser\ModelParser;
5
use Ubiquity\cache\ClassUtils;
6
use Ubiquity\contents\validation\ValidatorsManager;
7
8
/**
9
 * @author jc
10
 * @static array $cache
11
 */
12
trait ModelsCacheTrait{
13
	abstract protected static function _getFiles(&$config,$type,$silent=false);
14
15 6
	public static function createOrmModelCache($classname) {
16 6
		$key=self::getModelCacheKey($classname);
17 6
		if(isset(self::$cache)){
18 6
			$p=new ModelParser();
19 6
			$p->parse($classname);
20 6
			self::$cache->store($key, $p->__toString(),'models');
21 6
			return self::$cache->fetch($key);
22
		}
23
	}
24
25 15
	public static function getOrmModelCache($classname) {
26 15
		return self::$cache->fetch(self::getModelCacheKey($classname));
27
	}
28
29 20
	public static function getModelCacheKey($classname){
30 20
		return \str_replace("\\", \DS, $classname);
31
	}
32
33 2
	public static function modelCacheExists($classname){
34 2
		$key=self::getModelCacheKey($classname);
35 2
		if(isset(self::$cache))
36 2
			return self::$cache->exists($key);
37
		return false;
38
	}
39
40 5
	public static function initModelsCache(&$config,$forChecking=false,$silent=false) {
41 5
		$files=self::getModelsFiles($config,$silent);
42 5
		foreach ( $files as $file ) {
43 5
			if (is_file($file)) {
44 5
				$model=ClassUtils::getClassFullNameFromFile($file);
45 5
				if(!$forChecking){
46 5
					self::createOrmModelCache($model);
47
				}
48
			}
49
		}
50 5
		if(!$forChecking){
51 5
			ValidatorsManager::initModelsValidators($config);
52
		}
53 5
		if(!$silent){
54 5
			echo "Models cache reset\n";
55
		}
56 5
	}
57
58 11
	public static function getModelsFiles(&$config,$silent=false){
59 11
		return self::_getFiles($config, "models",$silent);
60
	}
61
62 11
	public static function getModels(&$config,$silent=false){
63 11
		$result=[];
64 11
		$files=self::getModelsFiles($config,$silent);
65 11
		foreach ($files as $file){
66 11
			$result[]=ClassUtils::getClassFullNameFromFile($file);
67
		}
68 11
		return $result;
69
	}
70
71
}
72