Переглянути джерело

Added basic framework for plugin support. Very little code so far. Two
hooks in page_header.

gustavf 25 роки тому
батько
коміт
83f3c2eaf9
2 змінених файлів з 54 додано та 0 видалено
  1. 8 0
      functions/page_header.php
  2. 46 0
      functions/plugin.php

+ 8 - 0
functions/page_header.php

@@ -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";

+ 46 - 0
functions/plugin.php

@@ -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);
+
+?>