Passed
Push — develop ( 49fcca...1b5af0 )
by Guillaume
01:47
created

BaseWorkflow   A

Complexity

Total Complexity 14

Size/Duplication

Total Lines 70
Duplicated Lines 0 %

Test Coverage

Coverage 36.67%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 23
c 2
b 0
f 0
dl 0
loc 70
ccs 11
cts 30
cp 0.3667
rs 10
wmc 14

9 Methods

Rating   Name   Duplication   Size   Complexity  
A notify() 0 9 2
A __construct() 0 3 1
A currentMenu() 0 5 1
A getMenuClassName() 0 3 2
A getInstance() 0 7 2
A __clone() 0 2 1
A getCurrentMenuClass() 0 5 2
A destroy() 0 5 1
A do() 0 9 2
1
<?php
2
3
namespace Godbout\Alfred\Workflow;
4
5
use ReflectionClass;
6
use Godbout\Alfred\Workflow\Contracts\Workflow;
7
8
abstract class BaseWorkflow implements Workflow
9
{
10
    private static $instance = null;
11
    private $scriptFilter = null;
12
13
14 2
    final protected function __construct()
15
    {
16 2
        $this->scriptFilter = ScriptFilter::create();
17 2
    }
18
19 2
    final public static function getInstance()
20
    {
21 2
        if (is_null(self::$instance)) {
22 2
            self::$instance = new static();
23
        }
24
25 2
        return self::$instance;
26
    }
27
28
    public static function currentMenu()
29
    {
30
        static::getCurrentMenuClass()::scriptFilter();
31
32
        return static::getInstance()->scriptFilter->output();
33
    }
34
35
    private static function getCurrentMenuClass()
36
    {
37
        $menu = static::getMenuClassName(getenv('action')) ?: 'Entrance';
38
39
        return (new ReflectionClass(static::class))->getNamespaceName() . "\\Menus\\" . $menu;
40
    }
41
42
    private static function getMenuClassName($action)
43
    {
44
        return str_replace('_', '', ucwords($action === false ? 'entrance' : $action, '_'));
45
    }
46
47
    public static function do()
48
    {
49
        $action = getenv('workflow_action');
50
51
        if (method_exists(static::class, $action)) {
52
            return static::$action();
53
        }
54
55
        return false;
56
    }
57
58
    public static function notify($result = false)
59
    {
60
        $action = getenv('workflow_action');
61
62
        if ($result === false) {
63
            return "Oops... cannot $action.";
64
        }
65
66
        return "$action is done!";
67
    }
68
69 1
    final public static function destroy()
70
    {
71 1
        ScriptFilter::destroy();
72
73 1
        self::$instance = null;
74 1
    }
75
76
    final private function __clone()
77
    {
78
    }
79
}
80