Test Failed
Push — master ( 9608fc...ccdba4 )
by Jean-Christophe
07:46
created

AuthControllerCreator   A

Complexity

Total Complexity 12

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 12
eloc 44
dl 0
loc 66
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A createAuthFilesClass() 0 4 1
A addRoute() 0 7 2
A addViews() 0 16 3
A __construct() 0 3 1
A create() 0 25 5
1
<?php
2
3
namespace Ubiquity\scaffolding\creators;
4
5
use Ubiquity\controllers\Startup;
6
use Ubiquity\utils\base\UString;
7
use Ubiquity\scaffolding\ScaffoldController;
8
9
/**
10
 * Ubiquity\scaffolding\creators$AuthControllerCreator
11
 * This class is part of Ubiquity
12
 *
13
 * @author jcheron <[email protected]>
14
 * @version 1.0.0
15
 *
16
 */
17
class AuthControllerCreator extends BaseControllerCreator {
18
	private $baseClass;
19
20
	public function __construct($controllerName, $baseClass, $views = null, $routePath = "") {
21
		parent::__construct ( $controllerName, $routePath, $views );
22
		$this->baseClass = $baseClass;
23
	}
24
25
	public function create(ScaffoldController $scaffoldController) {
26
		$this->scaffoldController = $scaffoldController;
27
		$classContent = "";
28
		if ($this->baseClass == "\\Ubiquity\\controllers\\auth\\AuthController") {
29
			$controllerTemplate = "authController.tpl";
30
			$uses = [ "use Ubiquity\\utils\\http\\USession;","use Ubiquity\\utils\\http\\URequest;" ];
31
		} else {
32
			$controllerTemplate = "authController_.tpl";
33
			$uses = [ ];
34
		}
35
		$controllerNS = Startup::getNS ( "controllers" );
36
37
		$messages = [ ];
38
		$routeName = $this->controllerName;
39
		if (isset ( $this->views )) {
40
			$this->addViews ( $uses, $messages, $classContent );
41
		}
42
		if ($this->routePath != null) {
43
			if (UString::isNotNull ( $this->routePath )) {
44
				$routeName = $this->addRoute ( $this->routePath );
45
			}
46
		}
47
		$uses = implode ( "\n", $uses );
48
		$messages [] = $scaffoldController->_createController ( $this->controllerName, [ "%routeName%" => $routeName,"%route%" => $this->routePath,"%uses%" => $uses,"%namespace%" => $controllerNS,"%baseClass%" => $this->baseClass,"%content%" => $classContent ], $controllerTemplate );
49
		echo implode ( "\n", $messages );
50
	}
51
52
	private function addRoute($routePath) {
53
		if (! UString::startswith ( $routePath, "/" )) {
54
			$routePath = "/" . $routePath;
55
		}
56
		$routeName = $routePath;
57
		$routePath = "\n * @route(\"{$routePath}\",\"inherited\"=>true,\"automated\"=>true)";
0 ignored issues
show
Unused Code introduced by
The assignment to $routePath is dead and can be removed.
Loading history...
58
		return $routeName;
59
	}
60
61
	protected function addViews(&$uses, &$messages, &$classContent) {
62
		$scaffoldController = $this->scaffoldController;
63
		$authControllerName = $this->controllerName;
64
		$authViews = explode ( ",", $this->views );
65
		$uses [] = "use controllers\\auth\\files\\{$authControllerName}Files;";
66
		$uses [] = "use Ubiquity\\controllers\\auth\\AuthFiles;";
67
		$classContent .= $scaffoldController->_createMethod ( "protected", "getFiles", "", ": AuthFiles", "\t\treturn new {$authControllerName}Files();" );
68
		$classFilesContent = [ ];
69
		foreach ( $authViews as $file ) {
70
			if (isset ( ScaffoldController::$views ["auth"] [$file] )) {
71
				$frameworkViewname = ScaffoldController::$views ["auth"] [$file];
72
				$scaffoldController->createAuthCrudView ( $frameworkViewname, $authControllerName, $file );
73
				$classFilesContent [] = $scaffoldController->_createMethod ( "public", "getView" . ucfirst ( $file ), "", "", "\t\treturn \"" . $authControllerName . "/" . $file . ".html\";" );
74
			}
75
		}
76
		$messages [] = $this->createAuthFilesClass ( $scaffoldController, implode ( "", $classFilesContent ) );
77
	}
78
79
	protected function createAuthFilesClass(ScaffoldController $scaffoldController, $classContent = "") {
80
		$ns = Startup::getNS ( "controllers" ) . "auth\\files";
81
		$uses = "\nuse Ubiquity\\controllers\\auth\\AuthFiles;";
82
		return $scaffoldController->_createClass ( "class.tpl", $this->controllerName . "Files", $ns, $uses, "extends AuthFiles", $classContent );
83
	}
84
}
85
86