Passed
Push — 3.1 ( 313039...b58064 )
by Jerome
60:36 queued 11s
created

ConfirmController::__invoke()   A

Complexity

Conditions 3
Paths 1

Size

Total Lines 24
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 1
Bugs 1 Features 0
Metric Value
cc 3
eloc 14
nc 1
nop 1
dl 0
loc 24
ccs 0
cts 13
cp 0
crap 12
rs 9.7998
c 1
b 1
f 0
1
<?php
2
3
namespace Elgg\UserValidationByEmail;
4
5
use Elgg\Http\ResponseBuilder;
6
7
/**
8
 * Controller to handle the 'account:validation:email:confirm' route
9
 *
10
 * @since 3.1
11
 */
12
class ConfirmController {
13
14
	/**
15
	 * Execute e-mail confirmation
16
	 *
17
	 * @param \Elgg\Request $request the Elgg request
18
	 *
19
	 * @return ResponseBuilder
20
	 */
21
	public function __invoke(\Elgg\Request $request) {
22
		
23
		// new users are not enabled by default.
24
		return elgg_call(ELGG_SHOW_DISABLED_ENTITIES, function() use ($request) {
25
			$user_guid = (int) $request->getParam('u', false);
26
			
27
			$user = get_user($user_guid);
28
			if (!$user) {
29
				return elgg_error_response(elgg_echo('email:confirm:fail'));
30
			}
31
			
32
			$user->setValidationStatus(true, 'email');
33
			
34
			elgg_push_context('uservalidationbyemail_validate_user');
35
			$user->enable();
36
			elgg_pop_context();
37
			
38
			try {
39
				login($user);
40
			} catch (\LoginException $e) {
41
				return elgg_error_response($e->getMessage());
42
			}
43
			
44
			return elgg_ok_response('', elgg_echo('email:confirm:success'), elgg_get_site_url());
45
		});
46
	}
47
}
48