From 3c3d844130f0c1cb477c88db1756509246752d0d Mon Sep 17 00:00:00 2001 From: Jan-Frederik Rieckers Date: Sat, 11 Feb 2017 23:16:43 +0100 Subject: [PATCH 1/8] Improve the broadcast message tool * Make it possible by config option that non global admins can send broadcast messages to their domains. * Allow the sender to select the domains the broadcast message should be delivered to * Allow the sender to decide if the broadcast message should just be delivered to mailboxes --- broadcast-message.php | 43 ++++++++++++++++++++++++--------- config.inc.php | 3 +++ languages/en.lang | 2 ++ templates/broadcast-message.tpl | 12 +++++++++ templates/menu.tpl | 2 +- 5 files changed, 50 insertions(+), 12 deletions(-) diff --git a/broadcast-message.php b/broadcast-message.php index 5b10e918..43639c8a 100644 --- a/broadcast-message.php +++ b/broadcast-message.php @@ -27,7 +27,11 @@ require_once('common.php'); -authentication_require_role('global-admin'); +if ($CONF['sendmail_only_global_admin'] == 'YES' ) { + authentication_require_role('global-admin'); +} else { + authentication_require_role('admin'); +} if ($CONF['sendmail'] != 'YES') { header("Location: main.php"); @@ -35,6 +39,7 @@ if ($CONF['sendmail'] != 'YES') { } $smtp_from_email = smtp_get_admin_email(); +$allowed_domains = list_domains_for_admin(authentication_get_username()); if ($_SERVER['REQUEST_METHOD'] == "POST") { @@ -47,23 +52,38 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") } else { + $wanted_domains = array_intersect($allowed_domains, $_POST['domains']); + $table_mailbox = table_by_key('mailbox'); - $table_alias = table_by_key('alias'); - - $q = "select username from $table_mailbox union select goto from $table_alias " . - "where goto not in (select username from $table_mailbox)"; - - $result = db_query ($q); - if ($result['rows'] > 0) - { + $table_alias = table_by_key('alias'); + + $recipients = []; + + foreach( $wanted_domains as $domain) { + $q = "SELECT username from $table_mailbox WHERE domain = '$domain'"; + if(!isset($_POST['mailboxes_only']) || $_POST['mailboxes_only'] != "on") { + $q .= " UNION SELECT GOTO FROM $table_alias WHERE domain = '$domain' " . + " AND goto NOT IN ($q)"; + } + $result = db_query ($q); + if($result['rows'] > 0) { + while($row = db_array($result['result'])) { + $recipients[] = $row[0]; + } + } + } + + $recipients = array_unique($recipients); + + if(count($recipients)>0) { mb_internal_encoding("UTF-8"); $b_name = mb_encode_mimeheader( $_POST['name'], 'UTF-8', 'Q'); $b_subject = mb_encode_mimeheader( $_POST['subject'], 'UTF-8', 'Q'); $b_message = base64_encode($_POST['message']); $i = 0; - while ($row = db_array ($result['result'])) { - $fTo = $row[0]; + foreach ($recipients as $rcpt) { + $fTo = $rcpt; $fHeaders = 'To: ' . $fTo . "\n"; $fHeaders .= 'From: ' . $b_name . ' <' . $smtp_from_email . ">\n"; $fHeaders .= 'Subject: ' . $b_subject . "\n"; @@ -92,6 +112,7 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") if ($_SERVER['REQUEST_METHOD'] == "GET" || $error == 1) { + $smarty->assign ('allowed_domains', $allowed_domains); $smarty->assign ('smtp_from_email', $smtp_from_email); $smarty->assign ('error', $error); $smarty->assign ('smarty_template', 'broadcast-message'); diff --git a/config.inc.php b/config.inc.php index 263654e9..359dd302 100644 --- a/config.inc.php +++ b/config.inc.php @@ -396,6 +396,9 @@ $CONF['backup'] = 'NO'; // Send Mail // If you don't want sendmail tab set this to 'NO'; $CONF['sendmail'] = 'YES'; +// Set this to NO if you want to allow non-super-admins to +// send mails to their users +$CONF['sendmail_only_global_admin'] = 'YES'; // Logging // If you don't want logging set this to 'NO'; diff --git a/languages/en.lang b/languages/en.lang index 190a59c6..84225d15 100644 --- a/languages/en.lang +++ b/languages/en.lang @@ -331,6 +331,8 @@ $PALANG['pBroadcast_name'] = 'Your name'; $PALANG['pBroadcast_success'] = 'Your broadcast message was sent.'; $PALANG['pAdminMenu_broadcast_message'] = 'Broadcast message'; $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message shouldn\'t be empty!'; +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; +$PALANG['broadcast_to_domains'] = 'Send to domains:'; $PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; $PALANG['pStatus_custom'] = 'Delivers to '; diff --git a/templates/broadcast-message.tpl b/templates/broadcast-message.tpl index 68eeeb29..373f7075 100644 --- a/templates/broadcast-message.tpl +++ b/templates/broadcast-message.tpl @@ -21,6 +21,18 @@ + + + + + + + + + +   diff --git a/templates/menu.tpl b/templates/menu.tpl index 18346f26..4cc754b7 100644 --- a/templates/menu.tpl +++ b/templates/menu.tpl @@ -62,7 +62,7 @@
  • {$PALANG.pMenu_sendmail} From eb871de9162fe1f0a0aba6b0bcbee814b139c907 Mon Sep 17 00:00:00 2001 From: Jan-Frederik Rieckers Date: Sat, 11 Feb 2017 23:49:23 +0100 Subject: [PATCH 2/8] Add new broadcst message language keys --- languages/bg.lang | 2 ++ languages/ca.lang | 2 ++ languages/cn.lang | 2 ++ languages/cs.lang | 3 ++- languages/da.lang | 2 ++ languages/de.lang | 2 ++ languages/es.lang | 2 ++ languages/et.lang | 2 ++ languages/eu.lang | 2 ++ languages/fi.lang | 2 ++ languages/fo.lang | 2 ++ languages/fr.lang | 2 ++ languages/hr.lang | 2 ++ languages/hu.lang | 2 ++ languages/is.lang | 2 ++ languages/it.lang | 2 ++ languages/ja.lang | 2 ++ languages/lt.lang | 2 ++ languages/mk.lang | 2 ++ languages/nb.lang | 2 ++ languages/nl.lang | 2 ++ languages/nn.lang | 2 ++ languages/pl.lang | 2 ++ languages/pt-br.lang | 2 ++ languages/ro.lang | 2 ++ languages/ru.lang | 2 ++ languages/sk.lang | 2 ++ languages/sl.lang | 2 ++ languages/sv.lang | 2 ++ languages/tr.lang | 2 ++ languages/tw.lang | 2 ++ 31 files changed, 62 insertions(+), 1 deletion(-) diff --git a/languages/bg.lang b/languages/bg.lang index 00eb4b1b..90ce6f51 100644 --- a/languages/bg.lang +++ b/languages/bg.lang @@ -323,6 +323,8 @@ $PALANG['pBroadcast_name'] = 'Име'; $PALANG['pBroadcast_success'] = 'Вашето съобщение беше изпратено.'; $PALANG['pAdminMenu_broadcast_message'] = 'Съобщение до всички'; $PALANG['pBroadcast_error_empty'] = 'Полетата Име, Заглавие и Съобщение са задължителни!'; +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX $PALANG['pStatus_custom'] = 'Delivers to '; # XXX $PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX diff --git a/languages/ca.lang b/languages/ca.lang index d389a177..8addce90 100644 --- a/languages/ca.lang +++ b/languages/ca.lang @@ -322,6 +322,8 @@ $PALANG['pBroadcast_name'] = 'Your name'; # XXX $PALANG['pBroadcast_success'] = 'Your broadcast message was sent.'; # XXX $PALANG['pAdminMenu_broadcast_message'] = 'Broadcast message'; # XXX $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message shouldn\'t be empty!'; # XXX +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX $PALANG['pStatus_custom'] = 'Delivers to '; # XXX $PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX diff --git a/languages/cn.lang b/languages/cn.lang index 922ec76c..43c725a9 100644 --- a/languages/cn.lang +++ b/languages/cn.lang @@ -322,6 +322,8 @@ $PALANG['pBroadcast_name'] = 'Your name'; # XXX $PALANG['pBroadcast_success'] = 'Your broadcast message was sent.'; # XXX $PALANG['pAdminMenu_broadcast_message'] = 'Broadcast message'; # XXX $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message shouldn\'t be empty!'; # XXX +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX $PALANG['pStatus_custom'] = 'Delivers to '; # XXX $PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX diff --git a/languages/cs.lang b/languages/cs.lang index 43203165..618b8a31 100644 --- a/languages/cs.lang +++ b/languages/cs.lang @@ -334,7 +334,8 @@ $PALANG['pBroadcast_name'] = 'Vaše jméno'; $PALANG['pBroadcast_success'] = 'Zpráva pro všechny schránky byla odeslána.'; $PALANG['pAdminMenu_broadcast_message'] = 'Poslat email všem'; $PALANG['pBroadcast_error_empty'] = 'Pole Od, Předmět a Zpráva by neměly být prázdné !'; - +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'možná NEDORUČITELNÉ '; $PALANG['pStatus_custom'] = 'Doručeno do '; $PALANG['pStatus_popimap'] = 'POP/IMAP '; diff --git a/languages/da.lang b/languages/da.lang index 53334fb7..e54bb414 100644 --- a/languages/da.lang +++ b/languages/da.lang @@ -333,6 +333,8 @@ $PALANG['pBroadcast_name'] = 'Dit navn'; $PALANG['pBroadcast_success'] = 'Din meddelelse er rundsendt.'; $PALANG['pAdminMenu_broadcast_message'] = 'Rundsend meddelse'; $PALANG['pBroadcast_error_empty'] = 'Felterne "Dit navn", "Emne" og "Meddelelse" skal alle udfyldes.'; +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'kan måske ikke leveres '; $PALANG['pStatus_custom'] = 'Leveres til '; diff --git a/languages/de.lang b/languages/de.lang index 7ff37496..3bcaee56 100644 --- a/languages/de.lang +++ b/languages/de.lang @@ -331,6 +331,8 @@ $PALANG['pBroadcast_name'] = 'Ihr Name'; $PALANG['pBroadcast_success'] = 'Ihre Rundmail wurde gesendet.'; $PALANG['pAdminMenu_broadcast_message'] = 'Rundmail'; $PALANG['pBroadcast_error_empty'] = 'Die Felder Name, Betreff und Nachricht dürfen nicht leer sein!'; +$PALANG['broadcst_mailboxes_only'] = "Nur an Postfächer senden"; +$PALANG['broadcst_to_domains'] = "Senden an Domains:"; $PALANG['pStatus_undeliverable'] = 'möglicherweise UNZUSTELLBAR '; $PALANG['pStatus_custom'] = 'Zustellung an '; diff --git a/languages/es.lang b/languages/es.lang index ca689da4..09dc826d 100644 --- a/languages/es.lang +++ b/languages/es.lang @@ -324,6 +324,8 @@ $PALANG['pBroadcast_name'] = 'Tu nombre'; $PALANG['pBroadcast_success'] = 'Se ha enviado el mensaje.'; $PALANG['pAdminMenu_broadcast_message'] = 'Broadcast message'; # XXX $PALANG['pBroadcast_error_empty'] = '¡Los campos Nombre, Asunto y Mensaje no pueden estar vacíos!'; +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'posiblemente NO SE ENTREGÓ'; $PALANG['pStatus_custom'] = 'Enviado a '; $PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX diff --git a/languages/et.lang b/languages/et.lang index 9642aa0d..d3002e68 100644 --- a/languages/et.lang +++ b/languages/et.lang @@ -326,6 +326,8 @@ $PALANG['pBroadcast_success'] = 'Your broadcast message was sent.'; # XXX $PALANG['pAdminMenu_broadcast_message'] = 'Broadcast message'; # XXX $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message shouldn\'t be empty!'; # XXX +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX $PALANG['pStatus_custom'] = 'Delivers to '; # XXX $PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX diff --git a/languages/eu.lang b/languages/eu.lang index becf1011..95b4c6c1 100644 --- a/languages/eu.lang +++ b/languages/eu.lang @@ -321,6 +321,8 @@ $PALANG['pBroadcast_name'] = 'Your name'; # XXX $PALANG['pBroadcast_success'] = 'Your broadcast message was sent.'; # XXX $PALANG['pAdminMenu_broadcast_message'] = 'Broadcast message'; # XXX $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message shouldn\'t be empty!'; # XXX +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX $PALANG['pStatus_custom'] = 'Delivers to '; # XXX $PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX diff --git a/languages/fi.lang b/languages/fi.lang index ab8c00bf..eae5061b 100644 --- a/languages/fi.lang +++ b/languages/fi.lang @@ -322,6 +322,8 @@ $PALANG['pBroadcast_name'] = 'Nimesi'; $PALANG['pBroadcast_success'] = 'Tiedostusviestisi on lähetetty.'; $PALANG['pAdminMenu_broadcast_message'] = 'Tiedotusviesti'; $PALANG['pBroadcast_error_empty'] = 'Nimi, Aihe tai Viesti kenttien ei pidä olla tyhjiä!'; +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'ehkä ei voida toimittaa '; $PALANG['pStatus_custom'] = 'Toimittaa osoiteeseen '; $PALANG['pStatus_popimap'] = 'POP/IMAP '; diff --git a/languages/fo.lang b/languages/fo.lang index c1fb8e1c..2e30c44f 100644 --- a/languages/fo.lang +++ b/languages/fo.lang @@ -327,6 +327,8 @@ $PALANG['pBroadcast_name'] = 'Your name'; # XXX $PALANG['pBroadcast_success'] = 'Your broadcast message was sent.'; # XXX $PALANG['pAdminMenu_broadcast_message'] = 'Broadcast message'; # XXX $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message shouldn\'t be empty!'; # XXX +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX $PALANG['pStatus_custom'] = 'Delivers to '; # XXX $PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX diff --git a/languages/fr.lang b/languages/fr.lang index c91fb099..4ad11f60 100644 --- a/languages/fr.lang +++ b/languages/fr.lang @@ -324,6 +324,8 @@ $PALANG['pBroadcast_name'] = 'Votre nom'; $PALANG['pBroadcast_success'] = 'Votre message général a été envoyé.'; $PALANG['pAdminMenu_broadcast_message'] = 'message général'; $PALANG['pBroadcast_error_empty'] = 'Les champs Nom, Sujet et Message ne peuvent pas être vides!'; +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'Non délivrable '; $PALANG['pStatus_custom'] = 'Délivré à '; $PALANG['pStatus_popimap'] = 'POP/IMAP '; diff --git a/languages/hr.lang b/languages/hr.lang index cff835b5..cc32368d 100644 --- a/languages/hr.lang +++ b/languages/hr.lang @@ -320,6 +320,8 @@ $PALANG['pBroadcast_name'] = 'Your name'; # XXX $PALANG['pBroadcast_success'] = 'Your broadcast message was sent.'; # XXX $PALANG['pAdminMenu_broadcast_message'] = 'Broadcast message'; # XXX $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message shouldn\'t be empty!'; # XXX +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX $PALANG['pStatus_custom'] = 'Delivers to '; # XXX $PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX diff --git a/languages/hu.lang b/languages/hu.lang index 32313e71..37cf7f6a 100644 --- a/languages/hu.lang +++ b/languages/hu.lang @@ -332,6 +332,8 @@ $PALANG['pBroadcast_name'] = 'Neved'; $PALANG['pBroadcast_success'] = 'Broadcast üzeneted elküldve.'; $PALANG['pAdminMenu_broadcast_message'] = 'Broadcast üzenet'; # XXX partly translated $PALANG['pBroadcast_error_empty'] = 'A név, téma és üzenet mezők nem lehetnek üresek !'; +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'lehet hogy nem kézbesíthető '; $PALANG['pStatus_custom'] = 'Ide kézbesítődik '; diff --git a/languages/is.lang b/languages/is.lang index f39f2fdf..03da5f96 100644 --- a/languages/is.lang +++ b/languages/is.lang @@ -322,6 +322,8 @@ $PALANG['pBroadcast_name'] = 'Your name'; # XXX $PALANG['pBroadcast_success'] = 'Your broadcast message was sent.'; # XXX $PALANG['pAdminMenu_broadcast_message'] = 'Broadcast message'; # XXX $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message shouldn\'t be empty!'; # XXX +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX $PALANG['pStatus_custom'] = 'Delivers to '; # XXX $PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX diff --git a/languages/it.lang b/languages/it.lang index 30be0608..9de66617 100644 --- a/languages/it.lang +++ b/languages/it.lang @@ -323,6 +323,8 @@ $PALANG['pBroadcast_name'] = 'Il tuo nome'; $PALANG['pBroadcast_success'] = 'Il tuo messaggio è stato inoltrato a tutto il gruppo.'; $PALANG['pAdminMenu_broadcast_message'] = 'Invio di gruppo'; $PALANG['pBroadcast_error_empty'] = 'Nome, oggetto e testo del messaggio non possono restare vuoti!'; +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'presumibilmente NON CONSEGNABILE '; $PALANG['pStatus_custom'] = 'In consegna a '; $PALANG['pStatus_popimap'] = 'POP/IMAP '; diff --git a/languages/ja.lang b/languages/ja.lang index d91d4e3e..bf7d38bd 100644 --- a/languages/ja.lang +++ b/languages/ja.lang @@ -330,6 +330,8 @@ $PALANG['pBroadcast_name'] = '名前'; $PALANG['pBroadcast_success'] = 'ブロードキャストメッセージは送信されました。'; $PALANG['pAdminMenu_broadcast_message'] = 'ブロードキャスト'; $PALANG['pBroadcast_error_empty'] = '名前、件名、メッセージは入力が必要です。'; +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'おそらく配送不可能 '; $PALANG['pStatus_custom'] = '配送先 '; diff --git a/languages/lt.lang b/languages/lt.lang index ae6baf59..14bc0d55 100644 --- a/languages/lt.lang +++ b/languages/lt.lang @@ -328,6 +328,8 @@ $PALANG['pBroadcast_name'] = 'Your name'; # XXX $PALANG['pBroadcast_success'] = 'Your broadcast message was sent.'; # XXX $PALANG['pAdminMenu_broadcast_message'] = 'Broadcast message'; # XXX $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message shouldn\'t be empty!'; # XXX +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX $PALANG['pStatus_custom'] = 'Delivers to '; # XXX $PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX diff --git a/languages/mk.lang b/languages/mk.lang index 3f034eeb..0d6fa78b 100644 --- a/languages/mk.lang +++ b/languages/mk.lang @@ -323,6 +323,8 @@ $PALANG['pBroadcast_name'] = 'Your name'; # XXX $PALANG['pBroadcast_success'] = 'Your broadcast message was sent.'; # XXX $PALANG['pAdminMenu_broadcast_message'] = 'Broadcast message'; # XXX $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message shouldn\'t be empty!'; # XXX +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX $PALANG['pStatus_custom'] = 'Delivers to '; # XXX $PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX diff --git a/languages/nb.lang b/languages/nb.lang index 49f2be03..c9db94ce 100644 --- a/languages/nb.lang +++ b/languages/nb.lang @@ -322,6 +322,8 @@ $PALANG['pBroadcast_name'] = 'Ditt navn'; $PALANG['pBroadcast_success'] = 'Masseutsendelsesmeldingen ble sendt.'; $PALANG['pAdminMenu_broadcast_message'] = 'Send masseutsendelse'; $PALANG['pBroadcast_error_empty'] = 'Feltene Ditt navn, Emne og Melding kan ikke være tomme!'; +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'kan kanskje IKKE LEVERES '; $PALANG['pStatus_custom'] = 'Leverer til '; $PALANG['pStatus_popimap'] = 'POP/IMAP '; diff --git a/languages/nl.lang b/languages/nl.lang index b80b5fe2..613a67b3 100644 --- a/languages/nl.lang +++ b/languages/nl.lang @@ -323,6 +323,8 @@ $PALANG['pBroadcast_name'] = 'Uw naam'; $PALANG['pBroadcast_success'] = 'Uw algemene bericht is verzonden.'; $PALANG['pAdminMenu_broadcast_message'] = 'Algemeen bericht'; $PALANG['pBroadcast_error_empty'] = 'De velden Naam, Onderwerp en Bericht mogen niet leeg zijn !'; +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'Misschien niet af te leveren '; $PALANG['pStatus_custom'] = 'Bezorgen op '; $PALANG['pStatus_popimap'] = 'POP/IMAP '; diff --git a/languages/nn.lang b/languages/nn.lang index 610c2775..826a2902 100644 --- a/languages/nn.lang +++ b/languages/nn.lang @@ -321,6 +321,8 @@ $PALANG['pBroadcast_name'] = 'Your name'; # XXX $PALANG['pBroadcast_success'] = 'Your broadcast message was sent.'; # XXX $PALANG['pAdminMenu_broadcast_message'] = 'Broadcast message'; # XXX $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message shouldn\'t be empty!'; # XXX +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX $PALANG['pStatus_custom'] = 'Delivers to '; # XXX $PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX diff --git a/languages/pl.lang b/languages/pl.lang index c59836a1..8f992d9f 100644 --- a/languages/pl.lang +++ b/languages/pl.lang @@ -328,6 +328,8 @@ $PALANG['pBroadcast_name'] = 'Nazwa'; $PALANG['pBroadcast_success'] = 'Wiadomość do wszystkich została wysłana.'; $PALANG['pAdminMenu_broadcast_message'] = 'Wiadomość do wszystkich'; $PALANG['pBroadcast_error_empty'] = 'Pola Nazwa, Temat i Wiadomość nie powinny być puste !'; +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'może być NIEDOSTARCZALNA '; $PALANG['pStatus_custom'] = 'Dostarczyć do '; $PALANG['pStatus_popimap'] = 'POP/IMAP '; diff --git a/languages/pt-br.lang b/languages/pt-br.lang index ecbfbb1d..3ee184de 100644 --- a/languages/pt-br.lang +++ b/languages/pt-br.lang @@ -332,6 +332,8 @@ $PALANG['pBroadcast_name'] = 'Seu nome'; $PALANG['pBroadcast_success'] = 'Mensagem em massa enviada.'; $PALANG['pAdminMenu_broadcast_message'] = 'Mensagem em massa'; $PALANG['pBroadcast_error_empty'] = 'Os campos Nome, Assunto e Mensagem devem ser preenchidos!'; +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'talvez NÃO-ENTREGÁVEL '; $PALANG['pStatus_custom'] = 'Envia para '; diff --git a/languages/ro.lang b/languages/ro.lang index 4b28ed4d..308ce5cd 100644 --- a/languages/ro.lang +++ b/languages/ro.lang @@ -330,6 +330,8 @@ $PALANG['pBroadcast_name'] = 'Numele'; $PALANG['pBroadcast_success'] = 'A fost trimis mesajul la toti utilizatorii.'; $PALANG['pAdminMenu_broadcast_message'] = 'Mesaj general'; $PALANG['pBroadcast_error_empty'] = 'Campurile Nume, Subiect si Mesaj nu pot fi goale!'; +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'probabil UNDELIVERABLE '; $PALANG['pStatus_custom'] = 'Livreaza la '; diff --git a/languages/ru.lang b/languages/ru.lang index 168dcb65..8ad954f0 100644 --- a/languages/ru.lang +++ b/languages/ru.lang @@ -332,6 +332,8 @@ $PALANG['pBroadcast_name'] = 'Ваше имя'; $PALANG['pBroadcast_success'] = 'Ваше широковещательное сообщение было отправлено.'; $PALANG['pAdminMenu_broadcast_message'] = 'Широковещательное сообщение'; $PALANG['pBroadcast_error_empty'] = 'Поля Имя, Тема и Сообщение не должны быть пустыми!'; +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'возможно НЕ ДОСТАВЛЕНО '; $PALANG['pStatus_custom'] = 'Доставляется для '; diff --git a/languages/sk.lang b/languages/sk.lang index 44a59b6f..720f960d 100644 --- a/languages/sk.lang +++ b/languages/sk.lang @@ -323,6 +323,8 @@ $PALANG['pBroadcast_name'] = 'Vaše meno'; $PALANG['pBroadcast_success'] = 'Hromadná správa bola odoslaná.'; $PALANG['pAdminMenu_broadcast_message'] = 'Hromadná správa'; $PALANG['pBroadcast_error_empty'] = 'Polie Vaše meno, Predmet a Obsah nemôžu byť prázdne!'; +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'možno NEDORUČITEĽNÉ '; $PALANG['pStatus_custom'] = 'Doručuje sa na '; $PALANG['pStatus_popimap'] = 'POP/IMAP '; diff --git a/languages/sl.lang b/languages/sl.lang index c3eda1c9..d9367175 100644 --- a/languages/sl.lang +++ b/languages/sl.lang @@ -322,6 +322,8 @@ $PALANG['pBroadcast_name'] = 'Your name'; # XXX $PALANG['pBroadcast_success'] = 'Your broadcast message was sent.'; # XXX $PALANG['pAdminMenu_broadcast_message'] = 'Broadcast message'; # XXX $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message shouldn\'t be empty!'; # XXX +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX $PALANG['pStatus_custom'] = 'Delivers to '; # XXX $PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX diff --git a/languages/sv.lang b/languages/sv.lang index f2c64570..ced3215c 100644 --- a/languages/sv.lang +++ b/languages/sv.lang @@ -331,6 +331,8 @@ $PALANG['pBroadcast_name'] = 'Ditt namn'; $PALANG['pBroadcast_success'] = 'Ditt grupputskick har sänts.'; $PALANG['pAdminMenu_broadcast_message'] = 'Grupputskick'; $PALANG['pBroadcast_error_empty'] = 'Fälten namn, ämne och meddelande ska inte vara tomma!'; +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'kan eventuellt ej levereras '; $PALANG['pStatus_custom'] = 'Levereras till '; diff --git a/languages/tr.lang b/languages/tr.lang index 7df1ad3b..afb34f5b 100644 --- a/languages/tr.lang +++ b/languages/tr.lang @@ -322,6 +322,8 @@ $PALANG['pBroadcast_name'] = 'Your name'; # XXX $PALANG['pBroadcast_success'] = 'Your broadcast message was sent.'; # XXX $PALANG['pAdminMenu_broadcast_message'] = 'Broadcast message'; # XXX $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message shouldn\'t be empty!'; # XXX +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX $PALANG['pStatus_custom'] = 'Delivers to '; # XXX $PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX diff --git a/languages/tw.lang b/languages/tw.lang index 31f65987..b6389c46 100644 --- a/languages/tw.lang +++ b/languages/tw.lang @@ -324,6 +324,8 @@ $PALANG['pBroadcast_name'] = '你的名字'; $PALANG['pBroadcast_success'] = '你給所有用戶的郵件已發出。'; $PALANG['pAdminMenu_broadcast_message'] = '發送給所有用戶'; $PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message shouldn\'t be empty!'; # XXX +$PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX +$PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = '可能無法送遞 '; $PALANG['pStatus_custom'] = '送遞至 '; $PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX From 3c360f646fabae47cc1f02033fcfa74c8217503d Mon Sep 17 00:00:00 2001 From: Jan-Frederik Rieckers Date: Sun, 12 Feb 2017 20:39:37 +0100 Subject: [PATCH 3/8] Switch config item for broadcast. The new config item is now `sendmail_all_admins` --- broadcast-message.php | 6 +++--- config.inc.php | 4 ++-- templates/menu.tpl | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/broadcast-message.php b/broadcast-message.php index 43639c8a..15685e03 100644 --- a/broadcast-message.php +++ b/broadcast-message.php @@ -27,10 +27,10 @@ require_once('common.php'); -if ($CONF['sendmail_only_global_admin'] == 'YES' ) { - authentication_require_role('global-admin'); -} else { +if (Config::bool('sendmail_all_admins'])) { authentication_require_role('admin'); +} else { + authentication_require_role('global-admin'); } if ($CONF['sendmail'] != 'YES') { diff --git a/config.inc.php b/config.inc.php index 359dd302..0867c896 100644 --- a/config.inc.php +++ b/config.inc.php @@ -396,9 +396,9 @@ $CONF['backup'] = 'NO'; // Send Mail // If you don't want sendmail tab set this to 'NO'; $CONF['sendmail'] = 'YES'; -// Set this to NO if you want to allow non-super-admins to +// Set this to YES if you want to allow non-super-admins to // send mails to their users -$CONF['sendmail_only_global_admin'] = 'YES'; +$CONF['sendmail_all_admins'] = 'NO'; // Logging // If you don't want logging set this to 'NO'; diff --git a/templates/menu.tpl b/templates/menu.tpl index 4cc754b7..bfc2d85b 100644 --- a/templates/menu.tpl +++ b/templates/menu.tpl @@ -62,7 +62,7 @@
  • {$PALANG.pMenu_sendmail} From 2e92eb5cd1a5c7ddaab253f936205eb03d0e7a25 Mon Sep 17 00:00:00 2001 From: Jan-Frederik Rieckers Date: Mon, 13 Feb 2017 16:15:15 +0100 Subject: [PATCH 4/8] Fix small syntax bug --- broadcast-message.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/broadcast-message.php b/broadcast-message.php index 15685e03..dfbd8dab 100644 --- a/broadcast-message.php +++ b/broadcast-message.php @@ -27,7 +27,7 @@ require_once('common.php'); -if (Config::bool('sendmail_all_admins'])) { +if (Config::bool('sendmail_all_admins')) { authentication_require_role('admin'); } else { authentication_require_role('global-admin'); From 7ee587bb874fdce8a352eb04eda1bb38c40c8215 Mon Sep 17 00:00:00 2001 From: Jan-Frederik Rieckers Date: Mon, 6 Mar 2017 09:58:35 +0100 Subject: [PATCH 5/8] [Broadcast] Use db_in_clause instead of a foreach loop --- broadcast-message.php | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/broadcast-message.php b/broadcast-message.php index dfbd8dab..cac39bf8 100644 --- a/broadcast-message.php +++ b/broadcast-message.php @@ -59,17 +59,14 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") $recipients = []; - foreach( $wanted_domains as $domain) { - $q = "SELECT username from $table_mailbox WHERE domain = '$domain'"; - if(!isset($_POST['mailboxes_only']) || $_POST['mailboxes_only'] != "on") { - $q .= " UNION SELECT GOTO FROM $table_alias WHERE domain = '$domain' " . - " AND goto NOT IN ($q)"; - } - $result = db_query ($q); - if($result['rows'] > 0) { - while($row = db_array($result['result'])) { - $recipients[] = $row[0]; - } + $q = "SELECT username from $table_mailbox WHERE ".db_in_clause("domain", $wanted_domains); + if(!isset($_POST['bailboxes_only']) || $_POST['mailboxes_only'] != "on") { + $q .= " UNION SELECT goto FROM $table_alias WHERE ".db_in_clause("domain", $wanted_domains)."AND goto NOT IN ($q)"; + } + $result = db_query($q); + if($result['rows'] > 0) { + while($row = db_array($result['result'])) { + $recipients[] = $row[0]; } } From 797da4f694422532a7b0a3e1a094808803e7e7b4 Mon Sep 17 00:00:00 2001 From: Jan-Frederik Rieckers Date: Mon, 6 Mar 2017 10:12:48 +0100 Subject: [PATCH 6/8] Fix typo --- broadcast-message.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/broadcast-message.php b/broadcast-message.php index cac39bf8..16a4d7e3 100644 --- a/broadcast-message.php +++ b/broadcast-message.php @@ -60,7 +60,7 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") $recipients = []; $q = "SELECT username from $table_mailbox WHERE ".db_in_clause("domain", $wanted_domains); - if(!isset($_POST['bailboxes_only']) || $_POST['mailboxes_only'] != "on") { + if(!isset($_POST['mailboxes_only']) || $_POST['mailboxes_only'] != "on") { $q .= " UNION SELECT goto FROM $table_alias WHERE ".db_in_clause("domain", $wanted_domains)."AND goto NOT IN ($q)"; } $result = db_query($q); From 5712a35f71068a7f249c1328b5188d5d0eed6a52 Mon Sep 17 00:00:00 2001 From: Jan-Frederik Rieckers Date: Mon, 17 Apr 2017 14:00:44 +0200 Subject: [PATCH 7/8] Fix some Language issues in broadcast --- languages/de.lang | 4 ++-- languages/fr.lang | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/languages/de.lang b/languages/de.lang index f23a3461..439756db 100644 --- a/languages/de.lang +++ b/languages/de.lang @@ -331,8 +331,8 @@ $PALANG['pBroadcast_name'] = 'Ihr Name'; $PALANG['pBroadcast_success'] = 'Ihre Rundmail wurde gesendet.'; $PALANG['pAdminMenu_broadcast_message'] = 'Rundmail'; $PALANG['pBroadcast_error_empty'] = 'Die Felder Name, Betreff und Nachricht dürfen nicht leer sein!'; -$PALANG['broadcst_mailboxes_only'] = "Nur an Postfächer senden"; -$PALANG['broadcst_to_domains'] = "Senden an Domains:"; +$PALANG['broadcast_mailboxes_only'] = "Nur an Postfächer senden"; +$PALANG['broadcast_to_domains'] = "Senden an Domains:"; $PALANG['pStatus_undeliverable'] = 'möglicherweise UNZUSTELLBAR '; $PALANG['pStatus_custom'] = 'Zustellung an '; diff --git a/languages/fr.lang b/languages/fr.lang index e77c20aa..2f9f4d7e 100644 --- a/languages/fr.lang +++ b/languages/fr.lang @@ -324,7 +324,7 @@ $PALANG['pBroadcast_title'] = 'Envoyer un message général'; $PALANG['pBroadcast_name'] = 'Votre nom'; $PALANG['pBroadcast_success'] = 'Votre message général a été envoyé.'; $PALANG['pAdminMenu_broadcast_message'] = 'message général'; -$PALANG['pBroadcast_error_empty'] = 'Les champs Nom, Sujet et Message ne peuvent pas être vides!'; +$PALANG['pBroadcast_error_empty'] = 'Les champs "Nom", "Sujet" et "Message" ne peuvent pas être vides!'; $PALANG['broadcast_mailboxes_only'] = 'Only send to mailboxes'; # XXX $PALANG['broadcast_to_domains'] = 'Send to domains:'; # XXX $PALANG['pStatus_undeliverable'] = 'Non délivrable '; From 54532e7ceee2e88b09d1bf49b4b1b0870e371d03 Mon Sep 17 00:00:00 2001 From: Jan-Frederik Rieckers Date: Mon, 17 Apr 2017 14:02:37 +0200 Subject: [PATCH 8/8] Fix issue with checkbox in broadcast --- broadcast-message.php | 2 +- templates/broadcast-message.tpl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/broadcast-message.php b/broadcast-message.php index b4b63830..f412fcd5 100644 --- a/broadcast-message.php +++ b/broadcast-message.php @@ -62,7 +62,7 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") $recipients = []; $q = "SELECT username from $table_mailbox WHERE ".db_in_clause("domain", $wanted_domains); - if(!isset($_POST['mailboxes_only']) || $_POST['mailboxes_only'] != "on") { + if (intval(safepost('mailboxes_only')) == 0) { $q .= " UNION SELECT goto FROM $table_alias WHERE ".db_in_clause("domain", $wanted_domains)."AND goto NOT IN ($q)"; } $result = db_query($q); diff --git a/templates/broadcast-message.tpl b/templates/broadcast-message.tpl index 373f7075..b1a5f442 100644 --- a/templates/broadcast-message.tpl +++ b/templates/broadcast-message.tpl @@ -23,7 +23,7 @@ - +