annotate core/modules/user/src/ProfileForm.php @ 14:1fec387a4317

Update Drupal core to 8.5.2 via Composer
author Chris Cannam
date Mon, 23 Apr 2018 09:46:53 +0100
parents 4c8ae668cc8c
children 129ea1e6d783
rev   line source
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 }