Displays errors and warning on ML members addition.
authorStéphane Jacob <sj@m4x.org>
Sun, 8 Apr 2012 17:39:57 +0000 (19:39 +0200)
committerStéphane Jacob <sj@m4x.org>
Sun, 8 Apr 2012 19:03:34 +0000 (21:03 +0200)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
modules/lists.php

index baed14f..abb5c66 100644 (file)
@@ -656,19 +656,38 @@ class ListsModule extends PLModule
         if (Env::has('add_member')) {
             S::assert_xsrf_token();
 
-            $members = User::getBulkForlifeEmails(Env::v('add_member'),
+            $logins = preg_split("/[; ,\r\n\|]+/", Env::v('add_member'));
+            $members = User::getBulkForlifeEmails($logins,
                                                   true,
                                                   array('ListsModule', 'no_login_callback'));
+            $unfound = array_diff_key($logins, $members);
+
             // Make sure we send a list (array_values) of unique (array_unique)
             // emails.
             $members = array_values(array_unique($members));
 
             $arr = $this->client->mass_subscribe($liste, $members);
+
+            $successes = array();
             if (is_array($arr)) {
                 foreach($arr as $addr) {
+                    $successes[] = $addr[1];
                     $page->trigSuccess("{$addr[0]} inscrit.");
                 }
             }
+
+            $already = array_diff($members, $successes);
+            if (is_array($already)) {
+                foreach ($already as $item) {
+                    $page->trigWarning($item . ' est déjà inscrit.');
+                }
+            }
+
+            if (is_array($unfound)) {
+                foreach ($unfound as $item) {
+                    $page->trigError($item . " ne correspond pas à un compte existant et n'est pas une adresse email.");
+                }
+            }
         }
 
         if (isset($_FILES['add_member_file']) && $_FILES['add_member_file']['tmp_name']) {