Mercurial > hg > cmmr2012-drupal-site
annotate core/modules/workflows/src/State.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children |
rev | line source |
---|---|
Chris@0 | 1 <?php |
Chris@0 | 2 |
Chris@0 | 3 namespace Drupal\workflows; |
Chris@0 | 4 |
Chris@0 | 5 /** |
Chris@0 | 6 * A value object representing a workflow state. |
Chris@0 | 7 */ |
Chris@0 | 8 class State implements StateInterface { |
Chris@0 | 9 |
Chris@0 | 10 /** |
Chris@0 | 11 * The workflow the state is attached to. |
Chris@0 | 12 * |
Chris@0 | 13 * @var \Drupal\workflows\WorkflowInterface |
Chris@0 | 14 */ |
Chris@0 | 15 protected $workflow; |
Chris@0 | 16 |
Chris@0 | 17 /** |
Chris@0 | 18 * The state's ID. |
Chris@0 | 19 * |
Chris@0 | 20 * @var string |
Chris@0 | 21 */ |
Chris@0 | 22 protected $id; |
Chris@0 | 23 |
Chris@0 | 24 /** |
Chris@0 | 25 * The state's label. |
Chris@0 | 26 * |
Chris@0 | 27 * @var string |
Chris@0 | 28 */ |
Chris@0 | 29 protected $label; |
Chris@0 | 30 |
Chris@0 | 31 /** |
Chris@0 | 32 * The state's weight. |
Chris@0 | 33 * |
Chris@0 | 34 * @var int |
Chris@0 | 35 */ |
Chris@0 | 36 protected $weight; |
Chris@0 | 37 |
Chris@0 | 38 /** |
Chris@0 | 39 * State constructor. |
Chris@0 | 40 * |
Chris@0 | 41 * @param \Drupal\workflows\WorkflowInterface $workflow |
Chris@0 | 42 * The workflow the state is attached to. |
Chris@0 | 43 * @param string $id |
Chris@0 | 44 * The state's ID. |
Chris@0 | 45 * @param string $label |
Chris@0 | 46 * The state's label. |
Chris@0 | 47 * @param int $weight |
Chris@0 | 48 * The state's weight. |
Chris@0 | 49 */ |
Chris@0 | 50 public function __construct(WorkflowTypeInterface $workflow, $id, $label, $weight = 0) { |
Chris@0 | 51 $this->workflow = $workflow; |
Chris@0 | 52 $this->id = $id; |
Chris@0 | 53 $this->label = $label; |
Chris@0 | 54 $this->weight = $weight; |
Chris@0 | 55 } |
Chris@0 | 56 |
Chris@0 | 57 /** |
Chris@0 | 58 * {@inheritdoc} |
Chris@0 | 59 */ |
Chris@0 | 60 public function id() { |
Chris@0 | 61 return $this->id; |
Chris@0 | 62 } |
Chris@0 | 63 |
Chris@0 | 64 /** |
Chris@0 | 65 * {@inheritdoc} |
Chris@0 | 66 */ |
Chris@0 | 67 public function label() { |
Chris@0 | 68 return $this->label; |
Chris@0 | 69 } |
Chris@0 | 70 |
Chris@0 | 71 /** |
Chris@0 | 72 * {@inheritdoc} |
Chris@0 | 73 */ |
Chris@0 | 74 public function weight() { |
Chris@0 | 75 return $this->weight; |
Chris@0 | 76 } |
Chris@0 | 77 |
Chris@0 | 78 /** |
Chris@0 | 79 * {@inheritdoc} |
Chris@0 | 80 */ |
Chris@0 | 81 public function canTransitionTo($to_state_id) { |
Chris@0 | 82 return $this->workflow->hasTransitionFromStateToState($this->id, $to_state_id); |
Chris@0 | 83 } |
Chris@0 | 84 |
Chris@0 | 85 /** |
Chris@0 | 86 * {@inheritdoc} |
Chris@0 | 87 */ |
Chris@0 | 88 public function getTransitionTo($to_state_id) { |
Chris@0 | 89 if (!$this->canTransitionTo($to_state_id)) { |
Chris@0 | 90 throw new \InvalidArgumentException("Can not transition to '$to_state_id' state"); |
Chris@0 | 91 } |
Chris@0 | 92 return $this->workflow->getTransitionFromStateToState($this->id(), $to_state_id); |
Chris@0 | 93 } |
Chris@0 | 94 |
Chris@0 | 95 /** |
Chris@0 | 96 * {@inheritdoc} |
Chris@0 | 97 */ |
Chris@0 | 98 public function getTransitions() { |
Chris@0 | 99 return $this->workflow->getTransitionsForState($this->id); |
Chris@0 | 100 } |
Chris@0 | 101 |
Chris@0 | 102 /** |
Chris@0 | 103 * Helper method to convert a State value object to a label. |
Chris@0 | 104 * |
Chris@0 | 105 * @param \Drupal\workflows\StateInterface $state |
Chris@0 | 106 * |
Chris@0 | 107 * @return string |
Chris@0 | 108 * The label of the state. |
Chris@0 | 109 */ |
Chris@0 | 110 public static function labelCallback(StateInterface $state) { |
Chris@0 | 111 return $state->label(); |
Chris@0 | 112 } |
Chris@0 | 113 |
Chris@0 | 114 } |