+$Id$
+
+It is best if you check out the SquirrelMail development FAQ for more
+information. This document may be obsoleted at some point in the future (or
+maybe we'll write a script to get the wiki contents and dump them in here
+automatically).
+
+FAQ -> http://www.squirrelmail.org/wiki/wiki.php?DeveloperFAQ
+Plugin Hooks -> http://www.squirrelmail.org/wiki/wiki.php?DevelopingPlugins
+
+
A FEW NOTES ON THE PLUGIN ARCHITECTURE
======================================
compose_button_row src/compose.php
compose_bottom src/compose.php
compose_form src/compose.php
+ compose_send src/compose.php
left_main_before src/left_main.php
left_main_after src/left_main.php
* options_save src/options.php (see note on options)
* options_folders_bottom src/options_folders.php
* options_folders_inside src/options_folders.php
* options_folders_save src/options_folders.php
+ & options_identities_process src/options_identities.php
+ & options_identities_top src/options_identities.php
+ & options_identities_renumber src/options_identities.php (multiple places)
+ & options_identities_table src/options_identities.php
+ & options_identities_buttons src/options_identities.php
logout src/signout.php
+ logout_above_text src/signout.php
login_before src/webmail.php
login_verified src/webmail.php
loading_prefs src/load_prefs.php
mailbox_index_after functions/mailbox_display.php
mailbox_form_before functions/mailbox_display.php
subject_link functions/mailbox_display.php
+ motd src/right_main.php
right_main_after_header src/right_main.php
right_main_bottom src/right_main.php
login_top src/login.php
read_body_bottom src/read_body.php
html_bottom src/read_body.php
read_body_header src/read_body.php
+ read_body_header_right src/read_body.php
search_before_form src/search.php
search_after_form src/search.php
search_bottom src/search.php
1. options_link_and_description
This creates the link and has a description that are shown on the options
- page. This should output HTML that looks like this:
+ page. This should output HTML that looks like this. Make sure to read
+ the section on outputting your own pages.
-----cut here-----
- function my_function() {
+ function my_plugin_name_my_function() {
global $color
?>
<table width=50% cellpadding=3 cellspacing=0 border=0 align=center>
src/load_prefs.php
+(&) Identity Hooks
+------------------
+Some hooks are passed special information in the array of arguments. See
+the SpamCop plugin for how to use them.
+
+options_identities_process
+ [0] = Hook's name
+ [1] = Should I run the SaveUpdateFunction() (alterable)
+
+options_identities_renumber
+ [0] = Hook's name
+ [1] = Renumber it from ('default' or 1 through # idents - 1)
+ [2] = Renumber it to (same thing)
+
+options_identities_table
+ [0] = Hook's name
+ [1] = Color of table (use it like <tr<?PHP echo $Info[1]?>> in your
+ plugin)
+ [2] = Is this an empty section?
+ [3] = What is the 'post' value?
+
+options_identities_buttons
+ [0] = Hook's name
+ [1] = Is this an empty section (the one at the end of the list)?
+ [2] = What is the 'post' value?
+
+
(^) Attachment Hooks
--------------------
When a message has attachments, this hook is called with the MIME types. For
$Args[1]['your_plugin_name']['href'] = 'URL to link to';
$Args[1]['your_plugin_name']['text'] = 'What to display';
+
+Outputting Your Own Pages
+-------------------------
+
+Often, when you want to provide your own customized options screen or create
+another web page instead of just using standard hooks, you will be creating
+your own .php files. An example of this is the attachment_common plugin's
+image.php file.
+
+To make sure that security is maintained and standards are followed, the top
+of your PHP script should look very similar to this:
+
+ <?PHP
+ /* This is my php file.
+ * description goes here.
+ */
+
+ chdir('..');
+ include('../src/validate.php');
+
+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
+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
+mention that it requires SquirrelMail 1.1.1 or later.
+
+After that, if you need further functions, just use
+
+ include('../functions/filename.php');
+
+in your script. Since 1.0.5, it was no longer necessary (nor recommended)
+to use the "if (! isset($filename_php))" syntax.