Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\user;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Core\Form\FormStateInterface;
|
Chris@0
|
6
|
Chris@0
|
7 /**
|
Chris@0
|
8 * Form handler for the profile forms.
|
Chris@14
|
9 *
|
Chris@14
|
10 * @internal
|
Chris@0
|
11 */
|
Chris@0
|
12 class ProfileForm extends AccountForm {
|
Chris@0
|
13
|
Chris@0
|
14 /**
|
Chris@0
|
15 * {@inheritdoc}
|
Chris@0
|
16 */
|
Chris@0
|
17 protected function actions(array $form, FormStateInterface $form_state) {
|
Chris@0
|
18 $element = parent::actions($form, $form_state);
|
Chris@0
|
19
|
Chris@0
|
20 // The user account being edited.
|
Chris@0
|
21 $account = $this->entity;
|
Chris@0
|
22
|
Chris@0
|
23 // The user doing the editing.
|
Chris@0
|
24 $user = $this->currentUser();
|
Chris@0
|
25 $element['delete']['#type'] = 'submit';
|
Chris@0
|
26 $element['delete']['#value'] = $this->t('Cancel account');
|
Chris@0
|
27 $element['delete']['#submit'] = ['::editCancelSubmit'];
|
Chris@0
|
28 $element['delete']['#access'] = $account->id() > 1 && (($account->id() == $user->id() && $user->hasPermission('cancel account')) || $user->hasPermission('administer users'));
|
Chris@0
|
29
|
Chris@0
|
30 return $element;
|
Chris@0
|
31 }
|
Chris@0
|
32
|
Chris@0
|
33 /**
|
Chris@0
|
34 * {@inheritdoc}
|
Chris@0
|
35 */
|
Chris@0
|
36 public function save(array $form, FormStateInterface $form_state) {
|
Chris@0
|
37 $account = $this->entity;
|
Chris@0
|
38 $account->save();
|
Chris@0
|
39 $form_state->setValue('uid', $account->id());
|
Chris@0
|
40
|
Chris@0
|
41 drupal_set_message($this->t('The changes have been saved.'));
|
Chris@0
|
42 }
|
Chris@0
|
43
|
Chris@0
|
44 /**
|
Chris@0
|
45 * Provides a submit handler for the 'Cancel account' button.
|
Chris@0
|
46 */
|
Chris@0
|
47 public function editCancelSubmit($form, FormStateInterface $form_state) {
|
Chris@0
|
48 $destination = [];
|
Chris@0
|
49 $query = $this->getRequest()->query;
|
Chris@0
|
50 if ($query->has('destination')) {
|
Chris@0
|
51 $destination = ['destination' => $query->get('destination')];
|
Chris@0
|
52 $query->remove('destination');
|
Chris@0
|
53 }
|
Chris@0
|
54 // We redirect from user/%/edit to user/%/cancel to make the tabs disappear.
|
Chris@0
|
55 $form_state->setRedirect(
|
Chris@0
|
56 'entity.user.cancel_form',
|
Chris@0
|
57 ['user' => $this->entity->id()],
|
Chris@0
|
58 ['query' => $destination]
|
Chris@0
|
59 );
|
Chris@0
|
60 }
|
Chris@0
|
61
|
Chris@0
|
62 }
|