Skip to content

feat(core): wire EAS 16.0 Find command to IMP search backend#137

Merged
ralflang merged 1 commit into
FRAMEWORK_6_0from
feature/Find
Jun 10, 2026
Merged

feat(core): wire EAS 16.0 Find command to IMP search backend#137
ralflang merged 1 commit into
FRAMEWORK_6_0from
feature/Find

Conversation

@TDannhauer

Copy link
Copy Markdown
Contributor

Wire EAS 16.0 Find command to IMP/IMAP backend

Summary

Implements Horde_Core_ActiveSync_Driver::getFindResults() and resolveLongIdForUid() so the Horde ActiveSync Find handler can search mail and open results on EAS 16.0 clients (tested with iPhone).

This PR depends on the companion horde/activesync PR that adds the Find protocol handler, Horde_ActiveSync_Find_* types, and Horde_ActiveSync_Driver_Base::getFindResults().

Motivation

Horde_ActiveSync_Request_Find calls getFindResults() on the ActiveSync driver. The core IMP driver must map Find parameters to the existing Search/IMAP backend and support ItemOperations fetch when iOS uses a virtual All Mailboxes folder id (M + message UID, e.g. M166562).

Changes

getFindResults()

  • Converts Horde_ActiveSync_Find_Params to Horde_ActiveSync_Search_Params via Horde_ActiveSync_Find_QueryMapper
  • Delegates to existing getSearchResults() (shared IMAP search path, result cache, pagination)
  • Maps success/error to Horde_ActiveSync_Find_Results with appropriate Find store status codes

resolveLongIdForUid()

  • Delegates to Horde_ActiveSync_Imap_Adapter::resolveLongIdForUid()
  • Resolves mailbox:uid when ItemOperations receives a virtual folder id that is not in the device folder cache

Files in this PR

Modified

  • lib/Horde/Core/ActiveSync/Driver.php

Architecture

Horde_ActiveSync_Request_Find
  → Horde_Core_ActiveSync_Driver::getFindResults()
      → Find\QueryMapper::toSearchParams()
      → getSearchResults() → Imap Adapter _doQuery()

ItemOperations (iOS virtual folder)
  → Horde_Core_ActiveSync_Driver::resolveLongIdForUid()
      → Imap Adapter::resolveLongIdForUid()

Test plan

  • Requires merged or dev-pinned horde/activesync Find PR
  • PHPUnit: existing Horde_Core_ActiveSync tests still pass
  • Manual test on EAS 16.0 client (iPhone):
    • Mailbox search returns results (Find command)
    • Tapping a result opens the message (ItemOperations, no “Folder not found in cache”)
    • Hits from subfolders appear in global search

Related PR

  • horde/activesync: Add EAS 16.0 Find command support (protocol, IMAP adapter, ItemOperations fallback)

Suggested commit message

feat(core): wire EAS 16.0 Find command to IMP search backend

Implement getFindResults() by mapping Find params to the existing
getSearchResults() IMAP path via QueryMapper.

Add resolveLongIdForUid() so ItemOperations can open Find hits when
iOS sends a virtual All Mailboxes folder id (M + UID).

Author

Torben Dannhauer torben@dannhauer.de

Implement getFindResults() by mapping Find params to the existing
getSearchResults() IMAP path via QueryMapper.
Add resolveLongIdForUid() so ItemOperations can open Find hits when
iOS sends a virtual All Mailboxes folder id (M + UID).
@ralflang ralflang merged commit 2dea5a4 into FRAMEWORK_6_0 Jun 10, 2026
0 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants