blob: 81538c33681d16aca1008400e4bf92c7e3c38957 (
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
|
<?php
class EditUser extends TPage
{
/**
* Initializes the inputs with existing user data.
* This method is invoked by the framework when the page is being initialized.
* @param mixed event parameter
*/
public function onInit($param)
{
parent::onInit($param);
if(!$this->IsPostBack) // if the page is initially requested
{
// Retrieves the existing user data. This is equivalent to:
// $userRecord=$this->getUserRecord();
$userRecord=$this->UserRecord;
// Populates the input controls with the existing user data
$this->Username->Text=$userRecord->username;
$this->Email->Text=$userRecord->email;
$this->Role->SelectedValue=$userRecord->role;
$this->FirstName->Text=$userRecord->first_name;
$this->LastName->Text=$userRecord->last_name;
}
}
/**
* Saves the user account if all inputs are valid.
* This method responds to the OnClick event of the "save" button.
* @param mixed event sender
* @param mixed event parameter
*/
public function saveButtonClicked($sender,$param)
{
if($this->IsValid) // when all validations succeed
{
// Retrieves the existing user data. This is equivalent to:
$userRecord=$this->UserRecord;
// Fetches the input data
$userRecord->username=$this->Username->Text;
// update password when the input is not empty
if(!empty($this->Password->Text))
$userRecord->password=$this->Password->Text;
$userRecord->email=$this->Email->Text;
// update the role if the current user is an administrator
if($this->User->IsAdmin)
$userRecord->role=(int)$this->Role->SelectedValue;
$userRecord->first_name=$this->FirstName->Text;
$userRecord->last_name=$this->LastName->Text;
// saves to the database via Active Record mechanism
$userRecord->save();
// redirects the browser to the homepage
$this->Response->redirect($this->Service->DefaultPageUrl);
}
}
/**
* Returns the user data to be editted.
* @return UserRecord the user data to be editted.
* @throws THttpException if the user data is not found.
*/
protected function getUserRecord()
{
// the user to be editted is the currently logged-in user
$username=$this->User->Name;
// if the 'username' GET var is not empty and the current user
// is an administrator, we use the GET var value instead.
if($this->User->IsAdmin && $this->Request['username']!==null)
$username=$this->Request['username'];
// use Active Record to look for the specified username
$userRecord=UserRecord::finder()->findByPk($username);
if(!($userRecord instanceof UserRecord))
throw new THttpException(500,'Username is invalid.');
return $userRecord;
}
}
?>
|