feat(eas): Allow EAS Search operation in all parts of a message

pull/291/head
tfux 2020-12-09 19:34:19 +01:00 committed by GitHub
parent b9e19c2cc4
commit fab8061766
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 5 deletions

View File

@ -3093,7 +3093,7 @@ void handle_eas_terminate(int signum)
andElement = [(id)[theDocumentElement getElementsByTagName: @"And"] lastObject];
if (andElement)
{
EOQualifier *subjectQualifier, *senderQualifier, *fetchQualifier, *notDeleted, *greaterThanQualifier, *orQualifier;
EOQualifier *subjectQualifier, *senderQualifier, *fetchQualifier, *notDeleted, *greaterThanQualifier, *searchQualifier;
NSString *query;
id o;
@ -3115,12 +3115,16 @@ void handle_eas_terminate(int signum)
}
notDeleted = [EOQualifier qualifierWithQualifierFormat: @"(not (flags = %@))", @"deleted"];
subjectQualifier = [EOQualifier qualifierWithQualifierFormat: [NSString stringWithFormat: @"(%@ doesContain: '%@')", @"subject", query]];
senderQualifier = [EOQualifier qualifierWithQualifierFormat: [NSString stringWithFormat: @"(%@ doesContain: '%@')", @"from", query]];
orQualifier = [[EOOrQualifier alloc] initWithQualifiers: subjectQualifier, senderQualifier, nil];
if ([[SOGoSystemDefaults sharedSystemDefaults] easSearchInBody]) {
searchQualifier = [EOQualifier qualifierWithQualifierFormat: [NSString stringWithFormat: @"(%@ doesContain: '%@')", @"text", query]];
} else {
subjectQualifier = [EOQualifier qualifierWithQualifierFormat: [NSString stringWithFormat: @"(%@ doesContain: '%@')", @"subject", query]];
senderQualifier = [EOQualifier qualifierWithQualifierFormat: [NSString stringWithFormat: @"(%@ doesContain: '%@')", @"from", query]];
searchQualifier = [[EOOrQualifier alloc] initWithQualifiers: subjectQualifier, senderQualifier, nil];
}
fetchQualifier = [[EOAndQualifier alloc] initWithQualifiers: notDeleted, orQualifier, greaterThanQualifier, nil];
fetchQualifier = [[EOAndQualifier alloc] initWithQualifiers: notDeleted, searchQualifier, greaterThanQualifier, nil];
return [fetchQualifier autorelease];
}

View File

@ -2855,6 +2855,11 @@ Defaults to `NO`, which means no logging is performed.
for EAS Search operations in the GAL.
If not set, it defaults to `102400` bytes, or 100 KB.
|S |SOGoEASSearchInBody
|Parameter used to enable EAS Search operation in all parts of a message.
Defaults to `NO`, which means to search only in Subject- and From-header.
|=======================================================================
Please be aware of the following limitations:

View File

@ -112,6 +112,7 @@
- (int) maximumSyncWindowSize;
- (int) maximumSyncResponseSize;
- (int) maximumPictureSize;
- (BOOL) easSearchInBody;
@end

View File

@ -730,6 +730,11 @@ _injectConfigurationFromFile (NSMutableDictionary *defaultsDict,
return v;
}
- (BOOL) easSearchInBody
{
return [self boolForKey: @"SOGoEASSearchInBody"];
}
//
// See https://msdn.microsoft.com/en-us/library/gg672032(v=exchg.80).aspx
//