Added basic framework for plugin support. Very little code so far. Two
authorgustavf <gustavf@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Wed, 28 Jun 2000 13:07:00 +0000 (13:07 +0000)
committergustavf <gustavf@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Wed, 28 Jun 2000 13:07:00 +0000 (13:07 +0000)
hooks in page_header.

git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@566 7612ce4b-ef26-0410-bec9-ea0150e637f0

functions/page_header.php
functions/plugin.php [new file with mode: 0644]

index 663c369fd3fc4f16a2a71e8c156ba2624891c143..1af6a86f32de62f0b4baad6b7e156204d13ce1d6 100644 (file)
@@ -14,6 +14,8 @@
       include ("../functions/prefs.php");
    if (!isset($i18n_php))
       include ("../functions/i18n.php");
+   if (!isset($plugin_php))
+      include ("../functions/plugin.php");
 
    // Check to see if gettext is installed
    if (function_exists("_")) {
@@ -48,6 +50,9 @@
                 $theme_css);
         echo "\n";
       }
+      
+      do_hook ("generic_header");
+
       echo "<TITLE>$title</TITLE>";
       echo "</HEAD>\n\n";
    }
@@ -80,6 +85,9 @@
       echo "         <A HREF=\"folders.php\">" . _("Folders") . "</A>&nbsp;&nbsp;\n";
       echo "         <A HREF=\"options.php\">" . _("Options") . "</A>&nbsp;&nbsp;\n";
       echo "         <A HREF=\"webmail.php?right_frame=help.php\" TARGET=\"Help Me!\">" . _("Help") . "</A>&nbsp&nbsp";
+
+      do_hook("menuline");
+
       echo "      </TD><TD ALIGN=right WIDTH=\"30%\">\n";
       echo "         <A HREF=\"http://squirrelmail.sourceforge.net/index.php3?from=1\" TARGET=\"_top\">SquirrelMail</A>\n";
       echo "      </TD>\n";
diff --git a/functions/plugin.php b/functions/plugin.php
new file mode 100644 (file)
index 0000000..c1c4cf2
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/**
+ ** plugin.php
+ **
+ ** This file provides the framework for a plugin architecture.
+ **
+ ** Plugins will eventually be a way to provide added functionality
+ ** without having to patch the SquirrelMail source code. Have some
+ ** patients, though, as the these funtions might change in the near
+ ** future.
+ **
+ ** Documentation on how to write plugins might show up some time.
+ **
+ **/
+
+
+   $plugin_php = true;
+
+   // This function adds a plugin
+   function use_plugin ($name) {
+      include ('../plugins/'.$name.'/setup.php');
+      $function = 'squirrelmail_plugin_init_'.$name;
+      $function();
+   }
+
+   // This function executes a hook
+   function do_hook ($name) {
+      global $squirrelmail_plugin_hooks;
+      if (is_array($squirrelmail_plugin_hooks[$name])) {
+         reset($squirrelmail_plugin_hooks[$name]);
+         
+         while (list ($id, $function) = 
+                each ($squirrelmail_plugin_hooks[$name])) {
+            // Add something to set correct gettext domain for plugin
+            $function();
+         }
+      }
+   }
+
+   // On startup, register all plugins configured for use
+  if (is_array($plugins))
+     while (list ($id, $name) = each ($plugins))
+        use_plugin($name);
+
+?>