Completed
Push — master ( ef387c...215071 )
by Agel_Nash
03:15
created
assets/snippets/DLUsers/src/Actions.php 2 patches
Indentation   +395 added lines, -395 removed lines patch added patch discarded remove patch
@@ -12,9 +12,9 @@  discard block
 block discarded – undo
12 12
 class Actions{
13 13
     protected $modx = null;
14 14
     public $userObj = null;
15
-	/**
16
-	 * @var DLCollection
17
-	 */
15
+    /**
16
+     * @var DLCollection
17
+     */
18 18
     public $url;
19 19
     protected static $lang = null;
20 20
     protected static $langDic = array();
@@ -23,7 +23,7 @@  discard block
 block discarded – undo
23 23
      */
24 24
     protected static $instance;
25 25
 
26
-	protected $config = array();
26
+    protected $config = array();
27 27
 
28 28
     /**
29 29
      * gets the instance via lazy initialization (created on first usage)
@@ -50,15 +50,15 @@  discard block
 block discarded – undo
50 50
     private function __construct(DocumentParser $modx, $userClass, $debug)
51 51
     {
52 52
         $this->modx = $modx;
53
-		$this->userObj = new $userClass($this->modx, $debug);
54
-		$this->url = new DLCollection($this->modx);
53
+        $this->userObj = new $userClass($this->modx, $debug);
54
+        $this->url = new DLCollection($this->modx);
55 55
 
56
-		$site_url = $this->modx->getConfig('site_url');
57
-		$site_start = $this->modx->getConfig('site_start', 1);
58
-		$error_page = $this->modx->getConfig('error_page', $site_start);
59
-		$unauthorized_page = $this->modx->getConfig('unauthorized_page', $error_page);
56
+        $site_url = $this->modx->getConfig('site_url');
57
+        $site_start = $this->modx->getConfig('site_start', 1);
58
+        $error_page = $this->modx->getConfig('error_page', $site_start);
59
+        $unauthorized_page = $this->modx->getConfig('unauthorized_page', $error_page);
60 60
 
61
-		$this->config = compact('site_url', 'site_start', 'error_page', 'unauthorized_page');
61
+        $this->config = compact('site_url', 'site_start', 'error_page', 'unauthorized_page');
62 62
     }
63 63
 
64 64
     /**
@@ -85,47 +85,47 @@  discard block
 block discarded – undo
85 85
      * Сброс авторизации и обновление страницы
86 86
      */
87 87
     public function logout($params){
88
-    	$LogoutName = APIHelpers::getkey($params, 'LogoutName', 'logout');
89
-    	if(is_scalar($LogoutName) && !empty($LogoutName) && isset($_GET[$LogoutName])){
90
-    		$userID = $this->UserID('web');
91
-    		if($userID){
92
-    			$this->userObj->edit($userID);
93
-    			if($this->userObj->getID()){
94
-	    			$this->modx->invokeEvent("OnBeforeWebLogout", array(
95
-		    			"userid"   => $this->userObj->getID(),
96
-		    			"username" => $this->userObj->get('username')
97
-		    		));
98
-	    		}
99
-		    	$this->userObj->logOut();
100
-		    	if($this->userObj->getID()){
101
-		    		$this->modx->invokeEvent("OnWebLogout", array(
102
-		    			"userid"        => $this->userObj->getID(),
103
-		    			"username"      => $this->userObj->get('username')
104
-		    		));
105
-		    	}
106
-
107
-			    $go = APIHelpers::getkey($params, 'url', '');
108
-			    if(empty($go)){
109
-			    	$go = str_replace(
110
-			    		array("?".$LogoutName, "&".$LogoutName),
111
-			    		array("", ""),
112
-			    		$_SERVER['REQUEST_URI']
113
-			    	);
114
-			    }
115
-
116
-			    $start = $this->makeUrl($this->config['site_start']);
117
-			    if($start == $go){
118
-			        $go = $this->config['site_url'];
119
-			    }else{
120
-			        $go = $this->config['site_url'].ltrim($go, '/');
121
-			    }
122
-			    $this->moveTo(array('url' => $go));
123
-    		}else{
124
-    			//Если юзер не авторизован, то показываем ему 404 ошибку
125
-    			$this->modx->sendErrorPage();
126
-    		}
127
-		}
128
-	    return true;
88
+        $LogoutName = APIHelpers::getkey($params, 'LogoutName', 'logout');
89
+        if(is_scalar($LogoutName) && !empty($LogoutName) && isset($_GET[$LogoutName])){
90
+            $userID = $this->UserID('web');
91
+            if($userID){
92
+                $this->userObj->edit($userID);
93
+                if($this->userObj->getID()){
94
+                    $this->modx->invokeEvent("OnBeforeWebLogout", array(
95
+                        "userid"   => $this->userObj->getID(),
96
+                        "username" => $this->userObj->get('username')
97
+                    ));
98
+                }
99
+                $this->userObj->logOut();
100
+                if($this->userObj->getID()){
101
+                    $this->modx->invokeEvent("OnWebLogout", array(
102
+                        "userid"        => $this->userObj->getID(),
103
+                        "username"      => $this->userObj->get('username')
104
+                    ));
105
+                }
106
+
107
+                $go = APIHelpers::getkey($params, 'url', '');
108
+                if(empty($go)){
109
+                    $go = str_replace(
110
+                        array("?".$LogoutName, "&".$LogoutName),
111
+                        array("", ""),
112
+                        $_SERVER['REQUEST_URI']
113
+                    );
114
+                }
115
+
116
+                $start = $this->makeUrl($this->config['site_start']);
117
+                if($start == $go){
118
+                    $go = $this->config['site_url'];
119
+                }else{
120
+                    $go = $this->config['site_url'].ltrim($go, '/');
121
+                }
122
+                $this->moveTo(array('url' => $go));
123
+            }else{
124
+                //Если юзер не авторизован, то показываем ему 404 ошибку
125
+                $this->modx->sendErrorPage();
126
+            }
127
+        }
128
+        return true;
129 129
     }
130 130
 
131 131
     /**
@@ -133,14 +133,14 @@  discard block
 block discarded – undo
133 133
      * @return string
134 134
      */
135 135
     public function logoutUrl($params){
136
-    	$LogoutName = APIHelpers::getkey($params, 'LogoutName', 'logout');
137
-    	$request = parse_url($_SERVER['REQUEST_URI']);
136
+        $LogoutName = APIHelpers::getkey($params, 'LogoutName', 'logout');
137
+        $request = parse_url($_SERVER['REQUEST_URI']);
138 138
 
139
-    	//Во избежании XSS мы не сохраняем весь REQUEST_URI, а берем только path
140
-    	/*$query = (!empty($request['query'])) ? $request['query'].'&' : '';*/
141
-    	$query = '?'.$LogoutName;
139
+        //Во избежании XSS мы не сохраняем весь REQUEST_URI, а берем только path
140
+        /*$query = (!empty($request['query'])) ? $request['query'].'&' : '';*/
141
+        $query = '?'.$LogoutName;
142 142
 
143
-    	return $request['path'].$query;
143
+        return $request['path'].$query;
144 144
     }
145 145
 
146 146
     /**
@@ -149,343 +149,343 @@  discard block
 block discarded – undo
149 149
      *   	В противном случае вся работа происходит внутри самого блока
150 150
      */
151 151
     public function AuthBlock($params){
152
-    	$POST = array('backUrl' => $_SERVER['REQUEST_URI']);
153
-
154
-    	$error = $errorCode = '';
155
-
156
-    	$pwdField = APIHelpers::getkey($params, 'pwdField', 'password');
157
-		$emailField = APIHelpers::getkey($params, 'emailField', 'email');
158
-		$rememberField = APIHelpers::getkey($params, 'rememberField', 'remember');
159
-
160
-    	if($this->UserID('web')){
161
-			$tpl = APIHelpers::getkey($params, 'tplProfile', '');
162
-			if(empty($tpl)){
163
-				$tpl = $this->getTemplate('tplProfile');
164
-			}
165
-			$dataTPL = $this->userObj->toArray();
166
-			$dataTPL['url.logout'] = $this->logoutUrl($params);
167
-    		$homeID = APIHelpers::getkey($params, 'homeID');
168
-			if(!empty($homeID)){
169
-				$dataTPL['url.profile'] = $this->makeUrl($homeID);
170
-			}
171
-		}else{
172
-			$tpl = APIHelpers::getkey($params, 'tplForm', '');
173
-			if(empty($tpl)){
174
-				$tpl = $this->getTemplate('authForm');
175
-			}
176
-			$POST = $this->Auth($pwdField, $emailField, $rememberField, $POST['backUrl'], __METHOD__, $error, $errorCode, $params);
177
-	    	$dataTPL = array(
178
-				'backUrl' => APIHelpers::getkey($POST, 'backUrl', ''),
179
-				'emailValue' => APIHelpers::getkey($POST, 'email', ''),
180
-				'emailField' => $emailField,
181
-				'pwdField' => $pwdField,
182
-		    	'method' => strtolower(__METHOD__),
183
-				'error' => $error,
184
-				'errorCode' => $errorCode
185
-			);
186
-			$authId = APIHelpers::getkey($params, 'authId');
187
-			if(!empty($authId)){
188
-				$dataTPL['authPage'] = $this->makeUrl($authId);
189
-				$dataTPL['method'] = strtolower(__CLASS__ . '::'. 'authpage');
190
-			}
191
-		}
192
-		return DLTemplate::getInstance($this->modx)->parseChunk($tpl, $dataTPL);
152
+        $POST = array('backUrl' => $_SERVER['REQUEST_URI']);
153
+
154
+        $error = $errorCode = '';
155
+
156
+        $pwdField = APIHelpers::getkey($params, 'pwdField', 'password');
157
+        $emailField = APIHelpers::getkey($params, 'emailField', 'email');
158
+        $rememberField = APIHelpers::getkey($params, 'rememberField', 'remember');
159
+
160
+        if($this->UserID('web')){
161
+            $tpl = APIHelpers::getkey($params, 'tplProfile', '');
162
+            if(empty($tpl)){
163
+                $tpl = $this->getTemplate('tplProfile');
164
+            }
165
+            $dataTPL = $this->userObj->toArray();
166
+            $dataTPL['url.logout'] = $this->logoutUrl($params);
167
+            $homeID = APIHelpers::getkey($params, 'homeID');
168
+            if(!empty($homeID)){
169
+                $dataTPL['url.profile'] = $this->makeUrl($homeID);
170
+            }
171
+        }else{
172
+            $tpl = APIHelpers::getkey($params, 'tplForm', '');
173
+            if(empty($tpl)){
174
+                $tpl = $this->getTemplate('authForm');
175
+            }
176
+            $POST = $this->Auth($pwdField, $emailField, $rememberField, $POST['backUrl'], __METHOD__, $error, $errorCode, $params);
177
+            $dataTPL = array(
178
+                'backUrl' => APIHelpers::getkey($POST, 'backUrl', ''),
179
+                'emailValue' => APIHelpers::getkey($POST, 'email', ''),
180
+                'emailField' => $emailField,
181
+                'pwdField' => $pwdField,
182
+                'method' => strtolower(__METHOD__),
183
+                'error' => $error,
184
+                'errorCode' => $errorCode
185
+            );
186
+            $authId = APIHelpers::getkey($params, 'authId');
187
+            if(!empty($authId)){
188
+                $dataTPL['authPage'] = $this->makeUrl($authId);
189
+                $dataTPL['method'] = strtolower(__CLASS__ . '::'. 'authpage');
190
+            }
191
+        }
192
+        return DLTemplate::getInstance($this->modx)->parseChunk($tpl, $dataTPL);
193 193
     }
194 194
 
195
-	/**
196
-	 * Авторизация на сайте со страницы авторизации
197
-	 * [!Auth? &login=`password` &pwdField=`password` &homeID=`72`!]
198
-	 */
199
-	public function AuthPage($params){
200
-		$homeID = APIHelpers::getkey($params, 'homeID');
201
-		$this->isAuthGoHome(array('id' => $homeID));
202
-
203
-		$error = $errorCode = '';
204
-		$POST = array('backUrl' => '');
205
-
206
-		$pwdField = APIHelpers::getkey($params, 'pwdField', 'password');
207
-		$emailField = APIHelpers::getkey($params, 'emailField', 'email');
208
-		$rememberField = APIHelpers::getkey($params, 'rememberField', 'remember');
209
-
210
-		$tpl = APIHelpers::getkey($params, 'tpl', '');
211
-		if(empty($tpl)){
212
-			$tpl = $this->getTemplate('authForm');
213
-		}
214
-
215
-		$request = parse_url($_SERVER['REQUEST_URI']);
216
-		if(!empty($_SERVER['HTTP_REFERER'])){
217
-			/**
218
-			 * Thank you for super protection against hacking in protect.inc.php:-)
219
-			 */
220
-			$refer = htmlspecialchars_decode($_SERVER['HTTP_REFERER'], ENT_QUOTES);
221
-		}else{
222
-			$selfHost = rtrim(str_replace("http://", "", $this->config['site_url']), '/');
223
-			if(empty( $request['host']) ||  $request['host']==$selfHost){
224
-				$query = !empty($request['query']) ? '?'.$request['query'] : '';
225
-			    $refer = !empty($request['path']) ? $request['path'].$query : '';
226
-			}else{
227
-				$refer = '';
228
-			}
229
-		}
230
-
231
-		if($_SERVER['REQUEST_METHOD'] == 'POST'){
232
-			$backUrl = APIHelpers::getkey($_POST, 'backUrl', $POST['backUrl']);
233
-			if(!is_scalar($backUrl)){
234
-				$backUrl = $refer;
235
-			}else{
236
-				$backUrl = urldecode($backUrl);
237
-			}
238
-		}else{
239
-			$backUrl = $refer;
240
-		}
241
-		$backUrl = parse_url($backUrl);
242
-		if(!empty($backUrl['path']) && $request['path'] != $backUrl['path']){
243
-		    $POST['backUrl'] = $backUrl['path'];
244
-		}else{
245
-			$selfHost = rtrim(str_replace("http://", "", $this->config['site_url']), '/');
246
-			if(empty($backUrl['host']) || $backUrl['host']==$selfHost){
247
-				$query = !empty($backUrl['query']) ? '?'.$backUrl['query'] : '';
248
-			    $POST['backUrl'] = !empty($backUrl['path']) ? $backUrl['path'].$query : '';
249
-			}else{
250
-				$POST['backUrl'] = '';
251
-			}
252
-		}
253
-		if(!empty($POST['backUrl'])){
254
-			$idURL = $this->moveTo(array(
255
-				'url' => '/'.ltrim($POST['backUrl'], '/'),
256
-			    'validate' => true
257
-			));
258
-		}else{
259
-			$idURL = 0;
260
-		}
261
-		if(empty($idURL)){
262
-			if(empty($homeID)){
263
-				$homeID = $this->config['site_start'];
264
-			}
265
-			$POST['backUrl'] = $this->makeUrl($homeID);
266
-		}
267
-		$POST = $this->Auth($pwdField, $emailField, $rememberField, $POST['backUrl'], __METHOD__, $error, $errorCode, $params);
268
-		return DLTemplate::getInstance($this->modx)->parseChunk($tpl, array(
269
-		    'backUrl' => APIHelpers::getkey($POST, 'backUrl', ''),
270
-			'emailValue' => APIHelpers::getkey($POST, 'email', ''),
271
-			'emailField' => $emailField,
272
-		    'pwdField' => $pwdField,
273
-		    'method' => strtolower(__METHOD__),
274
-			'error' => $error,
275
-			'errorCode' => $errorCode
276
-		));
277
-	}
278
-	protected function Auth($pwdField, $emailField, $rememberField, $backUrl, $method, &$error, &$errorCode, $params = array()){
279
-		$POST = array(
280
-			'backUrl' => urlencode($backUrl)
281
-		);
282
-		$userObj = &$this->userObj;
283
-		if($_SERVER['REQUEST_METHOD']=='POST' && APIHelpers::getkey($_POST, 'method', '') == strtolower($method)){
284
-			$POST = array_merge($POST, array(
285
-				'password' => APIHelpers::getkey($_POST, $pwdField, ''),
286
-				'email' => APIHelpers::getkey($_POST, $emailField, ''),
287
-				'remember' => (bool)((int)APIHelpers::getkey($_POST, $rememberField, 0))
288
-			));
289
-			if(!empty($POST['email']) && is_scalar($POST['email']) && !$userObj->emailValidate($POST['email'], false)){
290
-				$userObj->edit($POST['email']);
291
-
292
-				$this->modx->invokeEvent("OnBeforeWebLogin", array(
293
-		            "username"		=> $POST['email'],
294
-		            "userpassword"	=> $POST['password'],
295
-		            "rememberme"	=> $POST['remember'],
296
-		            'userObj'		=> $userObj
297
-		        ));
298
-				if($userObj->getID() && !$userObj->checkBlock($userObj->getID())){
299
-					$pluginFlag = $this->modx->invokeEvent("OnWebAuthentication", array(
300
-	                    "userid"        => $userObj->getID(),
301
-	                    "username"      => $userObj->get('username'),
302
-	                    "userpassword"  => $POST['password'],
303
-	                    "savedpassword" => $userObj->get('password'),
304
-	                    "rememberme"    => $POST['remember'],
305
-	                ));
306
-					if(
307
-						($pluginFlag === true || $userObj->testAuth($userObj->getID(), $POST['password'], 0))
308
-							&&
309
-						$userObj->authUser($userObj->getID(), $POST['remember'])
310
-					){
311
-						$userObj->set('logincount', (int)$userObj->get('logincount') + 1);
312
-						$userObj->set('lastlogin', time());
313
-						$userObj->set('failedlogincount', 0);
314
-						$userObj->save(false, false);
315
-
316
-						$this->modx->invokeEvent("OnWebLogin", array(
317
-			                "userid"		=> $userObj->getID(),
318
-			                "username"		=> $userObj->get('username'),
319
-			                "userpassword"	=> $POST['password'],
320
-			                "rememberme"	=> $POST['remember'],
321
-			            ));
322
-						$this->moveTo(array('url' => urldecode($POST['backUrl'])));
323
-					}else{
324
-						$userObj->set('failedlogincount', (int)$userObj->get('failedlogincount') + 1);
325
-						$userObj->save(false, false);
326
-
327
-						$error = 'error.incorrect_password';
328
-					}
329
-				}else{
330
-					$error = 'error.no_user';
331
-				}
332
-			}else{
333
-				$error = 'error.incorrect_mail';
334
-				$POST['email'] = '';
335
-			}
336
-		}
337
-		if(!empty($error)){
338
-			$errorCode = $error;
339
-			$error = APIHelpers::getkey($params, $error, '');
340
-			$error = static::getLangMsg($error, $error);
341
-		}
342
-		return $POST;
343
-	}
344
-	/**
345
-	 * Информация о пользователе
346
-	 * [!DLUsers? &action=`UserInfo` &field=`fullname` &id=`2`!]
347
-	 */
348
-	public function UserInfo($params){
349
-		$out = '';
350
-		$userID = APIHelpers::getkey($params, 'id', 0);
351
-		if(empty($userID)){
352
-			$userID = $this->UserID('web');
353
-		}
354
-		$field = APIHelpers::getkey($params, 'field', 'username');
355
-		if($userID > 0){
356
-			$this->userObj->edit($userID);
357
-			switch(true){
358
-				case ($field == $this->userObj->fieldPKName()):
359
-					$out = $this->userObj->getID();
360
-					break;
361
-				case ($this->userObj->issetField($field)):
362
-					$out = $this->userObj->get($field);
363
-					break;
364
-			}
365
-		}
366
-		return $out;
367
-	}
368
-	/**
369
-	 * ID пользователя
370
-	 */
371
-	public function UserID($type = 'web'){
372
-		return $this->modx->getLoginUserID($type);
373
-	}
374
-	/**
375
-	 * Если не авторизован - то отправить на страницу
376
-	 */
377
-	public function isGuestGoHome($params){
378
-		if(!$this->UserID('web')){
379
-			/**
380
-			 * @see : http://modx.im/blog/triks/105.html
381
-			 */
382
-			$this->modx->invokeEvent('OnPageUnauthorized');
383
-			$id = APIHelpers::getkey($params, 'id', $this->config['unauthorized_page']);
384
-		    $this->moveTo(compact('id'));
385
-		}
386
-		return;
387
-	}
388
-
389
-	/**
390
-	 * Если авторизован - то открыть личный кабинет
391
-	 */
392
-	public function isAuthGoHome($params){
393
-		$userID = $this->UserID('web');
394
-		if($userID>0){
395
-			$id = APIHelpers::getkey($params, 'homeID');
396
-		    if(empty($id)){
397
-				$id = $this->modx->getConfig('login_home', $this->config['site_start']);
398
-		    }
399
-		    $this->moveTo(compact('id'));
400
-		}
401
-		return;
402
-	}
403
-
404
-	/**
405
-	 * Редирект
406
-	 */
407
-	public function moveTo($params){
408
-		$id = (int)APIHelpers::getkey($params, 'id', 0);
409
-		$uri = APIHelpers::getkey($params, 'url', '');
410
-		if((empty($uri) && !empty($id)) || !is_string($uri)){
411
-			$uri = $this->makeUrl($id);
412
-		}
413
-		$code = (int)APIHelpers::getkey($params, 'code', 0);
414
-		$addUrl = APIHelpers::getkey($params, 'addUrl', '');
415
-		if(is_scalar($addUrl) && $addUrl!=''){
416
-		    $uri .= "?".$addUrl;
417
-		}
418
-		if(APIHelpers::getkey($params, 'validate', false)){
419
-			if(isset($this->modx->snippetCache['getPageID'])){
420
-				$out = $this->modx->runSnippet('getPageID', compact('uri'));
421
-				if(empty($out)){
422
-					$uri = '';
423
-				}
424
-			}else{
425
-				$uri = APIhelpers::sanitarTag($uri);
426
-			}
427
-		}else{
428
-			//$modx->sendRedirect($url, 0, 'REDIRECT_HEADER', 'HTTP/1.1 307 Temporary Redirect');
429
-			header("Location: ".$uri, true, ($code>0 ? $code : 307));
430
-		}
431
-		return $uri;
432
-	}
433
-
434
-	/**
435
-	 * Создание ссылки на страницу
436
-	 *
437
-	 * @param  int $id ID документа
438
-	 * @return string
439
-	 */
440
-	protected function makeUrl($id = null){
441
-		$id = (int)$id;
442
-		if($id <= 0){
443
-			$id = $this->modx->documentObject['id'];
444
-		}
445
-		if($this->url->containsKey($id)){
446
-			$url = $this->url->get($id);
447
-		}else{
448
-			$url = $this->modx->makeUrl($id);
449
-			$this->url->set($id, $url);
450
-		}
451
-		return $url;
452
-	}
453
-	protected function getTemplate($name){
454
-		$out = '';
455
-		$file = dirname(dirname(__FILE__)).'/tpl/'.$name.'.html';
456
-		if( FS::getInstance()->checkFile($file)){
457
-			$out = '@CODE: '.file_get_contents($file);
458
-		}
459
-		return $out;
460
-	}
461
-	protected static function loadLang($lang){
462
-		$file = dirname(dirname(__FILE__)).'/lang/'.$lang.'.php';
463
-		if( ! FS::getInstance()->checkFile($file)){
464
-			$file = false;
465
-		}
466
-		if(!empty($lang) && !isset(static::$langDic[$lang]) && !empty($file)){
467
-			static::$langDic[$lang] = include_once($file);
468
-			if(is_array(static::$langDic[$lang])){
469
-				static::$langDic[$lang] = APIHelpers::renameKeyArr(static::$langDic[$lang], $lang);
470
-			}else{
471
-				static::$langDic[$lang] = array();
472
-			}
473
-		}
474
-		return !(empty($lang) || empty(static::$langDic[$lang]));
475
-	}
476
-	protected static function getLangMsg($key, $default){
477
-		$out = $default;
478
-		$lng = static::$lang;
479
-		$dic = static::$langDic;
480
-		if(isset($dic[$lng], $dic[$lng][$lng.'.'.$key])){
481
-			$out = $dic[$lng][$lng.'.'.$key];
482
-		}
483
-		if(class_exists('evoBabel', false) && isset(self::$instance->modx->snippetCache['lang'])){
484
-			$msg = self::$instance->modx->runSnippet('lang', array('a' => 'DLUsers.'.$key));
485
-			if(!empty($msg)){
486
-				$out = $msg;
487
-			}
488
-		}
489
-		return $out;
490
-	}
195
+    /**
196
+     * Авторизация на сайте со страницы авторизации
197
+     * [!Auth? &login=`password` &pwdField=`password` &homeID=`72`!]
198
+     */
199
+    public function AuthPage($params){
200
+        $homeID = APIHelpers::getkey($params, 'homeID');
201
+        $this->isAuthGoHome(array('id' => $homeID));
202
+
203
+        $error = $errorCode = '';
204
+        $POST = array('backUrl' => '');
205
+
206
+        $pwdField = APIHelpers::getkey($params, 'pwdField', 'password');
207
+        $emailField = APIHelpers::getkey($params, 'emailField', 'email');
208
+        $rememberField = APIHelpers::getkey($params, 'rememberField', 'remember');
209
+
210
+        $tpl = APIHelpers::getkey($params, 'tpl', '');
211
+        if(empty($tpl)){
212
+            $tpl = $this->getTemplate('authForm');
213
+        }
214
+
215
+        $request = parse_url($_SERVER['REQUEST_URI']);
216
+        if(!empty($_SERVER['HTTP_REFERER'])){
217
+            /**
218
+             * Thank you for super protection against hacking in protect.inc.php:-)
219
+             */
220
+            $refer = htmlspecialchars_decode($_SERVER['HTTP_REFERER'], ENT_QUOTES);
221
+        }else{
222
+            $selfHost = rtrim(str_replace("http://", "", $this->config['site_url']), '/');
223
+            if(empty( $request['host']) ||  $request['host']==$selfHost){
224
+                $query = !empty($request['query']) ? '?'.$request['query'] : '';
225
+                $refer = !empty($request['path']) ? $request['path'].$query : '';
226
+            }else{
227
+                $refer = '';
228
+            }
229
+        }
230
+
231
+        if($_SERVER['REQUEST_METHOD'] == 'POST'){
232
+            $backUrl = APIHelpers::getkey($_POST, 'backUrl', $POST['backUrl']);
233
+            if(!is_scalar($backUrl)){
234
+                $backUrl = $refer;
235
+            }else{
236
+                $backUrl = urldecode($backUrl);
237
+            }
238
+        }else{
239
+            $backUrl = $refer;
240
+        }
241
+        $backUrl = parse_url($backUrl);
242
+        if(!empty($backUrl['path']) && $request['path'] != $backUrl['path']){
243
+            $POST['backUrl'] = $backUrl['path'];
244
+        }else{
245
+            $selfHost = rtrim(str_replace("http://", "", $this->config['site_url']), '/');
246
+            if(empty($backUrl['host']) || $backUrl['host']==$selfHost){
247
+                $query = !empty($backUrl['query']) ? '?'.$backUrl['query'] : '';
248
+                $POST['backUrl'] = !empty($backUrl['path']) ? $backUrl['path'].$query : '';
249
+            }else{
250
+                $POST['backUrl'] = '';
251
+            }
252
+        }
253
+        if(!empty($POST['backUrl'])){
254
+            $idURL = $this->moveTo(array(
255
+                'url' => '/'.ltrim($POST['backUrl'], '/'),
256
+                'validate' => true
257
+            ));
258
+        }else{
259
+            $idURL = 0;
260
+        }
261
+        if(empty($idURL)){
262
+            if(empty($homeID)){
263
+                $homeID = $this->config['site_start'];
264
+            }
265
+            $POST['backUrl'] = $this->makeUrl($homeID);
266
+        }
267
+        $POST = $this->Auth($pwdField, $emailField, $rememberField, $POST['backUrl'], __METHOD__, $error, $errorCode, $params);
268
+        return DLTemplate::getInstance($this->modx)->parseChunk($tpl, array(
269
+            'backUrl' => APIHelpers::getkey($POST, 'backUrl', ''),
270
+            'emailValue' => APIHelpers::getkey($POST, 'email', ''),
271
+            'emailField' => $emailField,
272
+            'pwdField' => $pwdField,
273
+            'method' => strtolower(__METHOD__),
274
+            'error' => $error,
275
+            'errorCode' => $errorCode
276
+        ));
277
+    }
278
+    protected function Auth($pwdField, $emailField, $rememberField, $backUrl, $method, &$error, &$errorCode, $params = array()){
279
+        $POST = array(
280
+            'backUrl' => urlencode($backUrl)
281
+        );
282
+        $userObj = &$this->userObj;
283
+        if($_SERVER['REQUEST_METHOD']=='POST' && APIHelpers::getkey($_POST, 'method', '') == strtolower($method)){
284
+            $POST = array_merge($POST, array(
285
+                'password' => APIHelpers::getkey($_POST, $pwdField, ''),
286
+                'email' => APIHelpers::getkey($_POST, $emailField, ''),
287
+                'remember' => (bool)((int)APIHelpers::getkey($_POST, $rememberField, 0))
288
+            ));
289
+            if(!empty($POST['email']) && is_scalar($POST['email']) && !$userObj->emailValidate($POST['email'], false)){
290
+                $userObj->edit($POST['email']);
291
+
292
+                $this->modx->invokeEvent("OnBeforeWebLogin", array(
293
+                    "username"		=> $POST['email'],
294
+                    "userpassword"	=> $POST['password'],
295
+                    "rememberme"	=> $POST['remember'],
296
+                    'userObj'		=> $userObj
297
+                ));
298
+                if($userObj->getID() && !$userObj->checkBlock($userObj->getID())){
299
+                    $pluginFlag = $this->modx->invokeEvent("OnWebAuthentication", array(
300
+                        "userid"        => $userObj->getID(),
301
+                        "username"      => $userObj->get('username'),
302
+                        "userpassword"  => $POST['password'],
303
+                        "savedpassword" => $userObj->get('password'),
304
+                        "rememberme"    => $POST['remember'],
305
+                    ));
306
+                    if(
307
+                        ($pluginFlag === true || $userObj->testAuth($userObj->getID(), $POST['password'], 0))
308
+                            &&
309
+                        $userObj->authUser($userObj->getID(), $POST['remember'])
310
+                    ){
311
+                        $userObj->set('logincount', (int)$userObj->get('logincount') + 1);
312
+                        $userObj->set('lastlogin', time());
313
+                        $userObj->set('failedlogincount', 0);
314
+                        $userObj->save(false, false);
315
+
316
+                        $this->modx->invokeEvent("OnWebLogin", array(
317
+                            "userid"		=> $userObj->getID(),
318
+                            "username"		=> $userObj->get('username'),
319
+                            "userpassword"	=> $POST['password'],
320
+                            "rememberme"	=> $POST['remember'],
321
+                        ));
322
+                        $this->moveTo(array('url' => urldecode($POST['backUrl'])));
323
+                    }else{
324
+                        $userObj->set('failedlogincount', (int)$userObj->get('failedlogincount') + 1);
325
+                        $userObj->save(false, false);
326
+
327
+                        $error = 'error.incorrect_password';
328
+                    }
329
+                }else{
330
+                    $error = 'error.no_user';
331
+                }
332
+            }else{
333
+                $error = 'error.incorrect_mail';
334
+                $POST['email'] = '';
335
+            }
336
+        }
337
+        if(!empty($error)){
338
+            $errorCode = $error;
339
+            $error = APIHelpers::getkey($params, $error, '');
340
+            $error = static::getLangMsg($error, $error);
341
+        }
342
+        return $POST;
343
+    }
344
+    /**
345
+     * Информация о пользователе
346
+     * [!DLUsers? &action=`UserInfo` &field=`fullname` &id=`2`!]
347
+     */
348
+    public function UserInfo($params){
349
+        $out = '';
350
+        $userID = APIHelpers::getkey($params, 'id', 0);
351
+        if(empty($userID)){
352
+            $userID = $this->UserID('web');
353
+        }
354
+        $field = APIHelpers::getkey($params, 'field', 'username');
355
+        if($userID > 0){
356
+            $this->userObj->edit($userID);
357
+            switch(true){
358
+                case ($field == $this->userObj->fieldPKName()):
359
+                    $out = $this->userObj->getID();
360
+                    break;
361
+                case ($this->userObj->issetField($field)):
362
+                    $out = $this->userObj->get($field);
363
+                    break;
364
+            }
365
+        }
366
+        return $out;
367
+    }
368
+    /**
369
+     * ID пользователя
370
+     */
371
+    public function UserID($type = 'web'){
372
+        return $this->modx->getLoginUserID($type);
373
+    }
374
+    /**
375
+     * Если не авторизован - то отправить на страницу
376
+     */
377
+    public function isGuestGoHome($params){
378
+        if(!$this->UserID('web')){
379
+            /**
380
+             * @see : http://modx.im/blog/triks/105.html
381
+             */
382
+            $this->modx->invokeEvent('OnPageUnauthorized');
383
+            $id = APIHelpers::getkey($params, 'id', $this->config['unauthorized_page']);
384
+            $this->moveTo(compact('id'));
385
+        }
386
+        return;
387
+    }
388
+
389
+    /**
390
+     * Если авторизован - то открыть личный кабинет
391
+     */
392
+    public function isAuthGoHome($params){
393
+        $userID = $this->UserID('web');
394
+        if($userID>0){
395
+            $id = APIHelpers::getkey($params, 'homeID');
396
+            if(empty($id)){
397
+                $id = $this->modx->getConfig('login_home', $this->config['site_start']);
398
+            }
399
+            $this->moveTo(compact('id'));
400
+        }
401
+        return;
402
+    }
403
+
404
+    /**
405
+     * Редирект
406
+     */
407
+    public function moveTo($params){
408
+        $id = (int)APIHelpers::getkey($params, 'id', 0);
409
+        $uri = APIHelpers::getkey($params, 'url', '');
410
+        if((empty($uri) && !empty($id)) || !is_string($uri)){
411
+            $uri = $this->makeUrl($id);
412
+        }
413
+        $code = (int)APIHelpers::getkey($params, 'code', 0);
414
+        $addUrl = APIHelpers::getkey($params, 'addUrl', '');
415
+        if(is_scalar($addUrl) && $addUrl!=''){
416
+            $uri .= "?".$addUrl;
417
+        }
418
+        if(APIHelpers::getkey($params, 'validate', false)){
419
+            if(isset($this->modx->snippetCache['getPageID'])){
420
+                $out = $this->modx->runSnippet('getPageID', compact('uri'));
421
+                if(empty($out)){
422
+                    $uri = '';
423
+                }
424
+            }else{
425
+                $uri = APIhelpers::sanitarTag($uri);
426
+            }
427
+        }else{
428
+            //$modx->sendRedirect($url, 0, 'REDIRECT_HEADER', 'HTTP/1.1 307 Temporary Redirect');
429
+            header("Location: ".$uri, true, ($code>0 ? $code : 307));
430
+        }
431
+        return $uri;
432
+    }
433
+
434
+    /**
435
+     * Создание ссылки на страницу
436
+     *
437
+     * @param  int $id ID документа
438
+     * @return string
439
+     */
440
+    protected function makeUrl($id = null){
441
+        $id = (int)$id;
442
+        if($id <= 0){
443
+            $id = $this->modx->documentObject['id'];
444
+        }
445
+        if($this->url->containsKey($id)){
446
+            $url = $this->url->get($id);
447
+        }else{
448
+            $url = $this->modx->makeUrl($id);
449
+            $this->url->set($id, $url);
450
+        }
451
+        return $url;
452
+    }
453
+    protected function getTemplate($name){
454
+        $out = '';
455
+        $file = dirname(dirname(__FILE__)).'/tpl/'.$name.'.html';
456
+        if( FS::getInstance()->checkFile($file)){
457
+            $out = '@CODE: '.file_get_contents($file);
458
+        }
459
+        return $out;
460
+    }
461
+    protected static function loadLang($lang){
462
+        $file = dirname(dirname(__FILE__)).'/lang/'.$lang.'.php';
463
+        if( ! FS::getInstance()->checkFile($file)){
464
+            $file = false;
465
+        }
466
+        if(!empty($lang) && !isset(static::$langDic[$lang]) && !empty($file)){
467
+            static::$langDic[$lang] = include_once($file);
468
+            if(is_array(static::$langDic[$lang])){
469
+                static::$langDic[$lang] = APIHelpers::renameKeyArr(static::$langDic[$lang], $lang);
470
+            }else{
471
+                static::$langDic[$lang] = array();
472
+            }
473
+        }
474
+        return !(empty($lang) || empty(static::$langDic[$lang]));
475
+    }
476
+    protected static function getLangMsg($key, $default){
477
+        $out = $default;
478
+        $lng = static::$lang;
479
+        $dic = static::$langDic;
480
+        if(isset($dic[$lng], $dic[$lng][$lng.'.'.$key])){
481
+            $out = $dic[$lng][$lng.'.'.$key];
482
+        }
483
+        if(class_exists('evoBabel', false) && isset(self::$instance->modx->snippetCache['lang'])){
484
+            $msg = self::$instance->modx->runSnippet('lang', array('a' => 'DLUsers.'.$key));
485
+            if(!empty($msg)){
486
+                $out = $msg;
487
+            }
488
+        }
489
+        return $out;
490
+    }
491 491
 }
492 492
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +96 added lines, -96 removed lines patch added patch discarded remove patch
@@ -9,7 +9,7 @@  discard block
 block discarded – undo
9 9
 use APIHelpers, DocumentParser, DLCollection, DLTemplate;
10 10
 use Helpers\FS;
11 11
 
12
-class Actions{
12
+class Actions {
13 13
     protected $modx = null;
14 14
     public $userObj = null;
15 15
 	/**
@@ -84,20 +84,20 @@  discard block
 block discarded – undo
84 84
     /**
85 85
      * Сброс авторизации и обновление страницы
86 86
      */
87
-    public function logout($params){
87
+    public function logout($params) {
88 88
     	$LogoutName = APIHelpers::getkey($params, 'LogoutName', 'logout');
89
-    	if(is_scalar($LogoutName) && !empty($LogoutName) && isset($_GET[$LogoutName])){
89
+    	if (is_scalar($LogoutName) && !empty($LogoutName) && isset($_GET[$LogoutName])) {
90 90
     		$userID = $this->UserID('web');
91
-    		if($userID){
91
+    		if ($userID) {
92 92
     			$this->userObj->edit($userID);
93
-    			if($this->userObj->getID()){
93
+    			if ($this->userObj->getID()) {
94 94
 	    			$this->modx->invokeEvent("OnBeforeWebLogout", array(
95 95
 		    			"userid"   => $this->userObj->getID(),
96 96
 		    			"username" => $this->userObj->get('username')
97 97
 		    		));
98 98
 	    		}
99 99
 		    	$this->userObj->logOut();
100
-		    	if($this->userObj->getID()){
100
+		    	if ($this->userObj->getID()) {
101 101
 		    		$this->modx->invokeEvent("OnWebLogout", array(
102 102
 		    			"userid"        => $this->userObj->getID(),
103 103
 		    			"username"      => $this->userObj->get('username')
@@ -105,22 +105,22 @@  discard block
 block discarded – undo
105 105
 		    	}
106 106
 
107 107
 			    $go = APIHelpers::getkey($params, 'url', '');
108
-			    if(empty($go)){
108
+			    if (empty($go)) {
109 109
 			    	$go = str_replace(
110
-			    		array("?".$LogoutName, "&".$LogoutName),
110
+			    		array("?" . $LogoutName, "&" . $LogoutName),
111 111
 			    		array("", ""),
112 112
 			    		$_SERVER['REQUEST_URI']
113 113
 			    	);
114 114
 			    }
115 115
 
116 116
 			    $start = $this->makeUrl($this->config['site_start']);
117
-			    if($start == $go){
117
+			    if ($start == $go) {
118 118
 			        $go = $this->config['site_url'];
119
-			    }else{
120
-			        $go = $this->config['site_url'].ltrim($go, '/');
119
+			    } else {
120
+			        $go = $this->config['site_url'] . ltrim($go, '/');
121 121
 			    }
122 122
 			    $this->moveTo(array('url' => $go));
123
-    		}else{
123
+    		} else {
124 124
     			//Если юзер не авторизован, то показываем ему 404 ошибку
125 125
     			$this->modx->sendErrorPage();
126 126
     		}
@@ -132,15 +132,15 @@  discard block
 block discarded – undo
132 132
      * Генерация ссылки под кнопку выход
133 133
      * @return string
134 134
      */
135
-    public function logoutUrl($params){
135
+    public function logoutUrl($params) {
136 136
     	$LogoutName = APIHelpers::getkey($params, 'LogoutName', 'logout');
137 137
     	$request = parse_url($_SERVER['REQUEST_URI']);
138 138
 
139 139
     	//Во избежании XSS мы не сохраняем весь REQUEST_URI, а берем только path
140 140
     	/*$query = (!empty($request['query'])) ? $request['query'].'&' : '';*/
141
-    	$query = '?'.$LogoutName;
141
+    	$query = '?' . $LogoutName;
142 142
 
143
-    	return $request['path'].$query;
143
+    	return $request['path'] . $query;
144 144
     }
145 145
 
146 146
     /**
@@ -148,7 +148,7 @@  discard block
 block discarded – undo
148 148
      * 		если указан параметр authId, то данные из формы перекидываются в метод AuthPage
149 149
      *   	В противном случае вся работа происходит внутри самого блока
150 150
      */
151
-    public function AuthBlock($params){
151
+    public function AuthBlock($params) {
152 152
     	$POST = array('backUrl' => $_SERVER['REQUEST_URI']);
153 153
 
154 154
     	$error = $errorCode = '';
@@ -157,20 +157,20 @@  discard block
 block discarded – undo
157 157
 		$emailField = APIHelpers::getkey($params, 'emailField', 'email');
158 158
 		$rememberField = APIHelpers::getkey($params, 'rememberField', 'remember');
159 159
 
160
-    	if($this->UserID('web')){
160
+    	if ($this->UserID('web')) {
161 161
 			$tpl = APIHelpers::getkey($params, 'tplProfile', '');
162
-			if(empty($tpl)){
162
+			if (empty($tpl)) {
163 163
 				$tpl = $this->getTemplate('tplProfile');
164 164
 			}
165 165
 			$dataTPL = $this->userObj->toArray();
166 166
 			$dataTPL['url.logout'] = $this->logoutUrl($params);
167 167
     		$homeID = APIHelpers::getkey($params, 'homeID');
168
-			if(!empty($homeID)){
168
+			if (!empty($homeID)) {
169 169
 				$dataTPL['url.profile'] = $this->makeUrl($homeID);
170 170
 			}
171
-		}else{
171
+		} else {
172 172
 			$tpl = APIHelpers::getkey($params, 'tplForm', '');
173
-			if(empty($tpl)){
173
+			if (empty($tpl)) {
174 174
 				$tpl = $this->getTemplate('authForm');
175 175
 			}
176 176
 			$POST = $this->Auth($pwdField, $emailField, $rememberField, $POST['backUrl'], __METHOD__, $error, $errorCode, $params);
@@ -184,9 +184,9 @@  discard block
 block discarded – undo
184 184
 				'errorCode' => $errorCode
185 185
 			);
186 186
 			$authId = APIHelpers::getkey($params, 'authId');
187
-			if(!empty($authId)){
187
+			if (!empty($authId)) {
188 188
 				$dataTPL['authPage'] = $this->makeUrl($authId);
189
-				$dataTPL['method'] = strtolower(__CLASS__ . '::'. 'authpage');
189
+				$dataTPL['method'] = strtolower(__CLASS__ . '::' . 'authpage');
190 190
 			}
191 191
 		}
192 192
 		return DLTemplate::getInstance($this->modx)->parseChunk($tpl, $dataTPL);
@@ -196,7 +196,7 @@  discard block
 block discarded – undo
196 196
 	 * Авторизация на сайте со страницы авторизации
197 197
 	 * [!Auth? &login=`password` &pwdField=`password` &homeID=`72`!]
198 198
 	 */
199
-	public function AuthPage($params){
199
+	public function AuthPage($params) {
200 200
 		$homeID = APIHelpers::getkey($params, 'homeID');
201 201
 		$this->isAuthGoHome(array('id' => $homeID));
202 202
 
@@ -208,58 +208,58 @@  discard block
 block discarded – undo
208 208
 		$rememberField = APIHelpers::getkey($params, 'rememberField', 'remember');
209 209
 
210 210
 		$tpl = APIHelpers::getkey($params, 'tpl', '');
211
-		if(empty($tpl)){
211
+		if (empty($tpl)) {
212 212
 			$tpl = $this->getTemplate('authForm');
213 213
 		}
214 214
 
215 215
 		$request = parse_url($_SERVER['REQUEST_URI']);
216
-		if(!empty($_SERVER['HTTP_REFERER'])){
216
+		if (!empty($_SERVER['HTTP_REFERER'])) {
217 217
 			/**
218 218
 			 * Thank you for super protection against hacking in protect.inc.php:-)
219 219
 			 */
220 220
 			$refer = htmlspecialchars_decode($_SERVER['HTTP_REFERER'], ENT_QUOTES);
221
-		}else{
221
+		} else {
222 222
 			$selfHost = rtrim(str_replace("http://", "", $this->config['site_url']), '/');
223
-			if(empty( $request['host']) ||  $request['host']==$selfHost){
224
-				$query = !empty($request['query']) ? '?'.$request['query'] : '';
225
-			    $refer = !empty($request['path']) ? $request['path'].$query : '';
226
-			}else{
223
+			if (empty($request['host']) || $request['host'] == $selfHost) {
224
+				$query = !empty($request['query']) ? '?' . $request['query'] : '';
225
+			    $refer = !empty($request['path']) ? $request['path'] . $query : '';
226
+			} else {
227 227
 				$refer = '';
228 228
 			}
229 229
 		}
230 230
 
231
-		if($_SERVER['REQUEST_METHOD'] == 'POST'){
231
+		if ($_SERVER['REQUEST_METHOD'] == 'POST') {
232 232
 			$backUrl = APIHelpers::getkey($_POST, 'backUrl', $POST['backUrl']);
233
-			if(!is_scalar($backUrl)){
233
+			if (!is_scalar($backUrl)) {
234 234
 				$backUrl = $refer;
235
-			}else{
235
+			} else {
236 236
 				$backUrl = urldecode($backUrl);
237 237
 			}
238
-		}else{
238
+		} else {
239 239
 			$backUrl = $refer;
240 240
 		}
241 241
 		$backUrl = parse_url($backUrl);
242
-		if(!empty($backUrl['path']) && $request['path'] != $backUrl['path']){
242
+		if (!empty($backUrl['path']) && $request['path'] != $backUrl['path']) {
243 243
 		    $POST['backUrl'] = $backUrl['path'];
244
-		}else{
244
+		} else {
245 245
 			$selfHost = rtrim(str_replace("http://", "", $this->config['site_url']), '/');
246
-			if(empty($backUrl['host']) || $backUrl['host']==$selfHost){
247
-				$query = !empty($backUrl['query']) ? '?'.$backUrl['query'] : '';
248
-			    $POST['backUrl'] = !empty($backUrl['path']) ? $backUrl['path'].$query : '';
249
-			}else{
246
+			if (empty($backUrl['host']) || $backUrl['host'] == $selfHost) {
247
+				$query = !empty($backUrl['query']) ? '?' . $backUrl['query'] : '';
248
+			    $POST['backUrl'] = !empty($backUrl['path']) ? $backUrl['path'] . $query : '';
249
+			} else {
250 250
 				$POST['backUrl'] = '';
251 251
 			}
252 252
 		}
253
-		if(!empty($POST['backUrl'])){
253
+		if (!empty($POST['backUrl'])) {
254 254
 			$idURL = $this->moveTo(array(
255
-				'url' => '/'.ltrim($POST['backUrl'], '/'),
255
+				'url' => '/' . ltrim($POST['backUrl'], '/'),
256 256
 			    'validate' => true
257 257
 			));
258
-		}else{
258
+		} else {
259 259
 			$idURL = 0;
260 260
 		}
261
-		if(empty($idURL)){
262
-			if(empty($homeID)){
261
+		if (empty($idURL)) {
262
+			if (empty($homeID)) {
263 263
 				$homeID = $this->config['site_start'];
264 264
 			}
265 265
 			$POST['backUrl'] = $this->makeUrl($homeID);
@@ -275,18 +275,18 @@  discard block
 block discarded – undo
275 275
 			'errorCode' => $errorCode
276 276
 		));
277 277
 	}
278
-	protected function Auth($pwdField, $emailField, $rememberField, $backUrl, $method, &$error, &$errorCode, $params = array()){
278
+	protected function Auth($pwdField, $emailField, $rememberField, $backUrl, $method, &$error, &$errorCode, $params = array()) {
279 279
 		$POST = array(
280 280
 			'backUrl' => urlencode($backUrl)
281 281
 		);
282 282
 		$userObj = &$this->userObj;
283
-		if($_SERVER['REQUEST_METHOD']=='POST' && APIHelpers::getkey($_POST, 'method', '') == strtolower($method)){
283
+		if ($_SERVER['REQUEST_METHOD'] == 'POST' && APIHelpers::getkey($_POST, 'method', '') == strtolower($method)) {
284 284
 			$POST = array_merge($POST, array(
285 285
 				'password' => APIHelpers::getkey($_POST, $pwdField, ''),
286 286
 				'email' => APIHelpers::getkey($_POST, $emailField, ''),
287 287
 				'remember' => (bool)((int)APIHelpers::getkey($_POST, $rememberField, 0))
288 288
 			));
289
-			if(!empty($POST['email']) && is_scalar($POST['email']) && !$userObj->emailValidate($POST['email'], false)){
289
+			if (!empty($POST['email']) && is_scalar($POST['email']) && !$userObj->emailValidate($POST['email'], false)) {
290 290
 				$userObj->edit($POST['email']);
291 291
 
292 292
 				$this->modx->invokeEvent("OnBeforeWebLogin", array(
@@ -295,7 +295,7 @@  discard block
 block discarded – undo
295 295
 		            "rememberme"	=> $POST['remember'],
296 296
 		            'userObj'		=> $userObj
297 297
 		        ));
298
-				if($userObj->getID() && !$userObj->checkBlock($userObj->getID())){
298
+				if ($userObj->getID() && !$userObj->checkBlock($userObj->getID())) {
299 299
 					$pluginFlag = $this->modx->invokeEvent("OnWebAuthentication", array(
300 300
 	                    "userid"        => $userObj->getID(),
301 301
 	                    "username"      => $userObj->get('username'),
@@ -303,11 +303,11 @@  discard block
 block discarded – undo
303 303
 	                    "savedpassword" => $userObj->get('password'),
304 304
 	                    "rememberme"    => $POST['remember'],
305 305
 	                ));
306
-					if(
306
+					if (
307 307
 						($pluginFlag === true || $userObj->testAuth($userObj->getID(), $POST['password'], 0))
308 308
 							&&
309 309
 						$userObj->authUser($userObj->getID(), $POST['remember'])
310
-					){
310
+					) {
311 311
 						$userObj->set('logincount', (int)$userObj->get('logincount') + 1);
312 312
 						$userObj->set('lastlogin', time());
313 313
 						$userObj->set('failedlogincount', 0);
@@ -320,21 +320,21 @@  discard block
 block discarded – undo
320 320
 			                "rememberme"	=> $POST['remember'],
321 321
 			            ));
322 322
 						$this->moveTo(array('url' => urldecode($POST['backUrl'])));
323
-					}else{
323
+					} else {
324 324
 						$userObj->set('failedlogincount', (int)$userObj->get('failedlogincount') + 1);
325 325
 						$userObj->save(false, false);
326 326
 
327 327
 						$error = 'error.incorrect_password';
328 328
 					}
329
-				}else{
329
+				} else {
330 330
 					$error = 'error.no_user';
331 331
 				}
332
-			}else{
332
+			} else {
333 333
 				$error = 'error.incorrect_mail';
334 334
 				$POST['email'] = '';
335 335
 			}
336 336
 		}
337
-		if(!empty($error)){
337
+		if (!empty($error)) {
338 338
 			$errorCode = $error;
339 339
 			$error = APIHelpers::getkey($params, $error, '');
340 340
 			$error = static::getLangMsg($error, $error);
@@ -345,16 +345,16 @@  discard block
 block discarded – undo
345 345
 	 * Информация о пользователе
346 346
 	 * [!DLUsers? &action=`UserInfo` &field=`fullname` &id=`2`!]
347 347
 	 */
348
-	public function UserInfo($params){
348
+	public function UserInfo($params) {
349 349
 		$out = '';
350 350
 		$userID = APIHelpers::getkey($params, 'id', 0);
351
-		if(empty($userID)){
351
+		if (empty($userID)) {
352 352
 			$userID = $this->UserID('web');
353 353
 		}
354 354
 		$field = APIHelpers::getkey($params, 'field', 'username');
355
-		if($userID > 0){
355
+		if ($userID > 0) {
356 356
 			$this->userObj->edit($userID);
357
-			switch(true){
357
+			switch (true) {
358 358
 				case ($field == $this->userObj->fieldPKName()):
359 359
 					$out = $this->userObj->getID();
360 360
 					break;
@@ -368,14 +368,14 @@  discard block
 block discarded – undo
368 368
 	/**
369 369
 	 * ID пользователя
370 370
 	 */
371
-	public function UserID($type = 'web'){
371
+	public function UserID($type = 'web') {
372 372
 		return $this->modx->getLoginUserID($type);
373 373
 	}
374 374
 	/**
375 375
 	 * Если не авторизован - то отправить на страницу
376 376
 	 */
377
-	public function isGuestGoHome($params){
378
-		if(!$this->UserID('web')){
377
+	public function isGuestGoHome($params) {
378
+		if (!$this->UserID('web')) {
379 379
 			/**
380 380
 			 * @see : http://modx.im/blog/triks/105.html
381 381
 			 */
@@ -389,11 +389,11 @@  discard block
 block discarded – undo
389 389
 	/**
390 390
 	 * Если авторизован - то открыть личный кабинет
391 391
 	 */
392
-	public function isAuthGoHome($params){
392
+	public function isAuthGoHome($params) {
393 393
 		$userID = $this->UserID('web');
394
-		if($userID>0){
394
+		if ($userID > 0) {
395 395
 			$id = APIHelpers::getkey($params, 'homeID');
396
-		    if(empty($id)){
396
+		    if (empty($id)) {
397 397
 				$id = $this->modx->getConfig('login_home', $this->config['site_start']);
398 398
 		    }
399 399
 		    $this->moveTo(compact('id'));
@@ -404,29 +404,29 @@  discard block
 block discarded – undo
404 404
 	/**
405 405
 	 * Редирект
406 406
 	 */
407
-	public function moveTo($params){
407
+	public function moveTo($params) {
408 408
 		$id = (int)APIHelpers::getkey($params, 'id', 0);
409 409
 		$uri = APIHelpers::getkey($params, 'url', '');
410
-		if((empty($uri) && !empty($id)) || !is_string($uri)){
410
+		if ((empty($uri) && !empty($id)) || !is_string($uri)) {
411 411
 			$uri = $this->makeUrl($id);
412 412
 		}
413 413
 		$code = (int)APIHelpers::getkey($params, 'code', 0);
414 414
 		$addUrl = APIHelpers::getkey($params, 'addUrl', '');
415
-		if(is_scalar($addUrl) && $addUrl!=''){
416
-		    $uri .= "?".$addUrl;
415
+		if (is_scalar($addUrl) && $addUrl != '') {
416
+		    $uri .= "?" . $addUrl;
417 417
 		}
418
-		if(APIHelpers::getkey($params, 'validate', false)){
419
-			if(isset($this->modx->snippetCache['getPageID'])){
418
+		if (APIHelpers::getkey($params, 'validate', false)) {
419
+			if (isset($this->modx->snippetCache['getPageID'])) {
420 420
 				$out = $this->modx->runSnippet('getPageID', compact('uri'));
421
-				if(empty($out)){
421
+				if (empty($out)) {
422 422
 					$uri = '';
423 423
 				}
424
-			}else{
424
+			} else {
425 425
 				$uri = APIhelpers::sanitarTag($uri);
426 426
 			}
427
-		}else{
427
+		} else {
428 428
 			//$modx->sendRedirect($url, 0, 'REDIRECT_HEADER', 'HTTP/1.1 307 Temporary Redirect');
429
-			header("Location: ".$uri, true, ($code>0 ? $code : 307));
429
+			header("Location: " . $uri, true, ($code > 0 ? $code : 307));
430 430
 		}
431 431
 		return $uri;
432 432
 	}
@@ -437,52 +437,52 @@  discard block
 block discarded – undo
437 437
 	 * @param  int $id ID документа
438 438
 	 * @return string
439 439
 	 */
440
-	protected function makeUrl($id = null){
440
+	protected function makeUrl($id = null) {
441 441
 		$id = (int)$id;
442
-		if($id <= 0){
442
+		if ($id <= 0) {
443 443
 			$id = $this->modx->documentObject['id'];
444 444
 		}
445
-		if($this->url->containsKey($id)){
445
+		if ($this->url->containsKey($id)) {
446 446
 			$url = $this->url->get($id);
447
-		}else{
447
+		} else {
448 448
 			$url = $this->modx->makeUrl($id);
449 449
 			$this->url->set($id, $url);
450 450
 		}
451 451
 		return $url;
452 452
 	}
453
-	protected function getTemplate($name){
453
+	protected function getTemplate($name) {
454 454
 		$out = '';
455
-		$file = dirname(dirname(__FILE__)).'/tpl/'.$name.'.html';
456
-		if( FS::getInstance()->checkFile($file)){
457
-			$out = '@CODE: '.file_get_contents($file);
455
+		$file = dirname(dirname(__FILE__)) . '/tpl/' . $name . '.html';
456
+		if (FS::getInstance()->checkFile($file)) {
457
+			$out = '@CODE: ' . file_get_contents($file);
458 458
 		}
459 459
 		return $out;
460 460
 	}
461
-	protected static function loadLang($lang){
462
-		$file = dirname(dirname(__FILE__)).'/lang/'.$lang.'.php';
463
-		if( ! FS::getInstance()->checkFile($file)){
461
+	protected static function loadLang($lang) {
462
+		$file = dirname(dirname(__FILE__)) . '/lang/' . $lang . '.php';
463
+		if (!FS::getInstance()->checkFile($file)) {
464 464
 			$file = false;
465 465
 		}
466
-		if(!empty($lang) && !isset(static::$langDic[$lang]) && !empty($file)){
466
+		if (!empty($lang) && !isset(static::$langDic[$lang]) && !empty($file)) {
467 467
 			static::$langDic[$lang] = include_once($file);
468
-			if(is_array(static::$langDic[$lang])){
468
+			if (is_array(static::$langDic[$lang])) {
469 469
 				static::$langDic[$lang] = APIHelpers::renameKeyArr(static::$langDic[$lang], $lang);
470
-			}else{
470
+			} else {
471 471
 				static::$langDic[$lang] = array();
472 472
 			}
473 473
 		}
474 474
 		return !(empty($lang) || empty(static::$langDic[$lang]));
475 475
 	}
476
-	protected static function getLangMsg($key, $default){
476
+	protected static function getLangMsg($key, $default) {
477 477
 		$out = $default;
478 478
 		$lng = static::$lang;
479 479
 		$dic = static::$langDic;
480
-		if(isset($dic[$lng], $dic[$lng][$lng.'.'.$key])){
481
-			$out = $dic[$lng][$lng.'.'.$key];
480
+		if (isset($dic[$lng], $dic[$lng][$lng . '.' . $key])) {
481
+			$out = $dic[$lng][$lng . '.' . $key];
482 482
 		}
483
-		if(class_exists('evoBabel', false) && isset(self::$instance->modx->snippetCache['lang'])){
484
-			$msg = self::$instance->modx->runSnippet('lang', array('a' => 'DLUsers.'.$key));
485
-			if(!empty($msg)){
483
+		if (class_exists('evoBabel', false) && isset(self::$instance->modx->snippetCache['lang'])) {
484
+			$msg = self::$instance->modx->runSnippet('lang', array('a' => 'DLUsers.' . $key));
485
+			if (!empty($msg)) {
486 486
 				$out = $msg;
487 487
 			}
488 488
 		}
Please login to merge, or discard this patch.