Fix for data loss in AB Sync operation - Bug #: 1495 - r: bienvenu

git-svn-id: svn://10.0.0.236/trunk@74769 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
rhp%netscape.com
2000-07-25 22:15:45 +00:00
parent 0928f7f55b
commit 2a9ec50ee4
2 changed files with 49 additions and 6 deletions

View File

@@ -694,10 +694,11 @@ nsAbSync::GenerateProtocolForCard(nsIAbCard *aCard, PRBool aAddId, nsString &pro
if (!nsCRT::strncasecmp(mSchemaMappingList[i].serverField, "OMIT:", 5))
continue;
// Reset this flag...
foundPhone = PR_FALSE;
// If this is a phone number, we have to special case this because
// phone #'s are handled differently than all other tags...sigh!
//
foundPhone = PR_FALSE;
if (!nsCRT::strncasecmp(mSchemaMappingList[i].abField, kWorkPhoneColumn, nsCRT::strlen(kWorkPhoneColumn)))
{
foundPhone = PR_TRUE;
@@ -787,6 +788,44 @@ nsAbSync::GenerateProtocolForCard(nsIAbCard *aCard, PRBool aAddId, nsString &pro
if (!tProtLine.IsEmpty())
{
// Now, check if this is that flag for the plain text email selection...if so,
// then tack this information on as well...
PRBool bValue = PR_FALSE;
if (NS_SUCCEEDED(aCard->GetSendPlainText(&bValue)))
{
if (bValue)
aName = nsString(NS_ConvertASCIItoUCS2("0")).ToNewUnicode();
else
aName = nsString(NS_ConvertASCIItoUCS2("1")).ToNewUnicode();
// Just some sanity...
if (aName)
{
char *utfString = nsString2(aName).ToNewUTF8String();
// Now, URL Encode the value string....
char *myTStr = nsEscape(utfString, url_Path);
if (myTStr)
{
PR_FREEIF(utfString);
utfString = myTStr;
}
tProtLine.Append(NS_ConvertASCIItoUCS2("&"));
tProtLine.Append(NS_ConvertASCIItoUCS2(kServerPlainTextColumn));
tProtLine.Append(NS_ConvertASCIItoUCS2("="));
if (utfString)
{
tProtLine.Append(NS_ConvertASCIItoUCS2(utfString));
PR_FREEIF(utfString);
}
else
tProtLine.Append(aName);
PR_FREEIF(aName);
}
}
char *tLine = tProtLine.ToNewCString();
if (!tLine)
return NS_ERROR_OUT_OF_MEMORY;
@@ -2424,6 +2463,14 @@ nsAbSync::AddValueToNewCard(nsIAbCard *aCard, nsString *aTagName, nsString *aTag
aCard->SetCustom3(aTagValue->GetUnicode());
else if (!aTagName->CompareWithConversion(kServerCustom4Column))
aCard->SetCustom4(aTagValue->GetUnicode());
else if (!aTagName->CompareWithConversion(kServerPlainTextColumn))
{
// This is plain text pref...have to add a little logic.
if (!aTagValue->CompareWithConversion("1"))
aCard->SetSendPlainText(PR_FALSE);
else if (!aTagValue->CompareWithConversion("0"))
aCard->SetSendPlainText(PR_TRUE);
}
return rv;
}
@@ -2458,13 +2505,11 @@ nsAbSync::GetString(const PRUnichar *aStringName)
}
/************ UNUSED FOR NOW
aCard->SetDisplayName(aTagValue->GetUnicode());
aCard->SetBirthYear(aTagValue->GetUnicode());
aCard->SetBirthMonth(aTagValue->GetUnicode());
aCard->SetBirthDay(aTagValue->GetUnicode());
aCard->SetLastModifiedDate(aTagValue->GetUnicode());
aCard->SetName(aTagValue->GetUnicode());
aCard->SetSendPlainText(aTagValue->GetUnicode());
aCard->SetIsMailList(aTagValue->GetUnicode());
aCard->SetDbTableID(aTagValue->GetUnicode());
aCard->SetDbRowID(aTagValue->GetUnicode());
@@ -2476,8 +2521,6 @@ aCard->SetAnonymousBoolAttribute(aTagValue->GetUnicode());
**********************************************/
/*************
char *kServerNicknameColumn = "OMIT:NickName";
char *kServerPlainTextColumn = "OMIT:SendPlainText";
char *kServerBirthYearColumn = "OMIT:BirthYear";
char *kServerBirthMonthColumn = "OMIT:BirthMonth";
char *kServerBirthDayColumn = "OMIT:BirthDay";

View File

@@ -74,7 +74,7 @@ char *kServerDisplayNameColumn = "Display_name";
char *kServerNicknameColumn = "nick_name";
char *kServerPriEmailColumn = "email1";
char *kServer2ndEmailColumn = "email2";
char *kServerPlainTextColumn = "OMIT:SendPlainText";
char *kServerPlainTextColumn = "Pref_rich_email";
char *kServerWorkPhoneColumn = "work_phone";
char *kServerHomePhoneColumn = "home_phone";
char *kServerFaxColumn = "fax";