public function searchContact($o) { $default = 'in:contacts'; $params = array(ZimbraSoapClient::SoapVarArray(array('offset' => akead('start', $o, 0), 'limit' => akead('limit', $o, 25), 'sortBy' => akead('sort', $o, 'name') . ucfirst(strtolower(akead('dir', $o, 'asc'))), 'query' => $o['query'] == '' ? $default : $o['query'], 'total' => 1, 'types' => 'contact'))); $res = $this->imapStream->call('zimbraMail', 'SearchRequest', $params, true); $arrResult = array_map(function ($contact) { ZimbraSoapClient::_mapAttr($contact['a'], '@n', '%'); return array('name' => $contact['a']['nom'], 'email' => $contact['a']['email']); }, akead('cn', $res['Envelope']['Body']['SearchResponse'], array())); return array('data' => $arrResult, 'totalCount' => $res['Envelope']['Body']['SearchResponse']['@more'] == 1 ? akead('start', $o, 0) + count($arrResult) + 1 : count($arrResult)); }