X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=doc%2Fplugin.txt;h=a05a67096ae76fb64d8a11144f909834456c1ad1;hb=35b5fa1362017c76255ea8a99222818d7caec5a3;hp=1e619385a8ba1d8479a12e0a751c1b3aedeb6b6d;hpb=99098885816dd4f87294f9e96783332f262addc2;p=squirrelmail.git diff --git a/doc/plugin.txt b/doc/plugin.txt index 1e619385..a05a6709 100644 --- a/doc/plugin.txt +++ b/doc/plugin.txt @@ -12,16 +12,10 @@ Plugin Hooks -> http://www.squirrelmail.org/wiki/wiki.php?DevelopingPlugins A FEW NOTES ON THE PLUGIN ARCHITECTURE ====================================== -The plugin architecture of SquirrelMail is designed to make it -possible to add new features without having to patch SquirrelMail -itself. At the moment the plugin part of SquirrelMail should be -considered "alpha" or "beta" quality code. - -Until the functionality and code is more stable, be prepared for -plugins to suddenly stop working. - -Functionality like password changing, displaying ads and calendars -should be possible to add as plugins. +The plugin architecture of SquirrelMail is designed to make it possible to +add new features without having to patch SquirrelMail itself. Functionality +like password changing, displaying ads and calendars should be possible to +add as plugins. The idea @@ -45,9 +39,9 @@ The implementation In the main SquirrelMail files the file functions/plugin.php. In places where hooks are made available they are executed by calling the -function do_hook("hookname"). +function do_hook('hookname'). -The do_hook traverses the array $squirrelmail_plugin_hooks["hookname"] +The do_hook traverses the array $squirrelmail_plugin_hooks['hookname'] and executes all the functions that are named in that array. A plugin must reside in a subdirectory in the plugins/ directory. The @@ -56,7 +50,7 @@ name of the subdirectory is considered the name of the plugin. To start using a plugin, its name must be added to the $plugins array in config.php like this: - $plugins[0] = "plugin_name"; + $plugins[0] = 'plugin_name'; When a plugin is registered the file plugins/plugin_name/setup.php is included and the function squirrelmail_plugin_init_plugin_name is @@ -75,13 +69,13 @@ initalize a plugin. This function could look something like this: function squirrelmail_plugin_init_demo () { global $squirrelmail_plugin_hooks; - $squirrelmail_plugin_hooks["generic_header"]["demo"] = "plugin_demo_header"; - $squirrelmail_plugin_hooks["menuline"]["demo"] = "plugin_demo_menuline"; + $squirrelmail_plugin_hooks['generic_header']['demo'] = 'plugin_demo_header'; + $squirrelmail_plugin_hooks['menuline']['demo'] = 'plugin_demo_menuline'; } Note that the SquirrelMail files assume that all other SquirrelMail files are available as ../directory/file. This means that if some file -in the plugin directory is requested, it must do a chdir("..") before +in the plugin directory is requested, it must do a chdir('..') before including any of the standard SquirrelMail files. @@ -143,6 +137,7 @@ List of hooks html_bottom src/read_body.php read_body_header src/read_body.php read_body_header_right src/read_body.php + read_body_after_from src/read_body.php search_before_form src/search.php search_after_form src/search.php search_bottom src/search.php @@ -153,7 +148,6 @@ List of hooks addressbook_bottom src/addressbook.php ^ attachment $type0/$type1 functions/mime.php (see note on attachments) - (*) Options ----------- There are two ways to do options for your plugin. First, you can incorporate it @@ -191,9 +185,9 @@ It is possible to create your own options sections with plugins. There are three hooks you will need to use. 1. options_link_and_description - This creates the link and has a description that are shown on the options + This creates the link and has a description that is shown on the options page. This should output HTML that looks like this. Make sure to read - the section on outputting your own pages. + the section on outputing your own pages. -----cut here----- function my_plugin_name_my_function() { @@ -201,12 +195,12 @@ three hooks you will need to use. ?> - - @@ -283,6 +277,10 @@ To set up links for actions, you assign them like this: $Args[1]['your_plugin_name']['href'] = 'URL to link to'; $Args[1]['your_plugin_name']['text'] = 'What to display'; +It's also possible to specify a hook as "attachment type0/*", +for example "attachment text/*". This hook will be executed whenever there's +no more specific rule available for that type. + Outputting Your Own Pages ------------------------- @@ -305,7 +303,7 @@ of your PHP script should look very similar to this: The validate.php script will include internationalization support, config.php variables, strings.php functions, and also authenticate that the -user is truly logged in. Validate.php also calls stripslashes() on incoming +user is truly logged in. validate.php also calls stripslashes() on incoming data (if gpc_magic_quotes() is on). You should never need to worry about that stuff again. As a warning, this has only really been ironed out in 1.1.1. If you create/modify a plugin to follow these rules, you must
+ YOUR OPTIONS NAME
+ YOUR DESCRIPTION