More updates to stop using dev or alpha or beta versions.
[yaffs-website] / web / modules / contrib / security_review / src / Form / RunForm.php
diff --git a/web/modules/contrib/security_review/src/Form/RunForm.php b/web/modules/contrib/security_review/src/Form/RunForm.php
new file mode 100644 (file)
index 0000000..16b50ba
--- /dev/null
@@ -0,0 +1,95 @@
+<?php
+
+namespace Drupal\security_review\Form;
+
+use Drupal\Core\Form\FormBase;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\security_review\Checklist;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Provides implementation for the Run form.
+ */
+class RunForm extends FormBase {
+
+  /**
+   * The security_review.checklist service.
+   *
+   * @var \Drupal\security_review\Checklist
+   */
+  protected $checklist;
+
+  /**
+   * Constructs a RunForm.
+   *
+   * @param \Drupal\security_review\Checklist $checklist
+   *   The security_review.checklist service.
+   */
+  public function __construct(Checklist $checklist) {
+    $this->checklist = $checklist;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container) {
+    return new static(
+      $container->get('security_review.checklist')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId() {
+    return 'security-review-run';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, FormStateInterface $form_state) {
+    if (!$this->currentUser()->hasPermission('run security checks')) {
+      return [];
+    }
+
+    $form['run_form'] = [
+      '#type' => 'details',
+      '#title' => $this->t('Run'),
+      '#description' => $this->t('Click the button below to run the security checklist and review the results.') . '<br />',
+      '#open' => TRUE,
+    ];
+
+    $form['run_form']['submit'] = [
+      '#type' => 'submit',
+      '#value' => $this->t('Run checklist'),
+    ];
+
+    // Return the finished form.
+    return $form;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, FormStateInterface $form_state) {
+    $batch = [
+      'operations' => [],
+      'finished' => '_security_review_batch_run_finished',
+      'title' => $this->t('Performing Security Review'),
+      'init_message' => $this->t('Security Review is starting.'),
+      'progress_message' => $this->t('Progress @current out of @total.'),
+      'error_message' => $this->t('An error occurred. Rerun the process or consult the logs.'),
+    ];
+
+    foreach ($this->checklist->getEnabledChecks() as $check) {
+      $batch['operations'][] = [
+        '_security_review_batch_run_op',
+        [$check],
+      ];
+    }
+
+    batch_set($batch);
+  }
+
+}