Mercurial > hg > isophonics-drupal-site
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/user/src/ProfileForm.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,60 @@ +<?php + +namespace Drupal\user; + +use Drupal\Core\Form\FormStateInterface; + +/** + * Form handler for the profile forms. + */ +class ProfileForm extends AccountForm { + + /** + * {@inheritdoc} + */ + protected function actions(array $form, FormStateInterface $form_state) { + $element = parent::actions($form, $form_state); + + // The user account being edited. + $account = $this->entity; + + // The user doing the editing. + $user = $this->currentUser(); + $element['delete']['#type'] = 'submit'; + $element['delete']['#value'] = $this->t('Cancel account'); + $element['delete']['#submit'] = ['::editCancelSubmit']; + $element['delete']['#access'] = $account->id() > 1 && (($account->id() == $user->id() && $user->hasPermission('cancel account')) || $user->hasPermission('administer users')); + + return $element; + } + + /** + * {@inheritdoc} + */ + public function save(array $form, FormStateInterface $form_state) { + $account = $this->entity; + $account->save(); + $form_state->setValue('uid', $account->id()); + + drupal_set_message($this->t('The changes have been saved.')); + } + + /** + * Provides a submit handler for the 'Cancel account' button. + */ + public function editCancelSubmit($form, FormStateInterface $form_state) { + $destination = []; + $query = $this->getRequest()->query; + if ($query->has('destination')) { + $destination = ['destination' => $query->get('destination')]; + $query->remove('destination'); + } + // We redirect from user/%/edit to user/%/cancel to make the tabs disappear. + $form_state->setRedirect( + 'entity.user.cancel_form', + ['user' => $this->entity->id()], + ['query' => $destination] + ); + } + +}