Skip to content

Commit

Permalink
feat(eas): Allow EAS Search operation in all parts of a message
Browse files Browse the repository at this point in the history
  • Loading branch information
tfux authored Dec 9, 2020
1 parent b9e19c2 commit fab8061
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 5 deletions.
14 changes: 9 additions & 5 deletions ActiveSync/SOGoActiveSyncDispatcher.m
Original file line number Diff line number Diff line change
Expand Up @@ -3093,7 +3093,7 @@ - (EOQualifier *) _qualifierFromMailboxSearchQuery: (id <DOMElement>) theDocumen
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;

Expand All @@ -3115,12 +3115,16 @@ - (EOQualifier *) _qualifierFromMailboxSearchQuery: (id <DOMElement>) theDocumen
}

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];
}
Expand Down
5 changes: 5 additions & 0 deletions Documentation/SOGoInstallationGuide.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
1 change: 1 addition & 0 deletions SoObjects/SOGo/SOGoSystemDefaults.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@
- (int) maximumSyncWindowSize;
- (int) maximumSyncResponseSize;
- (int) maximumPictureSize;
- (BOOL) easSearchInBody;

@end

Expand Down
5 changes: 5 additions & 0 deletions SoObjects/SOGo/SOGoSystemDefaults.m
Original file line number Diff line number Diff line change
Expand Up @@ -730,6 +730,11 @@ - (int) maximumSyncResponseSize
return v;
}

- (BOOL) easSearchInBody
{
return [self boolForKey: @"SOGoEASSearchInBody"];
}

//
// See https://msdn.microsoft.com/en-us/library/gg672032(v=exchg.80).aspx
//
Expand Down

0 comments on commit fab8061

Please sign in to comment.