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]
+    );
+  }
+
+}