Removed a lot of the warnings generated when PHP has all warnings enabled.
[squirrelmail.git] / functions / plugin.php
1 <?php
2
3 /**
4 ** plugin.php
5 **
6 ** This file provides the framework for a plugin architecture.
7 **
8 ** Plugins will eventually be a way to provide added functionality
9 ** without having to patch the SquirrelMail source code. Have some
10 ** patience, though, as the these funtions might change in the near
11 ** future.
12 **
13 ** Documentation on how to write plugins might show up some time.
14 **
15 ** $Id$
16 **/
17
18
19 $plugin_php = true;
20
21 // This function adds a plugin
22 function use_plugin ($name) {
23 if (file_exists('../plugins/'.$name.'/setup.php')) {
24 include ('../plugins/'.$name.'/setup.php');
25 $function = 'squirrelmail_plugin_init_'.$name;
26 if (function_exists($function))
27 $function();
28 }
29 }
30
31 // This function executes a hook
32 function do_hook ($name) {
33 global $squirrelmail_plugin_hooks;
34 $Data = func_get_args();
35 if (isset($squirrelmail_plugin_hooks[$name]) &&
36 is_array($squirrelmail_plugin_hooks[$name])) {
37 foreach ($squirrelmail_plugin_hooks[$name] as $id => $function) {
38 // Add something to set correct gettext domain for plugin
39 if (function_exists($function)) {
40 $function(&$Data);
41 }
42 }
43 }
44
45 // Variable-length argument lists have a slight problem when
46 // passing values by reference. Pity. This is a workaround.
47 return $Data;
48 }
49
50 // On startup, register all plugins configured for use
51 if (isset($plugins) && is_array($plugins))
52 foreach ($plugins as $id => $name)
53 use_plugin($name);
54
55 ?>