Security update for Core, with self-updated composer
[yaffs-website] / web / core / modules / workflows / src / Form / WorkflowStateDeleteForm.php
index c60045ca23a57487f38cea856e428fc0c46c010e..bfca31e97ef8f6919c9808ffea5adf89b9a746bd 100644 (file)
@@ -37,7 +37,7 @@ class WorkflowStateDeleteForm extends ConfirmFormBase {
    * {@inheritdoc}
    */
   public function getQuestion() {
-    return $this->t('Are you sure you want to delete %state from %workflow?', ['%state' => $this->workflow->getState($this->stateId)->label(), '%workflow' => $this->workflow->label()]);
+    return $this->t('Are you sure you want to delete %state from %workflow?', ['%state' => $this->workflow->getTypePlugin()->getState($this->stateId)->label(), '%workflow' => $this->workflow->label()]);
   }
 
   /**
@@ -70,11 +70,18 @@ class WorkflowStateDeleteForm extends ConfirmFormBase {
    *   The form structure.
    */
   public function buildForm(array $form, FormStateInterface $form_state, WorkflowInterface $workflow = NULL, $workflow_state = NULL) {
-    if (!$workflow->hasState($workflow_state)) {
+    if (!$workflow->getTypePlugin()->hasState($workflow_state)) {
       throw new NotFoundHttpException();
     }
     $this->workflow = $workflow;
     $this->stateId = $workflow_state;
+
+    if ($this->workflow->getTypePlugin()->workflowStateHasData($this->workflow, $this->workflow->getTypePlugin()->getState($this->stateId))) {
+      $form['#title'] = $this->getQuestion();
+      $form['description'] = ['#markup' => $this->t('This workflow state is in use. You cannot remove this workflow state until you have removed all content using it.')];
+      return $form;
+    }
+
     return parent::buildForm($form, $form_state);
   }
 
@@ -83,10 +90,11 @@ class WorkflowStateDeleteForm extends ConfirmFormBase {
    */
   public function submitForm(array &$form, FormStateInterface $form_state) {
 
-    $workflow_label = $this->workflow->getState($this->stateId)->label();
+    $workflow_label = $this->workflow->getTypePlugin()->getState($this->stateId)->label();
     $this->workflow
-      ->deleteState($this->stateId)
-      ->save();
+      ->getTypePlugin()
+      ->deleteState($this->stateId);
+    $this->workflow->save();
 
     drupal_set_message($this->t(
       'State %label deleted.',