Completed
Push — master ( c9f770...4e7f70 )
by Henry
05:22
created

includes/View/InstallForm.php (1 issue)

Labels
Severity

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
namespace Redaxscript\View;
3
4
use Redaxscript\Html;
5
use Redaxscript\Module;
6
use Redaxscript\Validator;
7
8
/**
9
 * children class to create the install form
10
 *
11
 * @since 3.0.0
12
 *
13
 * @package Redaxscript
14
 * @category View
15
 * @author Henry Ruhs
16
 */
17
18
class InstallForm extends ViewAbstract
19
{
20
	/**
21
	 * render the view
22
	 *
23
	 * @param array $installArray
24
	 *
25
	 * @since 3.0.0
26
	 *
27
	 * @return string
28
	 */
29
30 1
	public function render(array $installArray = []) : string
31
	{
32 1
		$output = Module\Hook::trigger('installFormStart');
33 1
		$nameValidator = new Validator\Name();
34 1
		$userValidator = new Validator\User();
35 1
		$passwordValidator = new Validator\Password();
36
37
		/* html element */
38
39 1
		$titleElement = new Html\Element();
40
		$titleElement
41 1
			->init('h2',
42
			[
43 1
				'class' => 'rs-title-content'
44
			])
45 1
			->text($this->_language->get('installation'));
46 1
		$formElement = new Html\Form($this->_registry, $this->_language);
47 1
		$formElement->init(
48
		[
49 1
			'form' =>
50
			[
51
				'class' => 'rs-js-validate rs-js-behavior rs-component-accordion rs-form-default rs-form-install'
52
			],
53
			'button' =>
54
			[
55
				'submit' =>
56
				[
57
					'class' => 'rs-js-submit rs-button-default rs-is-full',
58
					'name' => self::class
59
				]
60
			]
61
		]);
62
63
		/* create the form */
64
65
		$formElement
66
67
			/* database */
68
69 1
			->radio(
70
			[
71 1
				'id' => self::class . '\Database',
72
				'class' => 'rs-fn-status-accordion',
73
				'name' => self::class . '\Accordion',
74
				'checked' => 'checked'
75
			])
76 1
			->label($this->_language->get('database_setup'),
77
			[
78 1
				'class' => 'rs-fn-toggle-accordion rs-label-accordion',
79
				'for' => self::class . '\Database'
80
			])
81 1
			->append('<ul class="rs-fn-content-accordion rs-box-accordion"><li>');
82 1
		if ($this->_registry->get('driverArray'))
83
		{
84
			$formElement
85 1
				->append('</li><li>')
86 1
				->label($this->_language->get('type'),
87
				[
88 1
					'for' => 'db-type'
89
				])
90 1
				->select($this->_registry->get('driverArray'),
0 ignored issues
show
It seems like $this->_registry->get('driverArray') targeting Redaxscript\Registry::get() can also be of type string; however, Redaxscript\Html\Form::select() does only seem to accept array, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
91
				[
92 1
					$installArray['dbType']
93
				],
94
				[
95 1
					'id' => 'db-type',
96
					'name' => 'db-type'
97
				])
98 1
				->append('</li><li>');
99
		}
100
		$formElement
101 1
			->append('<li>')
102 1
			->label($this->_language->get('host'),
103
			[
104 1
				'for' => 'db-host'
105
			])
106 1
			->text(
107
			[
108 1
				'id' => 'db-host',
109 1
				'name' => 'db-host',
110 1
				'required' => 'required',
111 1
				'value' => $installArray['dbHost']
112
			])
113 1
			->append('</li><li>')
114 1
			->label($this->_language->get('name'),
115
			[
116 1
				'for' => 'db-name'
117
			])
118 1
			->text(
119
			[
120 1
				'id' => 'db-name',
121 1
				'name' => 'db-name',
122 1
				'required' => 'required',
123 1
				'value' => $installArray['dbName']
124
			])
125 1
			->append('</li><li>')
126 1
			->label($this->_language->get('user'),
127
			[
128 1
				'for' => 'db-user'
129
			])
130 1
			->text(
131
			[
132 1
				'id' => 'db-user',
133 1
				'name' => 'db-user',
134 1
				'required' => 'required',
135 1
				'value' => $installArray['dbUser']
136
			])
137 1
			->append('</li><li>')
138 1
			->label($this->_language->get('password'),
139
			[
140 1
				'for' => 'db-password'
141
			])
142 1
			->password(
143
			[
144 1
				'id' => 'db-password',
145 1
				'name' => 'db-password',
146 1
				'value' => $installArray['dbPassword']
147
			])
148 1
			->append('</li><li>')
149 1
			->label($this->_language->get('prefix'),
150
			[
151 1
				'for' => 'db-prefix'
152
			])
153 1
			->text(
154
			[
155 1
				'id' => 'db-prefix',
156 1
				'name' => 'db-prefix',
157 1
				'value' => $installArray['dbPrefix']
158
			])
159 1
			->append('</li></ul>')
160
161
			/* account */
162
163 1
			->radio(
164
			[
165 1
				'id' => self::class . '\Account',
166
				'class' => 'rs-fn-status-accordion',
167
				'name' => self::class . '\Accordion'
168
			])
169 1
			->label($this->_language->get('account_create'),
170
			[
171 1
				'class' => 'rs-fn-toggle-accordion rs-label-accordion',
172
				'for' => self::class . '\Account'
173
			])
174 1
			->append('<ul class="rs-fn-content-accordion rs-box-accordion"><li>')
175 1
			->label($this->_language->get('name'),
176
			[
177 1
				'for' => 'name'
178
			])
179 1
			->text(
180
			[
181 1
				'id' => 'admin-name',
182 1
				'name' => 'admin-name',
183 1
				'pattern' => $nameValidator->getPattern(),
184 1
				'required' => 'required',
185 1
				'value' => $installArray['adminName']
186
			])
187 1
			->append('</li><li>')
188 1
			->label($this->_language->get('user'),
189
			[
190 1
				'for' => 'admin-user'
191
			])
192 1
			->text(
193
			[
194 1
				'id' => 'admin-user',
195 1
				'name' => 'admin-user',
196 1
				'pattern' => $userValidator->getPattern(),
197 1
				'required' => 'required',
198 1
				'value' => $installArray['adminUser']
199
			])
200 1
			->append('</li><li>')
201 1
			->label($this->_language->get('password'),
202
			[
203 1
				'for' => 'admin-password'
204
			])
205 1
			->password(
206
			[
207 1
				'id' => 'admin-password',
208 1
				'name' => 'admin-password',
209 1
				'pattern' => $passwordValidator->getPattern(),
210 1
				'required' => 'required',
211 1
				'value' => $installArray['adminPassword']
212
			])
213 1
			->append('</li><li>')
214 1
			->label($this->_language->get('email'),
215
			[
216 1
				'for' => 'admin-email'
217
			])
218 1
			->email(
219
			[
220 1
				'id' => 'admin-email',
221 1
				'name' => 'admin-email',
222 1
				'required' => 'required',
223 1
				'value' => $installArray['adminEmail']
224
			])
225 1
			->append('</li></ul>')
226 1
			->hidden(
227
			[
228 1
				'name' => 'refresh-connection',
229
				'value' => 1
230
			])
231 1
			->token()
232 1
			->submit($this->_language->get('install'));
233
234
		/* collect output */
235
236 1
		$output .= $titleElement . $formElement;
237 1
		$output .= Module\Hook::trigger('installFormEnd');
238 1
		return $output;
239
	}
240
}
241