[Fusionforge-commits] r11021 - trunk/src/cronjobs/mail

Alain Peyrat aljeux at libremir.placard.fr.eu.org
Fri Oct 15 18:27:16 CEST 2010


Author: aljeux
Date: 2010-10-15 18:27:16 +0200 (Fri, 15 Oct 2010)
New Revision: 11021

Modified:
   trunk/src/cronjobs/mail/mailing_lists_create.php
Log:
mailing-list-create cronjob improved: handle public/private better, password request and future option for updating only

Modified: trunk/src/cronjobs/mail/mailing_lists_create.php
===================================================================
--- trunk/src/cronjobs/mail/mailing_lists_create.php	2010-10-15 16:21:54 UTC (rev 11020)
+++ trunk/src/cronjobs/mail/mailing_lists_create.php	2010-10-15 16:27:16 UTC (rev 11021)
@@ -67,6 +67,7 @@
 	$listpassword = db_result($res,$i,'password');
 	$grouplistid = db_result($res,$i,'group_list_id');
 	$public = db_result($res,$i,'is_public');
+	$status = db_result($res,$i,'status');
 
 	$listname = trim($listname);
 	if (!$listname) {
@@ -78,6 +79,11 @@
 		break;
 	}
 	
+	$is_commits_list = preg_match('/-commits$/', $listname);
+
+	// Hack to Disable auto-public of listname.
+	$is_commits_list = false;
+
 	// Here we assume that the privatize_list.py script is located in the same dir as this script
 	$script_dir = dirname(__FILE__);
 	$privatize_cmd = escapeshellcmd(forge_get_config('mailman_path').'/bin/config_list -i '.$script_dir.'/privatize_list.py '.$listname);
@@ -94,11 +100,30 @@
 echo $err;
 			continue;
 		} else {
-			// Privatize the new list
+			if ($is_commits_list || $public) {
+				// Make the *-commits list public
+				$err .= "Making ".$listname." public: ".$publicize_cmd."\n";
+				passthru($publicize_cmd,$publicizeFailed);
+			} else {
+				// Privatize the new list
+				$err .= "Privatizing ".$listname.": ".$privatize_cmd."\n";
+				passthru($privatize_cmd,$privatizeFailed);
+			}
+		}
+		$mailingListIds[] = $grouplistid;
+	} elseif ($status == MAIL__MAILING_LIST_IS_UPDATED) {
+		// For already created list, update only if status was changed on the forge to
+		// avoid anwanted reset of parameters.
+
+		// Get the mailman info on public/private to change
+		if ($is_commits_list || $public) {
+			$err .= "Making ".$listname." public: ".$publicize_cmd."\n";
+			passthru($publicize_cmd,$publicizeFailed);
+		} elseif (!$public) {
+			// Privatize only if it is marked as private
 			$err .= "Privatizing ".$listname.": ".$privatize_cmd."\n";
 			passthru($privatize_cmd,$privatizeFailed);
 		}
-		$mailingListIds[] = $grouplistid;
 	} elseif ($status == MAIL__MAILING_LIST_PW_RESET_REQUESTED) {
 		$change_pw_cmd = escapeshellcmd(forge_get_config ('mailman_path').'/bin/change_pw -l '.$listname);
 		$err .= "Resetting password of ".$listname."\n";
@@ -140,13 +165,10 @@
 	fwrite($h1,$list_str);
 }
 
-// Update status
-//if(!empty($mailingListIds)) {
 db_query_params ('UPDATE mail_group_list set status=$1 WHERE status=$2',
 		 array (MAIL__MAILING_LIST_IS_CREATED,
 			MAIL__MAILING_LIST_IS_REQUESTED));
 echo db_error();
-//}
 
 fclose($h1);
 




More information about the Fusionforge-commits mailing list