1 <?php
2 
3 namespace dokuwiki\plugin\structpublish\meta;
4 
5 /**
6  * Defines some constants used throughout the plugin
7  *
8  * @todo this might need to be replaced later if we want to have user configurable status
9  */
10 class Constants
11 {
12     // a page can be in one current status
13     public const STATUS_DRAFT = 'draft';
14     public const STATUS_APPROVED = 'approved';
15     public const STATUS_PUBLISHED = 'published';
16 
17     // an action transitions a page from one status to another
18     public const ACTION_APPROVE = 'approve';
19     public const ACTION_PUBLISH = 'publish';
20 
21     /**
22      * Convenience function mapping transition actions to resulting status
23      *
24      * @param string $action
25      * @return string
26      */
27     public static function transitionBy($action)
28     {
29         $map = [
30             self::ACTION_APPROVE => self::STATUS_APPROVED,
31             self::ACTION_PUBLISH => self::STATUS_PUBLISHED,
32         ];
33 
34         return $map[$action];
35     }
36 
37     public static function workflowSteps($action)
38     {
39         $map = [
40             self::ACTION_APPROVE => [
41                 'fromStatus' => self::STATUS_DRAFT,
42                 'currentStatus' => self::STATUS_APPROVED,
43                 'toStatus' => self::STATUS_PUBLISHED,
44                 'previousAction' => null,
45                 'nextAction' => self::ACTION_PUBLISH
46             ],
47             self::ACTION_PUBLISH => [
48                 'fromStatus' => self::STATUS_APPROVED,
49                 'currentStatus' => self::STATUS_PUBLISHED,
50                 'toStatus' => null,
51                 'previousAction' => self::ACTION_APPROVE,
52                 'nextAction' => null
53             ],
54         ];
55 
56         return $map[$action];
57     }
58 }
59