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

Revision 5130, 10.9 KB checked in by wmerlotto, 12 years ago (diff)

Ticket #2305 - Enviando alteracoes, desenvolvidas internamente na Prognus, do modulo services.

  • 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(to_ascii(names_ordered)) LIKE lower(to_ascii(\'%' . $search_for . '%\'))';                         
113                               
114        if (!$this->db->query($query))
115             return null;
116         
117         while($this->db->next_record())
118            $result[] = $this->db->row();
119
120         
121         
122         $all_contacts = array();
123                        foreach( $result as $i => $object )
124                        {
125                                if ( ! array_key_exists( $object[ 'id_contact' ], $all_contacts ) )
126                                        $all_contacts[ $object[ 'id_contact' ] ] = array(
127                                                'connection_value' => '',
128                                                'telephonenumber' => '',
129                                                'mobile' => '',
130                                                'cn' => '',
131                                                'id_contact' => '',
132                                                'id_connection' => '',
133                                                'alias' => '',
134                                                'birthdate' => '',
135                                                'sex' => '',
136                                                'pgp_key' => '',
137                                                'notes' => '',
138                                                'web_page' => '',
139                                                'corporate_name' => '',
140                                                'job_title' => '',
141                                                'department' => '',                             
142                                                'mail' => '',
143                                                'aternative-mail' => '',
144                                                'business-phone' => '',
145                                                'business-address' => '',
146                                                'business-complement' => '',
147                                                'business-postal_code' => '',
148                                                'business-city_name' => '',
149                                                'business-state_name' => '',
150                                                'business-id_country' => '',
151                                                'business-fax' => '',
152                                                'business-pager' => '',
153                                                'business-mobile' => '',
154                                                'business-address-2' => '',
155                                                'home-phone' => '',
156                                                'home-address' => '',
157                                                'home-complement' => '',
158                                                'home-postal_code' => '',
159                                                'home-city_name' => '',
160                                                'home-state_name' => '',
161                                                'home-fax' => '',
162                                                'home-pager' => '',
163                                                'home-address-2' => ''
164                                               
165                                               
166                                        );
167
168                                switch( $object[ 'id_typeof_contact_connection' ] )
169                                {
170                                        case 1 :
171                                                $all_contacts[ $object[ 'id_contact' ] ][ 'connection_value' ] = $object[ 'connection_value' ];
172                                                switch ( strtolower( $object[ 'connection_name' ] ) )
173                                                {
174                                                        case 'alternativo' :
175                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'alternative-mail' ] = $object[ 'connection_value' ];
176                                                                break;
177                                                        case 'principal' :
178                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'mail' ] = $object[ 'connection_value' ];
179                                                                break;
180                                                }
181                                                break;
182                                        case 2 :
183                                                $all_contacts[ $object[ 'id_contact' ] ][ 'telephonenumber' ] = $object[ 'connection_value' ];
184                                                switch ( strtolower( $object[ 'connection_name' ] ) )
185                                                {
186                                                        case 'casa' :
187                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-phone' ] = $object[ 'connection_value' ];
188                                                                break;
189                                                        case 'celular' :
190                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'mobile' ] = $object[ 'connection_value' ];
191                                                                break;
192                                                        case 'trabalho' :
193                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-phone' ] = $object[ 'connection_value' ];
194                                                                break;                                                         
195                                                        case 'fax' :
196                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-fax' ] = $object[ 'connection_value' ];
197                                                                break;
198                                                        case 'pager' :
199                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-pager' ] = $object[ 'connection_value' ];
200                                                                break;
201                                                        case 'celular corporativo' :
202                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-mobile' ] = $object[ 'connection_value' ];
203                                                                break;                                                         
204                                                        case 'pager corporativo' :
205                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-pager' ] = $object[ 'connection_value' ];
206                                                                break;
207                                                        case 'fax corporativo' :
208                                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-fax' ] = $object[ 'connection_value' ];
209                                                                break;
210                                                }
211                                                break;
212                                }
213
214                                $all_contacts[ $object[ 'id_contact' ] ][ 'cn' ] = $object[ 'names_ordered' ];
215                                $all_contacts[ $object[ 'id_contact' ] ][ 'id_contact' ]    = $object[ 'id_contact' ];
216                                $all_contacts[ $object[ 'id_contact' ] ][ 'id_connection' ] = $object[ 'id_connection' ];
217                                $all_contacts[ $object[ 'id_contact' ] ][ 'alias' ]         = $object[ 'alias' ];                               
218                                $all_contacts[ $object[ 'id_contact' ] ][ 'birthdate' ]         = $object[ 'birthdate' ];
219                                $all_contacts[ $object[ 'id_contact' ] ][ 'sex' ]               = $object[ 'sex' ];
220                                $all_contacts[ $object[ 'id_contact' ] ][ 'pgp_key' ]           = $object[ 'pgp_key' ];
221                                $all_contacts[ $object[ 'id_contact' ] ][ 'notes' ]         = $object[ 'notes' ];
222                                $all_contacts[ $object[ 'id_contact' ] ][ 'web_page' ]          = $object[ 'web_page' ];
223                                $all_contacts[ $object[ 'id_contact' ] ][ 'corporate_name' ]= $object[ 'corporate_name' ];
224                                $all_contacts[ $object[ 'id_contact' ] ][ 'job_title' ]         = $object[ 'job_title' ];
225                                $all_contacts[ $object[ 'id_contact' ] ][ 'department' ]    = $object[ 'department' ];
226
227                                switch( $object[ 'id_typeof_contact_address' ] )
228                                {
229                                        case 1 :
230                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-address' ]     = $object[ 'address1' ];
231                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-address-2' ]   = $object[ 'address2' ];
232                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-complement' ]  = $object[ 'complement' ];
233                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-postal_code' ] = $object[ 'postal_code' ];
234                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-city_name' ]   = $object[ 'city_name' ];
235                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-state_name' ]  = $object[ 'state_name' ];
236                                                $all_contacts[ $object[ 'id_contact' ] ][ 'business-id_country' ]  = $object[ 'id_country' ];
237                                                break;
238                                        case 2 :
239                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-address' ]     = $object[ 'address1' ];
240                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-address-2' ]   = $object[ 'address2' ];
241                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-complement' ]  = $object[ 'complement' ];
242                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-postal_code' ] = $object[ 'postal_code' ];
243                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-city_name' ]   = $object[ 'city_name' ];
244                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-state_name' ]  = $object[ 'state_name' ];
245                                                $all_contacts[ $object[ 'id_contact' ] ][ 'home-id_country' ]  = $object[ 'id_country' ];
246                                                break;
247                                }
248                        }
249
250                        return array_values($all_contacts);
251        }
252
253}
254
255ServiceLocator::register( 'db', new DBService() );
256
257?>
Note: See TracBrowser for help on using the repository browser.