[74] | 1 | |
---|
| 2 | <?php |
---|
| 3 | /***************************************************************************\ |
---|
| 4 | * eGroupWare - FeLaMiMail * |
---|
| 5 | * http://www.linux-at-work.de * |
---|
| 6 | * http://www.phpgw.de * |
---|
| 7 | * http://www.egroupware.org * |
---|
| 8 | * Written by : Lars Kneschke [lkneschke@linux-at-work.de] * |
---|
| 9 | * ------------------------------------------------- * |
---|
| 10 | * This program is free software; you can redistribute it and/or modify it * |
---|
| 11 | * under the terms of the GNU General Public License as published by the * |
---|
| 12 | * Free Software Foundation; either version 2 of the License, or (at your * |
---|
| 13 | * option) any later version. * |
---|
| 14 | \***************************************************************************/ |
---|
| 15 | |
---|
| 16 | /* $Id: class.ajaxfelamimail.inc.php 21848 2006-06-15 21:50:59Z ralfbecker $ */ |
---|
| 17 | |
---|
| 18 | class ajax_contacts { |
---|
| 19 | function ajax_contacts() { |
---|
| 20 | $GLOBALS['egw']->session->commit_session(); |
---|
| 21 | $this->charset = $GLOBALS['egw']->translation->charset(); |
---|
| 22 | } |
---|
| 23 | |
---|
| 24 | function searchAddress($_searchString) { |
---|
| 25 | if (!is_object($GLOBALS['egw']->contacts)) { |
---|
| 26 | $GLOBALS['egw']->contacts =& CreateObject('phpgwapi.contacts'); |
---|
| 27 | } |
---|
| 28 | if (method_exists($GLOBALS['egw']->contacts,'search')) { |
---|
| 29 | // 1.3+ |
---|
| 30 | $contacts = $GLOBALS['egw']->contacts->search(array( |
---|
| 31 | 'n_fn' => $_searchString, |
---|
| 32 | 'email' => $_searchString, |
---|
| 33 | 'email_home' => $_searchString, |
---|
| 34 | ),array('n_fn','email','email_home'),'n_fn','','%',false,'OR',array(0,20)); |
---|
| 35 | |
---|
| 36 | // Se saco esto para excluir las cuentas de la busqueda de destinatarios automaticos |
---|
| 37 | // |
---|
| 38 | // // additionally search the accounts, if the contact storage is not the account storage |
---|
| 39 | // if ($GLOBALS['egw_info']['server']['account_repository'] == 'ldap' && |
---|
| 40 | // $GLOBALS['egw_info']['server']['contact_repository'] == 'sql') |
---|
| 41 | // { |
---|
| 42 | // $accounts = $GLOBALS['egw']->contacts->search(array( |
---|
| 43 | // 'n_fn' => $_searchString, |
---|
| 44 | // 'email' => $_searchString, |
---|
| 45 | // 'email_home' => $_searchString, |
---|
| 46 | // ),array('n_fn','email','email_home'),'n_fn','','%',false,'OR',array(0,20),array('owner' => 0)); |
---|
| 47 | // |
---|
| 48 | // if ($contacts && $accounts) |
---|
| 49 | // { |
---|
| 50 | // $contacts = array_merge($contacts,$accounts); |
---|
| 51 | // usort($contacts,create_function('$a,$b','return strcasecmp($a["n_fn"],$b["n_fn"]);')); |
---|
| 52 | // } |
---|
| 53 | // elseif($accounts) |
---|
| 54 | // { |
---|
| 55 | // $contacts =& $accounts; |
---|
| 56 | // } |
---|
| 57 | // unset($accounts); |
---|
| 58 | // } |
---|
| 59 | } else { |
---|
| 60 | // < 1.3 |
---|
| 61 | $contacts = $GLOBALS['egw']->contacts->read(0,20,array( |
---|
| 62 | 'fn' => 1, |
---|
| 63 | 'email' => 1, |
---|
| 64 | 'email_home' => 1, |
---|
| 65 | ), $_searchString, 'tid=n', '', 'fn'); |
---|
| 66 | } |
---|
| 67 | |
---|
| 68 | $response =& new xajaxResponse(); |
---|
| 69 | |
---|
| 70 | if(is_array($contacts)) { |
---|
| 71 | $innerHTML = ''; |
---|
| 72 | $jsArray = array(); |
---|
| 73 | $i = 0; |
---|
| 74 | |
---|
| 75 | foreach($contacts as $contact) { |
---|
| 76 | foreach(array($contact['email'],$contact['email_home']) as $email) { |
---|
| 77 | // avoid wrong addresses, if an rfc822 encoded address is in addressbook |
---|
| 78 | $email = preg_replace("/(^.*<)([a-zA-Z0-9_\-]+@[a-zA-Z0-9_\-\.]+)(.*)/",'$2',$email); |
---|
| 79 | if(!empty($email) && !isset($jsArray[$email])) { |
---|
| 80 | $i++; |
---|
| 81 | $str = $GLOBALS['egw']->translation->convert(trim($contact['n_fn'] ? $contact['n_fn'] : $contact['fn']) .' <'. trim($email) .'>', $this->charset, 'utf-8'); |
---|
| 82 | $innerHTML .= '<div class="inactiveResultRow" onclick="selectSuggestion('. $i .')">'. |
---|
| 83 | htmlentities($str, ENT_QUOTES, 'utf-8') .'</div>'; |
---|
| 84 | $jsArray[$email] = addslashes(trim($contact['n_fn'] ? $contact['n_fn'] : $contact['fn']) .' <'. trim($email) .'>'); |
---|
| 85 | } |
---|
| 86 | if ($i > 10) break; // we check for # of results here, as we might have empty email addresses |
---|
| 87 | } |
---|
| 88 | } |
---|
| 89 | |
---|
| 90 | if($jsArray) { |
---|
| 91 | $response->addAssign('resultBox', 'innerHTML', $innerHTML); |
---|
| 92 | $response->addScript('results = new Array("'.implode('","',$jsArray).'");'); |
---|
| 93 | $response->addScript('displayResultBox();'); |
---|
| 94 | } |
---|
| 95 | //$response->addScript("getResults();"); |
---|
| 96 | //$response->addScript("selectSuggestion(-1);"); |
---|
| 97 | } else { |
---|
| 98 | $response->addAssign('resultBox', 'className', 'resultBoxHidden'); |
---|
| 99 | } |
---|
| 100 | |
---|
| 101 | return $response->getXML(); |
---|
| 102 | } |
---|
| 103 | } |
---|