From d1851ba77b26683b3b3ada4e08127794519d3eb6 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Tue, 06 Apr 2010 02:40:45 -0400
Subject: [PATCH] Configurable limit of address group members
---
program/steps/addressbook/groups.inc | 7 ++++++-
program/localization/de_CH/messages.inc | 2 ++
program/localization/en_US/messages.inc | 3 ++-
config/main.inc.php.dist | 4 ++++
4 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist
index 6be1f1e..6d12e60 100644
--- a/config/main.inc.php.dist
+++ b/config/main.inc.php.dist
@@ -183,6 +183,10 @@
// Maximum number of recipients per message. Default: 0 (no limit)
$rcmail_config['max_recipients'] = 0;
+// Maximum allowednumber of members of an address group. Default: 0 (no limit)
+// If 'max_recipients' is set this value should be less or equal
+$rcmail_config['max_group_members'] = 0;
+
// add this user-agent to message headers when sending
$rcmail_config['useragent'] = 'RoundCube Webmail/'.RCMAIL_VERSION;
diff --git a/program/localization/de_CH/messages.inc b/program/localization/de_CH/messages.inc
index be61cc7..e0ca1c9 100644
--- a/program/localization/de_CH/messages.inc
+++ b/program/localization/de_CH/messages.inc
@@ -109,5 +109,7 @@
$messages['smtprecipientserror'] = 'SMTP Fehler: Die Empfängerliste konnte nicht verarbeitet werden';
$messages['smtperror'] = 'SMTP Fehler: $msg';
$messages['emailformaterror'] = 'Ungültige E-Mail-Adresse: $email';
+$messages['toomanyrecipients'] = 'Zuviele Empfänger angegeben. Reduzieren Sie die Empfängeradressen auf $max.';
+$messages['maxgroupmembersreached'] = 'Die Anzahl Adressen in dieser Gruppe überschreitet das Maximum von $max';
?>
diff --git a/program/localization/en_US/messages.inc b/program/localization/en_US/messages.inc
index 1dfdb96..8822f30 100644
--- a/program/localization/en_US/messages.inc
+++ b/program/localization/en_US/messages.inc
@@ -110,7 +110,8 @@
$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to"';
$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list';
$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'Incorrect e-mail address: $email';
+$messages['emailformaterror'] = 'Invalid e-mail address: $email';
$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
+$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max';
?>
diff --git a/program/steps/addressbook/groups.inc b/program/steps/addressbook/groups.inc
index df44703..eda258c 100644
--- a/program/steps/addressbook/groups.inc
+++ b/program/steps/addressbook/groups.inc
@@ -31,7 +31,12 @@
if (($gid = get_input_value('_gid', RCUBE_INPUT_POST)) && ($ids = get_input_value('_cid', RCUBE_INPUT_POST))) {
$plugin = $RCMAIL->plugins->exec_hook('group_addmembers', array('group_id' => $gid, 'ids' => $ids, 'source' => $source));
- if (!$plugin['abort'] && $CONTACTS->add_to_group($gid, $plugin['ids']))
+ $CONTACTS->set_group($gid);
+ $num2add = count(explode(',', $plugin['ids']));
+
+ if (!$plugin['abort'] && ($maxnum = $RCMAIL->config->get('max_group_members', 0)) && ($CONTACTS->count()->count + $num2add > $maxnum))
+ $OUTPUT->show_message('maxgroupmembersreached', 'warning', array('max' => $maxnum));
+ else if (!$plugin['abort'] && $CONTACTS->add_to_group($gid, $plugin['ids']))
$OUTPUT->show_message('contactaddedtogroup');
else if ($plugin['message'])
$OUTPUT->show_message($plugin['message'], 'warning');
--
Gitblit v1.9.1