workflow_participants-8.x-2.x-dev/src/EntityOperations.php

src/EntityOperations.php
<?php

namespace Drupal\workflow_participants;

use Drupal\content_moderation_notifications\ContentModerationNotificationInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\workflows\WorkflowInterface;

/**
 * A class for reacting to entity operations.
 */
class EntityOperations {

  use StringTranslationTrait;

  /**
   * Form builder for moderation state transitions.
   *
   * @param string $entity_type
   *   The entity type ID.
   * @param \Drupal\workflows\WorkflowInterface $workflow
   *   The workflow entity.
   * @param array $form
   *   The form definition.
   * @param \Drupal\Core\Form\FormStateInterface $form_state
   *   The form state.
   *
   * @see static::alterWorkflowTransitionsForm
   */
  public static function workflowTransitionsFormBuilder($entity_type, WorkflowInterface $workflow, array &$form, FormStateInterface $form_state) {
    $transition_id = $form_state->getValue('id');
    foreach (['editor_transitions', 'reviewer_transitions'] as $enabled) {
      $transitions = $workflow->getThirdPartySetting('workflow_participants', $enabled, []);
      if ($form_state->getValue($enabled)) {
        $transitions[$transition_id] = $transition_id;
      }
      else {
        unset($transitions[$transition_id]);
      }
      $workflow->setThirdPartySetting('workflow_participants', $enabled, $transitions);
    }
  }

  /**
   * Form builder for content moderation notification entities.
   *
   * @param string $entity_type
   *   The entity type ID.
   * @param \Drupal\content_moderation_notifications\ContentModerationNotificationInterface $notification
   *   The notification entity.
   * @param array $form
   *   The form definition.
   * @param \Drupal\Core\Form\FormStateInterface $form_state
   *   The form state.
   */
  public static function notificationFormBuilder($entity_type, ContentModerationNotificationInterface $notification, array &$form, FormStateInterface $form_state) {
    foreach ($form_state->getValue('workflow_participants') as $key => $value) {
      $notification->setThirdPartySetting('workflow_participants', $key, (bool) $value);
    }
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc