1e31c94d7SAndreas Gohr<?php 2e31c94d7SAndreas Gohr 3e31c94d7SAndreas Gohrnamespace dokuwiki\plugin\structpublish\meta; 4e31c94d7SAndreas Gohr 5e31c94d7SAndreas Gohr/** 6e31c94d7SAndreas Gohr * Defines some constants used throughout the plugin 7e31c94d7SAndreas Gohr * 8e31c94d7SAndreas Gohr * @todo this might need to be replaced later if we want to have user configurable status 9e31c94d7SAndreas Gohr */ 108b0ba635SAndreas Gohrclass Constants 118b0ba635SAndreas Gohr{ 12e31c94d7SAndreas Gohr // a page can be in one current status 13*f0c5cbdaSAnna Dabrowska public const STATUS_DRAFT = 'draft'; 14*f0c5cbdaSAnna Dabrowska public const STATUS_APPROVED = 'approved'; 15*f0c5cbdaSAnna Dabrowska public const STATUS_PUBLISHED = 'published'; 16e31c94d7SAndreas Gohr 173b7236c0SAnna Dabrowska // an action transitions a page from one status to another 18*f0c5cbdaSAnna Dabrowska public const ACTION_APPROVE = 'approve'; 19*f0c5cbdaSAnna Dabrowska public const ACTION_PUBLISH = 'publish'; 203b7236c0SAnna Dabrowska 213b7236c0SAnna Dabrowska /** 223b7236c0SAnna Dabrowska * Convenience function mapping transition actions to resulting status 233b7236c0SAnna Dabrowska * 243b7236c0SAnna Dabrowska * @param string $action 253b7236c0SAnna Dabrowska * @return string 263b7236c0SAnna Dabrowska */ 273b7236c0SAnna Dabrowska public static function transitionBy($action) 283b7236c0SAnna Dabrowska { 293b7236c0SAnna Dabrowska $map = [ 303b7236c0SAnna Dabrowska self::ACTION_APPROVE => self::STATUS_APPROVED, 313b7236c0SAnna Dabrowska self::ACTION_PUBLISH => self::STATUS_PUBLISHED, 323b7236c0SAnna Dabrowska ]; 333b7236c0SAnna Dabrowska 343b7236c0SAnna Dabrowska return $map[$action]; 353b7236c0SAnna Dabrowska } 36a42bec4dSAnna Dabrowska 37a42bec4dSAnna Dabrowska public static function workflowSteps($action) 38a42bec4dSAnna Dabrowska { 39a42bec4dSAnna Dabrowska $map = [ 40a42bec4dSAnna Dabrowska self::ACTION_APPROVE => [ 41a42bec4dSAnna Dabrowska 'fromStatus' => self::STATUS_DRAFT, 42a42bec4dSAnna Dabrowska 'currentStatus' => self::STATUS_APPROVED, 43a42bec4dSAnna Dabrowska 'toStatus' => self::STATUS_PUBLISHED, 44a42bec4dSAnna Dabrowska 'previousAction' => null, 45a42bec4dSAnna Dabrowska 'nextAction' => self::ACTION_PUBLISH 46a42bec4dSAnna Dabrowska ], 47a42bec4dSAnna Dabrowska self::ACTION_PUBLISH => [ 48a42bec4dSAnna Dabrowska 'fromStatus' => self::STATUS_APPROVED, 49a42bec4dSAnna Dabrowska 'currentStatus' => self::STATUS_PUBLISHED, 50a42bec4dSAnna Dabrowska 'toStatus' => null, 51a42bec4dSAnna Dabrowska 'previousAction' => self::ACTION_APPROVE, 52a42bec4dSAnna Dabrowska 'nextAction' => null 53a42bec4dSAnna Dabrowska ], 54a42bec4dSAnna Dabrowska ]; 55a42bec4dSAnna Dabrowska 56a42bec4dSAnna Dabrowska return $map[$action]; 57a42bec4dSAnna Dabrowska } 58e31c94d7SAndreas Gohr} 59