These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | |||
3 | class Users_EditAccountForm extends Form |
||
4 | { |
||
5 | |||
6 | /** |
||
7 | * These fields will be ignored by the `Users_EditAccountForm` |
||
8 | * when generating fields |
||
9 | */ |
||
10 | private static $ignore_member_fields = array( |
||
11 | "LastVisited", |
||
12 | "FailedLoginCount", |
||
13 | "DateFormat", |
||
14 | "TimeFormat", |
||
15 | "VerificationCode", |
||
16 | "Password", |
||
17 | "HasConfiguredDashboard", |
||
18 | "URLSegment", |
||
19 | "BlogProfileSummary", |
||
20 | "BlogProfileImage" |
||
21 | ); |
||
22 | |||
23 | public function __construct($controller, $name = "Users_EditAccountForm") |
||
24 | { |
||
25 | $member = Member::singleton(); |
||
26 | $hidden_fields = array_merge( |
||
27 | $member->config()->hidden_fields, |
||
28 | static::config()->ignore_member_fields |
||
29 | ); |
||
30 | |||
31 | $fields = $member->getFrontEndFields(); |
||
32 | |||
33 | // Remove all "hidden fields" |
||
34 | foreach ($hidden_fields as $field_name) { |
||
35 | $fields->removeByName($field_name); |
||
36 | } |
||
37 | |||
38 | // Add the current member ID |
||
39 | $fields->add(HiddenField::create("ID")); |
||
40 | |||
41 | // Switch locale field |
||
42 | $fields->replaceField( |
||
43 | 'Locale', |
||
44 | DropdownField::create( |
||
45 | "Locale", |
||
46 | $member->fieldLabel("Locale"), |
||
47 | i18n::get_existing_translations() |
||
48 | ) |
||
49 | ); |
||
50 | |||
51 | $this->extend("updateFormFields", $fields); |
||
52 | |||
53 | $cancel_url = Controller::join_links($controller->Link()); |
||
54 | |||
55 | $actions = new FieldList( |
||
56 | LiteralField::create( |
||
57 | "cancelLink", |
||
58 | '<a class="btn btn-red" href="'.$cancel_url.'">'. _t("Users.CANCEL", "Cancel") .'</a>' |
||
59 | ), |
||
60 | FormAction::create("doUpdate", _t("CMSMain.SAVE", "Save")) |
||
61 | ->addExtraClass("btn") |
||
62 | ->addExtraClass("btn-green") |
||
63 | ); |
||
64 | |||
65 | $this->extend("updateFormActions", $actions); |
||
66 | |||
67 | $required = new RequiredFields( |
||
68 | $member->config()->required_fields |
||
69 | ); |
||
70 | |||
71 | $this->extend("updateRequiredFields", $required); |
||
72 | |||
73 | parent::__construct( |
||
74 | $controller, |
||
75 | $name, |
||
76 | $fields, |
||
77 | $actions, |
||
78 | $required |
||
79 | ); |
||
80 | |||
81 | $this->extend("updateForm", $this); |
||
82 | } |
||
83 | |||
84 | /** |
||
85 | * Register a new member |
||
86 | * |
||
87 | * @param array $data User submitted data |
||
88 | */ |
||
89 | public function doUpdate($data) |
||
0 ignored issues
–
show
|
|||
90 | { |
||
91 | $filter = array(); |
||
92 | $member = Member::get()->byID($data["ID"]); |
||
93 | |||
94 | $this->extend("onBeforeUpdate", $data); |
||
95 | |||
96 | // Check that a member isn't trying to mess up another users profile |
||
97 | if (Member::currentUserID() && $member->canEdit(Member::currentUser())) { |
||
98 | try { |
||
99 | // Save member |
||
100 | $this->saveInto($member); |
||
101 | $member->write(); |
||
102 | |||
103 | $this->sessionMessage( |
||
104 | _t("Users.DETAILSUPDATED", "Account details updated"), |
||
105 | "success" |
||
106 | ); |
||
107 | } catch (Exception $e) { |
||
108 | $this->sessionMessage( |
||
109 | $e->getMessage(), |
||
110 | "warning" |
||
111 | ); |
||
112 | } |
||
113 | } else { |
||
114 | $this->sessionMessage( |
||
115 | _t("Users.CANNOTEDIT", "You cannot edit this account"), |
||
116 | "warning" |
||
117 | ); |
||
118 | } |
||
119 | |||
120 | $this->extend("onAfterUpdate", $data); |
||
121 | |||
122 | return $this->controller->redirectBack(); |
||
123 | } |
||
124 | } |
||
125 |
Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a
@return
annotation as described here.