source: trunk/services/class.db.php @ 5172

Revision 5172, 12.3 KB checked in by wmerlotto, 12 years ago (diff)

Ticket #2305 - Enviando alteracoes, desenvolvidas internamente na Prognus. Ultimas sincronizacoes...

  • Property svn:executable set to *
Line 
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
49class 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        $result = array();
73        $query = 'select'
74       
75                                                . ' C.id_connection,'
76                                                . ' A.id_contact,'
77                                                . ' A.names_ordered,'
78                                                . ' A.alias,'
79                                                . ' A.birthdate,'
80                                                . ' A.sex,'
81                                                . ' A.pgp_key,'
82                                                . ' A.notes,'
83                                                . ' A.web_page,'
84                                                . ' A.corporate_name,'
85                                                . ' A.job_title,'
86                                                . ' A.department,'
87                                                . ' C.connection_name,'
88                                                . ' C.connection_value,'
89                                                . ' B.id_typeof_contact_connection,'
90                                                . ' phpgw_cc_contact_addrs.id_typeof_contact_address,'
91                                                . ' phpgw_cc_addresses.address1,'
92                                                . ' phpgw_cc_addresses.address2,'
93                                                . ' phpgw_cc_addresses.complement,'
94                                                . ' phpgw_cc_addresses.postal_code,'
95                                                . ' phpgw_cc_city.city_name,'
96                                                . ' phpgw_cc_state.state_name,'
97                                                . ' phpgw_cc_addresses.id_country'
98                                                ;
99
100                $query .= ' from'
101                        . ' phpgw_cc_contact A'
102                        . ' inner join phpgw_cc_contact_conns B on ( A.id_contact = B.id_contact )'
103                        . ' inner join phpgw_cc_connections C on ( B.id_connection = C.id_connection )'
104                        . ' left join phpgw_cc_contact_addrs on ( A.id_contact = phpgw_cc_contact_addrs.id_contact )'
105                                                . ' left join phpgw_cc_addresses on ( phpgw_cc_contact_addrs.id_address = phpgw_cc_addresses.id_address )'
106                                                . ' left join phpgw_cc_city on ( phpgw_cc_addresses.id_city = phpgw_cc_city.id_city )'
107                                                . ' left join phpgw_cc_state on ( phpgw_cc_addresses.id_state = phpgw_cc_state.id_state)'
108                                                ;
109
110                                $query .= ' where '
111                                        . 'A.id_owner=' . $_SESSION['phpgw_info']['expressomail']['user']['account_id']
112                                        . ' and lower(translate(names_ordered, \'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇñÑ\',\'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN\'))'
113                                                                                . ' LIKE lower(translate(\'%' . $search_for . '%\', \'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇñÑ\',\'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN\'))';                   
114                               
115        if (!$this->db->query($query))
116             return null;
117         
118         while($this->db->next_record())
119            $result[] = $this->db->row();
120
121         
122         
123         $all_contacts = array();
124                        foreach( $result as $i => $object )
125                        {
126                                if ( ! array_key_exists( $object[ 'id_contact' ], $all_contacts ) )
127                                        $all_contacts[ $object[ 'id_contact' ] ] = array(
128                                                'connection_value' => '',
129                                                'telephonenumber' => '',
130                                                'mobile' => '',
131                                                'cn' => '',
132                                                'id_contact' => '',
133                                                'id_connection' => '',
134                                                'alias' => '',
135                                                'birthdate' => '',
136                                                'sex' => '',
137                                                'pgp_key' => '',
138                                                'notes' => '',
139                                                'web_page' => '',
140                                                'corporate_name' => '',
141                                                'job_title' => '',
142                                                'department' => '',                             
143                                                'mail' => '',
144                                                'aternative-mail' => '',
145                                                'business-phone' => '',
146                                                'business-address' => '',
147                                                'business-complement' => '',
148                                                'business-postal_code' => '',
149                                                'business-city_name' => '',
150                                                'business-state_name' => '',
151                                                'business-id_country' => '',
152                                                'business-fax' => '',
153                                                'business-pager' => '',
154                                                'business-mobile' => '',
155                                                'business-address-2' => '',
156                                                'home-phone' => '',
157                                                'home-address' => '',
158                                                'home-complement' => '',
159                                                'home-postal_code' => '',
160                                                'home-city_name' => '',
161                                                'home-state_name' => '',
162                                                'home-fax' => '',
163                                                'home-pager' => '',
164                                                'home-address-2' => ''
165                                               
166                                               
167                                        );
168
169                                switch( $object[ 'id_typeof_contact_connection' ] )
170                                {
171                                        case 1 :
172                                                $all_contacts[ $object[ 'id_contact' ] ][ 'connection_value' ] = $object[ 'connection_value' ];
173                                                switch ( strtolower( $object[ 'connection_name' ] ) )
174                                                {
175                                                        case 'alternativo' :
176                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'alternative-mail' ] = $object[ 'connection_value' ];
177                                                                break;
178                                                        case 'principal' :
179                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'mail' ] = $object[ 'connection_value' ];
180                                                                break;
181                                                }
182                                                break;
183                                        case 2 :
184                                                $all_contacts[ $object[ 'id_contact' ] ][ 'telephonenumber' ] = $object[ 'connection_value' ];
185                                                switch ( strtolower( $object[ 'connection_name' ] ) )
186                                                {
187                                                        case 'casa' :
188                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-phone' ] = $object[ 'connection_value' ];
189                                                                break;
190                                                        case 'celular' :
191                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'mobile' ] = $object[ 'connection_value' ];
192                                                                break;
193                                                        case 'trabalho' :
194                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-phone' ] = $object[ 'connection_value' ];
195                                                                break;                                                         
196                                                        case 'fax' :
197                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-fax' ] = $object[ 'connection_value' ];
198                                                                break;
199                                                        case 'pager' :
200                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-pager' ] = $object[ 'connection_value' ];
201                                                                break;
202                                                        case 'celular corporativo' :
203                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-mobile' ] = $object[ 'connection_value' ];
204                                                                break;                                                         
205                                                        case 'pager corporativo' :
206                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-pager' ] = $object[ 'connection_value' ];
207                                                                break;
208                                                        case 'fax corporativo' :
209                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-fax' ] = $object[ 'connection_value' ];
210                                                                break;
211                                                }
212                                                break;
213                                }
214
215                                $all_contacts[ $object[ 'id_contact' ] ][ 'cn' ] = $object[ 'names_ordered' ];
216                                $all_contacts[ $object[ 'id_contact' ] ][ 'id_contact' ]    = $object[ 'id_contact' ];
217                                $all_contacts[ $object[ 'id_contact' ] ][ 'id_connection' ] = $object[ 'id_connection' ];
218                                $all_contacts[ $object[ 'id_contact' ] ][ 'alias' ]         = $object[ 'alias' ];                               
219                                $all_contacts[ $object[ 'id_contact' ] ][ 'birthdate' ]         = $object[ 'birthdate' ];
220                                $all_contacts[ $object[ 'id_contact' ] ][ 'sex' ]               = $object[ 'sex' ];
221                                $all_contacts[ $object[ 'id_contact' ] ][ 'pgp_key' ]           = $object[ 'pgp_key' ];
222                                $all_contacts[ $object[ 'id_contact' ] ][ 'notes' ]         = $object[ 'notes' ];
223                                $all_contacts[ $object[ 'id_contact' ] ][ 'web_page' ]          = $object[ 'web_page' ];
224                                $all_contacts[ $object[ 'id_contact' ] ][ 'corporate_name' ]= $object[ 'corporate_name' ];
225                                $all_contacts[ $object[ 'id_contact' ] ][ 'job_title' ]         = $object[ 'job_title' ];
226                                $all_contacts[ $object[ 'id_contact' ] ][ 'department' ]    = $object[ 'department' ];
227
228                                switch( $object[ 'id_typeof_contact_address' ] )
229                                {
230                                        case 1 :
231                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-address' ]     = $object[ 'address1' ];
232                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-address-2' ]   = $object[ 'address2' ];
233                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-complement' ]  = $object[ 'complement' ];
234                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-postal_code' ] = $object[ 'postal_code' ];
235                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-city_name' ]   = $object[ 'city_name' ];
236                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-state_name' ]  = $object[ 'state_name' ];
237                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-id_country' ]  = $object[ 'id_country' ];
238                                                break;
239                                        case 2 :
240                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-address' ]     = $object[ 'address1' ];
241                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-address-2' ]   = $object[ 'address2' ];
242                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-complement' ]  = $object[ 'complement' ];
243                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-postal_code' ] = $object[ 'postal_code' ];
244                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-city_name' ]   = $object[ 'city_name' ];
245                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-state_name' ]  = $object[ 'state_name' ];
246                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-id_country' ]  = $object[ 'id_country' ];
247                                                break;
248                                }
249                        }
250
251                        return array_values($all_contacts);
252        }
253
254        function search_groups($search_for)
255    {
256        $result = array();
257                $query = 'select'
258                                                . ' G.oid,'
259                                                . ' G.title,'
260                                                . ' G.short_name';
261                $query .= ' from'
262                        . ' phpgw_cc_groups G';
263                $query .= ' where '
264                                                . ' G.owner=' . $_SESSION['phpgw_info']['expressomail']['user']['account_id']
265                                                . ' and lower(translate(G.title, \'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇñÑ\',\'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN\'))'
266                                                . ' LIKE lower(translate(\'%' . $search_for . '%\', \'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇñÑ\',\'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN\'))';       
267                                               
268                if (!$this->db->query($query))
269             return null;
270         
271         while($this->db->next_record())
272            $result[] = $this->db->row();
273
274                $all_contacts = array();
275                foreach( $result as $i => $object )
276                {
277                        if ( ! array_key_exists( $object[ 'oid' ], $all_contacts ) )
278                                $all_contacts[ $object[ 'oid' ] ] = array(
279                                        'title' => '',
280                                        'short_name' => '',
281                                );
282                                $all_contacts[ $object[ 'oid' ] ]['title'] = $object['title'];
283                                $all_contacts[ $object[ 'oid' ] ]['short_name'] = $object['short_name'];
284                }
285                return array_values($all_contacts);
286        }
287}
288
289ServiceLocator::register( 'db', new DBService() );
290
291?>
Note: See TracBrowser for help on using the repository browser.