You are here

public function TestMachine::init in State Machine 7

Same name and namespace in other branches
  1. 7.3 state_machine.api.php \TestMachine::init()
  2. 7.2 state_machine.api.php \TestMachine::init()

Called from StateMachine::__construct to initialize the states and events.

* Defines States Draft, Published and Unpublished. * Define Events Publish, Unpublish and To Draft

Overrides StateMachine::init

File

./state_machine.api.php, line 18

Class

TestMachine
State Machine Developer Documentation

Code

public function init() {

  // Initialize states
  // @see StateMachine::create_state
  // Add Draft State
  $this
    ->create_state('draft');

  // Add Published State
  // We Use the the "on_enter and on_exit functionality."
  $this
    ->create_state('published', array(
    # When the state is set to "Published" run the mehtod "on_enter_published" on this object.
    'on_enter' => array(
      $this,
      'on_enter_published',
    ),
    # When leaving the state "Published" then run the method "on_exit_published" on this object.
    'on_exit' => array(
      $this,
      'on_exit_published',
    ),
  ));

  // Add the state "unpublished"
  $this
    ->create_state('unpublished');

  // Initialize events
  // @see StateMachine::create_event
  // Add the pusblish event to  move the state from "draft" to "published"
  $this
    ->create_event('publish', array(
    'origin' => 'draft',
    'target' => 'published',
  ));

  // Add the unpusblish event to  move the state from "published" to "unpublished"
  $this
    ->create_event('unpublish', array(
    'origin' => 'published',
    'target' => 'unpublished',
  ));

  // Add the "to draft" event to move the state from unpublished to draft
  $this
    ->create_event('to draft', array(
    'origin' => 'unpublished',
    'target' => 'draft',
  ));
}