Version 1
[yaffs-website] / web / modules / contrib / linkit / src / Form / Attribute / DeleteForm.php
diff --git a/web/modules/contrib/linkit/src/Form/Attribute/DeleteForm.php b/web/modules/contrib/linkit/src/Form/Attribute/DeleteForm.php
new file mode 100644 (file)
index 0000000..d31e44b
--- /dev/null
@@ -0,0 +1,92 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\linkit\Form\Attribute\DeleteForm.
+ */
+
+namespace Drupal\linkit\Form\Attribute;
+
+use Drupal\Core\Form\ConfirmFormBase;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Url;
+use Drupal\linkit\ProfileInterface;
+use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
+
+/**
+ * Provides a form to remove an attribute from a profile.
+ */
+class DeleteForm extends ConfirmFormBase {
+
+  /**
+   * The profiles that the attribute is applied to.
+   *
+   * @var \Drupal\linkit\ProfileInterface
+   */
+  protected $linkitProfile;
+
+  /**
+   * The attribute to be removed from the profile.
+   *
+   * @var \Drupal\linkit\AttributeInterface
+   */
+  protected $linkitAttribute;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getQuestion() {
+    return $this->t('Are you sure you want to delete the @plugin attribute from the %profile profile?', ['%profile' => $this->linkitProfile->label(), '@plugin' => $this->linkitAttribute->getLabel()]);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getCancelUrl() {
+    return Url::fromRoute('linkit.attributes', [
+      'linkit_profile' => $this->linkitProfile->id(),
+    ]);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId() {
+    return 'linkit_attribute_delete_form';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, FormStateInterface $form_state, ProfileInterface $linkit_profile = NULL, $plugin_instance_id = NULL) {
+    $this->linkitProfile = $linkit_profile;
+
+    if (!$this->linkitProfile->getAttributes()->has($plugin_instance_id)) {
+      throw new NotFoundHttpException();
+    }
+
+    $this->linkitAttribute = $this->linkitProfile->getAttribute($plugin_instance_id);
+    return parent::buildForm($form, $form_state);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, FormStateInterface $form_state) {
+    if ($this->linkitProfile->getAttributes()->has($this->linkitAttribute->getPluginId())) {
+      $this->linkitProfile->removeAttribute($this->linkitAttribute->getPluginId());
+      $this->linkitProfile->save();
+
+      drupal_set_message($this->t('The attribute %label has been deleted.', ['%label' => $this->linkitAttribute->getLabel()]));
+      $this->logger('linkit')->notice('The attribute %label has been deleted in the @profile profile.', [
+        '%label' => $this->linkitAttribute->getLabel(),
+        '@profile' => $this->linkitProfile->label(),
+      ]);
+    }
+
+    $form_state->setRedirect('linkit.attributes', [
+      'linkit_profile' => $this->linkitProfile->id(),
+    ]);
+  }
+
+}