session->commit_session(); $this->charset = $GLOBALS['egw']->translation->charset(); } function searchAddress($_searchString) { if (!is_object($GLOBALS['egw']->contacts)) { $GLOBALS['egw']->contacts =& CreateObject('phpgwapi.contacts'); } if (method_exists($GLOBALS['egw']->contacts,'search')) { // 1.3+ $contacts = $GLOBALS['egw']->contacts->search(array( 'n_fn' => $_searchString, 'email' => $_searchString, 'email_home' => $_searchString, ),array('n_fn','email','email_home'),'n_fn','','%',false,'OR',array(0,20)); // Se saco esto para excluir las cuentas de la busqueda de destinatarios automaticos // // // additionally search the accounts, if the contact storage is not the account storage // if ($GLOBALS['egw_info']['server']['account_repository'] == 'ldap' && // $GLOBALS['egw_info']['server']['contact_repository'] == 'sql') // { // $accounts = $GLOBALS['egw']->contacts->search(array( // 'n_fn' => $_searchString, // 'email' => $_searchString, // 'email_home' => $_searchString, // ),array('n_fn','email','email_home'),'n_fn','','%',false,'OR',array(0,20),array('owner' => 0)); // // if ($contacts && $accounts) // { // $contacts = array_merge($contacts,$accounts); // usort($contacts,create_function('$a,$b','return strcasecmp($a["n_fn"],$b["n_fn"]);')); // } // elseif($accounts) // { // $contacts =& $accounts; // } // unset($accounts); // } } else { // < 1.3 $contacts = $GLOBALS['egw']->contacts->read(0,20,array( 'fn' => 1, 'email' => 1, 'email_home' => 1, ), $_searchString, 'tid=n', '', 'fn'); } $response =& new xajaxResponse(); if(is_array($contacts)) { $innerHTML = ''; $jsArray = array(); $i = 0; foreach($contacts as $contact) { foreach(array($contact['email'],$contact['email_home']) as $email) { // avoid wrong addresses, if an rfc822 encoded address is in addressbook $email = preg_replace("/(^.*<)([a-zA-Z0-9_\-]+@[a-zA-Z0-9_\-\.]+)(.*)/",'$2',$email); if(!empty($email) && !isset($jsArray[$email])) { $i++; $str = $GLOBALS['egw']->translation->convert(trim($contact['n_fn'] ? $contact['n_fn'] : $contact['fn']) .' <'. trim($email) .'>', $this->charset, 'utf-8'); $innerHTML .= '
'. htmlentities($str, ENT_QUOTES, 'utf-8') .'
'; $jsArray[$email] = addslashes(trim($contact['n_fn'] ? $contact['n_fn'] : $contact['fn']) .' <'. trim($email) .'>'); } if ($i > 10) break; // we check for # of results here, as we might have empty email addresses } } if($jsArray) { $response->addAssign('resultBox', 'innerHTML', $innerHTML); $response->addScript('results = new Array("'.implode('","',$jsArray).'");'); $response->addScript('displayResultBox();'); } //$response->addScript("getResults();"); //$response->addScript("selectSuggestion(-1);"); } else { $response->addAssign('resultBox', 'className', 'resultBoxHidden'); } return $response->getXML(); } }