summaryrefslogtreecommitdiff
path: root/app/Core/Plugin/Base.php
blob: 1b7ac8f5da9fa4f070392836807eba5b970f6bfa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<?php

namespace Core\Plugin;

/**
 * Plugin Base class
 *
 * @package  plugin
 * @author   Frederic Guillot
 */
abstract class Base extends \Core\Base
{
    /**
     * Method called for each request
     *
     * @abstract
     * @access public
     */
    abstract public function initialize();

    /**
     * Override default CSP rules
     *
     * @access public
     * @param  array  $rules
     */
    public function setContentSecurityPolicy(array $rules)
    {
        $this->container['cspRules'] = $rules;
    }

    /**
     * Returns all classes that needs to be stored in the DI container
     *
     * @access public
     * @return array
     */
    public function getClasses()
    {
        return array();
    }

    /**
     * Listen on internal events
     *
     * @access public
     * @param  string   $event
     * @param  callable $callback
     */
    public function on($event, $callback)
    {
        $container = $this->container;

        $this->container['dispatcher']->addListener($event, function() use ($container, $callback) {
            call_user_func($callback, $container);
        });
    }

    /**
     * Get plugin name
     *
     * This method should be overrided by your Plugin class
     *
     * @access public
     * @return string
     */
    public function getPluginName()
    {
        return ucfirst(substr(get_called_class(), 7, -7));
    }

    /**
     * Get plugin description
     *
     * This method should be overrided by your Plugin class
     *
     * @access public
     * @return string
     */
    public function getPluginDescription()
    {
        return '';
    }

    /**
     * Get plugin author
     *
     * This method should be overrided by your Plugin class
     *
     * @access public
     * @return string
     */
    public function getPluginAuthor()
    {
        return '?';
    }

    /**
     * Get plugin version
     *
     * This method should be overrided by your Plugin class
     *
     * @access public
     * @return string
     */
    public function getPluginVersion()
    {
        return '?';
    }

    /**
     * Get plugin homepage
     *
     * This method should be overrided by your Plugin class
     *
     * @access public
     * @return string
     */
    public function getPluginHomepage()
    {
        return '';
    }
}