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

ConfirmController   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 1 Features 0
Metric Value
eloc 15
dl 0
loc 33
ccs 0
cts 13
cp 0
rs 10
c 1
b 1
f 0
wmc 3

1 Method

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 24 3
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