xref: /plugin/structpublish/meta/Constants.php (revision a42bec4d89385b31db812c8b46b99cce7509efed)
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
13e31c94d7SAndreas Gohr    const STATUS_DRAFT = 'draft';
14e31c94d7SAndreas Gohr    const STATUS_APPROVED = 'approved';
15e31c94d7SAndreas Gohr    const STATUS_PUBLISHED = 'published';
16e31c94d7SAndreas Gohr
173b7236c0SAnna Dabrowska    // an action transitions a page from one status to another
18e31c94d7SAndreas Gohr    const ACTION_APPROVE = 'approve';
19e31c94d7SAndreas Gohr    const ACTION_PUBLISH = 'publish';
203b7236c0SAnna Dabrowska
213b7236c0SAnna Dabrowska
223b7236c0SAnna Dabrowska    /**
233b7236c0SAnna Dabrowska     * Convenience function mapping transition actions to resulting status
243b7236c0SAnna Dabrowska     *
253b7236c0SAnna Dabrowska     * @param string $action
263b7236c0SAnna Dabrowska     * @return string
273b7236c0SAnna Dabrowska     */
283b7236c0SAnna Dabrowska    public static function transitionBy($action)
293b7236c0SAnna Dabrowska    {
303b7236c0SAnna Dabrowska        $map = [
313b7236c0SAnna Dabrowska            self::ACTION_APPROVE => self::STATUS_APPROVED,
323b7236c0SAnna Dabrowska            self::ACTION_PUBLISH => self::STATUS_PUBLISHED,
333b7236c0SAnna Dabrowska        ];
343b7236c0SAnna Dabrowska
353b7236c0SAnna Dabrowska        return $map[$action];
363b7236c0SAnna Dabrowska    }
37*a42bec4dSAnna Dabrowska
38*a42bec4dSAnna Dabrowska    public static function workflowSteps($action)
39*a42bec4dSAnna Dabrowska    {
40*a42bec4dSAnna Dabrowska        $map = [
41*a42bec4dSAnna Dabrowska            self::ACTION_APPROVE => [
42*a42bec4dSAnna Dabrowska                'fromStatus' => self::STATUS_DRAFT,
43*a42bec4dSAnna Dabrowska                'currentStatus' => self::STATUS_APPROVED,
44*a42bec4dSAnna Dabrowska                'toStatus' => self::STATUS_PUBLISHED,
45*a42bec4dSAnna Dabrowska                'previousAction' => null,
46*a42bec4dSAnna Dabrowska                'nextAction' => self::ACTION_PUBLISH
47*a42bec4dSAnna Dabrowska            ],
48*a42bec4dSAnna Dabrowska            self::ACTION_PUBLISH => [
49*a42bec4dSAnna Dabrowska                'fromStatus' => self::STATUS_APPROVED,
50*a42bec4dSAnna Dabrowska                'currentStatus' => self::STATUS_PUBLISHED,
51*a42bec4dSAnna Dabrowska                'toStatus' => null,
52*a42bec4dSAnna Dabrowska                'previousAction' => self::ACTION_APPROVE,
53*a42bec4dSAnna Dabrowska                'nextAction' => null
54*a42bec4dSAnna Dabrowska            ],
55*a42bec4dSAnna Dabrowska        ];
56*a42bec4dSAnna Dabrowska
57*a42bec4dSAnna Dabrowska        return $map[$action];
58*a42bec4dSAnna Dabrowska    }
59e31c94d7SAndreas Gohr}
60