Explorar el Código

Contacts: Added option to skip or replace Google contacts previously imported.

Nate Jones hace 10 años
padre
commit
dfc524fd0d
Se han modificado 3 ficheros con 104 adiciones y 17 borrados
  1. 34 4
      app_languages.php
  2. 16 12
      contact_delete.php
  3. 54 1
      contact_import_google.php

+ 34 - 4
app_languages.php

@@ -1060,10 +1060,40 @@
 		$text['message-google_signed_out']['pt-pt'] = "Conta do Google: Assinado Fora";
 		$text['message-google_signed_out']['fr-fr'] = "Compte Google: Déconnecté";
 
-		$text['message-contacts_imported']['en-us'] = "Contacts Imported: ";
-		$text['message-contacts_imported']['es-cl'] = "Contactos Importados: ";
-		$text['message-contacts_imported']['pt-pt'] = "Contatos Importados: ";
-		$text['message-contacts_imported']['fr-fr'] = "Contacts Importés: ";
+		$text['message-contacts_imported']['en-us'] = "Contacts Imported:";
+		$text['message-contacts_imported']['es-cl'] = "Contactos Importados:";
+		$text['message-contacts_imported']['pt-pt'] = "Contatos Importados:";
+		$text['message-contacts_imported']['fr-fr'] = "Contacts Importés:";
+
+		$text['label-import_duplicates']['en-us'] = "Duplicates";
+		$text['label-import_duplicates']['es-cl'] = "Duplicados";
+		$text['label-import_duplicates']['pt-pt'] = "Duplicatas";
+		$text['label-import_duplicates']['fr-fr'] = "Doublons";
+
+		$text['option-import_duplicates_skip']['en-us'] = "Skip";
+		$text['option-import_duplicates_skip']['es-cl'] = "Omitir";
+		$text['option-import_duplicates_skip']['pt-pt'] = "Pular";
+		$text['option-import_duplicates_skip']['fr-fr'] = "Sauter";
+
+		$text['option-import_duplicates_replace']['en-us'] = "Replace";
+		$text['option-import_duplicates_replace']['es-cl'] = "Reemplazar";
+		$text['option-import_duplicates_replace']['pt-pt'] = "Substituir";
+		$text['option-import_duplicates_replace']['fr-fr'] = "Remplacer";
+
+		$text['description-import_duplicates']['en-us'] = "Select how to treat contacts previously imported.";
+		$text['description-import_duplicates']['es-cl'] = "Seleccione la forma de tratar a los contactos previamente importados.";
+		$text['description-import_duplicates']['pt-pt'] = "Escolha como tratar os contatos previamente importados.";
+		$text['description-import_duplicates']['fr-fr'] = "Sélectionnez la façon de traiter les contacts importés auparavant.";
+
+		$text['message_contacts_imported_skipped']['en-us'] = "Skipped:";
+		$text['message_contacts_imported_skipped']['es-cl'] = "Saltado:";
+		$text['message_contacts_imported_skipped']['pt-pt'] = "Ignorados:";
+		$text['message_contacts_imported_skipped']['fr-fr'] = "Arrêté:";
+
+		$text['message_contacts_imported_replaced']['en-us'] = "Replaced:";
+		$text['message_contacts_imported_replaced']['es-cl'] = "Sustituido:";
+		$text['message_contacts_imported_replaced']['pt-pt'] = "Substituído:";
+		$text['message_contacts_imported_replaced']['fr-fr'] = "Remplacé:";
 
 	// general labels
 		$text['label-primary']['en-us'] = "Primary";

+ 16 - 12
contact_delete.php

@@ -34,17 +34,20 @@ else {
 	exit;
 }
 
-//add multi-lingual support
-	require_once "app_languages.php";
-	foreach($text as $key => $value) {
-		$text[$key] = $value[$_SESSION['domain']['language']['code']];
+// check if included in another file
+if (!$included) {
+	//add multi-lingual support
+		require_once "app_languages.php";
+		foreach($text as $key => $value) {
+			$text[$key] = $value[$_SESSION['domain']['language']['code']];
+		}
+
+	if (count($_GET)>0) {
+		$contact_uuid = check_str($_GET["id"]);
 	}
-
-if (count($_GET)>0) {
-	$contact_uuid = check_str($_GET["id"]);
 }
 
-if (strlen($contact_uuid)>0) {
+if (strlen($contact_uuid) > 0) {
 	//delete addresses
 		$sql = "delete from v_contact_addresses ";
 		$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
@@ -110,9 +113,10 @@ if (strlen($contact_uuid)>0) {
 		unset($prep_statement, $sql);
 }
 
-
-$_SESSION["message"] = $text['message-delete'];
-header("Location: contacts.php");
-return;
+if (!$included) {
+	$_SESSION["message"] = $text['message-delete'];
+	header("Location: contacts.php");
+	return;
+}
 
 ?>

+ 54 - 1
contact_import_google.php

@@ -66,11 +66,47 @@ if ($_POST['a'] == 'import') {
 
 	//iterate selected contact ids, insert contact into database
 	$contacts_imported = 0;
+	$contacts_skipped = 0;
+	$contacts_replaced = 0;
+
 	if (sizeof($import_ids) > 0) {
 
 		$import_ids = array_unique($import_ids);
 		foreach ($import_ids as $contact_id) {
 
+			//check for duplicate contact (already exists, previously imported, etc)
+			$sql = "select contact_uuid from v_contact_settings ";
+			$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
+			$sql .= "and contact_setting_category = 'google' ";
+			$sql .= "and contact_setting_subcategory = 'id' ";
+			$sql .= "and contact_setting_value = '".$contact_id."' ";
+			$sql .= "and contact_setting_enabled = 'true' ";
+			$prep_statement = $db->prepare($sql);
+			$prep_statement->execute();
+			$result = $prep_statement->fetch(PDO::FETCH_ASSOC);
+			if ($result['contact_uuid'] != '') {
+				$duplicate_exists = true;
+				$duplicate_contact_uuid = $result['contact_uuid'];
+			}
+			else {
+				$duplicate_exists = false;
+			}
+			unset($sql, $prep_statement, $result);
+
+			//skip importing contact
+			if ($duplicate_exists && $_POST['import_duplicates'] == 'skip') {
+				$contacts_skipped++;
+				continue;
+			}
+			//replace contact (delete before inserts below)
+			else if ($duplicate_exists && $_POST['import_duplicates'] == 'replace') {
+				$contact_uuid = $duplicate_contact_uuid;
+				$included = true;
+				require_once "contact_delete.php";
+				unset($contact_uuid, $duplicate_contact_uuid);
+				$contacts_replaced++;
+			}
+
 			//extract contact record from array using contact id
 			$contact = $_SESSION['contact_auth']['google'][$contact_id];
 
@@ -288,7 +324,10 @@ if ($_POST['a'] == 'import') {
 
 		}
 
-		$_SESSION["message"] = $text['message-contacts_imported']." ".$contacts_imported;
+		$message = $text['message-contacts_imported']." ".$contacts_imported;
+		if ($contacts_replaced > 0) { $message .= " (".$text['message_contacts_imported_replaced']." ".$contacts_replaced.")"; }
+		if ($contacts_skipped > 0) { $message .= ", ".$text['message_contacts_imported_skipped']." ".$contacts_skipped; }
+		$_SESSION["message"] = $message;
 		header("Location: contacts.php");
 		exit;
 
@@ -436,6 +475,20 @@ echo $text['description-shared_import']."\n";
 echo "</td>\n";
 echo "</tr>\n";
 
+echo "<tr>\n";
+echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
+echo "    ".$text['label-import_duplicates']."\n";
+echo "</td>\n";
+echo "<td class='vtable' align='left'>\n";
+echo "    <select class='formfld' style='width: 150px;' name='import_duplicates'>\n";
+echo "    <option value='skip'>".$text['option-import_duplicates_skip']."</option>\n";
+echo "    <option value='replace'>".$text['option-import_duplicates_replace']."</option>\n";
+echo "    </select>\n";
+echo "<br />\n";
+echo $text['description-import_duplicates']."\n";
+echo "</td>\n";
+echo "</tr>\n";
+
 echo "</table>";
 echo "<br><br>";