Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 65 additions & 2 deletions lib/Horde/Core/ActiveSync/Driver.php
Original file line number Diff line number Diff line change
Expand Up @@ -1775,6 +1775,21 @@ public function itemOperationsFetchMailbox(
);
}

/**
* Resolve mailbox:uid for ItemOperations when the client sends a virtual
* folder id from unified Find search (e.g. iOS M<uid>).
*
* @author Torben Dannhauer <torben@dannhauer.de>
*
* @param integer $uid IMAP message UID.
*
* @return string|null
*/
public function resolveLongIdForUid(int $uid): ?string
{
return $this->_imap->resolveLongIdForUid($uid);
}

/**
* Return the specified attachement data for an ITEMOPERATIONS request.
*
Expand Down Expand Up @@ -2318,7 +2333,6 @@ public function changeMessage($folderid, $id, Horde_ActiveSync_Message_Base $mes
*
* @return Horde_ActiveSync_Search_Results The search results.
*
* @todo $params->deepTraversal is NOT YET SUPPORTED.
*/
public function getSearchResults(Horde_ActiveSync_Search_Params $params): Horde_ActiveSync_Search_Results
{
Expand Down Expand Up @@ -2383,6 +2397,55 @@ public function getSearchResults(Horde_ActiveSync_Search_Params $params): Horde_
);
}

/**
* Returns Find command results.
*
* @author Torben Dannhauer <torben@dannhauer.de>
*
* @param Horde_ActiveSync_Find_Params $params Find parameters.
* @param array $bodyprefs Body preferences.
* @param integer $mimesupport MIME support flag.
*
* @return Horde_ActiveSync_Find_Results
*/
public function getFindResults(
Horde_ActiveSync_Find_Params $params,
array $bodyprefs = [],
$mimesupport = 0
): Horde_ActiveSync_Find_Results {
unset($bodyprefs, $mimesupport);

try {
$searchParams = Horde_ActiveSync_Find_QueryMapper::toSearchParams($params);
$results = $this->getSearchResults($searchParams);

if ($results->rows === null) {
return new Horde_ActiveSync_Find_Results(
Horde_ActiveSync_Request_Find::STATUS_SUCCESS,
Horde_ActiveSync_Request_Find::STORE_STATUS_SERVERERR,
0,
null
);
}

return new Horde_ActiveSync_Find_Results(
Horde_ActiveSync_Request_Find::STATUS_SUCCESS,
Horde_ActiveSync_Request_Find::STORE_STATUS_SUCCESS,
$results->total,
$results->rows
);
} catch (Horde_ActiveSync_Exception $e) {
$this->_logger->err($e->getMessage());
}

return new Horde_ActiveSync_Find_Results(
Horde_ActiveSync_Request_Find::STATUS_SUCCESS,
Horde_ActiveSync_Request_Find::STORE_STATUS_SERVERERR,
0,
null
);
}

/**
* Sends the email represented by the rfc822 string received by the PIM.
*
Expand Down Expand Up @@ -3852,7 +3915,7 @@ protected function _getMailFolder($sid, array $fl, array $f)
*
* @param array $query A query array. @see self::getSearchResults()
* @param array $options The search options (currently ignored).
* @param bool $deepTraversal If true, traverse sub folders (currently ignored)
* @param bool $deepTraversal If true, traverse sub-folders of the target mailbox.
*
* @return array|null An array of search results or null on error
*
Expand Down
Loading