source: trunk/listAdmin/inc/class.db_functions.inc.php @ 7673

Revision 7673, 17.7 KB checked in by douglasz, 11 years ago (diff)

Ticket #3236 - Correcoes para Performance: Function Within Loop Declaration.

Line 
1<?php
2define('PHPGW_INCLUDE_ROOT','../');     
3define('PHPGW_API_INC','../phpgwapi/inc');
4include_once(PHPGW_API_INC.'/class.db.inc.php');
5
6class db_functions
7{       
8        var $db;
9        var $user_id;
10       
11        function db_functions(){
12               
13                if (is_array($_SESSION['phpgw_info']['expresso']['server']))
14                        $GLOBALS['phpgw_info']['server'] = $_SESSION['phpgw_info']['expresso']['server'];
15                else
16                        $_SESSION['phpgw_info']['expresso']['server'] = $GLOBALS['phpgw_info']['server'];
17               
18                $this->db = new db();
19                $this->db->Halt_On_Error = 'no';
20                $this->db->connect(
21                                $_SESSION['phpgw_info']['expresso']['server']['db_name'],
22                                $_SESSION['phpgw_info']['expresso']['server']['db_host'],
23                                $_SESSION['phpgw_info']['expresso']['server']['db_port'],
24                                $_SESSION['phpgw_info']['expresso']['server']['db_user'],
25                                $_SESSION['phpgw_info']['expresso']['server']['db_pass'],
26                                $_SESSION['phpgw_info']['expresso']['server']['db_type']
27                );             
28                $this->user_id = $_SESSION['phpgw_info']['expresso']['user']['account_id'];     
29        }
30
31        // BEGIN of functions.
32        function read_acl($account_lid)
33        {
34                $query = "SELECT * FROM phpgw_expressoadmin WHERE manager_lid = '" . $account_lid . "'";
35                $this->db->query($query);
36                while($this->db->next_record())
37                        $result[] = $this->db->row();
38                return $result;
39        }
40       
41        /*
42        function get_sectors($params)
43        {
44                $organization = strtolower($params['organization']);
45               
46                $result = array();
47                // Pesquisa no BD os nomes setores no tabela phpgw_expressoadmin_sectors.
48                $query = "SELECT sector FROM phpgw_expressoadmin_sectors WHERE organization='$organization' ORDER by sector ASC";
49
50        if (!$this->db->query($query))
51                return 'Erro em get_sectors:' . pg_last_error();
52
53                while($this->db->next_record())
54                        $result[] = $this->db->row();
55
56                return $result;
57        }
58        */
59       
60        function get_next_id()
61        {
62                // Busco o ID dos accounts
63                $query_accounts = "SELECT id FROM phpgw_nextid WHERE appname = 'accounts'";
64        if (!$this->db->query($query_accounts))
65                return 'Erro em get_next_id:' . pg_last_error();
66                while($this->db->next_record())
67                        $result_accounts[] = $this->db->row();
68                $accounts_id = $result_accounts[0]['id'];
69               
70                // Busco o ID dos groups
71                $query_groups = "SELECT id FROM phpgw_nextid WHERE appname = 'groups'";
72        if (!$this->db->query($query_groups))
73                return 'Erro em get_next_id:' . pg_last_error();
74                while($this->db->next_record())
75                        $result_groups[] = $this->db->row();
76                $groups_id = $result_groups[0]['id'];
77               
78                //Retorna o maior dos ID's
79                if ($accounts_id >= $groups_id)
80                        return $accounts_id;
81                else
82                        return $groups_id;
83                }
84       
85        function increment_id($id, $type)
86        {
87                $sql = "UPDATE phpgw_nextid set id = '".$id."' WHERE appname = '" . $type . "'";
88                if (!$this->db->query($sql))
89                        return 'Erro em increment_id:' . pg_last_error();
90                else
91                        return true;
92        }
93       
94        function add_user2group($gidnumber, $uidnumber)
95        {
96                $query = "SELECT acl_location FROM phpgw_acl WHERE acl_appname = 'phpgw_group' AND acl_location = '" . $gidnumber . "' AND acl_account = '" . $uidnumber . "'";
97                if (!$this->db->query($query))
98                {
99                        $result['status'] = false;
100                        $result['msg'] = 'Erro em add_user2group:' . pg_last_error();
101                        return $result;
102                }
103                while($this->db->next_record())
104                        $user_in_group[] = $this->db->row();
105               
106                if (count($user_in_group) == 0)
107                {
108                        $sql = "INSERT INTO phpgw_acl (acl_appname, acl_location, acl_account, acl_rights) "
109                        . "VALUES('phpgw_group','" . $gidnumber . "','" . $uidnumber . "','1')";
110                        if (!$this->db->query($sql))
111                        {
112                                $result['status'] = false;
113                                $result['msg'] = 'Erro em add_user2group:' . pg_last_error();
114                                return $result;
115                        }
116                }
117                $result['status'] = true;
118                return $result;
119        }
120
121        function remove_user2group($gidnumber, $uidnumber)
122        {
123                $query = "SELECT acl_location FROM phpgw_acl WHERE acl_appname = 'phpgw_group' AND acl_location = '" . $gidnumber . "' AND acl_account = '" . $uidnumber . "'";
124                if (!$this->db->query($query))
125                {
126                        $result['status'] = false;
127                        $result['msg'] = 'Erro em add_user2group:' . pg_last_error();
128                        return $result;
129                }
130                while($this->db->next_record())
131                        $user_in_group[] = $this->db->row();
132               
133                if (count($user_in_group) > 0)
134                {
135                        $sql = "DELETE FROM phpgw_acl WHERE acl_appname = 'phpgw_group' AND acl_location = '" . $gidnumber . "' AND acl_account = '".$uidnumber."'";
136                        if (!$this->db->query($sql))
137                        {
138                                $result['status'] = false;
139                                $result['msg'] = 'Erro em add_user2group:' . pg_last_error();
140                                return $result;
141                        }
142                }
143                $result['status'] = true;
144                return $result;
145        }
146
147        function add_pref_changepassword($uidnumber)
148        {
149                $query = "SELECT * FROM phpgw_acl WHERE acl_appname = 'preferences' AND acl_location = 'changepassword' AND acl_account = '" . $uidnumber . "'";
150                if (!$this->db->query($query))
151                {
152                        $result['status'] = false;
153                        $result['msg'] = 'Erro em add_pref_changepassword:' . pg_last_error();
154                        return $result;
155                }
156                while($this->db->next_record())
157                        $user_pref_changepassword[] = $this->db->row();
158               
159                if (count($user_pref_changepassword) == 0)
160                {
161                        $sql = "INSERT INTO phpgw_acl (acl_appname, acl_location, acl_account, acl_rights) "
162                        . "VALUES('preferences','changepassword','" . $uidnumber . "','1')";
163                        if (!$this->db->query($sql))
164                        {
165                                $result['status'] = false;
166                                $result['msg'] = 'Erro em add_pref_changepassword:' . pg_last_error();
167                                return $result;
168                        }
169                }
170                $result['status'] = true;
171                return $result;
172        }       
173
174        function remove_pref_changepassword($uidnumber)
175        {
176                $query = "SELECT * FROM phpgw_acl WHERE acl_appname = 'preferences' AND acl_location = 'changepassword' AND acl_account = '" . $uidnumber . "'";
177                if (!$this->db->query($query))
178                {
179                        $result['status'] = false;
180                        $result['msg'] = 'Erro em add_pref_changepassword:' . pg_last_error();
181                        return $result;
182                }
183                while($this->db->next_record())
184                        $user_pref_changepassword[] = $this->db->row();
185               
186                if (count($user_pref_changepassword) != 0)
187                {
188                        $sql = "DELETE FROM phpgw_acl WHERE acl_appname = 'preferences' AND acl_location = 'changepassword' AND acl_account = '".$uidnumber."'";
189                        if (!$this->db->query($sql))
190                        {
191                                $result['status'] = false;
192                                $result['msg'] = 'Erro em remove_pref_changepassword:' . pg_last_error();
193                                return $result;
194                        }
195                }
196                $result['status'] = true;
197                return $result;
198        }       
199       
200        function add_id2apps($id, $apps)
201        {
202                $result['status'] = true;
203                if ($apps)
204                {
205                        foreach($apps as $app => $value)
206                        {
207                                $query = "SELECT * FROM phpgw_acl WHERE acl_appname = '".$app."' AND acl_location = 'run' AND acl_account = '" . $id . "'";
208                                if (!$this->db->query($query))
209                                {
210                                        $result['status'] = false;
211                                        $result['msg'] = 'Erro em add_id2apps: ' . pg_last_error();
212                                        return $result;
213                                }
214                               
215                                while($this->db->next_record())
216                                        $user_app[] = $this->db->row();
217                                       
218                                if (count($user_app) == 0)
219                                {
220                                        $sql = "INSERT INTO phpgw_acl (acl_appname, acl_location, acl_account, acl_rights) "
221                                        . "VALUES('".$app."','run','" . $id . "','1')";
222                                               
223                                        if (!$this->db->query($sql))
224                                        {
225                                                $result['status'] = false;
226                                                $result['msg'] = 'Erro em add_id2apps: ' . pg_last_error();
227                                                return $result;
228                                        }
229                                        else
230                                        {
231                                                $this->write_log("Adicionado aplicativo $app ao id",$id,'','','');     
232                                        }
233                                }
234                        }
235                }
236                return $result;
237        }
238
239        function remove_id2apps($id, $apps)
240        {
241                $result['status'] = true;
242                if ($apps)
243                {
244                        foreach($apps as $app => $value)
245                        {
246                                $query = "SELECT acl_location FROM phpgw_acl WHERE acl_appname = '" . $app . "' AND acl_location = 'run' AND acl_account = '" . $id . "'";
247                               
248                                if (!$this->db->query($query))
249                                {
250                                        $result['status'] = false;
251                                        $result['msg'] = 'Erro em remove_id2apps:' . pg_last_error();
252                                        return $result;
253                                }
254                                while($this->db->next_record())
255                                        $user_in_group[] = $this->db->row();
256                               
257                                if (count($user_in_group) > 0)
258                                {
259                                        $sql = "DELETE FROM phpgw_acl WHERE acl_appname = '" . $app . "' AND acl_location = 'run' AND acl_account = '".$id."'";
260                                        if (!$this->db->query($sql))
261                                        {
262                                                $result['status'] = false;
263                                                $result['msg'] = 'Erro em remove_id2apps:' . pg_last_error();
264                                                return $result;
265                                        }
266                                        else
267                                        {
268                                                $this->write_log("Removido aplicativo $app do id",$id,'','','');       
269                                        }
270                                }
271                        }
272                }
273                return $result;
274        }
275
276
277        function get_user_info($uidnumber)
278        {
279                // Groups
280                $query = "SELECT acl_location FROM phpgw_acl WHERE acl_appname = 'phpgw_group' AND acl_account = '".$uidnumber."'";
281                $this->db->query($query);
282                while($this->db->next_record())
283                        $user_app[] = $this->db->row();
284
285        $user_app_count = count($user_app);
286                for ($i=0; $i<$user_app_count; ++$i)
287                        $return['groups'][] = $user_app[$i]['acl_location'];
288               
289                // ChangePassword
290                $query = "SELECT acl_rights FROM phpgw_acl WHERE acl_appname = 'preferences' AND acl_location = 'changepassword' AND acl_account = '".$uidnumber."'";
291                $this->db->query($query);
292                while($this->db->next_record())
293                        $changepassword[] = $this->db->row();
294                $return['changepassword'] = $changepassword[0]['acl_rights'];
295               
296                // Apps
297                $query = "SELECT acl_appname FROM phpgw_acl WHERE acl_account = '".$uidnumber."' AND acl_location = 'run'";
298                $this->db->query($query);
299                while($this->db->next_record())
300                        $user_apps[] = $this->db->row();
301                       
302                if ($user_apps)
303                {                       
304                        foreach ($user_apps as $app)
305                        {
306                                $return['apps'][$app['acl_appname']] = '1';
307                        }
308                }
309               
310                return $return;
311        }
312       
313        function get_group_info($gidnumber)
314        {
315                // Apps
316                $query = "SELECT acl_appname FROM phpgw_acl WHERE acl_account = '".$gidnumber."' AND acl_location = 'run'";
317                $this->db->query($query);
318                while($this->db->next_record())
319                        $group_apps[] = $this->db->row();
320               
321                if ($group_apps)
322                {                       
323                        foreach ($group_apps as $app)
324                        {
325                                $return['apps'][$app['acl_appname']] = '1';
326                        }
327                }
328               
329                // Members
330                $query = "SELECT acl_account FROM phpgw_acl WHERE acl_appname = 'phpgw_group' AND acl_location = '" . $gidnumber . "'";
331               
332                $this->db->query($query);
333                while($this->db->next_record())
334                        $group_members[] = $this->db->row();
335
336                if ($group_members)
337                {
338                        foreach ($group_members as $member)
339                        {
340                                $return['members'][] = $member['acl_account'];
341                        }
342                }
343                else
344                        $return['members'] = array();
345
346                return $return;
347        }
348       
349        function default_user_password_is_set($uid)
350        {
351                $query = "SELECT uid FROM phpgw_expressoadmin_passwords WHERE uid = '" . $uid . "'";
352                $this->db->query($query);
353                while($this->db->next_record())
354                {
355                        $userPassword[] = $this->db->row();
356                }
357                if (count($userPassword) == 0)
358                        return false;
359                else
360                        return true;
361        }
362       
363        function set_user_password($uid, $password)
364        {
365                $query = "SELECT uid FROM phpgw_expressoadmin_passwords WHERE uid = '" . $uid . "'";
366                $this->db->query($query);
367                while($this->db->next_record())
368                {
369                        $user[] = $this->db->row();
370                }
371                if (count($user) == 0)
372                {
373                        $sql = "INSERT INTO phpgw_expressoadmin_passwords (uid, password) VALUES('".$uid."','".$password."')";
374
375                        if (!$this->db->query($sql))
376                        {
377                                $result['status'] = false;
378                                $result['msg'] = 'Erro em set_user_password: ' . pg_last_error();
379                                return $result;
380                        }
381                }
382                return true;
383        }
384       
385        function get_user_password($uid)
386        {
387                $query = "SELECT password FROM phpgw_expressoadmin_passwords WHERE uid = '" . $uid . "'";
388                $this->db->query($query);
389                while($this->db->next_record())
390                {
391                        $userPassword[] = $this->db->row();
392                }
393               
394                if (count($userPassword) == 1)
395                {
396                        $sql = "DELETE FROM phpgw_expressoadmin_passwords WHERE uid = '" . $uid . "'";
397                        $this->db->query($sql);
398                        return $userPassword[0]['password'];
399                }
400                else
401                        return false;
402        }
403       
404        function delete_user($uidnumber)
405        {
406                // AGENDA
407                $this->db->query('SELECT cal_id FROM phpgw_cal WHERE owner ='.$uidnumber);
408                while($this->db->next_record())
409                {
410                        $ids[] = $this->db->row();
411                }
412                if (count($ids))
413                {
414                        foreach($ids as $i => $id)
415                        {
416                                $this->db->query('DELETE FROM phpgw_cal WHERE cal_id='.$id['cal_id']);
417                                $this->db->query('DELETE FROM phpgw_cal_user WHERE cal_id='.$id['cal_id']);
418                                $this->db->query('DELETE FROM phpgw_cal_repeats WHERE cal_id='.$id['cal_id']);
419                                $this->db->query('DELETE FROM phpgw_cal_extra WHERE cal_id='.$id['cal_id']);
420                        }
421                }
422                       
423                // CONATOS pessoais e grupos.
424                $this->db->query('SELECT id_contact FROM phpgw_cc_contact WHERE id_owner ='.$uidnumber);
425                while($this->db->next_record())
426                {
427                        $ids[] = $this->db->row();
428                }
429
430                if (count($ids))
431                {
432                        foreach($ids as $i => $id_contact)
433                        {
434                                $this->db->query('SELECT id_connection FROM phpgw_cc_contact_conns WHERE id_contact='.$id_contact['id_contact']);
435                                while($this->db->next_record())
436                                {
437                                        $id_conns[] = $this->db->row();
438                                }
439                                if (count($id_conns))
440                                {
441                                        foreach($id_conns as $j => $id_conn)
442                                        {
443                                                $this->db->query('DELETE FROM phpgw_cc_connections WHERE id_connection='.$id_conn['id_connection']);
444                                                $this->db->query('DELETE FROM phpgw_cc_contact_grps WHERE id_connection='.$id_conn['id_connection']);
445                                        }
446                                }
447                                       
448                                $this->db->query('SELECT id_address FROM phpgw_cc_contact_addrs WHERE id_contact='.$id_contact['id_contact']);
449                                while($this->db->next_record())
450                                {
451                                        $id_addresses[] = $$this->db->row();
452                                }
453                                if (count($id_addresses))
454                                {
455                                        foreach($id_addresses as $j => $id_addrs)
456                                        {
457                                                $this->db->query('DELETE FROM phpgw_cc_addresses WHERE id_address='.$id_addrs['id_address']);
458                                        }
459                                }
460                                $this->db->query('DELETE FROM phpgw_cc_contact WHERE id_contact='.$id_contact['id_contact']);
461                                $this->db->query('DELETE FROM phpgw_cc_contact_conns WHERE id_contact='.$id_contact['id_contact']);
462                                $this->db->query('DELETE FROM phpgw_cc_contact_addrs WHERE id_contact='.$id_contact['id_contact']);
463                        }
464                }
465                $this->db->query('DELETE FROM phpgw_cc_groups WHERE owner='.$uidnumber);
466                       
467                // PREFERENCIAS
468                $this->db->query('DELETE FROM phpgw_preferences WHERE preference_owner='.$uidnumber);
469                       
470                // ACL
471                $this->db->query('DELETE FROM phpgw_acl WHERE acl_account='.$uidnumber);
472               
473                // Corrigir
474                $return['status'] = true;
475                return $return;
476        }
477
478        function delete_group($gidnumber)
479        {
480                // ACL
481                $this->db->query('DELETE FROM phpgw_acl WHERE acl_location='.$gidnumber);
482                $this->db->query('DELETE FROM phpgw_acl WHERE acl_account='.$gidnumber);
483               
484                // Corrigir
485                $return['status'] = true;
486                return $return;
487        }
488       
489        function write_log($action, $groupinfo='', $userinfo='', $appinfo='', $msg_log='')
490        {
491                $sql = "INSERT INTO phpgw_expressoadmin_log (date, manager, action, groupinfo, userinfo, appinfo, msg) "
492                . "VALUES('now','" . $_SESSION['phpgw_info']['expresso']['user']['account_lid'] . "','" . strtolower($action) . "','" . strtolower($groupinfo) . "','" . strtolower($userinfo) . "','" . strtolower($appinfo) . "','" .strtolower($msg_log) . "')";
493                $this->db->query($sql);
494                return;
495        }
496       
497        function get_sieve_info()
498        {
499                $this->db->query('SELECT profileID,imapenablesieve,imapsieveserver,imapsieveport FROM phpgw_emailadmin');
500               
501                $i=0;
502                while($this->db->next_record())
503                {
504                        $serverList[$i]['profileID']            = $this->db->f(0);
505                        $serverList[$i]['imapenablesieve']      = $this->db->f(1);
506                        $serverList[$i]['imapsieveserver']      = $this->db->f(2);
507                        $serverList[$i]['imapsieveport']        = $this->db->f(3);
508                        ++$i;
509                }
510               
511                return $serverList;
512        }
513       
514        function get_apps($account_lid)
515        {
516                $this->db->query("SELECT * FROM phpgw_expressoadmin_apps WHERE manager_lid = '".$account_lid."'");
517               
518                while($this->db->next_record())
519                {
520                        $tmp = $this->db->row();
521                        $availableApps[$tmp['app']] = 'run';
522                }
523                       
524                return $availableApps;
525        }
526       
527        function get_sambadomains_list()
528        {
529                $query = "SELECT * FROM phpgw_expressoadmin_samba ORDER by samba_domain_name ASC";
530                $this->db->query($query);
531                while($this->db->next_record())
532                        $result[] = $this->db->row();
533                return $result;
534        }
535       
536        function exist_domain_name_sid($sambadomainname, $sambasid)
537        {
538                $query = "SELECT * FROM phpgw_expressoadmin_samba WHERE samba_domain_name='$sambadomainname' OR samba_domain_sid='$sambasid'";
539                $this->db->query($query);
540                while($this->db->next_record())
541                        $result[] = $this->db->row();
542               
543                if (count($result) > 0)
544                        return true;
545                else
546                        return false;
547        }
548       
549        function delete_sambadomain($sambadomainname)
550        {
551                $this->db->query("DELETE FROM phpgw_expressoadmin_samba WHERE samba_domain_name='$sambadomainname'");
552                return;
553        }
554       
555        function add_sambadomain($sambadomainname, $sambasid)
556        {
557                $sql = "INSERT INTO phpgw_expressoadmin_samba (samba_domain_name, samba_domain_sid) VALUES('$sambadomainname','$sambasid')";
558                $this->db->query($sql);
559                return;
560        }
561
562        function add_edit_user_data($edit_user)
563                {
564                $query = "SELECT 'uidnumber' FROM phpgw_ldap_users WHERE uidnumber='".$edit_user['uidnumber']."'";
565                $this->db->query($query);
566                if($this->db->next_record())
567                        {
568                        $sql = "UPDATE phpgw_ldap_users SET uid='".$edit_user['uid']."',uidnumber='".$edit_user['uidnumber']."',givenname='".$edit_user['givenname']."',sn='".$edit_user['sn']."',cn='".$edit_user['cn']."',mail='".$edit_user['mail']."',mailalternateaddress='".$edit_user['mailalternateaddress']."' WHERE uid='".$edit_user['uid']."'";
569                        $this->db->query($sql);
570                        }
571                        else
572                        {
573                        $sql = "INSERT INTO phpgw_ldap_users VALUES('".$edit_user['uid']."','".$edit_user['uidnumber']."','".$edit_user['sn']."','".$edit_user['cn']."','".$edit_user['givenname']."','".$edit_user['mail']."','".$edit_user['mailalternateaddress']."')";
574                        $this->db->query($sql);
575                        }
576                return true;
577                }
578/*        function get_user_list($search)
579                {
580                $users_ldap="";
581                $query = "SELECT * FROM phpgw_ldap_users WHERE uidnumber LIKE '%".$search."%' OR uid LIKE '%".$search."%' OR cn LIKE '%".$search."%' OR sn LIKE '%".$search."%' OR givenname LIKE '%".$search."%' OR mail LIKE '%".$search."%' OR mailalternateaddress LIKE '%".$search."%'";
582                $this->db->query($query);
583                $i=0;
584                while($this->db->next_record())
585                        {
586                        $users_ldap[$i]['uid']                  = $this->db->f(0);
587                        $users_ldap[$i]['uidnumber']            = $this->db->f(1);
588                        $users_ldap[$i]['cn']                   = $this->db->f(3);
589                        $users_ldap[$i]['mail']                 = $this->db->f(5);
590                        ++$i;
591                        }           
592                return $users_ldap;
593                }
594*/
595
596}
597?>
Note: See TracBrowser for help on using the repository browser.