source: branches/2.2.0.1/contactcenter/inc/class.bo_global_ldap_catalog.inc.php @ 4326

Revision 4326, 38.5 KB checked in by rafaelraymundo, 13 years ago (diff)

Ticket #1726 - Modificado implementação que lista Referrals, sem ldap_next_reference(). r4313

  • Property svn:eol-style set to native
  • Property svn:executable set to *
RevLine 
[2]1<?php
2  /***************************************************************************\
3  * eGroupWare - Contacts Center                                              *
4  * http://www.egroupware.org                                                 *
5  * Written by:                                                               *
6  *  - Raphael Derosso Pereira <raphaelpereira@users.sourceforge.net>         *
7  * ------------------------------------------------------------------------- *
8  *  This program is free software; you can redistribute it and/or modify it  *
9  *  under the terms of the GNU General Public License as published by the    *
10  *  Free Software Foundation; either version 2 of the License, or (at your   *
11  *  option) any later version.                                               *
12  \***************************************************************************/
13
14        /*
15                This class is responsible for manipulating the Global LDAP Contact Manager
16        */
17        include_once('class.abo_catalog.inc.php');
[400]18       
[2]19        class bo_global_ldap_catalog extends abo_catalog
20        {
21                var $ldap;
[400]22       
[2]23                var $src_info;
[400]24               
[2]25                var $trans_table;
[284]26                // used to determine if a catalog is external
27                var $external;
[2]28                var $fields = array(
29                        'id_contact'    => true,
30                        'status'        => true,
31                        'photo'         => true,
32                        'alias'         => true,
33                        'prefix'        => true,
34                        'given_names'   => true,
35                        'family_names'  => true,
36                        'account_type'  => true,
37                        'names_ordered' => true,
38                        'suffix'        => true,
39                        'birthdate'     => true,
40                        'sex'           => true,
41                        'pgp_key'       => true,
42                        'notes'         => true,
43                        'companies'     => true,
44                        'relations'     => true,
45                        'addresses'     => true,
46                        'connections'   => true
47                );
[400]48               
[2]49                /*
[400]50               
[2]51                        @function global_ldap_catalog
52                        @abstract Constructor
53                        @author Raphael Derosso Pereira
[400]54                        @author Mário César Kolling (external catalogs)
[284]55
[2]56                        @param integer $id_source The ID of the LDAP source
[284]57                        @param string $context Ldap bind DN
58                        @param integer $external 0 = internal catalog, 1 = external catalog
[2]59                */
[284]60                function bo_global_ldap_catalog ( $id_source, $context, $external = 0 )
[2]61                {
[284]62                        $this->external = $external;
[2]63                        if (!function_exists('ldap_search'))
64                        {
65                                exit('PHP LDAP support Unavailable!');
66                        }
[400]67                       
[2]68                        $this->ldap = CreateObject('contactcenter.bo_ldap_manager');
[400]69                       
[284]70                        if ($this->external)
71                        {
72                                $all_src = $this->ldap->get_external_ldap_sources();
73                        }
74                        else
75                        {
76                                $all_src = $this->ldap->get_all_ldap_sources();
77                        }
78
[2]79                        if (!$all_src[$id_source] or !$context)
80                        {
81                                exit('Unavailable LDAP source.');
82                        }
83
84                        $this->src_info = $all_src[$id_source];
85                        $this->src_info['context'] = $context;
[284]86
87                        if ($this->external)
88                        {
89                                $this->trans_table = $this->ldap->get_external_ldap_fields_association($id_source);
90                        }
91                        else
[400]92                        {       
[284]93                                $this->trans_table = $this->ldap->get_ldap_fields_association($id_source);
94                        }
[2]95                }
[400]96               
[2]97                /*
[400]98               
[2]99                        @function find
100                        @abstract Searches the LDAP directory for the specified fields with
101                                the specified rules and retuns an array containing all the DNs
102                                that matches the rules.
103                        @author Raphael Derosso Pereira
[400]104                       
[2]105                        @param array $what The fields to be taken
106                        @param array $rules The rules to be match. See class.abo_catalog.inc.php
107                                for reference
108                        @param array $other Other parameters:
109                                $return = array(
110                                        'limit'  => (integer),
111                                        'offset' => (integer) [NOT IMPLEMENTED]
112                                )
[400]113               
[2]114                */
[3211]115                function find($what, $rules=false, $other=false, $area=false, $recursive=false)
[2]116                {
117                        $restric_fields = $this->get_restrictions_without_branch($rules);
[400]118                       
[2]119                        $trans_f = $this->translate_fields($what, $restric_fields);
[400]120                       
[2]121                        foreach($trans_f as $orig => $field_a)
122                        {
123                                foreach($field_a as $field)
124                                {
125                                        $fields[] = $field;
126                                }
127                        }
[1598]128
[2]129                        $fields = array_unique($fields);
[1598]130                       
131            //Testa se a busca foi realizada com aspas
132            $rules_search = $rules[3]['value'];
133            $rules_len = (strlen($rules_search)) -1;
134
135            if((($rules_search{1}) == "\"") && (($rules_search{$rules_len -1}) == "\"")){
136                                $rules_search = substr($rules_search,2,$rules_len-3);
137                                $filter = "(&(|(objectClass=phpgwAccount))(&(!(phpgwAccountVisible=-1)))(|(cn=* $rules_search *)(cn=$rules_search *)(cn=* $rules_search)))";
138            }
139            else{
140                                $filter = $this->process_restrictions($rules, $trans_f);
141            }
142                       
143            if ($area)
144            {
145                 $obj = CreateObject('phpgwapi.config','contactcenter');
146                 $opts = $obj->read_repository();
147                 $filter = substr($filter,0,-1) .'(' . $opts['cc_ldap_atrib'] . '=*' . $area . '*))';
148                 $opts = null;
149                 $obj = null;
150            }
151            // Find objects where 'mail' attribute is not null.
[880]152                        $filter = "(&".$filter."(mail=*))";
[1598]153
[4326]154                        $ldap = $GLOBALS['phpgw']->common->ldapConnect($this->src_info['host'], $this->src_info['acc'], $this->src_info['pw'], true);
155                        $result_r = $recursive ? ldap_search($ldap , $this->src_info['context'], $filter, $fields, 0, $this->src_info['max_results']) :
156                                                ldap_list($ldap , $this->src_info['context'], $filter, $fields, 0, $this->src_info['max_results']);
157                                               
[2]158                        if (!$result_r)
159                        {
160                                return false;
161                        }
[400]162                       
[2]163                        if ($other['order'])
164                        {
165                                $sort_f = array($other['order']);
166                                $ldap_sort_by = $this->translate_fields($sort_f, $restric_fields);
167                        }
168
169                        if ($ldap_sort_by)
170                        {
171                                if (!ldap_sort($ldap, $result_r, $ldap_sort_by[$other['order']][0]))
172                                {
173                                        return false;
174                                }
175                        }
[400]176                       
[2]177                        $result_u = ldap_get_entries($ldap, $result_r);
[3135]178                        //      No entries found.
179                        if(!$result_u)
180                                return true;
[400]181                       
[2]182                        $i = 0;
183                        foreach ($result_u as $index => $result_p)
184                        {
[284]185                                if ($index === 'count' or $index === 'dn' or (!$this->external and $result_p['phpgwaccountvisible'][0] == '-1'))
[2]186                                {
187                                        continue;
188                                }
[400]189                               
[2]190                                foreach ($trans_f as $orig => $trans)
191                                {
192                                        $orig = substr($orig, strrpos($orig, '.')+1, strlen($orig));
193                                        foreach ($trans as $f)
194                                        {
195                                                if ($f === 'dn')
196                                                {
197                                                        $return[$i][$orig] = $result_p['dn'];
198                                                }
199                                                else if ($result_p[$f][0])
200                                                {
201                                                        $return[$i][$orig] = $result_p[$f][0];
202                                                }
203                                        }
204                                }
205                                $i++;
206                        }
[4254]207                        if($return)
208                            usort($return, array($this, "compareObjects"));
[2]209                        return $return;
210                }
[884]211                // Compare function for usort.
[1598]212                function compareObjects($a, $b) {
[884]213                        return strnatcasecmp($a['names_ordered'], $b['names_ordered']);
214                }
[400]215               
[2]216                /*
[400]217               
[2]218                        @function translate_fields
219                        @abstract Return the LDAP objectClass fields that corresponds to the
220                                specified parameter fields
221                        @author Raphael Derosso Pereira
[400]222                       
[2]223                        @param array $fields The fields in the standard ContactCenter format
224                        @param array $rules The rules
[400]225               
[2]226                */
227                function translate_fields ( $fields, &$restric_fields )
228                {
229                        $return = array();
[400]230                       
[2]231                        $i = 0;
232                        foreach ($fields as $field)
233                        {
234                                if (!array_key_exists($field,$this->trans_table) or !$this->trans_table[$field])
235                                {
236                                        continue;
237                                }
[400]238                               
[2]239                                if (!is_array($this->trans_table[$field]))
240                                {
241                                        $reference = $this->trans_table[$field];
[400]242                                       
[2]243                                        reset($restric_fields);
244                                        while(list(,$field_r) = each($restric_fields))
245                                        {
246                                                if ($field_r['field'] === $reference and array_key_exists($field_r['value'], $this->trans_table[$reference]))
247                                                {
248                                                        array_push($return[$field], $this->trans_table[$reference][$field_r['value']]);
249                                                }
250                                        }
251                                }
252                                else
253                                {
254                                        if (!is_array($return[$field]))
255                                        {
256                                                $return[$field] = $this->trans_table[$field];
257                                        }
258                                        else
259                                        {
260                                                array_push($return[$field], $this->trans_table[$field]);
261                                        }
262                                }
263                        }
[400]264                       
[2]265                        if (count($return))
266                        {
267                                return $return;
268                        }
[400]269                       
[2]270                        return false;
271                }
[400]272               
[2]273                /*
[400]274               
[2]275                        @function process_restrictions
276                        @abstract Returns a LDAP filter string that corresponds to the
277                                specified restriction rules
278                        @author Raphael Derosso Pereira
[400]279                       
[2]280                        @param string $rules The restriction rules
[400]281               
[2]282                */
283                function process_restrictions( $rules, &$trans_table, $join_type='&' )
284                {
285                        if (!is_array($rules) or !count($rules))
286                        {
287                                return null;
288                        }
[400]289                       
[2]290                        foreach($rules as $rule_i => $rule)
291                        {
292                                $t = array();
293                                switch($rule['type'])
294                                {
295                                        case 'branch':
296                                                switch(strtoupper($rule['value']))
297                                                {
298                                                        case 'OR':
299                                                                $join = '|';
300                                                                break;
[400]301                                                               
[2]302                                                        case 'AND':
303                                                                $join = '&';
304                                                                break;
[400]305                                                               
[2]306                                                        case 'NOT':
307                                                                $join = '!';
308                                                                break;
[400]309                                                               
[2]310                                                        default:
311                                                                $join = $join_type;
312                                                }
313                                                $return_t[] = $this->process_restrictions($rule['sub_branch'], $trans_table, $join);
314                                                break;
[400]315                                               
[2]316                                        case '=':
317                                                if (array_key_exists($rule['field'], $trans_table))
318                                                {
319                                                        foreach($trans_table[$rule['field']] as $field)
320                                                        {
321                                                                $t[] = '('.$field.'='.$rule['value'].')';
322                                                        }
323                                                        $return_t[] = '(|'.implode(' ',$t).')';
324                                                }
325                                                break;
[400]326                                       
327                                        case '!=':     
[2]328                                                if (array_key_exists($rule['field'], $trans_table))
329                                                {
330                                                        foreach($trans_table[$rule['field']] as $field)
331                                                        {
332                                                                $t[] = '(!('.$field.'='.$rule['value'].'))';
333                                                        }
334                                                        $return_t[] = '(&'.implode(' ',$t).')';
335                                                }
336                                                break;
[400]337                                       
[2]338                                        case '<=':
339                                        case '<':
340                                                if (array_key_exists($rule['field'], $trans_table))
341                                                {
342                                                        foreach($trans_table[$rule['field']] as $field)
343                                                        {
344                                                                $t[] = '('.$field.'<='.$rule['value'].')';
345                                                        }
346                                                        $return_t[] = '(|'.implode(' ',$t).')';
347                                                }
348                                                break;
[400]349                                       
[2]350                                        case '>':
351                                        case '>=':
352                                                if (array_key_exists($rule['field'], $trans_table))
353                                                {
354                                                        foreach($trans_table[$rule['field']] as $field)
355                                                        {
356                                                                $t[] = '('.$field.'>='.$rule['value'].')';
357                                                        }
358                                                        $return_t[] = '(|'.implode(' ',$t).')';
359                                                }
360                                                break;
[400]361                                               
[2]362                                        case 'NULL':
363                                                if (array_key_exists($rule['field'], $trans_table))
364                                                {
365                                                        foreach($trans_table[$rule['field']] as $field)
366                                                        {
367                                                                $t[] = '(!('.$field.'=*'.'))';
368                                                        }
369                                                        $return_t[] = '(&'.implode(' ',$t).')';
370                                                }
371                                                break;
[400]372                                       
[2]373                                        case 'IN':
374                                                if (array_key_exists($rule['field'], $trans_table))
375                                                {
376                                                        foreach($trans_table[$rule['field']] as $field)
377                                                        {
378                                                                foreach($rule['value'] as $value)
379                                                                {
380                                                                        $t[] = '('.$field.'='.$value.')';
381                                                                }
382                                                        }
383                                                        $return_t[] = '(|'.implode(' ',$t).')';
384                                                }
385                                                break;
386
387                                        case 'iLIKE':
388/*                                              if (array_key_exists($rule['field'], $trans_table))
389                                                {
390                                                        $value_1 = strtoupper(str_replace('%', '*', $rule['value']));
391                                                        $value_2 = strtolower($value_1);
[400]392                                                       
[2]393                                                        foreach($trans_table[$rule['field']] as $field)
394                                                        {
395                                                                $t[] = '('.$field.'='.$value_1.')';
396                                                                $t[] = '('.$field.'='.$value_2.')';
397                                                        }
398                                                        $return_t[] = '(|'.implode(' ',$t).')';
399                                                }
400                                                break;
[400]401                                               
[2]402*/                                      case 'LIKE':
403                                                if (array_key_exists($rule['field'], $trans_table))
404                                                {
405                                                        $value = str_replace('%', '*', $rule['value']);
[400]406                                                       
[2]407                                                        foreach($trans_table[$rule['field']] as $field)
408                                                        {
409                                                                $t[] = '('.$field.'='.$value.')';
410                                                        }
411                                                        $return_t[] = '(|'.implode(' ',$t).')';
412                                                }
413                                                break;
[400]414                                               
[2]415                                        case 'NOT NULL':
416                                                if (array_key_exists($rule['field'], $trans_table))
417                                                {
418                                                        foreach($trans_table[$rule['field']] as $field)
419                                                        {
420                                                                $t[] = '('.$field.'=*'.')';
421                                                        }
422                                                        $return_t[] = '(|'.implode(' ',$t).')';
423                                                }
424                                                break;
[400]425                                       
[2]426                                        case 'NOT IN':
427                                                if (array_key_exists($rule['field'], $trans_table))
428                                                {
429                                                        foreach($trans_table[$rule['field']] as $field)
430                                                        {
431                                                                foreach($rule['value'] as $value)
432                                                                {
433                                                                        $t[] = '('.$field.'='.$value.')';
434                                                                }
435                                                        }
436                                                        $return_t[] = '(!(|'.implode('',$t).'))';
437                                                }
438                                                break;
439
440                                        case 'NOT iLIKE':
441                                                if (array_key_exists($rule['field'], $trans_table))
442                                                {
443                                                        $value_1 = strtoupper(str_replace('%', '*', $rule['value']));
444                                                        $value_2 = strtolower($value_1);
[400]445                                                       
[2]446                                                        foreach($trans_table[$rule['field']] as $field)
447                                                        {
448                                                                $t[] = '('.$field.'='.$value_1.')';
449                                                                $t[] = '('.$field.'='.$value_2.')';
450                                                        }
451                                                        $return_t[] = '(!(|'.implode(' ',$t).'))';
452                                                }
453                                                break;
454
455                                        case 'NOT LIKE':
456                                                if (array_key_exists($rule['field'], $trans_table))
457                                                {
458                                                        $value = str_replace('%', '*', $rule['value']);
[400]459                                                       
[2]460                                                        foreach($trans_table[$rule['field']] as $field)
461                                                        {
462                                                                $t[] = '('.$field.'='.$value.')';
463                                                        }
464                                                        $return_t[] = '(!(|'.implode(' ',$t).'))';
465                                                }
466                                                break;
467                                }
468                        }
[400]469                       
[2]470                        if (count($return_t))
471                        {
472                                $return = '('.$join_type;
473                                foreach ($return_t as $return_p)
474                                {
475                                        $return .= $return_p;
476                                }
477                                $return .= ')';
478                        }
479                        else
480                        {
481                                $return = null;
482                        }
483                        return $return;
484                }
485
486                /*!
[400]487               
[2]488                        @function get_restrictions_without_branch
489                        @abstract Returns an array containing the restrictions ignoring the
490                                branches
491                        @author Raphael Derosso Pereira
[400]492                       
[2]493                        @param array $restrictions The restrictions
[400]494               
[2]495                */
496                function get_restrictions_without_branch(&$restrictions)
497                {
498                        if (!is_array($restrictions))
499                        {
500                                return null;
501                        }
[400]502                       
[2]503                        $fields = array();
[400]504                       
[2]505                        foreach ($restrictions as $restrict_data)
506                        {
507                                switch($restrict_data['type'])
508                                {
509                                        case 'branch':
510                                                $fields = array_merge($fields, $this->get_restrictions_without_branch($restrict_data['sub_branch']));
511                                                break;
[400]512                                               
[2]513                                        case '=':
[400]514                                        case '!=':     
[2]515                                        case '<=':
516                                        case '<':
517                                        case '>':
518                                        case '>=':
519                                        case 'NULL':
520                                        case 'IN':
521                                        case 'LIKE':
522                                        case 'iLIKE':
523                                        case 'NOT NULL':
524                                        case 'NOT IN':
525                                        case 'NOT LIKE':
526                                        case 'NOT iLIKE':
527                                                array_push($fields, $restrict_data);
528                                                break;
[400]529                                               
[2]530                                        default:
[400]531                                                exit('Error in '.__FILE__.' on '.__LINE__.'<br>The restriction type passed was: '.$restrict_data['type']);                                     
[2]532                                }
533                        }
[400]534                       
[2]535                        return $fields;
536                }
[400]537               
538               
[2]539                /*********************************************************************\
540                 *                        Methods to Get Data                        *
541                \*********************************************************************/
[400]542               
543       
[2]544                /*!
[400]545               
[2]546                 @function get_single_entry
547                 @abstract Returns all information requested about one contact
548                 @author Raphael Derosso Pereira
[400]549                     
[2]550                 @param integer $id_contact The contact ID
551                 @param array $fields The array returned by get_fields with true
552                        on the fields to be taken.
[400]553                       
[2]554                */
[1419]555                function get_single_entry ( $id_contact, $fields, $external=false )
[2]556                {
[400]557                        if (!is_array($fields))
[2]558                        {
[400]559                                if (is_object($GLOBALS['phpgw']->log))
[2]560                                {
561                                        $GLOBALS['phpgw']->log->message(array(
562                                                'text' => 'F-BadcontactcenterParam, wrong get_single_entry parameters type.',
563                                                'line' => __LINE__,
564                                                'file' => __FILE__));
[400]565                                       
[2]566                                        $GLOBALS['phpgw']->log->commit();
567                                }
[400]568                                else
[2]569                                {
570                                        exit('Argument Error on: <br>File:'.__FILE__.'<br>Line:'.__LINE__.'<br>');
571                                }
572                        }
[400]573                       
[2]574                        $ldap = $GLOBALS['phpgw']->common->ldapConnect($this->src_info['host'],$this->src_info['acc'],$this->src_info['pw'],true);
[400]575                       
[2]576                        if (!$ldap)
577                        {
578                                return false;
579                        }
[3262]580
581                        //Alteração feita especificamente para tratar problema da montagem do $id_contact
[1419]582                        if(!$external)
[3262]583                        {
584                                if($this->src_info['montaDN'] == "true")
585                                {
[1419]586                                $id_contact = preg_replace("/dc=(.*)/i",$this->src_info['dn'],$id_contact);
[3262]587                                }
588                        }
[1419]589                       
[314]590                        $resource = @ldap_read($ldap, $id_contact, 'objectClass='.$this->src_info['obj']);
591                        $n_entries = @ldap_count_entries($ldap, $resource);
[2]592                        if ( $n_entries > 1 or $n_entries < 1)
593                        {
594                                return false;
595                        }
[400]596                       
[2]597                        $first_entry = ldap_first_entry($ldap, $resource);
598                        $contact = ldap_get_attributes($ldap,$first_entry);
[400]599                        if($contact['jpegPhoto']){     
600                                $contact['jpegPhoto'] = ldap_get_values_len ($ldap, $first_entry, "jpegPhoto");
[2]601                        }
602
[1598]603//                      print_r($contact);
[400]604                       
[2]605                //      $contact_data = $this->fields;
[400]606                       
[2]607                        foreach($fields as $field => $trueness)
608                        {
609                                if (!$trueness)
610                                {
611                                        //unset($contact_data[$field]);
612                                        continue;
613                                }
[400]614                               
[2]615                                switch ($field)
616                                {
617                                        case 'companies':
618                                                unset($l_fields);
619                                                $l_fields['company_name']  = $this->trans_table['contact.company.company_name'];
620                                                $l_fields['title']         = $this->trans_table['contact.business_info.title'];
[1598]621                                                //$l_fields['department']    = $this->trans_table['contact.business_info.department'];
[2]622                                                $l_fields['company_notes'] = $this->trans_table['contact.company.company_notes'];
[1598]623
624                                                //Relaciona o array com o atributo 'ou' do RHDS; tambem verifica se a
625                                                //preferencia esta configurada para exibir o campo
626                                                if(isset($_SESSION['phpgw_info']['user']['preferences']['contactcenter']['departmentShow']) && $_SESSION['phpgw_info']['user']['preferences']['contactcenter']['departmentShow'])
627                                                {
628                                                        $l_fields['department']    = $this->trans_table['contact.business_info.department'];
629                                                }
630                                                //Relaciona o array com o atributo 'employeeNumber' do RHDS; tambem verifica se a
631                                                //preferencia esta configurada para exibir o campo
632                                                if(isset($_SESSION['phpgw_info']['user']['preferences']['contactcenter']['empNumShow']) && $_SESSION['phpgw_info']['user']['preferences']['contactcenter']['empNumShow'])
633                                                {
634                                                        $l_fields['empNumber']     = $this->trans_table['contact.business_info.empNumber'];
635                                                }
636                                                //Relaciona o array com o atributo 'mobile' do RHDS; tambem verifica se a
637                                                //preferencia esta configurada para exibir o campo
638                                                if(isset($_SESSION['phpgw_info']['user']['preferences']['contactcenter']['cellShow']) && $_SESSION['phpgw_info']['user']['preferences']['contactcenter']['cellShow'])
639                                                {
640                                                        $l_fields['celPhone']     = $this->trans_table['contact.business_info.celPhone'];
641                                                }
642
[2]643                                                $contact_data['companies'] = array();
644                                                foreach($l_fields as $l_field => $l_value)
645                                                {
646                                                        if (!( $contact[$l_value[0]][0]))
647                                                        {
648                                                                continue;
649                                                        }
[400]650                                                       
[284]651                                                        $contact_data['companies']['company1'][$l_field] = utf8_decode($contact[$l_value[0]][0]);
[2]652                                                }
[400]653                                               
[2]654                                                if (!(count($contact_data['companies'])))
655                                                {
656                                                        unset($contact_data['companies']);
657                                                }
658                                                break;
[400]659                                       
[2]660                                        case 'relations':
661                                                unset($l_fields);
662                                                if (!$this->trans_table['contact.contact_related.names_ordered'])
663                                                {
664                                                        unset($contact_data['relations']);
665                                                }
[400]666                                               
[2]667                                                $contact_data['relations'] = array();
668                                                if (!is_array($this->trans_table['contact.contact_related.names_ordered']))
669                                                {
670                                                        if (!($trans = $this->trans_table[$this->trans_table['contact.contact_related.names_ordered']]))
671                                                        {
672                                                                continue;
673                                                        }
[400]674                                                       
[2]675                                                        $i = 1;
676                                                        foreach($trans as $l_type => $l_type_fields)
677                                                        {
678                                                                if (!($contact[$l_type_fields[0]][0]))
679                                                                {
680                                                                        continue;
681                                                                }
[400]682                                                               
[2]683                                                                $contact_data['relations']['relation'.$i]['type'] = $l_type;
[284]684                                                                $contact_data['relations']['relation'.$i]['names_ordered'] = utf8_decode($contact[$l_type_fields[0]][0]);
[2]685                                                                $i++;
686                                                        }
687                                                }
[400]688                                               
[2]689                                                if (!(count($contact_data['relations'])))
690                                                {
691                                                        unset($contact_data['relations']);
692                                                }
693                                                break;
[400]694                                       
[2]695                                        case 'addresses':
696                                                unset($l_fields);
697                                                $l_fields['address1'] = $this->trans_table['contact.address.address1'];
698                                                $l_fields['address2'] = $this->trans_table['contact.address.address2'];
699                                                $l_fields['complement'] = $this->trans_table['contact.address.complement'];
700                                                $l_fields['address_other'] = $this->trans_table['contact.address.address_other'];
701                                                $l_fields['postal_code'] = $this->trans_table['contact.address.postal_code'];
702                                                $l_fields['po_box'] = $this->trans_table['contact.address.po_box'];
703                                                $l_fields['id_city'] = $this->trans_table['contact.address.city.id_city'];
704                                                $l_fields['city_name'] = $this->trans_table['contact.address.city.city_name'];
705                                                $l_fields['city_timezone'] = $this->trans_table['contact.address.city.city_timezone'];
706                                                $l_fields['city_geo_location'] = $this->trans_table['contact.address.city.city_geo_location'];
707                                                $l_fields['id_state'] = $this->trans_table['contact.address.city.state.id_state'];
708                                                $l_fields['state_name'] = $this->trans_table['contact.address.city.state.state_name'];
709                                                $l_fields['state_symbol'] = $this->trans_table['contact.address.city.state.state_symbol'];
710                                                $l_fields['id_country'] = $this->trans_table['contact.address.city.country.id_country'];
711                                                $l_fields['country_name'] = $this->trans_table['contact.address.city.country.country_name'];
712                                                $l_fields['address_is_default'] = $this->trans_table['contact.address.address_is_default'];
713
714                                                $contact_data['addresses'] = array();
715                                                foreach($l_fields as $l_field => $l_value)
716                                                {
717                                                        if (!is_array($l_value))
718                                                        {
719                                                                if (!($trans = $this->trans_table[$l_value]))
720                                                                {
721                                                                        continue;
722                                                                }
[400]723                                                               
[2]724                                                                $i = 1;
725                                                                foreach($trans as $l_type => $l_type_fields)
726                                                                {
727                                                                        if (!($contact[$l_type_fields[0]][0]))
728                                                                        {
729                                                                                continue;
730                                                                        }
[400]731                                                                       
[2]732                                                                        $contact_data['addresses']['address'.$i]['type'] = $l_type;
[284]733                                                                        $contact_data['addresses']['address'.$i][$l_field] = utf8_decode($contact[$l_type_fields[0]][0]);
[2]734                                                                        $i++;
735                                                                }
736                                                        }
737                                                        else
738                                                        {
[284]739                                                                $contact_data['addresses']['address1'][$l_field] = utf8_decode($contact[$l_value[0]][0]);
[2]740                                                        }
741                                                }
[400]742                                               
[2]743                                                if (!(count($contact_data['addresses'])))
744                                                {
745                                                        unset($contact_data['addresses']);
746                                                }
747                                                break;
[400]748                                       
[2]749                                        case 'connections':
750                            $preferences = ExecMethod('contactcenter.ui_preferences.get_preferences');
751                            if (!is_array($preferences))
752                            {
753                                                        $preferences['personCardEmail'] = 1;
754                                                        $preferences['personCardPhone'] = 2;
755                                                }
756                                                unset($l_fields);
757                                                $l_fields['connection_name'] = $this->trans_table['contact.connection.connection_name'];
758                                                $l_fields['connection_value'] = $this->trans_table['contact.connection.connection_value'];
759
760                                                $contact_data['connections'] = array();
761                                                foreach($l_fields as $l_field => $l_value)
762                                                {
763                                                        if (!is_array($l_value))
764                                                        {
765                                                                if (!($trans = $this->trans_table[$l_value]))
766                                                                {
767                                                                        continue;
768                                                                }
[400]769                                                               
[2]770                                                                $i = 1;
771                                                                foreach($trans as $l_type => $l_type_fields)
772                                                                {
773                                                                        if (!($contact[$l_type_fields[0]][0]))
774                                                                        {
775                                                                                continue;
776                                                                        }
[400]777                                                                       
[2]778                                                                        switch ($l_type)
779                                                                        {
780                                                                                case 'email':
781                                                                                $contact_data['connections']['connection'.$i]['id_type'] = $preferences['personCardEmail'];
782                                                                                break;
783
784                                                                                default:
785                                                                                $contact_data['connections']['connection'.$i]['id_type'] = $preferences['personCardPhone'];
786                                                                        }
787                                                                        $contact_data['connections']['connection'.$i]['type'] = $l_type;
[284]788                                                                        $contact_data['connections']['connection'.$i][$l_field] = utf8_decode($contact[$l_type_fields[0]][0]);
[2]789                                                                        $i++;
790                                                                }
791                                                        }
792                                                        else
793                                                        {
[284]794                                                                $contact_data['connections']['connection1'][$l_field] = utf8_decode($contact[$l_value[0]][0]);
[2]795                                                        }
796                                                }
[400]797                                               
[2]798                                                if (!(count($contact_data['connections'])))
799                                                {
800                                                        unset($contact_data['connections']);
801                                                }
802                                                break;
[400]803                                       
[2]804                                        case 'prefix':
805                                                unset($l_fields);
806                                                $l_fields = $this->trans_table['contact.prefixes.prefix'];
807                                                if (!$l_fields or !$contact[$l_fields[0]][0])
808                                                {
809                                                        unset($contact_data['prefix']);
810                                                        continue;
811                                                }
[400]812                                               
[284]813                                                $contact_data['prefix'] = utf8_decode($contact[$l_fields[0]][0]);
[2]814                                                break;
[400]815                                               
[2]816                                        case 'suffix':
817                                                unset($l_fields);
818                                                $l_fields = $this->trans_table['contact.suffixes.suffix'];
819                                                if (!$l_fields or !$contact[$l_fields[0]][0])
820                                                {
821                                                        unset($contact_data['suffix']);
822                                                        continue;
823                                                }
[400]824                                               
[284]825                                                $contact_data['suffix'] = utf8_decode($contact[$l_fields[0]][0]);
[2]826                                                break;
[400]827                                               
[2]828                                        case 'status':
829                                                unset($l_fields);
830                                                $l_fields = $this->trans_table['contact.status.status_name'];
831                                                if (!$l_fields or !$contact[$l_fields[0]][0])
832                                                {
833                                                        unset($contact_data['status']);
834                                                        continue;
835                                                }
[400]836                                               
[284]837                                                $contact_data['status'] = utf8_decode($contact[$l_fields[0]][0]);
[2]838                                                break;
[400]839                                               
[2]840                                                case 'photo':
841                                                unset($l_fields);
842                                                $l_fields = $this->trans_table['contact.photo'];
843                                                if (!$l_fields or !$contact[$l_fields[0]][0])
844                                                {
845                                                        unset($contact_data['photo']);
846                                                        continue;
847                                                }
[400]848                                               
[2]849                                                $contact_data['photo'] = $contact[$l_fields[0]][0];
[400]850                                                break;                                                                                 
[2]851
852                                        default:
853                                                unset($l_fields);
854                                                $l_fields = $this->trans_table['contact.'.$field];
855                                                if (!$l_fields or !$contact[$l_fields[0]][0])
856                                                {
857                                                        unset($contact_data[$field]);
858                                                        continue;
859                                                }
[400]860                                               
[2]861                                                if(count($contact[$l_fields[0]]) > 1)
[284]862                                                {
863                                                        $tmp = array();
864                                                        foreach ($contact[$l_fields[0]] as $i => $j)
865                                                        {
866                                                                $tmp["$i"] = utf8_decode($j);
867                                                        }
868                                                        //$contact_data[$field] = $contact[$l_fields[0]];
869                                                        $contact_data[$field] = $tmp;
870                                                }
[2]871                                                else
[284]872                                                        $contact_data[$field] = utf8_decode($contact[$l_fields[0]][0]);
[2]873
874                                                break;
875                                }
876                        }
[400]877                       
[2]878                        if (!is_array($contact_data))
879                        {
880                                return false;
881                        }
[400]882                       
[2]883                        return $contact_data;
884                }
[285]885                //SERPRO
[284]886                /*!
887
888                 @function get_all_entries
889                 @abstract Returns all information requested about a bunch of contacts, usually a page
890                 @author Raphael Derosso Pereira
[400]891                 @author Mário César Kolling
[284]892
893                 @param string $filter Filter (returned by generate_filter).
894                 @param array $fields The array returned by get_fields with true
895                        on the fields to be taken.
896
897                */
898                function get_all_entries($filter, $fields)
899                {
900                        if (!is_array($fields))
901                        {
902                                if (is_object($GLOBALS['phpgw']->log))
903                                {
904                                        $GLOBALS['phpgw']->log->message(array(
905                                                'text' => 'F-BadcontactcenterParam, wrong get_single_entry parameters type.',
906                                                'line' => __LINE__,
907                                                'file' => __FILE__));
908
909                                        $GLOBALS['phpgw']->log->commit();
910                                }
911                                else
912                                {
913                                        exit('Argument Error on: <br>File:'.__FILE__.'<br>Line:'.__LINE__.'<br>');
914                                }
915                        }
916
917                        $ldap = $GLOBALS['phpgw']->common->ldapConnect($this->src_info['host'],$this->src_info['acc'],$this->src_info['pw'],true);
918
919                        if (!$ldap)
920                        {
921                                return false;
922                        }
923
924                        $resource = @ldap_search($ldap, $this->src_info['dn'], $filter);
925                        $n_entries = @ldap_count_entries($ldap, $resource);
926
927                        ldap_sort($ldap, $resource, 'cn');
928
929                        if ( $n_entries < 1)
930                        {
931                                return false;
932                        }
933
934                        $contacts = array();
935
936                        for ($entry = ldap_first_entry($ldap, $resource);
937                                 $entry != false;
938                                 $entry = ldap_next_entry($ldap, $entry))
939                        {
940                                $contact = ldap_get_attributes($ldap,$entry);
941                                if($contact['jpegPhoto']){
942                                        $contact['jpegPhoto'] = ldap_get_values_len ($ldap, $entry, "jpegPhoto");
943                                }
944
945                                foreach($fields as $field => $trueness)
946                                {
947                                        if (!$trueness)
948                                        {
949                                                //unset($contact_data[$field]);
950                                                continue;
951                                        }
952
953                                        switch ($field)
954                                        {
955                                                case 'companies':
956                                                        unset($l_fields);
957                                                        $l_fields['company_name']  = $this->trans_table['contact.company.company_name'];
958                                                        $l_fields['title']         = $this->trans_table['contact.business_info.title'];
959                                                        $l_fields['department']    = $this->trans_table['contact.business_info.department'];
960                                                        $l_fields['company_notes'] = $this->trans_table['contact.company.company_notes'];
961
[1598]962                                                        //Relaciona o array com o atributo 'employeeNumber' do RHDS
963                                                        if(isset($_SESSION['phpgw_info']['user']['preferences']['contactcenter']['empNumberShow']) && $_SESSION['phpgw_info']['user']['preferences']['contactcenter']['empNumberShow'])
964                                                        {
965                                                                $l_fields['empNumber']     = $this->trans_table['contact.business_info.empNumber'];
966                                                        }
967
968                                                        //Relaciona o array com o atributo 'mobile' do RHDS
969                                                        $l_fields['celPhone']     = $this->trans_table['contact.business_info.celPhone'];
970
[284]971                                                        $contact_data['companies'] = array();
972                                                        foreach($l_fields as $l_field => $l_value)
973                                                        {
974                                                                if (!( $contact[$l_value[0]][0]))
975                                                                {
976                                                                        continue;
977                                                                }
978
979                                                                $contact_data['companies']['company1'][$l_field] = utf8_decode($contact[$l_value[0]][0]);
980                                                        }
981
982                                                        if (!(count($contact_data['companies'])))
983                                                        {
984                                                                unset($contact_data['companies']);
985                                                        }
986                                                        break;
987
988                                                case 'relations':
989                                                        unset($l_fields);
990                                                        if (!$this->trans_table['contact.contact_related.names_ordered'])
991                                                        {
992                                                                unset($contact_data['relations']);
993                                                        }
994
995                                                        $contact_data['relations'] = array();
996                                                        if (!is_array($this->trans_table['contact.contact_related.names_ordered']))
997                                                        {
998                                                                if (!($trans = $this->trans_table[$this->trans_table['contact.contact_related.names_ordered']]))
999                                                                {
1000                                                                        continue;
1001                                                                }
1002
1003                                                                $i = 1;
1004                                                                foreach($trans as $l_type => $l_type_fields)
1005                                                                {
1006                                                                        if (!($contact[$l_type_fields[0]][0]))
1007                                                                        {
1008                                                                                continue;
1009                                                                        }
1010
1011                                                                        $contact_data['relations']['relation'.$i]['type'] = $l_type;
1012                                                                        $contact_data['relations']['relation'.$i]['names_ordered'] = utf8_decode($contact[$l_type_fields[0]][0]);
1013                                                                        $i++;
1014                                                                }
1015                                                        }
1016
1017                                                        if (!(count($contact_data['relations'])))
1018                                                        {
1019                                                                unset($contact_data['relations']);
1020                                                        }
1021                                                        break;
1022
1023                                                case 'addresses':
1024                                                        unset($l_fields);
1025                                                        $l_fields['address1'] = $this->trans_table['contact.address.address1'];
1026                                                        $l_fields['address2'] = $this->trans_table['contact.address.address2'];
1027                                                        $l_fields['complement'] = $this->trans_table['contact.address.complement'];
1028                                                        $l_fields['address_other'] = $this->trans_table['contact.address.address_other'];
1029                                                        $l_fields['postal_code'] = $this->trans_table['contact.address.postal_code'];
1030                                                        $l_fields['po_box'] = $this->trans_table['contact.address.po_box'];
1031                                                        $l_fields['id_city'] = $this->trans_table['contact.address.city.id_city'];
1032                                                        $l_fields['city_name'] = $this->trans_table['contact.address.city.city_name'];
1033                                                        $l_fields['city_timezone'] = $this->trans_table['contact.address.city.city_timezone'];
1034                                                        $l_fields['city_geo_location'] = $this->trans_table['contact.address.city.city_geo_location'];
1035                                                        $l_fields['id_state'] = $this->trans_table['contact.address.city.state.id_state'];
1036                                                        $l_fields['state_name'] = $this->trans_table['contact.address.city.state.state_name'];
1037                                                        $l_fields['state_symbol'] = $this->trans_table['contact.address.city.state.state_symbol'];
1038                                                        $l_fields['id_country'] = $this->trans_table['contact.address.city.country.id_country'];
1039                                                        $l_fields['country_name'] = $this->trans_table['contact.address.city.country.country_name'];
1040                                                        $l_fields['address_is_default'] = $this->trans_table['contact.address.address_is_default'];
1041
1042                                                        $contact_data['addresses'] = array();
1043                                                        foreach($l_fields as $l_field => $l_value)
1044                                                        {
1045                                                                if (!is_array($l_value))
1046                                                                {
1047                                                                        if (!($trans = $this->trans_table[$l_value]))
1048                                                                        {
1049                                                                                continue;
1050                                                                        }
1051
1052                                                                        $i = 1;
1053                                                                        foreach($trans as $l_type => $l_type_fields)
1054                                                                        {
1055                                                                                if (!($contact[$l_type_fields[0]][0]))
1056                                                                                {
1057                                                                                        continue;
1058                                                                                }
1059
1060                                                                                $contact_data['addresses']['address'.$i]['type'] = $l_type;
1061                                                                                $contact_data['addresses']['address'.$i][$l_field] = utf8_decode($contact[$l_type_fields[0]][0]);
1062                                                                                $i++;
1063                                                                        }
1064                                                                }
1065                                                                else
1066                                                                {
1067                                                                        $contact_data['addresses']['address1'][$l_field] = utf8_decode($contact[$l_value[0]][0]);
1068                                                                }
1069                                                        }
1070
1071                                                        if (!(count($contact_data['addresses'])))
1072                                                        {
1073                                                                unset($contact_data['addresses']);
1074                                                        }
1075                                                        break;
1076
1077                                                case 'connections':
1078                                    $preferences = ExecMethod('contactcenter.ui_preferences.get_preferences');
1079                                    if (!is_array($preferences))
1080                                    {
1081                                                                $preferences['personCardEmail'] = 1;
1082                                                                $preferences['personCardPhone'] = 2;
1083                                                        }
1084                                                        unset($l_fields);
1085                                                        $l_fields['connection_name'] = $this->trans_table['contact.connection.connection_name'];
1086                                                        $l_fields['connection_value'] = $this->trans_table['contact.connection.connection_value'];
1087
1088                                                        $contact_data['connections'] = array();
1089                                                        foreach($l_fields as $l_field => $l_value)
1090                                                        {
1091                                                                if (!is_array($l_value))
1092                                                                {
1093                                                                        if (!($trans = $this->trans_table[$l_value]))
1094                                                                        {
1095                                                                                continue;
1096                                                                        }
1097
1098                                                                        $i = 1;
1099                                                                        foreach($trans as $l_type => $l_type_fields)
1100                                                                        {
1101                                                                                if (!($contact[$l_type_fields[0]][0]))
1102                                                                                {
1103                                                                                        continue;
1104                                                                                }
1105
1106                                                                                switch ($l_type)
1107                                                                                {
1108                                                                                        case 'email':
1109                                                                                        $contact_data['connections']['connection'.$i]['id_type'] = $preferences['personCardEmail'];
1110                                                                                        break;
1111
1112                                                                                        default:
1113                                                                                        $contact_data['connections']['connection'.$i]['id_type'] = $preferences['personCardPhone'];
1114                                                                                }
1115                                                                                $contact_data['connections']['connection'.$i]['type'] = $l_type;
1116                                                                                $contact_data['connections']['connection'.$i][$l_field] = utf8_decode($contact[$l_type_fields[0]][0]);
1117                                                                                $i++;
1118                                                                        }
1119                                                                }
1120                                                                else
1121                                                                {
1122                                                                        $contact_data['connections']['connection1'][$l_field] = utf8_decode($contact[$l_value[0]][0]);
1123                                                                }
1124                                                        }
1125
1126                                                        if (!(count($contact_data['connections'])))
1127                                                        {
1128                                                                unset($contact_data['connections']);
1129                                                        }
1130                                                        break;
1131
1132                                                case 'prefix':
1133                                                        unset($l_fields);
1134                                                        $l_fields = $this->trans_table['contact.prefixes.prefix'];
1135                                                        if (!$l_fields or !$contact[$l_fields[0]][0])
1136                                                        {
1137                                                                unset($contact_data['prefix']);
1138                                                                continue;
1139                                                        }
1140
1141                                                        $contact_data['prefix'] = utf8_decode($contact[$l_fields[0]][0]);
1142                                                        break;
1143
1144                                                case 'suffix':
1145                                                        unset($l_fields);
1146                                                        $l_fields = $this->trans_table['contact.suffixes.suffix'];
1147                                                        if (!$l_fields or !$contact[$l_fields[0]][0])
1148                                                        {
1149                                                                unset($contact_data['suffix']);
1150                                                                continue;
1151                                                        }
1152
1153                                                        $contact_data['suffix'] = utf8_decode($contact[$l_fields[0]][0]);
1154                                                        break;
1155
1156                                                case 'status':
1157                                                        unset($l_fields);
1158                                                        $l_fields = $this->trans_table['contact.status.status_name'];
1159                                                        if (!$l_fields or !$contact[$l_fields[0]][0])
1160                                                        {
1161                                                                unset($contact_data['status']);
1162                                                                continue;
1163                                                        }
1164
1165                                                        $contact_data['status'] = utf8_decode($contact[$l_fields[0]][0]);
1166                                                        break;
1167
1168                                                        case 'photo':
1169                                                        unset($l_fields);
1170                                                        $l_fields = $this->trans_table['contact.photo'];
1171                                                        if (!$l_fields or !$contact[$l_fields[0]][0])
1172                                                        {
1173                                                                unset($contact_data['photo']);
1174                                                                continue;
1175                                                        }
1176
1177                                                        $contact_data['photo'] = $contact[$l_fields[0]][0];
1178                                                        break;
1179
1180                                                default:
1181                                                        unset($l_fields);
1182                                                        $l_fields = $this->trans_table['contact.'.$field];
1183                                                        if (!$l_fields or !$contact[$l_fields[0]][0])
1184                                                        {
1185                                                                unset($contact_data[$field]);
1186                                                                continue;
1187                                                        }
1188
1189                                                        if(count($contact[$l_fields[0]]) > 1)
1190                                                        {
1191                                                                $tmp = array();
1192                                                                foreach ($contact[$l_fields[0]] as $i => $j)
1193                                                                {
1194                                                                        $tmp["$i"] = utf8_decode($j);
1195                                                                }
1196                                                                //$contact_data[$field] = $contact[$l_fields[0]];
1197                                                                $contact_data[$field] = $tmp;
1198                                                        }
1199                                                        else
1200                                                                $contact_data[$field] = utf8_decode($contact[$l_fields[0]][0]);
1201
1202                                                        break;
1203
1204                                        }
1205                                }
1206
1207                                if (is_array($contact_data))
1208                                {
1209                                        $contacts[ldap_get_dn($ldap, $entry)] = $contact_data;
1210                                }
1211
1212                        }
1213
1214                        return $contacts;
1215                }
[400]1216               
[1419]1217                function get_multiple_entries ( $id_contacts, $fields, $other_data = false, $external=false )
[2]1218                {
1219                        if (!is_array($id_contacts) or !is_array($fields) or ($other_data != false and !is_array($other_data)))
1220                        {
[400]1221                                if (is_object($GLOBALS['phpgw']->log))
[2]1222                                {
1223                                        $GLOBALS['phpgw']->log->message(array(
1224                                                'text' => 'F-BadcontactcenterParam, wrong get_multiple_entry parameter type.',
1225                                                'line' => __LINE__,
1226                                                'file' => __FILE__));
[400]1227                                       
[2]1228                                        $GLOBALS['phpgw']->log->commit();
1229                                }
1230                                else {
1231                                        exit('Argument Error on: <br>File:'.__FILE__.'<br>Line:'.__LINE__.'<br>');
1232                                }
1233                        }
[400]1234                         
[285]1235                        foreach ($id_contacts as $id)
1236                        {
[1419]1237                                $contacts[$id] = $this->get_single_entry($id,$fields,$external);
[285]1238                        }
[400]1239                       
[285]1240                        return $contacts;
[284]1241
[285]1242                        // SERPRO
[400]1243                                               
[285]1244                        /*$contacts = array();
[400]1245       
[2]1246                        if ($other_data)
1247                        {
1248                                //TODO
1249                        }
[284]1250
1251                        $filter = $this->generate_filter($id_contacts);
1252
1253                        //$teste = $this->get_all_entries($filter, $fields);
1254
[285]1255                        return $this->get_all_entries($filter, $fields);*/
[400]1256                       
[284]1257                }
1258
[285]1259        // CELEPAR
[284]1260                function generate_filter($id_contacts)
1261                {
1262                        if (($size = count($id_contacts)))
[2]1263                        {
[285]1264                                $contacts[$id] = $this->get_single_entry($id,$fields);
1265                        }
[400]1266                       
[285]1267                        return $contacts;
1268                }
[400]1269               
[285]1270                // SERPRO
1271                /*
1272                function generate_filter($id_contacts)
1273                {
1274                        if (($size = count($id_contacts)))
1275                        {
[284]1276                                $filter = '(&(objectClass='.$this->src_info['obj'] .  ')(|';
1277                                for ($i = 0; $i < $size; $i++)
1278                                {
1279
[400]1280                                        //
1281                                        //  Não utiliza mais a função ldap_explode, usa a expressão regular a seguir para pegar o primeiro
[285]1282                                        //  componente da dn
[400]1283                                        //
[284]1284                                        preg_match('/^(\w*=[^,]*),.*$/', $id_contacts[$i], $cn);
1285
[285]1286                                //
1287                                // Adicionados os str_replace para adicionar caracteres de escape em frente aos caracteres '(' e ')',
[400]1288                                // posteriormente poderá ser necessário substituir por uma expressão regular mais genérica.
[285]1289                                //
1290
[284]1291                                        if ($cn[1])
1292                                        {
[285]1293                                                //
[400]1294                                                // Esta operação resolve o problema causado pela conversão de caracteres acentuados realizada
1295                                                // pela função ldap_explode_dn(). Talvez seja necessário utilizar esta tradução em outros lugares,
1296                                                // neste caso é mais apropriado colocar dentro de uma função.
[285]1297                                                //
[284]1298                                                //foreach($cn as $key=>$value){
1299                                        //      $cn[$key]=preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''", $value);
1300                                        //}
1301
1302                                                $filter .= '(' . str_replace(')', '\)', str_replace('(','\(',$cn[1])) . ')';
1303                                        }
1304                                }
1305                                $filter .= '))';
[2]1306                        }
[284]1307
1308                        return $filter;
1309
[2]1310                }
[285]1311                */
[2]1312
1313                function get_all_entries_ids ()
1314                {
1315                        $search_fields = array('contact.id_contact', 'contact.names_ordered');
1316                        $search_rules  = array(
1317                                0 => array(
1318                                        'field' => 'contact.names_ordered',
1319                                        'type'  => 'LIKE',
1320                                        'value' => '%'
1321                                )
1322                        );
1323                        $search_other  = array('order' => 'contact.names_ordered');
1324
1325                        $result_i = $this->find($search_fields, $search_rules, $search_other);
1326
1327                        if (is_array($result_i) and count($result_i))
1328                        {
1329                                $result = array();
1330                                foreach($result_i as $result_part)
1331                                {
1332                                        $result[] = $result_part['id_contact'];
1333                                }
1334
1335                                return $result;
1336                        }
1337
1338                        return null;
1339                }
[400]1340               
[2]1341                function get_relations ($id_contact,$extra=false)
1342                {
1343                }
[400]1344               
[2]1345                function get_addresses ( $id_contact,$extra=false )
1346                {
1347                }
[400]1348               
[2]1349                function get_connections ( $id_contact,$extra=false )
1350                {
1351                }
[400]1352               
[2]1353                function get_companies ( $id_contact, $extra=false )
1354                {
1355                }
[400]1356               
[2]1357                function get_all_prefixes (  )
1358                {
1359                }
[400]1360               
[2]1361                function get_all_suffixes (  )
1362                {
1363                }
[400]1364               
[2]1365                function get_all_status (  )
1366                {
1367                }
[400]1368               
[2]1369                function get_all_relations_types (  )
1370                {
1371                }
[400]1372               
[2]1373                function get_all_addresses_types (  )
1374                {
1375                }
[400]1376               
[2]1377                function get_all_connections_types (  )
1378                {
1379                }
[400]1380               
[2]1381                function get_vcard ( $id_contact )
1382                {
1383                }
[400]1384               
1385               
1386               
1387               
[2]1388                function get_global_tree ( $root )
1389                {
1390                }
[400]1391       
[2]1392                function get_actual_brach (  )
1393                {
1394                }
[400]1395       
[2]1396                function set_actual_branch ( $branch )
1397                {
1398                }
1399        }
1400?>
Note: See TracBrowser for help on using the repository browser.