123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350 |
- <?php
- namespace Drupal\workflows;
- use Drupal\Component\Plugin\ConfigurablePluginInterface;
- use Drupal\Component\Plugin\DerivativeInspectionInterface;
- use Drupal\Core\Plugin\PluginWithFormsInterface;
- /**
- * An interface for Workflow type plugins.
- */
- interface WorkflowTypeInterface extends PluginWithFormsInterface, DerivativeInspectionInterface, ConfigurablePluginInterface {
- /**
- * The key of the global workflow plugin form.
- */
- const PLUGIN_FORM_KEY = 'configure';
- /**
- * Gets the label for the workflow type.
- *
- * @return string
- * The workflow type label.
- */
- public function label();
- /**
- * Determines if the workflow is being has data associated with it.
- *
- * @internal
- * Marked as internal until it's validated this should form part of the
- * public API in https://www.drupal.org/node/2897148.
- *
- * @param \Drupal\workflows\WorkflowInterface $workflow
- * The workflow to check.
- *
- * @return bool
- * TRUE if the workflow is being used, FALSE if not.
- */
- public function workflowHasData(WorkflowInterface $workflow);
- /**
- * Determines if the workflow state has data associated with it.
- *
- * @internal
- * Marked as internal until it's validated this should form part of the
- * public API in https://www.drupal.org/node/2897148.
- *
- * @param \Drupal\workflows\WorkflowInterface $workflow
- * The workflow to check.
- * @param \Drupal\workflows\StateInterface $state
- * The workflow state to check.
- *
- * @return bool
- * TRUE if the workflow state is being used, FALSE if not.
- */
- public function workflowStateHasData(WorkflowInterface $workflow, StateInterface $state);
- /**
- * Gets the initial state for the workflow.
- *
- * @return \Drupal\workflows\StateInterface
- * The initial state.
- */
- public function getInitialState();
- /**
- * Gets the required states of workflow type.
- *
- * This is usually specified in the workflow type annotation.
- *
- * @return string[]
- * The required states.
- *
- * @see \Drupal\workflows\Annotation\WorkflowType
- */
- public function getRequiredStates();
- /**
- * Informs the plugin that a dependency of the workflow will be deleted.
- *
- * @param array $dependencies
- * An array of dependencies that will be deleted keyed by dependency type.
- *
- * @return bool
- * TRUE if the workflow settings have been changed, FALSE if not.
- *
- * @see \Drupal\Core\Config\ConfigEntityInterface::onDependencyRemoval()
- *
- * @todo https://www.drupal.org/node/2579743 make part of a generic interface.
- */
- public function onDependencyRemoval(array $dependencies);
- /**
- * Adds a state to the workflow.
- *
- * @param string $state_id
- * The state's ID.
- * @param string $label
- * The state's label.
- *
- * @return $this
- *
- * @throws \InvalidArgumentException
- * Thrown if a state already exists or state ID is invalid.
- */
- public function addState($state_id, $label);
- /**
- * Determines if the workflow has a state with the provided ID.
- *
- * @param string $state_id
- * The state's ID.
- *
- * @return bool
- * TRUE if the workflow has a state with the provided ID, FALSE if not.
- */
- public function hasState($state_id);
- /**
- * Gets state objects for the provided state IDs.
- *
- * @param string[] $state_ids
- * A list of state IDs to get. If NULL then all states will be returned.
- *
- * @return \Drupal\workflows\StateInterface[]
- * An array of workflow states, keyed by state IDs.
- *
- * @throws \InvalidArgumentException
- * Thrown if $state_ids contains a state ID that does not exist.
- */
- public function getStates($state_ids = NULL);
- /**
- * Gets a workflow state.
- *
- * @param string $state_id
- * The state's ID.
- *
- * @return \Drupal\workflows\StateInterface
- * The workflow state.
- *
- * @throws \InvalidArgumentException
- * Thrown if $state_id does not exist.
- */
- public function getState($state_id);
- /**
- * Sets a state's label.
- *
- * @param string $state_id
- * The state ID to set the label for.
- * @param string $label
- * The state's label.
- *
- * @return $this
- */
- public function setStateLabel($state_id, $label);
- /**
- * Sets a state's weight value.
- *
- * @param string $state_id
- * The state ID to set the weight for.
- * @param int $weight
- * The state's weight.
- *
- * @return $this
- */
- public function setStateWeight($state_id, $weight);
- /**
- * Deletes a state from the workflow.
- *
- * @param string $state_id
- * The state ID to delete.
- *
- * @return \Drupal\workflows\WorkflowTypeInterface
- * The workflow type plugin.
- *
- * @throws \InvalidArgumentException
- * Thrown if $state_id does not exist.
- */
- public function deleteState($state_id);
- /**
- * Adds a transition to the workflow.
- *
- * @param string $id
- * The transition ID.
- * @param string $label
- * The transition's label.
- * @param array $from_state_ids
- * The state IDs to transition from.
- * @param string $to_state_id
- * The state ID to transition to.
- *
- * @return $this
- *
- * @throws \InvalidArgumentException
- * Thrown if either state does not exist.
- */
- public function addTransition($id, $label, array $from_state_ids, $to_state_id);
- /**
- * Gets a transition object for the provided transition ID.
- *
- * @param string $transition_id
- * A transition ID.
- *
- * @return \Drupal\workflows\TransitionInterface
- * The transition.
- *
- * @throws \InvalidArgumentException
- * Thrown if $transition_id does not exist.
- */
- public function getTransition($transition_id);
- /**
- * Determines if a transition exists.
- *
- * @param string $transition_id
- * The transition ID.
- *
- * @return bool
- * TRUE if the transition exists, FALSE if not.
- */
- public function hasTransition($transition_id);
- /**
- * Gets transition objects for the provided transition IDs.
- *
- * @param string[] $transition_ids
- * A list of transition IDs to get. If NULL then all transitions will be
- * returned.
- *
- * @return \Drupal\workflows\TransitionInterface[]
- * An array of transition objects.
- *
- * @throws \InvalidArgumentException
- * Thrown if $transition_ids contains a transition ID that does not exist.
- */
- public function getTransitions(array $transition_ids = NULL);
- /**
- * Gets the transition IDs for a state for the provided direction.
- *
- * @param $state_id
- * The state to get transitions for.
- * @param string $direction
- * (optional) The direction of the transition, defaults to
- * TransitionInterface::DIRECTION_FROM. Possible values are:
- * TransitionInterface::DIRECTION_FROM or TransitionInterface::DIRECTION_TO.
- *
- * @return array
- * The transition IDs for a state for the provided direction.
- *
- * @see \Drupal\workflows\TransitionInterface::DIRECTION_FROM
- * @see \Drupal\workflows\TransitionInterface::DIRECTION_TO
- */
- public function getTransitionsForState($state_id, $direction = TransitionInterface::DIRECTION_FROM);
- /**
- * Gets a transition from state to state.
- *
- * @param string $from_state_id
- * The state ID to transition from.
- * @param string $to_state_id
- * The state ID to transition to.
- *
- * @return \Drupal\workflows\TransitionInterface
- * The transitions.
- *
- * @throws \InvalidArgumentException
- * Thrown if the transition does not exist.
- */
- public function getTransitionFromStateToState($from_state_id, $to_state_id);
- /**
- * Determines if a transition from state to state exists.
- *
- * @param string $from_state_id
- * The state ID to transition from.
- * @param string $to_state_id
- * The state ID to transition to.
- *
- * @return bool
- * TRUE if the transition exists, FALSE if not.
- */
- public function hasTransitionFromStateToState($from_state_id, $to_state_id);
- /**
- * Sets a transition's label.
- *
- * @param string $transition_id
- * The transition ID.
- * @param string $label
- * The transition's label.
- *
- * @return $this
- *
- * @throws \InvalidArgumentException
- * Thrown if the transition does not exist.
- */
- public function setTransitionLabel($transition_id, $label);
- /**
- * Sets a transition's weight.
- *
- * @param string $transition_id
- * The transition ID.
- * @param int $weight
- * The transition's weight.
- *
- * @return $this
- *
- * @throws \InvalidArgumentException
- * Thrown if the transition does not exist.
- */
- public function setTransitionWeight($transition_id, $weight);
- /**
- * Sets a transition's from states.
- *
- * @param string $transition_id
- * The transition ID.
- * @param array $from_state_ids
- * The state IDs to transition from.
- *
- * @return $this
- *
- * @throws \InvalidArgumentException
- * Thrown if the transition does not exist or the states do not exist.
- */
- public function setTransitionFromStates($transition_id, array $from_state_ids);
- /**
- * Deletes a transition.
- *
- * @param string $transition_id
- * The transition ID.
- *
- * @return $this
- *
- * @throws \InvalidArgumentException
- * Thrown if the transition does not exist.
- */
- public function deleteTransition($transition_id);
- }
|