source: trunk/expressoAdmin1_2/inc/class.ldap_functions.inc.php @ 27

Revision 27, 37.6 KB checked in by niltonneto, 17 years ago (diff)

* empty log message *

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1<?php
2define('PHPGW_INCLUDE_ROOT','../');
3define('PHPGW_API_INC','../phpgwapi/inc');     
4include_once(PHPGW_API_INC.'/class.common.inc.php');
5
6class ldap_functions
7{
8        var $ldap;
9        var $current_config;
10       
11        function ldap_functions(){
12                $GLOBALS['phpgw_info']['server'] = $_SESSION['phpgw_info']['expresso']['server'];
13                $this->current_config = $_SESSION['phpgw_info']['expresso']['expressoAdmin'];
14                $common = new common();
15                $this->ldap = $common->ldapConnect();
16        }
17       
18        function validate_fields($params)
19        {
20                $params = unserialize($params['attributes']);
21                $type = $params['type'];
22                $context = $GLOBALS['phpgw_info']['server']['ldap_context'];
23                $uid = $params['uid'];
24                $mail = $params['mail'];
25                $mailalternateaddress = $params['mailalternateaddress'];
26
27                $result['status'] = true;
28               
29                if ($_SESSION['phpgw_info']['expresso']['global_denied_users'][$uid])
30                {
31                        $result['status'] = false;
32                        $result['msg'] = 'Este LOGIN não pode ser usado pois é uma conta de sistema.';
33                        return $result;
34                }
35               
36                if (($type == 'create_user') || ($type == 'rename_user'))
37                {
38                        // UID
39                        $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(uid=$uid))";
40                        $justthese = array("uid");
41                        $search = ldap_search($this->ldap, $context, $filter, $justthese);
42                        $count_entries = ldap_count_entries($this->ldap,$search);
43                        if ($count_entries > 0)
44                        {
45                                $result['status'] = false;
46                                $result['msg'] = 'LOGIN já esta sendo usado.';
47                                return $result;
48                        }
49
50                        // GRUPOS
51                        $filter = "(&(phpgwAccountType=g)(cn=$uid))";
52                        $justthese = array("cn");
53                        $search = ldap_search($this->ldap, $context, $filter, $justthese);
54                        $count_entries = ldap_count_entries($this->ldap,$search);
55                        if ($count_entries > 0)
56                        {
57                                $result['status'] = false;
58                                $result['msg'] = 'LOGIN do usuário já esta sendo usado por um grupo.';
59                                return $result;
60                        }
61               
62                        // UID em outras organizações
63                        //Quando tento retirar as organizações pelo expressoAdmin dá este erro.
64                        $filter = "(ou=*)";
65                        $justthese = array("ou");
66                        $search = ldap_list($this->ldap, $context, $filter, $justthese);
67                        $entries = ldap_get_entries($this->ldap,$search);
68                        foreach ($entries as $index=>$org)
69                        {
70                                $organization = $org['ou'][0];
71                                $organization = strtolower($organization);
72                               
73                                $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(uid=$organization-$uid))";
74                                $justthese = array("uid");
75                                $search = ldap_search($this->ldap, $context, $filter, $justthese);
76                                $count_entries = ldap_count_entries($this->ldap,$search);
77                                if ($count_entries > 0)
78                                {
79                                        $result['status'] = false;
80                                        $result['msg'] = 'LOGIN já esta sendo usado por outro usuário em outra organização.';
81                                        return $result;
82                                }
83                        }
84                }
85               
86                if ($type == 'rename_user')
87                {
88                        return $result;
89                }
90               
91                // MAIL
92                $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(|(mail=$mail)(mailalternateaddress=$mail)))";
93                $justthese = array("mail", "uid");
94                $search = ldap_search($this->ldap, $context, $filter, $justthese);
95                $entries = ldap_get_entries($this->ldap,$search);
96                if ($entries['count'] == 1){
97                        if ($entries[0]['uid'][0] != $uid){
98                                $result['status'] = false;
99                                $result['msg'] = 'E-MAIL está sendo usado por 1 usuário: ' . $entries[0]['uid'][0];
100                                //ldap_close($this->ldap);
101                                return $result;
102                        }
103                }
104                else if ($entries['count'] > 1){
105                        $result['status'] = false;
106                        $result['msg'] = 'E-MAIL está sendo usado por de 2 ou mais usuários.';
107                        //ldap_close($this->ldap);
108                        return $result;
109                }
110               
111                // MAILAlternateAddress
112                $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(|(mail=$mailalternateaddress)(mailalternateaddress=$mailalternateaddress)))";
113                $justthese = array("mail", "uid");
114                $search = ldap_search($this->ldap, $context, $filter, $justthese);
115                $entries = ldap_get_entries($this->ldap,$search);
116                if ($entries['count'] == 1){
117                        if ($entries[0]['uid'][0] != $uid){
118                                $result['status'] = false;
119                                $result['msg'] = "E-MAIL alternativo está sendo usado por 1 usuário: " . $entries[0]['uid'][0];
120                                //ldap_close($this->ldap);
121                                return $result;
122                        }
123                }
124                else if ($entries['count'] > 1){
125                        $result['status'] = false;
126                        $result['msg'] = 'E-MAIL alternativo está sendo usado por 2 ou mais usuários.';
127                        return $result;
128                }
129
130                return $result;
131        }
132       
133        function validate_fields_group($params)
134        {
135                $context = $GLOBALS['phpgw_info']['server']['ldap_context'];
136                $cn = $params['cn'];
137                $result['status'] = true;
138               
139                if ($_SESSION['phpgw_info']['expresso']['global_denied_groups'][$cn])
140                {
141                        $result['status'] = false;
142                        $result['msg'] = 'Este nome de grupo não pode ser usado pois é um grupo de sistema.';
143                        return $result;
144                }
145               
146                // CN
147                $filter = "(&(phpgwAccountType=g)(cn=$cn))";
148                $justthese = array("cn");
149                $search = ldap_search($this->ldap, $context, $filter, $justthese);
150                $count_entries = ldap_count_entries($this->ldap,$search);
151                if ($count_entries > 0)
152                {
153                        $result['status'] = false;
154                        $result['msg'] = 'NOME do grupo já está sendo usado.';
155                        return $result;
156                }
157               
158                // UID
159                $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(uid=$cn))";
160                $justthese = array("uid");
161                $search = ldap_search($this->ldap, $context, $filter, $justthese);
162                $count_entries = ldap_count_entries($this->ldap,$search);
163                if ($count_entries > 0)
164                {
165                        $result['status'] = false;
166                        $result['msg'] = 'NOME do grupo já esta sendo usado por um usuário.';
167                        return $result;
168                }
169               
170                return $result;
171        }
172       
173        function validate_fields_maillist($params)
174        {
175                $context = $GLOBALS['phpgw_info']['server']['ldap_context'];
176                $uid = $params['uid'];
177                $mail = $params['mail'];
178                $result['status'] = true;
179               
180                if ($_SESSION['phpgw_info']['expresso']['global_denied_users'][$uid])
181                {
182                        $result['status'] = false;
183                        $result['msg'] = 'Este LOGIN não pode ser usado pois é uma conta de sistema.';
184                        return $result;
185                }
186               
187                // UID
188                $filter = "(&(phpgwAccountType=l)(uid=$uid))";
189                $justthese = array("uid");
190                $search = ldap_search($this->ldap, $context, $filter, $justthese);
191                $count_entries = ldap_count_entries($this->ldap,$search);
192                if ($count_entries > 0)
193                {
194                        $result['status'] = false;
195                        $result['msg'] = 'LOGIN da lista já está sendo usado.';
196                        return $result;
197                }
198               
199                // MAIL
200                /*
201                $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(|(mail=$mail)(mailalternateaddress=$mail)))";
202                $justthese = array("mail");
203                $search = ldap_search($this->ldap, $context, $filter, $justthese);
204                $count_entries = ldap_count_entries($this->ldap,$search);
205                if ($count_entries > 0)
206                {
207                        $result['status'] = false;
208                        $result['msg'] = 'E-MAIL da lista já está sendo usado.';
209                        return $result;
210                }*/
211               
212                return $result;
213        }
214
215        //Busca usuários de um contexto e já retorna as options do select;
216        function get_available_users($params)
217        {
218                $context = $params['context'];
219                $recursive = $params['recursive'];
220                $justthese = array("cn", "uidNumber");
221                $filter="(phpgwAccountType=u)";
222               
223                if ($recursive == 'true')
224                        $groups_list=ldap_search($this->ldap, $context, $filter, $justthese);
225                else
226                $groups_list=ldap_list($this->ldap, $context, $filter, $justthese);
227       
228        $entries = ldap_get_entries($this->ldap, $groups_list);
229       
230                for ($i=0; $i<$entries["count"]; $i++){
231                        $u_tmp[$entries[$i]["uidnumber"][0]] = $entries[$i]["cn"][0];
232                }
233                       
234                if (count($u_tmp))
235                        natcasesort($u_tmp);
236
237                $i = 0;
238                $users = array();
239                       
240                if (count($u_tmp))
241                {
242                        foreach ($u_tmp as $uidnumber => $cn)
243                        {
244                                $options .= "<option value=$uidnumber>$cn</option>";
245                        }
246                        unset($u_tmp);
247                }
248
249        return $options;
250        }
251
252        //Busca usuários de um contexto e já retorna as options do select;
253        /*
254        function get_available_users_and_maillist($params)
255        {
256                $context = $params['context'];
257                $recursive = $params['recursive'];
258                $justthese = array("cn", "uidNumber");
259                $filter="(|(phpgwAccountType=u)(phpgwAccountType=l))";
260               
261                if ($recursive == 'true')
262                        $groups_list=ldap_search($this->ldap, $context, $filter, $justthese);
263                else
264                $groups_list=ldap_list($this->ldap, $context, $filter, $justthese);
265       
266        $entries = ldap_get_entries($this->ldap, $groups_list);
267       
268                for ($i=0; $i<$entries["count"]; $i++){
269                        $u_tmp[$entries[$i]["uidnumber"][0]] = $entries[$i]["cn"][0];
270                }
271                       
272                if (count($u_tmp))
273                        natcasesort($u_tmp);
274
275                $i = 0;
276                $users = array();
277                       
278                if (count($u_tmp))
279                {
280                        foreach ($u_tmp as $uidnumber => $cn)
281                        {
282                                $options .= "<option value=$uidnumber>$cn</option>";
283                        }
284                        unset($u_tmp);
285                }
286
287        return $options;
288        }
289        */
290
291        //Busca usuários e listas de um contexto e já retorna as options do select;
292        function get_available_users_and_maillist($params)
293        {
294                $context = $params['context'];
295                $recursive = $params['recursive'];
296               
297                //Usado para retirar a própria lista das possibilidades de inclusão.
298                $denied_uidnumber = $params['denied_uidnumber'];
299               
300                $justthese = array("cn", "uidNumber");
301                $users_filter="(&(phpgwAccountType=u)(!(phpgwAccountVisible=-1)))";
302                $lists_filter = $denied_uidnumber == '' ? "(phpgwAccountType=l)" : "(&(phpgwAccountType=l)(!(uidnumber=$denied_uidnumber)))";
303               
304                $users = Array();
305                $lists = Array();               
306
307                if ($recursive == 'true')
308                {
309                        $lists_search = ldap_search($this->ldap, $context, $lists_filter, $justthese);
310                        $users_search = ldap_search($this->ldap, $context, $users_filter, $justthese);
311                }
312                else
313                {
314                        $lists_search = ldap_list($this->ldap, $context, $lists_filter, $justthese);
315                        $users_search = ldap_list($this->ldap, $context, $users_filter, $justthese);
316                }
317               
318                $lists_entries = ldap_get_entries($this->ldap, $lists_search);
319                for ($i=0; $i<$lists_entries["count"]; $i++)
320                {
321                        $l_tmp[$lists_entries[$i]["uidnumber"][0]] = $lists_entries[$i]["cn"][0];
322                }
323                       
324                if (count($l_tmp))
325                        natcasesort($l_tmp);
326                       
327                $i = 0;
328                $lists = array();
329               
330                $options .= '<option  value="-1" disabled>------------------------------&nbsp;&nbsp;&nbsp;&nbsp;Listas&nbsp;&nbsp;&nbsp;&nbsp;------------------------------ </option>'."\n";   
331                if (count($l_tmp))
332                {
333                        foreach ($l_tmp as $uidnumber => $cn)
334                        {
335                                $options .= "<option value=$uidnumber>$cn</option>";
336                        }
337                        unset($l_tmp);
338                }
339               
340                $users_entries = ldap_get_entries($this->ldap, $users_search);
341                for ($i=0; $i<$users_entries["count"]; $i++)
342                {
343                        $u_tmp[$users_entries[$i]["uidnumber"][0]] = $users_entries[$i]["cn"][0];
344                }
345                       
346                if (count($u_tmp))
347                        natcasesort($u_tmp);
348                       
349                $i = 0;
350                $users = array();
351               
352                $options .= '<option  value="-1" disabled>-----------------------------&nbsp;&nbsp;&nbsp;&nbsp;Usuários&nbsp;&nbsp;&nbsp;&nbsp;---------------------------- </option>'."\n";   
353                if (count($u_tmp))
354                {
355                        foreach ($u_tmp as $uidnumber => $cn)
356                        {
357                                $options .= "<option value=$uidnumber class='line-above'>$cn</option>";
358                        }
359                        unset($u_tmp);
360                }
361                       
362                return $options;
363        }
364
365        function get_available_groups($params)
366        {
367                $context = $params['context'];
368                $justthese = array("cn", "gidNumber");
369        $groups_list=ldap_list($this->ldap, $context, ("(phpgwAccountType=g)"), $justthese);
370        ldap_sort($this->ldap, $groups_list, "cn");
371       
372        $entries = ldap_get_entries($this->ldap, $groups_list);
373        return $entries;               
374        }
375       
376        function get_available_maillists($params)
377        {
378                $context = $params['context'];
379                $justthese = array("uid","mail","uidNumber");
380        $maillists=ldap_list($this->ldap, $context, ("(phpgwAccountType=l)"), $justthese);
381        ldap_sort($this->ldap, $maillists, "uid");
382       
383        $entries = ldap_get_entries($this->ldap, $maillists);
384        return $entries;               
385        }
386       
387        function ldap_add_entry($dn, $entry)
388        {
389                $result = array();
390                if (!@ldap_add ( $this->ldap, $dn, $entry ))
391                {
392                        $result['status'] = false;
393                        $result['msg'] = "Erro na funcao ldap_functions->ldap_add_entry ($dn).\nRetorno do servidor:" . ldap_error($this->ldap);
394                }
395                else
396                        $result['status'] = true;
397               
398                return $result;
399        }
400       
401        function ldap_save_photo($dn, $pathphoto, $photo_exist=false)
402        {
403                $fd = fopen($pathphoto, "r");
404                $fsize = filesize($pathphoto);
405                $jpegStr = fread($fd, $fsize);
406                fclose ($fd);
407                $attrs['jpegPhoto'] = $jpegStr;
408                       
409                if ($photo_exist)
410                        $res = @ldap_mod_replace($this->ldap, $dn, $attrs);
411                else
412                        $res = @ldap_mod_add($this->ldap, $dn, $attrs);
413                       
414                if ($res)
415                {
416                        $result['status'] = true;
417                }
418                else
419                {
420                        $result['status'] = false;
421                        $result['msg'] = "Erro na funcao ldap_functions->ldap_save_photo ($dn).\nRetorno do servidor:" . ldap_error($this->ldap);
422                }
423               
424                return $result;
425        }
426       
427        function ldap_remove_photo($dn)
428        {
429                $attrs['jpegPhoto'] = array();
430                $res = ldap_mod_del($this->ldap, $dn, $attrs);
431               
432                if ($res)
433                {
434                        $result['status'] = true;
435                }
436                else
437                {
438                        $result['status'] = false;
439                        $result['msg'] = "Erro na funcao ldap_functions->ldap_remove_photo ($dn).\nRetorno do servidor:" . ldap_error($this->ldap);
440                }
441               
442                return $result;
443        }       
444       
445        // Pode receber tanto um único memberUid quanto um array de memberUid's
446        function add_user2group($gidNumber, $memberUid)
447        {
448                $filter = "(&(phpgwAccountType=g)(gidNumber=$gidNumber))";
449                $justthese = array("dn");
450                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
451                $entry = ldap_get_entries($this->ldap, $search);
452                $group_dn = $entry[0]['dn'];
453                $attrs['memberUid'] = $memberUid;
454               
455                $res = @ldap_mod_add($this->ldap, $group_dn, $attrs);
456               
457                if ($res)
458                {
459                        $result['status'] = true;
460                }
461                else
462                {
463                        $result['status'] = false;
464                        $result['msg'] = "Erro na funcao ldap_functions->add_user2group ($memberUid).\nRetorno do servidor:" . ldap_error($this->ldap);
465                }
466                return $result;
467        }
468       
469        function remove_user2group($gidNumber, $memberUid)
470        {
471                $filter = "(&(phpgwAccountType=g)(gidNumber=$gidNumber))";
472                $justthese = array("dn");
473                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
474                $entry = ldap_get_entries($this->ldap, $search);
475                $group_dn = $entry[0]['dn'];
476                $attrs['memberUid'] = $memberUid;
477                $res = @ldap_mod_del($this->ldap, $group_dn, $attrs);
478               
479                /*echo 'usuarios recebidos para remocao no ldap';
480                echo '<pre>';
481                print_r($memberUid);*/
482               
483                if ($res)
484                {
485                        $result['status'] = true;
486                }
487                else
488                {
489                        $result['status'] = false;
490                        $result['msg'] = "Erro na funcao ldap_functions->remove_user2group ($memberUid).\nRetorno do servidor:" . ldap_error($this->ldap);
491                }
492                return $result;
493        }
494       
495        function add_user2maillist($uidNumber, $mail)
496        {
497                $filter = "(&(phpgwAccountType=l)(uidNumber=$uidNumber))";
498                $justthese = array("dn");
499                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
500                $entry = ldap_get_entries($this->ldap, $search);
501                $group_dn = $entry[0]['dn'];
502                $attrs['mailForwardingAddress'] = $mail;
503                $res = @ldap_mod_add($this->ldap, $group_dn, $attrs);
504               
505                if ($res)
506                {
507                        $result['status'] = true;
508                }
509                else
510                {
511                        $result['status'] = false;
512                        $result['msg'] = "Erro na funcao ldap_functions->add_user2maillist ($mail).\nRetorno do servidor:" . ldap_error($this->ldap);
513                }
514                return $result;
515        }
516       
517        function add_user2maillist_scl($dn, $array_emails)
518        {
519                $attrs['mailSenderAddress'] = $array_emails;
520                $res = @ldap_mod_add($this->ldap, $dn, $attrs);
521               
522                if ($res)
523                {
524                        $result['status'] = true;
525                }
526                else
527                {
528                        $result['status'] = false;
529                        $result['msg'] = "Erro na funcao ldap_functions->add_user2maillist_scp ($dn).\n\nRetorno do servidor:" . ldap_error($this->ldap);
530                }
531                return $result;
532        }
533
534        function remove_user2maillist($uidNumber, $mail)
535        {
536                $filter = "(&(phpgwAccountType=l)(uidNumber=$uidNumber))";
537                $justthese = array("dn");
538                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
539                $entry = ldap_get_entries($this->ldap, $search);
540                $group_dn = $entry[0]['dn'];
541                $attrs['mailForwardingAddress'] = $mail;
542                $res = @ldap_mod_del($this->ldap, $group_dn, $attrs);
543               
544                if ($res)
545                {
546                        $result['status'] = true;
547                }
548                else
549                {
550                        $result['status'] = false;
551                        $result['msg'] = "Erro na funcao ldap_functions->remove_user2maillist ($mail).\n\nRetorno do servidor:" . ldap_error($this->ldap);
552                }
553                return $result;
554        }
555
556        function remove_user2maillist_scl($dn, $array_emails)
557        {
558                $attrs['mailSenderAddress'] = $array_emails;
559                $res = @ldap_mod_del($this->ldap, $dn, $attrs);
560               
561                if ($res)
562                {
563                        $result['status'] = true;
564                }
565                else
566                {
567                        $result['status'] = false;
568                        $result['msg'] = "Erro na funcao ldap_functions->remove_user2maillist_scp ($dn).\n\nRetorno do servidor:" . ldap_error($this->ldap);
569                }
570                return $result;
571        }
572
573        function replace_user2maillists($new_mail, $old_mail)
574        {
575                $filter = "(&(phpgwAccountType=l)(mailforwardingaddress=$old_mail))";
576                $justthese = array("dn");
577                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
578                $entries = ldap_get_entries($this->ldap, $search);
579                $result['status'] = true;
580                for ($i=0; $i<$entries['count']; $i++)
581                {
582                        $attrs['mailforwardingaddress'] = $old_mail;
583                        $res1 = @ldap_mod_del($this->ldap, $entries[$i]['dn'], $attrs);
584                        $attrs['mailforwardingaddress'] = $new_mail;
585                        $res2 = @ldap_mod_add($this->ldap, $entries[$i]['dn'], $attrs);
586               
587                        if ((!$res1) || (!$res2))
588                        {
589                                $result['status'] = false;
590                                $result['msg'] = "Erro na funcao ldap_functions->replace_user2maillists ($old_mail).\nRetorno do servidor:" . ldap_error($this->ldap);
591                        }
592                }
593               
594                return $result;
595        }
596       
597        function get_user_info($uidnumber, $context)
598        {
599                $filter="(&(phpgwAccountType=u)(uidNumber=".$uidnumber."))";
600                $search = ldap_search($this->ldap, $context, $filter);
601                $entry = ldap_get_entries($this->ldap, $search);
602
603                //Pega o dn do setor do usuario.
604                $entry[0]['dn'] = strtolower($entry[0]['dn']);
605                $sector_dn_array = explode(",", $entry[0]['dn']);
606                for($i=1; $i<count($sector_dn_array); $i++)
607                        $sector_dn .= $sector_dn_array[$i] . ',';
608                //Retira ultimo pipe.
609                $sector_dn = substr($sector_dn,0,(strlen($sector_dn) - 1));
610               
611                $result['context']                              = $sector_dn;
612                $result['uid']                                  = $entry[0]['uid'][0];
613                $result['uidnumber']                    = $entry[0]['uidnumber'][0];
614                $result['gidnumber']                    = $entry[0]['gidnumber'][0];
615                $result['departmentnumber']             = $entry[0]['departmentnumber'][0];
616                $result['givenname']                    = $entry[0]['givenname'][0];
617                $result['sn']                                   = $entry[0]['sn'][0];
618                $result['telephonenumber']              = $entry[0]['telephonenumber'][0];
619                $result['phpgwaccountstatus']   = $entry[0]['phpgwaccountstatus'][0];
620                $result['phpgwaccountvisible']  = $entry[0]['phpgwaccountvisible'][0];
621                $result['accountstatus']                = $entry[0]['accountstatus'][0];
622                $result['mail']                                 = $entry[0]['mail'][0];
623                $result['mailalternateaddress'] = $entry[0]['mailalternateaddress'][0];
624                $result['mailforwardingaddress']= $entry[0]['mailforwardingaddress'][0];
625                $result['deliverymode']                 = $entry[0]['deliverymode'][0];
626
627                //Photo
628                if ($entry[0]['jpegphoto']['count'] == 1)
629                        $result['photo_exist'] = 'true';
630               
631                // Samba
632                for ($i=0; $i<$entry[0]['objectclass']['count']; $i++)
633                {
634                        if ($entry[0]['objectclass'][$i] == 'sambaSamAccount')
635                                $result['sambaUser'] = true;
636                }               
637                if (($this->current_config['expressoAdmin_samba_support'] == 'true') && ($result['sambaUser']))
638                {
639                        $result['sambaaccflags'] = $entry[0]['sambaacctflags'][0];
640                        $result['sambalogonscript'] = $entry[0]['sambalogonscript'][0];
641                        $result['homedirectory'] = $entry[0]['homedirectory'][0];
642                        $a_tmp = explode("-", $entry[0]['sambasid'][0]);
643                        array_pop($a_tmp);
644                        $result['sambasid'] = implode("-", $a_tmp);
645                }
646               
647                // MailLists
648                $justthese = array("uid","mail","uidnumber");
649                $filter="(&(phpgwAccountType=l)(mailforwardingaddress=".$result['mail']."))";
650                $search = ldap_search($this->ldap, $context, $filter, $justthese);
651        ldap_sort($this->ldap, $search, "uid");
652        $entries = ldap_get_entries($this->ldap, $search);
653        for ($i=0; $i<$entries['count']; $i++)
654        {
655                $result['maillists_info'][$i]['uidnumber'] = $entries[$i]['uidnumber'][0];
656                $result['maillists_info'][$i]['uid'] = $entries[$i]['uid'][0];
657                $result['maillists_info'][$i]['mail'] = $entries[$i]['mail'][0];
658                $result['maillists'][] = $entries[$i]['uidnumber'][0];
659        }
660       
661        // Groups
662                $justthese = array("gidnumber","cn");
663                $filter="(&(phpgwAccountType=g)(memberuid=".$result['uid']."))";
664                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
665        ldap_sort($this->ldap, $search, "cn");
666        $entries = ldap_get_entries($this->ldap, $search);
667        for ($i=0; $i<$entries['count']; $i++)
668        {
669                $result['groups_ldap'][ $entries[$i]['gidnumber'][0] ] = $entries[$i]['cn'][0];
670        }
671       
672                return $result;         
673        }
674       
675        function get_group_info($gidnumber, $context)
676        {
677                $filter="(&(phpgwAccountType=g)(gidNumber=".$gidnumber."))";
678                $search = ldap_search($this->ldap, $context, $filter);
679                $entry = ldap_get_entries($this->ldap, $search);
680
681                //Pega o dn do setor do grupo.
682                $entry[0]['dn'] = strtolower($entry[0]['dn']);
683                $sector_dn_array = explode(",", $entry[0]['dn']);
684                for($i=1; $i<count($sector_dn_array); $i++)
685                        $sector_dn .= $sector_dn_array[$i] . ',';
686                //Retira ultimo pipe.
687                $sector_dn = substr($sector_dn,0,(strlen($sector_dn) - 1));
688               
689                $result['context']                              = $sector_dn;
690                $result['cn']                                   = $entry[0]['cn'][0];
691                $result['description']                  = $entry[0]['description'][0];
692                $result['gidnumber']                    = $entry[0]['gidnumber'][0];
693                $result['phpgwaccountvisible']  = $entry[0]['phpgwaccountvisible'][0];
694               
695                //MemberUid
696                for ($i=0; $i<$entry[0]['memberuid']['count']; $i++)
697                {
698                        $justthese = array("cn","uid","uidnumber");
699                       
700                        // Montagem dinamica do filtro
701                        $filter="(&(phpgwAccountType=u)(|";
702                        for ($k=0; (($k<10) && ($i<$entry[0]['memberuid']['count'])); $k++)
703                        {
704                                $filter .= "(uid=".$entry[0]['memberuid'][$i].")";
705                                $i++;
706                        }
707                        $i--;
708                        $filter .= "))";
709                       
710                        $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
711                        $user_entry = ldap_get_entries($this->ldap, $search);
712
713                        for ($j=0; $j<$user_entry['count']; $j++)
714                        {
715                                $result['memberuid_info'][$user_entry[$j]['uid'][0]]['cn'] = $user_entry[$j]['cn'][0];
716                                $result['memberuid_info'][$user_entry[$j]['uid'][0]]['uidnumber'] = $user_entry[$j]['uidnumber'][0];
717                                $result['memberuid_info'][$user_entry[$j]['uid'][0]]['type'] = 'u';
718                        }
719                }
720               
721                // Retira o count do array
722                array_shift($entry[0]['memberuid']);
723               
724                // Checamos e-mails que não fazem parte do expresso.
725                // Criamos um array temporario
726                $tmp_array = array();
727                foreach ($result['memberuid_info'] as $uid => $user_data)
728                {
729                        $tmp_array[] = $uid;
730                }
731
732                // Vemos a diferença
733                $array_diff = array_diff($entry[0]['memberuid'], $tmp_array);
734               
735                // Incluimos no resultado
736                foreach ($array_diff as $index=>$uid)
737                {
738                        $result['memberuid_info'][$uid]['cn'] = $uid;
739                }
740               
741                // Samba
742                for ($i=0; $i<$entry[0]['objectclass']['count']; $i++)
743                {
744                        if ($entry[0]['objectclass'][$i] == 'sambaGroupMapping')
745                                $result['sambaGroup'] = true;
746                }
747
748                return $result;
749        }       
750       
751        function get_maillist_info($uidnumber, $context)
752        {
753                $filter="(&(phpgwAccountType=l)(uidNumber=".$uidnumber."))";
754                $search = ldap_search($this->ldap, $context, $filter);
755                $entry = ldap_get_entries($this->ldap, $search);
756       
757                //Pega o dn do setor do usuario.
758                $entry[0]['dn'] = strtolower($entry[0]['dn']);
759                $sector_dn_array = explode(",", $entry[0]['dn']);
760                for($i=1; $i<count($sector_dn_array); $i++)
761                        $sector_dn .= $sector_dn_array[$i] . ',';
762                //Retira ultimo pipe.
763                $sector_dn = substr($sector_dn,0,(strlen($sector_dn) - 1));
764                       
765                $result['context']                              = $sector_dn;
766                $result['uidnumber']                    = $entry[0]['uidnumber'][0];
767                $result['uid']                                  = $entry[0]['uid'][0];
768                $result['cn']                                   = $entry[0]['cn'][0];
769                $result['mail']                                 = $entry[0]['mail'][0];
770                $result['accountStatus']                = $entry[0]['accountstatus'][0];
771                $result['phpgwAccountVisible']  = $entry[0]['phpgwaccountvisible'][0];
772                       
773                //Members
774                for ($i=0; $i<$entry[0]['mailforwardingaddress']['count']; $i++)
775                {
776                        $justthese = array("cn", "uidnumber", "uid", "phpgwaccounttype", "mail");
777                               
778                        // Montagem dinamica do filtro
779                        $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=l))(|";
780                        for ($k=0; (($k<10) && ($i<$entry[0]['mailforwardingaddress']['count'])); $k++)
781                        {
782                                $filter .= "(mail=".$entry[0]['mailforwardingaddress'][$i].")";
783                                $i++;
784                        }
785                        $i--;
786                        $filter .= "))";
787                               
788                        $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
789                        $user_entry = ldap_get_entries($this->ldap, $search);
790                               
791                        for ($j=0; $j<$user_entry['count']; $j++)
792                        {
793                                $result['members_info'][$user_entry[$j]['uidnumber'][0]]['uid'] = $user_entry[$j]['uid'][0];
794                                $result['members_info'][$user_entry[$j]['uidnumber'][0]]['cn'] = $user_entry[$j]['cn'][0];
795                                $result['members_info'][$user_entry[$j]['uidnumber'][0]]['type'] = $user_entry[$j]['phpgwaccounttype'][0];
796                                $result['members_info'][$user_entry[$j]['uidnumber'][0]]['mail'] = $user_entry[$j]['mail'][0];
797                                $result['members'][] = $user_entry[$j]['uidnumber'][0];
798                        }
799                }
800
801                // Retira o count do array
802                array_shift($entry[0]['mailforwardingaddress']);
803
804                // Checamos e-mails que não fazem parte do expresso.
805                // Criamos um array temporario
806                $tmp_array = array();
807                foreach ($result['members_info'] as $uid => $user_data)
808                {
809                        $tmp_array[] = $user_data['mail'];
810                }
811
812                // Vemos a diferença
813                $array_diff = array_diff($entry[0]['mailforwardingaddress'], $tmp_array);
814
815                // Incluimos no resultado
816                foreach ($array_diff as $index=>$mailforwardingaddress)
817                {
818                        $result['members_info'][$mailforwardingaddress]['uid'] = $mailforwardingaddress;
819                        $result['members_info'][$mailforwardingaddress]['cn'] = 'E-Mail nao encontrado';
820                        $result['members_info'][$mailforwardingaddress]['mailforwardingaddress'] = $mailforwardingaddress;
821                        $result['members'][] = $mailforwardingaddress;
822                }
823                return $result;
824        }       
825
826        function get_maillist_scl_info($uidnumber, $context)
827        {
828                $filter="(&(phpgwAccountType=l)(uidNumber=".$uidnumber."))";
829                $search = ldap_search($this->ldap, $context, $filter);
830                $entry = ldap_get_entries($this->ldap, $search);
831
832                //Pega o dn do setor do usuario.
833                $entry[0]['dn'] = strtolower($entry[0]['dn']);
834                $sector_dn_array = explode(",", $entry[0]['dn']);
835                for($i=1; $i<count($sector_dn_array); $i++)
836                        $sector_dn .= $sector_dn_array[$i] . ',';
837                //Retira ultimo pipe.
838                $sector_dn = substr($sector_dn,0,(strlen($sector_dn) - 1));
839               
840                $result['dn']                                           = $entry[0]['dn'];
841                $result['context']                                      = $sector_dn;
842                $result['uidnumber']                            = $entry[0]['uidnumber'][0];
843                $result['uid']                                          = $entry[0]['uid'][0];
844                $result['cn']                                           = $entry[0]['cn'][0];
845                $result['mail']                                         = $entry[0]['mail'][0];
846                $result['accountStatus']                        = $entry[0]['accountstatus'][0];
847                $result['phpgwAccountVisible']          = $entry[0]['phpgwaccountvisible'][0];
848                $result['accountRestrictive']           = $entry[0]['accountrestrictive'][0];
849                $result['participantCanSendMail']       = $entry[0]['participantcansendmail'][0];
850               
851                //Senders
852                for ($i=0; $i<$entry[0]['mailsenderaddress']['count']; $i++)
853                {
854                        $justthese = array("cn", "uidnumber", "uid", "mail");
855                        $filter="(&(phpgwAccountType=u)(mail=".$entry[0]['mailsenderaddress'][$i]."))";
856                        $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
857                        $user_entry = ldap_get_entries($this->ldap, $search);
858                       
859                        $result['senders_info'][$user_entry[0]['uidnumber'][0]]['uid'] = $user_entry[0]['uid'][0];
860                        $result['senders_info'][$user_entry[0]['uidnumber'][0]]['cn'] = $user_entry[0]['cn'][0];
861                        $result['senders_info'][$user_entry[0]['uidnumber'][0]]['mail'] = $user_entry[0]['mail'][0];
862                        $result['members'][] = $user_entry[0]['uidnumber'][0];
863                }
864
865                return $result;
866        }       
867
868        function group_exist($gidnumber)
869        {
870                $justthese = array("cn");
871                $filter="(&(phpgwAccountType=g)(gidNumber=".$gidnumber."))";
872                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
873                               
874                $entry = ldap_get_entries($this->ldap, $search);
875                if ($entry['count'] == 0)
876                        return false;
877                else
878                        return true;
879        }
880
881        function gidnumbers2cn($gidnumbers, $context)
882        {
883                if (count($gidnumbers))
884                {
885                        $justthese = array("cn");
886                        $i = 0;
887                        foreach ($gidnumbers as $gidnumber)
888                        {
889                                $filter="(&(phpgwAccountType=g)(gidNumber=".$gidnumber."))";
890                                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
891                               
892                                $entry = ldap_get_entries($this->ldap, $search);
893                                if ($entry['count'] == 0)
894                                        $result['groups_info'][$i]['cn'] = '_Grupo existe no BD mas não no LDAP';
895                                else
896                                        $result['groups_info'][$i]['cn'] = $entry[0]['cn'][0];
897                                $result['groups_info'][$i]['gidnumber'] = $gidnumber;
898                               
899                                if (!strpos(strtolower($entry[0]['dn']), strtolower($context)))
900                                        $result['groups_info'][$i]['group_disabled'] = 'true';
901                                else
902                                        $result['groups_info'][$i]['group_disabled'] = 'false';
903                               
904                                $i++;
905                        }
906                }
907                return $result;
908        }
909
910        function uidnumber2uid($uidnumber)
911        {
912                $justthese = array("uid");
913                $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=l))(uidNumber=".$uidnumber."))";
914                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
915                $entry = ldap_get_entries($this->ldap, $search);
916                return $entry[0]['uid'][0];
917        }
918
919        function uidnumber2mail($uidnumber)
920        {
921                $justthese = array("mail");
922                $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=l))(uidNumber=".$uidnumber."))";
923                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
924                $entry = ldap_get_entries($this->ldap, $search);
925                return $entry[0]['mail'][0];
926        }
927
928       
929        function change_user_context($dn, $newrdn, $newparent)
930        {
931                if (!ldap_rename ( $this->ldap, $dn, $newrdn, $newparent, true ))
932                {
933                        $return['status'] = false;
934                        $return['msg'] = 'Erro em ldap_funcitons->change_user_context: ' . ldap_error($this->ldap);
935                }
936                else
937                        $return['status'] = true;
938               
939                return $return;
940        }
941       
942        function replace_user_attributes($dn, $ldap_mod_replace)
943        {
944                if (!@ldap_mod_replace ( $this->ldap, $dn, $ldap_mod_replace ))
945                {
946                        $return['status'] = false;
947                        $return['msg'] = 'Erro em ldap_funcitons->replace_user_attributes: ' . ldap_error($this->ldap);
948                }
949                else
950                        $return['status'] = true;
951               
952                return $return;
953        }
954       
955        function add_user_attributes($dn, $ldap_add)
956        {
957                if (!@ldap_mod_add ( $this->ldap, $dn, $ldap_add ))
958                {
959                        $return['status'] = false;
960                        $return['msg'] = 'Erro em ldap_funcitons->add_user_attributes: ' . ldap_error($this->ldap);
961                }
962                else
963                        $return['status'] = true;
964               
965                return $return;
966        }
967       
968        function remove_user_attributes($dn, $ldap_remove)
969        {
970                if (!@ldap_mod_del ( $this->ldap, $dn, $ldap_remove ))
971                {
972                        $return['status'] = false;
973                        $return['msg'] = 'Erro em ldap_funcitons->remove_user_attributes: ' . ldap_error($this->ldap);
974                }
975                else
976                        $return['status'] = true;
977               
978                return $return;
979        }
980       
981        function set_user_password($uid, $password)
982        {
983                $justthese = array("userPassword");
984                $filter="(&(phpgwAccountType=u)(uid=".$uid."))";
985                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
986            $entry = ldap_get_entries($this->ldap, $search);
987                $dn = $entry[0]['dn'];
988                $userPassword = $entry[0]['userpassword'][0];
989                $ldap_mod_replace['userPassword'] = $password;
990                $this->replace_user_attributes($dn, $ldap_mod_replace);
991                return $userPassword;
992        }
993       
994        function delete_user($user_info)
995        {
996                $return['status'] = true;
997               
998                // GROUPS
999                $attrs = array();
1000                $attrs['memberUid'] = $user_info['uid'];
1001                if (count($user_info['groups_info']))
1002                {
1003                        foreach ($user_info['groups_info'] as $group_info)
1004                        {
1005                                $gidnumber = $group_info['gidnumber'];
1006                                $justthese = array("dn");
1007                                $filter="(&(phpgwAccountType=g)(gidnumber=".$gidnumber."))";
1008                                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
1009                        $entry = ldap_get_entries($this->ldap, $search);
1010                                $dn = $entry[0]['dn'];
1011                       
1012                                if (!@ldap_mod_del($this->ldap, $dn, $attrs))
1013                                {
1014                                        $return['status'] = false;
1015                                        $return['msg'] .= 'Erro em ldap_funcitons->delete_user, grupos: ' . ldap_error($this->ldap);
1016                                }
1017                        }
1018                }
1019                       
1020                // MAILLISTS
1021                $attrs = array();
1022                $attrs['mailForwardingAddress'] = $user_info['mail'];
1023                if (count($user_info['maillists_info']))
1024                {
1025                        foreach ($user_info['maillists_info'] as $maillists_info)
1026                        {
1027                                $uidnumber = $maillists_info['uidnumber'];
1028                                $justthese = array("dn");
1029                                $filter="(&(phpgwAccountType=l)(uidnumber=".$uidnumber."))";
1030                                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
1031                        $entry = ldap_get_entries($this->ldap, $search);
1032                                $dn = $entry[0]['dn'];
1033                       
1034                                if (!@ldap_mod_del($this->ldap, $dn, $attrs))
1035                                {
1036                                        $return['status'] = false;
1037                                        $return['msg'] .= 'Erro em ldap_funcitons->delete_user, listas de email: ' . ldap_error($this->ldap);
1038                                }
1039                        }
1040                }
1041                       
1042                // UID
1043                $dn = "uid=" . $user_info['uid'] . "," . $user_info['context'];
1044                if (!@ldap_delete($this->ldap, $dn))
1045                {
1046                        $return['status'] = false;
1047                        $return['msg'] .= 'Erro em ldap_funcitons->delete_user, listas de email: ' . ldap_error($this->ldap);
1048                }
1049               
1050                return $return;
1051        }
1052       
1053        function delete_maillist($uidnumber)
1054        {
1055                $return['status'] = true;
1056               
1057                $justthese = array("dn");
1058                $filter="(&(phpgwAccountType=l)(uidnumber=".$uidnumber."))";
1059                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
1060                $entry = ldap_get_entries($this->ldap, $search);
1061                $dn = $entry[0]['dn'];
1062               
1063                if (!@ldap_delete($this->ldap, $dn))
1064                {
1065                        $return['status'] = false;
1066                        $return['msg'] .= 'Erro em ldap_funcitons->delete_maillist, listas de email: ' . ldap_error($this->ldap);
1067                }
1068               
1069                return $return;
1070        }
1071
1072        function delete_group($gidnumber)
1073        {
1074                $return['status'] = true;
1075               
1076                $justthese = array("dn");
1077                $filter="(&(phpgwAccountType=g)(gidnumber=".$gidnumber."))";
1078                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
1079                $entry = ldap_get_entries($this->ldap, $search);
1080                $dn = $entry[0]['dn'];
1081               
1082                if (!@ldap_delete($this->ldap, $dn))
1083                {
1084                        $return['status'] = false;
1085                        $return['msg'] .= 'Erro em ldap_funcitons->delete_maillist, listas de email: ' . ldap_error($this->ldap);
1086                }
1087               
1088                return $return;
1089        }
1090
1091       
1092        function rename_uid($uid, $new_uid)
1093        {
1094                $return['status'] = true;
1095               
1096                $justthese = array("dn");
1097                $filter="(&(phpgwAccountType=u)(uid=".$uid."))";
1098                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
1099            $entry = ldap_get_entries($this->ldap, $search);
1100                $dn = $entry[0]['dn'];
1101               
1102                $explode_dn = ldap_explode_dn($dn, 0);
1103                $rdn = "uid=" . $new_uid;
1104
1105                $parent = array();
1106                for ($j=1; $j<(count($explode_dn)-1); $j++)
1107                        $parent[] = $explode_dn[$j];
1108                $parent = implode(",", $parent);
1109               
1110                $return['new_dn'] = $rdn . ',' . $parent;
1111                       
1112                if (!@ldap_rename($this->ldap, $dn, $rdn, $parent, false))
1113                {
1114                        $return['status'] = false;
1115                        $return['msg'] .= 'Erro em ldap_funcitons->rename_uid: ' . ldap_error($this->ldap);
1116                }
1117               
1118                //Grupos
1119                $justthese = array("dn");
1120                $filter="(&(phpgwAccountType=g)(memberuid=".$uid."))";
1121                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
1122            $entry = ldap_get_entries($this->ldap, $search);
1123        $array_mod_add['memberUid'] = $new_uid;
1124        $array_mod_del['memberUid'] = $uid;
1125
1126            for ($i=0; $i<=$entry['count']; $i++)
1127            {
1128                $dn = $entry[$i]['dn'];
1129                @ldap_mod_add ( $this->ldap, $dn,  $array_mod_add);
1130                @ldap_mod_del ( $this->ldap, $dn,  $array_mod_del);
1131            }
1132                return $return;
1133        }
1134
1135        function rename_cn($cn, $new_cn)
1136        {
1137                $return['status'] = true;
1138               
1139                $justthese = array("dn");
1140                $filter="(&(phpgwAccountType=g)(uid=".$cn."))";
1141                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
1142            $entry = ldap_get_entries($this->ldap, $search);
1143                $dn = $entry[0]['dn'];
1144               
1145                $explode_dn = ldap_explode_dn($dn, 0);
1146                $rdn = "cn=" . $new_cn;
1147
1148                $parent = array();
1149                for ($j=1; $j<(count($explode_dn)-1); $j++)
1150                        $parent[] = $explode_dn[$j];
1151                $parent = implode(",", $parent);
1152               
1153                $return['new_dn'] = $rdn . ',' . $parent;
1154                       
1155                if (!@ldap_rename($this->ldap, $dn, $rdn, $parent, false))
1156                {
1157                        $return['status'] = false;
1158                }
1159               
1160                return $return;
1161        }
1162
1163        function rename_departmentnumber($old_dp, $new_dp)
1164        {
1165                $return['status'] = true;
1166               
1167                $justthese = array("dn");
1168                $filter="(&(phpgwAccountType=u)(departmentnumber=".$old_dp."))";
1169                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
1170            $entry = ldap_get_entries($this->ldap, $search);
1171               
1172            for ($i=0; $i<=$entry['count']; $i++)
1173            {
1174                $dn = strtolower($entry[$i]['dn']);
1175                $ldap_mod_replace = array();
1176                $ldap_mod_replace['departmentnumber'] = $new_dp;
1177                @ldap_mod_replace ( $this->ldap, $dn,  $ldap_mod_replace);
1178                        /*if (!@ldap_mod_replace ( $this->ldap, $dn,  $ldap_mod_replace))
1179                        {
1180                                $return['status'] = false;
1181                                $return['msg'] .= 'Erro em ldap_funcitons->rename_departmentnumber: ' . ldap_error($this->ldap);
1182                        }*/
1183            }
1184                return $return;
1185        }
1186       
1187        function add_sambadomain($sambadomainname, $sambasid, $context)
1188        {
1189                $result = array();
1190               
1191                $dn                                                             = "sambaDomainName=$sambadomainname,$context";
1192                $entry['sambaSID']                                      = $sambasid;
1193                $entry['objectClass']                           = 'sambaDomain';
1194                $entry['sambaAlgorithmicRidBase']       = '1000';
1195                $entry['sambaDomainName']                       = $sambadomainname;
1196               
1197                if (!@ldap_add ( $this->ldap, $dn, $entry ))
1198                {
1199                        $return['status'] = false;
1200                        $return['msg'] = "Erro na funcao ldap_functions->add_sambadomain ($dn).\nRetorno do servidor: " . ldap_error($this->ldap);
1201                }
1202                else
1203                        $return['status'] = true;
1204               
1205                return $return;
1206        }
1207       
1208        function delete_sambadomain($sambadomainname)
1209        {
1210                $return['status'] = true;
1211                $filter="(sambaDomainName=$sambadomainname)";
1212                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter);
1213            $entry = ldap_get_entries($this->ldap, $search);
1214         
1215                if ($entry['count'] != 0)
1216            {
1217                        $dn = $entry[0]['dn'];
1218                       
1219                        if (!@ldap_delete($this->ldap, $dn))
1220                        {
1221                                $return['status'] = false;
1222                                $return['msg'] .= "Erro em ldap_funcitons->delete_sambadomain ($sambadomainname).\nRetorno do servidor: " . ldap_error($this->ldap);
1223                        }
1224            }
1225           
1226                return $return;
1227        }
1228}
1229?>
Note: See TracBrowser for help on using the repository browser.