From e5fd1c1fba66fc8dfb9f4ba1076cf5cb4dea7230 Mon Sep 17 00:00:00 2001 From: PhilW Date: Sun, 25 Aug 2024 10:38:08 +0100 Subject: [PATCH 1/3] add invalid and error details to vcard import report --- program/actions/contacts/import.php | 24 +++++++++++++++++++++++- program/localization/en_US/messages.inc | 2 ++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/program/actions/contacts/import.php b/program/actions/contacts/import.php index 312b3d916d..8de035a456 100644 --- a/program/actions/contacts/import.php +++ b/program/actions/contacts/import.php @@ -158,6 +158,8 @@ public function run($args = []) self::$stats = new stdClass(); self::$stats->names = []; self::$stats->skipped_names = []; + self::$stats->invalid_names = []; + self::$stats->error_names = []; self::$stats->count = count($vcards); self::$stats->inserted = 0; self::$stats->skipped = 0; @@ -187,6 +189,7 @@ public function run($args = []) // skip invalid (incomplete) entries if (!$CONTACTS->validate($a_record, true)) { self::$stats->invalid++; + self::$stats->invalid_names[] = $vcard->displayname ?: $email; continue; } @@ -251,6 +254,7 @@ public function run($args = []) self::$stats->names[] = $a_record['name'] ?: $email; } else { self::$stats->errors++; + self::$stats->error_names[] = $a_record['name'] ?: $email; } } @@ -431,7 +435,7 @@ public static function import_confirm($attrib) { $rcmail = rcmail::get_instance(); $vars = get_object_vars(self::$stats); - $vars['names'] = $vars['skipped_names'] = ''; + $vars['names'] = $vars['skipped_names'] = $vars['invalid_names'] = $vars['error_names'] = ''; $content = html::p(null, $rcmail->gettext([ 'name' => 'importconfirm', @@ -453,6 +457,24 @@ public static function import_confirm($attrib) . html::p('em', implode(', ', array_map(['rcube', 'Q'], self::$stats->skipped_names))); } + if (self::$stats->invalid) { + $content .= html::p(null, $rcmail->gettext([ + 'name' => 'importconfirminvalid', + 'nr' => self::$stats->invalid, + 'vars' => $vars, + ]) . ':') + . html::p('em', implode(', ', array_map(['rcube', 'Q'], self::$stats->invalid_names))); + } + + if (self::$stats->errors) { + $content .= html::p(null, $rcmail->gettext([ + 'name' => 'importconfirmerrors', + 'nr' => self::$stats->errors, + 'vars' => $vars, + ]) . ':') + . html::p('em', implode(', ', array_map(['rcube', 'Q'], self::$stats->error_names))); + } + return html::div($attrib, $content); } diff --git a/program/localization/en_US/messages.inc b/program/localization/en_US/messages.inc index b65b61fe36..88066a11db 100644 --- a/program/localization/en_US/messages.inc +++ b/program/localization/en_US/messages.inc @@ -162,6 +162,8 @@ $messages['importwait'] = 'Importing, please wait...'; $messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.'; $messages['importconfirm'] = 'Successfully imported $inserted contacts'; $messages['importconfirmskipped'] = 'Skipped $skipped existing entries'; +$messages['importconfirminvalid'] = 'Skipped $invalid invalid entries'; +$messages['importconfirmerrors'] = 'Failed to import $errors valid contacts'; $messages['importmessagesuccess'] = 'Successfully imported $nr messages'; $messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file'; $messages['opnotpermitted'] = 'Operation not permitted!'; From 7eed12550b7435dcf09187ffc11d994bbdfcab31 Mon Sep 17 00:00:00 2001 From: PhilW Date: Sat, 14 Sep 2024 06:22:09 +0100 Subject: [PATCH 2/3] small improvement to invalid vcard logging --- program/actions/contacts/import.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/program/actions/contacts/import.php b/program/actions/contacts/import.php index 8de035a456..76bbafbd06 100644 --- a/program/actions/contacts/import.php +++ b/program/actions/contacts/import.php @@ -189,7 +189,7 @@ public function run($args = []) // skip invalid (incomplete) entries if (!$CONTACTS->validate($a_record, true)) { self::$stats->invalid++; - self::$stats->invalid_names[] = $vcard->displayname ?: $email; + self::$stats->invalid_names[] = rcube_addressbook::compose_display_name($a_record, true); continue; } From 1f1b5330dc9fae36204bcc571d98074e8a0ed421 Mon Sep 17 00:00:00 2001 From: PhilW Date: Wed, 18 Sep 2024 19:05:02 +0100 Subject: [PATCH 3/3] remove pointless variable --- program/actions/contacts/import.php | 14 ++++---------- program/localization/en_US/messages.inc | 4 ++-- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/program/actions/contacts/import.php b/program/actions/contacts/import.php index 76bbafbd06..4ce21f0fa9 100644 --- a/program/actions/contacts/import.php +++ b/program/actions/contacts/import.php @@ -434,13 +434,10 @@ public static function import_map($attrib) public static function import_confirm($attrib) { $rcmail = rcmail::get_instance(); - $vars = get_object_vars(self::$stats); - $vars['names'] = $vars['skipped_names'] = $vars['invalid_names'] = $vars['error_names'] = ''; $content = html::p(null, $rcmail->gettext([ 'name' => 'importconfirm', - 'nr' => self::$stats->inserted, - 'vars' => $vars, + 'vars' => ['inserted' => self::$stats->inserted], ]) . (self::$stats->names ? ':' : '.') ); @@ -451,8 +448,7 @@ public static function import_confirm($attrib) if (self::$stats->skipped) { $content .= html::p(null, $rcmail->gettext([ 'name' => 'importconfirmskipped', - 'nr' => self::$stats->skipped, - 'vars' => $vars, + 'vars' => ['skipped' => self::$stats->skipped], ]) . ':') . html::p('em', implode(', ', array_map(['rcube', 'Q'], self::$stats->skipped_names))); } @@ -460,8 +456,7 @@ public static function import_confirm($attrib) if (self::$stats->invalid) { $content .= html::p(null, $rcmail->gettext([ 'name' => 'importconfirminvalid', - 'nr' => self::$stats->invalid, - 'vars' => $vars, + 'vars' => ['invalid' => self::$stats->invalid], ]) . ':') . html::p('em', implode(', ', array_map(['rcube', 'Q'], self::$stats->invalid_names))); } @@ -469,8 +464,7 @@ public static function import_confirm($attrib) if (self::$stats->errors) { $content .= html::p(null, $rcmail->gettext([ 'name' => 'importconfirmerrors', - 'nr' => self::$stats->errors, - 'vars' => $vars, + 'vars' => ['errors' => self::$stats->errors], ]) . ':') . html::p('em', implode(', ', array_map(['rcube', 'Q'], self::$stats->error_names))); } diff --git a/program/localization/en_US/messages.inc b/program/localization/en_US/messages.inc index 88066a11db..2070da05e2 100644 --- a/program/localization/en_US/messages.inc +++ b/program/localization/en_US/messages.inc @@ -161,8 +161,8 @@ $messages['nogroupassignmentschanged'] = 'No group assignments changed.'; $messages['importwait'] = 'Importing, please wait...'; $messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.'; $messages['importconfirm'] = 'Successfully imported $inserted contacts'; -$messages['importconfirmskipped'] = 'Skipped $skipped existing entries'; -$messages['importconfirminvalid'] = 'Skipped $invalid invalid entries'; +$messages['importconfirmskipped'] = 'Skipped $skipped existing contacts'; +$messages['importconfirminvalid'] = 'Skipped $invalid invalid contacts'; $messages['importconfirmerrors'] = 'Failed to import $errors valid contacts'; $messages['importmessagesuccess'] = 'Successfully imported $nr messages'; $messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';