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

CrudControllerCreator::createCRUDDatasClass()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Ubiquity\scaffolding\creators;
4
5
use Ubiquity\scaffolding\ScaffoldController;
6
use Ubiquity\utils\base\UString;
7
8
/**
9
 * Ubiquity\scaffolding\creators$CrudControllerCreator
10
 * This class is part of Ubiquity
11
 *
12
 * @author jcheron <[email protected]>
13
 * @version 1.0.0
14
 *
15
 */
16
class CrudControllerCreator extends BaseControllerCreator {
17
	private $resource;
18
	private $crudDatas;
19
	private $crudViewer;
20
	private $crudEvents;
21
	/**
22
	 *
23
	 * @var ScaffoldController
24
	 */
25
	private $scaffoldController;
26
27
	public function __construct($crudControllerName, $resource, $crudDatas = null, $crudViewer = null, $crudEvents = null, $crudViews = null, $routePath = '') {
28
		parent::__construct ( $crudControllerName, $routePath, $crudViews );
29
		$this->resource = $resource;
30
		$this->crudDatas = $crudDatas;
31
		$this->crudViewer = $crudViewer;
32
		$this->crudEvents = $crudEvents;
33
	}
34
35
	public function create(ScaffoldController $scaffoldController) {
36
		$this->scaffoldController = $scaffoldController;
37
		$resource = $this->resource;
38
		$crudControllerName = $this->controllerName;
39
		$classContent = "";
40
		$uses = [ ];
41
		$controllerNS = $this->controllerNS;
42
		$messages = [ ];
43
		$routeName = $crudControllerName;
44
		$scaffoldController->_createMethod ( "public", "__construct", "", "", "\n\t\tparent::__construct();\n\$this->model=\"{$resource}\";" );
45
46
		if (isset ( $this->crudDatas )) {
47
			$uses [] = "use controllers\\crud\\datas\\{$crudControllerName}Datas;";
48
			$uses [] = "use Ubiquity\\controllers\\crud\\CRUDDatas;";
49
50
			$classContent .= $scaffoldController->_createMethod ( "protected", "getAdminData", "", ": CRUDDatas", "\t\treturn new {$crudControllerName}Datas(\$this);" );
51
			$messages [] = $this->createCRUDDatasClass ();
52
		}
53
54
		if (isset ( $this->crudViewer )) {
55
			$uses [] = "use controllers\\crud\\viewers\\{$crudControllerName}Viewer;";
56
			$uses [] = "use Ubiquity\\controllers\\admin\\viewers\\ModelViewer;";
57
58
			$classContent .= $scaffoldController->_createMethod ( "protected", "getModelViewer", "", ": ModelViewer", "\t\treturn new {$crudControllerName}Viewer(\$this);" );
59
			$messages [] = $this->createModelViewerClass ();
60
		}
61
		if (isset ( $this->crudEvents )) {
62
			$uses [] = "use controllers\\crud\\events\\{$crudControllerName}Events;";
63
			$uses [] = "use Ubiquity\\controllers\\crud\\CRUDEvents;";
64
65
			$classContent .= $scaffoldController->_createMethod ( "protected", "getEvents", "", ": CRUDEvents", "\t\treturn new {$crudControllerName}Events(\$this);" );
66
			$messages [] = $this->createEventsClass ();
67
		}
68
69
		if (isset ( $this->views )) {
70
			$this->addViews ( $uses, $messages, $classContent );
71
		}
72
		if ($this->routePath != null) {
73
			if (UString::isNotNull ( $this->routePath )) {
74
				$routeName = $this->addRoute ( $this->routePath );
75
			}
76
		}
77
		$uses = implode ( "\n", $uses );
78
		$messages [] = $scaffoldController->_createController ( $crudControllerName, [ "%routeName%" => $routeName,"%route%" => $this->routePath,"%resource%" => $resource,"%uses%" => $uses,"%namespace%" => $controllerNS,"%baseClass%" => "\\Ubiquity\\controllers\\crud\\CRUDController","%content%" => $classContent ], "crudController.tpl" );
79
		echo implode ( "\n", $messages );
80
	}
81
82
	protected function addViews(&$uses, &$messages, &$classContent) {
83
		$crudControllerName = $this->controllerName;
84
		$crudViews = explode ( ",", $this->views );
85
		$uses [] = "use controllers\\crud\\files\\{$crudControllerName}Files;";
86
		$uses [] = "use Ubiquity\\controllers\\crud\\CRUDFiles;";
87
		$classContent .= $this->scaffoldController->_createMethod ( "protected", "getFiles", "", ": CRUDFiles", "\t\treturn new {$crudControllerName}Files();" );
88
		$classFilesContent = [ ];
89
		foreach ( $crudViews as $file ) {
90
			if (isset ( ScaffoldController::$views ["CRUD"] [$file] )) {
91
				$frameworkViewname = ScaffoldController::$views ["CRUD"] [$file];
92
				$this->scaffoldController->createAuthCrudView ( $frameworkViewname, $crudControllerName, $file );
93
				$classFilesContent [] = $this->scaffoldController->_createMethod ( "public", "getView" . ucfirst ( $file ), "", "", "\t\treturn \"" . $crudControllerName . "/" . $file . ".html\";" );
94
			}
95
		}
96
		$messages [] = $this->createCRUDFilesClass ( implode ( "", $classFilesContent ) );
97
	}
98
99
	protected function createCRUDDatasClass() {
100
		$ns = $this->controllerNS . "crud\\datas";
101
		$uses = "\nuse Ubiquity\\controllers\\crud\\CRUDDatas;";
102
		return $this->scaffoldController->_createClass ( "class.tpl", $this->controllerName . "Datas", $ns, $uses, "extends CRUDDatas", "\t//use override/implement Methods" );
103
	}
104
105
	protected function createModelViewerClass() {
106
		$ns = $this->controllerNS . "crud\\viewers";
107
		$uses = "\nuse Ubiquity\\controllers\\admin\\viewers\\ModelViewer;";
108
		return $this->scaffoldController->_createClass ( "class.tpl", $this->controllerName . "Viewer", $ns, $uses, "extends ModelViewer", "\t//use override/implement Methods" );
109
	}
110
111
	protected function createEventsClass() {
112
		$ns = $this->controllerNS . "crud\\events";
113
		$uses = "\nuse Ubiquity\\controllers\\crud\\CRUDEvents;";
114
		return $this->scaffoldController->_createClass ( "class.tpl", $this->controllerName . "Events", $ns, $uses, "extends CRUDEvents", "\t//use override/implement Methods" );
115
	}
116
117
	public function createCRUDFilesClass($classContent = "") {
118
		$ns = $this->controllerNS . "crud\\files";
119
		$uses = "\nuse Ubiquity\\controllers\\crud\\CRUDFiles;";
120
		return $this->scaffoldController->_createClass ( "class.tpl", $this->controllerName . "Files", $ns, $uses, "extends CRUDFiles", $classContent );
121
	}
122
}
123
124