View difference between Paste ID: kycpMydk and WkBQsu1n
SHOW: | | - or go back to the newest paste.
1
    /**
2
     * @param array $values
3
     * @final
4
     * @throws DibiDriverException
5
     */
6
    final public function registration($values) 
7
    {
8
        
9
        unset($values['passwordAgain']);
10
        unset($values['agree']);
11
12
        $values['hash'] = $this->genHash(32,15);
13
        $values['registered'] = new DateTime;
14
15
        try {
16
            return (bool)$this->db->insert(self::usersTable, $values)->execute();
17
        } catch(DibiDriverException $e) {
18
	    if ($e === \DibiMySqlDriver::ERROR_DUPLICATE_ENTRY) {
19-
            throw new MyApp\NonUniqueRowException(NULL, 0, $e);
19+
            	throw new MyApp\NonUniqueRowException($e->getMessage(), 0, $e);
20
	    } else {
21
		throw new MyApp\SqlException($e->getMessage(), 0, $e)
22
            }
23
        }
24
    }
25
26
27
##########################
28
29
30
31
    /**
32
     * @param string $name 
33
     */
34
    protected function createComponentRegistration($name) 
35
    {
36
        $form = new UsersRegistrationForm($this,$name);
37
        $form->onSuccess[] = array($this, 'registrationSubmited');
38
    }
39
    
40
     /**
41
     * @param Form $form 
42
     */
43
    public function registrationSubmited($form) 
44
    {   
45
        if($form['register']->isSubmittedBy()) {
46
            $values = $form->getValues();
47
            $values['ip'] = $this->context->httpRequest->getRemoteAddress();
48
            $values['password'] = $this->context->authenticator->calculateHash($values['password']);
49
50
	    try {
51
            	$this->db->registration($values);
52
		$this->flashMessage('Registration successful to your email (' . $values['email'] . ') will be sent an authorization request, please confirm it. In the event of difficulties please contact us.');
53
                $this->redirect('this');
54-
	    } catch (Exception $e) {
54+
55
	    } catch (MyApp\NonUniqueRowException $e)  {
56
                $form->addError('Such a name or email address already in use by someone else.');
57
	    } catch (MyApp\SqlException $e) {
58
		$form->addError('What went wrong somewhere. Please try again repeated again after recording this event please contact us and we will solve the subsequent error.');
59
	    }
60
        }
61
    }