1 | <?php |
---|
2 | /** |
---|
3 | * |
---|
4 | * Copyright (C) 2011 Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) |
---|
5 | * |
---|
6 | * This program is free software; you can redistribute it and/or |
---|
7 | * modify it under the terms of the GNU General Public License |
---|
8 | * as published by the Free Software Foundation; either version 2 |
---|
9 | * of the License, or (at your option) any later version. |
---|
10 | * |
---|
11 | * This program is distributed in the hope that it will be useful, |
---|
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
14 | * GNU General Public License for more details. |
---|
15 | * |
---|
16 | * You should have received a copy of the GNU General Public License |
---|
17 | * along with this program; if not, write to the Free Software |
---|
18 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
---|
19 | * |
---|
20 | * You can contact Prognus Software Livre headquarters at Av. Tancredo Neves, |
---|
21 | * 6731, PTI, Bl. 05, Esp. 02, Sl. 10, Foz do Iguaçu - PR - Brasil or at |
---|
22 | * e-mail address prognus@prognus.com.br. |
---|
23 | * |
---|
24 | * |
---|
25 | * @package DBService |
---|
26 | * @license http://www.gnu.org/copyleft/gpl.html GPL |
---|
27 | * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) |
---|
28 | * @sponsor Caixa Econômica Federal |
---|
29 | * @version 1.0 |
---|
30 | * @since 2.4.0 |
---|
31 | */ |
---|
32 | |
---|
33 | if(!isset($_SESSION['phpgw_info']['expressomail']['server']['db_name'])) { |
---|
34 | include_once('../header.inc.php'); |
---|
35 | $_SESSION['phpgw_info']['expressomail']['server']['db_name'] = $GLOBALS['phpgw_info']['server']['db_name']; |
---|
36 | $_SESSION['phpgw_info']['expressomail']['server']['db_host'] = $GLOBALS['phpgw_info']['server']['db_host']; |
---|
37 | $_SESSION['phpgw_info']['expressomail']['server']['db_port'] = $GLOBALS['phpgw_info']['server']['db_port']; |
---|
38 | $_SESSION['phpgw_info']['expressomail']['server']['db_user'] = $GLOBALS['phpgw_info']['server']['db_user']; |
---|
39 | $_SESSION['phpgw_info']['expressomail']['server']['db_pass'] = $GLOBALS['phpgw_info']['server']['db_pass']; |
---|
40 | $_SESSION['phpgw_info']['expressomail']['server']['db_type'] = $GLOBALS['phpgw_info']['server']['db_type']; |
---|
41 | } |
---|
42 | else{ |
---|
43 | define('PHPGW_INCLUDE_ROOT','../'); |
---|
44 | define('PHPGW_API_INC','../phpgwapi/inc'); |
---|
45 | include_once(PHPGW_API_INC.'/class.db.inc.php'); |
---|
46 | } |
---|
47 | |
---|
48 | |
---|
49 | class DBService |
---|
50 | { |
---|
51 | var $connection; |
---|
52 | var $db; |
---|
53 | var $user_id; |
---|
54 | |
---|
55 | function DBService() |
---|
56 | { |
---|
57 | $this->db = new db(); |
---|
58 | $this->db->Halt_On_Error = 'no'; |
---|
59 | $this->db->connect( |
---|
60 | $_SESSION['phpgw_info']['expressomail']['server']['db_name'], |
---|
61 | $_SESSION['phpgw_info']['expressomail']['server']['db_host'], |
---|
62 | $_SESSION['phpgw_info']['expressomail']['server']['db_port'], |
---|
63 | $_SESSION['phpgw_info']['expressomail']['server']['db_user'], |
---|
64 | $_SESSION['phpgw_info']['expressomail']['server']['db_pass'], |
---|
65 | $_SESSION['phpgw_info']['expressomail']['server']['db_type'] |
---|
66 | ); |
---|
67 | $this -> user_id = $_SESSION['phpgw_info']['expressomail']['user']['account_id']; |
---|
68 | } |
---|
69 | |
---|
70 | function search_contacts($search_for) |
---|
71 | { |
---|
72 | |
---|
73 | $result = array(); |
---|
74 | $query = 'select' |
---|
75 | |
---|
76 | . ' C.id_connection,' |
---|
77 | . ' A.id_contact,' |
---|
78 | . ' A.names_ordered,' |
---|
79 | . ' A.alias,' |
---|
80 | . ' A.birthdate,' |
---|
81 | . ' A.sex,' |
---|
82 | . ' A.pgp_key,' |
---|
83 | . ' A.notes,' |
---|
84 | . ' A.web_page,' |
---|
85 | . ' A.corporate_name,' |
---|
86 | . ' A.job_title,' |
---|
87 | . ' A.department,' |
---|
88 | . ' C.connection_name,' |
---|
89 | . ' C.connection_value,' |
---|
90 | . ' B.id_typeof_contact_connection,' |
---|
91 | . ' phpgw_cc_contact_addrs.id_typeof_contact_address,' |
---|
92 | . ' phpgw_cc_addresses.address1,' |
---|
93 | . ' phpgw_cc_addresses.address2,' |
---|
94 | . ' phpgw_cc_addresses.complement,' |
---|
95 | . ' phpgw_cc_addresses.postal_code,' |
---|
96 | . ' phpgw_cc_city.city_name,' |
---|
97 | . ' phpgw_cc_state.state_name,' |
---|
98 | . ' phpgw_cc_addresses.id_country' |
---|
99 | ; |
---|
100 | |
---|
101 | $query .= ' from' |
---|
102 | . ' phpgw_cc_contact A' |
---|
103 | . ' inner join phpgw_cc_contact_conns B on ( A.id_contact = B.id_contact )' |
---|
104 | . ' inner join phpgw_cc_connections C on ( B.id_connection = C.id_connection )' |
---|
105 | . ' left join phpgw_cc_contact_addrs on ( A.id_contact = phpgw_cc_contact_addrs.id_contact )' |
---|
106 | . ' left join phpgw_cc_addresses on ( phpgw_cc_contact_addrs.id_address = phpgw_cc_addresses.id_address )' |
---|
107 | . ' left join phpgw_cc_city on ( phpgw_cc_addresses.id_city = phpgw_cc_city.id_city )' |
---|
108 | . ' left join phpgw_cc_state on ( phpgw_cc_addresses.id_state = phpgw_cc_state.id_state)' |
---|
109 | ; |
---|
110 | |
---|
111 | $query .= ' where ' |
---|
112 | . 'A.id_owner=' . $_SESSION['phpgw_info']['expressomail']['user']['account_id'] |
---|
113 | . ' and lower(translate(names_ordered, \'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇñÑ\',\'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN\'))' |
---|
114 | . ' LIKE lower(translate(\'%' . $search_for . '%\', \'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇñÑ\',\'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN\'))'; |
---|
115 | |
---|
116 | //Se não existir parametro na busca, limita os usuarios no resultado da pesquisa. |
---|
117 | if(!$search_for){ |
---|
118 | $query .= 'LIMIT 11'; |
---|
119 | } |
---|
120 | |
---|
121 | if (!$this->db->query($query)) |
---|
122 | return null; |
---|
123 | |
---|
124 | while($this->db->next_record()) |
---|
125 | $result[] = $this->db->row(); |
---|
126 | |
---|
127 | |
---|
128 | |
---|
129 | $all_contacts = array(); |
---|
130 | foreach( $result as $i => $object ) |
---|
131 | { |
---|
132 | if ( ! array_key_exists( $object[ 'id_contact' ], $all_contacts ) ) |
---|
133 | $all_contacts[ $object[ 'id_contact' ] ] = array( |
---|
134 | 'connection_value' => '', |
---|
135 | 'telephonenumber' => '', |
---|
136 | 'mobile' => '', |
---|
137 | 'cn' => '', |
---|
138 | 'id_contact' => '', |
---|
139 | 'id_connection' => '', |
---|
140 | 'alias' => '', |
---|
141 | 'birthdate' => '', |
---|
142 | 'sex' => '', |
---|
143 | 'pgp_key' => '', |
---|
144 | 'notes' => '', |
---|
145 | 'web_page' => '', |
---|
146 | 'corporate_name' => '', |
---|
147 | 'job_title' => '', |
---|
148 | 'department' => '', |
---|
149 | 'mail' => '', |
---|
150 | 'aternative-mail' => '', |
---|
151 | 'business-phone' => '', |
---|
152 | 'business-address' => '', |
---|
153 | 'business-complement' => '', |
---|
154 | 'business-postal_code' => '', |
---|
155 | 'business-city_name' => '', |
---|
156 | 'business-state_name' => '', |
---|
157 | 'business-id_country' => '', |
---|
158 | 'business-fax' => '', |
---|
159 | 'business-pager' => '', |
---|
160 | 'business-mobile' => '', |
---|
161 | 'business-address-2' => '', |
---|
162 | 'home-phone' => '', |
---|
163 | 'home-address' => '', |
---|
164 | 'home-complement' => '', |
---|
165 | 'home-postal_code' => '', |
---|
166 | 'home-city_name' => '', |
---|
167 | 'home-state_name' => '', |
---|
168 | 'home-fax' => '', |
---|
169 | 'home-pager' => '', |
---|
170 | 'home-address-2' => '' |
---|
171 | |
---|
172 | |
---|
173 | ); |
---|
174 | |
---|
175 | switch( $object[ 'id_typeof_contact_connection' ] ) |
---|
176 | { |
---|
177 | case 1 : |
---|
178 | $all_contacts[ $object[ 'id_contact' ] ][ 'connection_value' ] = $object[ 'connection_value' ]; |
---|
179 | switch ( strtolower( $object[ 'connection_name' ] ) ) |
---|
180 | { |
---|
181 | case 'alternativo' : |
---|
182 | $all_contacts[ $object[ 'id_contact' ] ][ 'alternative-mail' ] = $object[ 'connection_value' ]; |
---|
183 | break; |
---|
184 | case 'principal' : |
---|
185 | $all_contacts[ $object[ 'id_contact' ] ][ 'mail' ] = $object[ 'connection_value' ]; |
---|
186 | break; |
---|
187 | } |
---|
188 | break; |
---|
189 | case 2 : |
---|
190 | $all_contacts[ $object[ 'id_contact' ] ][ 'telephonenumber' ] = $object[ 'connection_value' ]; |
---|
191 | switch ( strtolower( $object[ 'connection_name' ] ) ) |
---|
192 | { |
---|
193 | case 'casa' : |
---|
194 | $all_contacts[ $object[ 'id_contact' ] ][ 'home-phone' ] = $object[ 'connection_value' ]; |
---|
195 | break; |
---|
196 | case 'celular' : |
---|
197 | $all_contacts[ $object[ 'id_contact' ] ][ 'mobile' ] = $object[ 'connection_value' ]; |
---|
198 | break; |
---|
199 | case 'trabalho' : |
---|
200 | $all_contacts[ $object[ 'id_contact' ] ][ 'business-phone' ] = $object[ 'connection_value' ]; |
---|
201 | break; |
---|
202 | case 'fax' : |
---|
203 | $all_contacts[ $object[ 'id_contact' ] ][ 'home-fax' ] = $object[ 'connection_value' ]; |
---|
204 | break; |
---|
205 | case 'pager' : |
---|
206 | $all_contacts[ $object[ 'id_contact' ] ][ 'home-pager' ] = $object[ 'connection_value' ]; |
---|
207 | break; |
---|
208 | case 'celular corporativo' : |
---|
209 | $all_contacts[ $object[ 'id_contact' ] ][ 'business-mobile' ] = $object[ 'connection_value' ]; |
---|
210 | break; |
---|
211 | case 'pager corporativo' : |
---|
212 | $all_contacts[ $object[ 'id_contact' ] ][ 'business-pager' ] = $object[ 'connection_value' ]; |
---|
213 | break; |
---|
214 | case 'fax corporativo' : |
---|
215 | $all_contacts[ $object[ 'id_contact' ] ][ 'business-fax' ] = $object[ 'connection_value' ]; |
---|
216 | break; |
---|
217 | } |
---|
218 | break; |
---|
219 | } |
---|
220 | |
---|
221 | $all_contacts[ $object[ 'id_contact' ] ][ 'cn' ] = utf8_encode($object[ 'names_ordered' ]); |
---|
222 | $all_contacts[ $object[ 'id_contact' ] ][ 'id_contact' ] = $object[ 'id_contact' ]; |
---|
223 | $all_contacts[ $object[ 'id_contact' ] ][ 'id_connection' ] = $object[ 'id_connection' ]; |
---|
224 | $all_contacts[ $object[ 'id_contact' ] ][ 'alias' ] = $object[ 'alias' ]; |
---|
225 | $all_contacts[ $object[ 'id_contact' ] ][ 'birthdate' ] = $object[ 'birthdate' ]; |
---|
226 | $all_contacts[ $object[ 'id_contact' ] ][ 'sex' ] = $object[ 'sex' ]; |
---|
227 | $all_contacts[ $object[ 'id_contact' ] ][ 'pgp_key' ] = $object[ 'pgp_key' ]; |
---|
228 | $all_contacts[ $object[ 'id_contact' ] ][ 'notes' ] = $object[ 'notes' ]; |
---|
229 | $all_contacts[ $object[ 'id_contact' ] ][ 'web_page' ] = $object[ 'web_page' ]; |
---|
230 | $all_contacts[ $object[ 'id_contact' ] ][ 'corporate_name' ]= $object[ 'corporate_name' ]; |
---|
231 | $all_contacts[ $object[ 'id_contact' ] ][ 'job_title' ] = $object[ 'job_title' ]; |
---|
232 | $all_contacts[ $object[ 'id_contact' ] ][ 'department' ] = $object[ 'department' ]; |
---|
233 | |
---|
234 | switch( $object[ 'id_typeof_contact_address' ] ) |
---|
235 | { |
---|
236 | case 1 : |
---|
237 | $all_contacts[ $object[ 'id_contact' ] ][ 'business-address' ] = $object[ 'address1' ]; |
---|
238 | $all_contacts[ $object[ 'id_contact' ] ][ 'business-address-2' ] = $object[ 'address2' ]; |
---|
239 | $all_contacts[ $object[ 'id_contact' ] ][ 'business-complement' ] = $object[ 'complement' ]; |
---|
240 | $all_contacts[ $object[ 'id_contact' ] ][ 'business-postal_code' ] = $object[ 'postal_code' ]; |
---|
241 | $all_contacts[ $object[ 'id_contact' ] ][ 'business-city_name' ] = $object[ 'city_name' ]; |
---|
242 | $all_contacts[ $object[ 'id_contact' ] ][ 'business-state_name' ] = $object[ 'state_name' ]; |
---|
243 | $all_contacts[ $object[ 'id_contact' ] ][ 'business-id_country' ] = $object[ 'id_country' ]; |
---|
244 | break; |
---|
245 | case 2 : |
---|
246 | $all_contacts[ $object[ 'id_contact' ] ][ 'home-address' ] = $object[ 'address1' ]; |
---|
247 | $all_contacts[ $object[ 'id_contact' ] ][ 'home-address-2' ] = $object[ 'address2' ]; |
---|
248 | $all_contacts[ $object[ 'id_contact' ] ][ 'home-complement' ] = $object[ 'complement' ]; |
---|
249 | $all_contacts[ $object[ 'id_contact' ] ][ 'home-postal_code' ] = $object[ 'postal_code' ]; |
---|
250 | $all_contacts[ $object[ 'id_contact' ] ][ 'home-city_name' ] = $object[ 'city_name' ]; |
---|
251 | $all_contacts[ $object[ 'id_contact' ] ][ 'home-state_name' ] = $object[ 'state_name' ]; |
---|
252 | $all_contacts[ $object[ 'id_contact' ] ][ 'home-id_country' ] = $object[ 'id_country' ]; |
---|
253 | break; |
---|
254 | } |
---|
255 | } |
---|
256 | |
---|
257 | return array_values($all_contacts); |
---|
258 | } |
---|
259 | |
---|
260 | function search_groups($search_for) |
---|
261 | { |
---|
262 | $result = array(); |
---|
263 | $query = 'select' |
---|
264 | . ' G.oid,' |
---|
265 | . ' G.id_group,' |
---|
266 | . ' G.title,' |
---|
267 | . ' G.short_name'; |
---|
268 | $query .= ' from' |
---|
269 | . ' phpgw_cc_groups G'; |
---|
270 | $query .= ' where ' |
---|
271 | . ' G.owner=' . $_SESSION['phpgw_info']['expressomail']['user']['account_id'] |
---|
272 | . ' and lower(translate(G.title, \'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇñÑ\',\'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN\'))' |
---|
273 | . ' LIKE lower(translate(\'%' . $search_for . '%\', \'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇñÑ\',\'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN\'))'; |
---|
274 | |
---|
275 | if (!$this->db->query($query)) |
---|
276 | return null; |
---|
277 | |
---|
278 | while($this->db->next_record()) |
---|
279 | $result[] = $this->db->row(); |
---|
280 | |
---|
281 | $all_contacts = array(); |
---|
282 | foreach( $result as $i => $object ) |
---|
283 | { |
---|
284 | if ( ! array_key_exists( $object[ 'oid' ], $all_contacts ) ) |
---|
285 | $all_contacts[ $object[ 'oid' ] ] = array( |
---|
286 | 'title' => '', |
---|
287 | 'short_name' => '', |
---|
288 | ); |
---|
289 | $all_contacts[ $object[ 'oid' ] ]['title'] = $object['title']; |
---|
290 | $all_contacts[ $object[ 'oid' ] ]['short_name'] = $object['short_name']; |
---|
291 | $all_contacts[ $object[ 'oid' ] ]['id'] = $object[ 'id_group' ]; |
---|
292 | } |
---|
293 | return array_values($all_contacts); |
---|
294 | } |
---|
295 | } |
---|
296 | |
---|
297 | ServiceLocator::register( 'db', new DBService() ); |
---|
298 | |
---|
299 | ?> |
---|