xref: /plugin/structpublish/meta/Constants.php (revision f0c5cbdaf6b238dd17c1bbfb020e6386bf3de943)
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