From 07405653f111c4eb8fd1c83d45e66287807036d7 Mon Sep 17 00:00:00 2001
From: horfic <horfic@ispconfig3>
Date: Thu, 06 Jan 2011 04:26:51 -0500
Subject: [PATCH] *) Added Mailman integration

---
 server/mods-available/mail_module.inc.php |  313 ++++++++++++++++++++++++++-------------------------
 1 files changed, 161 insertions(+), 152 deletions(-)

diff --git a/server/mods-available/mail_module.inc.php b/server/mods-available/mail_module.inc.php
index 2d9df3a..1b7f957 100644
--- a/server/mods-available/mail_module.inc.php
+++ b/server/mods-available/mail_module.inc.php
@@ -1,153 +1,162 @@
-<?php
-
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-class mail_module {
-	
-	var $module_name = 'mail_module';
-	var $class_name = 'mail_module';
-	var $actions_available = array(	'mail_domain_insert',
-									'mail_domain_update',
-									'mail_domain_delete',
-									'mail_user_insert',
-									'mail_user_update',
-									'mail_user_delete',
-									'mail_access_insert',
-									'mail_access_update',
-									'mail_access_delete',
-									'mail_forwarding_insert',
-									'mail_forwarding_update',
-									'mail_forwarding_delete',
-									'mail_transport_insert',
-									'mail_transport_update',
-									'mail_transport_delete',
-									'mail_get_insert',
-									'mail_get_update',
-									'mail_get_delete',
-									'mail_content_filter_insert',
-									'mail_content_filter_update',
-									'mail_content_filter_delete');
-	
-	//* This function is called during ispconfig installation to determine
-	//  if a symlink shall be created for this plugin.
-	function onInstall() {
-		global $conf;
-		
-		if($conf['services']['mail'] == true) {
-			return true;
-		} else {
-			return false;
-		}
-		
-	}
-	
-	/*
-	 	This function is called when the module is loaded
-	*/
-	
-	function onLoad() {
-		global $app;
-		
-		/*
-		Annonce the actions that where provided by this module, so plugins 
-		can register on them.
-		*/
-		
-		$app->plugins->announceEvents($this->module_name,$this->actions_available);
-		
-		/*
-		As we want to get notified of any changes on several database tables,
-		we register for them.
-		
-		The following function registers the function "functionname"
- 		to be executed when a record for the table "dbtable" is 
- 		processed in the sys_datalog. "classname" is the name of the
- 		class that contains the function functionname.
-		*/
-		
-		$app->modules->registerTableHook('mail_access','mail_module','process');
-		$app->modules->registerTableHook('mail_domain','mail_module','process');
-		$app->modules->registerTableHook('mail_forwarding','mail_module','process');
-		$app->modules->registerTableHook('mail_transport','mail_module','process');
-		$app->modules->registerTableHook('mail_user','mail_module','process');
-		$app->modules->registerTableHook('mail_get','mail_module','process');
-		$app->modules->registerTableHook('mail_content_filter','mail_module','process');
-		
-	}
-	
-	/*
-	 This function is called when a change in one of the registered tables is detected.
-	 The function then raises the events for the plugins.
-	*/
-
-	function process($tablename,$action,$data) {
-		global $app;
-		
-		switch ($tablename) {
-			case 'mail_access':
-				if($action == 'i') $app->plugins->raiseEvent('mail_access_insert',$data);
-				if($action == 'u') $app->plugins->raiseEvent('mail_access_update',$data);
-				if($action == 'd') $app->plugins->raiseEvent('mail_access_delete',$data);
-			break;
-			case 'mail_domain':
-				if($action == 'i') $app->plugins->raiseEvent('mail_domain_insert',$data);
-				if($action == 'u') $app->plugins->raiseEvent('mail_domain_update',$data);
-				if($action == 'd') $app->plugins->raiseEvent('mail_domain_delete',$data);
-			break;
-			case 'mail_forwarding':
-				if($action == 'i') $app->plugins->raiseEvent('mail_forwarding_insert',$data);
-				if($action == 'u') $app->plugins->raiseEvent('mail_forwarding_update',$data);
-				if($action == 'd') $app->plugins->raiseEvent('mail_forwarding_delete',$data);
-			break;
-			case 'mail_transport':
-				if($action == 'i') $app->plugins->raiseEvent('mail_transport_insert',$data);
-				if($action == 'u') $app->plugins->raiseEvent('mail_transport_update',$data);
-				if($action == 'd') $app->plugins->raiseEvent('mail_transport_delete',$data);
-			break;
-			case 'mail_user':
-				if($action == 'i') $app->plugins->raiseEvent('mail_user_insert',$data);
-				if($action == 'u') $app->plugins->raiseEvent('mail_user_update',$data);
-				if($action == 'd') $app->plugins->raiseEvent('mail_user_delete',$data);
-			break;
-			case 'mail_get':
-				if($action == 'i') $app->plugins->raiseEvent('mail_get_insert',$data);
-				if($action == 'u') $app->plugins->raiseEvent('mail_get_update',$data);
-				if($action == 'd') $app->plugins->raiseEvent('mail_get_delete',$data);
-			break;
-			case 'mail_content_filter':
-				if($action == 'i') $app->plugins->raiseEvent('mail_content_filter_insert',$data);
-				if($action == 'u') $app->plugins->raiseEvent('mail_content_filter_update',$data);
-				if($action == 'd') $app->plugins->raiseEvent('mail_content_filter_delete',$data);
-			break;
-		} // end switch
-	} // end function
-
-} // end class
-
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+class mail_module {
+	
+	var $module_name = 'mail_module';
+	var $class_name = 'mail_module';
+	var $actions_available = array(	'mail_domain_insert',
+									'mail_domain_update',
+									'mail_domain_delete',
+									'mail_user_insert',
+									'mail_user_update',
+									'mail_user_delete',
+									'mail_access_insert',
+									'mail_access_update',
+									'mail_access_delete',
+									'mail_forwarding_insert',
+									'mail_forwarding_update',
+									'mail_forwarding_delete',
+									'mail_transport_insert',
+									'mail_transport_update',
+									'mail_transport_delete',
+									'mail_get_insert',
+									'mail_get_update',
+									'mail_get_delete',
+									'mail_content_filter_insert',
+									'mail_content_filter_update',
+									'mail_content_filter_delete',
+									'mail_mailinglist_insert',
+									'mail_mailinglist_update',
+									'mail_mailinglist_delete');
+	
+	//* This function is called during ispconfig installation to determine
+	//  if a symlink shall be created for this plugin.
+	function onInstall() {
+		global $conf;
+		
+		if($conf['services']['mail'] == true) {
+			return true;
+		} else {
+			return false;
+		}
+		
+	}
+	
+	/*
+	 	This function is called when the module is loaded
+	*/
+	
+	function onLoad() {
+		global $app;
+		
+		/*
+		Annonce the actions that where provided by this module, so plugins 
+		can register on them.
+		*/
+		
+		$app->plugins->announceEvents($this->module_name,$this->actions_available);
+		
+		/*
+		As we want to get notified of any changes on several database tables,
+		we register for them.
+		
+		The following function registers the function "functionname"
+ 		to be executed when a record for the table "dbtable" is 
+ 		processed in the sys_datalog. "classname" is the name of the
+ 		class that contains the function functionname.
+		*/
+		
+		$app->modules->registerTableHook('mail_access','mail_module','process');
+		$app->modules->registerTableHook('mail_domain','mail_module','process');
+		$app->modules->registerTableHook('mail_forwarding','mail_module','process');
+		$app->modules->registerTableHook('mail_transport','mail_module','process');
+		$app->modules->registerTableHook('mail_user','mail_module','process');
+		$app->modules->registerTableHook('mail_get','mail_module','process');
+		$app->modules->registerTableHook('mail_content_filter','mail_module','process');
+		$app->modules->registerTableHook('mail_mailinglist','mail_module','process');
+		
+	}
+	
+	/*
+	 This function is called when a change in one of the registered tables is detected.
+	 The function then raises the events for the plugins.
+	*/
+
+	function process($tablename,$action,$data) {
+		global $app;
+		
+		switch ($tablename) {
+			case 'mail_access':
+				if($action == 'i') $app->plugins->raiseEvent('mail_access_insert',$data);
+				if($action == 'u') $app->plugins->raiseEvent('mail_access_update',$data);
+				if($action == 'd') $app->plugins->raiseEvent('mail_access_delete',$data);
+			break;
+			case 'mail_domain':
+				if($action == 'i') $app->plugins->raiseEvent('mail_domain_insert',$data);
+				if($action == 'u') $app->plugins->raiseEvent('mail_domain_update',$data);
+				if($action == 'd') $app->plugins->raiseEvent('mail_domain_delete',$data);
+			break;
+			case 'mail_forwarding':
+				if($action == 'i') $app->plugins->raiseEvent('mail_forwarding_insert',$data);
+				if($action == 'u') $app->plugins->raiseEvent('mail_forwarding_update',$data);
+				if($action == 'd') $app->plugins->raiseEvent('mail_forwarding_delete',$data);
+			break;
+			case 'mail_transport':
+				if($action == 'i') $app->plugins->raiseEvent('mail_transport_insert',$data);
+				if($action == 'u') $app->plugins->raiseEvent('mail_transport_update',$data);
+				if($action == 'd') $app->plugins->raiseEvent('mail_transport_delete',$data);
+			break;
+			case 'mail_user':
+				if($action == 'i') $app->plugins->raiseEvent('mail_user_insert',$data);
+				if($action == 'u') $app->plugins->raiseEvent('mail_user_update',$data);
+				if($action == 'd') $app->plugins->raiseEvent('mail_user_delete',$data);
+			break;
+			case 'mail_get':
+				if($action == 'i') $app->plugins->raiseEvent('mail_get_insert',$data);
+				if($action == 'u') $app->plugins->raiseEvent('mail_get_update',$data);
+				if($action == 'd') $app->plugins->raiseEvent('mail_get_delete',$data);
+			break;
+			case 'mail_content_filter':
+				if($action == 'i') $app->plugins->raiseEvent('mail_content_filter_insert',$data);
+				if($action == 'u') $app->plugins->raiseEvent('mail_content_filter_update',$data);
+				if($action == 'd') $app->plugins->raiseEvent('mail_content_filter_delete',$data);
+			break;
+			case 'mail_mailinglist':
+				if($action == 'i') $app->plugins->raiseEvent('mail_mailinglist_insert',$data);
+				if($action == 'u') $app->plugins->raiseEvent('mail_mailinglist_update',$data);
+				if($action == 'd') $app->plugins->raiseEvent('mail_mailinglist_delete',$data);
+			break;
+		} // end switch
+	} // end function
+
+} // end class
+
 ?>
\ No newline at end of file

--
Gitblit v1.9.1