annotate core/modules/user/src/ProfileForm.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 1fec387a4317
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@0 9 */
Chris@0 10 class ProfileForm extends AccountForm {
Chris@0 11
Chris@0 12 /**
Chris@0 13 * {@inheritdoc}
Chris@0 14 */
Chris@0 15 protected function actions(array $form, FormStateInterface $form_state) {
Chris@0 16 $element = parent::actions($form, $form_state);
Chris@0 17
Chris@0 18 // The user account being edited.
Chris@0 19 $account = $this->entity;
Chris@0 20
Chris@0 21 // The user doing the editing.
Chris@0 22 $user = $this->currentUser();
Chris@0 23 $element['delete']['#type'] = 'submit';
Chris@0 24 $element['delete']['#value'] = $this->t('Cancel account');
Chris@0 25 $element['delete']['#submit'] = ['::editCancelSubmit'];
Chris@0 26 $element['delete']['#access'] = $account->id() > 1 && (($account->id() == $user->id() && $user->hasPermission('cancel account')) || $user->hasPermission('administer users'));
Chris@0 27
Chris@0 28 return $element;
Chris@0 29 }
Chris@0 30
Chris@0 31 /**
Chris@0 32 * {@inheritdoc}
Chris@0 33 */
Chris@0 34 public function save(array $form, FormStateInterface $form_state) {
Chris@0 35 $account = $this->entity;
Chris@0 36 $account->save();
Chris@0 37 $form_state->setValue('uid', $account->id());
Chris@0 38
Chris@0 39 drupal_set_message($this->t('The changes have been saved.'));
Chris@0 40 }
Chris@0 41
Chris@0 42 /**
Chris@0 43 * Provides a submit handler for the 'Cancel account' button.
Chris@0 44 */
Chris@0 45 public function editCancelSubmit($form, FormStateInterface $form_state) {
Chris@0 46 $destination = [];
Chris@0 47 $query = $this->getRequest()->query;
Chris@0 48 if ($query->has('destination')) {
Chris@0 49 $destination = ['destination' => $query->get('destination')];
Chris@0 50 $query->remove('destination');
Chris@0 51 }
Chris@0 52 // We redirect from user/%/edit to user/%/cancel to make the tabs disappear.
Chris@0 53 $form_state->setRedirect(
Chris@0 54 'entity.user.cancel_form',
Chris@0 55 ['user' => $this->entity->id()],
Chris@0 56 ['query' => $destination]
Chris@0 57 );
Chris@0 58 }
Chris@0 59
Chris@0 60 }