about summary refs log tree commit diff stats
path: root/wiki/inc/PluginInterface.php
blob: 60898909642891801d47d433b568cf87c9629fa3 (plain) (blame)
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<?php
/**
 * DokuWiki Plugin Interface
 *
 * Defines the public contract all DokuWiki plugins will adhere to. The actual code
 * to do so is defined in DokuWiki_PluginTrait
 *
 * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
 * @author     Christopher Smith <chris@jalakai.co.uk>
 */
interface DokuWiki_PluginInterface {
    /**
     * General Info
     *
     * Needs to return a associative array with the following values:
     *
     * base   - the plugin's base name (eg. the directory it needs to be installed in)
     * author - Author of the plugin
     * email  - Email address to contact the author
     * date   - Last modified date of the plugin in YYYY-MM-DD format
     * name   - Name of the plugin
     * desc   - Short description of the plugin (Text only)
     * url    - Website with more information on the plugin (eg. syntax description)
     */
    public function getInfo();

    /**
     * The type of the plugin inferred from the class name
     *
     * @return string  plugin type
     */
    public function getPluginType();

    /**
     * The name of the plugin inferred from the class name
     *
     * @return string  plugin name
     */
    public function getPluginName();

    /**
     * The component part of the plugin inferred from the class name
     *
     * @return string component name
     */
    public function getPluginComponent();

    /**
     * Access plugin language strings
     *
     * to try to minimise unnecessary loading of the strings when the plugin doesn't require them
     * e.g. when info plugin is querying plugins for information about themselves.
     *
     * @param   string $id id of the string to be retrieved
     * @return  string in appropriate language or english if not available
     */
    public function getLang($id);

    /**
     * retrieve a language dependent file and pass to xhtml renderer for display
     * plugin equivalent of p_locale_xhtml()
     *
     * @param   string $id id of language dependent wiki page
     * @return  string parsed contents of the wiki page in xhtml format
     */
    public function locale_xhtml($id);

    /**
     * Prepends appropriate path for a language dependent filename
     * plugin equivalent of localFN()
     *
     * @param string $id id of localization file
     * @param  string $ext The file extension (usually txt)
     * @return string wiki text
     */
    public function localFN($id, $ext = 'txt');

    /**
     * Reads all the plugins language dependent strings into $this->lang
     * this function is automatically called by getLang()
     *
     * @todo this could be made protected and be moved to the trait only
     */
    public function setupLocale();

    /**
     * use this function to access plugin configuration variables
     *
     * @param string $setting the setting to access
     * @param mixed $notset what to return if the setting is not available
     * @return mixed
     */
    public function getConf($setting, $notset = false);

    /**
     * merges the plugin's default settings with any local settings
     * this function is automatically called through getConf()
     *
     * @todo this could be made protected and be moved to the trait only
     */
    public function loadConfig();

    /**
     * Loads a given helper plugin (if enabled)
     *
     * @author  Esther Brunner <wikidesign@gmail.com>
     *
     * @param   string $name name of plugin to load
     * @param   bool $msg if a message should be displayed in case the plugin is not available
     * @return  DokuWiki_PluginInterface|null helper plugin object
     */
    public function loadHelper($name, $msg = true);

    /**
     * email
     * standardised function to generate an email link according to obfuscation settings
     *
     * @param string $email
     * @param string $name
     * @param string $class
     * @param string $more
     * @return string html
     */
    public function email($email, $name = '', $class = '', $more = '');

    /**
     * external_link
     * standardised function to generate an external link according to conf settings
     *
     * @param string $link
     * @param string $title
     * @param string $class
     * @param string $target
     * @param string $more
     * @return string
     */
    public function external_link($link, $title = '', $class = '', $target = '', $more = '');

    /**
     * output text string through the parser, allows dokuwiki markup to be used
     * very ineffecient for small pieces of data - try not to use
     *
     * @param string $text wiki markup to parse
     * @param string $format output format
     * @return null|string
     */
    public function render_text($text, $format = 'xhtml');

    /**
     * Allow the plugin to prevent DokuWiki from reusing an instance
     *
     * @return bool   false if the plugin has to be instantiated
     */
    public function isSingleton();
}