7b086a80 |
1 | <?php |
2 | |
35586184 |
3 | /** |
4 | * plugin.php |
5 | * |
0606ca1f |
6 | * Copyright (c) 1999-2002 The SquirrelMail Project Team |
35586184 |
7 | * Licensed under the GNU GPL. For full terms see the file COPYING. |
8 | * |
9 | * This file provides the framework for a plugin architecture. |
10 | * |
11 | * Documentation on how to write plugins might show up some time. |
12 | * |
13 | * $Id$ |
14 | */ |
15 | |
35586184 |
16 | global $squirrelmail_plugin_hooks; |
0a17ec32 |
17 | $squirrelmail_plugin_hooks = array(); |
2d367c68 |
18 | |
0606ca1f |
19 | /* This function adds a plugin. */ |
20 | function use_plugin ($name) { |
21 | if (file_exists("../plugins/$name/setup.php")) { |
22 | include_once("../plugins/$name/setup.php"); |
23 | $function = "squirrelmail_plugin_init_$name"; |
24 | if (function_exists($function)) { |
25 | $function(); |
2d367c68 |
26 | } |
2d367c68 |
27 | } |
0606ca1f |
28 | } |
2d367c68 |
29 | |
0606ca1f |
30 | /* This function executes a hook. */ |
31524bcd |
31 | function do_hook ($name) { |
0606ca1f |
32 | global $squirrelmail_plugin_hooks; |
33 | $data = func_get_args(); |
2586d588 |
34 | $ret = ''; |
a3439b27 |
35 | |
0606ca1f |
36 | if (isset($squirrelmail_plugin_hooks[$name]) |
37 | && is_array($squirrelmail_plugin_hooks[$name])) { |
38 | foreach ($squirrelmail_plugin_hooks[$name] as $function) { |
39 | /* Add something to set correct gettext domain for plugin. */ |
40 | if (function_exists($function)) { |
31524bcd |
41 | $function($data); |
42 | } |
43 | } |
44 | } |
45 | |
46 | /* Variable-length argument lists have a slight problem when */ |
47 | /* passing values by reference. Pity. This is a workaround. */ |
48 | return $data; |
49 | } |
50 | |
51 | /* This function executes a hook. */ |
52 | function do_hook_function($name,$parm=NULL) { |
53 | global $squirrelmail_plugin_hooks; |
54 | $ret = ''; |
55 | |
56 | if (isset($squirrelmail_plugin_hooks[$name]) |
57 | && is_array($squirrelmail_plugin_hooks[$name])) { |
58 | foreach ($squirrelmail_plugin_hooks[$name] as $function) { |
59 | /* Add something to set correct gettext domain for plugin. */ |
60 | if (function_exists($function)) { |
61 | $ret = $function($parm); |
dd389be5 |
62 | } |
2d367c68 |
63 | } |
2d367c68 |
64 | } |
7b086a80 |
65 | |
0606ca1f |
66 | /* Variable-length argument lists have a slight problem when */ |
67 | /* passing values by reference. Pity. This is a workaround. */ |
2586d588 |
68 | return $ret; |
0606ca1f |
69 | } |
7b086a80 |
70 | |
31524bcd |
71 | |
0606ca1f |
72 | /*************************************/ |
73 | /*** MAIN PLUGIN LOADING CODE HERE ***/ |
74 | /*************************************/ |
75 | |
76 | /* On startup, register all plugins configured for use. */ |
77 | if (isset($plugins) && is_array($plugins)) { |
78 | foreach ($plugins as $name) { |
79 | use_plugin($name); |
2d367c68 |
80 | } |
0606ca1f |
81 | } |
076c01d7 |
82 | |
2e994d27 |
83 | /** |
84 | * This function checks whether the user's USER_AGENT is known to |
85 | * be broken. If so, returns true and the plugin is invisible to the |
86 | * offending browser. |
87 | */ |
88 | function soupNazi(){ |
89 | |
90 | global $HTTP_USER_AGENT, $SQSPELL_SOUP_NAZI; |
91 | |
92 | require_once('../plugins/squirrelspell/sqspell_config.php'); |
93 | |
94 | $soup_menu = explode( ',', $SQSPELL_SOUP_NAZI ); |
95 | return( in_array( trim( $HTTP_USER_AGENT ), $soup_menu ) ); |
96 | } |
97 | |
98 | ?> |