summaryrefslogtreecommitdiff
path: root/demos/time-tracker/protected/pages/TimeTracker/UserCreate.php
blob: f163ecd65d6f856aa639d6977b2602d4feb57076 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
/**
 * UserCreate page class file.
 *
 * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
 * @link http://www.pradosoft.com/
 * @copyright Copyright &copy; 2005-2006 PradoSoft
 * @license http://www.pradosoft.com/license/
 * @version $Revision: $  $16/07/2006: $
 * @package Demos
 */

/**
 * Create new user page class. Validate that the usernames are unique
 * and set the new user credentials as the current application credentials.
 *
 * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
 * @version $Revision: $  $16/07/2006: $
 * @package Demos
 * @since 3.1
 */
class UserCreate extends TPage
{
	/**
	 * Verify that the username is not taken.
	 * @param TControl custom validator that created the event.
	 * @param TServerValidateEventParameter validation parameters.
	 */
	public function checkUsername($sender, $param)
	{
		$userDao = $this->Application->Modules['daos']->getDao('UserDao');
		$user = $userDao->getUserByName($this->username->Text);
		if(!is_null($user))
		{
			$param->IsValid = false;
			$sender->ErrorMessage = 
				"The user name is already taken, try '{$user->Name}01'";
		}
	}
	
	/**
	 * Create a new user if all data entered are valid.
	 * The default user roles are obtained from "config.xml". The new user
	 * details is saved to the database and the new credentials are used as the
	 * application user. The user is redirected to the requested page.
	 * @param TControl button control that created the event.
	 * @param TEventParameter event parameters.
	 */
	public function createNewUser($sender, $param)
	{
		if($this->IsValid)
		{
			$newUser = new TimeTrackerUser($this->User->Manager);
			$newUser->EmailAddress = $this->email->Text;
			$newUser->Name = $this->username->Text;
			$newUser->IsGuest = false;
			if($this->User->isInRole('admin'))
				$newUser->Roles = $this->role->SelectedValue;
			else
				$newUser->Roles = $this->Application->Parameters['NewUserRoles'];
	
			//save the user
			$userDao = $this->Application->Modules['daos']->getDao('UserDao');
			$userDao->addNewUser($newUser, $this->password->Text);
	
			//update the user
			if(!$this->User->isInRole('admin'))
			{
				$auth = $this->Application->getModule('auth');
				$auth->updateCredential($newUser);
			
				//return to requested page
				$this->Response->redirect($auth->getReturnUrl());
			}
			else
				$this->Response->reload();
			//goto default page.
			//$url = $this->Service->constructUrl($this->Service->DefaultPage);
			//$this->Response->redirect($url);		
		}
	}
}

?>