Version 1
[yaffs-website] / web / modules / contrib / linkit / src / Form / Matcher / DeleteForm.php
diff --git a/web/modules/contrib/linkit/src/Form/Matcher/DeleteForm.php b/web/modules/contrib/linkit/src/Form/Matcher/DeleteForm.php
new file mode 100644 (file)
index 0000000..bff4737
--- /dev/null
@@ -0,0 +1,90 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\linkit\Form\Matcher\DeleteForm.
+ */
+
+namespace Drupal\linkit\Form\Matcher;
+
+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 a matcher from a profile.
+ */
+class DeleteForm extends ConfirmFormBase {
+
+  /**
+   * The profiles that the matcher is applied to.
+   *
+   * @var \Drupal\linkit\ProfileInterface
+   */
+  protected $linkitProfile;
+
+  /**
+   * The matcher to be removed from the profile.
+   *
+   * @var \Drupal\linkit\MatcherInterface
+   */
+  protected $linkitMatcher;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getQuestion() {
+    return $this->t('Are you sure you want to delete the @plugin matcher from the %profile profile?', ['%profile' => $this->linkitProfile->label(), '@plugin' => $this->linkitMatcher->getLabel()]);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getCancelUrl() {
+    return Url::fromRoute('linkit.matchers', [
+      'linkit_profile' => $this->linkitProfile->id(),
+    ]);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId() {
+    return 'linkit_matcher_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->getMatchers()->has($plugin_instance_id)) {
+      throw new NotFoundHttpException();
+    }
+
+    $this->linkitMatcher = $this->linkitProfile->getMatcher($plugin_instance_id);
+    return parent::buildForm($form, $form_state);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, FormStateInterface $form_state) {
+    $this->linkitProfile->removeMatcher($this->linkitMatcher);
+
+    drupal_set_message($this->t('The matcher %label has been deleted.', ['%label' => $this->linkitMatcher->getLabel()]));
+    $this->logger('linkit')->notice('The matcher %label has been deleted in the @profile profile.', [
+      '%label' => $this->linkitMatcher->getLabel(),
+      '@profile' => $this->linkitProfile->label(),
+    ]);
+
+    $form_state->setRedirect('linkit.matchers', [
+      'linkit_profile' => $this->linkitProfile->id(),
+    ]);
+
+  }
+
+}