mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-04-04 21:08:51 +00:00
Monotone-Parent: 070ab5bab7996350566f161af861542e882b6ac8
Monotone-Revision: 706eb04192b3639905eba9bfb1e2433cacc45280 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-12-08T20:44:06 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
@@ -1,5 +1,12 @@
|
||||
2011-12-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
|
||||
* OpenChange/MAPIStoreFSMessageTable.m
|
||||
(-evaluatePropertyRestriction:intoQualifier:): interpret filtering
|
||||
on PR_SUBJECT_UNICODE in order to include
|
||||
PR_NORMALIZED_SUBJECT_UNICODE and PR_SUBJECT_PREFIX_UNICODE in the
|
||||
search, as PR_SUBJECT_UNICODE might not actually exist on the FS
|
||||
messages.
|
||||
|
||||
* OpenChange/MAPIStoreObject.m (-addPropertiesFromRow:): perform
|
||||
test on PT_STRING8 alone after "masking" the ulPropTag with 0xfff,
|
||||
since PT_XX values are not bitmasks.
|
||||
|
||||
@@ -72,6 +72,56 @@ static Class MAPIStoreFSMessageK = Nil;
|
||||
[*qualifier autorelease];
|
||||
rc = MAPIRestrictionStateNeedsEval;
|
||||
}
|
||||
else if ((uint32_t) res->ulPropTag == PR_SUBJECT_UNICODE)
|
||||
{
|
||||
EOQualifier *subjectQualifier, *nSubjectQualifier, *subjectPQualifier;
|
||||
EOQualifier *orQualifier, *andQualifier;
|
||||
struct mapi_SPropertyRestriction subRes;
|
||||
char *colPtr, *prefix;
|
||||
|
||||
[super evaluatePropertyRestriction: res
|
||||
intoQualifier: &subjectQualifier];
|
||||
|
||||
subRes.relop = res->relop;
|
||||
subRes.ulPropTag = PR_NORMALIZED_SUBJECT_UNICODE;
|
||||
subRes.lpProp.ulPropTag = PR_NORMALIZED_SUBJECT_UNICODE;
|
||||
|
||||
colPtr = strstr (res->lpProp.value.lpszW, ":");
|
||||
if (colPtr)
|
||||
subRes.lpProp.value.lpszW = colPtr + 1;
|
||||
else
|
||||
subRes.lpProp.value.lpszW = res->lpProp.value.lpszW;
|
||||
|
||||
[self evaluatePropertyRestriction: &subRes
|
||||
intoQualifier: &nSubjectQualifier];
|
||||
if (colPtr)
|
||||
{
|
||||
prefix = strndup (res->lpProp.value.lpszW, (colPtr - res->lpProp.value.lpszW));
|
||||
|
||||
subRes.relop = RELOP_EQ;
|
||||
subRes.ulPropTag = PR_SUBJECT_PREFIX_UNICODE;
|
||||
subRes.lpProp.ulPropTag = PR_SUBJECT_PREFIX_UNICODE;
|
||||
subRes.lpProp.value.lpszW = prefix;
|
||||
[self evaluatePropertyRestriction: &subRes
|
||||
intoQualifier: &subjectPQualifier];
|
||||
free (prefix);
|
||||
|
||||
andQualifier = [[EOOrQualifier alloc]
|
||||
initWithQualifiers:
|
||||
subjectPQualifier, nSubjectQualifier, nil];
|
||||
orQualifier = [[EOOrQualifier alloc]
|
||||
initWithQualifiers:
|
||||
subjectQualifier, andQualifier, nil];
|
||||
[andQualifier release];
|
||||
}
|
||||
else
|
||||
orQualifier = [[EOOrQualifier alloc]
|
||||
initWithQualifiers:
|
||||
subjectQualifier, nSubjectQualifier, nil];
|
||||
[orQualifier autorelease];
|
||||
*qualifier = orQualifier;
|
||||
rc = MAPIRestrictionStateNeedsEval;
|
||||
}
|
||||
else
|
||||
rc = [super evaluatePropertyRestriction: res intoQualifier: qualifier];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user