Changeset 285


Ignore:
Timestamp:
05/23/08 17:10:39 (13 years ago)
Author:
brunocosta
Message:

Correção dos problemas gerados no commit anterior, a funcionalidade citada no ticket #199 foram temporariamente desativadas.

Location:
trunk/contactcenter
Files:
28 edited

Legend:

Unmodified
Added
Removed
  • trunk/contactcenter/doc/change_log.txt

    r284 r285  
    33Nilton Emilio Buhrer Neto. 
    44 
     5--------------------------- NOTA IMPORTANTE -------------------------- 
    56 
     7A partir de Agosto de 2007, todos os registros de bugs aqui relatados foram 
     8transferidos para o site do ExpressoLivre, no Wiki-Trac do módulo. 
     9Vide: http://www.expressolivre.org/dev/wiki/contactcenter/changelog 
     10 
     11---------------------------------------------------------------------- 
    61227/02/2007 - [1.0.005] 
    713- Excluído o diretorio contactcenter/templates/celepar e seus arquivos foram movidos para 
  • trunk/contactcenter/inc/class.bo_catalog_group_catalog.inc.php

    r284 r285  
    2020 
    2121        include_once('class.abo_catalog.inc.php'); 
    22  
     22         
    2323        class bo_catalog_group_catalog extends abo_catalog 
    2424        { 
    25  
    2625                var $external; 
    27  
    2826                var $fields = array( 
    2927                        'id_contact'    => true, 
     
    4038                        'pgp_key'       => true, 
    4139                        'notes'         => true, 
    42  
     40                         
    4341                        /* Array fields */ 
    4442                        'companies'     => true, 
     
    4745                        'connections'   => true 
    4846                ); 
    49  
    50                 /*! 
    51  
     47         
     48                /*! 
     49                 
    5250                 @function bo_people_catalog 
    5351                 @abstract Constructor 
    5452                 @author Raphael Derosso Pereira 
    55  
     53                  
    5654                */ 
    57                 function bo_catalog_group_catalog(& $bo_contactcenter, & $catalog, $external = 0) 
     55                function bo_catalog_group_catalog(& $bo_contactcenter, & $catalog, $external = 0 ) 
    5856                { 
    5957                        $this->bo_contactcenter = & $bo_contactcenter; 
     
    6159                        $this->external = $external; 
    6260                } 
    63  
     61                         
    6462 
    6563                /*! 
     
    7169 
    7270                 @param SEE class bo_contactcenter for usage 
    73  
     71                 
    7472                */ 
    7573                function find($what, $rules, $other) 
     
    7775                        if ($ldap_info = $this->catalog['ldap']) 
    7876                        { 
    79  
    8077                                $meta_catalog =& CreateObject('contactcenter.bo_global_ldap_catalog',$ldap_info['id_source'], $ldap_info['context'], $this->external); 
    8178                                return $meta_catalog->find($what, $rules, $other); 
    8279                        } 
    83  
     80                         
    8481                        $results = array(); 
    85  
     82                         
    8683                        reset($this->catalog); 
    8784                        while(list(, $new_catalog) = each($this->catalog['sub_branch'])) 
     
    9087                                //echo 'Setting catalog: <b>'.$new_catalog['name'].'</b><br>'; 
    9188                                $new_catalog = $this->bo_contactcenter->set_catalog($new_catalog); 
    92  
     89                                 
    9390                                //if($new_catalog) echo 'Setado corretamente!<br><br>'; else echo 'Erro ao setar<br><br>'; 
    94  
     91                                 
    9592                                if ($new_catalog['type'] === 'empty') 
    9693                                { 
    9794                                        continue; 
    9895                                } 
    99  
     96                                 
    10097                                $temp_res = $this->bo_contactcenter->catalog->find($what, $rules, $other); 
    10198                                if (is_array($temp_res) and count($temp_res)) 
     
    111108                        return $result; 
    112109                } 
    113  
    114                 /*! 
    115  
     110                 
     111                /*! 
     112                 
    116113                 @function get_single_entry 
    117114                 @abstract Returns all information requested about one contact 
    118115                 @author Raphael Derosso Pereira 
    119  
     116                      
    120117                 @param integer $id_contact The contact ID 
    121118                 @param array $fields The array returned by get_fields whith true 
    122119                        on the fields to be taken. 
    123  
     120                         
    124121                */ 
    125122                function get_single_entry ( $id_contact, $fields ) 
    126                 { 
    127                         if (!is_array($fields)) 
    128                         { 
    129                                 if (is_object($GLOBALS['phpgw']->log)) 
     123                {        
     124                        if (!is_array($fields))  
     125                        { 
     126                                if (is_object($GLOBALS['phpgw']->log))  
    130127                                { 
    131128                                        $GLOBALS['phpgw']->log->message(array( 
     
    133130                                                'line' => __LINE__, 
    134131                                                'file' => __FILE__)); 
    135  
     132                                         
    136133                                        $GLOBALS['phpgw']->log->commit(); 
    137134                                } 
    138                                 else 
     135                                else  
    139136                                { 
    140137                                        exit('Argument Error on: <br>File:'.__FILE__.'<br>Line:'.__LINE__.'<br>'); 
    141138                                } 
    142139                        } 
    143  
     140                         
    144141                        $contact_array = $this->get_multiple_entries(array($id_contact), $fields); 
    145  
     142                         
    146143                        if (!count($contact_array)) 
    147144                        { 
     
    153150                        else 
    154151                                $contact_data = $contact_array[$id_contact]; 
    155  
     152                         
    156153                        if (!is_array($contact_data)) 
    157154                        { 
    158155                                return false; 
    159156                        } 
    160  
     157                         
    161158                        return $contact_data; 
    162159                } 
    163  
    164                 /*! 
    165  
     160         
     161                /*! 
     162                  
    166163                 @function get_multiple_entries 
    167164                 @abstract Returns multiple Contacts data into one array 
     
    176173                                'sort'      => <sort>, 
    177174                                'order_by'  => <order by> 
    178                         ); 
    179  
     175                        );  
     176                 
    180177                */ 
    181178                function get_multiple_entries ( $id_contacts, $fields, $other_data = false ) 
     
    183180                        if (!is_array($id_contacts) or !is_array($fields) or ($other_data != false and !is_array($other_data))) 
    184181                        { 
    185                                 if (is_object($GLOBALS['phpgw']->log)) 
     182                                if (is_object($GLOBALS['phpgw']->log))  
    186183                                { 
    187184                                        $GLOBALS['phpgw']->log->message(array( 
     
    189186                                                'line' => __LINE__, 
    190187                                                'file' => __FILE__)); 
    191  
     188                                         
    192189                                        $GLOBALS['phpgw']->log->commit(); 
    193190                                } 
     
    196193                                } 
    197194                        } 
    198  
     195                         
    199196                        $contacts = array(); 
    200  
     197         
    201198                        if ($other_data) 
    202199                        { 
    203200                                //TODO 
    204201                        } 
    205  
    206                         //error_log("bo_ldap_catalog_group_catalog->get_multiple_entries \n", 3, '/var/www/teste.log'); 
    207  
     202         
    208203                        /* First check if this is a LDAP Catalog Group. In this case, just leave the 
    209204                         * subtree search for the LDAP server 
     
    214209                                return $meta_catalog->get_multiple_entries($id_contacts, $fields, $other_data); 
    215210                        } 
    216  
     211                         
    217212                        /* Search for the catalog of the first entry and try to get all ids from that 
    218213                         * catalog. Repeat to the ones not found until there's none missing or no more 
     
    226221                                $this->bo_contactcenter->set_catalog($branch); 
    227222                                $contacts += $this->bo_contactcenter->catalog->get_multiple_entries($id_contacts, $fields, $other_data); 
    228  
     223                                 
    229224                                reset($contacts); 
    230225                                while (list($id) = each($contacts)) 
     
    243238 
    244239                        $this->bo_contactcenter->set_catalog($this->catalog); 
    245  
     240                         
    246241                        return $contacts; 
    247242                } 
    248  
     243         
    249244                function get_all_entries_ids () 
    250245                { 
     
    252247                        return null; 
    253248                } 
    254  
     249                 
    255250                /*********************************************************************\ 
    256251                 *                Methods to get general fields                      * 
    257252                \*********************************************************************/ 
    258  
     253                 
    259254                /*********************************************************************\ 
    260255                 *                   Methods to Include Data                         * 
  • trunk/contactcenter/inc/class.bo_contactcenter.inc.php

    r284 r285  
    55  * Written by:                                                               * 
    66  *  - Raphael Derosso Pereira <raphaelpereira@users.sourceforge.net>         * 
    7   *  sponsored by Thyamad - http://www.thyamad.com                            * 
     7  *  sponsored by Thyamad - http://www.thyamad.com 
    88  * ------------------------------------------------------------------------- * 
    99  *  This program is free software; you can redistribute it and/or modify it  * 
     
    2525                */ 
    2626                var $catalog; 
    27  
     27                 
    2828                /*! 
    2929                        The Security Manager 
    3030                */ 
    3131                var $security; 
    32  
     32                 
    3333 
    3434                function bo_contactcenter($catalog=false) 
     
    3737                        $this->catalog_level = $GLOBALS['phpgw']->session->appsession('bo_contactcenter.catalog_level','contactcenter'); 
    3838                        $this->security = CreateObject('contactcenter.bo_security_manager'); 
    39  
     39                         
    4040                        if ($catalog) 
    4141                        { 
     
    5656                        } 
    5757                } 
    58  
     58                 
    5959                /* 
    6060                 * 
     
    108108 
    109109                /*! 
    110  
     110                 
    111111                        @function find 
    112112                        @abstract Performs a search in the DB based on the parameters 
    113113                        @author Raphael Derosso Pereira (algorithm and code) 
    114114                        @author Vinicius Cubas Brand (algorithm) 
    115  
     115                         
    116116                        @param array $what The list of fields to be returned. The format is: 
    117117                                $what = array( 
     
    119119                                        'contact.names_ordered' 
    120120                                ); 
    121  
     121                         
    122122                        @param array $rules The restrictions. 
    123  
     123                         
    124124                        The restrictions format is quite complicated, but is very complete. 
    125125                        As defined here, there is the possibility to do almost any type of 
    126126                        search (tell me if you can't do any). For example, imagine the 
    127127                        following search: 
    128  
     128                                         
    129129                                                and(a,or(d,e,and(f,g))) 
    130  
     130                         
    131131                        That is represented by the folloowing tree: 
    132  
     132                                 
    133133                                   and 
    134134                                    | 
     
    148148                        The rules that should be passed to the find function for this tree 
    149149                        is: 
    150  
     150                                 
    151151                                $rules = array( 
    152152                                        0 => array( 
     
    189189                                ); 
    190190 
    191  
    192                         The restriction type can be: =, !=, <=, <, >, >=, NULL, IN, LIKE, 
     191   
     192                        The restriction type can be: =, !=, <=, <, >, >=, NULL, IN, LIKE,  
    193193                        NOT NULL, NOT IN, NOT LIKE 
    194194                        Value of branch can be AND, OR, NOT 
    195  
    196                         @param array $other Other parameter to the search 
     195                         
     196                        @param array $other Other parameter to the search  
    197197                                $other = array( 
    198198                                        'offset'          => (int), 
     
    204204 
    205205                        @return array $array[<field_name>][<row_number>] 
    206  
     206                                 
    207207                */ 
    208208                function find($what, $rules=false, $other=false) 
     
    210210                        return $this->catalog->find($what, $rules, $other); 
    211211                } 
    212  
    213                 /*! 
    214  
     212                 
     213                /*! 
     214                 
    215215                        @function get_catalog_tree 
    216216                        @abstract Returns an array describing the available 
     
    223223                        @param (boolean) $recursive Retrive the whole tree from 
    224224                                the level specified until the leaves 
    225  
     225                         
    226226                        @return The format of the return is: 
    227227                                $return = array( 
     
    246246                                        1  => array(...),... 
    247247                                ); 
    248  
     248                                 
    249249                                <branch_type> can be 'catalog_group', 'catalog' or 'view'; 
    250                                 <branch_class> is the name of the class that is capable of 
     250                                <branch_class> is the name of the class that is capable of  
    251251                                        handling the information for this catalog/view 
    252252                                <branch_class_args> is an array that holds the arguments to 
     
    254254                                <brach_find_args> is the string that should precede the search 
    255255                                        string 
    256  
    257                                 If the branch is actually a leaf, than 'sub_branch' is false; 
    258  
    259  
     256                                                 
     257                                If the branch is actually a leaf, than 'sub_branch' is false;  
     258                 
     259                 
    260260                        TODO: This method is hard-coded, but it should grab the tree 
    261261                        from the DB using the View Manager... 
     
    269269                                        return $this->tree['branches']; 
    270270                                } 
    271  
     271                                 
    272272                                $lvl_vector = explode('.', $level); 
    273273                                $id = $lvl_vector[1]; 
     
    275275                                $branch =& $this->get_branch_by_level($level); 
    276276                                $info = $this->get_info_by_level($level); 
    277  
     277                                 
    278278                                if ($branch['type'] === 'unknown') 
    279279                                { 
     
    281281                                        { 
    282282                                                $ldap = CreateObject('contactcenter.bo_ldap_manager'); 
    283  
    284283                                                if ($this->tree['branches'][$id]['external']) 
    285284                                                { 
     
    292291                                                        $new_branch = $ldap->get_ldap_tree($info['src'], $branch['value'], $recursive); 
    293292                                                } 
    294  
    295293                                                if ($new_branch) 
    296294                                                { 
     
    304302                                                        $new_branch['external'] = $branch['external']; 
    305303                                                        $branch = $new_branch; 
    306  
    307304                                                } 
    308305                                                else 
     
    312309                                        } 
    313310                                        $GLOBALS['phpgw']->session->appsession('bo_contactcenter.tree','contactcenter',$this->tree); 
     311                                         
    314312                                        return $branch; 
    315313                                } 
     
    318316                                        return $branch; 
    319317                                } 
    320  
     318                                 
    321319                                return false; 
    322320                        } 
    323  
     321                         
    324322                        if ($level !== '0') 
    325323                        { 
    326324                                return false; 
    327325                        } 
    328  
     326                         
    329327                        $this->tree = array( 
    330328                                0 => array( 
     
    338336                                                'icon'       => 'people-mini.png', 
    339337                                                'sub_branch' => false 
    340                                         ),/* 
    341                                         1  => array( 
    342                                                 'name'       => lang('Companies'), 
    343                                                 'type'       => 'catalog', 
    344                                                 'class'      => 'bo_company_manager', 
    345                                                 'find_args'  => 'company', 
    346                                                 'icon'       => 'company-mini.png', 
    347                                                 'sub_branch' => false 
    348                                         ),*/ 
    349  
     338                                        ), 
    350339                                        1  => array( 
    351340                                                'name'       => lang('Groups'), 
     
    357346                                ) 
    358347                        ); 
    359  
     348                         
    360349                        $ldap = CreateObject('contactcenter.bo_ldap_manager'); 
    361350                        $ldap_srcs = $ldap->get_all_ldap_sources(); 
    362  
     351                         
    363352                        if ($ldap_srcs) 
    364353                        { 
     
    411400                                        // External catalogs are now identified as type unknown during initialization. An optimization change. 
    412401 
    413                                         /* 
    414                                         if (($tree = $ldap->get_external_ldap_tree($id, $ldap_srcs[$id]['dn'], $recursive))) 
    415                                         { 
    416                                                 if (array_key_exists('error_msg', $tree)) 
    417                                                 { 
    418                                                         if (isset($this->tree['branches']['msg'])) 
    419                                                         { 
    420                                                                 $this->tree['branches']['msg'] .= "\n" . lang('Catalog %1 not showed due to error: ' . 
    421                                                                                                          $tree['error_msg'], $ldap_srcs[$id]['name']); 
    422                                                         } 
    423                                                         else 
    424                                                         { 
    425                                                                 $this->tree['branches']['msg'] = lang('Catalog %1 not showed due to error: ' . 
    426                                                                                                          $tree['error_msg'], $ldap_srcs[$id]['name']); 
    427                                                         } 
    428                                                 } 
    429  
    430                                                 else 
    431                                                 { 
    432                                                 */ 
    433402                                                $tree['name'] = $ldap_srcs[$id]['name']; 
    434403                                                $tree['type'] = 'unknown'; 
    435404                                                $tree['value'] = $ldap_srcs[$id]['dn']; 
    436405                                                $tree['external'] = true; 
    437                                                 //$tree['sub_branch'] = false; 
    438406                                                array_push($this->tree['branches'], $tree); 
    439407                                                $this->tree[$i]['type'] = 'ldap'; 
    440408                                                $this->tree[$i]['src'] = $id; 
    441                                         //      } 
    442                                         //} 
    443409                                        $i++; 
    444410                                } 
    445411                        } 
    446  
     412                         
    447413                        $GLOBALS['phpgw']->session->appsession('bo_contactcenter.tree','contactcenter',$this->tree); 
    448414                        return $this->tree['branches']; 
    449                         //return null; 
    450                 } 
    451  
    452                 /*! 
    453  
     415                } 
     416 
     417                /*! 
     418                         
    454419                        @function get_branch_by_level 
    455420                        @abstract Returns the branch and it's informations given the level 
    456421                        @author Raphael Derosso Pereira 
    457  
     422                         
    458423                        @param (string) $level The level to be used 
    459  
     424                         
    460425                */ 
    461426                function & get_branch_by_level($level) 
     
    463428                        $path = @explode('.',$level); 
    464429                        $n_ways = count($path); 
    465  
     430                         
    466431                        if ($n_ways <= 1) 
    467432                        { 
    468433                                return false; 
    469434                        } 
    470  
     435                         
    471436                        $code = '$branch =& $this->tree[\'branches\']'; 
    472437                        for ($i = 1; $i < $n_ways-1; $i++) 
     
    478443                        //echo 'Codigo: '.$code.'<br>'; 
    479444                        eval($code); 
    480  
     445                         
    481446                        return $branch; 
    482447                } 
    483448 
    484449                /*! 
    485  
     450                  
    486451                 @function get_info_by_level 
    487452                 @abstract Returns the information about the catalog, given the level 
     
    495460                        $path = @explode('.',$level); 
    496461                        $n_ways = count($path); 
    497  
     462                         
    498463                        if ($n_ways <= 1) 
    499464                        { 
    500465                                return false; 
    501466                        } 
    502  
     467                         
    503468                        $info = $this->tree[$path[1]]; 
    504  
     469                         
    505470                        return $info; 
    506471                } 
     
    553518 
    554519                                        $search = $this->get_level_by_branch($catalog, $bcatalog['sub_branch'], (string) $level); 
    555  
     520                                         
    556521                                        if ($search !== false) 
    557522                                        { 
     
    567532                        return false; 
    568533                } 
    569  
    570                 /*! 
    571  
     534                 
     535                /*! 
     536                 
    572537                        @function get_actual_catalog 
    573                         @abstract Returns the information about the Catalog that is 
     538                        @abstract Returns the information about the Catalog that is  
    574539                                instantiated 
    575540 
    576541                        @author Raphael Derosso Pereira 
    577  
     542                 
    578543                */ 
    579544                function get_actual_catalog() 
     
    582547                        return $catalog; 
    583548                } 
    584  
    585                 /*! 
    586  
     549                 
     550                /*! 
     551                 
    587552                        @function set_catalog 
    588553                        @abstract Sets the actual catalog 
    589554                        @author Raphael Derosso Pereira 
    590  
     555                         
    591556                        @param array $to_catalog The catalog in the format returned by 
    592557                                get_available_tree or the level 
    593  
     558                 
    594559                */ 
    595560                function set_catalog(& $to_catalog ) 
     
    614579                        { 
    615580                                $catalog =& $to_catalog; 
    616                                 //echo "Daqui!<br>"; 
    617581                                $level = $this->get_level_by_branch($to_catalog, $this->tree['branches']); 
    618582                        } 
    619  
    620583                        $lvl_vector = explode('.', $level); 
    621584                        $id = $lvl_vector[1]; 
    622  
     585                         
    623586                        switch($catalog['type']) 
    624587                        { 
     
    642605                                                $call .= ','.implode(',',$args); 
    643606                                        } 
    644  
     607                                         
    645608                                        $call .= ');'; 
    646  
     609                                         
    647610//                                      print_r($catalog); 
    648611//                                      echo '<br><br><b>Setando Catalogo '.$catalog['name'].': </b>'.$call.'<br>'; 
    649612 
    650613                                        eval($call); 
    651  
     614                                                                 
    652615                                        return $catalog; 
    653  
     616                                         
    654617                                default: return false; 
    655618                        } 
    656619                } 
    657  
     620                 
    658621 
    659622 
     
    661624                 *                Methods to set general fields                      * 
    662625                \*********************************************************************/ 
    663  
    664                 /*! 
    665  
     626                 
     627                /*! 
     628                 
    666629                        @function add_vcard 
    667630                        @abstract Insert a VCard to the squema 
     
    669632                        @param string $uploaded_file The path to the file that were 
    670633                                uploaded. 
    671  
     634                 
    672635                */ 
    673636                function add_vcard ( $uploaded_file ) 
     
    676639 
    677640 
    678  
     641                 
    679642                /*********************************************************************\ 
    680643                 *                Methods to get general data                        * 
    681644                \*********************************************************************/ 
    682  
     645                 
    683646        } 
    684647?> 
  • trunk/contactcenter/inc/class.bo_global_ldap_catalog.inc.php

    r284 r285  
    1616        */ 
    1717        include_once('class.abo_catalog.inc.php'); 
    18  
     18         
    1919        class bo_global_ldap_catalog extends abo_catalog 
    2020        { 
    2121                var $ldap; 
    22  
     22         
    2323                var $src_info; 
    24  
     24                 
    2525                var $trans_table; 
    26  
    2726                // used to determine if a catalog is external 
    2827                var $external; 
    29  
    3028                var $fields = array( 
    3129                        'id_contact'    => true, 
     
    4341                        'pgp_key'       => true, 
    4442                        'notes'         => true, 
    45                         'department'    => true, 
    46  
    47                         'empNumber'     => true, 
    48  
     43                         
    4944                        /* Array fields */ 
    5045                        'companies'     => true, 
     
    5348                        'connections'   => true 
    5449                ); 
    55  
     50                 
    5651                /* 
    57  
     52                 
    5853                        @function global_ldap_catalog 
    5954                        @abstract Constructor 
     
    6459                        @param string $context Ldap bind DN 
    6560                        @param integer $external 0 = internal catalog, 1 = external catalog 
    66  
    6761                */ 
    6862                function bo_global_ldap_catalog ( $id_source, $context, $external = 0 ) 
    6963                { 
    70  
    7164                        $this->external = $external; 
    72  
    7365                        if (!function_exists('ldap_search')) 
    7466                        { 
    7567                                exit('PHP LDAP support Unavailable!'); 
    7668                        } 
    77  
     69                         
    7870                        $this->ldap = CreateObject('contactcenter.bo_ldap_manager'); 
    79  
     71                         
    8072                        if ($this->external) 
    8173                        { 
     
    10092                        } 
    10193                        else 
    102                         { 
     94                        {        
    10395                                $this->trans_table = $this->ldap->get_ldap_fields_association($id_source); 
    10496                        } 
    10597                } 
    106  
     98                 
    10799                /* 
    108  
     100                 
    109101                        @function find 
    110102                        @abstract Searches the LDAP directory for the specified fields with 
     
    112104                                that matches the rules. 
    113105                        @author Raphael Derosso Pereira 
    114  
     106                         
    115107                        @param array $what The fields to be taken 
    116108                        @param array $rules The rules to be match. See class.abo_catalog.inc.php 
     
    121113                                        'offset' => (integer) [NOT IMPLEMENTED] 
    122114                                ) 
    123  
     115                 
    124116                */ 
    125117                function find($what, $rules=false, $other=false) 
    126118                { 
    127119                        $restric_fields = $this->get_restrictions_without_branch($rules); 
    128  
     120                         
    129121                        $trans_f = $this->translate_fields($what, $restric_fields); 
    130  
     122                         
    131123                        foreach($trans_f as $orig => $field_a) 
    132124                        { 
     
    136128                                } 
    137129                        } 
    138  
     130                         
    139131                        $fields = array_unique($fields); 
    140  
     132                         
    141133                        $filter = $this->process_restrictions($rules, $trans_f); 
    142134 
    143135                        if(strstr($this->src_info['context'], "ldap://")) { 
    144136                                $refer_context  = str_replace("??base","",preg_replace('!^(ldap://[^/]+)/(.*$)!', '\\2', $this->src_info['context'])); 
    145                                 $host   = preg_replace('!^(ldap://[^/]+)/.*$!', '\\1', $this->src_info['context']); 
     137                                $host   = preg_replace('!^(ldap://[^/]+)/.*$!', '\\1', $this->src_info['context']);                              
    146138                                $this->src_info['host'] = $host; 
    147                                 $this->src_info['acc'] = ''; 
    148                                 $this->src_info['pw']  = ''; 
    149                         } 
    150  
    151                         $ldap = $GLOBALS['phpgw']->common->ldapConnect($this->src_info['host'], $this->src_info['acc'], $this->src_info['pw'], true); 
    152  
    153                         if (!$ldap) 
    154                         { 
     139                        }                        
     140 
     141                        if($refer_context || "ou" === strtolower(substr($this->src_info['context'], 0, 2))) 
     142                        {                
     143                                $followReferral = false;                         
     144                        } 
     145                        elseif(trim($rules[4]['value']) != "inetOrgPerson")      
     146                        {                        
     147                                $followReferral = true; 
     148                        } 
     149                        else 
     150                        {                                
    155151                                return false; 
    156152                        } 
    157  
    158                         if (!$this->external) 
    159                         { 
    160                                 $fields[]  ='phpgwAccountVisible'; 
    161                         } 
    162  
    163                         $result_r = @ldap_search($ldap ,($refer_context  ? $refer_context  : $this->src_info['context']), $filter, $fields, 0); 
     153                         
     154                        $ldap = $GLOBALS['phpgw']->common->ldapConnect($this->src_info['host'], $this->src_info['acc'], $this->src_info['pw'], $followReferral); 
     155                        $result_r = ldap_search($ldap ,($refer_context  ? $refer_context  : $this->src_info['context']), $filter, $fields, 0); 
    164156 
    165157                        if (!$result_r) 
     
    167159                                return false; 
    168160                        } 
    169  
     161                         
    170162                        if ($other['order']) 
    171163                        { 
     
    181173                                } 
    182174                        } 
    183  
     175                         
    184176                        $result_u = ldap_get_entries($ldap, $result_r); 
    185  
     177                         
    186178                        $i = 0; 
    187179                        foreach ($result_u as $index => $result_p) 
     
    191183                                        continue; 
    192184                                } 
    193  
     185                                 
    194186                                foreach ($trans_f as $orig => $trans) 
    195187                                { 
     
    209201                                $i++; 
    210202                        } 
    211  
     203                         
    212204                        return $return; 
    213205                } 
    214  
     206                 
    215207                /* 
    216  
     208                 
    217209                        @function translate_fields 
    218210                        @abstract Return the LDAP objectClass fields that corresponds to the 
    219211                                specified parameter fields 
    220212                        @author Raphael Derosso Pereira 
    221  
     213                         
    222214                        @param array $fields The fields in the standard ContactCenter format 
    223215                        @param array $rules The rules 
    224  
     216                 
    225217                */ 
    226218                function translate_fields ( $fields, &$restric_fields ) 
    227219                { 
    228220                        $return = array(); 
    229  
     221                         
    230222                        $i = 0; 
    231223                        foreach ($fields as $field) 
     
    235227                                        continue; 
    236228                                } 
    237  
     229                                 
    238230                                if (!is_array($this->trans_table[$field])) 
    239231                                { 
    240232                                        $reference = $this->trans_table[$field]; 
    241  
     233                                         
    242234                                        reset($restric_fields); 
    243235                                        while(list(,$field_r) = each($restric_fields)) 
    244236                                        { 
    245  
    246237                                                if ($field_r['field'] === $reference and array_key_exists($field_r['value'], $this->trans_table[$reference])) 
    247238                                                { 
     
    252243                                else 
    253244                                { 
    254  
    255245                                        if (!is_array($return[$field])) 
    256246                                        { 
     
    263253                                } 
    264254                        } 
    265  
     255                         
    266256                        if (count($return)) 
    267257                        { 
    268258                                return $return; 
    269259                        } 
    270  
     260                         
    271261                        return false; 
    272262                } 
    273  
     263                 
    274264                /* 
    275  
     265                 
    276266                        @function process_restrictions 
    277267                        @abstract Returns a LDAP filter string that corresponds to the 
    278268                                specified restriction rules 
    279269                        @author Raphael Derosso Pereira 
    280  
     270                         
    281271                        @param string $rules The restriction rules 
    282  
     272                 
    283273                */ 
    284274                function process_restrictions( $rules, &$trans_table, $join_type='&' ) 
     
    288278                                return null; 
    289279                        } 
    290  
     280                         
    291281                        foreach($rules as $rule_i => $rule) 
    292282                        { 
     
    300290                                                                $join = '|'; 
    301291                                                                break; 
    302  
     292                                                                 
    303293                                                        case 'AND': 
    304294                                                                $join = '&'; 
    305295                                                                break; 
    306  
     296                                                                 
    307297                                                        case 'NOT': 
    308298                                                                $join = '!'; 
    309299                                                                break; 
    310  
     300                                                                 
    311301                                                        default: 
    312302                                                                $join = $join_type; 
     
    314304                                                $return_t[] = $this->process_restrictions($rule['sub_branch'], $trans_table, $join); 
    315305                                                break; 
    316  
     306                                                 
    317307                                        case '=': 
    318308                                                if (array_key_exists($rule['field'], $trans_table)) 
     
    325315                                                } 
    326316                                                break; 
    327  
    328                                         case '!=': 
     317                                         
     318                                        case '!=':       
    329319                                                if (array_key_exists($rule['field'], $trans_table)) 
    330320                                                { 
     
    336326                                                } 
    337327                                                break; 
    338  
     328                                         
    339329                                        case '<=': 
    340330                                        case '<': 
     
    348338                                                } 
    349339                                                break; 
    350  
     340                                         
    351341                                        case '>': 
    352342                                        case '>=': 
     
    360350                                                } 
    361351                                                break; 
    362  
     352                                                 
    363353                                        case 'NULL': 
    364354                                                if (array_key_exists($rule['field'], $trans_table)) 
     
    371361                                                } 
    372362                                                break; 
    373  
     363                                         
    374364                                        case 'IN': 
    375365                                                if (array_key_exists($rule['field'], $trans_table)) 
     
    391381                                                        $value_1 = strtoupper(str_replace('%', '*', $rule['value'])); 
    392382                                                        $value_2 = strtolower($value_1); 
    393  
     383                                                         
    394384                                                        foreach($trans_table[$rule['field']] as $field) 
    395385                                                        { 
     
    400390                                                } 
    401391                                                break; 
    402  
     392                                                 
    403393*/                                      case 'LIKE': 
    404394                                                if (array_key_exists($rule['field'], $trans_table)) 
    405395                                                { 
    406396                                                        $value = str_replace('%', '*', $rule['value']); 
    407  
     397                                                         
    408398                                                        foreach($trans_table[$rule['field']] as $field) 
    409399                                                        { 
     
    413403                                                } 
    414404                                                break; 
    415  
     405                                                 
    416406                                        case 'NOT NULL': 
    417407                                                if (array_key_exists($rule['field'], $trans_table)) 
     
    424414                                                } 
    425415                                                break; 
    426  
     416                                         
    427417                                        case 'NOT IN': 
    428418                                                if (array_key_exists($rule['field'], $trans_table)) 
     
    444434                                                        $value_1 = strtoupper(str_replace('%', '*', $rule['value'])); 
    445435                                                        $value_2 = strtolower($value_1); 
    446  
     436                                                         
    447437                                                        foreach($trans_table[$rule['field']] as $field) 
    448438                                                        { 
     
    458448                                                { 
    459449                                                        $value = str_replace('%', '*', $rule['value']); 
    460  
     450                                                         
    461451                                                        foreach($trans_table[$rule['field']] as $field) 
    462452                                                        { 
     
    468458                                } 
    469459                        } 
    470  
     460                         
    471461                        if (count($return_t)) 
    472462                        { 
     
    486476 
    487477                /*! 
    488  
     478                 
    489479                        @function get_restrictions_without_branch 
    490480                        @abstract Returns an array containing the restrictions ignoring the 
    491481                                branches 
    492482                        @author Raphael Derosso Pereira 
    493  
     483                         
    494484                        @param array $restrictions The restrictions 
    495  
     485                 
    496486                */ 
    497487                function get_restrictions_without_branch(&$restrictions) 
     
    501491                                return null; 
    502492                        } 
    503  
     493                         
    504494                        $fields = array(); 
    505  
     495                         
    506496                        foreach ($restrictions as $restrict_data) 
    507497                        { 
     
    511501                                                $fields = array_merge($fields, $this->get_restrictions_without_branch($restrict_data['sub_branch'])); 
    512502                                                break; 
    513  
     503                                                 
    514504                                        case '=': 
    515                                         case '!=': 
     505                                        case '!=':       
    516506                                        case '<=': 
    517507                                        case '<': 
     
    528518                                                array_push($fields, $restrict_data); 
    529519                                                break; 
    530  
     520                                                 
    531521                                        default: 
    532                                                 exit('Error in '.__FILE__.' on '.__LINE__.'<br>The restriction type passed was: '.$restrict_data['type']); 
    533                                 } 
    534                         } 
    535  
     522                                                exit('Error in '.__FILE__.' on '.__LINE__.'<br>The restriction type passed was: '.$restrict_data['type']);                                       
     523                                } 
     524                        } 
     525                         
    536526                        return $fields; 
    537527                } 
    538  
    539  
     528                 
     529                 
    540530                /*********************************************************************\ 
    541531                 *                        Methods to Get Data                        * 
    542532                \*********************************************************************/ 
    543  
    544  
     533                 
     534         
    545535                /*! 
    546  
     536                 
    547537                 @function get_single_entry 
    548538                 @abstract Returns all information requested about one contact 
    549539                 @author Raphael Derosso Pereira 
    550  
     540                      
    551541                 @param integer $id_contact The contact ID 
    552542                 @param array $fields The array returned by get_fields with true 
    553543                        on the fields to be taken. 
    554  
     544                         
    555545                */ 
    556546                function get_single_entry ( $id_contact, $fields ) 
    557547                { 
    558                         if (!is_array($fields)) 
    559                         { 
    560                                 if (is_object($GLOBALS['phpgw']->log)) 
     548                        if (!is_array($fields))  
     549                        { 
     550                                if (is_object($GLOBALS['phpgw']->log))  
    561551                                { 
    562552                                        $GLOBALS['phpgw']->log->message(array( 
     
    564554                                                'line' => __LINE__, 
    565555                                                'file' => __FILE__)); 
    566  
     556                                         
    567557                                        $GLOBALS['phpgw']->log->commit(); 
    568558                                } 
    569                                 else 
     559                                else  
    570560                                { 
    571561                                        exit('Argument Error on: <br>File:'.__FILE__.'<br>Line:'.__LINE__.'<br>'); 
    572562                                } 
    573563                        } 
    574  
     564                         
    575565                        $ldap = $GLOBALS['phpgw']->common->ldapConnect($this->src_info['host'],$this->src_info['acc'],$this->src_info['pw'],true); 
    576  
     566                         
    577567                        if (!$ldap) 
    578568                        { 
    579569                                return false; 
    580570                        } 
    581  
     571                         
    582572                        $resource = ldap_read($ldap, $id_contact, 'objectClass='.$this->src_info['obj']); 
    583573                        $n_entries = ldap_count_entries($ldap, $resource); 
     
    586576                                return false; 
    587577                        } 
    588  
     578                         
    589579                        $first_entry = ldap_first_entry($ldap, $resource); 
    590580                        $contact = ldap_get_attributes($ldap,$first_entry); 
    591                         if($contact['jpegPhoto']){ 
    592                                 $contact['jpegPhoto'] = ldap_get_values_len ($ldap, $first_entry, "jpegPhoto"); 
     581                        if($contact['jpegPhoto']){       
     582                                $contact['jpegPhoto'] = ldap_get_values_len ($ldap, $first_entry, "jpegPhoto");  
    593583                        } 
    594584 
    595585//                      print_r($contact); 
    596  
     586                         
    597587                //      $contact_data = $this->fields; 
    598  
     588                         
    599589                        foreach($fields as $field => $trueness) 
    600590                        { 
     
    604594                                        continue; 
    605595                                } 
    606  
     596                                 
    607597                                switch ($field) 
    608598                                { 
     
    613603                                                $l_fields['department']    = $this->trans_table['contact.business_info.department']; 
    614604                                                $l_fields['company_notes'] = $this->trans_table['contact.company.company_notes']; 
    615  
     605                                                 
    616606                                                $contact_data['companies'] = array(); 
    617607                                                foreach($l_fields as $l_field => $l_value) 
     
    621611                                                                continue; 
    622612                                                        } 
    623  
     613                                                         
    624614                                                        $contact_data['companies']['company1'][$l_field] = utf8_decode($contact[$l_value[0]][0]); 
    625615                                                } 
    626  
     616                                                 
    627617                                                if (!(count($contact_data['companies']))) 
    628618                                                { 
     
    630620                                                } 
    631621                                                break; 
    632  
     622                                         
    633623                                        case 'relations': 
    634624                                                unset($l_fields); 
     
    637627                                                        unset($contact_data['relations']); 
    638628                                                } 
    639  
     629                                                 
    640630                                                $contact_data['relations'] = array(); 
    641631                                                if (!is_array($this->trans_table['contact.contact_related.names_ordered'])) 
     
    645635                                                                continue; 
    646636                                                        } 
    647  
     637                                                         
    648638                                                        $i = 1; 
    649639                                                        foreach($trans as $l_type => $l_type_fields) 
     
    653643                                                                        continue; 
    654644                                                                } 
    655  
     645                                                                 
    656646                                                                $contact_data['relations']['relation'.$i]['type'] = $l_type; 
    657647                                                                $contact_data['relations']['relation'.$i]['names_ordered'] = utf8_decode($contact[$l_type_fields[0]][0]); 
     
    659649                                                        } 
    660650                                                } 
    661  
     651                                                 
    662652                                                if (!(count($contact_data['relations']))) 
    663653                                                { 
     
    665655                                                } 
    666656                                                break; 
    667  
     657                                         
    668658                                        case 'addresses': 
    669659                                                unset($l_fields); 
     
    694684                                                                        continue; 
    695685                                                                } 
    696  
     686                                                                 
    697687                                                                $i = 1; 
    698688                                                                foreach($trans as $l_type => $l_type_fields) 
     
    702692                                                                                continue; 
    703693                                                                        } 
    704  
     694                                                                         
    705695                                                                        $contact_data['addresses']['address'.$i]['type'] = $l_type; 
    706696                                                                        $contact_data['addresses']['address'.$i][$l_field] = utf8_decode($contact[$l_type_fields[0]][0]); 
     
    713703                                                        } 
    714704                                                } 
    715  
     705                                                 
    716706                                                if (!(count($contact_data['addresses']))) 
    717707                                                { 
     
    719709                                                } 
    720710                                                break; 
    721  
     711                                         
    722712                                        case 'connections': 
    723713                            $preferences = ExecMethod('contactcenter.ui_preferences.get_preferences'); 
     
    740730                                                                        continue; 
    741731                                                                } 
    742  
     732                                                                 
    743733                                                                $i = 1; 
    744734                                                                foreach($trans as $l_type => $l_type_fields) 
     
    748738                                                                                continue; 
    749739                                                                        } 
    750  
     740                                                                         
    751741                                                                        switch ($l_type) 
    752742                                                                        { 
     
    768758                                                        } 
    769759                                                } 
    770  
     760                                                 
    771761                                                if (!(count($contact_data['connections']))) 
    772762                                                { 
     
    774764                                                } 
    775765                                                break; 
    776  
     766                                         
    777767                                        case 'prefix': 
    778768                                                unset($l_fields); 
     
    783773                                                        continue; 
    784774                                                } 
    785  
     775                                                 
    786776                                                $contact_data['prefix'] = utf8_decode($contact[$l_fields[0]][0]); 
    787777                                                break; 
    788  
     778                                                 
    789779                                        case 'suffix': 
    790780                                                unset($l_fields); 
     
    795785                                                        continue; 
    796786                                                } 
    797  
     787                                                 
    798788                                                $contact_data['suffix'] = utf8_decode($contact[$l_fields[0]][0]); 
    799789                                                break; 
    800  
     790                                                 
    801791                                        case 'status': 
    802792                                                unset($l_fields); 
     
    807797                                                        continue; 
    808798                                                } 
    809  
     799                                                 
    810800                                                $contact_data['status'] = utf8_decode($contact[$l_fields[0]][0]); 
    811801                                                break; 
    812  
     802                                                 
    813803                                                case 'photo': 
    814804                                                unset($l_fields); 
     
    819809                                                        continue; 
    820810                                                } 
    821  
     811                                                 
    822812                                                $contact_data['photo'] = $contact[$l_fields[0]][0]; 
    823                                                 break; 
     813                                                break;                                                                                   
    824814 
    825815                                        default: 
     
    831821                                                        continue; 
    832822                                                } 
    833  
     823                                                 
    834824                                                if(count($contact[$l_fields[0]]) > 1) 
    835825                                                { 
     
    848838                                } 
    849839                        } 
    850  
     840                         
    851841                        if (!is_array($contact_data)) 
    852842                        { 
    853843                                return false; 
    854844                        } 
    855  
     845                         
    856846                        return $contact_data; 
    857847                } 
    858  
     848                //SERPRO 
    859849                /*! 
    860850 
     
    932922                                                        $l_fields['department']    = $this->trans_table['contact.business_info.department']; 
    933923                                                        $l_fields['company_notes'] = $this->trans_table['contact.company.company_notes']; 
    934  
    935                                                         ///Relaciona o array com o atributo 'employeeNumber' do RHDS 
    936                                                         $l_fields['empNumber']     = $this->trans_table['contact.business_info.empNumber']; 
    937924 
    938925                                                        $contact_data['companies'] = array(); 
     
    11811168                        return $contacts; 
    11821169                } 
    1183  
     1170                 
    11841171                function get_multiple_entries ( $id_contacts, $fields, $other_data = false ) 
    11851172                { 
    11861173                        if (!is_array($id_contacts) or !is_array($fields) or ($other_data != false and !is_array($other_data))) 
    11871174                        { 
    1188                                 if (is_object($GLOBALS['phpgw']->log)) 
     1175                                if (is_object($GLOBALS['phpgw']->log))  
    11891176                                { 
    11901177                                        $GLOBALS['phpgw']->log->message(array( 
     
    11921179                                                'line' => __LINE__, 
    11931180                                                'file' => __FILE__)); 
    1194  
     1181                                         
    11951182                                        $GLOBALS['phpgw']->log->commit(); 
    11961183                                } 
     
    11991186                                } 
    12001187                        } 
    1201  
    1202                         $contacts = array(); 
    1203  
     1188                          
     1189                        foreach ($id_contacts as $id) 
     1190                        { 
     1191                                $contacts[$id] = $this->get_single_entry($id,$fields); 
     1192                        } 
     1193                         
     1194                        return $contacts; 
     1195 
     1196                        // SERPRO 
     1197                                                 
     1198                        /*$contacts = array(); 
     1199         
    12041200                        if ($other_data) 
    12051201                        { 
     
    12111207                        //$teste = $this->get_all_entries($filter, $fields); 
    12121208 
    1213                         return $this->get_all_entries($filter, $fields); 
    1214                 } 
    1215  
     1209                        return $this->get_all_entries($filter, $fields);*/ 
     1210                         
     1211                } 
     1212 
     1213        // CELEPAR 
     1214                function generate_filter($id_contacts) 
     1215                { 
     1216                        if (($size = count($id_contacts))) 
     1217                        { 
     1218                                $contacts[$id] = $this->get_single_entry($id,$fields); 
     1219                        } 
     1220                         
     1221                        return $contacts; 
     1222                } 
     1223                 
     1224                // SERPRO 
     1225                /* 
    12161226                function generate_filter($id_contacts) 
    12171227                { 
     
    12221232                                { 
    12231233 
    1224                                         /* 
    1225                                          * Não utiliza mais a função ldap_explode, usa a expressão regular a seguir para pegar o primeiro 
    1226                                          * componente da dn 
    1227                                          */ 
     1234                                        //  
     1235                                        // Não utiliza mais a função ldap_explode, usa a expressão regular a seguir para pegar o primeiro 
     1236                                        // componente da dn 
     1237                                        //  
    12281238                                        preg_match('/^(\w*=[^,]*),.*$/', $id_contacts[$i], $cn); 
    12291239 
    1230                                 /* 
    1231                                  * Adicionados os str_replace para adicionar caracteres de escape em frente aos caracteres '(' e ')', 
    1232                                  * posteriormente poderá ser necessário substituir por uma expressão regular mais genérica. 
    1233                                  */ 
     1240                                // 
     1241                                // Adicionados os str_replace para adicionar caracteres de escape em frente aos caracteres '(' e ')', 
     1242                                // posteriormente poderá ser necessário substituir por uma expressão regular mais genérica. 
     1243                                // 
     1244 
    12341245                                        if ($cn[1]) 
    12351246                                        { 
    1236                                                 /* 
    1237                                                  * Esta operação resolve o problema causado pela conversão de caracteres acentuados realizada 
    1238                                                  * pela função ldap_explode_dn(). Talvez seja necessário utilizar esta tradução em outros lugares, 
    1239                                                  * neste caso é mais apropriado colocar dentro de uma função. 
    1240                                                  */ 
     1247                                                // 
     1248                                                // Esta operação resolve o problema causado pela conversão de caracteres acentuados realizada 
     1249                                                // pela função ldap_explode_dn(). Talvez seja necessário utilizar esta tradução em outros lugares, 
     1250                                                // neste caso é mais apropriado colocar dentro de uma função. 
     1251                                                // 
    12411252                                                //foreach($cn as $key=>$value){ 
    12421253                                        //      $cn[$key]=preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''", $value); 
     
    12521263 
    12531264                } 
     1265                */ 
    12541266 
    12551267                function get_all_entries_ids () 
     
    12801292                        return null; 
    12811293                } 
    1282  
     1294                 
    12831295                function get_relations ($id_contact,$extra=false) 
    12841296                { 
    12851297                } 
    1286  
     1298                 
    12871299                function get_addresses ( $id_contact,$extra=false ) 
    12881300                { 
    12891301                } 
    1290  
     1302                 
    12911303                function get_connections ( $id_contact,$extra=false ) 
    12921304                { 
    12931305                } 
    1294  
     1306                 
    12951307                function get_companies ( $id_contact, $extra=false ) 
    12961308                { 
    12971309                } 
    1298  
     1310                 
    12991311                function get_all_prefixes (  ) 
    13001312                { 
    13011313                } 
    1302  
     1314                 
    13031315                function get_all_suffixes (  ) 
    13041316                { 
    13051317                } 
    1306  
     1318                 
    13071319                function get_all_status (  ) 
    13081320                { 
    13091321                } 
    1310  
     1322                 
    13111323                function get_all_relations_types (  ) 
    13121324                { 
    13131325                } 
    1314  
     1326                 
    13151327                function get_all_addresses_types (  ) 
    13161328                { 
    13171329                } 
    1318  
     1330                 
    13191331                function get_all_connections_types (  ) 
    13201332                { 
    13211333                } 
    1322  
     1334                 
    13231335                function get_vcard ( $id_contact ) 
    13241336                { 
    13251337                } 
    1326  
    1327  
    1328  
    1329  
     1338                 
     1339                 
     1340                 
     1341                 
    13301342                function get_global_tree ( $root ) 
    13311343                { 
    13321344                } 
    1333  
     1345         
    13341346                function get_actual_brach (  ) 
    13351347                { 
    13361348                } 
    1337  
     1349         
    13381350                function set_actual_branch ( $branch ) 
    13391351                { 
  • trunk/contactcenter/inc/class.bo_ldap_manager.inc.php

    r284 r285  
    1212  \***************************************************************************/ 
    1313 
    14  
     14         
    1515        /* 
    1616                This class is responsible for the LDAP control/generic functions and for 
     
    1919        include_once('class.Thread.inc.php'); 
    2020 
    21         class bo_ldap_manager 
     21        class bo_ldap_manager  
    2222        { 
    23  
     23                 
    2424                var $srcs; 
    2525 
     26                 
    2627                function bo_ldap_manager () 
    2728                { 
    28  
    2929                        if (!($this->srcs = $GLOBALS['phpgw']->session->appsession('bo_ldap_manager.srcs','contactcenter'))) 
    3030                        { 
    3131                                $c = CreateObject('phpgwapi.config','contactcenter'); 
    3232                                $data = $c->read_repository(); 
    33  
     33                                 
    3434                                if (!$data or $data['cc_global_source0'] !== 'ldap') 
    3535                                { 
     
    3737                                        return; 
    3838                                } 
    39  
     39                                 
    4040                                $this->srcs = array( 
    4141                                        1 => array( 
     
    4646                                                'pw'     => $data['cc_ldap_pw0'], 
    4747                                                'obj'    => 'inetOrgPerson', 
    48                                                 'branch' => strtolower('ou') 
     48                                                'branch' => strtolower('ou'), 
     49                                                'visible' => $data['cc_ldap_query_automatic'] 
    4950                                        ) 
    50  
    5151                                ); 
    5252                        } 
     
    5656                { 
    5757                } 
    58  
     58         
    5959                /* 
    60  
     60                 
    6161                        @function get_all_ldap_sources 
    6262                        @abstract Returns an array containing all LDAP sources informations 
    6363                        @author Raphael Derosso Pereira 
    64  
     64                 
    6565                        @return array All LDAP information 
    6666                                $return = array( 
     
    6969                                                'dn'   => (string), 
    7070                                                'acc'  => (string), 
    71                                                 'pw'   => (string) 
     71                                                'pw'   => (string)    
    7272                                        ), 
    7373                                        ... 
    7474                                ) 
    75  
     75                                 
    7676                        TODO: Return multiple sources... 
    7777                */ 
     
    8080                        return $this->srcs; 
    8181                } 
    82  
     82                 
    8383                /* 
    8484                * @function get_external_ldap_sources 
     
    102102                function get_ldap_fields_association ( $id_source ) 
    103103                { 
    104  
     104                         
    105105                        $op_iop = array( 
    106106                                'contact.id_contact'               => array('dn'), 
     
    111111                                'contact.family_names'             => array('sn'), 
    112112                                'contact.names_ordered'            => array('cn'),//,'displayName'), 
    113  
    114113                                'contact.suffixes.suffix'          => false, 
    115114                                'contact.birthdate'                => false, 
     
    117116                                'contact.pgp_key'                  => false, 
    118117                                'contact.notes'                    => false, 
    119                                 'contact.mail_forwarding_address'  => array('mailForwardingAddress'), 
    120                                 'contact.account_type'             => array('phpgwAccountType'), 
    121                                 'contact.account_status'           => array('phpgwAccountStatus'), 
    122                                 'contact.account_visible'          => array('phpgwAccountVisible'), 
     118                                'contact.mail_forwarding_address' => array('mailForwardingAddress'), 
     119                                'contact.account_type' => array('phpgwAccountType'), 
     120                'contact.account_status'           => array('phpgwAccountStatus'), 
     121                'contact.account_visible'          => array('phpgwAccountVisible'), 
    123122                                'contact.object_class'             => array('objectClass'), 
    124123                                'contact.business_info.title'      => array('title'), 
    125                                 'contact.business_info.department' => array('ou'), // Setor do empregado... 
    126                                 'contact.business_info.empNumber'  => array('employeeNumber'), // Matricula do empregado 
     124                                'contact.business_info.department' => array('ou'), 
    127125                                'contact.company.company_name'     => array('o'), 
    128126                                'contact.company.company_notes'    => array('businessCategory'), 
    129  
     127                                 
    130128                                'contact.contact_related.names_ordered' => 'contact.contact_related.typeof_relation.contact_relation_name', 
    131129                                'contact.contact_related.typeof_relation.contact_relation_name' =>  array( 
     
    133131                                        'secretary' => array('secretary') 
    134132                                ), 
    135  
     133                                 
    136134                                'contact.address.address1'         => 'contact.address.typeof_address.contact_address_type_name', 
    137135                                'contact.address.typeof_address.contact_address_type_name' => array( 
    138136                                        'home' => array('street', 'st', 'postalAddress', 'homePostalAddress'), 
    139137                                ), 
    140  
     138                                 
    141139                                'contact.address.postal_code'      => 'contact.address.typeof_address.contact_address_type_name', 
    142140                                'contact.address.typeof_address.contact_address_type_name' => array( 
    143141                                        'home' => array('PostalCode'), 
    144142                                ), 
    145  
     143                                 
    146144                                'contact.address.city.city_name'   => 'contact.address.typeof_address.contact_address_type_name', 
    147145                                'contact.address.typeof_address.contact_address_type_name' => array( 
    148146                                        'home' => array('l'), 
    149147                                ), 
    150  
     148                                 
    151149                                'contact.address.city.state.state_name'       => 'contact.address.typeof_address.contact_address_type_name', 
    152150                                'contact.address.typeof_address.contact_address_type_name' => array( 
    153151                                        'home' => false, 
    154152                                ), 
    155  
     153                                 
    156154                                'contact.address.city.country.id_country'     => 'contact.address.typeof_address.contact_address_type_name', 
    157155                                'contact.address.typeof_address.contact_address_type_name' => array( 
    158156                                        'home' => array('c') 
    159157                                ), 
    160  
     158                                 
    161159                                'contact.connection.connection_value'         => 'contact.connection.typeof_connection.contact_connection_type_name', 
    162160                                'contact.connection.typeof_connection.contact_connection_type_name' => array ( 
     
    169167                                ), 
    170168                        ); 
    171  
     169                         
    172170                        return $op_iop; 
    173  
    174171                } 
    175172 
     
    232229 
    233230                /*! 
    234  
     231                 
    235232                        @function get_ldap_tree 
    236233                        @abstract Returns the LDAP tree corresponding to the specified level 
    237234                        @author Raphael Derosso Pereira 
    238  
     235                         
    239236                        @param (integer) $id_source The ID of the LDAP source 
    240  
     237                         
    241238                        @param (string)  $context The context to be used as root branch 
    242  
     239                                 
    243240                        @param (boolean) $recursive Make it a recursive construction. 
    244241                                CAUTION! This is EXTREMELY SLOW on large LDAP databases, 
    245242                                specially when they're not indexed 
    246                 */ 
    247                 function get_ldap_tree($id_source, $context = false, $recursive = false) 
     243                */               
     244                function get_ldap_tree($id_source, $context = false, $recursive = false)  
    248245                { 
    249246                        if (!$this->srcs[$id_source]) 
     
    251248                                return null; 
    252249                        } 
    253  
     250                         
    254251                        $ldap = $GLOBALS['phpgw']->common->ldapConnect($this->srcs[$id_source]['host'], $this->srcs[$id_source]['acc'],$this->srcs[$id_source]['pw'], false); 
    255252                        if (!$ldap) 
     
    257254                                return false; 
    258255                        } 
    259  
     256                         
    260257                        if ($recursive) 
    261258                        { 
     
    265262                                return $tree; 
    266263                        } 
    267  
    268                         return $this->get_ldap_tree_level($id_source, $ldap, $context, $this->srcs[$id_source]['obj'],$this->srcs[$id_source]['branch'], 0); 
    269                 } 
     264                         
     265                        return $this->get_ldap_tree_level($id_source, $ldap, $context, $this->srcs[$id_source]['obj'],$this->srcs[$id_source]['branch']); 
     266                } 
     267                // SERPRO 
    270268 
    271269                /*! 
     
    336334                                return null; 
    337335                        } 
    338  
     336                         
    339337                        $count = ldap_count_entries($resource,$result_res); 
    340338                        if ( $count == 0 ) 
     
    353351                                } 
    354352                        } 
    355  
     353                         
    356354                        $entries = ldap_get_entries($resource, $result_res); 
    357  
     355                         
    358356                        for ($i = 0; $i < $entries['count']; $i++) 
    359357                        { 
    360358                                $subtree = $this->get_ldap_tree_recursive($resource, $entries[$i]['dn'], $objectClass); 
    361  
     359                                 
    362360                                $dn_parts=ldap_explode_dn($entries[$i]['dn'],1); 
    363  
    364  
    365  
    366                                 if ($subtree !== null and is_array($subtree)) 
     361                                 
     362                                if ($subtree !== null and is_array($subtree))  
    367363                                { 
    368364                                        $tree[$i]['name'] = $dn_parts[0]; 
     
    381377                                                'sub_branch' => false 
    382378                                        ); 
    383                                 } 
     379                                }  
    384380                        } 
    385381 
     
    393389                        } 
    394390                } 
    395  
     391                 
    396392                function get_ldap_referrals($ds, $dn, $filter) { 
    397  
     393                         
    398394                        ldap_set_option($ds, LDAP_OPT_REFERRALS, 0); 
    399395                        ldap_set_option($ds,LDAP_OPT_PROTOCOL_VERSION,3); 
    400  
     396                         
    401397                        if ($ds) { 
    402398                            ldap_bind($ds); 
    403                                 $sr=ldap_list($ds,$dn, $filter); 
     399                                $sr=ldap_list($ds,$dn, $filter);                     
    404400                                $ref = ldap_first_reference($ds, $sr); 
    405401                                $array_referral = array(); 
    406402                                $idx = 0; 
    407  
     403                                 
    408404                                 while ($ref) { 
    409405                                        $array_referral[$idx++] = ldap_get_dn($ds, $ref); 
     
    412408                                return $array_referral; 
    413409                        } 
    414                         else 
     410                        else  
    415411                                return false; 
    416412                } 
    417413 
    418414                function get_ldap_sub_branches_referrals($ds, $dn, $filter) { 
    419  
     415                         
    420416                        $referral = $this -> get_ldap_referrals($ds, $dn, $filter); 
    421417                        $sub_branches = array(); 
    422  
     418                         
    423419                        for($i = 0; $i <count($referral); $i++) { 
    424420                                $dn = str_replace("??base","",preg_replace('!^(ldap://[^/]+)/(.*$)!', '\\2', $referral[$i])); 
    425                                 $dn = explode(",",$dn); 
     421                                $dn = explode(",",$dn);                          
    426422                                $dn = strtoupper(str_replace("ou=", "",$dn[0])); 
    427423                                $dn = str_replace("DC=", "",$dn); 
    428  
     424                                                                                                                                                                                 
    429425                                $sub_branch = array( 
    430426                                                                                        'name' => $dn, 
    431427                                                                'type' => 'unknown', 
    432428                                                                'value' => $referral[$i], 
    433                                                                 'sub_branch' => false 
    434                                                                                 ); 
    435                                 $sub_branches[$i] = $sub_branch; 
     429                                                                'sub_branch' => false            
     430                                                                                );                                                                                                                       
     431                                $sub_branches[$i] = $sub_branch;                         
    436432                        } 
    437433                        return $sub_branches; 
    438434                } 
     435                 
    439436 
    440437                function translate_accentuation($text) 
     
    464461                        //$filter = '(!(objectClass='.$objectClass.'))'; 
    465462                        // Don't show OU's whith phpgwAccountVisible equal to '-1' 
    466  
    467463                        if ($external) 
    468464                        { 
     
    483479                        if ($result_res === false) 
    484480                        { 
    485                                 if (ldap_errno($resource) === 3) 
    486                                 { 
    487                                         return array('error_msg' => ldap_error($resource)); 
    488                                 } 
    489481                                return null; 
    490482                        } 
     
    591583                                $tree['ldap']       = array('id_source' => $id_source, 'context' => $context); 
    592584                        } 
     585                         
    593586                        usort($tree['sub_branch'], array($this, "compareTreeNodes")); 
    594587                        return $tree; 
     
    596589 
    597590                function compareTreeNodes($a, $b)       { 
    598  
     591                                                 
    599592                        return strnatcasecmp($a['name'], $b['name']); 
    600                 } 
     593                }        
    601594 
    602595        } 
  • trunk/contactcenter/inc/class.bo_people_catalog.inc.php

    r284 r285  
    14171417                        if ($altered) 
    14181418                        { 
     1419                                $contact->set_field("last_status", 'U'); 
     1420                                $contact->set_field("last_update",time()."000"); 
    14191421                                return $contact->commit(); 
    14201422                        } 
  • trunk/contactcenter/inc/class.so_contact.inc.php

    r284 r285  
    110110                                'is_global'             => array( 
    111111                                        'name'          => 'is_global', 
     112                                        'type'          => false, 
     113                                        'state'         => 'empty', 
     114                                        'value'         => false), 
     115                                'last_status'           => array( 
     116                                        'name'          => 'last_status', 
     117                                        'type'          => false, 
     118                                        'state'         => 'empty', 
     119                                        'value'         => false), 
     120                                'last_update'           => array( 
     121                                        'name'          => 'last_update', 
    112122                                        'type'          => false, 
    113123                                        'state'         => 'empty', 
  • trunk/contactcenter/inc/class.so_group.inc.php

    r284 r285  
    117117                        'A.id_contact = B.id_contact and B.id_connection = C.id_connection and '. 
    118118                        'C.connection_is_default = true and B.id_typeof_contact_connection = 1 and '. 
    119                         'A.id_owner ='.$this->owner.' order by A.names_ordered'; 
     119                        'A.id_owner ='.$this->owner.' order by A.names_ordered,C.connection_value'; 
    120120 
    121121                                         
  • trunk/contactcenter/inc/class.ui_api.inc.php

    r284 r285  
    1818         * 
    1919         */ 
    20  
     20   
    2121        class ui_api 
    2222        { 
    2323                var $commons; 
    2424                var $commons_loaded = false; 
    25  
     25                 
    2626                function ui_api() 
    2727                { 
    2828                        $preferences = ExecMethod('contactcenter.ui_preferences.get_preferences'); 
    29  
     29                         
    3030                        if (!is_array($preferences)) 
    3131                        { 
     
    3333                                //$preferences['personCardPhone'] = 2; 
    3434                        } 
    35  
    36                         $template_dir = PHPGW_SERVER_ROOT . '/contactcenter/templates/default/'; 
    37                         $template = CreateObject('phpgwapi.Template',$template_dir); 
     35                         
     36                        //$template_dir = PHPGW_SERVER_ROOT . '/contactcenter/templates/default/'; 
     37                        //$template = CreateObject('phpgwapi.Template',$template_dir); 
     38                        $template = CreateObject('phpgwapi.Template',PHPGW_APP_TPL); 
    3839 
    3940                        $template->set_file(array('api' => 'api_common.tpl')); 
    40  
     41                         
    4142                        $template->set_var('cc_email_id_type', $preferences['personCardEmail']); 
    42  
     43                         
     44                         
    4345                        /* Messages */ 
    4446                        $template->set_var('cc_msg_err_invalid_catalog',lang('Unavailable or empty Catalog')); 
    45                         $template->set_var('cc_msg_err_contacting_server',lang('Couldn\'t contact server or server response is invalid.')); 
     47                        $template->set_var('cc_msg_err_contacting_server',lang('Couldn\'t contact server or server response is invalid. Contact Admin.')); 
    4648                        $template->set_var('cc_msg_err_timeout',lang('Operation Timed Out.')); 
    4749                        $template->set_var('cc_msg_err_serialize_data_unknown',lang('Data to be serialized is of unknown type!')); 
     
    7577                        $template->set_var('cc_js_djswin', $GLOBALS['phpgw_info']['server']['webserver_url'] . '/phpgwapi/js/dJSWin/dJSWin.js'); 
    7678                        $template->set_var('cc_js_catalog_tree', $GLOBALS['phpgw_info']['server']['webserver_url'] . '/contactcenter/js/cc_tree.js'); 
    77  
     79                         
    7880                        $template->parse('out','api'); 
    7981 
     
    8183                        $this->commons_loaded = false; 
    8284                } 
    83  
     85                 
    8486                /* DEPRECTED! Use get_email_win() instead */ 
    8587                function ui_get_email_win() 
     
    9193                { 
    9294                        //$search = $this->ui_get_search_win(); 
    93  
     95                         
    9496                        $template_dir = PHPGW_SERVER_ROOT . '/contactcenter/templates/default/'; 
    9597                        $template = CreateObject('phpgwapi.Template', $template_dir); 
    9698 
    9799                        $template->set_file(array('email_win' => 'email_win.tpl')); 
    98  
     100                         
    99101                        if (!$this->commons_loaded) 
    100102                        { 
     
    106108                                $template->set_var('cc_api', ''); 
    107109                        } 
    108  
     110                         
    109111                        //$template->set_var('cc_search_win', $search); 
    110112                        $template->set_var('cc_js_search', $GLOBALS['phpgw_info']['server']['webserver_url'] . '/contactcenter/js/cc_search.js'); 
    111  
     113                         
    112114                        $template->set_var('cc_email_id_type', $search); 
    113  
     115                         
    114116                        $template->set_var('cc_email_win_title',lang('Contact Center').' - '.lang('Catalog Entries Emails')); 
    115117                        $template->set_var('cc_email_status',lang('Status').':'); 
    116118                        $template->set_var('cc_email_search_text',lang('Search').'...'); 
    117  
     119                         
    118120                        $template->set_var('cc_choose_catalogue',lang('Choose a catalogue').'...'); 
    119121                        $template->set_var('cc_choose_ordinance',lang('Choose a ordinance').'...'); 
    120  
     122                         
    121123                        $template->set_var('cc_btn_to_add',lang('To').' >>'); 
    122124                        $template->set_var('cc_btn_to_del','<< '.lang('To')); 
     
    130132                        $template->set_var('cc_btn_ok',lang('Ok')); 
    131133                        $template->set_var('cc_btn_cancel',lang('Cancel')); 
    132  
     134                         
    133135                        $template->set_var('cc_label_to',lang('To').':'); 
    134136                        $template->set_var('cc_label_cc',lang('Cc').':'); 
     
    138140                        $template->set_var('cc_label_catalogue_type',lang('Type Of Catalogue').':'); 
    139141                        $template->set_var('cc_label_ordinance_type',lang('Type Of Ordinace').':'); 
    140  
     142                         
    141143                        $template->set_var('phpgw_img_dir', $GLOBALS['phpgw_info']['server']['webserver_url'] . '/phpgwapi/images'); 
    142  
     144                         
    143145                        $template->set_var('cc_js_email_win', $GLOBALS['phpgw_info']['server']['webserver_url'] . '/contactcenter/js/cc_email_win.js'); 
    144  
     146                         
    145147                        $template->parse('out','email_win'); 
    146148 
     
    159161 
    160162                        $template->set_file(array('search' => 'search_win.tpl')); 
    161  
     163                         
    162164                        if (!$this->commons_loaded) 
    163165                        { 
     
    169171                                $template->set_var('cc_api', ''); 
    170172                        } 
    171  
     173                         
    172174                        $template->set_var('cc_search_title',lang('Contact Center - Search for Catalog Entries')); 
    173175                        $template->set_var('cc_search_minimize',lang('Minimize')); 
     
    178180                        $template->set_var('cc_search_go',lang('Go')); 
    179181                        $template->set_var('cc_search_cancel',lang('Cancel')); 
    180  
     182                         
    181183                        $template->set_var('cc_js_search_win', $GLOBALS['phpgw_info']['server']['webserver_url'] . '/contactcenter/js/cc_search_win.js'); 
    182  
     184                         
    183185                        $template->set_var('phpgw_img_dir', $GLOBALS['phpgw_info']['server']['webserver_url'] . '/phpgwapi/images'); 
    184  
     186                         
    185187                        $template->parse('out','search'); 
    186188 
     
    203205 
    204206                        $template->set_file(array('full_add' => 'full_add.tpl')); 
    205  
     207                         
    206208                        if (!$this->commons_loaded) 
    207209                        { 
     
    213215                                $template->set_var('cc_api', ''); 
    214216                        } 
    215  
     217                         
    216218                        $template->set_var('cc_contact_title',lang('Contact Center').' - '.lang('Contacts')); 
    217219 
     
    221223                        $template->set_var('cc_msg_type_city',lang('Type new city here').'...'); 
    222224                        /* End Messages */ 
    223  
     225                         
    224226                        /* Contact */ 
    225227                        $template->set_var('cc_contact_save',lang('Save')); 
     
    230232                        $template->set_var('cc_contact_addrs',lang('Addresses')); 
    231233                        $template->set_var('cc_contact_conns',lang('Connections')); 
     234                        $template->set_var('emails_telephones', lang("E-Mails and Telephones")); 
     235                        $template->set_var('cc_default', lang("Default")); 
     236 
    232237                        /* End Contact */ 
    233  
     238                         
    234239                        /* Contact - Personal Data */ 
    235240                        $dateformat = $GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat']; 
    236  
     241                 
    237242                        $j = 0; 
    238243                        for ($i = 0; $i < 5; $i+=2) 
     
    257262                                $j++; 
    258263                        } 
    259  
     264                         
    260265                        $template->set_var('cc_pd_birth_size_0', "{$date[0]['size']}"); 
    261266                        $template->set_var('cc_pd_birth_size_1', "{$date[1]['size']}"); 
    262267                        $template->set_var('cc_pd_birth_size_2', "{$date[2]['size']}"); 
    263  
     268                         
    264269                        $template->set_var('cc_pd_birthdate_0', "{$date[0]['name']}"); 
    265270                        $template->set_var('cc_pd_birthdate_1', "{$date[1]['name']}"); 
     
    268273                        $template->set_var('cc_pd_select_photo_b', lang('Browse').'...'); 
    269274                        $template->set_var('cc_form_photo_src', 'photo_form.html'); 
    270  
     275                         
    271276                        $template->set_var('cc_pd_select_photo',lang('Select Photo')); 
    272277                        $template->set_var('cc_pd_alias',lang('Alias')); 
     
    286291                        $template->set_var('cc_pd_female',lang('Female')); 
    287292                        /* End Contact - Personal Data */ 
    288  
     293                         
    289294                        /* Contact - Addresses */ 
    290295                        $template->set_var('cc_addr_types',lang('Type of Address')); 
     
    310315                        $template->set_var('cc_available',lang('Available')); 
    311316                        /* End Contact - Addresses */ 
    312  
     317                         
     318                         
    313319                        /* Contact - Connections */ 
    314320                        $template->set_var('cc_conn_type',lang('Type of Connection')); 
    315321                        $template->set_var('cc_conn_name',lang('Connection Name')); 
    316322                        $template->set_var('cc_conn_value',lang('Connection Value')); 
    317  
     323                         
    318324                        $template->set_var('cc_new_same_type',lang('New from the same Type').'...'); 
    319  
     325                         
    320326                        $template->set_var('cc_conn_type_none',lang('Choose Type of Connection').'...'); 
    321327                        /* End Contact - Connections */ 
    322328 
     329                        $template->set_var('email', lang("E-Mail")); 
     330                        $template->set_var('telephone', lang("Telephone")); 
     331                        $template->set_var('choose_email_telephone', lang("Choose 'E-Mail' or 'Telephone'")); 
     332 
    323333                        $template->parse('out_full', 'full_add'); 
    324334 
     
    332342 
    333343                        $template->set_file(array('quickAdd' => 'quickAddPlugin.tpl')); 
    334  
     344                         
    335345                        if (!$this->commons_loaded) 
    336346                        { 
     
    342352                                $template->set_var('cc_api', ''); 
    343353                        } 
    344  
     354                         
    345355                        $template->set_var('ccQAPluginFile', $GLOBALS['phpgw_info']['server']['webserver_url'] . '/contactcenter/js/ccQuickAdd-plugin.js'); 
    346356 
     
    350360                        $nFields = 5; 
    351361                        $fields = array( 
    352                                 lang('Alias'), 
    353                                 lang('Given Names'), 
    354                                 lang('Family Names'), 
     362                                lang('Alias'),  
     363                                lang('Given Names'),  
     364                                lang('Family Names'),  
    355365                                lang('Phone'), 
    356366                                lang('Email') 
    357367                        ); 
    358  
     368                         
    359369                        $template->set_var('ccQAnFields', $nFields); 
    360  
     370                         
    361371                        $fieldsHTML = ''; 
    362372                        $fieldsTop = 10; 
     
    379389                        $template->set_var('ccQAWinHeight', ($i+1)*$fieldsSpace+$fieldsTop); 
    380390                        $template->set_var('ccQAFunctionsTop', ($fieldsTop+$i*$fieldsSpace).'px'); 
    381  
     391                         
    382392                        /* Images Dir */ 
    383393                        $template->set_var('ccQACardImgRoot', $GLOBALS['phpgw_info']['server']['webserver_url'].'/contactcenter/templates/default/images/'); 
    384  
     394                         
    385395                        /* Texts */ 
    386396                        $template->set_var('ccQATitle', lang('Contact Center').' - '.lang('Quick Add')); 
     
    388398                        $template->set_var('ccQAClear', lang('Reset')); 
    389399                        $template->set_var('ccQACancel', lang('Cancel')); 
    390  
     400                         
    391401                        $template->parse('out_QA', 'quickAdd'); 
    392402 
    393403                        return $template->get_var('out_QA'); 
    394404                } 
    395  
     405                 
    396406                function get_add_group() 
    397407                { 
     
    400410 
    401411                        $template->set_file(array('addGroup' => 'addGroup.tpl')); 
    402  
     412                         
    403413                        if (!$this->commons_loaded) 
    404414                        { 
     
    408418                        else 
    409419                        { 
    410  
     420                                 
    411421                                $template->set_var('cc_api', ''); 
    412422                        } 
    413  
    414                         $template->set_var('ccAGFile', $GLOBALS['phpgw_info']['server']['webserver_url'] . '/contactcenter/js/ccAddGroup.js'); 
    415                         $template->set_var('ccAGWinHeightIE', '285'); 
     423                         
     424                        $template->set_var('ccAGFile', $GLOBALS['phpgw_info']['server']['webserver_url'] . '/contactcenter/js/ccAddGroup.js');                   
     425                        $template->set_var('ccAGWinHeightIE', '285');                    
    416426                        $template->set_var('ccAGWinHeightMO', '335'); 
    417  
     427                         
    418428                        /* Images Dir */ 
    419429                        $template->set_var('ccAGCardImgRoot', $GLOBALS['phpgw_info']['server']['webserver_url'].'/contactcenter/templates/default/images/'); 
    420  
     430                         
    421431                        /* Texts */ 
    422432                        $template->set_var('ccAGTitle', lang('Contact Center').' - '.lang('Group Add')); 
     
    424434                        $template->set_var('ccAGClear', lang('Reset')); 
    425435                        $template->set_var('ccAGCancel', lang('Cancel')); 
    426                         $title = '<input type="text" id="title" name="title" value="'.$group['title'].'" size="50" maxlength="50"/>'; 
    427  
    428                         $template->set_var('title', $title); 
     436                        $title = '<input type="text" id="title" name="title" value="'.$group['title'].'" size="50" maxlength="50"/>';                    
     437                                 
     438                        $template->set_var('title', $title);                                                                                             
    429439                        // set content and label variables. 
    430440                        $template->set_var(array( 
    431                                                 'msg_text'      => lang($status), 
    432                                                 'txt_title'     => lang('Contact Group List'), 
     441                                                'msg_text'      => lang($status),                                                
     442                                                'txt_title'     => lang('Contact Group List'),                                           
    433443                                                'txt_cancel'=> lang('cancel'), 
    434                                                 'txt_add'=> lang('Add'), 
     444                                                'txt_add'=> lang('Add'),                                                 
    435445                                                'txt_rem'=> lang('Remove'), 
    436446                                                'txt_personal_contacts' => lang('Personal Contacts'), 
    437447                                                'txt_contacts_in_list' => lang("Participants"), 
    438448                                                'txt_name'      => lang('Full Name'))); 
    439  
     449                                                 
    440450                        $template->parse('out_AG', 'addGroup'); 
    441  
     451                         
    442452                        return $template->get_var('out_AG'); 
    443453                } 
  • trunk/contactcenter/inc/class.ui_data.inc.php

    r284 r285  
    1414  \***************************************************************************/ 
    1515 
    16  
     16         
    1717        class ui_data 
    1818        { 
     
    2020                        'data_manager' => true, 
    2121                ); 
    22  
     22                 
    2323                var $bo; 
    2424                var $typeContact; 
    25  
     25                 
    2626                var $page_info = array( 
    2727                        'n_cards'          => 20, 
     
    3434                        'actual_catalog'   => false 
    3535                ); 
    36  
     36                 
    3737                /*! 
    38  
     38                 
    3939                        @function ui_data 
    4040                        @abstract The constructor. Sets the initial parameters and loads 
    4141                                the data saved in the session 
    4242                        @author Raphael Derosso Pereira 
    43  
     43                         
    4444                */ 
    4545                function ui_data() 
     
    4747                        $temp = $GLOBALS['phpgw']->session->appsession('ui_data.page_info','contactcenter'); 
    4848                        $temp2 = $GLOBALS['phpgw']->session->appsession('ui_data.all_entries','contactcenter'); 
    49  
    50                         //TODO: Achar um modo de descarregar este array da sessï¿œo quando o usuï¿œrio sair da tela do contactcenter. 
    51                         //TODO: Descarregar este array da memï¿œria toda vez que uma nova consulta por letras ou mudanï¿œa de catï¿œlogo for feita. 
    52                         $temp3 = $GLOBALS['phpgw']->session->appsession('ui_data.last_search_ids','contactcenter'); 
    53  
     49                         
    5450                        $this->bo = CreateObject('contactcenter.bo_contactcenter'); 
    55  
     51                         
    5652                        if ($temp) 
    5753                        { 
     
    6359                                $this->all_entries = $temp2; 
    6460                        } 
    65  
    66                         if ($temp3) 
    67                         { 
    68                                 $this->last_search_ids = $temp3; 
    69                         } 
    70  
     61                         
    7162                        if (!$this->page_info['actual_catalog']) 
    7263                        { 
     
    7465                                $this->page_info['actual_catalog'] = $catalogs[0]; 
    7566                        } 
    76  
    77                         $this->page_info['actual_catalog'] =& $this->bo->set_catalog($this->page_info['actual_catalog']); 
    78  
     67                         
     68                        $this->page_info['actual_catalog'] =& $this->bo->set_catalog($this->page_info['actual_catalog']);                        
     69                         
    7970                        if($this->page_info['actual_catalog']['class'] == 'bo_group_manager') 
    8071                                $this -> typeContact = 'groups'; 
     
    8475 
    8576                /*! 
    86  
     77                 
    8778                        @function index 
    8879                        @abstract Builds the Main Page 
    8980                        @author Raphael Derosso Pereira 
    9081                        @author Jonas Goes 
    91  
    92                 */ 
     82                         
     83                */               
    9384                function index() 
    94                 { 
     85                {        
    9586                        if(!@is_object($GLOBALS['phpgw']->js)) 
    9687                        { 
     
    10192                        $GLOBALS['phpgw']->js->validate_file('venus','jsStructUtil'); 
    10293                        $GLOBALS['phpgw']->js->validate_file('venus','cssUtil'); 
    103  
     94                         
    10495//                      $GLOBALS['phpgw']->js->set_onload('setTimeout(\'updateCards()\',1000)'); 
    10596                        $GLOBALS['phpgw']->common->phpgw_header(); 
    106  
     97                         
    10798                        $GLOBALS['phpgw']->template->set_file(array('index' => 'index.tpl')); 
    10899                        $GLOBALS['phpgw']->template->set_var('cc_root_dir', $GLOBALS['phpgw_info']['server']['webserver_url'].'/contactcenter/'); 
    109  
     100                         
    110101                        /* Quick Add */ 
    111102                        $GLOBALS['phpgw']->template->set_var('cc_qa_alias',lang('Alias').':'); 
     
    116107                        $GLOBALS['phpgw']->template->set_var('cc_qa_save',lang('Save')); 
    117108                        $GLOBALS['phpgw']->template->set_var('cc_qa_clear',lang('Clear')); 
     109                        $GLOBALS['phpgw']->template->set_var('cc_qa_close',lang('Close')); 
    118110                        /* End Quick Add */ 
    119  
     111                         
    120112                        $cc_css_file = $GLOBALS['phpgw_info']['server']['webserver_url'].'/contactcenter/styles/cc.css'; 
    121113                        $cc_card_image_file = $GLOBALS['phpgw_info']['server']['webserver_url'].'/contactcenter/templates/default/images/card.png'; 
     
    123115                        $GLOBALS['phpgw']->template->set_var('cc_dtree_css', $cc_dtree_file); 
    124116                        $GLOBALS['phpgw']->template->set_var('cc_card_image',$cc_card_image_file); 
    125  
     117                         
    126118                        $GLOBALS['phpgw']->template->set_var('cc_personal',lang('Personal')); 
    127  
     119                         
    128120                        $GLOBALS['phpgw']->template->set_var('cc_full_add',lang('Full Add')); 
    129121                        $GLOBALS['phpgw']->template->set_var('cc_reset',lang('Reset')); 
    130  
     122                         
    131123                        $GLOBALS['phpgw']->template->set_var('cc_personal_data',lang('Personal Data')); 
    132124                        $GLOBALS['phpgw']->template->set_var('cc_addresses',lang('Addresses')); 
     
    137129                        $GLOBALS['phpgw']->template->set_var('cc_catalogs',lang('Catalogues')); 
    138130                        $GLOBALS['phpgw']->template->set_var('cc_group_add',lang('Group Add')); 
    139  
     131                         
    140132                        /* Panel */ 
    141133                        $GLOBALS['phpgw']->template->set_var('cc_panel_new',lang('New').'...'); 
     
    143135                        $GLOBALS['phpgw']->template->set_var('cc_panel_table',lang('Table View')); 
    144136                        $GLOBALS['phpgw']->template->set_var('cc_panel_cards',lang('Cards View')); 
    145  
     137                        $GLOBALS['phpgw']->template->set_var('cc_btn_import_export', lang('Import/Export')); 
     138                        $GLOBALS['phpgw']->template->set_var('cc_btn_new', lang("New...")); 
     139                         
    146140                        $GLOBALS['phpgw']->template->set_var('cc_panel_search_found',lang('Showing found entries')); 
    147141                        $GLOBALS['phpgw']->template->set_var('cc_panel_first_page',lang('First Page')); 
     
    151145                        $GLOBALS['phpgw']->template->set_var('cc_all',lang('all')); 
    152146                        /* End Panel */ 
    153  
     147                         
    154148                        /* Messages */ 
    155149                        $GLOBALS['phpgw']->template->set_var('cc_msg_no_cards',lang('No Cards')); 
     
    166160                        $GLOBALS['phpgw']->template->set_var('cc_empty',lang('Empty')); 
    167161                        /* End Messages */ 
    168  
     162                         
    169163                        $GLOBALS['phpgw']->template->set_var('cc_results',lang('Results')); 
    170164                        $GLOBALS['phpgw']->template->set_var('cc_is_my',lang('Is My')); 
     165                        $GLOBALS['phpgw']->template->set_var('cc_ie_personal',lang('Import/Export pesonal contacts')); 
    171166                        $GLOBALS['phpgw']->template->set_var('cc_btn_search',lang('Search')); 
    172167                        $GLOBALS['phpgw']->template->set_var('cc_add_relation',lang('Add Relation')); 
    173                         $GLOBALS['phpgw']->template->set_var('cc_del_relation',lang('Remove Selected Relations')); 
     168                        $GLOBALS['phpgw']->template->set_var('cc_del_relation',lang('Remove Selected Relations'));                       
    174169                        $GLOBALS['phpgw']->template->set_var('cc_msg_group',lang('Group')); 
    175170                        $GLOBALS['phpgw']->template->set_var('cc_msg_contact_full',lang('Contact [Full]')); 
     
    179174                        $GLOBALS['phpgw']->template->set_var('phpgw_img_dir', $GLOBALS['phpgw_info']['server']['webserver_url'] . '/phpgwapi/images'); 
    180175 
     176                        $GLOBALS['phpgw']->template->set_var('cc_msg_import_contacts', lang('Import Contacts')); 
     177                        $GLOBALS['phpgw']->template->set_var('cc_msg_export_contacts', lang('Export Contacts')); 
     178                        $GLOBALS['phpgw']->template->set_var('cc_msg_expresso_info_csv', lang('The Expresso supports the contacts importation in the CSV file format.')); 
     179                        $GLOBALS['phpgw']->template->set_var('cc_msg_choose_file_type', lang('Select the file type')); 
     180                        $GLOBALS['phpgw']->template->set_var('cc_msg_outlook_express', lang('Outlook Express')); 
     181                        $GLOBALS['phpgw']->template->set_var('cc_msg_outlook2k', lang('Outlook 2000')); 
     182                        $GLOBALS['phpgw']->template->set_var('cc_msg_expresso_default', lang('Expresso (default)')); 
     183                        $GLOBALS['phpgw']->template->set_var('cc_msg_choose_contacts_file', lang('Select the file that contains the contacts to be imported:')); 
     184                        $GLOBALS['phpgw']->template->set_var('cc_msg_close_win', lang('Close')); 
     185                        $GLOBALS['phpgw']->template->set_var('cc_msg_close', lang('Close')); 
     186                        $GLOBALS['phpgw']->template->set_var('cc_msg_ie_personal', lang('Import / Export personal Contacts')); 
     187                        $GLOBALS['phpgw']->template->set_var('cc_msg_import_fail', lang('The importation has failed. Verify the file format.')); 
     188                        $GLOBALS['phpgw']->template->set_var('cc_msg_importing_contacts', lang('Importing Contacts...')); 
     189                        $GLOBALS['phpgw']->template->set_var('cc_msg_import_finished', lang('The importation has finished.')); 
     190                        $GLOBALS['phpgw']->template->set_var('cc_msg_new', lang(' new')); 
     191                        $GLOBALS['phpgw']->template->set_var('cc_msg_failure', lang(' failed')); 
     192                        $GLOBALS['phpgw']->template->set_var('cc_msg_exists', lang(' were existent')); 
     193                        $GLOBALS['phpgw']->template->set_var('cc_msg_show_more_info', lang('show more info')); 
     194                        $GLOBALS['phpgw']->template->set_var('cc_msg_clean', lang('Clean')); 
     195                        $GLOBALS['phpgw']->template->set_var('cc_msg_invalid_csv', lang('Select a valid CSV file to import your contacts')); 
     196                        $GLOBALS['phpgw']->template->set_var('cc_msg_export_csv', lang('Select the format type that you want to export your contacts')); 
     197                        $GLOBALS['phpgw']->template->set_var('cc_msg_automatic', lang('Automatic')); 
     198                        $GLOBALS['phpgw']->template->set_var('cc_msg_export_error', lang('An error has occurred while the exportation.')); 
     199                        $GLOBALS['phpgw']->template->set_var('cc_msg_new_email', lang('New Email')); 
     200                        $GLOBALS['phpgw']->template->set_var('cc_msg_main', lang('Main')); 
     201                        $GLOBALS['phpgw']->template->set_var('cc_msg_alternative', lang('Alternative')); 
     202                        $GLOBALS['phpgw']->template->set_var('cc_msg_select_email', lang('Select E-Mail')); 
     203                        $GLOBALS['phpgw']->template->set_var('cc_msg_new_phone', lang('New Telephone')); 
     204                        $GLOBALS['phpgw']->template->set_var('cc_msg_home', lang('Home')); 
     205                        $GLOBALS['phpgw']->template->set_var('cc_msg_cellphone', lang('Cellphone')); 
     206                        $GLOBALS['phpgw']->template->set_var('cc_msg_work', lang('Work')); 
     207                        $GLOBALS['phpgw']->template->set_var('cc_msg_fax', lang('Fax')); 
     208                        $GLOBALS['phpgw']->template->set_var('cc_msg_pager', lang('Pager')); 
     209                        $GLOBALS['phpgw']->template->set_var('cc_msg_choose_phone', lang('Select the telephone')); 
     210                        $GLOBALS['phpgw']->template->set_var('cc_msg_warn_firefox', lang('Warning: Too old version of Firefox')); 
     211                        $GLOBALS['phpgw']->template->set_var('cc_msg_firefox_half1', lang('For this application work correctly</u>')); 
     212                        $GLOBALS['phpgw']->template->set_var('cc_msg_firefox_half2', lang('it\'s necessary to update your Firefox Browser for a new version (version > 1.5) Install now clicking in the link bellow, or if you want to update it later')); 
     213                        $GLOBALS['phpgw']->template->set_var('cc_msg_click_close', lang('click Close')); 
     214                        $GLOBALS['phpgw']->template->set_var('cc_msg_install_now', lang('Install Now')); 
     215                        $GLOBALS['phpgw']->template->set_var('cc_msg_install_new_firefox', lang('Install a new Firefox version')); 
     216                        $GLOBALS['phpgw']->template->set_var('cc_msg_moz_thunderbird', lang('Export as Mozilla Thunderbird CSV.')); 
     217                        $GLOBALS['phpgw']->template->set_var('cc_msg_outlook_express_pt', lang('Export as Outlook Express (Portuguese) CSV.')); 
     218                        $GLOBALS['phpgw']->template->set_var('cc_msg_outlook_express_en', lang('Export as Outlook Express (English) CSV.')); 
     219                        $GLOBALS['phpgw']->template->set_var('cc_msg_outlook_2k_pt', lang('Export as Outlook 2000 (Portuguese) CSV.')); 
     220                        $GLOBALS['phpgw']->template->set_var('cc_msg_outlook_2k_en', lang('Export as Outlook 2000 (English) CSV.')); 
     221                        $GLOBALS['phpgw']->template->set_var('cc_msg_expresso_default_csv', lang('Export as Expresso (Default) CSV.')); 
     222                        $GLOBALS['phpgw']->template->set_var('cc_msg_copy_to_catalog', lang('Copy to personal catalog.')); 
     223                        $GLOBALS['phpgw']->template->set_var('cc_msg_add_contact_to_group', lang('You did not add any contact for this group.')); 
     224                        $GLOBALS['phpgw']->template->set_var('cc_msg_fill_field_name', lang('Fill the field Full Name')); 
     225                         
    181226                        $GLOBALS['phpgw']->template->parse('out','index'); 
    182  
     227                         
    183228                        $api = CreateObject('contactcenter.ui_api'); 
    184229                        $main = $api->get_full_add(); 
     
    191236                } 
    192237 
    193  
     238                 
    194239                /*! 
    195  
     240                 
    196241                        @function data_manager 
    197                         @abstract Calls the right method and passes to it the right 
     242                        @abstract Calls the right method and passes to it the right  
    198243                                parameters 
    199244                        @author Raphael Derosso Pereira 
    200  
     245                 
    201246                */ 
    202247                function data_manager() 
     
    207252                                case 'set_n_cards': 
    208253                                        return $this->set_n_cards((int)$_GET['ncards']); 
    209  
    210                                 case 'get_cards_data': 
    211  
     254                                         
     255                                case 'get_cards_data':                                   
    212256                                        $ids = false; 
    213257                                        // To support ldap catalogs using accentuation 
    214258                                        if ($_POST['letter'] == 'search' && isset($_POST['data'])) 
    215259                                        { 
    216                                                 //$ids = utf8_decode($this->search($_POST['data'])); 
    217                                                 $ids = $this->search($_POST['data']); 
     260                                                $ids = utf8_decode($this->search($_POST['data'])); 
    218261                                        } 
    219  
    220                                         //return $this->get_cards_data($_POST['letter'], $_POST['page'], unserialize(str_replace('\\"','"',$ids))); 
    221                                         return $this->get_cards_data($_POST['letter'], $_POST['page'], $ids); 
    222                                         //return $this->get_cards_data($_POST['letter'], $_POST['page'], unserialize(str_replace('\\"','"',$_POST['ids']))); 
    223  
     262                                         
     263                                        if(isset($_SESSION['ids'])) 
     264                                                $ids = $_SESSION['ids']; 
     265                                         
     266                                        return $this->get_cards_data($_POST['letter'], $_POST['page'], $ids);                                            
    224267                                case 'get_cards_data_get': 
    225268                                        return $this->get_cards_data($_GET['letter'], $_GET['page'], unserialize(str_replace('\\"','"',$_GET['ids']))); 
     
    229272                                        return $this->get_photo($_GET['id']); 
    230273 
    231  
     274                                case 'get_visible_all_ldap': 
     275                                        echo $this->get_visible_all_ldap(); 
     276                                        return; 
     277                                         
    232278                                /* Catalog Methods */ 
    233279                                case 'set_catalog': 
    234280                                        return $this->set_catalog($_GET['catalog']); 
    235  
     281                                         
    236282                                case 'get_catalog_tree': 
    237283                                        echo serialize($this->get_catalog_tree($_GET['level'])); 
     
    250296                                        echo serialize($this->get_catalog_add_contact(utf8_decode($_POST['id']))); 
    251297                                        return; 
    252  
     298                                         
    253299                                /* Full Add Methods */ 
    254300                                case 'get_full_data': 
    255301                                        return $this->get_full_data($_GET['id']); 
    256  
     302                                 
    257303                                case 'get_group': 
    258304                                        return $this->get_group_data($_GET['id']); 
    259  
     305                                         
    260306                                case 'get_contact_full_add_const': 
    261307                                        return $this->get_contact_full_add_const(); 
     
    269315                                case 'get_states': 
    270316                                        return $this->get_states($_GET['country']); 
    271  
     317                                         
    272318                                case 'get_cities': 
    273319                                        return $this->get_cities($_GET['country'], $_GET['state'] ? $_GET['state'] : null); 
    274  
    275  
     320                                         
     321                                         
    276322                                /* Other Methods */ 
    277                                 case 'quick_add': 
     323                                case 'quick_add':                                                                                                                        
    278324                                        return $this->quick_add($_POST['add']); 
    279  
    280                                 case 'add_group': 
     325                                 
     326                                case 'add_group':                                                                                                                        
    281327                                        return $this->add_group($_POST['add']); 
    282  
     328                                                                         
    283329                                case 'remove_entry': 
    284330                                        return $this->remove_entry((int)$_GET['remove']); 
    285  
     331                                 
    286332                                case 'remove_all_entries': 
    287333                                        return $this->remove_all_entries(); 
    288334 
    289335                                case 'remove_group': 
    290  
    291                                         return $this->remove_group((int)$_GET['remove']); 
     336                                                                                 
     337                                        return $this->remove_group((int)$_GET['remove']);                                        
    292338 
    293339                                case 'search': 
    294                                         return $this->search(str_replace('\\"', '"', $_GET['data'])); 
     340                                        $ids = false; 
     341                                        $ids = $this->search($_GET['data']); 
     342                                        return $this->get_cards_data('search', '1', $ids); 
    295343 
    296344                                case 'email_win': 
     
    326374 
    327375                /*! 
    328  
     376                 
    329377                        @function set_n_cards 
    330378                        @abstract Informs the class the number of cards the page can show 
    331379                        @author Raphael Derosso Pereira 
    332  
     380                         
    333381                        @param integer $n_cards The number of cards 
    334  
     382                         
    335383                */ 
    336384                function set_n_cards($n_cards) 
     
    341389                                echo 1; 
    342390                        } 
    343  
     391                         
    344392                        $this->save_session(); 
    345393                } 
    346  
     394                                 
    347395                /*! 
    348  
     396                 
    349397                        @function set_catalog 
    350398                        @abstract Sets the current catalog selected by the user 
    351399                        @author Raphael Derosso Pereira 
    352  
     400                         
    353401                        @param string $id_catalog The sequence of IDs to reach the catalog 
    354402                                separated by commas 
    355  
     403                 
    356404                */ 
    357405                function set_catalog($id_catalog) 
     
    359407                        $id_catalog = str_replace('\\"', '"', $id_catalog); 
    360408                        $temp =& $this->bo->set_catalog($id_catalog); 
    361  
     409                         
    362410                        if ($temp) 
    363411                        { 
     
    366414                                $this->page_info['actual_catalog'] =& $temp; 
    367415                                $this->save_session(); 
    368  
     416                                 
    369417                                $catalog_info = $this->bo->get_branch_by_level($this->bo->catalog_level[0]); 
    370  
     418                                 
    371419                                if ($catalog_info['class'] === 'bo_global_ldap_catalog' || 
    372420                                    $catalog_info['class'] === 'bo_catalog_group_catalog') 
     
    378426                                        $perms = 15; 
    379427                                } 
    380  
     428                                 
    381429                                echo serialize(array( 
    382430                                        'status' => 'ok', 
     
    386434                                return; 
    387435                        } 
    388  
     436                         
    389437                        echo serialize(array( 
    390438                                'status' => 'ok', 
     
    392440                        )); 
    393441                } 
    394  
    395  
     442                 
     443                 
    396444                /*! 
    397  
     445                 
    398446                        @function get_catalog_tree 
    399447                        @abstract Returns the JS serialized array to used as the tree 
    400448                                level 
    401449                        @author Raphael Derosso Pereira 
    402                         @author Mï¿œrio Cï¿œsar Kolling (error messages and timeout) 
    403  
    404                         @param (string) $level The level to be taken 
    405  
     450            @author Mário César Kolling (error messages and timeout) 
     451                         
     452                        @param (string) $level The level to be taken  
     453                 
    406454                */ 
    407455                function get_catalog_tree($level) 
     
    412460 
    413461                                $parent = '0'; 
    414  
     462                                 
    415463                                if (!($tree = $this->bo->get_catalog_tree($level))) 
    416464                                { 
     
    426474                                $parent = substr($level, 0, $last_dot); 
    427475                                $child = substr($level, $last_dot+1, strlen($level)); 
    428  
     476                         
    429477                                if (!($tree[$child] = $this->bo->get_catalog_tree($level))) 
    430478                                { 
     
    445493                                } 
    446494                        } 
    447  
     495                         
    448496                        $folderImageDir = $GLOBALS['phpgw']->common->image('contactcenter','globalcatalog-mini.png'); 
    449497                        $folderImageDir = substr($folderImageDir, 0, strpos($folderImageDir, 'globalcatalog-mini.png')); 
    450  
     498                         
    451499                        // Deals with error messages from the server and returns them to the browser 
    452500                        if ($tree['msg']) 
     
    474522                                        'status' => 'error' 
    475523                                ); 
    476  
    477524                        } 
    478525                } 
    479  
    480 /*              function get_catalog_tree($level, $name = 'tree') 
    481                 { 
    482                         if ($level === '0') 
    483                         { 
    484                                 $folderImageDir = $GLOBALS['phpgw_info']['server']['webserver_url'] . '/phpgwapi/dftree/images/'; 
    485                                 $tree_js =  $name." = new dFTree({'name': '".$name."'});\n"; 
    486  
    487                                 $parent = '0'; 
    488                                 $child  = '0'; 
    489  
    490                                 if (!($tree = $this->bo->get_catalog_tree($level))) 
    491                                 { 
    492                                         return '0'; 
    493                                 } 
    494                         } 
    495                         else 
    496                         { 
    497                                 $last_dot = strrpos($level,'.'); 
    498                                 $parent = substr($level, 0, $last_dot); 
    499                                 $child = substr($level, $last_dot+1, strlen($level)); 
    500  
    501                                 $tree_js = ''; 
    502  
    503                                 if (!($tree[$child] = $this->bo->get_catalog_tree($level))) 
    504                                 { 
    505                                         return '0'; 
    506                                 } 
    507                         } 
    508  
    509                         $folderImageDir = $GLOBALS['phpgw']->common->image('contactcenter','globalcatalog-mini.png'); 
    510                         $folderImageDir = substr($folderImageDir, 0, strpos($folderImageDir, 'globalcatalog-mini.png')); 
    511  
    512                         $tree_js .= $this->convert_tree($tree, $name, $folderImageDir, $parent); 
    513  
    514                         return $tree_js; 
    515                 } 
    516 */ 
    517  
     526                 
    518527                /*! 
    519  
     528                 
    520529                        @function get_actual_catalog 
    521530                        @abstract Returns the actual selected Catalog 
     
    524533                */ 
    525534                function get_actual_catalog() 
    526                 { 
     535                {                        
    527536                        $level = $this->bo->get_level_by_branch($this->bo->get_actual_catalog(), $this->bo->tree['branches'], '0'); 
    528  
     537                         
    529538                        if ($level) 
    530539                        { 
     
    540549                        ); 
    541550                } 
    542  
     551                 
    543552                /*! 
    544  
     553                 
    545554                        @function get_cards_data 
    546555                        @abstract Returns the information that is placed on the cards 
    547556                        @author Raphael Derosso Pereira 
    548  
     557                         
    549558                        @param string $letter The first letter to be searched 
    550                         @param (int)  $page The page to be taken 
     559                        @param (int)  $page The page to be taken  
    551560                        @param (str)  $ids The ids to be taken in case of search 
    552561 
     
    556565                function get_cards_data($letter, $page, $ids) 
    557566                { 
     567                        if( $ids ) 
     568                                $_SESSION['ids'] = $ids;                    
    558569 
    559570                        // It's an external catalog? 
    560571                        $external = $this->bo->is_external($this->page_info['actual_catalog']); 
    561  
    562572                        //echo $page."\n"; 
    563573                        if ($letter !== 'search' and ($letter != $this->page_info['actual_letter'] or 
    564                             ($letter == $this->page_info['actual_letter'] and $page == $this->page_info['actual_page']) or 
     574                            ($letter == $this->page_info['actual_letter'] and $page == $this->page_info['actual_page']) or  
    565575                            $this->page_info['changed'])) 
    566576                        { 
    567577                                unset($ids); 
    568578                                $this->page_info['changed'] = false; 
    569  
     579                                  
    570580                                switch ($this->page_info['actual_catalog']['class']) 
    571581                                { 
     
    654664                                                        ); 
    655665                                                } 
    656  
     666                                                 
    657667                                                $find_field[0] = array('contact.id_contact','contact.names_ordered'); 
    658  
     668                                                 
    659669                                                $find_other[0] = array( 
    660670                                                        //'offset' => (($page-1)*$this->page_info['n_cards']), 
     
    662672                                                        'order'  => 'contact.names_ordered' 
    663673                                                ); 
    664  
     674                                                 
    665675                                                break; 
    666  
    667                                         //case 'bo_external_ldap_catalog': 
    668  
    669                                         //      break; 
    670  
     676                                         
    671677                                        case 'bo_global_ldap_catalog': 
     678                                         
    672679                                                $field_name = 'id_contact'; 
    673680 
     
    718725                                                                                        'value' => 'u' 
    719726                                                                                        ), 
    720                                                                                         /*1 => array( 
    721                                                                                         'field' => 'contact.account_type', 
    722                                                                                         'type'  => '=', 
    723                                                                                         'value' => 'g' 
    724                                                                                         ),*/ 
    725                                                                                         2 => array( 
     727                                                                                        1 => array( 
    726728                                                                                        'field' => 'contact.account_type', 
    727729                                                                                        'type'  => '=', 
     
    834836                                                                                'value' => 'g' 
    835837                                                                                ),*/ 
    836                                                                                 2 => array( 
     838                                                                                1 => array( 
    837839                                                                                'field' => 'contact.account_type', 
    838840                                                                                'type'  => '=', 
     
    842844                                                                ); 
    843845                                                        } 
    844  
    845846                                                } 
    846847 
     
    858859                                                        $find_field[0] = array('contact.id_contact','contact.names_ordered'); 
    859860                                                } 
    860  
     861                                                 
    861862                                                $find_other[0] = array( 
    862863                                                        //'offset' => (($page-1)*$this->page_info['n_cards']), 
     
    864865                                                        'order'  => 'contact.names_ordered' 
    865866                                                ); 
    866  
     867                                                 
    867868                                                break; 
    868  
     869                                         
    869870                                        case 'bo_company_manager': 
    870871                                                $field_name = 'id_company'; 
    871  
     872         
    872873                                                $find_field[0] = array('company.id_company','company.company_name'); 
    873  
     874                                                 
    874875                                                $find_other[0] = array( 
    875876                                                        //'offset' => (($page-1)*$this->page_info['n_cards']), 
     
    877878                                                        'order'  => 'company.company_name' 
    878879                                                ); 
    879  
     880         
    880881                                                $find_restric[0] = array( 
    881882                                                        0 => array( 
     
    885886                                                        ) 
    886887                                                ); 
    887  
     888                                                         
    888889                                                break; 
    889890 
    890891                                        case 'bo_group_manager': 
    891  
     892                                         
    892893                                                $field_name = 'id_group'; 
    893  
     894                                                 
    894895                                                if ($letter !== 'number')       { 
    895  
     896                                                         
    896897                                                        $find_restric[0] = array( 
    897898                                                                0 => array( 
     
    903904                                                } 
    904905                                                 else { 
    905  
     906                                                         
    906907                                                        $find_restric[0] = array( 
    907908                                                                0 => array( 
    908909                                                                                        'field' => 'group.title', 
    909910                                                                                        'type'  => 'LIKE', 
    910                                                                                         'value' => '0%' 
     911                                                                                        'value' => '0%'                                                                          
    911912                                                                ) 
    912                                                         ); 
     913                                                        );                                               
    913914                                                } 
    914  
     915                                                 
    915916                                                array_push($find_restric[0],  array( 
    916917                                                                                        'field' => 'group.owner', 
    917918                                                                                        'type'  => '=', 
    918                                                                                         'value' => $GLOBALS['phpgw_info']['user']['account_id'] 
     919                                                                                        'value' => $GLOBALS['phpgw_info']['user']['account_id']                                                                          
    919920                                                                ) 
    920921                                                ); 
    921  
    922                                                 $find_field[0] = array('group.id_group','group.title','group.short_name'); 
     922                                                 
     923                                                $find_field[0] = array('group.id_group','group.title','group.short_name');                                               
    923924                                                $find_other[0] = array( 
    924925                                                        'order'  => 'group.title' 
    925926                                                ); 
    926  
     927                                                 
    927928                                                break; 
    928  
     929                                                 
    929930                                        case 'bo_catalog_group_catalog': 
    930931                                                $this->page_info['actual_entries'] = false; 
    931  
     932                                                 
    932933                                                $this->page_info['actual_letter'] = $letter; 
    933934                                                $this->page_info['actual_page'] = 0; 
    934  
     935                                                 
    935936                                                $this->save_session(); 
    936937                                                $final[0] = 0; 
    937                                                 $final[1] = $this -> typeContact; 
    938                                                 echo serialize($final); 
     938                                                $final[1] = $this->typeContact; 
     939                                                echo serialize($final);                                          
    939940                                                return; 
    940941 
    941942                                } 
    942  
     943                                 
    943944                                $result = $this->bo->find($find_field[0],$find_restric[0],$find_other[0]); 
    944945                                $n_entries = count($result); 
    945  
     946                                 
    946947                                if ($n_entries) 
    947948                                { 
     
    957958                                { 
    958959                                        $this->page_info['actual_entries'] = false; 
    959  
     960                                         
    960961                                        $this->page_info['actual_letter'] = $letter; 
    961962                                        $this->page_info['actual_page'] = 0; 
    962  
    963                                         $this->save_session(); 
     963                                         
     964                                        $this->save_session();                           
    964965                                        $final[0] = 0; 
    965                                         $final[1] = $this -> typeContact; 
    966                                         echo serialize($final); 
     966                                        $final[1] = $this->typeContact; 
     967                                        echo serialize($final);                                                                                  
    967968                                        return; 
    968969                                } 
     
    973974                                        { 
    974975                                                $this->page_info['actual_entries'][] = $value[$field_name]; 
    975                                         } 
    976                                 } 
    977                         } 
    978 //************************************************************************* 
     976                                        }  
     977                                        //print_r($this->page_info['actual_entries']); 
     978                                } 
     979                        } 
    979980                        else if ($letter === 'search') 
    980981                        { 
    981982                                //if (!$ids and $this->page_info['actual_letter'] !== 'search') 
    982                                 if (!$ids && !$this->last_search_ids) 
     983                                if (!$ids) 
    983984                                { 
    984985                                        error_log('!$ids e $this->page_info[\'actual_letter\'] != search'); 
    985986                                        $this->page_info['actual_entries'] = false; 
    986  
     987                                         
    987988                                        $this->page_info['actual_letter'] = $letter; 
    988989                                        $this->page_info['actual_page'] = 0; 
    989  
     990                                         
    990991                                        $this->save_session(); 
    991992                                        $final[0] = 0; 
    992993                                        $final[1] = $this -> typeContact; 
    993                                         echo serialize($final); 
     994                                        echo serialize($final);                                  
    994995                                        return; 
    995996                                } 
     
    10071008                                        return; 
    10081009                                } 
    1009                                 else if ($ids || $this->last_search_ids) 
    1010                                 { 
    1011  
    1012                                         if ($ids) 
    1013                                         { 
    1014  
    1015                                                 $this->last_search_ids = $ids; 
    1016  
    1017                                         } 
    1018                                         else { 
    1019  
    1020                                                 $ids = $this->last_search_ids; 
    1021  
    1022                                         } 
    1023  
     1010                                else if ($ids) 
     1011                                {                                
    10241012                                        $this->page_info['actual_letter']  = $letter; 
    10251013                                        $this->page_info['actual_entries'] = $ids; 
     
    10381026                                        $page = $this->page_info['n_pages']; 
    10391027                                } 
    1040  
     1028                                 
    10411029                                $final = array( 
    10421030                                        0 => (int)$this->page_info['n_pages'], 
     
    10501038                                                5 => 'cc_alias', 
    10511039                                                6 => 'cc_id', 
    1052                                                 7 => 'cc_forwarding_address', 
    1053                                                 8 => 'cc_empNumber', 
    1054                                                 9 => 'cc_department' 
     1040                                                7 => 'cc_forwarding_address' 
    10551041                                        ) 
    10561042                                ); 
    1057  
     1043                                 
    10581044                                //echo 'Page: '.$page.'<br>'; 
    10591045                                $id_i = (($page-1)*$this->page_info['n_cards']); 
    10601046                                $id_f = $id_i + $this->page_info['n_cards']; 
    10611047                                $n_entries = count($this->page_info['actual_entries']); 
    1062  
     1048                                 
    10631049                                //echo 'ID_I: '.$id_i.'<br>'; 
    10641050                                //echo 'ID_F: '.$id_f.'<br>'; 
    1065                                 ///---------------- Correᅵᅵo Temporï¿œria PHP5 -----------------------/// 
     1051                                ///---------------- Correção Temporária PHP5 -----------------------/// 
    10661052                                $ids = array(); 
    1067                                 $array_temp = array(); 
    1068  
     1053                                $array_temp = array();                   
     1054                                                                 
    10691055                                foreach($this->page_info['actual_entries'] as $key=>$tmp){ 
    1070                                         $array_temp[] = $tmp; 
    1071                                 } 
    1072  
     1056                                        $array_temp[] = $tmp;                            
     1057                                }        
     1058                                 
    10731059                                for($i = $id_i; $i < $id_f and $i < $n_entries; $i++) 
    10741060                                { 
    10751061                                        $ids[] = $array_temp[$i]; 
    10761062                                } 
    1077  
     1063                                 
    10781064                                /// Original 
    10791065                                //for($i = $id_i; $i < $id_f and $i < $n_entries; $i++) 
     
    10821068                                //} 
    10831069                                /// 
    1084  
     1070                                 
    10851071                                $fields = $this->bo->catalog->get_fields(false); 
    10861072 
    1087                                 if( $this -> typeContact == 'groups') { 
     1073                                if( $this->typeContact == 'groups') { 
    10881074                                        $final = array( 
    10891075                                                0 => (int)$this->page_info['n_pages'], 
     
    10941080                                                        2 => 'cc_id', 
    10951081                                                        3 => 'cc_contacts' 
    1096                                                 ) 
    1097                                         ); 
    1098  
     1082                                                )                                                
     1083                                        );                                       
     1084                                         
    10991085                                        $groups =& $this->bo->catalog->get_multiple_entries($ids,$fields); 
    1100  
     1086                                         
    11011087                                        $i = 0; 
    11021088                                        // contatos do grupo 
    1103                                         $boGroups = CreateObject('contactcenter.bo_group'); 
     1089                                        $boGroups = CreateObject('contactcenter.bo_group');                                      
    11041090                                        $contacts = array(); 
    11051091                                        foreach($groups as $group)              { 
    1106  
     1092                                                                                 
    11071093                                                $final[3][$i][0] = $group['title'] ? $group['title'] : 'none'; 
    1108                                                 $final[3][$i][1] = $group['short_name'] ? $group['short_name'] : 'none'; 
     1094                                                $final[3][$i][1] = $group['short_name'] ? $group['short_name'] : 'none';                                                 
    11091095                                                $final[3][$i][2] = $group['id_group'] ? $group['id_group'] : 'none'; 
    11101096                                                $contacts = $boGroups -> get_contacts_by_group($group['id_group']); 
    11111097                                                $final[3][$i][3] = $contacts; 
    1112                                                 $i++; 
     1098                                                $i++;                                                    
    11131099                                        } 
    1114  
     1100                                         
    11151101                                        $this->page_info['actual_letter'] = $letter; 
    1116                                         $this->page_info['actual_page'] = $page; 
    1117  
    1118  
     1102                                        $this->page_info['actual_page'] = $page;                                         
     1103                                         
     1104                                         
    11191105                                        $lnk_compose = "location.href=('../expressoMail1_2/index.php?to="; 
    1120  
     1106                                         
    11211107                                        $final[5] = '<span class="link"  onclick="'.$lnk_compose; 
    1122                                         $final[10] = 'groups'; 
    1123                                         $this->save_session(); 
     1108                                        $final[10] = 'groups';                                                                                                                                                                                                                           
     1109                                        $this->save_session();                                   
    11241110                                        echo serialize($final); 
    1125                                         return; 
    1126                                 } 
    1127  
     1111                                        return;                                  
     1112                                } 
     1113                                 
    11281114                                $fields['photo'] = true; 
    11291115                                $fields['names_ordered'] = true; 
     
    11321118                                $fields['companies'] = 'default'; 
    11331119                                $fields['connections'] = 'default'; 
    1134  
    1135                                 // ?aqui alterar a chamada desse mï¿œtodo para receber o base dn? 
    1136                                 $contacts =& $this->bo->catalog->get_multiple_entries($ids,$fields); 
    1137  
     1120                                // ?aqui alterar a chamada desse método para receber o base dn? 
     1121                                $contacts = &$this->bo->catalog->get_multiple_entries($ids,$fields); 
     1122                                 
     1123                                 
    11381124                                if (!is_array($contacts) or !count($contacts)) 
    11391125                                { 
     
    11431129                                        return; 
    11441130                                } 
    1145  
     1131                                 
    11461132                                $i = 0; 
    11471133                                foreach($contacts as $index => $contact) 
    11481134                                { 
    11491135                                        /* 
    1150                                          * TODO: Os timeouts de conexï¿œo foram retirados, ver se serï¿œ necessï¿œrio retornar essa funcionalidade, e, 
    1151                                          * neste caso, terminar a implementaᅵᅵo das mensagens de retorno. 
     1136                                         * TODO: Os timeouts de conexão foram retirados, ver se será necessário retornar essa funcionalidade, e, 
     1137                                         * neste caso, terminar a implementação das mensagens de retorno. 
    11521138                                         */ 
    11531139                                        if ($index !== 'error'){ 
     
    11561142                                                $final[3][$i][2] = $contact['companies']['company1']['title']?$contact['companies']['company1']['title']:'none'; 
    11571143 
    1158                                                 //Para exibir a matricula do empregado 
    1159                                                 $final[3][$i][8] = $contact['companies']['company1']['empNumber']?$contact['companies']['company1']['empNumber']:'none'; 
    1160                                                 //Para exibir o setor/lotaᅵᅵo do empregado 
    1161                                                 $final[3][$i][9] = $contact['companies']['company1']['department']?$contact['companies']['company1']['department']:'none'; 
    1162  
    11631144                                                /* Select the correct Email and Telephone to be shown */ 
    11641145                                                $preferences = ExecMethod('contactcenter.ui_preferences.get_preferences'); 
     1146                                                 
    11651147                                                if (!is_array($preferences)) 
    11661148                                                { 
     
    11881170                                                                                $default_phone_found = true; 
    11891171                                                                        } 
    1190                                                                          
    1191                                                                         if (!($_SESSION['phpgw_info']['user']['preferences']['contactcenter']['telephone_number'] == $conn_info['connection_value']) && $_SESSION['phpgw_info']['user']['preferences']['contactcenter']['voip_enabled'] && $conn_info['connection_value'] && preg_match('/^\([0-9]{2}\)[0-9]{4}\-[0-9]{4}$/',$conn_info['connection_value'])==1 && !$external) { 
     1172                                                                        if (!($_SESSION['phpgw_info']['user']['preferences']['contactcenter']['telephone_number'] == $conn_info['connection_value']) && $_SESSION['phpgw_info']['user']['preferences']['contactcenter']['voip_enabled'] && $conn_info['connection_value'] && preg_match('/^\([0-9]{2}\)[0-9]{4}\-[0-9]{4}$/',$conn_info['connection_value'])==1 && !$external){ 
    11921173                                                                                $conn_info['connection_value'] = "<a title=\"".lang("Call Extension")."\" href=\"#\" onclick=\"connectVoip('".$conn_info['connection_value']."', 'com')\">".$conn_info['connection_value']."</a>"; 
    1193                                                                 } 
    1194                                                                          
     1174                                                                        } 
    11951175                                                                        $final[3][$i][3] = $conn_info['connection_value'] ? $conn_info['connection_value'] : 'none'; 
    11961176                                                                } 
    11971177                                                        } 
    11981178                                                } 
    1199  
     1179                                                 
    12001180                                                if (!$final[3][$i][3]) 
    12011181                                                { 
     
    12171197                                                $final[4][$i] = $contact['photo'] ? 1  : 0; 
    12181198                                                $i++; 
    1219  
    12201199                                        } 
    12211200                                        else 
     
    12301209                                $this->page_info['actual_letter'] = $letter; 
    12311210                                $this->page_info['actual_page'] = $page; 
    1232  
    1233                                 $this->save_session(); 
    1234  
     1211                                 
     1212                                $this->save_session();                           
    12351213                                echo serialize($final); 
    12361214                                return; 
    12371215                        } 
    1238  
     1216                         
    12391217                        $this->page_info['actual_letter'] = $letter; 
    12401218                        $this->page_info['actual_page'] = $page; 
    1241  
     1219                         
    12421220                        $this->save_session(); 
    1243  
     1221                         
    12441222                        $final[0] = 0; 
    12451223                        $final[1] = $this -> typeContact; 
    12461224                        echo serialize($final); 
    12471225                } 
    1248  
     1226                 
     1227                function get_visible_all_ldap() 
     1228                { 
     1229                        $bo = CreateObject('contactcenter.bo_ldap_manager'); 
     1230                        $ldap_query = $bo->srcs; 
     1231                        return $ldap_query[1]['visible'];        
     1232                } 
     1233 
     1234  
    12491235                /*! 
    1250  
     1236                 
    12511237                        @function get_group_data 
    12521238                        @abstract Returns all the information of a given Group 
    12531239                        @author Nilton Emilio Buhrer Neto 
    1254  
     1240                         
    12551241                        @param (integer) $id The id to get information 
    1256  
    1257                 */ 
     1242                 
     1243                */               
    12581244                function get_group_data($id) 
    12591245                { 
     
    12611247                        $fields = $this->bo->catalog->get_fields(true); 
    12621248                        $data = $this->bo->catalog->get_single_entry($id,$fields); 
    1263  
    1264                         if($id) { 
     1249                         
     1250                        if($id) {                        
    12651251                                // get All Contacts by group. 
    1266                                 $data['contact_in_list'] = $this->bo->catalog->get_contacts_by_group($id); 
    1267                         } 
    1268  
     1252                                $data['contact_in_list'] = $this->bo->catalog->get_contacts_by_group($id);                                                               
     1253                        } 
     1254                         
    12691255                        $boGroup = CreateObject('contactcenter.bo_group'); 
    1270  
    1271                         $data['contact_list'] = $boGroup->get_all_contacts(); 
    1272  
    1273                         $data['result'] = 'ok'; 
    1274                         echo serialize($data); 
    1275                 } 
    1276  
     1256                                                 
     1257                        $all_contacts = $boGroup->get_all_contacts(); 
     1258                         
     1259                        $contact_options = ""; 
     1260                        if(count($all_contacts)) {                                       
     1261                                foreach($all_contacts as $idx => $contact) {                             
     1262                                        $contact_options .= "<OPTION value='".$contact['id_connection']."'>".$contact['names_ordered']." (".$contact['connection_value'].")</OPTION>"; 
     1263                                } 
     1264                        } 
     1265                        $data['contact_list'] = $contact_options; 
     1266                        $data['result'] = 'ok';                                                          
     1267                        echo serialize($data);                   
     1268                }                
     1269                 
    12771270                /*! 
    1278  
     1271                 
    12791272                        @function get_full_data 
    12801273                        @abstract Returns all the information of a given Entry 
    12811274                        @author Raphael Derosso Pereira 
    1282  
     1275                         
    12831276                        @param (integer) $id The id to get information 
    1284  
     1277                 
    12851278                */ 
    12861279                function get_full_data($id) 
    12871280                { 
    12881281                        $dateformat = $GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat']; 
    1289                         $this->bo->catalog = CreateObject('contactcenter.bo_people_catalog'); 
     1282                        $this->bo->catalog = CreateObject('contactcenter.bo_people_catalog');            
    12901283                        $fields = $this->bo->catalog->get_fields(true); 
    12911284                        $fields['photo'] = false; 
     
    13201313                        } 
    13211314                        $datecount = 0; 
    1322  
     1315                         
    13231316                        $data['result'] = 'ok'; 
    13241317                        $data['cc_full_add_contact_id'] = $id; 
     
    13621355 
    13631356                        /* Relations */ 
    1364  
     1357                         
    13651358                        echo serialize($data); 
    13661359                } 
     
    13991392                                return; 
    14001393                        } 
    1401  
     1394                         
    14021395                        echo 0; 
    14031396                } 
    1404  
     1397                 
    14051398                /*! 
    1406  
     1399                 
    14071400                        @function quick_add 
    14081401                        @abstract Adds a new Contact using the Quick Add interface 
    14091402                        @author Raphael Derosso Pereira 
    1410  
     1403                         
    14111404                        @param string $sdata Serialized data 
    14121405                */ 
    14131406                function quick_add($sdata) 
    14141407                { 
    1415  
     1408                         
    14161409                        $sdata = str_replace('\\"', '"', $sdata); 
    14171410                        $new_array = unserialize($sdata); 
    14181411                        $tdata = array(); 
    1419  
     1412                         
    14201413                        foreach($new_array as $tmp) 
    14211414                                $tdata[] = $tmp; 
    1422  
     1415                         
    14231416                        if (!$tdata) 
    14241417                        { 
     
    14271420                                        'status' => 'abort' 
    14281421                                )); 
    1429  
     1422                                 
    14301423                                return; 
    14311424                        } 
    1432  
    1433                         // verifica se email jï¿œ existe! 
     1425                         
     1426                        // verifica se email já existe! 
    14341427                        $boGroup = CreateObject('contactcenter.bo_group'); 
    14351428                        $contact = $boGroup->verify_contact($tdata[4]); 
    1436  
     1429                                                                                                 
    14371430                        if($contact) 
    1438                         { 
     1431                        {                                                        
    14391432                                $str_contact = "\r\n - ".implode("\r\n - ",$contact); 
    1440  
     1433                                 
    14411434                                echo serialize(array( 
    14421435                                        'msg'    => lang('Problems on adding your Contact. The email "%1" already exists in: %2',$tdata[4], $str_contact), 
    14431436                                        'status' => 'alreadyExists' 
    14441437                                )); 
    1445  
    1446                                 return; 
     1438                                 
     1439                                return;                  
    14471440                        } 
    14481441 
     
    14601453 
    14611454                        if ($boPeople ->quick_add($data)) 
    1462                         { 
     1455                        {                                
    14631456                                $this->page_info['changed'] = true; 
    1464  
     1457                                 
    14651458                                echo serialize(array( 
    14661459                                        'msg'    => lang('Entry added with success!'), 
     
    14761469                        } 
    14771470 
    1478                         $this->save_session(); 
    1479  
     1471                        $this->save_session();   
     1472                         
    14801473                } 
    14811474 
    14821475                /*! 
    1483  
     1476                 
    14841477                        @function add_group 
    14851478                        @abstract Adds a new Group using the Add Group interface 
    14861479                        @author Nilton Emilio Buhrer Neto 
    1487  
     1480                         
    14881481                        @param string $sdata Serialized data 
    14891482                */ 
     
    14931486                        $tdata = unserialize($sdata); 
    14941487                        $new_tdata = array(); 
    1495  
     1488                         
    14961489                        if (!$tdata) 
    14971490                        { 
     
    15001493                                        'status' => 'abort' 
    15011494                                )); 
    1502  
     1495                                 
    15031496                                return; 
    15041497                        } 
    1505  
     1498                         
    15061499                        foreach($tdata as $tmp) 
    15071500                                $new_tdata[] = $tmp; 
    1508  
    1509                         $data['title'] = $new_tdata[0]; 
     1501                         
     1502                        $data['title'] = $new_tdata[0];                  
    15101503                        $data['contact_in_list'] = $new_tdata[1]; 
    15111504                        $data['id_group'] = $new_tdata[2]; 
    1512  
     1505                                                 
    15131506                        $boGroup = CreateObject('contactcenter.bo_group_manager'); 
    15141507                        $id = $boGroup -> add_group($data); 
    1515  
     1508                         
    15161509                        if ($id) 
    15171510                        { 
    15181511                                $this->page_info['changed'] = true; 
    1519  
     1512                                 
    15201513                                echo serialize(array( 
    15211514                                        'msg'    => lang('Entry added with success!'), 
     
    15351528 
    15361529                /*! 
    1537  
     1530                 
    15381531                        @function remove_group 
    15391532                        @abstract Removes a group if the user has the right to do it 
    1540                         @author Nilton Emilio Buhrer Neto 
     1533                        @author Nilton Emilio Buhrer Neto                        
    15411534                        @param (integer) $id The id to be removed 
    1542  
     1535                                 
    15431536                */ 
    15441537                function remove_group($id) 
    1545                 { 
    1546                                 $soGroup = CreateObject('contactcenter.so_group'); 
     1538                {                                
     1539                                $soGroup = CreateObject('contactcenter.so_group');                               
    15471540                                $data = array ('id_group' => $id); 
    15481541                                if($soGroup -> delete($data)) { 
     
    15501543                                                'msg'    => lang('Removed Entry ID '.$id.'!'), 
    15511544                                                'status' => 'ok' 
    1552                                         )); 
     1545                                        ));                                                      
    15531546                                } 
    15541547                                else { 
     
    15591552                                } 
    15601553 
    1561                         $this->save_session(); 
     1554                        $this->save_session();                           
    15621555                } 
    15631556 
    15641557 
    15651558                function remove_all_entries (){ 
    1566  
     1559                 
    15671560                        $error = false; 
    15681561                        $this->all_entries = $this->bo->catalog->get_all_entries_ids(); 
     
    15721565                                if(!$result) { 
    15731566                                        $error = true; 
    1574                                         break; 
     1567                                        break;           
    15751568                                } 
    15761569                        } 
     
    15811574                                        'status' => 'ok' 
    15821575                                )); 
    1583                         } 
     1576                        }  
    15841577                        else { 
    15851578                                echo serialize(array( 
     
    15931586 
    15941587                /*! 
    1595  
     1588                 
    15961589                        @function remove_entry 
    15971590                        @abstract Removes an entry if the user has the right to do it 
    15981591                        @author Raphael Derosso Pereira 
    1599  
     1592                         
    16001593                        @param (integer) $id The id to be removed 
    1601  
     1594                                 
    16021595                */ 
    16031596                function remove_entry ($id) 
     
    16081601                                return; 
    16091602                        } 
    1610  
     1603                         
    16111604                        $this->page_info['changed'] = true; 
    16121605                        $result = $this->bo->catalog->remove_single_entry($id); 
    1613  
     1606                         
    16141607                        if ($result) 
    16151608                        { 
     
    16181611                                        unset($this->page_info['actual_entries'][$pos]); 
    16191612                                } 
    1620  
     1613                                 
    16211614                                $temp = false; 
    16221615                                reset($this->page_info['actual_entries']); 
     
    16251618                                        $temp[] = $t; 
    16261619                                } 
    1627  
     1620                                 
    16281621                                $this->page_info['actual_entries'] = $temp; 
    16291622 
     
    16401633                                )); 
    16411634                        } 
    1642  
     1635                         
    16431636                        $this->save_session(); 
    16441637                } 
    16451638 
    1646  
     1639                 
    16471640                /*! 
    1648  
     1641                 
    16491642                        @function post_full_add 
    16501643                        @abstract Saves all the information altered/entered in the Full Add 
     
    16551648                function post_full_add() 
    16561649                { 
    1657                         $data = unserialize(str_replace('\\"', '"', $_POST['data'])); 
     1650                        $data =  $_POST['data']; 
     1651                        // Exceptions!!! utf8 special chars.  
     1652                        $data = preg_replace("/\%u2(\d+)(\d+)(\d+)/","-",$data); 
     1653                        $data = unserialize(str_replace('\\"', '"', $data)); 
    16581654                        $this -> bo -> catalog = CreateObject('contactcenter.bo_people_catalog'); 
    1659  
    1660 //                      echo str_replace('\\"', '"', $_POST['data']); 
    16611655 
    16621656                        if (!is_array($data)) 
     
    16821676                                        'status' => 'fatal' 
    16831677                                )); 
    1684  
     1678                                 
    16851679                                return; 
    16861680                        } 
     
    16961690                                $id_photo = '_new_'; 
    16971691                        } 
    1698  
    1699                         /* 
    1700                          * Process Photo, if available 
     1692                         
     1693                        /*  
     1694                         * Process Photo, if available  
    17011695                         */ 
    17021696                        $sleep_count = 0; 
     
    17151709                        } 
    17161710                        $GLOBALS['phpgw']->session->appsession('ui_data.photo','contactcenter', array('wait', 'n')); 
    1717  
     1711                         
    17181712                        if (isset($this->page_info['photos'][$id_photo])) 
    17191713                        { 
     
    17321726                                $this->save_session(); 
    17331727                        } 
    1734  
     1728                         
    17351729                        /* 
    17361730                         * Arrange Date so it gets inserted correctly 
    17371731                         */ 
    1738  
     1732                          
    17391733                        $dateformat = $GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat']; 
    1740  
     1734                 
    17411735                        $j = 0; 
    17421736                        for ($i = 0; $i < 5; $i+=2) 
     
    17711765                                        continue; 
    17721766                                } 
    1773  
     1767                                 
    17741768                                switch($field) 
    17751769                                { 
     
    17831777                                                /* Do Nothing. This is just to make sure no invalid field is passed */ 
    17841778                                                break; 
    1785  
     1779                                         
    17861780                                        case 'id_status': 
    17871781                                        case 'id_prefix': 
     
    17921786                                                } 
    17931787                                                break; 
    1794  
     1788                                         
    17951789                                        case 'birthdate_0': 
    17961790                                        case 'birthdate_1': 
    17971791                                        case 'birthdate_2': 
    1798  
     1792                                         
    17991793                                                switch($date[$datecount]['digit']) 
    18001794                                                { 
     
    18181812                                                        break; 
    18191813                                                } 
    1820  
     1814                                                 
    18211815                                                if (!checkdate($date['value'][0], $date['value'][1], $date['value'][2])) 
    18221816                                                { 
     
    18271821                                                        return; 
    18281822                                                } 
    1829  
     1823                                                 
    18301824                                                $data['birthdate'] = $date['value'][2].'-'.$date['value'][0].'-'.$date['value'][1]; 
    18311825                                                break; 
     
    18501844                                                        { 
    18511845                                                                $index = 'address'.$type; 
    1852  
     1846                                                                 
    18531847                                                                $id_state = $this->bo->catalog->add_state($state_info); 
    18541848                                                                $data['addresses'][$index]['id_state'] = $id_state; 
     
    18681862                                                        { 
    18691863                                                                $index = 'address'.$type; 
    1870  
     1864                                                                 
    18711865                                                                $id_city = $this->bo->catalog->add_city($city_info); 
    18721866                                                                $data['addresses'][$index]['id_city'] = $id_city; 
     
    19091903                                ); 
    19101904                        } 
    1911  
     1905                         
    19121906                        eval($code); 
    19131907 
     
    19251919 
    19261920                /*! 
    1927  
     1921                 
    19281922                        @function post_photo 
    19291923                        @abstract Wrapper to post a photo without reload a page. 
     
    19351929                        //print_r($_FILES); 
    19361930                        $GLOBALS['phpgw']->session->appsession('ui_data.photo','contactcenter', array('wait', 'y')); 
    1937  
     1931                         
    19381932                        if (!is_array($_FILES) and is_array(!$_FILES['cc_pd_photo'])) 
    19391933                        { 
    19401934                                $this->page_info['photos'][$id]['status'] = 'no_upload'; 
    19411935                                $this->page_info['photos'][$id]['msg'] = lang('No Photos uploaded to Server.'); 
    1942  
     1936                                 
    19431937                                $this->save_session(); 
    19441938                                $GLOBALS['phpgw']->session->appsession('ui_data.photo','contactcenter', array('ok', 'y')); 
     
    19501944                                $this->page_info['photos'][$id]['status'] = 'no_GD_lib'; 
    19511945                                $this->page_info['photos'][$id]['msg'] = lang('Cannot manipulate Image. No Image added. Please, if you want to use images, ask the Administrator to install GD library.'); 
    1952  
     1946                                 
    19531947                                $this->save_session(); 
    19541948                                $GLOBALS['phpgw']->session->appsession('ui_data.photo','contactcenter', array('ok', 'y')); 
     
    19761970                                return; 
    19771971                        } 
    1978  
     1972                         
    19791973                        switch($_FILES['cc_pd_photo']['type']) 
    19801974                        { 
     
    20062000 
    20072001                                default: 
    2008  
     2002                                         
    20092003                                        $this->page_info['photos'][$id]['status'] = 'invalid_image'; 
    20102004                                        $this->page_info['photos'][$id]['msg'] = lang('The file must be an JPEG, PNG or GIF Image.'); 
     
    20192013                                        $this->page_info['photos'][$id]['status'] = 'invalid_file'; 
    20202014                                        $this->page_info['photos'][$id]['msg'] = lang('Couldn\'t open Image. It may be corrupted or internal library doesn\'t support this format.'); 
    2021  
     2015                                         
    20222016                                        $this->save_session(); 
    20232017                                        $GLOBALS['phpgw']->session->appsession('ui_data.photo','contactcenter', array('ok', 'y')); 
    20242018                                        return; 
    20252019                        } 
    2026  
     2020                         
    20272021                        $img_size = getimagesize($_FILES['cc_pd_photo']['tmp_name']); 
    20282022                        $dst_img = imagecreatetruecolor(60, 80); 
    2029  
     2023                         
    20302024                        if (!imagecopyresized($dst_img, $src_img, 0, 0, 0, 0, 60, 80, $img_size[0], $img_size[1])) 
    20312025                        { 
    20322026                                $this->page_info['photos'][$id]['status'] = 'invalid_file'; 
    20332027                                $this->page_info['photos'][$id]['msg'] = lang('Couldn\'t open Image. It may be corrupted or internal library doesn\'t support this format.'); 
    2034  
     2028                                 
    20352029<