WorkspacePublishEvent.php

Same filename and directory in other branches
  1. 10 core/modules/workspaces/src/Event/WorkspacePublishEvent.php

Namespace

Drupal\workspaces\Event

File

core/modules/workspaces/src/Event/WorkspacePublishEvent.php

View source
<?php

namespace Drupal\workspaces\Event;

use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\workspaces\WorkspaceInterface;
use Drupal\Component\EventDispatcher\Event;

/**
 * Defines the workspace publish event.
 */
abstract class WorkspacePublishEvent extends Event {
    
    /**
     * The IDs of the entities that are being published.
     */
    protected readonly array $publishedRevisionIds;
    
    /**
     * Whether an event subscriber requested the publishing to be stopped.
     */
    protected bool $publishingStopped = FALSE;
    
    /**
     * The reason why publishing stopped. For use in messages.
     */
    protected string $publishingStoppedReason = '';
    
    /**
     * Constructs a new WorkspacePublishEvent.
     *
     * @param \Drupal\workspaces\WorkspaceInterface $workspace
     *   The workspace.
     * @param array $published_revision_ids
     *   The IDs of the entities that are being published.
     */
    public function __construct(WorkspaceInterface $workspace, array $published_revision_ids) {
        $this->publishedRevisionIds = $published_revision_ids;
    }
    
    /**
     * Gets the workspace.
     *
     * @return \Drupal\workspaces\WorkspaceInterface
     *   The workspace.
     */
    public function getWorkspace() : WorkspaceInterface {
        return $this->workspace;
    }
    
    /**
     * Gets the entity IDs that are being published as part of the workspace.
     *
     * @return array
     *   Returns a multidimensional array where the first level keys are entity
     *   type IDs and the values are an array of entity IDs keyed by revision IDs.
     */
    public function getPublishedRevisionIds() : array {
        return $this->publishedRevisionIds;
    }
    
    /**
     * Determines whether a subscriber requested the publishing to be stopped.
     *
     * @return bool
     *   TRUE if the publishing of the workspace should be stopped, FALSE
     *   otherwise.
     */
    public function isPublishingStopped() : bool {
        return $this->publishingStopped;
    }
    
    /**
     * Signals that the workspace publishing should be aborted.
     *
     * @return $this
     */
    public function stopPublishing() : static {
        $this->publishingStopped = TRUE;
        return $this;
    }
    
    /**
     * Gets the reason for stopping the workspace publication.
     *
     * @return string|\Drupal\Core\StringTranslation\TranslatableMarkup
     *   The reason for stopping the workspace publication or an empty string if
     *   no reason is provided.
     */
    public function getPublishingStoppedReason() : string|TranslatableMarkup {
        return $this->publishingStoppedReason;
    }
    
    /**
     * Sets the reason for stopping the workspace publication.
     *
     * @param string|\Stringable $reason
     *   The reason for stopping the workspace publication.
     *
     * @return $this
     */
    public function setPublishingStoppedReason(string|\Stringable $reason) : static {
        $this->publishingStoppedReason = $reason;
        return $this;
    }

}

Classes

Title Deprecated Summary
WorkspacePublishEvent Defines the workspace publish event.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.