Changeset 5133 for trunk


Ignore:
Timestamp:
11/03/11 13:24:14 (12 years ago)
Author:
wmerlotto
Message:

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

Location:
trunk/expressoAdmin1_2
Files:
46 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoAdmin1_2/controller.php

    r1417 r5133  
    88} 
    99require_once '../header.session.inc.php'; 
     10require_once '../API/class.servicelocator.php'; 
    1011 
    1112        //      Explode action from cExecuteForm function 
  • trunk/expressoAdmin1_2/inc/class.bosectors.inc.php

    r3915 r5133  
    4848                        $sector_info['objectClass'][1]  = 'organizationalUnit'; 
    4949 
    50                         if( isset($_POST['associated_domain']) ) 
    51                         { 
    52                                 if ( $_POST['associated_domain'] != "") { 
    53                                         $sector_info['objectClass'][2]  = 'domainRelatedObject'; 
    54                                         $sector_info['associatedDomain'] = trim($_POST['associated_domain']); 
    55                                 } 
    56                         } 
    57  
    5850                        $systemName = $GLOBALS['phpgw_info']['server']['system_name']; 
    5951                        if ($systemName != '') 
     
    6658                        } 
    6759                         
    68                          
    69                         /* 
    70                          Insere as informações sobre quota total por usuários e por gigabytes de espaço em disco  
    71                          Se não vierem os dados, ele coloca 0 (Caso não exista controle de cota). 
    72                         */ 
    73                          
    74                         $controlled_by_quota = false; 
    75  
    76                         if( isset($_POST['disk_quota']) ) 
    77                         { 
    78                                 $controlled_by_quota = true; 
    79                                 $sector_info['diskQuota'] = (trim($_POST['disk_quota']) != "") ? $_POST['disk_quota'] : "0"; 
    80                         } 
    81                          
    82                         if( isset($_POST['users_quota']) ) 
    83                         { 
    84                                 $controlled_by_quota = true; 
    85                                 $sector_info['usersQuota'] = (trim($_POST['users_quota']) != "") ? $_POST['users_quota'] : "0"; 
    86                         } 
    87                          
    88                         if( isset($_POST['file_manager_quota']) ) 
    89                         { 
    90                                 $controlled_by_quota = true; 
    91                                 $sector_info['fileManagerQuota'] = (trim($_POST['file_manager_quota']) != "") ? $_POST['file_manager_quota'] : "0"; 
    92                         } 
    93                          
    94                         if($controlled_by_quota) 
    95                                 $sector_info['objectClass'][]   = 'phpgwQuotaControlled'; 
    96                                  
    9760                        // Chama funcao para escrever no OpenLDAP, case de erro, volta com msg de erro. 
    9861                        if (!$this->so->write_ldap($dn, $sector_info)) 
     
    10366                        } 
    10467                         
    105                         // Escreve no log 
     68                        //Escreve no log 
    10669                        $this->db_functions->write_log("created sector", "$dn"); 
    10770                         
     
    11376        function save_sector() 
    11477                { 
    115                         $sector_info = $this->so->get_info($_POST['context']); 
     78                $context = utf8_encode($_POST['context']); 
     79 
     80                        $sector_info = $this->so->get_info($context); 
    11681                         
    117                         if (($_POST['sector_visible'] == 'on') && ($sector_info[0]['phpgwaccountvisible'][0] != '-1')) 
     82                        if (($_POST['sector_visible'] == 'on') && ($sector_info['phpgwaccountvisible'] != '-1')) 
    11883                        { 
    119                                 $phpgwAccount = $controlled_by_quota = false; 
    12084                                foreach ($sector_info[0]['objectclass'] as $objectClass) 
    12185                                { 
    12286                                        if ($objectClass == 'phpgwAccount') 
    12387                                                $phpgwAccount = true; 
    124                                         if ($objectClass == 'phpgwquotacontrolled') 
    125                                                 $controlled_by_quota = true; 
     88                                        else 
     89                                                $phpgwAccount = false; 
    12690                                } 
    12791                                 
     
    13498                                $this->so->add_attribute($sector_info[0]['dn'], $ldap_mod_add); 
    13599                        } 
    136                         elseif($sector_info[0]['phpgwaccountvisible'][0] == '-1') 
     100                        else 
    137101                        { 
    138102                                $ldap_mod_del['objectClass'] = 'phpgwAccount'; 
     
    141105                        } 
    142106                         
    143                         //Modifica o conteúdo das cotas. 
    144                         if( (isset($_POST['disk_quota']) )  
    145                                 || (isset($_POST['users_quota']) )  
    146                                 || (isset($_POST['file_manager_quota']) )) { //se for passado alguma coisa, lógico 
    147                                  
    148                                 $file_manager_space = $this->functions->get_actual_disk_usage($_POST["context"],'FileManager'); 
    149                                 if($_POST["file_manager_quota"]<$file_manager_space){ 
    150                                         $_POST['error_messages'] = lang("Theres more disk space in use than the quota. It needs to be more than %1 MB",$file_manager_space); 
    151                                         $_GET['context'] = $_POST["context"]; 
    152                                         ExecMethod('expressoAdmin1_2.uisectors.edit_sector'); 
    153                                         return false; 
    154                                 } 
    155                                  
    156                                 if(!$controlled_by_quota) { 
    157                                         $ldap_mod_add['objectClass'][] = 'phpgwQuotaControlled'; 
    158                                         $this->so->add_attribute($sector_info[0]['dn'], $ldap_mod_add); 
    159                                 } 
    160                                  
    161                                 $ldap_mod_replace = array(); 
    162                                 $ldap_mod_replace['diskQuota'] = $_POST['disk_quota']; 
    163                                 $ldap_mod_replace['usersQuota'] = $_POST['users_quota']; 
    164                                 $ldap_mod_replace['fileManagerQuota'] = $_POST['file_manager_quota']; 
    165                                 $this->so->replace_attribute($sector_info[0]['dn'], $ldap_mod_replace); 
    166                         } 
    167                                  
    168107                        // Volta para o ListSectors 
    169108                        ExecMethod('expressoAdmin1_2.uisectors.list_sectors'); 
     
    184123                        $manager_context = $_POST['manager_context']; 
    185124 
    186                          
     125                        $sector_dn = utf8_encode($sector_dn); 
    187126 
    188127                        $sector_users = $this->so->get_sector_users($sector_dn); 
     128 
    189129                        for ($i=0; $i<count($sector_users)-1; $i++) 
    190130                        { 
  • trunk/expressoAdmin1_2/inc/class.db_functions.inc.php

    r3251 r5133  
    3333        function read_acl($account_lid) 
    3434        { 
    35                 $query = "SELECT * FROM phpgw_expressoadmin WHERE manager_lid = '" . $account_lid . "'";  
    36                 $this->db->query($query); 
    37                 while($this->db->next_record()) 
    38                         $result[] = $this->db->row(); 
    39                 return $result; 
    40         } 
    41          
    42         //returns true if cotas control property is set. 
    43         function use_cota_control() { 
    44                 $query = "select * from phpgw_config where config_name='expressoAdmin_cotasOu' and config_value='true'"; 
    45                 $this->db->query($query); 
    46                 if($this->db->next_record()) 
    47                         return true; 
    48                 return false; 
    49         } 
    50          
     35                $query = "SELECT * FROM phpgw_expressoadmin_acls WHERE manager_lid = '" . $account_lid . "'"; 
     36                $this->db->query($query); 
     37 
     38                $acls = array(); 
     39                $context = null; 
     40                while($this->db->next_record()) 
     41                { 
     42                        $result = $this->db->row(); 
     43                        $acls[$result['acl_name']] = '1'; 
     44                        $context = $result['context']; 
     45        } 
     46         
     47                $all_contexts = split("%", $context); 
     48                foreach ($all_contexts as $index=>$context) 
     49                { 
     50                        $acls['contexts'][] = $context; 
     51                        $acls['contexts_display'][] = str_replace(", ", ".", ldap_dn2ufn( $context )); 
     52        } 
     53         
     54                $acls['raw_context'] = $context; 
     55                return $acls; 
     56        } 
    5157        /* 
    5258        *       Reativa os usuários desabilitados por tempo inativo modificando o seu ultimo acesso para o dia atual. 
     
    7884                $manager_info = $this->read_acl($manager); 
    7985                 
    80                 //Escrevre no Banco a ACL do gerente 
    81                 $sql = "INSERT INTO phpgw_expressoadmin (manager_lid, context, acl) " 
    82                 . "VALUES('" . $new_manager . "','" . $manager_info[0]['context'] . "','" . $manager_info[0]['acl'] . "')"; 
    83                  
    84                 if (!$this->db->query($sql)) 
     86                 //Deleta todas as acls do Gerente 
     87                $this->db->delete('phpgw_expressoadmin_acls',array('manager_lid' => $new_manager)); 
     88                 
     89                foreach ($manager_info as $info => $value) 
     90                { 
     91                    $acl  = strstr($info, 'acl_'); 
     92 
     93                    if ($acl !== false) 
     94                    { 
     95 
     96                            $fields = array( 
     97                                            'manager_lid' => $new_manager, 
     98                                            'context' =>    $manager_info['raw_context'], 
     99                                            'acl_name' => $acl, 
     100                                           ); 
     101 
     102                            if(!$this->db->insert('phpgw_expressoadmin_acls', $fields)) 
    85103                { 
    86104                        echo lang('error in') . 'copy_manager: ' . pg_last_error(); 
    87105                        return false; 
    88106                } 
     107                    } 
     108 
     109 
     110                } 
     111                 
     112         
    89113                 
    90114                //Pesquisa no Banco e pega os valores dos apps. 
    91                 $sql = "SELECT * FROM phpgw_expressoadmin_apps WHERE manager_lid = '" . $manager_info[0]['manager_lid'] . "' AND context = '" . $manager_info[0]['context'] . "'"; 
     115                $sql = "SELECT * FROM phpgw_expressoadmin_apps WHERE manager_lid = '" . $manager . "' AND context = '" . $manager_info['raw_context'] . "'"; 
    92116                $this->db->query($sql); 
    93117                while($this->db->next_record()) 
     
    100124                { 
    101125                        $sql = "INSERT INTO phpgw_expressoadmin_apps (manager_lid, context, app) " 
    102                         . "VALUES('" . $new_manager . "','" . $manager_info[0]['context'] . "','" . $aplications[$i]['app'] . "')"; 
     126                        . "VALUES('" . $new_manager . "','" . $manager_info['raw_context'] . "','" . $aplications[$i]['app'] . "')"; 
    103127                        if (!$this->db->query($sql)) 
    104128                        { 
     
    432456                        $return['members'] = array(); 
    433457 
    434                 //  ACL Block Personal Data 
    435                 $query = "SELECT acl_rights FROM phpgw_acl WHERE acl_location = 'blockpersonaldata' AND acl_account = '" . $gidnumber . "'"; 
    436                 $this->db->query($query); 
    437                 if($this->db->next_record()) { 
    438                         $block_personal_data = $this->db->row(); 
    439                         $return['acl_block_personal_data'] = $block_personal_data['acl_rights']; 
    440                 } 
    441458                return $return; 
    442459        } 
     
    685702        function manager_lid_exist($manager_lid) 
    686703        { 
    687                 $query = "SELECT manager_lid FROM phpgw_expressoadmin WHERE manager_lid = '" . $manager_lid . "'"; 
     704                $query = "SELECT manager_lid FROM phpgw_expressoadmin_acls WHERE manager_lid = '" . $manager_lid . "'"; 
    688705                $this->db->query($query); 
    689706                while($this->db->next_record()) 
     
    697714        function create_manager($params, $manager_acl) 
    698715        { 
    699                 //Escrevre no Banco a ACL do gerente 
    700                 $sql = "INSERT INTO phpgw_expressoadmin (manager_lid, context, acl) " 
    701                 . "VALUES('" . $params['ea_select_manager'] . "','" . $params['context'] . "','" . $manager_acl . "')"; 
    702                 $this->db->query($sql); 
     716 
     717                //Insere novas regras 
     718                foreach ($manager_acl as $acl) 
     719                { 
     720                    $fields = array( 
     721                                    'manager_lid' => $params['ea_select_manager'], 
     722                                    'context' =>    $params['context'], 
     723                                    'acl_name' => $acl, 
     724                                   ); 
     725 
     726                    $this->db->insert('phpgw_expressoadmin_acls', $fields); 
     727                } 
     728 
    703729                         
    704730                //Escrevre no Banco as aplicações que o gerente tem direito de disponibilizar aos seus usuarios. 
     
    718744        function save_manager($params, $manager_acl) 
    719745        { 
     746 
     747 
    720748                $params['manager_lid'] = $params['hidden_manager_lid']; 
    721749                 
    722                 //Executa update na tabela para atualizar ACL 
    723                 $sql = "UPDATE phpgw_expressoadmin SET context = '" . $params['context'] . "',acl = '" . $manager_acl 
    724                 . "' WHERE manager_lid = '" . $params['manager_lid'] ."'"; 
    725                 $this->db->query($sql); 
     750                //Deleta todas as acls do Gerente 
     751                $this->db->delete('phpgw_expressoadmin_acls',array('manager_lid' => $params['manager_lid'],'context' => $params['context'])); 
     752 
     753                //Insere novas regras 
     754                foreach ($manager_acl as $acl) 
     755                { 
     756                    $fields = array( 
     757                                    'manager_lid' => $params['manager_lid'], 
     758                                    'context' =>    $params['context'], 
     759                                    'acl_name' => $acl, 
     760                                   ); 
     761 
     762                    $this->db->insert('phpgw_expressoadmin_acls', $fields); 
     763                } 
    726764                         
    727765                //Deleta as aplicações e adiciona as novas. 
     
    743781                return; 
    744782        } 
    745         function save_acl_personal_data($gidnumber, $new_acl_personal_data, $op = '') { 
    746                 if($op == 'add') 
    747                         $sql = "INSERT INTO phpgw_acl (acl_appname, acl_location, acl_account, acl_rights) " 
    748                                 . "VALUES('preferences','blockpersonaldata','$gidnumber',$new_acl_personal_data)";               
    749                 elseif($op == 'remove') 
    750                         $sql = "DELETE FROM phpgw_acl WHERE acl_account = '$gidnumber' and acl_location = 'blockpersonaldata'"; 
    751                 else 
    752                         $sql = "UPDATE phpgw_acl SET acl_rights = $new_acl_personal_data WHERE acl_account = '$gidnumber' " 
    753                                 . "and acl_location = 'blockpersonaldata'"; 
     783 
     784         function save_calendar_acls($user,$acl,$owner) 
     785         { 
     786 
     787 
     788             $aclArray = explode('-', $acl); 
     789             $rights = 0; 
     790 
     791             foreach ($aclArray as $number) 
     792                 $rights = $rights + $number; 
     793 
     794             $this->db->delete('phpgw_acl', array('acl_appname' => 'calendar','acl_location' => $user,'acl_account' => $owner), null, null); 
     795 
     796             if($rights > 0) 
     797             { 
     798                 if($this->db->insert('phpgw_acl', array('acl_appname' => 'calendar','acl_location' => $user,'acl_account' => $owner,'acl_rights' => $rights ), null, null, null)) 
     799                      return true; 
     800                else 
     801                     return false; 
     802             }else 
     803                 return true; 
    754804                                 
    755                 //error_log($sql); 
    756                 $this->db->query($sql); 
    757                  
    758                 return; 
     805         } 
     806 
     807         function get_calendar_acls($owner) 
     808         { 
     809 
     810                $colunas = array('acl_appname','acl_location','acl_account','acl_rights'); 
     811                $where = array('acl_appname' => 'calendar','acl_account' => $owner); 
     812                $this->db->select('phpgw_acl', $colunas, $where, null, null); 
     813 
     814                $return; 
     815 
     816                include_once 'class.ldap_functions.inc.php'; 
     817                $ldap = new ldap_functions(); 
     818                include_once 'class.functions.inc.php'; 
     819                $function = new functions(); 
     820 
     821 
     822                while ($this->db->next_record()) 
     823                { 
     824                    $row = $this->db->row(); 
     825                    $return[$ldap->uidnumber2uid($row['acl_location'])] = $function->normalize_calendar_acl($row['acl_rights']); 
     826                     
     827                } 
     828                return $return; 
     829                 
    759830        } 
    760831         
  • trunk/expressoAdmin1_2/inc/class.functions.inc.php

    r3887 r5133  
    4343                function check_acl($account_lid, $access) 
    4444                { 
    45                         $acl = $this->read_acl($account_lid); 
    46                         $array_acl = $this->make_array_acl($acl['acl']); 
     45                         
     46 
     47                        $array_acl =  $this->db_functions->read_acl($account_lid); 
    4748                         
    4849                        switch($access) 
    4950                        { 
    5051                                case list_users: 
    51                                         if ($array_acl[acl_add_users] || $array_acl[acl_edit_users] || $array_acl[acl_delete_users] || $array_acl[acl_change_users_password] || $array_acl[acl_change_users_quote] || $array_acl[acl_edit_sambausers_attributes] || $array_acl[acl_view_users] || $array_acl[acl_manipulate_corporative_information] || $array_acl[acl_edit_users_phonenumber] ) 
     52                                        if ($array_acl['acl_add_users'] || $array_acl['acl_edit_users'] || $array_acl['acl_delete_users'] || $array_acl['acl_change_users_password'] || $array_acl['acl_change_users_quote'] || $array_acl['acl_edit_sambausers_attributes'] || $array_acl['acl_view_users'] || $array_acl['acl_manipulate_corporative_information'] || $array_acl['acl_edit_users_phonenumber'] ) 
    5253                                                return true; 
    5354                                        break; 
    5455                                case list_groups: 
    55                                         if ($array_acl[acl_add_groups] || $array_acl[acl_edit_groups] || $array_acl[acl_delete_groups]) 
     56                                        if ($array_acl['acl_add_groups'] || $array_acl['acl_edit_groups'] || $array_acl['acl_delete_groups']) 
    5657                                                return true; 
    5758                                        break; 
    5859                                case list_maillists: 
    59                                         if ($array_acl[acl_add_maillists] || $array_acl[acl_edit_maillists] || $array_acl[acl_delete_maillists]) 
     60                                        if ($array_acl['acl_add_maillists'] || $array_acl['acl_edit_maillists'] || $array_acl['acl_delete_maillists']) 
    6061                                                return true; 
    6162                                        break; 
    6263                                case list_sectors: 
    63                                         if ($array_acl[acl_create_sectors] || $array_acl[acl_edit_sectors] || $array_acl[acl_delete_sectors]) 
     64                                        if ($array_acl['acl_create_sectors'] || $array_acl['acl_edit_sectors'] || $array_acl['acl_delete_sectors']) 
    6465                                                return true; 
    6566                                        break; 
    6667                                case list_computers: 
    67                                         if ($array_acl[acl_create_computers] || $array_acl[acl_edit_computers] || $array_acl[acl_delete_computers]) 
     68                                        if ($array_acl['acl_create_computers'] || $array_acl['acl_edit_computers'] || $array_acl['acl_delete_computers']) 
    6869                                                return true; 
    6970                                        break; 
    7071 
    7172                                case display_groups: 
    72                                         if ( $array_acl[acl_edit_users] || $array_acl[acl_view_users] || ($array_acl[acl_edit_sambausers_attributes] && ($this->current_config['expressoAdmin_samba_support'] == 'true')) ) 
     73                                        if ( $array_acl['acl_edit_users'] || $array_acl['acl_view_users'] || ($array_acl['acl_edit_sambausers_attributes'] && ($this->current_config['expressoAdmin_samba_support'] == 'true')) ) 
    7374                                                return true; 
    7475                                        break; 
    7576                                case display_emailconfig: 
    76                                         if ($array_acl[acl_edit_users] || $array_acl[acl_view_users]) 
     77                                        if ($array_acl['acl_edit_users'] || $array_acl['acl_view_users']) 
    7778                                                return true; 
    7879                                        break; 
    7980                                case display_applications: 
    80                                         if ($array_acl[acl_edit_users] || $array_acl[acl_view_users]) 
     81                                        if ($array_acl['acl_edit_users'] || $array_acl['acl_view_users']) 
    8182                                                return true; 
    8283                                        break; 
    8384                                case display_emaillists: 
    84                                         if ($array_acl[acl_edit_users] || $array_acl[acl_view_users]) 
     85                                        if ($array_acl['acl_edit_users'] || $array_acl['acl_view_users']) 
    8586                                                return true; 
    8687                                        break; 
    8788 
    8889                                case list_institutional_accounts: 
    89                                         if ($array_acl[acl_add_institutional_accounts] || $array_acl[acl_edit_institutional_accounts] || $array_acl[acl_delete_institutional_accounts]) 
     90                                        if ($array_acl['acl_add_institutional_accounts'] || $array_acl['acl_edit_institutional_accounts'] || $array_acl['acl_delete_institutional_accounts']) 
    9091                                                return true; 
    9192                                        break; 
    9293                                case list_shared_accounts: 
    93                                         if ($array_acl[acl_add_shared_accounts] || $array_acl[acl_edit_shared_accounts] || $array_acl[acl_delete_shared_accounts]) 
    94                                                 return true; 
    95                                         break; 
    96  
     94                                        if ($array_acl['acl_add_shared_accounts'] || $array_acl['acl_edit_shared_accounts'] || $array_acl['acl_delete_shared_accounts']) 
     95                                                return true; 
     96                                        break; 
     97                case configurations: 
     98                                        if ($array_acl['acl_active_blocking_sending_email_to_shared_accounts'] || $array_acl['acl_add_blocking_sending_email_to_shared_accounts_exception'] || $array_acl['acl_edit_and_remove_blocking_sending_email_to_shared_accounts_exception'] || $array_acl['acl_edit_maximum_number_of_recipients_generally'] || $array_acl['acl_add_maximum_number_of_recipients_by_user'] || $array_acl['acl_edit_and_remove_maximum_number_of_recipients_by_user'] || $array_acl['acl_add_maximum_number_of_recipients_by_group'] || $array_acl['acl_edit_and_remove_maximum_number_of_recipients_by_group']) 
     99                                                return true; 
     100                                        break; 
     101                                case messages_size: 
     102                                        if($array_acl['acl_add_messages_size_rule'] || $array_acl['acl_edit_messages_size_rule'] || $array_acl['acl_remove_messages_size_rule']) 
     103                                                return true; 
     104                                        break; 
    97105 
    98106                                default: 
     
    282290                {  
    283291                        $acl = $this->db_functions->read_acl($account_lid); 
    284                          
    285                         $result['acl'] = $acl[0]['acl']; 
    286                         $result['manager_lid'] = $acl[0]['manager_lid']; 
    287                         $result['raw_context'] = $acl[0]['context']; 
    288                          
    289                         $all_contexts = split("%", $acl[0]['context']); 
    290                         foreach ($all_contexts as $index=>$context) 
    291                         { 
    292                                 $result['contexts'][] = $context; 
    293                                 $result['contexts_display'][] = str_replace(", ", ".", ldap_dn2ufn( $context )); 
    294                         } 
    295                          
    296                         return $result; 
    297                 } 
    298                  
    299                 // Make a array read humam 
    300                 // Last acl:    2.147.483.648 -> edit users phonephone 
    301                 // Last acl:    4.294.967.296 -> add institutional accounts 
    302                 // Last acl:    8.589.934.592 -> edit institutional accounts 
    303                 // Last acl:   17.179.869.184 -> remove institutional accounts 
    304                 // Last acl:   34.359.738.368 -> add share accounts 
    305                 // Last acl:   68.719.476.736 -> edit share accounts 
    306                 // Last acl:  137.438.953.472 -> delete share accounts 
    307                 // Last acl:  274.877.906.944 -> edit share accounts acl 
    308                 // Last acl:  549.755.813.888 -> edit quota share quote 
    309                 // Last acl:  1.099.511.627.776 -> empty share accounts inbox 
    310  
    311                 function make_array_acl($acl) 
    312                 { 
    313                         $array_acl_tmp = array(); 
    314                         $tmp = array(           "acl_add_users", 
    315                                                                 "acl_edit_users", 
    316                                                                 "acl_delete_users", 
    317                                                                 "acl_EMPTY1", 
    318                                                                 "acl_add_groups", 
    319                                                                 "acl_edit_groups", 
    320                                                                 "acl_delete_groups", 
    321                                                                 "acl_change_users_password", 
    322                                                                 "acl_add_maillists", 
    323                                                                 "acl_edit_maillists", 
    324                                                                 "acl_delete_maillists", 
    325                                                                 "acl_EMPTY2", 
    326                                                                 "acl_create_sectors", 
    327                                                                 "acl_edit_sectors", 
    328                                                                 "acl_delete_sectors", 
    329                                                                 "acl_edit_sambausers_attributes", 
    330                                                                 "acl_view_global_sessions", 
    331                                                                 "acl_view_logs", 
    332                                                                 "acl_change_users_quote", 
    333                                                                 "acl_set_user_default_password", 
    334                                                                 "acl_create_computers", 
    335                                                                 "acl_edit_computers", 
    336                                                                 "acl_delete_computers", 
    337                                                                 "acl_rename_users", 
    338                                                                 "acl_edit_sambadomains", 
    339                                                                 "acl_view_users", 
    340                                                                 "acl_edit_email_groups", 
    341                                                                 "acl_empty_user_inbox", 
    342                                                                 "acl_manipulate_corporative_information", 
    343                                                                 "acl_edit_users_picture", 
    344                                                                 "acl_edit_scl_email_lists", 
    345                                                                 "acl_edit_users_phonenumber", 
    346                                                                 "acl_add_institutional_accounts", 
    347                                                                 "acl_edit_institutional_accounts", 
    348                                                                 "acl_remove_institutional_accounts", 
    349                                                                 "acl_add_shared_accounts", 
    350                                                                 "acl_edit_shared_accounts", 
    351                                                                 "acl_delete_shared_accounts", 
    352                                                                 "acl_edit_shared_accounts_acl", 
    353                                                                 "acl_edit_shared_accounts_quote", 
    354                                                                 "acl_empty_shared_accounts_inbox" 
    355                                                                 ); 
    356  
    357                         foreach ($tmp as $index => $right) 
    358                         { 
    359                                 $bin = ''; 
    360                                 for ($i=0; $i<$index; $i++) 
    361                                 { 
    362                                         $bin .= '0'; 
    363                                 } 
    364                                 $bin = '1' . $bin; 
    365                                  
    366                                 $array_acl[$right] = $this->safeBitCheck(bindec($bin), $acl); 
    367                         } 
    368                         return $array_acl; 
    369                 } 
     292                        return $acl; 
     293                        } 
     294                         
    370295                 
    371296                function get_inactive_users($contexts) { 
     
    421346                                $justthese = array("uidnumber", "uid", "cn", "mail"); 
    422347                                $filter="(&(phpgwAccountType=u)(|(uid=*".$query."*)(sn=*".$query."*)(cn=*".$query."*)(givenName=*".$query."*)(mail=$query*)(mailAlternateAddress=$query*)))"; 
    423                                 $filter = preg_replace("/\*\*/","*",$filter); //Caso a query venha vazia, inibir a montagem do filtro com ** pois algumas versões do php mais recentes não corrigem isso no ldap_search 
     348 
    424349                                $tmp = array(); 
    425350                                foreach ($contexts as $index=>$context) 
     
    541466                } 
    542467                 
    543                 /*  
    544                         Funciona de maneira similar ao get_sectors_list, porém retorna a propria OU do contexto 
    545                         e monta o array de retorno de forma diferente, necessário para algumas mudanças implementadas 
    546                         no método admin.uisectors.list_sectors. 
    547                 */ 
    548                 function get_organizations2($contexts, $selected='', $referral=false, $show_invisible_ou=true) {                 
    549  
     468                function get_sectors($selected='', $referral=false, $show_invisible_ou=true) 
     469                { 
     470                        $s = CreateObject('phpgwapi.sector_search_ldap'); 
     471                        $sectors_info = $s->get_sectors($selected, $referral, $show_invisible_ou); 
     472                        return $sectors_info; 
     473                }                
     474  
     475                // Get list of all levels, this function is used for sectors module. 
     476                function get_sectors_list($contexts) 
     477                { 
     478                        $a_sectors = array(); 
     479                         
    550480                        $dn                     = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 
    551481                        $passwd         = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 
    552482                        $ldap_conn      = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 
    553                                                  
     483                         
    554484                        ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 
    555                          
    556                         if ($referral) 
    557                                 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 
    558                         else 
    559                                 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 
    560                          
     485                        ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 
    561486                        ldap_bind($ldap_conn,$dn,$passwd); 
    562487                         
    563                         $justthese = array("dn","diskQuota","usersQuota","actualDiskQuota"); 
    564                         $filter = "(objectClass=organizationalUnit)"; 
    565                         foreach ($contexts as $context) { 
     488                        $justthese = array("dn"); 
     489                        $filter = "(ou=*)"; 
     490                         
     491                        $systemName = strtolower($GLOBALS['phpgw_info']['server']['system_name']); 
     492                        if ($systemName != '') 
     493                                $filter = "(&$filter(phpgwSystem=$systemName))"; 
     494                         
     495                        foreach ($contexts as $context) 
     496                        { 
    566497                                $search=ldap_search($ldap_conn, $context, $filter, $justthese); 
    567                                  
    568                                 ldap_sort($ldap_conn, $search, "ou"); 
    569                                 $info = ldap_get_entries($ldap_conn, $search); 
    570                                 ldap_close($ldap_conn); 
    571          
    572                                 // Retiro o count do array info e inverto o array para ordenaçãoo. 
    573                                 for ($i=0; $i<$info["count"]; $i++) 
    574                                 { 
    575                                         $dn = $info[$i]["dn"]; 
    576                                          
    577                                         // Necessário, pq em uma busca com ldapsearch objectClass=organizationalUnit, traz tb o próprio ou. 
    578                                         //if (strtolower($dn) == $context) 
    579                                                 //continue; 
    580          
    581                                         $array_dn = ldap_explode_dn ( $dn, 1 ); 
    582          
    583                                         $array_dn_reverse  = array_reverse ( $array_dn, true ); 
    584          
    585                                         // Retirar o indice count do array. 
    586                                         array_pop ( $array_dn_reverse ); 
    587          
    588                                         $inverted_dn[implode ( "#", $array_dn_reverse )] = $info[$i]; 
    589                                 } 
    590                         } 
    591                         // Ordenação por chave 
    592                         ksort($inverted_dn);                     
     498                        $info = ldap_get_entries($ldap_conn, $search); 
     499                        for ($i=0; $i<$info["count"]; $i++) 
     500                    { 
     501                        $a_sectors[] = $info[$i]['dn'];  
     502                    } 
     503                        } 
     504                 
     505                        ldap_close($ldap_conn); 
     506 
     507                        // Retiro o count do array info e inverto o array para ordenação. 
     508                foreach ($a_sectors as $context) 
     509            { 
     510 
     511 
     512                                $array_dn = ldap_explode_dn($context, 1 ); 
     513                                foreach($array_dn as $key=>$value){ 
     514                                        $array_dn[$key]=preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$value); 
     515                                }        
     516 
     517                $array_dn_reverse  = array_reverse ( $array_dn, true ); 
     518 
     519                                // Retirar o indice count do array. 
     520                                array_pop ( $array_dn_reverse ); 
     521 
     522                                $inverted_dn[$context] = implode ( "#", $array_dn_reverse ); 
     523                        } 
     524 
     525                        // Ordenação 
     526                        natcasesort($inverted_dn); 
    593527                         
    594528                        // Construção do select 
    595529                        $level = 0; 
    596530                        $options = array(); 
    597                         foreach ($inverted_dn as $dn=>$info_ou) 
     531                        foreach ($inverted_dn as $dn=>$invert_ufn) 
    598532                        { 
    599533                $display = ''; 
    600                                 $info_retorno = array(); 
    601                 $array_dn_reverse = explode ( "#", $dn ); 
     534 
     535                $array_dn_reverse = explode ( "#", $invert_ufn ); 
    602536                $array_dn  = array_reverse ( $array_dn_reverse, true ); 
    603537 
     
    613547 
    614548                reset ( $array_dn ); 
    615                 $display .= ' ' . (current ( $array_dn ) ); 
    616                                  
    617                                 $info_retorno['display'] = $display; 
    618                                 $info_retorno['dn'] = $info_ou['dn']; 
    619                                 $info_retorno['diskquota'] = $info_ou['diskquota'][0]; 
    620                                 $info_retorno['usersquota'] = $info_ou['usersquota'][0]; 
    621 //                              $info_retorno['actualdiskquota'] = round($this->get_actual_disk_usage($info_ou['dn']),2);//$info_ou['actualdiskquota'][0]; 
    622 //                              $info_retorno['actualnumusers'] = $this->get_num_users($info_ou['dn']); 
    623                                  
    624                                 array_push($options,$info_retorno); 
    625                                  
    626                 } 
    627                         return $options; 
    628                 }        
    629                  
    630                 function get_info($context, $referral = false) { 
    631                         $dn                     = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 
    632                         $passwd         = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 
    633                         $ldap_conn      = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 
    634                          
    635                         ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 
    636                          
    637                         if ($referral) 
    638                                 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 
    639                         else 
    640                                 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 
    641                          
    642                         ldap_bind($ldap_conn,$dn,$passwd); 
    643                          
    644                         $filter="(objectClass=organizationalUnit)"; 
    645                         $search=ldap_search($ldap_conn, $context, $filter); 
    646                         $result = ldap_get_entries($ldap_conn, $search); 
    647                         return $result; 
    648                                  
    649                 } 
    650  
    651                 function get_num_users($context,$selected='', $referral=false, $show_invisible_ou=true) { 
    652                         $dn                     = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 
    653                         $passwd         = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 
    654                         $ldap_conn      = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 
    655                          
    656                         ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 
    657                          
    658                         if ($referral) 
    659                                 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 
    660                         else 
    661                                 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 
    662                          
    663                         ldap_bind($ldap_conn,$dn,$passwd); 
    664                          
    665                         $justthese = array("dn"); 
    666                         $filter = "(objectClass=inetOrgPerson)"; 
    667                         $search=ldap_search($ldap_conn, $context, $filter, $justthese); 
    668                  
    669                 $retorno = ldap_count_entries($ldap_conn, $search); 
    670                         ldap_close($ldap_conn); 
    671                          
    672                         return $retorno; 
    673                 } 
    674                  
    675                 //Checa se existe quota para mais um usuï¿œrio no setor... se existir retorna true, senï¿œo false.               
    676                 function existe_quota_usuario($setor) { 
    677                         $num_users = $this->get_num_users($setor['dn']); 
    678                         //return $num_users . " --- " . $setor['usersquota'][0] 
    679                         if(($num_users>=$setor['usersquota'][0]) && ($setor['usersquota'][0]!=-1)) { 
    680                                 return false; 
    681                         } 
    682                         return true; 
    683                 } 
    684                  
    685                 //Checa se existe quota em disco para mais um usuário no setor... se existir retorna true, senão false. 
    686                 function existe_quota_disco($setor,$quota_novo_usuario) { 
    687                         settype($quota_novo_usuario,"float");            
    688                         $quota_novo_usuario /= 1024; //A quota vêm da interface em megabytes, deve se tornar gigabyte. 
    689  
    690                         $nova_quota = $this->get_actual_disk_usage($setor['dn']) + $quota_novo_usuario; 
    691                         if(( $nova_quota >= $setor['diskquota'][0] ) && ($setor['diskquota'][0] != -1)) { 
    692                                 return false; 
    693                         } 
    694                         return true; 
    695                 } 
    696                  
    697                 function has_file_disk_quota($home_directory,$quota) { 
    698                         $uid = substr($home_directory,strpos($home_directory,"/home/")+6); 
    699                         $context = $this->get_ou_context_from_uid($uid); 
    700                          
    701                         $sector = $this->get_info($context); 
    702                         $new_quota = $this->get_actual_disk_usage($sector[0]['dn'],'FileManager',$uid) + $quota; 
    703                         if(( $new_quota > $sector[0]['filemanagerquota'][0] ) && ($sector[0]['filemanagerquota'][0] != -1)) { 
    704                                 return false; 
    705                         } 
    706                         return true; 
    707                 } 
    708                  
    709                 function get_ou_context_from_uid($uid,$referral = false) { 
    710                         $dn                     = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 
    711                         $passwd         = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 
    712                         $ldap_conn      = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 
    713                         $context = $GLOBALS['phpgw_info']['server']['ldap_context']; 
    714                          
    715                         ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 
    716                          
    717                         if ($referral) 
    718                                 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 
    719                         else 
    720                                 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 
    721                          
    722                         ldap_bind($ldap_conn,$dn,$passwd); 
    723                         $filter="(&(objectClass=phpgwAccount)(uid=$uid))"; 
    724                         $search=ldap_search($ldap_conn, $context, $filter); 
    725                         $result = ldap_get_entries($ldap_conn, $search); 
    726                          
    727                         if($result['count']>0){ 
    728                                 $dn = $result[0]['dn']; 
    729                                 return substr($dn,strpos($dn,$uid.",")+strlen($uid.",")); 
    730                         } 
    731                         else 
    732                                 return false; 
    733                 } 
    734                  
    735                 // Soma as quotas de todos os usuï¿œrios daquele contexto. 
    736                 function get_actual_disk_usage($context,$app='expressoMail',$user=null) { 
    737                         $quota_usada=0; 
    738                         $contexts = array($context); 
    739                         $usuarios = $this->get_list('accounts', '', $contexts); 
    740  
    741                         if($app=='expressoMail') { 
    742                                 $imap_functions = new imap_functions();  
    743                                 foreach($usuarios as $usuario) { 
    744                                         $temp = $imap_functions->get_user_info($usuario['account_lid']); 
    745                                         if($temp['mailquota'] != -1) //Usuï¿œrio sem cota nï¿œo conta... 
    746                                                 $quota_usada += ($temp['mailquota'] / 1024); 
    747                                 } 
    748                         } 
    749                         else if($app=='FileManager'){ //FileManager 
    750                                 $uids = ''; 
    751                                 foreach($usuarios as $usuario) { 
    752                                         if($usuario['account_lid']!=$user) 
    753                                                 $uids.="'/home/".$usuario['account_lid']."',"; 
    754                                 } 
    755                                 $uids.="'a'"; //hack the last comma 
    756                                 $query = "select 1 as num,sum(quota_size) as quota from phpgw_vfs_quota where directory in ($uids) group by num"; 
    757                                 $GLOBALS['phpgw']->db->query($query); 
    758                                 if($GLOBALS['phpgw']->db->next_record()) 
    759                                 { 
    760                                         $result = $GLOBALS['phpgw']->db->row(); 
    761                                         $quota_usada = $result["quota"]; 
    762                                 }                        
    763                         } 
    764                         return $quota_usada; 
    765                 } 
    766  
    767                 function get_sectors($selected='', $referral=false, $show_invisible_ou=true) 
    768                 { 
    769                         $s = CreateObject('phpgwapi.sector_search_ldap'); 
    770                         $sectors_info = $s->get_sectors($selected, $referral, $show_invisible_ou); 
    771                         return $sectors_info; 
    772                 }                
    773   
    774                 // Get list of all levels, this function is used for sectors module. 
    775                 function get_sectors_list($contexts) 
    776                 { 
    777                         $a_sectors = array(); 
    778                          
    779                         $dn                     = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 
    780                         $passwd         = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 
    781                         $ldap_conn      = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 
    782                          
    783                         ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 
    784                         ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 
    785                         ldap_bind($ldap_conn,$dn,$passwd); 
    786                          
    787                         $justthese = array("dn"); 
    788                         $filter = "(objectClass=organizationalUnit)"; 
    789                          
    790                         $systemName = strtolower($GLOBALS['phpgw_info']['server']['system_name']); 
    791                         if ($systemName != '') 
    792                                 $filter = "(&$filter(phpgwSystem=$systemName))"; 
    793                          
    794                         foreach ($contexts as $context) 
    795                         { 
    796                                 $search=ldap_search($ldap_conn, $context, $filter, $justthese); 
    797                         $info = ldap_get_entries($ldap_conn, $search); 
    798                         for ($i=0; $i<$info["count"]; $i++) 
    799                     { 
    800                         $a_sectors[] = $info[$i]['dn'];  
    801                     } 
    802                         } 
    803                  
    804                         ldap_close($ldap_conn); 
    805  
    806                         // Retiro o count do array info e inverto o array para ordenação. 
    807                 foreach ($a_sectors as $context) 
    808             { 
    809                                 $array_dn = ldap_explode_dn ( $context, 1 ); 
    810  
    811                 $array_dn_reverse  = array_reverse ( $array_dn, true ); 
    812  
    813                                 // Retirar o indice count do array. 
    814                                 array_pop ( $array_dn_reverse ); 
    815  
    816                                 $inverted_dn[$context] = implode ( "#", $array_dn_reverse ); 
    817                         } 
    818  
    819                         // Ordenação 
    820                         natcasesort($inverted_dn); 
    821                          
    822                         // Construção do select 
    823                         $level = 0; 
    824                         $options = array(); 
    825                         foreach ($inverted_dn as $dn=>$invert_ufn) 
    826                         { 
    827                 $display = ''; 
    828  
    829                 $array_dn_reverse = explode ( "#", $invert_ufn ); 
    830                 $array_dn  = array_reverse ( $array_dn_reverse, true ); 
    831  
    832                 $level = count( $array_dn ) - (int)(count(explode(",", $GLOBALS['phpgw_info']['server']['ldap_context'])) + 1); 
    833  
    834                 if ($level == 0) 
    835                         $display .= '+'; 
    836                 else  
    837                 { 
    838                                         for ($i=0; $i<$level; $i++) 
    839                                                 $display .= '---'; 
    840                 } 
    841  
    842                 reset ( $array_dn ); 
    843                 $display .= ' ' . (current ( $array_dn ) ); 
     549                $display .= ' ' . (current ( $array_dn )); 
    844550                                 
    845551                                $dn = trim(strtolower($dn)); 
     
    903609                        else 
    904610                                return $groups_id; 
    905                 } 
    906                 function make_list_personal_data_fields($account_lid, $acl = '') 
    907                 { 
    908                         // Sem restrição nenhuma na edição dos campos pessoais  => $acl=0; 
    909                         // Com restrição apenas na edição do Tel. Comercial     => $acl=1; 
    910                         // Com restrição apenas na edição do Tel. Celular               => $acl=2; 
    911                         // Com restrição na edição do Tel. Comercial e Celular  => $acl=3;                       
    912                         // Com restricao apenas na edicao do Tel. Residencial   => $acl=4; 
    913                         // .... 
    914                         // Com restricao de edição em todos os campos pessoais  => $acl=7; 
    915                          
    916                         $personal_data_fields = array(   
    917                                         array("text" => lang("%1 telephone number", lang("Commercial")) , "acl" => 1), 
    918                                         array("text" => lang("%1 telephone number", lang("Mobile"))             , "acl" => 2), 
    919                                         array("text" => lang("%1 telephone number", lang("Home Phone"))         , "acl" => 4), 
    920                                         array("text" => lang("Birthday")                                                                , "acl" => 8)); 
    921                         $list_personal_data = "<tr>"; 
    922                                                  
    923                         foreach($personal_data_fields as $i => $data_field)     { 
    924                                 $checked = ($data_field['acl'] & $acl) ? "CHECKED" : ""; 
    925                                 $list_personal_data .= "<td align=right bgcolor='#DDDDDD'>{$data_field['text']}</td>". 
    926                                 "<td bgcolor='#DDDDDD' width='10'><input type='checkbox' name='acl_block_personal_data[]'". 
    927                                 " value='{$data_field['acl']}' $checked></td>"; 
    928                         } 
    929                         $list_personal_data .= "</tr>"; 
    930                         return $list_personal_data; 
    931611                } 
    932612                 
     
    1116796                        return $array_langs; 
    1117797                } 
     798 
     799      
     800          
     801         function normalize_calendar_acl($acl) 
     802         { 
     803             $return = ''; 
     804 
     805             if($this->safeBitCheck(1, $acl)) 
     806                $return .= '1-'; 
     807             if($this->safeBitCheck(2, $acl)) 
     808                $return .= '2-'; 
     809             if($this->safeBitCheck(4, $acl)) 
     810                $return .= '4-'; 
     811             if($this->safeBitCheck(8, $acl)) 
     812                $return .= '8-'; 
     813             if($this->safeBitCheck(16, $acl)) 
     814                $return .= '16-'; 
     815              
     816             return $return; 
    1118817        } 
     818} 
    1119819         
    1120820        class sectors_object 
  • trunk/expressoAdmin1_2/inc/class.group.inc.php

    r3396 r5133  
    135135                                $return['msg'] .= $result['msg']; 
    136136                        } 
    137                         // PERSONAL DATA FIELDS TO BLOCK. 
    138                         if(is_array($params['acl_block_personal_data'])){ 
    139                                 $acl_personal_data = 0; 
    140                                 foreach($params['acl_block_personal_data'] as $i => $data_field){ 
    141                                         $acl_personal_data |= intval($data_field); 
    142                                 } 
    143                                 $this->db_functions->save_acl_personal_data($id, $acl_personal_data, 'add'); 
    144                         } 
    145137                         
    146138                        if ($return['status'] == true) 
     
    428420                        } 
    429421                        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    430                         // PERSONAL DATA FIELDS TO BLOCK. 
    431                         $old_acl_personal_data = intval($old_values['acl_block_personal_data']); 
    432                         $new_acl_personal_data = 0; 
    433                         if(is_array($new_values['acl_block_personal_data'])){                            
    434                                 foreach($new_values['acl_block_personal_data'] as $i => $data_field){ 
    435                                         $new_acl_personal_data |= intval($data_field); 
    436                                 } 
    437                         } 
    438                         if($new_acl_personal_data != $old_acl_personal_data){ 
    439                                 if($new_acl_personal_data > 0 && $old_acl_personal_data == 0) { 
    440                                         $this->db_functions->save_acl_personal_data($new_values['gidnumber'], $new_acl_personal_data, 'add'); 
    441                                         $this->db_functions->write_log("added ACL block personal data to group","dn:$dn -> acl: $new_acl_personal_data"); 
    442                                 } 
    443                                 elseif($new_acl_personal_data == 0 && $old_acl_personal_data > 0){ 
    444                                         $this->db_functions->save_acl_personal_data($new_values['gidnumber'], $new_acl_personal_data, 'remove'); 
    445                                         $this->db_functions->write_log("removed ACL block personal data to group","dn:$dn"); 
    446                                 } 
    447                                 else{ 
    448                                         $this->db_functions->save_acl_personal_data($new_values['gidnumber'], $new_acl_personal_data); 
    449                                         $this->db_functions->write_log("changed ACL block personal data to group","dn:$dn ->  acl: $old_acl_personal_data => $new_acl_personal_data"); 
    450                                 } 
    451                         } 
    452422                         
    453423                        return $return; 
     
    455425                 
    456426                 
    457                 function get_info($gidnumber,$use_global_context=false) 
    458                 { 
    459                         $group_info_ldap = $this->ldap_functions->get_group_info($gidnumber,$use_global_context); 
    460                         $group_info_db = $this->db_functions->get_group_info($gidnumber,$use_global_context); 
     427                function get_info($gidnumber) 
     428                { 
     429                        $group_info_ldap = $this->ldap_functions->get_group_info($gidnumber); 
     430                        $group_info_db = $this->db_functions->get_group_info($gidnumber); 
    461431                         
    462432                        $group_info = array_merge($group_info_ldap, $group_info_db); 
  • trunk/expressoAdmin1_2/inc/class.imap_functions.inc.php

    r4059 r5133  
    2323                $this->imap_server      = $_SESSION['phpgw_info']['expresso']['email_server']['imapServer']; 
    2424                $this->imap_port        = $_SESSION['phpgw_info']['expresso']['email_server']['imapPort']; 
    25                 $this->imap_createspamfolder    = $_SESSION['phpgw_info']['expresso']['email_server']['imapCreateSpamFolder']; 
    26                 $this->imap_cyrususerspam = $_SESSION['phpgw_info']['expresso']['email_server']['imapCyrusUserPostSpam'] ? $_SESSION['phpgw_info']['expresso']['email_server']['imapCyrusUserPostSpam'] : "anonymous"; 
    2725                $this->imap_trashfolder  = $_SESSION['phpgw_info']['expresso']['email_server']['imapDefaultTrashFolder']  ? $_SESSION['phpgw_info']['expresso']['email_server']['imapDefaultTrashFolder']  : str_replace("*","", $this->functions->lang("trash")); 
    2826                $this->imap_sentfolder   = $_SESSION['phpgw_info']['expresso']['email_server']['imapDefaultSentFolder']   ? $_SESSION['phpgw_info']['expresso']['email_server']['imapDefaultSentFolder']   : str_replace("*","", $this->functions->lang("sent")); 
     
    7068                        return $result; 
    7169                } 
    72                 if (!empty($this->imap_spamfolder) && $this->imap_createspamfolder == 'yes') 
     70                /* Esperando correção do william (prognus) sobre a utilização do DSPAM 
     71                if (!empty($this->imap_sentfolder)) 
    7372                { 
    7473                    if (!imap_createmailbox($this->imap, '{'.$this->imap_server.'}' . "user" . $this->imapDelimiter . $uid . $this->imapDelimiter . $this->imap_spamfolder)) 
     
    7877                            $result['msg'] = $this->functions->lang('Error on function') . " imap_functions->create(".$this->imap_spamfolder."):" . $error[0]; 
    7978                            return $result; 
    80                         } else { 
    81                                 imap_setacl($this->imap, "user" . $this->imapDelimiter . $uid.  $this->imapDelimiter . $this->imap_spamfolder , $this->imap_cyrususerspam, 'p');                         
    8279         } 
    8380                }                
     81                */ 
    8482 
    8583                if (!imap_set_quota($this->imap,"user" . $this->imapDelimiter . $uid, ($mailquota*1024)))  
     
    9795        function get_user_info($uid) 
    9896        { 
    99                 $get_quota = @imap_get_quota($this->imap,"user" . $this->imapDelimiter . $uid); 
     97                $get_quota = @imap_get_quotaroot($this->imap,"user" . $this->imapDelimiter . $uid); 
    10098                 
    10199                if (count($get_quota) == 0) 
     
    148146                $result['status'] = true; 
    149147 
    150                 if (!$quota = @imap_get_quota($this->imap, 'user' . $this->imapDelimiter . $old_mailbox)) 
     148                if (!$quota = @imap_get_quotaroot($this->imap, 'user' . $this->imapDelimiter . $old_mailbox)) 
    151149                { 
    152150                                $result['status'] = false; 
     
    253251                                $result['inbox_size'] = $inbox_size; 
    254252                                 
    255                                 $get_user_quota = @imap_get_quota($this->imap,"user" . $this->imapDelimiter . $uid); 
     253                                $get_user_quota = @imap_get_quotaroot($this->imap,"user" . $this->imapDelimiter . $uid); 
    256254                                $result['mailquota_used'] = (string)(round(($get_user_quota['usage']/1024), 2)); 
    257255                        } 
     
    317315                        } 
    318316                } 
     317 
     318                if( $result['status'] ) 
     319                    $this->sendACLAdvice( $user, $acl, $mailbox ); 
     320 
    319321                return $result; 
    320322        } 
     
    373375                                return $result; 
    374376            } 
    375             file_put_contents("/tmp/saida", "old ".print_r($owners_acl_old, true)."remove ".print_r($owners_to_remove, true)."add ".print_r($owners_to_add, true)."update ".print_r($owners_to_update, true)); 
     377            //file_put_contents("/tmp/saida", "old ".print_r($owners_acl_old, true)."remove ".print_r($owners_to_remove, true)."add ".print_r($owners_to_add, true)."update ".print_r($owners_to_update, true)); 
    376378            if( is_array($owners_acl_new)){ 
    377379                foreach($owners_to_remove as $user => $acl){ 
     
    397399            return $result; 
    398400        } 
     401         
     402        function sendACLAdvice( $user, $acls, $shared_account ) 
     403        { 
     404            //acl treat 
     405            $acl_labels = array( 'lrs' => 'read messages from this shared account', 
     406                                 'd' => 'delete/move messages from this shared account', 
     407                                 'wi' => 'create/add messages in this shared account', 
     408                                 'a' => 'send message by this shared account', 
     409                                 'p' => 'save sent messages in this shared account', 
     410                                 'c' => 'create or delete folders on this shared account' ); 
     411 
     412            $acl_found = array(); 
     413 
     414            foreach( $acl_labels as $acl => $label ) 
     415            { 
     416                if( strpos( $acls, $acl ) !== false ) 
     417                { 
     418                    $acl_found[] = $this->functions->lang( $label ); 
     419                } 
     420            } 
     421 
     422            $acl = implode( "<br/>", $acl_found ); 
     423 
     424            if( empty( $acl ) ) 
     425            return; 
     426 
     427            //body mail template generation 
     428            $body = $this->getTemplate( "body_email.tpl", array( "user" => $user, 
     429                                                                 "acl" => $acl, 
     430                                                                 "shared_account" => $shared_account ) ); 
     431 
     432            //ldap fetch mail to 
     433            require_once('class.ldap_functions.inc.php'); 
     434 
     435            if( !$ldap ) 
     436            { 
     437                $ldap = new ldap_functions(); 
     438            } 
     439 
     440            $to = $ldap->uid2mailforwardingaddress( $user ); 
     441            $to = $to['mail']; 
     442 
     443            //mail send service 
     444            $mail = ServiceLocator::getService( 'mail' ); 
     445            $mail->sendMail( $to, false, $this->functions->lang("Your user was add/updated in the shared account"), $body ); 
     446        } 
     447 
     448        function getTemplate( $tpls, $macros, $target = false ) 
     449        { 
     450            require_once( ROOT.'header.inc.php' ); 
     451 
     452            $template = CreateObject( 'phpgwapi.Template', PHPGW_APP_TPL ); 
     453 
     454            if( !is_array( $tpls ) ) 
     455            { 
     456                $tpls = array( $tpls ); 
     457            } 
     458 
     459            $keys = array_keys( $tpls ); 
     460 
     461            if( !array_diff_key( $tpl, array_keys( $keys ) ) ) 
     462            { 
     463                $newTpls = array(); 
     464 
     465                foreach( $tpls as $tpl ) 
     466                { 
     467                    $key = basename( $tpl ); 
     468 
     469                    $dot = strrpos( $key, '.' ); 
     470 
     471                    if( $dot !== false ) 
     472                    { 
     473                        $key = substr( $key, 0, $dot ); 
     474                    } 
     475 
     476                    $newTpls[ $key ] = $tpl; 
     477                } 
     478 
     479                $tpls = $newTpls; 
     480 
     481                $keys = array_keys( $tpls ); 
     482            } 
     483 
     484            $template->set_file( $tpls ); 
     485 
     486            $target = $target ? $tpls[ $target ] : $keys[0]; 
     487 
     488            $template->set_var( $this->functions->make_dinamic_lang( $template, $target ) ); 
     489            $template->set_var( $macros ); 
     490 
     491            return $template->fp( 'out', $target ); 
     492        } 
    399493} 
  • trunk/expressoAdmin1_2/inc/class.institutional_accounts.inc.php

    r414 r5133  
    3232                                } 
    3333                                $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 
     34                                $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 
    3435                                $GLOBALS['phpgw']->js->validate_file('jscode','institutional_accounts','expressoAdmin1_2'); 
    3536                                $GLOBALS['phpgw']->js->validate_file('modal','modal','expressoAdmin1_2'); 
  • trunk/expressoAdmin1_2/inc/class.ldap_functions.inc.php

    r3530 r5133  
    44include_once(PHPGW_API_INC.'/class.common.inc.php'); 
    55include_once('class.functions.inc.php'); 
     6include_once('class.db_functions.inc.php'); 
    67 
    78function ldapRebind($ldap_connection, $ldap_url) 
     
    2223        var $functions; 
    2324        var $manager_contexts; 
     25        var $db_functions; 
    2426         
    2527        function ldap_functions(){               
     
    4143                } 
    4244                 
     45                $this->db_functions = new db_functions(); 
    4346                $this->functions = new functions; 
    4447                $manager_acl = $this->functions->read_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid']); 
     
    4649        } 
    4750 
    48         function create_shared_accounts($params) 
    49                 { 
    50                         /* Begin: Access verification */ 
    51                          
    52                         if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'add_shared_accounts')) 
     51        function noAccess( $context, $target, $label = false ) 
     52                { 
     53            if( !$label ) 
     54                $label = str_replace( '_', ' ', $target ); 
     55                         
     56            if (!$this->functions->check_acl( $_SESSION['phpgw_info']['expresso']['user']['account_lid'], $target )) 
    5357                        { 
    5458                                $return['status'] = false; 
    55                                 $return['msg'] = $this->functions->lang('You do not have right to create shared accounts') . "."; 
     59                $return['msg'] = $this->functions->lang("You do not have right to $label") . "."; 
    5660                                return $return; 
    5761                        } 
    5862                         
    5963                        $access_granted = false; 
     64 
    6065                        foreach ($this->manager_contexts as $idx=>$manager_context) 
    6166                        { 
    62                                 if (stristr($params['context'], $manager_context)) 
     67                    if (stristr($context, $manager_context)) 
    6368                                { 
    6469                                        $access_granted = true; 
     
    7378                                return $return; 
    7479                        }                        
     80 
     81            return( false ); 
     82        } 
     83         
     84        function create_institutional_accounts($params) 
     85        { 
     86                /* Begin: Access verification */ 
     87                $forbidden = $this->noAccess( $params['context'], 'add_institutional_accounts', 'create institutional accounts' ); 
     88 
     89                if( $forbidden ) 
     90                    return( $forbidden ); 
     91//              if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'add_institutional_accounts')) 
     92//              { 
     93//                      $return['status'] = false; 
     94//                      $return['msg'] = $this->functions->lang('You do not have right to create institutional accounts') . "."; 
     95//                      return $return; 
     96//              } 
     97//               
     98//              $access_granted = false; 
     99//              foreach ($this->manager_contexts as $idx=>$manager_context) 
     100//              { 
     101//                      if (stristr($params['context'], $manager_context)) 
     102//                      { 
     103//                              $access_granted = true; 
     104//                              break; 
     105//                      } 
     106//              } 
     107//              if (!$access_granted) 
     108//              { 
     109//                      $return['status'] = false; 
     110//                      $return['msg'] = $this->functions->lang('You do not have access to this organization') . "."; 
     111//                      return $return; 
     112//              } 
    75113                        /* End: Access verification */ 
    76114         
     115                /* Begin: Validation */ 
     116                if ( (empty($params['cn'])) || (empty($params['mail'])) ) 
     117                { 
     118                        $result['status'] = false; 
     119                        $result['msg']  = $this->functions->lang('Field mail or name is empty'); 
     120                        return $result; 
     121                } 
     122 
     123                if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) ) 
     124                { 
     125                        $result['status'] = false; 
     126                        $result['msg']  = $this->functions->lang('Field mail is not formed correcty') . '.'; 
     127                        return $result; 
     128                } 
     129 
     130                $uid = 'institutional_account_' . $params['mail']; 
     131                $dn = "uid=$uid," . $params['context']; 
     132 
     133                $filter = "(mail=".$params['mail'].")"; 
     134                $justthese = array("cn"); 
     135                $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
     136                $entries = @ldap_get_entries($this->ldap,$search); 
     137                if ($entries['count'] != 0) 
     138                { 
     139                        $result['status'] = false; 
     140                        $result['msg'] = $this->functions->lang('Field mail already in use'); 
     141                        return $result; 
     142                } 
     143                /* End: Validation */ 
     144                                                 
     145                $info = array(); 
     146                $info['cn']                                     = $params['cn']; 
     147                $info['sn']                                     = $params['cn']; 
     148                $info['uid']                            = $uid; 
     149                $info['mail']                           = $params['mail']; 
     150                $info['description']            = iconv("ISO-8859-1","UTF-8//TRANSLIT",$params['desc']); 
     151                $info['phpgwAccountType']       = 'i'; 
     152                $info['objectClass'][]          = 'inetOrgPerson'; 
     153                $info['objectClass'][]          = 'phpgwAccount'; 
     154                $info['objectClass'][]          = 'top'; 
     155                $info['objectClass'][]          = 'person'; 
     156                $info['objectClass'][]          = 'qmailUser'; 
     157                $info['objectClass'][]          = 'organizationalPerson'; 
     158                 
     159                if ($params['accountStatus'] == 'on') 
     160                { 
     161                        $info['accountStatus'] = 'active'; 
     162                } 
     163                if ($params['phpgwAccountVisible'] == 'on') 
     164                { 
     165                        $info['phpgwAccountVisible'] = '-1'; 
     166                } 
     167                 
     168                if (!empty($params['owners'])) 
     169                { 
     170                        foreach($params['owners'] as $index=>$uidnumber) 
     171                        { 
     172                                $info['mailForwardingAddress'][] = $this->uidnumber2mail($uidnumber); 
     173                        } 
     174                }                
     175                 
     176                $result = array(); 
     177                if (!@ldap_add ( $this->ldap, $dn, $info )) 
     178                { 
     179                        $result['status'] = false; 
     180                        $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->create_institutional_accounts'; 
     181                        $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
     182                } 
     183                else 
     184                        $result['status'] = true; 
     185                 
     186                return $result; 
     187        } 
     188         
     189        function save_institutional_accounts($params) 
     190        { 
     191                /* Begin: Access verification */ 
     192                $forbidden = $this->noAccess( $params['context'], 'edit_institutional_accounts' ); 
     193 
     194                if( $forbidden ) 
     195                    return( $forbidden ); 
     196//              if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'edit_institutional_accounts')) 
     197//              { 
     198//                      $return['status'] = false; 
     199//                      $return['msg'] = $this->functions->lang('You do not have right to edit institutional accounts') . "."; 
     200//                      return $return; 
     201//              } 
     202//              $access_granted = false; 
     203//              foreach ($this->manager_contexts as $idx=>$manager_context) 
     204//              { 
     205//                      if (stristr($params['context'], $manager_context)) 
     206//                      { 
     207//                              $access_granted = true; 
     208//                              break; 
     209//                      } 
     210//              } 
     211//              if (!$access_granted) 
     212//              { 
     213//                      $return['status'] = false; 
     214//                      $return['msg'] = $this->functions->lang('You do not have access to this organization') . "."; 
     215//                      return $return; 
     216//              } 
     217                /* End: Access verification */ 
    77218                                 
    78219                        /* Begin: Validation */ 
     
    80221                        { 
    81222                                $result['status'] = false; 
     223                        $result['msg']  = $this->functions->lang('Field mail or name is empty') . '.'; 
     224                        return $result; 
     225                } 
     226 
     227                if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) ) 
     228                { 
     229                        $result['status'] = false; 
     230                        $result['msg']  = $this->functions->lang('Field mail is not formed correcty') . '.'; 
     231                        return $result; 
     232                } 
     233 
     234                $uid = 'institutional_account_' . $params['mail']; 
     235                $dn = strtolower("uid=$uid," . $params['context']); 
     236                $anchor = strtolower($params['anchor']); 
     237 
     238                $filter = "(mail=".$params['mail'].")"; 
     239                $justthese = array("cn"); 
     240                $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
     241                $entries = @ldap_get_entries($this->ldap,$search); 
     242                 
     243                if ( ($entries['count'] > 1) || (($entries['count'] == 1) && ($entries[0]['dn'] != $anchor)) ) 
     244                { 
     245                        $result['status'] = false; 
     246                        $result['msg'] = $this->functions->lang('Field mail already in use.'); 
     247                        return $result; 
     248                } 
     249                /* End: Validation */ 
     250                 
     251                $result = array(); 
     252                $result['status'] = true; 
     253                 
     254                if ($anchor != $dn) 
     255                { 
     256                        if (!@ldap_rename($this->ldap, $anchor, "uid=$uid", $params['context'], true)) 
     257                        { 
     258                                $result['status'] = false; 
     259                                $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->save_institutional_accounts: ldap_rename'; 
     260                                $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
     261                        } 
     262                } 
     263                 
     264                $info = array(); 
     265                $info['cn']                                     = $params['cn']; 
     266                $info['sn']                                     = $params['cn']; 
     267                $info['uid']                            = $uid; 
     268                $info['mail']                           = $params['mail']; 
     269                 
     270                if ($params['accountStatus'] == 'on') 
     271                        $info['accountStatus'] = 'active'; 
     272                else 
     273                        $info['accountStatus'] = array(); 
     274                 
     275                if ($params['phpgwAccountVisible'] == 'on') 
     276                        $info['phpgwAccountVisible'] = '-1'; 
     277                else 
     278                        $info['phpgwAccountVisible'] = array(); 
     279                 
     280                if ($params['desc'] != '') 
     281                        $info['description'] = utf8_encode($params['desc']); 
     282                else 
     283                        $info['description'] = array(); 
     284                 
     285                if (!empty($params['owners'])) 
     286                { 
     287                        foreach($params['owners'] as $index=>$uidnumber) 
     288                        { 
     289                                $mailForwardingAddress = $this->uidnumber2mail($uidnumber); 
     290                                if ($mailForwardingAddress != '') 
     291                                        $info['mailForwardingAddress'][] = $mailForwardingAddress; 
     292                        } 
     293                } 
     294                else 
     295                        $info['mailForwardingAddress'] = array(); 
     296                 
     297                if (!@ldap_modify ( $this->ldap, $dn, $info )) 
     298                { 
     299                        $result['status'] = false; 
     300                        $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->save_institutional_accounts: ldap_modify'; 
     301                        $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
     302                } 
     303 
     304                return $result; 
     305        } 
     306 
     307        function save_shared_accounts($params) 
     308        { 
     309                /* Begin: Access verification */ 
     310                $forbidden = $this->noAccess( $params['context'], 'edit_shared_accounts' ); 
     311 
     312                if( $forbidden ) 
     313                    return $forbidden; 
     314                 
     315                /* Begin: Validation */ 
     316                if(!$params['desc']) 
     317                { 
     318                    $result['status'] = false; 
     319                    $result['msg']  = $this->functions->lang('Field description is empty');     return $result; 
     320 
     321                } 
     322 
     323                if ( (empty($params['cn'])) || (empty($params['mail'])) ) 
     324                { 
     325                        $result['status'] = false; 
     326                        $result['msg']  = $this->functions->lang('Field mail or name is empty') . '.'; 
     327                        return $result; 
     328                } 
     329 
     330                if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) ) 
     331                { 
     332                        $result['status'] = false; 
     333                        $result['msg']  = $this->functions->lang('Field mail is not formed correcty') . '.'; 
     334                        return $result; 
     335                }                        
     336 
     337                $dnReal = "uid=".$params['uid']."," . $params['context']; 
     338                $dn = strtolower("uid=".$params['uid']."," . $params['context']); 
     339                $anchor = strtolower($params['anchor']); 
     340 
     341                 
     342                $filter = "(mail=".$params['mail'].")"; 
     343                $justthese = array("cn","uidnumber"); 
     344                $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
     345                $entries = @ldap_get_entries($this->ldap,$search); 
     346 
     347                //DEBUG: Alteracao para compatibilizar com LDAP da CAIXA. 
     348                // estas funcoes do ExpressoAdmin nao levam em consideracao o DN do objeto encontrado 
     349                // e o "codigo" assume que o DN comeca com UID quando na CAIXA comeca com CN. 
     350 
     351                // Se for encontrado somente um objeto e este estiver diferente do ANCHOR, entao pega o DN  
     352                // do resultado da busca 
     353                if ( ($entries['count'] == 1) && (utf8_decode($entries[0]['dn']) != $anchor) ) 
     354                { 
     355                        // Forca o DN 
     356                        $dn = strtolower (utf8_decode($entries[0]['dn'])); 
     357                        $dnReal = $entries[0]['dn']; 
     358                        $anchor = $dn; 
     359                } 
     360                 
     361                if ( ($entries['count'] > 1) || (($entries['count'] == 1) && (strtolower(utf8_decode($entries[0]['dn'])) != $anchor)) ) 
     362                { 
     363                        $result['status'] = false; 
     364                        $result['msg'] = $this->functions->lang('Field mail already in use.'); 
     365                        return $result; 
     366                } 
     367                /* End: Validation */ 
     368 
     369                $result = array(); 
     370                $result['status'] = true;               
     371 
     372                if ($anchor != $dn) 
     373                { 
     374                        if (!@ldap_rename($this->ldap, $params['anchor'], "uid=$params[uid]", $params['context'], true)) 
     375                        { 
     376                                $result['status'] = false; 
     377                                $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->save_shared_accounts: ldap_rename'; 
     378                                $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
     379                        } 
     380                } 
     381                 
     382                $info = array(); 
     383                $info['cn']             = utf8_encode($params['cn']); 
     384                $info['sn']             = utf8_encode($params['cn']); 
     385                $info['uid']            = $params['uid']; 
     386                $info['mail']           = $params['mail']; 
     387 
     388 
     389                $del = array(); 
     390 
     391                if( $params['mailalternateaddress'] ) 
     392                        $info['mailalternateaddress'] = $params['mailalternateaddress']; 
     393                else 
     394                    $del['mailalternateaddress'] = array(); 
     395 
     396                if ($params['accountStatus'] == 'on') 
     397                        $info['accountStatus'] = 'active'; 
     398                else 
     399                        $info['accountStatus'] = array(); 
     400                 
     401                if ($params['phpgwAccountVisible'] == 'on') 
     402                        $info['phpgwAccountVisible'] = '-1'; 
     403                else 
     404                        $info['phpgwAccountVisible'] = array(); 
     405                 
     406                if ($params['desc'] != '') 
     407                        $info['description'] = utf8_encode($params['desc']); 
     408                else 
     409                        $info['description'] = array(); 
     410 
     411                ldap_set_option ($this->ldap, LDAP_OPT_PROTOCOL_VERSION, 3); 
     412 
     413                if( !empty( $del ) ) 
     414                    @ldap_mod_del( $this->ldap, $dnReal, $del ); 
     415 
     416                if (!@ldap_modify ( $this->ldap,$dnReal, $info )) 
     417                { 
     418                        $result['status'] = false; 
     419                        $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->save_shared_accounts: ldap_modify'; 
     420                        $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
     421                } 
     422                //print_r($info);echo "Teste $dn".$result['msg'];exit(); 
     423                return $result; 
     424        } 
     425 
     426        function create_shared_accounts($params) 
     427        { 
     428                /* Begin: Access verification */ 
     429 
     430                $forbidden = $this->noAccess( $params['context'], 'add_shared_accounts', 'create shared accounts' ); 
     431 
     432                if( $forbidden ) 
     433                    return( $forbidden ); 
     434 
     435                /* End: Access verification */ 
     436 
     437                         
     438                /* Begin: Validation */ 
     439 
     440                if(!$params['desc']) 
     441                { 
     442                    $result['status'] = false; 
     443                    $result['msg']  = $this->functions->lang('Field description is empty');     return $result; 
     444 
     445                } 
     446 
     447                if ( (empty($params['cn'])) || (empty($params['mail'])) ) 
     448                { 
     449                        $result['status'] = false; 
    82450                                $result['msg']  = $this->functions->lang('Field mail or name is empty');        return $result; 
    83451                        } 
     
    96464                        if ($entries['count'] != 0) 
    97465                        { 
    98                                 $result['status'] = false; 
    99                                 $result['msg'] = $this->functions->lang('Field mail already in use'); 
    100                                 return $result; 
    101                         } 
     466                        $result['status'] = false; 
     467                        $result['msg'] = $this->functions->lang('Field mail already in use'); 
     468                        return $result; 
     469                } 
     470 
     471                // Leio o ID a ser usado na criação do objecto. Esta função já incrementa o ID no BD. 
     472                $next_id = ($this->db_functions->get_next_id('accounts')); 
     473                if ((!is_numeric($next_id['id'])) || (!$next_id['status'])) 
     474                { 
     475                        $return['status'] = false; 
     476                        $return['msg'] = $this->functions->lang('problems getting user id') . ".\n" . $id['msg']; 
     477                        return $return; 
     478                } 
     479                else 
     480                { 
     481                        $id = $next_id['id']; 
     482                        } 
     483 
    102484                        /* End: Validation */ 
    103485                                                         
    104486                        $info = array(); 
    105                         $info['cn']                                     = $params['cn']; 
    106                         $info['sn']                                     = $params['cn']; 
     487                $info['cn']                                     = utf8_encode($params['cn']); 
     488                $info['sn']                                     = utf8_encode($params['cn']); 
     489                $info['uidnumber']                                      = $id; 
     490                $info['homeDirectory']                          = '/dev/null'; 
     491                $info['gidNumber']                                      = '1000'; 
    107492                        $info['uid']                            = $params['uid']; 
    108493                        $info['mail']                           = $params['mail']; 
    109494                        $info['description'] = utf8_encode($params['desc']);                     
    110495                        $info['phpgwAccountType']       = 's'; 
    111                         $info['objectClass'][]          = 'inetOrgPerson'; 
    112                         $info['objectClass'][]          = 'phpgwAccount'; 
    113                         $info['objectClass'][]          = 'top'; 
    114                         $info['objectClass'][]          = 'person'; 
    115                         $info['objectClass'][]          = 'qmailUser'; 
    116                         $info['objectClass'][]          = 'organizationalPerson'; 
     496                $info['objectClass'][0]         = 'inetOrgPerson'; 
     497                $info['objectClass'][1]         = 'phpgwAccount'; 
     498                $info['objectClass'][2]         = 'top'; 
     499                $info['objectClass'][3]         = 'person'; 
     500                $info['objectClass'][4]         = 'qmailUser'; 
     501                $info['objectClass'][5]         = 'organizationalPerson'; 
     502                $info['objectClass'][6]         = 'posixAccount'; 
    117503                         
    118504                        if ($params['accountStatus'] == 'on') 
     
    124510                                $info['phpgwAccountVisible'] = '-1'; 
    125511                        } 
     512                if( !empty( $params['mailalternateaddress'] ) ) 
     513                        $info['mailalternateaddress'] = $params['mailalternateaddress']; 
    126514                         
    127515                        /*if (!empty($params['owners'])) 
     
    338726                                */ 
    339727                                 
    340                                 $filter = "(objectClass=organizationalUnit)"; 
     728                                $filter = "(ou=*)"; 
    341729                                $justthese = array("ou"); 
    342730                                $search = ldap_list($ldap_connection2, $context, $filter, $justthese); 
     
    437825                                 
    438826                                        $filter = "(&(phpgwAccountType=u)(cpf=$cpf))"; 
    439                                         $justthese = array("cn","uid","mail"); 
     827                                        $justthese = array("cn","uid"); 
    440828                                        $search = ldap_search($local_ldap_connection, $context, $filter, $justthese); 
    441829                                        $entries = ldap_get_entries($local_ldap_connection,$search); 
    442830                                 
    443                                         if ( ($entries['count'] > 0 ) && (strcasecmp($uid, $entries[0]['uid'][0]) != 0) ) 
     831                                        if ( ($entries['count'] != 1) && (strcasecmp($uid, $entries[0]['uid'][0]) != 0) ) 
    444832                                        { 
    445833                                                if ($entries['count'] > 0) 
    446834                                                { 
    447                                                                 $entries_text = ""; 
     835                                                        $result['question'] = $this->functions->lang('Field CPF used by') . ":\n"; 
    448836                                                                for ($i=0; $i<$entries['count']; $i++) 
    449837                                                                        { 
    450838                                                                                if (strcasecmp($uid, $entries[$i]['uid'][0]) != 0) 
    451                                                                                         $entries_text .= $entries[$i]['cn'][0] ." - ".$entries[0]['uid'][0] ." - ".$entries[$i]['mail'][0]."\n"; 
     839                                                                        $result['question'] .= "- " . $entries[$i]['cn'][0] . "\n"; 
    452840                                                                        } 
    453                                                                 if ($this->current_config['expressoAdmin_deny_same_cpf'] == 'false' )  
    454                                                                 {                                                                
    455                                                                         $result['question']  = $this->functions->lang('Field CPF used by') . ":\n"; 
    456                                                                         $result['question'] .= $entries_text; 
    457841                                                                        $result['question'] .= $this->functions->lang("Do you want to continue anyway") . "?"; 
    458842                                                                        return $result; 
    459                                                                 } else { 
    460                                                                         $result['status'] = false; 
    461                                                                         $result['msg']  = $this->functions->lang('Field CPF cannot be duplicated') . ".\n"; 
    462                                                                         $result['msg'] .= $this->functions->lang('Field CPF used by') . ":\n"; 
    463                                                                         $result['msg'] .= $entries_text; 
    464                                                                         return $result; 
    465                                                                 }                                                                
    466                                                                          
    467843                                                } 
    468844                                        } 
     
    487863                $justthese = array("uid"); 
    488864                $i=1; 
    489                 $login = array("status" => False,"msg" => $this->functions->lang("Login generator disabled")); 
     865                $login = array("status" => False,"msg" => lang("Login generator disabled")); 
     866                 
    490867                if( (isset($this->current_config['expressoAdmin_loginGenScript'])) &&  
    491868                                ($this->current_config['expressoAdmin_loginGenScript'])) { 
     
    501878                                return array( 
    502879                                        "status" => False, 
    503                                         "msg" => $this->functions->lang("Login interface not implemented (contact suport)") 
     880                                        "msg" => lang("Login interface not implemented (contact suport)") 
    504881                                ); 
    505882                        } 
     
    6651042        } 
    6661043 
     1044        function get_available( $params, $justthese = false, $targetTypes = false ) 
     1045        { 
     1046            $search = $params['sentence'] ? $params['sentence'] : $params['filter']; 
     1047                 
     1048            if( !$justthese ) 
     1049                $justthese = array('cn', 'uidNumber','uid'); 
     1050         
     1051            if( !$targetTypes ) 
     1052                $targetTypes = 'u'; 
     1053         
     1054            $ldapService = ServiceLocator::getService('ldap'); 
     1055                         
     1056            $entries = $ldapService->accountSearch( $search, $justthese, $params['context'], $targetTypes, 'cn' ); 
     1057 
     1058            return( $entries ); 
     1059        } 
     1060                         
     1061        function get_options( $entries, $label, $value = false, $uid = false ) 
     1062                { 
     1063            if( !$value ) 
     1064                $value = $label; 
     1065 
     1066            $options = ''; 
     1067            foreach( $entries as  $entry ) 
     1068                        { 
     1069                if( $uid ) 
     1070                    $entry[$label] .= '('.$entry[$uid].')'; 
     1071 
     1072                $options .= '<option value='.$entry[$value].'>'.$entry[$label].'</option>'; 
     1073                } 
     1074 
     1075        return $options; 
     1076        } 
     1077         
     1078        function get_json( $entries, $label, $value = false, $uid = false ) 
     1079        { 
     1080            if( !$value ) 
     1081                $value = $label; 
     1082 
     1083            $options = array(); 
     1084 
     1085            foreach( $entries as  $entry ) 
     1086            { 
     1087                if( $uid ) 
     1088                    $entry[$label] .= '('.$entry[$uid].')'; 
     1089 
     1090                 $options[] = '"'.$entry[$value].'"'.':'.'"'.$entry[$label].'"'; 
     1091 
     1092                        } 
     1093 
     1094             return "{".implode(',',$options)."}"; 
     1095        } 
     1096 
     1097 
    6671098        //Busca usuários de um contexto e já retorna as options do select; 
    6681099        function get_available_users($params) 
    669         { 
    670                 $context = $params['context']; 
    671                 $recursive = $params['recursive']; 
    672                 $justthese = array("cn", "uidNumber"); 
    673                 $filter="(phpgwAccountType=u)"; 
    674                  
    675                 if ($recursive == 'true') 
    676                         $groups_list=ldap_search($this->ldap, $context, $filter, $justthese); 
    677                 else 
    678                 $groups_list=ldap_list($this->ldap, $context, $filter, $justthese); 
    679          
    680         $entries = ldap_get_entries($this->ldap, $groups_list); 
    681          
    682                 for ($i=0; $i<$entries["count"]; $i++){ 
    683                         $u_tmp[$entries[$i]["uidnumber"][0]] = $entries[$i]["cn"][0]; 
    684                 } 
    685                          
    686                 if (count($u_tmp)) 
    687                         natcasesort($u_tmp); 
    688  
    689                 $i = 0; 
    690                 $users = array(); 
    691                          
    692                 if (count($u_tmp)) 
    693                 { 
    694                         foreach ($u_tmp as $uidnumber => $cn) 
    695                         { 
    696                                 $options .= "<option value=$uidnumber>$cn</option>"; 
    697                         } 
    698                         unset($u_tmp); 
    699                 } 
    700  
    701         return $options; 
    702         } 
    703         //Busca usuarios de um contexto e ja retorna as options do select; 
     1100                                { 
     1101             $entries = $this->get_available($params ); 
     1102 
     1103//              $options = ''; 
     1104//              foreach ($entries as  $value) 
     1105//                  $options .= '<option value='.$value['uidnumber'].'>'.$value['cn'].'('.$value['uid'].')</option>'; 
     1106 
     1107             return $this->get_options( $entries, 'cn', 'uidnumber', 'uid' ); 
     1108        } 
     1109 
     1110        //Busca usuários e contas compartilhadas de um contexto e já retorna as options do select; 
     1111        function get_available_users_and_shared_acounts($params) 
     1112        { 
     1113             $entries = $this->get_available($params, array('cn', 'uidNumber','uid'), array('u','s') ); 
     1114//              $options = ''; 
     1115//              foreach ($entries as  $value) 
     1116//                  $options .= '<option value='.$value['uidnumber'].'>'.$value['cn'].'('.$value['uid'].')</option>'; 
     1117                 
     1118             return $this->get_options( $entries, 'cn', 'uidnumber', 'uid' ); 
     1119        } 
     1120                 
    7041121        function get_available_users2($params) 
    7051122        { 
    706                 $context= $params['context']; 
    707                 $justthese = array("cn", "uid"); 
    708                 $filter = "(&(phpgwaccounttype=u)(!(phpgwaccountvisible=-1)))"; 
    709  
    710             if ($this->ldap) 
    711             { 
    712                         $sr=ldap_search($this->ldap, $context, $filter, $justthese); 
    713                         $entries = ldap_get_entries($this->ldap, $sr);                   
    714  
    715                         for ($i=0; $i<$entries["count"]; $i++){                          
    716                                         $u_tmp[$entries[$i]["uid"][0]] = $entries[$i]["cn"][0]; 
    717                         } 
    718  
    719                         natcasesort($u_tmp); 
    720  
    721                         $i = 0; 
    722                         $users = array(); 
    723  
    724                         if (count($u_tmp)) 
    725                         { 
    726                                 foreach ($u_tmp as $uidnumber => $cn) 
    727                                 { 
    728                                         $options .= "<option value=$uidnumber>$cn</option>"; 
    729                                 } 
    730                                 unset($u_tmp); 
    731                         }                        
    732                 return $options; 
    733                 } 
    734         } 
     1123             $entries = $this->get_available($params, array('cn', 'uid') ); 
     1124                 
     1125//              $options = array(); 
     1126//              foreach ($entries as $value) 
     1127//                  $options[] = '"'.$value['uid'].'"'.':'.'"'.$value['cn'].'('.$value['uid'].')'.'"'; 
     1128                 
     1129             return $this->get_json( $entries, 'cn', 'uid', 'uid' ); 
     1130        } 
     1131 
     1132        function get_available_users3($params) 
     1133                { 
     1134             $ldapService = ServiceLocator::getService('ldap'); 
     1135             $groups = $ldapService->accountSearch($params['filter'], array('gidNumber','cn','uid'), $params['context'], 'g', 'cn'); 
     1136             $users = $ldapService->accountSearch($params['filter'], array('uidNumber','cn','uid'), $params['context'], 'u', 'cn'); 
     1137 
     1138             $user_options =''; 
     1139             $group_options =''; 
     1140             $user_options2 =''; 
     1141             $group_options2 =''; 
     1142 
     1143             foreach($groups as  $group) 
     1144             { 
     1145                $group_options .= '<option  value="'.$group['gidnumber'].'">'.$group['cn'].' ('.$group['gidnumber'].')</option>'."\n"; 
     1146                $group_options2 .= '<option  value="'.$group['gidnumber'].',G">'.$group['cn'].' ('.$group['gidnumber'].')</option>'."\n"; 
     1147                } 
     1148 
     1149             foreach($users as $user) 
     1150             { 
     1151                $user_options .= '<option  value="'.$user['uid'].'">'.$user['cn'].' ('.$user['uid'].')</option>'."\n"; 
     1152                $user_options2 .= '<option  value="'.$user['uid'].',U">'.$user['cn'].' ('.$user['uid'].')</option>'."\n"; 
     1153 
     1154             } 
     1155 
     1156            return array("users" => $user_options, "groups" => $group_options , "users2" => $user_options2, "groups2" => $group_options2); 
     1157        } 
     1158 
     1159        /** 
     1160         * @abstract Busca usuários de um contexto e retorna já formatado com as options do select. 
     1161         * @params array params com as informações do formulário com os dados do contexto e etc. 
     1162         * @return array com os usuários do contexto já com a formatação das options do select. 
     1163         */ 
     1164        function get_available_users_messages_size($params) 
     1165                        { 
     1166/*             $ldapService = ServiceLocator::getService('ldap'); 
     1167             $entries = $ldapService->accountSearch($params['sentence'], array('cn', 'uidNumber','uid'), $params['context'], 'u', 'cn'); 
     1168             $options = array(); 
     1169 
     1170             foreach ($entries as $value) 
     1171                 $options[] = '"'.$value['uid'].'"'.':'.'"'.$value['cn'].'('.$value['uid'].')'.'"';*/ 
     1172                  
     1173            $entries = $this->get_available( $params, array('cn', 'uid') ); 
     1174 
     1175             return $this->get_json( $entries, 'cn', 'uid','uid' ); 
     1176                        } 
     1177 
     1178        /** 
     1179         * @abstract Busca usuários e grupos de um contexto e retorna já formatado com as options do select. 
     1180         * @params array params com as informações do formulário com os dados do contexto e etc. 
     1181         * @return array com os usuários do contexto já com a formatação das options do select. 
     1182         */ 
     1183        function get_available_users_and_groups_messages_size($params) 
     1184        { 
     1185             $ldapService = ServiceLocator::getService('ldap'); 
     1186             $groups = $ldapService->accountSearch($params['sentence'], array('gidNumber','cn','uid'), $params['context'], 'g', 'cn'); 
     1187             $users = $ldapService->accountSearch($params['sentence'], array('cn','uid'), $params['context'], 'u', 'cn'); 
     1188             $optionsUsers = array(); 
     1189             $optionsGroups = array(); 
     1190             foreach ($users as $value) 
     1191                 $optionsUsers[] = '"'.$value['uid'].'"'.':'.'"'.$value['cn'].'('.$value['uid'].')'.'"'; 
     1192 
     1193             foreach ($groups as $value) 
     1194                 $optionsGroups[] = '"'.$value['gidNumber'].'"'.':'.'"'.$value['cn'].'('.$value['uid'].')'.'"'; 
     1195 
     1196             return "{".implode(',',$optionsUsers).implode(',',$optionsGroups)."}"; 
     1197        } 
     1198 
     1199   
    7351200        //Busca usuários e listas de um contexto e já retorna as options do select; 
    7361201        function get_available_users_and_maillist($params) 
    737         { 
     1202                        { 
     1203 
     1204             $ldapService = ServiceLocator::getService('ldap'); 
     1205             $users = $ldapService->accountSearch($params['sentence'], array('cn', 'mail','uid'), $params['context'], 'u', 'cn'); 
     1206             $listas = $ldapService->accountSearch($params['sentence'], array('cn', 'mail','uid'), $params['context'], 'l', 'cn'); 
     1207             $options = ''; 
     1208             if(count($listas) > 0) 
     1209                                { 
     1210                 $options .= '<option  value="-1" disabled>------------------------------&nbsp;&nbsp;&nbsp;&nbsp;'.$this->functions->lang('email lists').'&nbsp;&nbsp;&nbsp;&nbsp;------------------------------ </option>'."\n"; 
     1211                 foreach ($listas as  $value) 
     1212                    $options .= '<option value='.$value['mail'].'>'.$value['cn'].'('.$value['uid'].')</option>'; 
     1213                                } 
     1214 
     1215             if(count($users) > 0) 
     1216             { 
     1217                $options .= '<option  value="-1" disabled>-----------------------------&nbsp;&nbsp;&nbsp;&nbsp;'.$this->functions->lang('users').'&nbsp;&nbsp;&nbsp;&nbsp;---------------------------- </option>'."\n"; 
     1218                foreach ($users as  $value) 
     1219                    $options .= '<option value='.$value['mail'].'>'.$value['cn'].'('.$value['uid'].')</option>'; 
     1220                        } 
     1221              
     1222             return $options; 
     1223                } 
     1224                 
     1225        function get_available_groups($params) 
     1226                { 
     1227//              $ldapService = ServiceLocator::getService('ldap'); 
     1228//              $entries = $ldapService->accountSearch($params['sentence'], array('cn', 'gidnumber'), $params['context'], 'g', 'cn'); 
     1229//              $options = ''; 
     1230//  
     1231//              foreach ($entries as  $value) 
     1232//                  $options .= '<option value='.$value['gidnumber'].'>'.$value['cn'].'</option>'; 
     1233                  
     1234            $entries = $this->get_available( $params, array( 'cn', 'gidNumber' ), 'g' ); 
     1235 
     1236             return $this->get_options( $entries, 'cn', 'gidnumber' ); 
     1237                } 
     1238                         
     1239        function get_available_maillists($params) 
     1240        { 
     1241                if ( !$ldapMasterConnect = $this->ldapMasterConnect() ) 
     1242                        return false; 
     1243                         
    7381244                $context = $params['context']; 
    739                 $recursive = $params['recursive']; 
    740                  
    741                 //Usado para retirar a própria lista das possibilidades de inclusão. 
    742                 $denied_uidnumber = $params['denied_uidnumber']; 
    743                  
    744                 $justthese = array("cn", "uidNumber", "mail"); 
    745                  
    746                 $users_filter="(phpgwAccountType=u)"; 
    747                 $lists_filter = $denied_uidnumber == '' ? "(phpgwAccountType=l)" : "(&(phpgwAccountType=l)(!(uidnumber=$denied_uidnumber)))"; 
    748                  
    749                 $users = Array(); 
    750                 $lists = Array();                
    751  
    752                 /* folling referral connection */ 
    753                 $ldap_conn_following_ref = ldap_connect($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['host']); 
    754                 if ($ldap_conn_following_ref) 
    755                 { 
    756                         ldap_set_option($ldap_conn_following_ref, LDAP_OPT_PROTOCOL_VERSION, 3); 
    757                         ldap_set_option($ldap_conn_following_ref, LDAP_OPT_REFERRALS, 1); 
    758  
    759                         if ( ($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'] != '') && ($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['pw'] != '') ) 
    760                                 ldap_bind($ldap_conn_following_ref, $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'], $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['pw']); 
    761                 } 
    762                 else 
    763                         return false; 
    764  
    765                 if ($recursive == 'true') 
    766                         $users_search = ldap_search($ldap_conn_following_ref, $context, $users_filter, $justthese); 
    767                 else 
    768                         $users_search = ldap_list($ldap_conn_following_ref, $context, $users_filter, $justthese); 
    769  
    770                 /* email lists */ 
    771                 if($params['listSearch'] == 'true'){ 
    772                         if ($recursive == 'true') 
    773                                 $lists_search = ldap_search($ldap_conn_following_ref, $context, $lists_filter, $justthese);                      
    774                         else                     
    775                                 $lists_search = ldap_list($ldap_conn_following_ref, $context, $lists_filter, $justthese); 
    776  
    777                         $lists_entries = ldap_get_entries($ldap_conn_following_ref, $lists_search); 
    778  
    779                         for ($i=0; $i<$lists_entries["count"]; $i++) 
    780                         { 
    781                                 $l_tmp[$lists_entries[$i]["mail"][0]] = $lists_entries[$i]["cn"][0]; 
    782                         } 
    783  
    784                         if (count($l_tmp)) 
    785                                 natcasesort($l_tmp); 
    786  
    787                         $i = 0; 
    788                         $lists = array(); 
    789  
    790                         $options .= '<option  value="-1" disabled>------------------------------&nbsp;&nbsp;&nbsp;&nbsp;'.$this->functions->lang('email lists').'&nbsp;&nbsp;&nbsp;&nbsp;------------------------------ </option>'."\n";         
    791                         if (count($l_tmp)) 
    792                         { 
    793                                 foreach ($l_tmp as $mail => $cn) 
    794                                 { 
    795                                         $options .= "<option value=$mail>$cn</option>"; 
    796                                 } 
    797                                 unset($l_tmp); 
    798                         } 
    799                 } 
    800                  
    801                 /* users */ 
    802                 $users_entries = ldap_get_entries($ldap_conn_following_ref, $users_search); 
    803                 for ($i=0; $i<$users_entries["count"]; $i++) 
    804                 { 
    805                         $u_tmp[$users_entries[$i]["mail"][0]] = $users_entries[$i]["cn"][0]; 
    806                 } 
    807                          
    808                 if (count($u_tmp)) 
    809                         natcasesort($u_tmp); 
    810                          
    811                 $i = 0; 
    812                 $users = array(); 
    813                  
    814                 $options .= '<option  value="-1" disabled>-----------------------------&nbsp;&nbsp;&nbsp;&nbsp;'.$this->functions->lang('users').'&nbsp;&nbsp;&nbsp;&nbsp;---------------------------- </option>'."\n"; 
    815                          
    816                 if (count($u_tmp)) 
    817                 { 
    818                         foreach ($u_tmp as $mail => $cn) 
    819                         { 
    820                                 $options .= "<option value=$mail class='line-above'>$cn</option>"; 
    821                         } 
    822                         unset($u_tmp); 
    823                 } 
    824                  
    825                 ldap_close($ldap_conn_following_ref); 
     1245                $justthese = array("uid","mail","uidNumber"); 
     1246                $maillists=ldap_list($ldapMasterConnect, $context, ("(phpgwAccountType=l)"), $justthese); 
     1247                ldap_sort($ldapMasterConnect, $maillists, "uid"); 
     1248                 
     1249                $entries = ldap_get_entries($ldapMasterConnect, $maillists); 
     1250                         
     1251                $options = '';                   
     1252                for ($i=0; $i<$entries['count']; $i++) 
     1253                        { 
     1254                        $options .= "<option value=" . $entries[$i]['uid'][0] . ">" . $entries[$i]['uid'][0] . " (" . $entries[$i]['mail'][0] . ")" . "</option>"; 
     1255                } 
     1256                 
     1257        ldap_close($ldapMasterConnect); 
    8261258                return $options; 
    8271259        } 
    8281260 
    829         function get_available_groups($params) 
    830         { 
    831                 $context = $params['context']; 
    832                 $justthese = array("cn", "gidNumber"); 
    833         $groups_list=ldap_list($this->ldap, $context, ("(phpgwAccountType=g)"), $justthese); 
    834         ldap_sort($this->ldap, $groups_list, "cn"); 
     1261        function get_available_institutional_account($params) 
     1262        { 
     1263            if ( !$ldapMasterConnect = $this->ldapMasterConnect() ) 
     1264                    return false; 
     1265 
     1266            $filtro =utf8_encode($params['filter']); 
     1267            $context =utf8_encode($params['context']);//adicionado 
     1268            $justthese = array("uid","mail","uidNumber"); 
     1269            $maillists=ldap_list($ldapMasterConnect, $context, ("(&(phpgwAccountType=i)(mail=*$filtro*))"), $justthese); 
     1270            ldap_sort($ldapMasterConnect, $maillists, "uid"); 
    8351271         
    836         $entries = ldap_get_entries($this->ldap, $groups_list); 
     1272            $entries = ldap_get_entries($ldapMasterConnect, $maillists); 
    8371273                 
    8381274                $options = ''; 
    8391275                for ($i=0; $i<$entries['count']; $i++) 
    8401276                { 
    841                         $options .= "<option value=" . $entries[$i]['gidnumber'][0] . ">" . $entries[$i]['cn'][0] . "</option>"; 
     1277                            $options .= "<option value=" . $entries[$i]['mail'][0] . ">" . $entries[$i]['mail'][0] . "</option>"; 
    8421278                } 
    8431279         
     1280            ldap_close($ldapMasterConnect); 
     1281 
     1282 
    8441283        return $options;                 
    8451284        } 
    8461285         
    847         function get_available_maillists($params) 
     1286        function get_available_shared_account($params) 
    8481287        { 
    8491288                if ( !$ldapMasterConnect = $this->ldapMasterConnect() ) 
    8501289                        return false; 
    8511290                 
    852                 $context = $params['context']; 
     1291            $filtro =utf8_encode($params['filter']); 
     1292            $context =utf8_encode($params['context']);//adicionado 
    8531293                $justthese = array("uid","mail","uidNumber"); 
    854         $maillists=ldap_list($ldapMasterConnect, $context, ("(phpgwAccountType=l)"), $justthese); 
     1294            $maillists=ldap_search($ldapMasterConnect, $context, ("(&(phpgwAccountType=s)(mail=*$filtro*))"), $justthese); 
    8551295        ldap_sort($ldapMasterConnect, $maillists, "uid"); 
    8561296         
     
    8601300                for ($i=0; $i<$entries['count']; $i++) 
    8611301                { 
    862                         $options .= "<option value=" . $entries[$i]['uid'][0] . ">" . $entries[$i]['uid'][0] . " (" . $entries[$i]['mail'][0] . ")" . "</option>"; 
     1302                            $options .= "<option value=" . $entries[$i]['mail'][0] . ">" . $entries[$i]['mail'][0] . "</option>"; 
    8631303                } 
    8641304         
     
    11321572                                $result['departmentnumber']             = $entry[0]['departmentnumber'][0]; 
    11331573                                $result['givenname']                    = $entry[0]['givenname'][0]; 
    1134                                 $result['sn']                                   = $entry[0]['sn'][0]; 
     1574                                $result['sn']                                   = utf8_decode($entry[0]['sn'][0]); 
    11351575                                $result['telephonenumber']              = $entry[0]['telephonenumber'][0]; 
    11361576                                $result['passwd_expired']               = $entry[0]['phpgwlastpasswdchange'][0]; 
     
    11921632                        for ($i=0; $i<$entries['count']; $i++) 
    11931633                        { 
    1194                                 $result['groups_ldap'][ $entries[$i]['gidnumber'][0] ] = $entries[$i]['cn'][0]; 
     1634                                $result['groups_ldap'][ $entries[$i]['gidnumber'][0] ] = utf8_decode($entries[$i]['cn'][0]); 
     1635                        } 
     1636                        } 
     1637                } 
     1638                if (is_array($result)) 
     1639                        return $result; 
     1640                else 
     1641                        return false; 
     1642        } 
     1643 
     1644 
     1645        function get_user_cn_by_uid($uid) 
     1646        { 
     1647            foreach ($this->manager_contexts as $index=>$context) 
     1648            { 
     1649 
     1650                    $justthese = array("cn"); 
     1651                    $filter="(&(phpgwAccountType=u)(uid=".$uid."))"; 
     1652                    $search = ldap_search($this->ldap, $context, $filter, $justthese); 
     1653                    $entry = ldap_get_entries($this->ldap, $search); 
     1654                    if($entry) 
     1655                        return utf8_decode($entry[0]['cn'][0]); 
     1656            } 
     1657            return null; 
     1658        } 
     1659 
     1660        function get_group_cn_by_gidnumber($gidnumber) 
     1661        { 
     1662            foreach ($this->manager_contexts as $index=>$context) 
     1663                { 
     1664                 
     1665                    $justthese = array("cn"); 
     1666                    $filter="(&(phpgwAccountType=g)(gidNumber=".$gidnumber."))"; 
     1667                    $search = ldap_search($this->ldap, $context, $filter, $justthese); 
     1668                    $entry = ldap_get_entries($this->ldap, $search); 
     1669                    if($entry) 
     1670                        return utf8_decode($entry[0]['cn'][0]); 
     1671                        } 
     1672            return null; 
     1673                } 
     1674                 
     1675         
     1676        function get_user_info_by_uid($uid) 
     1677        { 
     1678                foreach ($this->manager_contexts as $index=>$context) 
     1679                { 
     1680                        $filter="(&(phpgwAccountType=u)(uid=".$uid."))"; 
     1681                        $justthese = array("cn"); 
     1682                        $search = ldap_search($this->ldap, $context, $filter); 
     1683                        $entry = ldap_get_entries($this->ldap, $search); 
     1684                         
     1685                        if ($entry['count']) 
     1686                        { 
     1687                                //Pega o dn do setor do usuario. 
     1688                                $entry[0]['dn'] = strtolower($entry[0]['dn']); 
     1689                                $sector_dn_array = explode(",", $entry[0]['dn']); 
     1690                                for($i=1; $i<count($sector_dn_array); $i++) 
     1691                                        $sector_dn .= $sector_dn_array[$i] . ','; 
     1692                                //Retira ultimo pipe. 
     1693                                $sector_dn = substr($sector_dn,0,(strlen($sector_dn) - 1)); 
     1694                 
     1695                                $result['context']                              = $sector_dn; 
     1696                                $result['uid']                                  = $entry[0]['uid'][0]; 
     1697                                $result['cn']                                   = utf8_decode($entry[0]['cn'][0]); 
     1698                                $result['uidnumber']                    = $entry[0]['uidnumber'][0]; 
     1699                                $result['gidnumber']                    = $entry[0]['gidnumber'][0]; 
     1700                                $result['departmentnumber']             = $entry[0]['departmentnumber'][0]; 
     1701                                $result['givenname']                    = $entry[0]['givenname'][0]; 
     1702                                $result['sn']                                   = $entry[0]['sn'][0]; 
     1703                                $result['telephonenumber']              = $entry[0]['telephonenumber'][0]; 
     1704                                $result['passwd_expired']               = $entry[0]['phpgwlastpasswdchange'][0]; 
     1705                                $result['phpgwaccountstatus']   = $entry[0]['phpgwaccountstatus'][0]; 
     1706                                $result['phpgwaccountvisible']  = $entry[0]['phpgwaccountvisible'][0]; 
     1707                                $result['accountstatus']                = $entry[0]['accountstatus'][0]; 
     1708                                $result['mail']                                 = $entry[0]['mail'][0]; 
     1709                                $result['mailalternateaddress'] = $entry[0]['mailalternateaddress']; 
     1710                                $result['mailforwardingaddress']= $entry[0]['mailforwardingaddress']; 
     1711                                $result['deliverymode']                 = $entry[0]['deliverymode'][0]; 
     1712                                $result['userPasswordRFC2617']  = $entry[0]['userpasswordrfc2617'][0]; 
     1713 
     1714                                //Photo 
     1715                                if ($entry[0]['jpegphoto']['count'] == 1) 
     1716                                        $result['photo_exist'] = 'true'; 
     1717                 
     1718                                // Samba 
     1719                                for ($i=0; $i<$entry[0]['objectclass']['count']; $i++) 
     1720                                { 
     1721                                        if ($entry[0]['objectclass'][$i] == 'sambaSamAccount') 
     1722                                                $result['sambaUser'] = true; 
     1723                                } 
     1724                                if (($this->current_config['expressoAdmin_samba_support'] == 'true') && ($result['sambaUser'])) 
     1725                                { 
     1726                                        $result['sambaaccflags'] = $entry[0]['sambaacctflags'][0]; 
     1727                                        $result['sambalogonscript'] = $entry[0]['sambalogonscript'][0]; 
     1728                                        $result['homedirectory'] = $entry[0]['homedirectory'][0]; 
     1729                                        $a_tmp = explode("-", $entry[0]['sambasid'][0]); 
     1730                                        array_pop($a_tmp); 
     1731                                        $result['sambasid'] = implode("-", $a_tmp); 
     1732                                } 
     1733 
     1734                                // Verifica o acesso do gerente aos atributos corporativos 
     1735                                if ($this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'manipulate_corporative_information')) 
     1736                                { 
     1737                                        $result['corporative_information_employeenumber']= $entry[0]['employeenumber'][0]; 
     1738                                        $result['corporative_information_cpf']                  = $entry[0]['cpf'][0]; 
     1739                                        $result['corporative_information_rg']                   = $entry[0]['rg'][0]; 
     1740                                        $result['corporative_information_rguf']                 = $entry[0]['rguf'][0]; 
     1741                                        $result['corporative_information_description']  = utf8_decode($entry[0]['description'][0]); 
     1742                                } 
     1743                                 
     1744                                // MailLists 
     1745                                $result['maillists_info'] = $this->get_user_maillists($result['mail']); 
     1746                                if($result['maillists_info']) 
     1747                                { 
     1748                                        foreach ($result['maillists_info'] as $maillist) 
     1749                                        { 
     1750                                                $result['maillists'][] = $maillist['uid']; 
     1751                                        } 
     1752                                } 
     1753                                 
     1754                                // Groups 
     1755                                $justthese = array("gidnumber","cn"); 
     1756                                $filter="(&(phpgwAccountType=g)(memberuid=".$result['uid']."))"; 
     1757                                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
     1758                        ldap_sort($this->ldap, $search, "cn"); 
     1759                        $entries = ldap_get_entries($this->ldap, $search); 
     1760                        for ($i=0; $i<$entries['count']; $i++) 
     1761                        { 
     1762                                $result['groups_ldap'][ $entries[$i]['gidnumber'][0] ] = utf8_decode($entries[$i]['cn'][0]); 
    11951763                        } 
    11961764                        } 
     
    12401808        } 
    12411809         
    1242         function get_group_info($gidnumber,$use_global_context=false) 
    1243         { 
    1244                 $array_context = $use_global_context ? Array(0 => $GLOBALS['phpgw_info']['server']['ldap_context']) : $this->manager_contexts; 
    1245                 foreach ($array_context as $index=>$context) 
     1810        function get_group_info($gidnumber) 
     1811        { 
     1812                foreach ($this->manager_contexts as $index=>$context) 
    12461813                { 
    12471814                        $filter="(&(phpgwAccountType=g)(gidNumber=".$gidnumber."))"; 
     
    12721839                         
    12731840                                        // Montagem dinamica do filtro 
    1274                                         $filter="(&(phpgwAccountType=u)(|"; 
     1841                                        $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=s))(|"; 
    12751842                                        for ($k=0; (($k<10) && ($i<$entry[0]['memberuid']['count'])); $k++) 
    12761843                                        { 
     
    14752042                if (count($gidnumbers)) 
    14762043                { 
    1477                         $justthese = array("cn"); 
     2044                        $justthese = array("cn","uid"); 
    14782045                        $i = 0; 
    14792046                        foreach ($gidnumbers as $gidnumber) 
     
    14872054                                         
    14882055                                else 
     2056                                { 
     2057                                        $result['groups_info'][$i]['uid'] = $entry[0]['uid'][0]; 
    14892058                                        $result['groups_info'][$i]['cn'] = $entry[0]['cn'][0]; 
     2059                                } 
    14902060                                $result['groups_info'][$i]['gidnumber'] = $gidnumber; 
    14912061                         
     
    15102080        { 
    15112081                $justthese = array("uid"); 
    1512                 $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=l))(uidNumber=".$uidnumber."))"; 
     2082                $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=s)(phpgwAccountType=l))(uidNumber=".$uidnumber."))"; 
    15132083                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
    15142084                $entry = ldap_get_entries($this->ldap, $search); 
     
    15222092                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
    15232093                $entry = ldap_get_entries($this->ldap, $search); 
    1524                 return $entry[0]['cn'][0]; 
     2094                return utf8_decode($entry[0]['cn'][0]); 
     2095        } 
     2096 
     2097        function uid2uidnumber($uid) 
     2098        { 
     2099                $justthese = array("uidNumber"); 
     2100                $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=s)(phpgwAccountType=l))(uid=".$uid."))"; 
     2101                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
     2102                $entry = ldap_get_entries($this->ldap, $search); 
     2103                return $entry[0]['uidnumber'][0]; 
    15252104        } 
    15262105 
     
    19472526                $search = ldap_search($this->ldap, $context, $filter, $justthese); 
    19482527            $count_entries = ldap_count_entries($this->ldap, $search); 
    1949              
     2528                 
    19502529            if ($count_entries > 0) 
    19512530                return true; 
    19522531            else 
    19532532                return false; 
    1954         } 
    1955          
     2533                } 
     2534                 
    19562535        function add_sambadomain($sambadomainname, $sambasid, $context) 
    19572536        { 
     
    19652544                 
    19662545                if (!@ldap_add ( $this->ldap, $dn, $entry )) 
    1967                 { 
     2546                        { 
    19682547                        $return['status'] = false; 
    19692548                        $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->add_sambadomain ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 
     
    19742553                return $return; 
    19752554        } 
    1976          
     2555                 
    19772556        function delete_sambadomain($sambadomainname) 
    19782557        { 
     
    19812560                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter); 
    19822561            $entry = ldap_get_entries($this->ldap, $search); 
    1983           
     2562                 
    19842563                if ($entry['count'] != 0) 
    1985             { 
     2564                { 
    19862565                        $dn = $entry[0]['dn']; 
    19872566                         
     
    19912570                                $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->delete_sambadomain ($sambadomainname)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 
    19922571                        } 
    1993             } 
    1994              
     2572                } 
     2573                 
    19952574                return $return; 
    19962575        } 
    19972576         
    19982577        function search_user($params) 
    1999         { 
    2000                 $search = $params['search']; 
    2001                 $justthese = array("cn","uid", "mail"); 
    2002         $users_list=ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], "(&(phpgwAccountType=u) (|(cn=*$search*)(mail=$search*)) )", $justthese); 
    2003          
    2004         if (ldap_count_entries($this->ldap, $users_list) == 0) 
    2005         { 
    2006                 $return['status'] = 'false'; 
    2007                 $result['msg'] = $this->functions->lang('Any result was found') . '.'; 
    2008                 return $return; 
    2009         } 
    2010          
    2011         ldap_sort($this->ldap, $users_list, "cn"); 
    2012          
    2013         $entries = ldap_get_entries($this->ldap, $users_list); 
    2014                  
    2015                 $options = ''; 
    2016                 for ($i=0; $i<$entries['count']; $i++) 
    2017                 { 
    2018                         $options .= "<option value=" . $entries[$i]['uid'][0] . ">" . $entries[$i]['cn'][0] . " (".$entries[$i]['mail'][0].")" . "</option>"; 
    2019                 } 
    2020          
     2578                { 
     2579             $ldapService = ServiceLocator::getService('ldap'); 
     2580             $entries = $ldapService->accountSearch($params['search'], array('cn','uid', "mail"), $params['context'], 'u', 'cn'); 
     2581 
     2582             if (count($entries) == 0) 
     2583             { 
     2584                    $return['status'] = 'false'; 
     2585                    $return['msg'] = $this->functions->lang('Any result was found') . '.'; 
     2586                    return $return; 
     2587                } 
     2588             $options = ''; 
     2589 
     2590             foreach ($entries as  $value) 
     2591                 $options .= '<option value='.$value['uid'].'>'.$value['cn'].'('.$value['mail'].')'.'</option>'; 
     2592     
    20212593        return $options;                 
    2022         } 
    2023          
    2024         function create_institutional_accounts($params) 
    2025         { 
    2026                 /* Begin: Access verification */ 
    2027                 if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'add_institutional_accounts')) 
    2028                 { 
    2029                         $return['status'] = false; 
    2030                         $return['msg'] = $this->functions->lang('You do not have right to create institutional accounts') . "."; 
    2031                         return $return; 
    2032                 } 
    2033                  
    2034                 $access_granted = false; 
    2035                 foreach ($this->manager_contexts as $idx=>$manager_context) 
    2036                 { 
    2037                         if (stristr($params['context'], $manager_context)) 
    2038                         { 
    2039                                 $access_granted = true; 
    2040                                 break; 
    2041                         } 
    2042                 } 
    2043                 if (!$access_granted) 
    2044                 { 
    2045                         $return['status'] = false; 
    2046                         $return['msg'] = $this->functions->lang('You do not have access to this organization') . "."; 
    2047                         return $return; 
    2048                 } 
    2049                 /* End: Access verification */ 
    2050  
    2051                 /* Begin: Validation */ 
    2052                 if ( (empty($params['cn'])) || (empty($params['mail'])) ) 
    2053                 { 
    2054                         $result['status'] = false; 
    2055                         $result['msg']  = $this->functions->lang('Field mail or name is empty'); 
    2056                         return $result; 
    2057                 } 
    2058  
    2059                 if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) ) 
    2060                 { 
    2061                         $result['status'] = false; 
    2062                         $result['msg']  = $this->functions->lang('Field mail is not formed correcty') . '.'; 
    2063                         return $result; 
    2064                 } 
    2065  
    2066                 $uid = 'institutional_account_' . $params['mail']; 
    2067                 $dn = "uid=$uid," . $params['context']; 
    2068  
    2069                 $filter = "(mail=".$params['mail'].")"; 
    2070                 $justthese = array("cn"); 
    2071                 $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
    2072                 $entries = @ldap_get_entries($this->ldap,$search); 
    2073                 if ($entries['count'] != 0) 
    2074                 { 
    2075                         $result['status'] = false; 
    2076                         $result['msg'] = $this->functions->lang('Field mail already in use'); 
    2077                         return $result; 
    2078                 } 
    2079                 /* End: Validation */ 
    2080                                                  
    2081                 $info = array(); 
    2082                 $info['cn']                                     = iconv("ISO-8859-1","UTF-8//TRANSLIT",$params['cn']); 
    2083                 $info['sn']                                     = iconv("ISO-8859-1","UTF-8//TRANSLIT",$params['cn']); 
    2084                 $info['uid']                            = $uid; 
    2085                 $info['mail']                           = $params['mail']; 
    2086                 $info['description']            = iconv("ISO-8859-1","UTF-8//TRANSLIT",$params['desc']); 
    2087                 $info['phpgwAccountType']       = 'i'; 
    2088                 $info['objectClass'][]          = 'inetOrgPerson'; 
    2089                 $info['objectClass'][]          = 'phpgwAccount'; 
    2090                 $info['objectClass'][]          = 'top'; 
    2091                 $info['objectClass'][]          = 'person'; 
    2092                 $info['objectClass'][]          = 'qmailUser'; 
    2093                 $info['objectClass'][]          = 'organizationalPerson'; 
    2094                  
    2095                 if ($params['accountStatus'] == 'on') 
    2096                 { 
    2097                         $info['accountStatus'] = 'active'; 
    2098                 } 
    2099                 if ($params['phpgwAccountVisible'] == 'on') 
    2100                 { 
    2101                         $info['phpgwAccountVisible'] = '-1'; 
    2102                 } 
    2103                  
    2104                 if (!empty($params['owners'])) 
    2105                 { 
    2106                         foreach($params['owners'] as $index=>$uidnumber) 
    2107                         { 
    2108                                 $info['mailForwardingAddress'][] = $this->uidnumber2mail($uidnumber); 
    2109                         } 
    2110                 }                
    2111                  
    2112                 $result = array(); 
    2113                 if (!@ldap_add ( $this->ldap, $dn, $info )) 
    2114                 { 
    2115                         $result['status'] = false; 
    2116                         $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->create_institutional_accounts'; 
    2117                         $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
    2118                 } 
    2119                 else 
    2120                         $result['status'] = true; 
    2121                  
    2122                 return $result; 
    2123         } 
    2124          
    2125         function save_institutional_accounts($params) 
    2126         { 
    2127                 /* Begin: Access verification */ 
    2128                 if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'edit_institutional_accounts')) 
    2129                 { 
    2130                         $return['status'] = false; 
    2131                         $return['msg'] = $this->functions->lang('You do not have right to edit institutional accounts') . "."; 
    2132                         return $return; 
    2133                 } 
    2134                 $access_granted = false; 
    2135                 foreach ($this->manager_contexts as $idx=>$manager_context) 
    2136                 { 
    2137                         if (stristr($params['context'], $manager_context)) 
    2138                         { 
    2139                                 $access_granted = true; 
    2140                                 break; 
    2141                         } 
    2142                 } 
    2143                 if (!$access_granted) 
    2144                 { 
    2145                         $return['status'] = false; 
    2146                         $return['msg'] = $this->functions->lang('You do not have access to this organization') . "."; 
    2147                         return $return; 
    2148                 } 
    2149                 /* End: Access verification */ 
    2150                  
    2151                 /* Begin: Validation */ 
    2152                 if ( (empty($params['cn'])) || (empty($params['mail'])) ) 
    2153                 { 
    2154                         $result['status'] = false; 
    2155                         $result['msg']  = $this->functions->lang('Field mail or name is empty') . '.'; 
    2156                         return $result; 
    2157                 } 
    2158  
    2159                 if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) ) 
    2160                 { 
    2161                         $result['status'] = false; 
    2162                         $result['msg']  = $this->functions->lang('Field mail is not formed correcty') . '.'; 
    2163                         return $result; 
    2164                 } 
    2165  
    2166                 $uid = 'institutional_account_' . $params['mail']; 
    2167                 $dn = strtolower("uid=$uid," . $params['context']); 
    2168                 $anchor = strtolower($params['anchor']); 
    2169  
    2170                 $filter = "(mail=".$params['mail'].")"; 
    2171                 $justthese = array("cn"); 
    2172                 $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
    2173                 $entries = @ldap_get_entries($this->ldap,$search); 
    2174                  
    2175                 if ( ($entries['count'] > 1) || (($entries['count'] == 1) && ($entries[0]['dn'] != $anchor)) ) 
    2176                 { 
    2177                         $result['status'] = false; 
    2178                         $result['msg'] = $this->functions->lang('Field mail already in use.'); 
    2179                         return $result; 
    2180                 } 
    2181                 /* End: Validation */ 
    2182                  
    2183                 $result = array(); 
    2184                 $result['status'] = true; 
    2185                  
    2186                 if ($anchor != $dn) 
    2187                 { 
    2188                         if (!@ldap_rename($this->ldap, $anchor, "uid=$uid", $params['context'], true)) 
    2189                         { 
    2190                                 $result['status'] = false; 
    2191                                 $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->save_institutional_accounts: ldap_rename'; 
    2192                                 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
    2193                         } 
    2194                 } 
    2195                  
    2196                 $info = array(); 
    2197                 $info['cn']                                     = $params['cn']; 
    2198                 $info['sn']                                     = $params['cn']; 
    2199                 $info['uid']                            = $uid; 
    2200                 $info['mail']                           = $params['mail']; 
    2201                  
    2202                 if ($params['accountStatus'] == 'on') 
    2203                         $info['accountStatus'] = 'active'; 
    2204                 else 
    2205                         $info['accountStatus'] = array(); 
    2206                  
    2207                 if ($params['phpgwAccountVisible'] == 'on') 
    2208                         $info['phpgwAccountVisible'] = '-1'; 
    2209                 else 
    2210                         $info['phpgwAccountVisible'] = array(); 
    2211                  
    2212                 if ($params['desc'] != '') 
    2213                         $info['description'] = utf8_encode($params['desc']); 
    2214                 else 
    2215                         $info['description'] = array(); 
    2216                  
    2217                 if (!empty($params['owners'])) 
    2218                 { 
    2219                         foreach($params['owners'] as $index=>$uidnumber) 
    2220                         { 
    2221                                 $mailForwardingAddress = $this->uidnumber2mail($uidnumber); 
    2222                                 if ($mailForwardingAddress != '') 
    2223                                         $info['mailForwardingAddress'][] = $mailForwardingAddress; 
    2224                         } 
    2225                 } 
    2226                 else 
    2227                         $info['mailForwardingAddress'] = array(); 
    2228                  
    2229                 if (!@ldap_modify ( $this->ldap, $dn, $info )) 
    2230                 { 
    2231                         $result['status'] = false; 
    2232                         $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->save_institutional_accounts: ldap_modify'; 
    2233                         $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
    2234                 } 
    2235  
    2236                 return $result; 
    22372594        } 
    22382595         
     
    22572614                        for ($i=0; $i<$entries['count']; $i++) 
    22582615                        { 
    2259                                 $tr = "<tr class='normal' onMouseOver=this.className='selected' onMouseOut=this.className='normal'><td onClick=edit_institutional_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['cn'][0] . "</td><td onClick=edit_institutional_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['mail'][0] . "</td><td align='center' onClick=delete_institutional_accounts('".$entries[$i]['uid'][0]."')><img HEIGHT='16' WIDTH='16' src=./expressoAdmin1_2/templates/default/images/delete.png></td></tr>"; 
    2260                                 $trs[$tr] = $entries[$i]['cn'][0]; 
     2616                                $tr = "<tr class='normal' onMouseOver=this.className='selected' onMouseOut=this.className='normal'><td onClick=edit_institutional_account('".$entries[$i]['uid'][0]."')>" . utf8_decode($entries[$i]['cn'][0]) . "</td><td onClick=edit_institutional_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['mail'][0] . "</td><td align='center' onClick=delete_institutional_accounts('".$entries[$i]['uid'][0]."')><img HEIGHT='16' WIDTH='16' src=./expressoAdmin1_2/templates/default/images/delete.png></td></tr>"; 
     2617                                $trs[$tr] = utf8_decode($entries[$i]['cn'][0]); 
    22612618                        } 
    22622619                } 
     
    22992656                else 
    23002657                { 
    2301                         $tmp_user_context = split(",", $entrie[0]['dn']); 
     2658                        $tmp_user_context = split(",", utf8_decode($entrie[0]['dn'])); 
    23022659                        $tmp_reverse_user_context = array_reverse($tmp_user_context); 
    23032660                        array_pop($tmp_reverse_user_context); 
     
    23072664                        $return['accountStatus']                = $entrie[0]['accountstatus'][0]; 
    23082665                        $return['phpgwAccountVisible']  = $entrie[0]['phpgwaccountvisible'][0]; 
    2309                         $return['cn']                                   = $entrie[0]['cn'][0]; 
     2666                        $return['cn']                                   = utf8_decode($entrie[0]['cn'][0]); 
    23102667                        $return['mail']                                 = $entrie[0]['mail'][0]; 
    23112668                        $return['description']                  = utf8_decode($entrie[0]['description'][0]); 
     
    23192676                                        if (!$tmp) {} 
    23202677                                        else 
    2321                                                 $a_cn[$tmp['uidnumber']] = $tmp['cn']; 
     2678                                                $a_cn[$tmp['uidnumber']] = $tmp['cn'].'('.$tmp['uid'].')'; 
    23222679                                } 
    23232680                                natcasesort($a_cn); 
     
    23412698 
    23422699                $input = $params['input']; 
    2343                 $justthese = array("cn", "mail", "uid"); 
     2700                $justthese = array("cn", "dn", "mail", "uid"); 
    23442701                $trs = array(); 
    23452702                                 
     
    23512708                        for ($i=0; $i<$entries['count']; $i++) 
    23522709                        { 
    2353                                 $tr = "<tr class='normal' onMouseOver=this.className='selected' onMouseOut=this.className='normal'><td onClick=edit_shared_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['cn'][0] . "</td><td onClick=edit_shared_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['mail'][0] . "</td><td align='center' onClick=delete_shared_accounts('".$entries[$i]['uid'][0]."')><img HEIGHT='16' WIDTH='16' src=./expressoAdmin1_2/templates/default/images/delete.png></td></tr>"; 
    2354                                 $trs[$tr] = $entries[$i]['cn'][0]; 
     2710                                $tr = "<tr class='normal' onMouseOver=this.className='selected' onMouseOut=this.className='normal'><td onClick=edit_shared_account('".$entries[$i]['uid'][0]."')>" . utf8_decode($entries[$i]['cn'][0]) . "</td><td onClick=edit_shared_account('".$entries[$i]['uid'][0]."')>" . utf8_decode($entries[$i]['cn'][0]). " (" . $entries[$i]['uid'][0] . ")" . "</td><td onClick=edit_shared_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['mail'][0] . "<td align='center' onClick=delete_shared_accounts('".$entries[$i]['uid'][0]."')><img HEIGHT='16' WIDTH='16' src=./expressoAdmin1_2/templates/default/images/delete.png></td></tr>"; 
     2711                                $trs[$tr] = utf8_decode($entries[$i]['cn'][0]); 
    23552712                        } 
    23562713                } 
     
    23712728        } 
    23722729         
    2373         function save_shared_accounts($params) 
    2374         { 
    2375                         /* Begin: Access verification */ 
    2376                         if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'edit_shared_accounts')) 
    2377                         { 
    2378                                 $return['status'] = false; 
    2379                                 $return['msg'] = $this->functions->lang('You do not have right to edit shared accounts') . "."; 
    2380                                 return $return; 
    2381                         } 
    2382                         $access_granted = false; 
    2383                         foreach ($this->manager_contexts as $idx=>$manager_context) 
    2384                         { 
    2385                                 if (stristr($params['context'], $manager_context)) 
    2386                                 { 
    2387                                         $access_granted = true; 
    2388                                         break; 
    2389                                 } 
    2390                         } 
    2391                         if (!$access_granted) 
    2392                         { 
    2393                                 $return['status'] = false; 
    2394                                 $return['msg'] = $this->functions->lang('You do not have access to this organization') . "."; 
    2395                                 return $return; 
    2396                         } 
    2397                         /* End: Access verification */ 
    2398                          
    2399                         /* Begin: Validation */ 
    2400                         if ( (empty($params['cn'])) || (empty($params['mail'])) ) 
    2401                         { 
    2402                                 $result['status'] = false; 
    2403                                 $result['msg']  = $this->functions->lang('Field mail or name is empty') . '.'; 
    2404                                 return $result; 
    2405                         } 
    2406          
    2407                         if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) ) 
    2408                         { 
    2409                                 $result['status'] = false; 
    2410                                 $result['msg']  = $this->functions->lang('Field mail is not formed correcty') . '.'; 
    2411                                 return $result; 
    2412                         }                        
    2413                          
    2414                         $dn = strtolower("uid=$params[uid]," . $params['context']); 
    2415                         $anchor = strtolower($params['anchor']); 
    2416                          
    2417                         $filter = "(mail=".$params['mail'].")"; 
    2418                         $justthese = array("cn"); 
    2419                         $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
    2420                         $entries = @ldap_get_entries($this->ldap,$search); 
    2421                          
    2422                         if ( ($entries['count'] > 1) || (($entries['count'] == 1) && ($entries[0]['dn'] != $anchor)) ) 
    2423                         { 
    2424                                 $result['status'] = false; 
    2425                                 $result['msg'] = $this->functions->lang('Field mail already in use.'); 
    2426                                 return $result; 
    2427                         } 
    2428                         /* End: Validation */ 
    2429  
    2430                         $result = array(); 
    2431                         $result['status'] = true; 
    2432                          
    2433                         if ($anchor != $dn) 
    2434                         { 
    2435                                 if (!@ldap_rename($this->ldap, $anchor, "uid=$params[uid]", $params['context'], true)) 
    2436                                 { 
    2437                                         $result['status'] = false; 
    2438                                         $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->save_shared_accounts: ldap_rename'; 
    2439                                         $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
    2440                                 } 
    2441                         } 
    2442                          
    2443                         $info = array(); 
    2444                         $info['cn']                                     = $params['cn']; 
    2445                         $info['sn']                                     = $params['cn']; 
    2446                         $info['uid']                            = $params['uid']; 
    2447                         $info['mail']                           = $params['mail']; 
    2448                          
    2449                         if ($params['accountStatus'] == 'on') 
    2450                                 $info['accountStatus'] = 'active'; 
    2451                         else 
    2452                                 $info['accountStatus'] = array(); 
    2453                          
    2454                         if ($params['phpgwAccountVisible'] == 'on') 
    2455                                 $info['phpgwAccountVisible'] = '-1'; 
    2456                         else 
    2457                                 $info['phpgwAccountVisible'] = array(); 
    2458                          
    2459                         if ($params['desc'] != '') 
    2460                                 $info['description'] = utf8_encode($params['desc']); 
    2461                         else 
    2462                                 $info['description'] = array(); 
    2463                          
    2464                         if (!@ldap_modify ( $this->ldap, $dn, $info )) 
    2465                         { 
    2466                                 $result['status'] = false; 
    2467                                 $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->save_shared_accounts: ldap_modify'; 
    2468                                 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
    2469                         } 
    2470                         //print_r($info);echo "Teste $dn".$result['msg'];exit(); 
    2471                         return $result; 
    2472         }        
    2473          
    24742730        function get_shared_account_data($params) 
    24752731        { 
     
    25012757                        $return['status'] = 'true'; 
    25022758                        $return['accountStatus']                = $entrie[0]['accountstatus'][0]; 
     2759 
    25032760                        $return['phpgwAccountVisible']  = $entrie[0]['phpgwaccountvisible'][0]; 
    2504                         $return['cn']                                   = $entrie[0]['cn'][0]; 
     2761                        $return['cn']                   = utf8_decode($entrie[0]['cn'][0]); 
    25052762                        $return['mail']                                 = $entrie[0]['mail'][0]; 
    25062763                        $return['description']                  = utf8_decode($entrie[0]['description'][0]); 
    2507                          
    2508                 } 
     2764                        $return['dn']                   = utf8_decode($entrie[0]['dn']); 
     2765                        $return['mailalternateaddress'] = $entrie[0]['mailalternateaddress']; 
     2766                } 
     2767                 
     2768 
     2769                 
    25092770                 
    25102771                return $return; 
     
    25122773        function mailforwardingaddress2uidnumber($mail) 
    25132774        { 
    2514                 $justthese = array("uidnumber","cn"); 
     2775                $justthese = array("uidnumber","cn", "uid"); 
    25152776        $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], ("(&(phpgwAccountType=u)(mail=$mail))"), $justthese); 
    25162777        $entrie = ldap_get_entries($this->ldap, $search); 
     
    25202781                { 
    25212782                        $return['uidnumber'] = $entrie[0]['uidnumber'][0]; 
    2522                         $return['cn'] = $entrie[0]['cn'][0]; 
     2783                        $return['cn'] = utf8_decode($entrie[0]['cn'][0]); 
     2784                        $return['uid'] = $entrie[0]['uid'][0]; 
     2785                        return $return; 
     2786                } 
     2787        } 
     2788 
     2789        function uid2mailforwardingaddress($uid) 
     2790        { 
     2791                $justthese = array("mail"); 
     2792        $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], ("(&(phpgwAccountType=u)(uid=$uid))"), $justthese); 
     2793        $entrie = ldap_get_entries($this->ldap, $search); 
     2794                if ($entrie['count'] != 1) 
     2795                        return false; 
     2796                else 
     2797                { 
     2798                        $return['mail'] = $entrie[0]['mail'][0]; 
    25232799                        return $return; 
    25242800                } 
     
    25532829                }                
    25542830                 
    2555                 $dn = $entrie[0]['dn']; 
     2831                $dn = utf8_decode($entrie[0]['dn']); 
    25562832                if (!@ldap_delete($this->ldap, $dn)) 
    25572833                { 
     
    26292905        } 
    26302906 
    2631         function search_available_users_and_maillist($params) 
    2632         { 
    2633                 $context = $params['context']; 
    2634                 $recursive = $params['recursive']; 
    2635                  $filtro =utf8_encode($params['filter']); 
    2636                 //Usado para retirar a própria lista das possibilidades de inclusão. 
    2637                 $denied_uidnumber = $params['denied_uidnumber']; 
    2638                  
    2639                 $justthese = array("cn", "uidNumber", "mail");                           
    2640                  
    2641                 $users_filter="(&(phpgwaccounttype=u)(!(phpgwaccountvisible=-1))(phpgwaccountstatus=A)(|(cn=*$filtro*)(mail=$filtro*)))"; 
    2642                 $lists_filter = $denied_uidnumber == '' ? "(&(phpgwAccountType=l)(cn=*$filtro*))" : "(&(phpgwAccountType=l)(!(uidnumber=$denied_uidnumber))(|(cn=*$filtro*)(mail=$filtro*)))"; 
    2643                  
    2644                 $users = Array(); 
    2645                 $lists = Array();                
    2646  
    2647                 /* folling referral connection */ 
    2648                 $ldap_conn_following_ref = ldap_connect($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['host']); 
    2649                 if ($ldap_conn_following_ref) 
    2650                 { 
    2651                         ldap_set_option($ldap_conn_following_ref, LDAP_OPT_PROTOCOL_VERSION, 3); 
    2652                         ldap_set_option($ldap_conn_following_ref, LDAP_OPT_REFERRALS, 1); 
    2653  
    2654                         if ( ($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'] != '') && ($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['pw'] != '') ) 
    2655                                 ldap_bind($ldap_conn_following_ref, $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'], $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['pw']); 
    2656                 } 
    2657                 else 
    2658                         return false; 
    2659                  
    2660                 if ($recursive == 'true') 
    2661                         $users_search = ldap_search($ldap_conn_following_ref, $context, $users_filter, $justthese); 
    2662                 else 
    2663                         $users_search = ldap_list($ldap_conn_following_ref, $context, $users_filter, $justthese); 
    2664                  
    2665                 /* email lists */ 
    2666                 if($params['listSearch'] == 'true'){ 
    2667                         if ($recursive == 'true') 
    2668                                 $lists_search = ldap_search($ldap_conn_following_ref, $context, $lists_filter, $justthese);                      
    2669                         else                     
    2670                                 $lists_search = ldap_list($ldap_conn_following_ref, $context, $lists_filter, $justthese); 
    2671                                  
    2672                         $lists_entries = ldap_get_entries($ldap_conn_following_ref, $lists_search); 
    2673                          
    2674                         for ($i=0; $i<$lists_entries["count"]; $i++) 
    2675                         { 
    2676                                 $l_tmp[$lists_entries[$i]["mail"][0]] = $lists_entries[$i]["cn"][0]; 
    2677                         } 
    2678                                  
    2679                         if (count($l_tmp)) 
    2680                                 natcasesort($l_tmp); 
    2681                                  
    2682                         $i = 0; 
    2683                         $lists = array(); 
    2684                          
    2685                         $options .= '<option  value="-1" disabled>------------------------------&nbsp;&nbsp;&nbsp;&nbsp;'.$this->functions->lang('email lists').'&nbsp;&nbsp;&nbsp;&nbsp;------------------------------ </option>'."\n";         
    2686                         if (count($l_tmp)) 
    2687                         { 
    2688                                 foreach ($l_tmp as $mail => $cn) 
    2689                                 { 
    2690                                         $options .= "<option value=$mail>$cn</option>"; 
    2691                                 } 
    2692                                 unset($l_tmp); 
    2693                         } 
    2694                 } 
    2695                  
    2696                 /* users */ 
    2697                 $users_entries = ldap_get_entries($ldap_conn_following_ref, $users_search); 
    2698                 for ($i=0; $i<$users_entries["count"]; $i++) 
    2699                 { 
    2700                         $u_tmp[$users_entries[$i]["mail"][0]] = $users_entries[$i]["cn"][0]; 
    2701                 } 
    2702                          
    2703                 if (count($u_tmp)) 
    2704                         natcasesort($u_tmp); 
    2705                          
    2706                 $i = 0; 
    2707                 $users = array(); 
    2708                  
    2709                 $options .= '<option  value="-1" disabled>-----------------------------&nbsp;&nbsp;&nbsp;&nbsp;'.$this->functions->lang('users').'&nbsp;&nbsp;&nbsp;&nbsp;---------------------------- </option>'."\n"; 
    2710                          
    2711                 if (count($u_tmp)) 
    2712                 { 
    2713                         foreach ($u_tmp as $mail => $cn) 
    2714                         { 
    2715                                 $options .= "<option value=$mail class='line-above'>$cn</option>"; 
    2716                         } 
    2717                         unset($u_tmp); 
    2718                 } 
    2719                  
    2720                 ldap_close($ldap_conn_following_ref); 
    2721                 return $options; 
    2722         } 
     2907                 
    27232908 
    27242909} 
  • trunk/expressoAdmin1_2/inc/class.manager.inc.php

    r3018 r5133  
    5050                function make_manager_acl($array_post) 
    5151                { 
    52                         $total_manager_acl = 0; 
     52                     
     53                        $total_manager_acl = array(); 
     54 
    5355                        foreach ($array_post as $atribute=>$value) 
    5456                        { 
    5557                                $acl  = strstr($atribute, 'acl_'); 
    5658 
    57                                 if ($acl !== false) 
    58                                 { 
    59                                         /* Valmir Andre de Sena - valmir.sena@ati.pe.gov.br 
    60                                         * changed + operation to bcadd, because php plus operation get wrong over 41 bits 
    61                                         */ 
    62                                         $total_manager_acl = bcadd( $total_manager_acl, $value); 
    63                                 } 
     59                                if ($acl !== false && $value = 'true')   
     60                                        array_push($total_manager_acl, $atribute); 
     61 
    6462                        } 
     63                         
    6564                        return $total_manager_acl; 
    6665                } 
     
    132131                function manager_lid_exist($manager_lid) 
    133132                { 
    134                         $query = "SELECT manager_lid FROM phpgw_expressoadmin WHERE manager_lid = '" . $manager_lid . "'"; 
     133                        $query = "SELECT manager_lid FROM phpgw_expressoadmin_acls WHERE manager_lid = '" . $manager_lid . "'"; 
    135134                        $this->db->query($query); 
    136135                        while($this->db->next_record()) 
  • trunk/expressoAdmin1_2/inc/class.shared_accounts.inc.php

    r1983 r5133  
    1313include_once('class.ldap_functions.inc.php'); 
    1414include_once('class.imap_functions.inc.php'); 
     15include_once('class.db_functions.inc.php'); 
    1516 
    1617        class shared_accounts 
     
    1920                var $ldap_functions; 
    2021                var $imap_functions; 
     22                var $db_functions; 
    2123 
    2224                function shared_accounts() 
     
    2628                        $this->imap_functions = new imap_functions; 
    2729                        $this->functions = new functions; 
     30                        $this->db_functions = new db_functions(); 
    2831                         
    2932                } 
     
    4245                                   $result &= $this->imap_functions->setaclfrombox($user,$acl,$params['uid']); 
    4346                                } 
     47                                $owners_calendar_acl_new = unserialize($params['owners_calendar_acl']); 
     48                                $owner = $this->ldap_functions->uid2uidnumber($params['uid']); 
     49                                foreach($owners_calendar_acl_new as $user => $acl){ 
     50                                   $result &= $this->db_functions->save_calendar_acls($this->ldap_functions->uid2uidnumber($user),$acl,$owner); 
     51                                } 
     52 
    4453                        }                
    4554                        return $return; 
     
    5362                        $result = $this->ldap_functions->save_shared_accounts($params); 
    5463 
     64 
    5565                        if( $result['status']){ 
    5666                            $result = $this->imap_functions->save_shared_account($params);                             
     67 
     68                            $owners_calendar_acl_new = unserialize($params['owners_calendar_acl']); 
     69 
     70                            $owner = $params['uidnumber']; 
     71                            foreach($owners_calendar_acl_new as $user => $acl){ 
     72                              $this->db_functions->save_calendar_acls($this->ldap_functions->uid2uidnumber($user),$acl,$owner); 
     73                            } 
    5774                        } 
    5875 
     
    105122                        $owners_acl = $this->imap_functions->getaclfrombox($params); 
    106123                        $quota = $this->imap_functions->get_user_info($params['uid']); 
     124                        $owner = $this->ldap_functions->uid2uidnumber($params['uid']); 
     125                        $calendarAcls = $this->db_functions->get_calendar_acls($owner); 
     126 
     127                        $return['uidnumber'] = $owner; 
    107128                        $return['mailquota'] = $quota['mailquota']; 
    108129                        $return['display_empty_inbox'] = $this->functions->check_acl($_SESSION['phpgw_session']['session_lid'],'empty_shared_accounts_inbox') ? 'block' : 'none'; 
     
    114135                                { 
    115136                                        $cn = $this->ldap_functions->uid2cn($key); 
     137                                        $uidnumber = $this->ldap_functions->uid2uidnumber($key); 
     138                                         
     139                                        if( $uid ) 
     140                                            $cn .= '(' . $uid . ')'; 
     141                                         
    116142                                        $return['owners_options'] .= '<option value='. $key .'>' . $cn . '</option>'; 
    117143                                        $return['owners'][$i] .= $key; 
    118144                                        $return['owners_acl'][$i] .= $value; 
     145                                        $return['owners_calendar_acl'][$i] .= $calendarAcls[$key]; 
    119146                                        $i++; 
    120147                                } 
     
    123150                                $return['owners'] = false; 
    124151                                $return['owners_acl'] = false; 
     152                                $return['owners_calendar_acl'] == false; 
    125153                        }                         
     154 
    126155                        return $return; 
    127156                } 
     157 
     158                 
    128159                function delete($params){ 
    129160                    $result = $this->ldap_functions->delete_shared_account_data($params); 
     
    134165                function get_shared_mail2uid($params){ 
    135166                        list($uid) = explode("@",$params['mail']); 
    136                         if( preg_match("/^(ou|dc)=(\w+),.*/", $params['context'], $match) ){ 
    137                             $uid = $uid."_".$match[2]; 
    138                         } 
    139167                        return $uid; 
    140168                } 
  • trunk/expressoAdmin1_2/inc/class.sosectors.inc.php

    r1850 r5133  
    4848                function write_ldap($dn, $info) 
    4949                { 
    50                         if ( @ldap_add($this->ldap_connection, $dn, $info) ) 
     50                        $info['ou'] = utf8_encode($info['ou']); 
     51 
     52                        if (ldap_add($this->ldap_connection, utf8_encode($dn), $info)) 
    5153                        { 
    5254                                $this->db_functions->write_log("write on ldap", "$dn"); 
     
    5658                        else 
    5759                        { 
    58                                 $this->db_functions->write_log("Error write on ldap", "$dn"); 
     60                                echo lang('Error written in LDAP, function write_ldap'); 
    5961                                ldap_close($this->ldap_connection); 
    6062                                return false; 
     
    131133                } 
    132134 
    133                 function replace_attribute($dn, $info) 
    134                 { 
    135                         $connection = $GLOBALS['phpgw']->common->ldapConnect(); 
    136                          
    137                         if (ldap_mod_replace($connection, $dn, $info)) 
    138                         { 
    139                                 ldap_close($connection); 
    140                                 return true; 
    141                         } 
    142                         else 
    143                         { 
    144                                 echo 'Erro na escrita no LDAP, funcao replace_attribute: ' . ldap_error($connection); 
    145                                 ldap_close($connection); 
    146                                 return false; 
    147                         } 
    148                 }                
    149                  
    150135                function remove_attribute($dn, $info) 
    151136                { 
  • trunk/expressoAdmin1_2/inc/class.uiaccounts.inc.php

    r3458 r5133  
    4848                        } 
    4949                        $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 
     50                        $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 
    5051                        $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 
    5152                        $GLOBALS['phpgw']->js->validate_file('jscode','tabs','expressoAdmin1_2'); 
     
    407408                                $disabled_phonenumber = ''; 
    408409                        } 
    409                         elseif(($this->functions->check_acl($manager_account_lid,'edit_users')) && ($this->functions->check_acl($manager_account_lid,'edit_users_phonenumber'))) { 
    410                                 $disabled_phonenumber = ''; 
    411                         } 
    412                         elseif(!$this->functions->check_acl($manager_account_lid,'edit_users_phonenumber')) { 
    413                                 $disabled_phonenumber = 'disabled'; 
    414                         } 
    415                          
    416410                        // SOMENTE GRUPOS 
    417411                        if ((!$this->functions->check_acl($manager_account_lid,'edit_users')) && ($this->functions->check_acl($manager_account_lid,'edit_groups'))) 
     
    434428                                $disabled_password = ''; 
    435429                                $disabled_samba = ''; 
     430                                $disabled_phonenumber = ''; 
    436431                                $disabled_group = ''; 
    437432                        } 
     
    496491                                foreach ($user_info['groups_info'] as $group) 
    497492                                { 
    498                                         $array_groups[$group['gidnumber']] = $group['cn']; 
     493                                        $array_groups[$group['gidnumber']] = $group['cn'].'('.$group['uid'].')'; 
    499494                                } 
    500495                                natcasesort($array_groups); 
     
    551546                                foreach ($array_maillist as $uid=>$option) 
    552547                                { 
    553                                         $ea_select_user_maillists_options .= "<option value=" . $uid . ">" . $option . "</option>"; 
     548                                        $ea_select_user_maillists_options .= "<option value=" . $uid . ">" . $option.'('.$uid . ")</option>"; 
    554549                                } 
    555550                        } 
  • trunk/expressoAdmin1_2/inc/class.uigroups.inc.php

    r3251 r5133  
    4343                        } 
    4444                        $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 
     45                        $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 
    4546                        $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 
    4647                        $GLOBALS['phpgw']->js->validate_file('jscode','groups','expressoAdmin1_2'); 
     
    198199                        // Chama funcao para criar lista de aplicativos disponiveis. 
    199200                        $apps = $this->functions->make_list_app($manager_lid); 
    200                         // Chama funcao para criar lista de campos disponiveis na edicao de dados pessoais. 
    201                         $personal_data_fields = $this->functions->make_list_personal_data_fields($manager_lid); 
    202201                         
    203202                        // Cria combo de dominio samba 
     
    230229                                'defaultDomain'                         => $this->current_config['expressoAdmin_defaultDomain'], 
    231230                                'apps'                                          => $apps, 
    232                                 'personal_data_fields'          => $personal_data_fields, 
    233231                                'use_attrs_samba_checked'       => '', 
    234232                                'disabled_samba'                        => 'disabled', 
     
    302300                                        if ($array_users_type[$uidnumber] == 'u') 
    303301                                        { 
    304                                                 $users .= "<option value=" . $uidnumber . ">" . $cn . " [" . $array_users_uid[$uidnumber] . "]</option>"; 
    305                                         } 
    306                                         else 
    307                                         { 
    308                                                 $unknow .= "<option value=-1>" . $cn . " [Corrigir manualmente]</option>"; 
    309                                         } 
     302                                                $users .= "<option value=" . $uidnumber . ">" . utf8_decode($cn) . " (" . $array_users_uid[$uidnumber] . ")</option>"; 
     303                                        } 
     304/*                                      else 
     305                                        { 
     306                                                $unknow .= "<option value=-1>" . utf8_decode($cn) . " (Corrigir manualmente)</option>"; 
     307                                        }*/ 
    310308                                } 
    311309                                 
     
    317315                        // Chama funcao para criar lista de aplicativos disponiveis. 
    318316                        $apps = $this->functions->make_list_app($manager_lid, $group_info['apps']); 
    319                         // Chama funcao para criar lista de campos disponiveis na edicao de dados pessoais. 
    320                         $personal_data_fields = $this->functions->make_list_personal_data_fields($manager_lid, $group_info['acl_block_personal_data']); 
    321317                         
    322318                        // Cria combo de dominios do samba 
     
    349345                                'description'                           => $group_info['description'], 
    350346                                'apps'                                          => $apps, 
    351                                 'personal_data_fields'          => $personal_data_fields, 
    352347                                'use_attrs_samba_checked'       => $group_info['sambaGroup'] ? 'CHECKED' : '', 
    353348                                'disabled_samba'                        => $group_info['sambaGroup'] ? '' : 'disabled', 
  • trunk/expressoAdmin1_2/inc/class.uimaillists.inc.php

    r4280 r5133  
    3939                        } 
    4040                        $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 
     41                        $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 
    4142                        $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 
    4243                        $GLOBALS['phpgw']->js->validate_file('jscode','maillists','expressoAdmin1_2'); 
     
    166167                function add_maillists() 
    167168                { 
    168                         if($this->current_config['users_auto_search'] == "true"){ 
    169169                                $GLOBALS['phpgw']->js->set_onload('get_available_users(document.forms[0].org_context.value, document.forms[0].ea_check_allUsers.checked);'); 
    170                         } 
     170 
    171171                        $manager_lid = $GLOBALS['phpgw']->accounts->data['account_lid']; 
    172172                        $manager_acl = $this->functions->read_acl($manager_lid); 
     
    206206                                'combo_manager_org'                     => $combo_manager_org, 
    207207                                'combo_all_orgs'                        => $combo_all_orgs, 
    208                                 'defaultDomain'                         => $this->current_config['expressoAdmin_defaultDomain'], 
    209                                 'autosearch'                            => ($this->current_config['users_auto_search'] == "") ? 0:$this->current_config['users_auto_search'], 
    210                                 'minNum'                                        => ($this->current_config['min_num_characters'] == "") ? 0:$this->current_config['min_num_characters'] 
     208                                'defaultDomain'                         => $this->current_config['expressoAdmin_defaultDomain'] 
    211209                        ); 
    212210                        $p->set_var($var); 
     
    263261                                        if ($array_users_type[$mail] == 'u') 
    264262                                        { 
    265                                                 $users .= "<option value=" . $mail . ">" . $cn .  " [" . $array_users_uid[$mail] . "]</option>"; 
     263                                                $users .= "<option value=" . $mail . ">" . utf8_decode($cn) .  " (" . $array_users_uid[$mail] . ")</option>"; 
    266264                                        } 
    267265                                        elseif ($array_users_type[$mail] == 'l') 
    268266                                        { 
    269                                                 $lists .= "<option value=" . $mail . ">" . $cn .  " [" . $array_users_uid[$mail] . "]</option>"; 
     267                                                $lists .= "<option value=" . $mail . ">" . utf8_decode($cn) .  " (" . $array_users_uid[$mail] . ")</option>"; 
    270268                                        } 
    271269                                        else 
    272270                                        { 
    273                                                 $mail_not_found .= "<option value=" . $mail . ">" . $cn .  " [" . $array_users_uid[$mail] . "]</option>"; 
     271                                                $mail_not_found .= "<option value=" . $mail . ">" . utf8_decode($cn) .  " (" . $array_users_uid[$mail] . ")</option>"; 
    274272                                        } 
    275273                                } 
     
    307305                                'phpgwAccountVisible_checked'   => $maillist_info['phpgwAccountVisible'] == '-1' ? 'CHECKED' : '', 
    308306                                'ea_select_usersInMaillist'             => $ea_select_usersInMaillist, 
    309                                 'defaultDomain'                                 => $this->current_config['expressoAdmin_defaultDomain'], 
    310                                 'autosearch'                            => $this->current_config['users_auto_search'], 
    311                                 'minNum'                                        => ($this->current_config['min_num_characters'] == "") ? 0:$this->current_config['min_num_characters'] 
     307                                'defaultDomain'                                 => $this->current_config['expressoAdmin_defaultDomain'] 
    312308                        ); 
    313309                        $p->set_var($var); 
     
    345341 
    346342                        // Pega combo das organizações e seleciona a org da lista.                       
    347                         $sectors = $this->functions->get_organizations($GLOBALS['phpgw_info']['server']['ldap_context']); 
     343                        // $org = $this->functions->get_organizations($manager_context, trim(strtolower($maillist_info['context']))); 
     344                        foreach ($manager_contexts as $index=>$context) 
     345                                $sectors .= $this->functions->get_organizations($context, trim(strtolower($maillist_info['context'])) ); 
    348346 
    349347                        // Usuarios de senders. 
     
    376374                                'accountRestrictive_checked'    => $maillist_info['accountRestrictive'] == 'mailListRestriction' ? 'CHECKED' : '', 
    377375                                'participantCanSendMail_checked'=> $maillist_info['participantCanSendMail'] == 'TRUE' ? 'CHECKED' : '', 
    378                                 'ea_select_users_SCL_Maillist'  => $ea_select_users_SCL_Maillist, 
    379                                 'autosearch'                            => $this->current_config['users_auto_search'], 
    380                                 'minNum'                                        => ($this->current_config['min_num_characters'] == "") ? 0:$this->current_config['min_num_characters'] 
     376                                'ea_select_users_SCL_Maillist'  => $ea_select_users_SCL_Maillist 
    381377                        ); 
    382378                        $p->set_var($var); 
  • trunk/expressoAdmin1_2/inc/class.uimanagers.inc.php

    r1684 r5133  
    3636                        } 
    3737                        $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 
     38                        $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 
    3839                        $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 
    3940                        $GLOBALS['phpgw']->js->validate_file('jscode','managers','expressoAdmin1_2'); 
     
    8788 
    8889                        // Le BD para pegar os administradors. 
    89                         $query = 'SELECT manager_lid,context FROM phpgw_expressoadmin ORDER by manager_lid'; 
     90                        $query = 'SELECT distinct manager_lid manager_lid,context FROM phpgw_expressoadmin_acls ORDER by manager_lid '; 
    9091                        $GLOBALS['phpgw']->db->query($query); 
    9192                        while($GLOBALS['phpgw']->db->next_record()) 
     
    215216                        $manager_lid = $_GET['manager_lid']; 
    216217                         
    217                         $query = "DELETE FROM phpgw_expressoadmin WHERE manager_lid = '".$manager_lid."' AND context = '" . $context ."'"; 
     218                        $query = "DELETE FROM phpgw_expressoadmin_acls WHERE manager_lid = '".$manager_lid."' AND context = '" . $context ."'";  
    218219                        $GLOBALS['phpgw']->db->query($query); 
    219220                         
     
    257258                        if ($first_time) 
    258259                        { 
    259                                 //Pego ACL do gerente 
    260                                 $manager = $this->functions->read_acl($_GET['manager_lid']); 
    261                                 //Cria vetor da ACL 
    262                                 $manager_acl = $this->functions->make_array_acl($manager['acl']); 
     260                                 
     261                                $manager_acl = $this->functions->read_acl($_GET['manager_lid']); 
    263262                                //Pesquisa no Banco e pega os valores dos apps. 
    264263                                $query = "SELECT * FROM phpgw_expressoadmin_apps WHERE manager_lid = '" . $_GET['manager_lid'] . "' AND context = '" . $_GET['context'] . "'"; 
  • trunk/expressoAdmin1_2/inc/class.uisectors.inc.php

    r3887 r5133  
    2020                        'validate_data_sectors_edit'    => True, 
    2121                        'delete_sector'                                 => True, 
    22                         'css'                                                   => True, 
    23                         'view_cota'                                             => True 
     22                        'css'                                                   => True 
    2423                ); 
    2524 
     
    4746 
    4847                        // Verifica se o administrador tem acesso. 
    49  
     48                        if (!$this->functions->check_acl($manager_lid,'list_sectors')) 
     49                        { 
     50                                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/expressoAdmin1_2/inc/access_denied.php')); 
     51                        } 
    5052                         
    5153                        unset($GLOBALS['phpgw_info']['flags']['noheader']); 
     
    6163                        $p->set_block('sectors','row_empty','row_empty'); 
    6264                         
    63                         //$sectors_info = $this->functions->get_sectors_list($contexts); 
    64                         $sectors_info = $this->functions->get_organizations2($contexts); 
     65                        $sectors_info = $this->functions->get_sectors_list($contexts); 
    6566                         
    6667                        $var = Array( 
     
    6869                                'back_url'                              => $GLOBALS['phpgw']->link('/expressoAdmin1_2/index.php'), 
    6970                                'context_display'               => $context_display, 
    70                                 'lang_inactives'                        => lang('list inactives'), 
    71                                 'lang_ver_cota'         => lang('view cota') 
    72                         ); 
     71                                'lang_inactives'                        => lang('list inactives') 
     72                        ); 
     73 
    7374                        $p->set_var($var); 
    7475                        $p->set_var($this->functions->make_dinamic_lang($p, 'list')); 
     
    9798                                        $var = Array( 
    9899                                                'tr_color'    => $tr_color, 
    99                                                 'sector_name'  => $sector['display'], 
    100                                                 'cota_link' => $this->row_action('view','cota',$sector['dn']), 
     100                                                'sector_name'  => $sector, 
     101                                                'add_link' => $this->row_action('add','sector',$context) 
    101102                                        );       
    102103                                         
    103                                         if ($this->functions->check_acl($manager_lid,'create_sectors')) 
    104                                                 $p->set_var('add_link',$this->row_action('add','sector',$sector['dn'])); 
    105                                         else 
    106                                                 $p->set_var('add_link',' '); 
     104                                        $var['sector_name'] = utf8_decode($var['sector_name']); 
     105 
    107106                                                                         
    108107                                        if(isset($GLOBALS['phpgw_info']['server']['time_to_account_expires'])) 
    109                                                 $var['inactives_link'] = $this->row_action('list_inactive','users',$sector['dn'],'uiaccounts'); 
     108                                                $var['inactives_link'] = $this->row_action('list_inactive','users',$context,'uiaccounts'); 
    110109                                        else 
    111110                                                $var['inactives_link'] = lang('disabled'); 
     
    115114                                        if ($can_edit) 
    116115                                        { 
    117                                                 $p->set_var('edit_link',$this->row_action('edit','sector',$sector['dn'])); 
     116                                                $p->set_var('edit_link',$this->row_action('edit','sector',utf8_decode($context))); 
    118117                                        } 
    119118                                        else 
     
    124123                                        if ($can_delete) 
    125124                                        { 
    126                                                 $p->set_var('delete_link',$this->row_action('delete','sector',$sector['dn'])); 
     125                                                $p->set_var('delete_link',$this->row_action('delete','sector',utf8_decode($context))); 
    127126                                        } 
    128127                                        else 
     
    139138                        $p->set_var($var); 
    140139                         
    141                         if ($this->functions->check_acl($manager_lid,'create_sectors')) { 
    142140                                $p->set_var('input_add','<input type="submit" value="' . lang('Add Sectors') . '">'); 
    143                         } 
    144                         else { 
    145                                 $p->set_var('input_add',' '); 
    146                         } 
    147141                         
    148142                        $p->parse('rows','row_empty',True); 
     
    163157                                $context = $_GET['context']; 
    164158                                $combo_manager_org = $this->functions->get_organizations( $context, '', true, true, true ); 
     159                                $combo_manager_org = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$combo_manager_org); 
     160                                $combo_manager_org = utf8_decode($combo_manager_org); 
    165161                        } 
    166162                        else 
     
    193189                                'context'                       => $context == '' ? $GLOBALS['phpgw_info']['server']['ldap_context'] : $context, 
    194190                                'sector'                        => $_POST['sector'], 
    195                                 'associated_domain'             => $_POST['associated_domain'], 
    196                                 'disk_quota'        => $_POST['disk_quota'], 
    197                                 'users_quota'       => $_POST['users_quota'], 
    198                                 'file_manager_quota'=> $_POST['file_manager_quota'], 
    199191                                'manager_org'           => $combo_manager_org, 
    200192                                'sector_visible_checked'=> $_POST['sector_visible'] ? 'checked' : '', 
     
    202194                        ); 
    203195                         
    204                         if($this->functions->db_functions->use_cota_control()) { 
    205                                 $var["open_comment_cotas"] = ""; 
    206                                 $var["close_comment_cotas"] =""; 
    207                         } 
    208                         else { 
    209                                 $var["open_comment_cotas"] = "<!--"; 
    210                                 $var["close_comment_cotas"] ="-->"; 
    211                         }        
     196                        $var['sector'] = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$var['sector']); 
     197                        $var['sector'] = utf8_decode($var['sector']); 
    212198                         
    213199                        $p->set_var($var); 
     
    225211                        $context = $_GET['context']; 
    226212 
    227                         $combo_manager_org = $this->functions->get_organizations($_GET['context'], '', true, true, true); 
     213                        $context = utf8_encode($context); 
     214                        $context = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$context); 
     215 
     216                        $combo_manager_org = $this->functions->get_organizations($context, '', true, true, true); 
     217 
     218                        $combo_manager_org = utf8_decode(preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$combo_manager_org)); 
     219 
    228220                        $combo_manager_org = substr( $combo_manager_org, 0, ( strpos($combo_manager_org, '</option>') + 9 ) ); 
    229221 
     
    250242                        { 
    251243                                $sector_info = $this->so->get_info($context); 
    252                                 $sector_disk_quota = $sector_info[0]['diskquota'][0]; 
    253                                 $sector_users_quota = $sector_info[0]['usersquota'][0]; 
    254                                 $sector_file_manager_quota = $sector_info[0]['filemanagerquota'][0]; 
    255                                 $sector_associated_domain = $sector_info[0]['associateddomain'][0]; 
    256244                                $_POST['sector_visible'] = $sector_info[0]['phpgwaccountvisible'][0]; 
    257245                        }  
     
    266254                                'manager_org'           => $combo_manager_org, 
    267255                                'sector_visible_checked'=> $_POST['sector_visible'] ? 'checked' : '', 
    268                                 'associated_domain'        => $_POST['associated_domain'] == '' ? $sector_associated_domain : $_POST['associated_domain'], 
    269                                 'disk_quota'        => $_POST['disk_quota'] == '' ? $sector_disk_quota : $_POST['disk_quota'], 
    270                                 'users_quota'       => $_POST['users_quota'] == '' ? $sector_users_quota : $_POST['users_quota'], 
    271                                 'file_manager_quota'=> $_POST['file_manager_quota'] == '' ? $sector_file_manager_quota : $_POST['file_manager_quota'], 
     256                                 
    272257                                'lang_add'                      => lang('Add'), 
    273258                                'disable'                       => 'disabled', 
    274259                                'error_messages'        => $_POST['error_messages'] == '' ? '' : "<script type='text/javascript'>alert('".$_POST['error_messages']."')</script>", 
    275                                 'lang_disk_quota'   => lang('disk quota'), 
    276                                 'lang_users_quota'  => lang('users quota') 
    277                         ); 
    278                         if($this->functions->db_functions->use_cota_control()) { 
    279                                 $var["open_comment_cotas"] = ""; 
    280                                 $var["close_comment_cotas"] =""; 
    281                         } 
    282                         else { 
    283                                 $var["open_comment_cotas"] = "<!--"; 
    284                                 $var["close_comment_cotas"] ="-->"; 
    285                         } 
     260                        ); 
     261 
     262                        $var['sector'] = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$var['sector']); 
     263                        $var['sector'] = utf8_decode($var['sector']); 
     264                         
    286265                        $p->set_var($var); 
    287266                        $p->set_var($this->functions->make_dinamic_lang($p, 'list')); 
    288                          
     267 
    289268                        $p->pfp('out','edit_sector'); 
    290                 } 
    291                  
    292                 function view_cota() 
    293                 { 
    294                         $context = $_GET['context']; 
    295                         $a_tmp = explode(",", ldap_dn2ufn($context)); 
    296  
    297                         $sector_name = $a_tmp[0]; 
    298                         if($this->functions->db_functions->use_cota_control()) { 
    299                                 $sector_info = $this->so->get_info($context); 
    300                                 $sector_disk_cota = $sector_info[0]['diskquota'][0]; 
    301                                 $sector_users_cota = $sector_info[0]['usersquota'][0]; 
    302                         } 
    303                         else { 
    304                                 $sector_disk_cota = lang('cotas control disabled'); 
    305                                 $sector_users_cota = lang('cotas control disabled');                             
    306                         } 
    307  
    308  
    309                         unset($GLOBALS['phpgw_info']['flags']['noheader']); 
    310                         unset($GLOBALS['phpgw_info']['flags']['nonavbar']); 
    311                         $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '.lang('Edit Sector'); 
    312                         $GLOBALS['phpgw']->common->phpgw_header(); 
    313                          
    314                         // Set o template 
    315                         $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL); 
    316                         $p->set_file(Array('ver_cota' => 'sectors_cota.tpl')); 
    317                          
    318                  
    319                         // Seta variaveis utilizadas pelo tpl. 
    320                         $var = Array( 
    321                                 'back_url'                      => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uisectors.list_sectors'), 
    322                                 'th_bg'                         => $GLOBALS['phpgw_info']['theme']['th_bg'], 
    323                                 'context'                       => $context, 
    324                                 'sector'                        => $sector_name, 
    325                                 'disk_cota'        => $sector_disk_cota, 
    326                                 'users_cota'       => $sector_users_cota, 
    327                                 'actual_users'          => $this->functions->get_num_users($context), 
    328                                 'actual_disk'           => round($this->functions->get_actual_disk_usage($context),2),                           
    329                                  
    330                                 'lang_back'                     => lang('Back'), 
    331                                 'lang_context'          => lang('Context'), 
    332                                 'lang_sector_name'      => lang('Sector name'), 
    333                                 'lang_disk_cota'   => lang('disk usage cota'), 
    334                                 'lang_users_cota'  => lang('user number cota'), 
    335                                 'lang_user_number'  => lang('user number'), 
    336                                 'lang_disk_used'    => lang('disk usage'),                               
    337                                 'error_messages'        => $_POST['error_messages'] == '' ? '' : "<script type='text/javascript'>alert('".$_POST['error_messages']."')</script>", 
    338                         ); 
    339                         $p->set_var($var); 
    340  
    341                         $p->pfp('out','ver_cota'); 
    342269                }                        
    343270                 
     
    371298                        $acl = $this->functions->read_acl($account_lid); 
    372299                        $manager_context = $acl[0]['context']; 
     300                         
     301                        $manager_context = utf8_encode($manager_context); 
     302                        $manager_context = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$manager_context); 
    373303                         
    374304                        // Verifica se tem acesso a este modulo 
     
    394324                        $sector_name = $tmp_sector_name[1]; 
    395325                         
     326 
    396327                        // Get users of sector 
    397                         $sector_users           = $this->so->get_sector_users($_GET['context']); 
    398                         $sector_groups          = $this->so->get_sector_groups($_GET['context']); 
    399                         $sector_subsectors      = $this->so->get_sector_subsectors($_GET['context']); 
     328                        $sector_users           = $this->so->get_sector_users(utf8_encode($_GET['context'])); 
     329                        $sector_groups          = $this->so->get_sector_groups(utf8_encode($_GET['context'])); 
     330                        $sector_subsectors      = $this->so->get_sector_subsectors(utf8_encode($_GET['context'])); 
    400331                         
    401332                        $users_list = ''; 
     
    415346                        { 
    416347                                if ($subsector['dn'] != $_GET['context']) 
    417                                         $subsectors_list .= $subsector['ou'][0] . '<br>'; 
     348                                        $subsectors_list .= utf8_decode($subsector['ou'][0] . '<br>'); 
    418349                        } 
    419350 
     
    431362                                'sectors_list'                          => $subsectors_list  
    432363                        ); 
     364                        $var['sector_name'] = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$var['sector_name']); 
     365 
    433366                        $p->set_var($var); 
    434367                        $p->set_var($this->functions->make_dinamic_lang($p, 'list')); 
  • trunk/expressoAdmin1_2/inc/class.uishared_accounts.inc.php

    r1913 r5133  
    11<?php 
    22        /***********************************************************************************\ 
    3         * Expresso Administraᅵᅵo                                                                                                                    * 
     3        * Expresso Administração                                                                                                                        * 
    44        * by Joao Alfredo Knopik Junior (joao.alfredo@gmail.com, jakjr@celepar.pr.gov.br)       * 
    55        * modified by Valmir Andre de Sena valmirse@gmail.com valmir.sena@ati.pe.gov.br 
     
    3737                                $GLOBALS['phpgw']->js->validate_file('modal','modal','expressoAdmin1_2'); 
    3838                                $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 
     39                                $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 
    3940                                $c = CreateObject('phpgwapi.config','expressoAdmin1_2'); 
    4041                                $c->read_repository(); 
     
    9697                         
    9798                        $var = Array( 
    98                             'mailquota' =>  $this->current_config['expressoAdmin_defaultUserQuota'], 
     99                            'mailquota' =>  $this->current_config['expressoAdmin_defaultSharedAccountQuota'], 
    99100                            'changequote_disabled' => $this->functions->check_acl($account_lid,'edit_shared_accounts_quote') ? '' : 'readonly', 
    100101                            'disabled_empty_inbox' => $this->functions->check_acl($account_lid,'empty_shared_accounts_inbox') ? '' : 'disabled', 
  • trunk/expressoAdmin1_2/inc/class.user.inc.php

    r3528 r5133  
    3636                        $return['status'] = true; 
    3737                 
    38                         if($this->db_functions->use_cota_control()) { 
    39                                 //Verifica quota de usuários e disco             
    40                                 $setor = $this->functions->get_info($params['context']); 
    41                                 if (!$this->functions->existe_quota_usuario($setor[0])) { 
    42                                         $return['status'] = false; 
    43                                         $return['msg'] = $this->functions->lang("user cota exceeded");//TODO colocar valor de acordo com tabela de traduções. 
    44                                         return $return; 
    45                                 }  
    46                                 if (!$this->functions->existe_quota_disco($setor[0],$params['mailquota'])) { 
    47                                         $return['status'] = false; 
    48                                         $return['msg'] = $this->functions->lang("disk cota exceeded");//TODO colocar valor de acordo com tabela de traduções. 
    49                                         return $return;                          
    50                                 } 
    51                         } 
    52                  
    5338                        // Verifica o acesso do gerente 
    5439                        if ($this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'add_users')) 
     
    318303                        */ 
    319304 
    320                         //Verifica quota de disco, como estou alterando, não preciso checar quota de usuários. 
    321                         if($this->db_functions->use_cota_control()) {            
    322                                 $setor = $this->functions->get_info($new_values['context']); 
    323                                 if (!$this->functions->existe_quota_disco($setor[0],$new_values['mailquota'])) { 
    324                                         $return['status'] = false; 
    325                                         $return['msg'] = "Quota em disco excedida...";//TODO colocar valor de acordo com tabela de traduções. 
    326                                         return $return;                          
    327                                 } 
    328                         } 
    329  
    330305                        $manager_account_lid = $_SESSION['phpgw_session']['session_lid']; 
    331306                        if ((!$this->functions->check_acl($manager_account_lid,'edit_users')) && 
     
    435410                                        $ldap_mod_replace['telephonenumber'] = $new_values['telephonenumber']; 
    436411                                        $this->db_functions->write_log('modified user telephonenumber', $dn . ': ' . $old_values['telephonenumber'] . '->' . $new_values['telephonenumber']); 
     412                                        $ldap_mod_replace['telephonenumber'] = $new_values['telephonenumber'];  
     413                                        $this->db_functions->write_log('modified user telephonenumber', $dn . ': ' . $old_values['telephonenumber'] . '->' . $new_values['telephonenumber']);  
    437414                                } 
    438415                                else if (($old_values['telephonenumber'] != '') && ($new_values['telephonenumber'] == '')) 
     
    542519                                { 
    543520                                         
    544                                         $size_conf = $this->current_config['expressoAdmin_photo_length'] == '' ? 10000:$this->current_config['expressoAdmin_photo_length'] ; 
    545                                         if ($_FILES['photo']['size'] > $size_conf) 
     521                                        if ($_FILES['photo']['size'] > 10000) 
    546522                                        { 
    547523                                                $return['status'] = false; 
    548                                                 $return['msg'] .= $this->functions->lang('User photo could not be save because is bigger the').' '.($size_conf/1024).' kb.'; 
     524                                                $return['msg'] .= $this->functions->lang('User photo could not be save because is bigger the 10 kb') . '.'; 
    549525                                        } 
    550526                                        else 
     
    568544                        if ($this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'edit_users')) 
    569545                        { 
    570                                 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    571546                                // Passwd Expired - Sem atributo 
    572547                                if (($old_values['passwd_expired'] == '') && ($new_values['passwd_expired'] == '1')) 
  • trunk/expressoAdmin1_2/index.php

    r1913 r5133  
    3636         
    3737        $var = Array( 
     38        'lang_configurations'   => lang('Configurations'), 
    3839                'lang_user_accounts'    => lang('User Accounts'), 
    39                 'lang_shared_accounts'=> lang('Shared Accounts'), 
     40                'lang_shared_accounts'  => lang('Shared Accounts'), 
     41                'lang_messages_size'    => lang('Messages Size'), 
    4042                'lang_institutional_accounts'=> lang('Institutional Accounts'), 
    4143                'lang_user_groups'              => lang('User Groups'), 
  • trunk/expressoAdmin1_2/js/jscode/expressoadmin.js

    r3376 r5133  
    2121} 
    2222 
    23 function get_lang(key_raw) 
    24 { 
    25         key = key_raw.replace(/ /g,"_"); 
    26         key = key.replace(/-/g,""); 
    27         lang = eval("global_langs."+key.toLowerCase()); 
    28          
    29         if (typeof(lang)=='undefined') 
    30                 return key_raw + '*'; 
    31         else 
    32                 return lang; 
    33 } 
    34  
    3523function get_associated_domain(context) 
    3624{ 
     
    4533                        document.forms[0].associated_domain.value = ''; 
    4634                } 
    47         } 
    48         cExecute ('$this.ldap_functions.get_associated_domain&context='+context, handler_associated_domain);     
     35        }; 
     36        cExecute ('$this.ldap_functions.get_associated_domain&context=' + context, handler_associated_domain); 
     37} 
     38 
     39function get_lang(key_raw) 
     40{ 
     41        key = key_raw.replace(/ /g,"_"); 
     42        key = key.replace(/-/g,""); 
     43        lang = eval("global_langs."+key.toLowerCase()); 
     44         
     45        if (typeof(lang)=='undefined') 
     46                return key_raw + '*'; 
     47        else 
     48                return lang; 
    4949} 
    5050 
     
    116116 
    117117                if (org_name != '') 
    118                 { 
    119                         if (document.forms[0].associated_domain.value != '') 
    120                         { 
    121                                 associatedDomain_name = document.forms[0].associated_domain.value; 
    122                                 document.forms[0].mail1.value = document.forms[0].uid.value + '@' + associatedDomain_name; 
    123                         } 
    124                         else 
    125                         { 
    126118                                document.forms[0].mail1.value = document.forms[0].uid.value + '@' + org_name + '.' + domain_name; 
    127                         } 
    128                 } 
    129119                else 
    130120                        document.forms[0].mail1.value = document.forms[0].uid.value; 
     
    140130}        
    141131 
     132function loadAppended( id, values, name ) 
     133{ 
     134    if( !values ) return; 
     135 
     136 
     137    if( typeof name === "undefined" || !name ) 
     138        name = id + '[]'; 
     139         
     140    for( var i = 0; i < values.length; i++ ) 
     141    { 
     142        if( !values[i] || values[i] === "" ) continue; 
     143 
     144        var clone = addTextbox( name, id ); 
     145 
     146        clone.value = values[i]; 
     147    } 
     148} 
     149 
     150function addTextbox( name, targetId, id ) 
     151{ 
     152    var input = document.createElement( "input" ); 
     153    input.type = "text"; 
     154    input.id = ( typeof id === "undefined" )? "" : id; 
     155    input.name = name; 
     156 
     157    var target = document.getElementById( targetId ); 
     158 
     159    target.appendChild( input ); 
     160 
     161    removable( input ); 
     162 
     163    return( input ); 
     164} 
     165 
     166function removable( target ) 
     167{ 
     168    with( target.parentNode ) 
     169    { 
     170        var minus = document.createElement( "span" ); 
     171        var br = document.createElement( "br" ); 
     172 
     173        minus.innerHTML = " -"; 
     174        minus.style.cursor = "pointer"; 
     175        minus.onclick = function(){ 
     176 
     177            removeChild( target ); 
     178            removeChild( minus ); 
     179            removeChild( br ); 
     180        } 
     181 
     182        appendChild( minus ); 
     183        appendChild( br ); 
     184    } 
     185} 
     186 
     187function multiply( id, full ) 
     188{ 
     189    var target = document.getElementById( id ); 
     190 
     191    var clone = target.cloneNode( false ); 
     192 
     193    clone.id = ""; 
     194 
     195    if( !full ) 
     196        clone.value = ""; 
     197 
     198    target.parentNode.appendChild( clone ); 
     199 
     200    removable( clone ); 
     201 
     202    return( clone ); 
     203} 
     204 
     205function appendClone( id, full ) 
     206{ 
     207    return multiply( id, full ); 
     208} 
     209 
    142210function FormataValor(event, campo) 
    143211{ 
     
    155223                campo.value = vr.substr( 0, tam - 1 ); 
    156224         
    157         if (( tam == 1 ) && ( event.keyCode != 8 ) && ( event.keyCode != 46 )) 
     225        if (( tam <= 1 ) && ( event.keyCode != 8 ) && ( event.keyCode != 46 )) 
    158226                campo.value = separador1 + vr; 
    159227                 
     
    166234        if ((( tam == 9 ) || ( tam == 8 )) && (( event.keyCode == 8 ) || ( event.keyCode == 46 ))) 
    167235                campo.value = vr.substr( 0, tam - 1 ); 
    168  
    169         if ((campo.value.length >= 1) && (campo.value.indexOf(separador1) != 0)){ 
    170                 x = campo.value; 
    171                 if (x.length != 10){ 
    172                         alert("Campo Telefone incorreto."); 
    173                 } 
    174         campo.value = separador1 + x.substr(0,2) + separador2; 
    175                 campo.value = campo.value + x.substr(2,4) + separador3 + x.substr(6); 
    176         } 
    177236} 
    178237 
  • trunk/expressoAdmin1_2/js/jscode/groups.js

    r640 r5133  
    7979} 
    8080 
     81function Element( id ) 
     82{ 
     83    return document.getElementById( id ); 
     84} 
     85 
    8186// HANDLER CREATE 
    8287// É necessário 2 funcões de retorno por causa do cExecuteForm. 
     
    113118} 
    114119 
    115 function sinc_combos_org(context, recursive) 
     120function sinc_combos_org() 
    116121{ 
    117122        combo_org_groups = document.getElementById('ea_combo_org_groups'); 
     
    122127                { 
    123128                        combo_org_groups.options[i].selected = true; 
    124                         get_available_users(context, recursive); 
     129                        get_available_users(); 
    125130                        break; 
    126131                } 
     
    128133} 
    129134 
    130 function get_available_users(context, recursive) 
    131 { 
    132         var handler_get_available_users = function(data) 
    133         { 
    134                 select_available_users = document.getElementById('ea_select_available_users'); 
     135function get_available_users() 
     136{ 
     137/*      var sentence = Element('ea_input_searchUser').value; 
    135138                 
    136                 //Limpa o select 
    137                 for(var i=0; i<select_available_users.options.length; i++) 
    138                 { 
    139                         select_available_users.options[i] = null; 
    140                         i--; 
    141                 } 
    142  
    143                 if ((data) && (data.length > 0)) 
    144                 { 
    145                         // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 
    146                         select_available_users.innerHTML = '&nbsp;' + data; 
    147                         select_available_users.outerHTML = select_available_users.outerHTML; 
     139        var url = '$this.ldap_functions.get_available_users_and_shared_acounts&context=' 
     140                    + Element('ea_combo_org_info').value 
     141                    + '&sentence=' + sentence; 
     142 
     143        var fillHandler = function( fill ){ 
    148144                         
    149                         select_available_users.disabled = false; 
    150                         select_available_users_clone = document.getElementById('ea_select_available_users').cloneNode(true); 
    151                         document.getElementById('ea_input_searchUser').value = ''; 
    152                 } 
    153         } 
    154          
    155         //Impede chamada recursiva na raiz das organizações 
    156         if ((recursive) && (document.forms[0].ldap_context.value == document.getElementById('ea_combo_org_groups').value)) 
    157         { 
    158                 alert(get_lang('It is not allow select all users from the root organization') + '.'); 
    159                 document.getElementById('ea_check_allUsers').checked = false; 
    160  
    161                 // Limpa select 
    162                 select_available_users = document.getElementById('ea_select_available_users'); 
    163                 select_available_users.innerHTML = '&nbsp;'; 
    164                 select_available_users.outerHTML = select_available_users.outerHTML; 
    165                 return; 
    166         } 
    167         cExecute ('$this.ldap_functions.get_available_users&context='+context+'&recursive='+recursive, handler_get_available_users); 
     145        Element('ea_select_available_users').innerHTML = fill; 
     146 
     147        return( fill !== "" ); 
     148        } 
     149         
     150        userFinder( sentence, fillHandler, url, 'ea_span_searching' );*/ 
     151 
     152        optionFind( 'ea_input_searchUser', 'ea_select_available_users', 
     153                    '$this.ldap_functions.get_available_users_and_shared_acounts', 
     154                    'ea_combo_org_groups', 'ea_span_searching' ); 
    168155} 
    169156 
     
    237224 
    238225// Funcoes                                                                                       
    239 function optionFinderTimeout(obj) 
    240 { 
    241         clearTimeout(finderTimeout);     
    242         var oWait = document.getElementById("ea_span_searching"); 
    243         oWait.innerHTML = get_lang('Searching') + '...'; 
    244         var finderTimeout = setTimeout("optionFinder('"+obj.id+"')",500); 
    245 } 
    246 function optionFinder(id) { 
    247         var oWait = document.getElementById("ea_span_searching"); 
    248         var oText = document.getElementById(id); 
    249                          
    250         //Limpa todo o select 
    251         var select_available_users_tmp = document.getElementById('ea_select_available_users') 
    252         for(var i = 0;i < select_available_users_tmp.options.length; i++) 
    253                 select_available_users_tmp.options[i--] = null; 
    254  
    255         var RegExp_name = new RegExp("\\b"+oText.value, "i"); 
    256  
    257         //Inclui usuário começando com a pesquisa 
    258         for(i = 0; i < select_available_users_clone.length; i++){ 
    259                 if (RegExp_name.test(select_available_users_clone[i].text)) 
    260                 { 
    261                         sel = select_available_users_tmp.options; 
    262                         option = new Option(select_available_users_clone[i].text,select_available_users_clone[i].value);                                 
    263                         sel[sel.length] = option; 
    264                 } 
    265         } 
    266          
    267         oWait.innerHTML = '&nbsp;'; 
     226function optionFinderTimeout(obj, event) 
     227{ 
     228 
     229        if( event.keyCode == 13 ) 
     230                { 
     231            limit = 0; 
     232            optionFinder(obj.id); 
     233                } 
     234} 
     235function optionFinder(id) 
     236{ 
     237        get_available_users(); 
    268238}                        
    269239 
  • trunk/expressoAdmin1_2/js/jscode/institutional_accounts.js

    r3162 r5133  
    3232{ 
    3333        sinc_combos_org(Element('ea_combo_org').value); 
    34         get_available_users(Element('ea_combo_org').value); 
    35         get_associated_domain(Element('ea_combo_org').value); 
    36 } 
    37  
    38 function get_available_users(context) 
    39 { 
    40         var     handler_get_users = function(data) 
    41         { 
    42                 select_available_users = Element('ea_select_available_users'); 
    43                  
    44                 //Clean select 
    45                 for(var i=0; i<select_available_users.options.length; i++) 
    46                 { 
    47                         select_available_users.options[i] = null; 
    48                         i--; 
    49                 } 
    50  
    51                 if ((data) && (data.length > 0)) 
    52                 { 
    53                         // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 
    54                         select_available_users.innerHTML = '&nbsp;' + data; 
    55                         select_available_users.outerHTML = select_available_users.outerHTML; 
    56                          
    57                         select_available_users.disabled = false; 
    58                         select_available_users_clone = Element('ea_select_available_users').cloneNode(true); 
    59                         //document.getElementById('ea_input_searchUser').value = ''; 
    60                 } 
    61         } 
    62         cExecute ('$this.ldap_functions.get_available_users&context='+context, handler_get_users); 
    63 } 
     34} 
     35 
    6436 
    6537function search_organization(key, element) 
     
    8759                { 
    8860                        combo_org_available_users.options[i].selected = true; 
    89                         get_available_users(context); 
    9061                        break; 
    9162                } 
     
    9364} 
    9465 
    95 var finderTimeout = ''; 
    96 function optionFinderTimeout(obj) 
    97 { 
    98         clearTimeout(finderTimeout); 
    99         var oWait = Element("ea_span_searching"); 
    100         oWait.innerHTML = get_lang('searching') + '...'; 
    101         finderTimeout = setTimeout("optionFinder('"+obj.id+"')",500); 
     66// var finderTimeout = ''; 
     67// optionFinderTimeout 
     68function optionFinderTimeout(obj, event) 
     69{ 
     70 
     71    if( event && event.keyCode !== 13 ) 
     72        return( true ); 
     73//      clearTimeout(finderTimeout); 
     74//      var oWait = Element("ea_span_searching"); 
     75//      oWait.innerHTML = get_lang('searching') + '...'; 
     76//      finderTimeout = setTimeout("optionFinder('"+obj.id+"')",500); 
     77    optionFinder( obj.id ); 
     78         
     79    return( false ); 
    10280} 
    10381function optionFinder(id) { 
    104         var oWait = Element("ea_span_searching"); 
    105         var oText = Element(id); 
    106                  
    107         //Limpa todo o select 
    108         var select_available_users_tmp = Element('ea_select_available_users') 
    109  
    110         for(var i = 0;i < select_available_users_tmp.options.length; i++) 
    111                 select_available_users_tmp.options[i--] = null; 
    112  
    113         var RegExp_name = new RegExp("\\b"+oText.value, "i"); 
    114          
    115         //Inclui usuário começando com a pesquisa 
    116         for(i = 0; i < select_available_users_clone.length; i++){ 
    117                 if ( RegExp_name.test(select_available_users_clone[i].text) || (select_available_users_clone[i].value == -1) ) 
    118                 { 
    119                         sel = select_available_users_tmp.options; 
    120                         option = new Option(select_available_users_clone[i].text,select_available_users_clone[i].value); 
    121  
    122                         if (select_available_users_clone[i].value == -1) 
    123                                 option.disabled = true; 
    124  
    125                         sel[sel.length] = option; 
    126                 } 
    127         } 
    128         oWait.innerHTML = '&nbsp;'; 
     82//     var sentence = Element( id ).value; 
     83//  
     84//     var url = '$this.ldap_functions.get_available_users&context=' + Element('ea_combo_org').value + '&sentence=' + sentence; 
     85//  
     86//     var fillHandler = function( fill ){ 
     87//  
     88//          return fillContentSelect( fill, 'ea_select_available_users' ); 
     89//  
     90//      } 
     91//  
     92//     userFinder( sentence, fillHandler, url, 'ea_span_searching' ); 
     93 
     94    optionFind( id, 'ea_select_available_users', '$this.ldap_functions.get_available_users', 
     95                    'ea_combo_org_available_users', 'ea_span_searching' ); 
    12996}                        
    13097 
     
    183150} 
    184151 
    185 function get_institutional_accounts_timeOut(input) 
    186 { 
    187         var head_table = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("remove")+'</td></tr></table>'; 
    188          
    189         if (input.length > 4) 
    190         { 
    191                 clearTimeout(finderTimeout); 
    192                 finderTimeout = setTimeout("get_institutional_accounts('"+input+"')",500); 
    193         } 
    194         else 
    195         { 
    196                 Element('institutional_accounts_content').innerHTML = head_table; 
     152function get_institutional_accounts_timeOut(input, event) 
     153{ 
     154        Element('institutional_accounts_content').innerHTML = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("remove")+'</td></tr></table>'; 
     155         
     156        if (event.keyCode === 13) 
     157        { 
     158            get_institutional_accounts( input ); 
    197159        } 
    198160} 
     
    204166                if (data.status == 'true') 
    205167                { 
    206                         var table = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("remove")+'</td></tr>'+data.trs+'</table>'; 
     168                        var table = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("delete")+'</td></tr>'+data.trs+'</table>'; 
    207169                        Element('institutional_accounts_content').innerHTML = table; 
    208170                } 
     
    243205                        Element('mail').value = data.mail; 
    244206                        Element('desc').value = data.description; 
    245                         //Necessario, pois o IE6 tem um bug que não exibe as novas opções se o innerHTML estava vazio 
    246                         Element('ea_select_owners').innerHTML = '&nbsp;' + data.owners; 
    247                         Element('ea_select_owners').outerHTML = Element('ea_select_owners').outerHTML; 
     207                        Element('ea_select_owners').innerHTML = data.owners; 
    248208 
    249209                        sinc_combos_org(data.user_context); 
  • trunk/expressoAdmin1_2/js/jscode/maillists.js

    r3351 r5133  
    11countFiles = 0; 
     2 
     3function Element(id){ 
     4   return document.getElementById( id ); 
     5} 
     6 
    27function validate_fields(type) 
    38{ 
     
    157162} 
    158163 
    159 function get_available_users(context, recursive,listSearch) 
    160 { 
    161         //Impede chamada recursiva na raiz das organizações 
    162         if(document.getElementById("autosearch").value == "true"){ 
    163                 if ((recursive) && (document.forms[0].ldap_context.value == document.getElementById('ea_combo_org_maillists').value)) 
    164                 { 
    165                         alert(get_lang('It is not allow select all users from the root organization') + '.'); 
    166                         document.getElementById('ea_check_allUsers').checked = false; 
     164function get_available_users(context, recursive) 
     165{ 
     166//      var sentence = Element('ea_input_searchUser').value; 
     167//  
     168//      var url = '$this.ldap_functions.get_available_users_and_maillist&context=' 
     169//                  + Element('ea_combo_org_maillists').value 
     170//                  + '&sentence=' + sentence 
     171//                  + '&denied_uidnumber=' + document.forms[0].uidnumber.value; 
     172//  
     173//      var fillHandler = function( fill ){ 
     174//  
     175//      Element('ea_select_available_users').innerHTML = fill; 
     176//  
     177//      return( fill !== "" ); 
     178//     } 
     179//  
     180//      userFinder( sentence, fillHandler, url, 'ea_span_searching' ); 
    167181                         
    168                         // Limpa select 
    169                         select_available_users = document.getElementById('ea_select_available_users'); 
    170                         select_available_users.innerHTML = '&nbsp;'; 
    171                         select_available_users.outerHTML = select_available_users.outerHTML; 
    172                         return; 
    173                 } 
    174         cExecute ('$this.ldap_functions.get_available_users_and_maillist&context='+context+'&recursive='+recursive+'&denied_uidnumber='+document.forms[0].uidnumber.value+'&listSearch='+listSearch, handler_get_available_users); 
    175         }else 
    176                 document.getElementById('ea_input_searchUser').value = ''; 
     182        var url = '$this.ldap_functions.get_available_users_and_maillist&denied_uidnumber=' + document.forms[0].uidnumber.value; 
     183         
     184        optionFind( 'ea_input_searchUser', 'ea_select_available_users', url, 
     185                    'ea_combo_org_maillists', 'ea_span_searching' ); 
    177186} 
    178187 
     
    301310 
    302311// Funcoes 
    303 /*function optionFinderTimeout(obj) 
    304 { 
    305         clearTimeout(finderTimeout);     
    306         var oWait = document.getElementById("ea_span_searching"); 
    307         oWait.innerHTML = get_lang('Searching') + '...'; 
    308         finderTimeout = setTimeout("optionFinder('"+obj.id+"')",500); 
    309 }*/ 
    310  
    311 function optionFinderTimeout(obj, numMin, type, autoSearch,listSearch){ 
    312         var oWait = document.getElementById("ea_span_searching"); 
    313         oWait.innerHTML = 'Buscando...'; 
    314         clearTimeout(finderTimeout);             
    315          
    316         if(autoSearch == "True"){ 
    317                 finderTimeout = setTimeout("optionFinderLocal('"+obj.id+"')",600); 
    318         } 
    319         else if (obj.value.length >= numMin){ 
    320                 finderTimeout = setTimeout("optionFinderLdap('"+obj.id+"','"+numMin+"','"+type+"','"+listSearch+"')",600); 
    321         }else { 
    322                 oWait.innerHTML = 'Mínimo de '+numMin+' letras para pesquisa'; 
    323                 var select_available_users_tmp = document.getElementById('ea_select_available_users'); 
    324                 for(var i = 0;i < select_available_users_tmp.options.length; i++) 
    325                 select_available_users_tmp.options[i--] = null; 
    326         } 
    327 } 
    328 var handler_get_available_users = function(data) 
    329         { 
    330                 select_available_users = document.getElementById('ea_select_available_users'); 
    331                  
    332                 //Limpa o select 
    333                 for(var i=0; i<select_available_users.options.length; i++) 
    334                 { 
    335                         select_available_users.options[i] = null; 
    336                         i--; 
    337                 } 
    338  
    339                 if ((data) && (data.length > 0)) 
    340                 { 
    341                         // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 
    342                         select_available_users.innerHTML = '&nbsp;' + data; 
    343                         select_available_users.outerHTML = select_available_users.outerHTML; 
    344                          
    345                         select_available_users.disabled = false; 
    346                         select_available_users_clone = document.getElementById('ea_select_available_users').cloneNode(true); 
    347                         //document.getElementById('ea_input_searchUser').value = ''; 
    348                 } 
    349          
    350         } 
    351 // Pesquisa LDAP 
    352 function optionFinderLdap(id,numMin, type,listSearch){ 
    353         var oWait = document.getElementById("ea_span_searching"); 
    354         var oText = document.getElementById(id); 
    355          
    356         if (oText.value.length < numMin) { 
    357                 oWait.innerHTML = ''; 
    358                 var select_available_users_tmp = document.getElementById('ea_select_available_users'); 
    359                 for(var i = 0;i < select_available_users_tmp.options.length; i++) 
    360                         select_available_users_tmp.options[i--] = null; 
    361         } 
    362          
    363         if (oText.value.length >= numMin){ 
    364                 var context = document.getElementById('ea_combo_org_maillists').value; 
    365                 recursive = document.getElementById("ea_check_allUsers").checked; 
    366                 cExecute ('$this.ldap_functions.search_available_users_and_maillist&context='+(context)+'&recursive='+(recursive)+'&type='+(type == '' ? 'list' : 'search')+'&filter='+oText.value+'&listSearch='+listSearch, handler_get_available_users); 
    367                 oWait.innerHTML = '&nbsp;'; 
    368         } 
    369 } 
    370  
    371 function optionFinderLocal(id) { 
    372         var oWait = document.getElementById("ea_span_searching"); 
    373         var oText = document.getElementById(id); 
    374                  
    375         //Limpa todo o select 
    376         var select_available_users_tmp = document.getElementById('ea_select_available_users') 
    377  
    378         for(var i = 0;i < select_available_users_tmp.options.length; i++) 
    379                 select_available_users_tmp.options[i--] = null; 
    380  
    381         var RegExp_name = new RegExp("\\b"+oText.value, "i"); 
    382          
    383         //Inclui usuário começando com a pesquisa 
    384         for(i = 0; i < select_available_users_clone.length; i++){ 
    385                 if ( RegExp_name.test(select_available_users_clone[i].text) || (select_available_users_clone[i].value == -1) ) 
    386                 { 
    387                         sel = select_available_users_tmp.options; 
    388                         option = new Option(select_available_users_clone[i].text,select_available_users_clone[i].value); 
    389  
    390                         if (select_available_users_clone[i].value == -1) 
    391                                 option.disabled = true; 
    392  
    393                         sel[sel.length] = option; 
    394                 } 
    395         } 
    396         oWait.innerHTML = '&nbsp;'; 
     312function optionFinderTimeout(obj, event) 
     313{ 
     314    if( event && event.keyCode !== 13 ) 
     315        return; 
     316         
     317        optionFinder( obj.id ); 
     318} 
     319function optionFinder(id) { 
     320        get_available_users(); 
    397321}                        
    398322 
  • trunk/expressoAdmin1_2/js/jscode/managers.js

    r639 r5133  
    112112 
    113113var searchTimeout; 
    114 function search_manager(manager_lid) 
     114function search_manager(manager_lid, event) 
    115115{ 
    116         clearTimeout(searchTimeout); 
     116//      clearTimeout(searchTimeout); 
     117//       
     118//      var spam = document.getElementById('ea_span_searching_manager'); 
     119//      if (manager_lid.length <= 3) 
     120//              spam.innerHTML = get_lang('Type more') + ' ' + (4 - manager_lid.length) + ' ' + 'letters' + '.'; 
     121//      else 
     122//      { 
     123//              spam.innerHTML = get_lang('Searching') + '...'; 
     124//              searchTimeout = setTimeout("search_user('"+manager_lid+"')",750); 
     125//      } 
     126        if( event && event.keyCode !== 13 ) 
     127            return( true ); 
    117128         
    118         var spam = document.getElementById('ea_span_searching_manager'); 
    119         if (manager_lid.length <= 3) 
    120                 spam.innerHTML = get_lang('Type more') + ' ' + (4 - manager_lid.length) + ' ' + 'letters' + '.'; 
    121         else 
    122         { 
    123                 spam.innerHTML = get_lang('Searching') + '...'; 
    124                 searchTimeout = setTimeout("search_user('"+manager_lid+"')",750); 
    125         } 
     129        search_user( manager_lid ); 
     130 
     131        return( false ); 
    126132} 
    127133 
    128134function search_user(search) 
    129135{ 
    130         var handler_search_manager = function(data) 
    131         { 
    132                 var spam = document.getElementById('ea_span_searching_manager'); 
    133                 select_available_users = document.getElementById('ea_select_managers'); 
    134                  
    135                 if (data.status == 'false') 
    136                 { 
    137                         spam.innerHTML = data.msg; 
    138                         // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 
    139                         select_available_users.innerHTML = '#'; 
    140                         select_available_users.outerHTML = select_available_users.outerHTML; 
    141                         return; 
    142                 } 
    143                  
    144                 spam.innerHTML = ''; 
    145                 // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 
    146                 select_available_users.innerHTML = '#' + data; 
    147                 select_available_users.outerHTML = select_available_users.outerHTML; 
    148         } 
     136//      var handler_search_manager = function(data) 
     137//      { 
     138//              var spam = document.getElementById('ea_span_searching_manager'); 
     139//              select_available_users = document.getElementById('ea_select_managers'); 
     140//               
     141//              if (data.status == 'false') 
     142//              { 
     143//                      spam.innerHTML = data.msg; 
     144//                      // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 
     145//                      select_available_users.innerHTML = '#'; 
     146//                      select_available_users.outerHTML = select_available_users.outerHTML; 
     147//                      return; 
     148//              } 
     149//               
     150//              spam.innerHTML = ''; 
     151//              // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 
     152//              select_available_users.innerHTML = '#' + data; 
     153//              select_available_users.outerHTML = select_available_users.outerHTML; 
     154//      } 
     155//       
     156//      cExecute ('$this.ldap_functions.search_user&search='+search, handler_search_manager); 
     157 
     158        var url = '$this.ldap_functions.search_user&search='+search; 
    149159         
    150         cExecute ('$this.ldap_functions.search_user&search='+search, handler_search_manager); 
     160//      var fillHandler = function( data ) 
     161//      { 
     162//          Element( 'ea_select_managers' ).innerHTML = data; 
     163//  
     164//          return( data !== "" ); 
     165//      } 
     166//  
     167//      userFinder( search, fillHandler, url, 'ea_span_searching_manager' ); 
     168         
     169        optionFind( false, 'ea_select_managers', url,  false, 'ea_span_searching_manager' ); 
    151170} 
    152171 
  • trunk/expressoAdmin1_2/js/jscode/shared_accounts.js

    r3356 r5133  
    33function create_shared_accounts() 
    44{ 
     5//      select_owners = Element('ea_select_owners'); 
     6        hidden_owners_acl = Element('owners_acls'); 
     7        hidden_owners_calendar_acl = Element('owners_calendar_acls'); 
     8 
    59        select_owners = Element('ea_select_owners'); 
    6         hidden_owners_acl = Element('owners_acls'); 
    7         for(var i = 0;i < select_owners.options.length; i++){            
    8                 var user = select_owners.options[i].value; 
    9                 select_owners.options[i].value = user;                 
    10         } 
     10        for(var i = 0;i < select_owners.options.length; i++) 
     11                select_owners.options[i].selected = true; 
     12                 
    1113        hidden_owners_acl.value =  admin_connector.serialize(sharemailbox.ownersAcl); 
     14        hidden_owners_calendar_acl.value =  admin_connector.serialize(sharemailbox.ownersCalendarAcl); 
    1215        cExecuteForm ("$this.shared_accounts.create", document.forms['shared_accounts_form'], handler_create_shared_accounts); 
    1316        hidden_owners_acl.value = ""; 
     
    5356function set_onload() 
    5457{ 
    55         sinc_combos_org(Element('ea_combo_org').value); 
    56         get_available_users(Element('ea_combo_org').value); 
    57         get_associated_domain(Element('ea_combo_org').value); 
    58 } 
    59  
    60 function get_available_users(context) 
    61 { 
    62         var     handler_get_users = function(data) 
    63         { 
    64                 select_available_users = Element('ea_select_available_users'); 
    65                  
    66                 //Clean select 
    67                 for(var i=0; i<select_available_users.options.length; i++) 
    68                 { 
    69                         select_available_users.options[i] = null; 
    70                         i--; 
    71                 } 
    72  
    73                 if ((data) && (data.length > 0)) 
    74                 { 
    75                         // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 
    76                         select_available_users.innerHTML = '&nbsp;' + data; 
    77                         select_available_users.outerHTML = select_available_users.outerHTML; 
    78                          
    79                         select_available_users.disabled = false; 
    80                         select_available_users_clone = Element('ea_select_available_users').cloneNode(true); 
    81                         //document.getElementById('ea_input_searchUser').value = ''; 
    82                 } 
    83         } 
    84         cExecute ('$this.ldap_functions.get_available_users2&context='+context, handler_get_users); 
     58 
     59    if(sharemailbox.ownersAcl) 
     60        { 
     61            delete sharemailbox.ownersAcl; 
     62            sharemailbox.ownersAcl = new Array(); 
     63                } 
     64 
     65    if(sharemailbox.ownersCalendarAcl) 
     66                { 
     67        delete sharemailbox.ownersAcl; 
     68        sharemailbox.ownersAcl = new Array(); 
     69        } 
     70 
     71        get_associated_domain(Element('ea_combo_org').value); 
    8572} 
    8673 
     
    10996                { 
    11097                        combo_org_available_users.options[i].selected = true; 
    111                         get_available_users(context); 
     98//                      get_available_users(context); 
    11299                        break; 
    113100                } 
     
    115102} 
    116103 
    117 var finderTimeout = ''; 
    118 function optionFinderTimeout(obj) 
    119 { 
    120         clearTimeout(finderTimeout); 
    121         var oWait = Element("ea_span_searching"); 
    122         oWait.innerHTML = get_lang('searching') + '...'; 
    123         finderTimeout = setTimeout("optionFinder('"+obj.id+"')",500); 
     104function optionFinderTimeout(obj, event) 
     105{ 
     106        if( event.keyCode === 13 ) 
     107        { 
     108            limit = 0; 
     109            optionFinder(obj.id); 
     110        } 
    124111} 
    125112function optionFinder(id) { 
    126         var oWait = Element("ea_span_searching"); 
    127         var oText = Element(id); 
    128                  
    129         //Limpa todo o select 
    130         var select_available_users_tmp = Element('ea_select_available_users') 
    131  
    132         for(var i = 0;i < select_available_users_tmp.options.length; i++) 
    133                 select_available_users_tmp.options[i--] = null; 
    134  
    135         var RegExp_name = new RegExp("\\b"+oText.value, "i"); 
    136          
    137         //Inclui usuï¿œrio comeï¿œando com a pesquisa 
    138         for(i = 0; i < select_available_users_clone.length; i++){ 
    139                 if ( RegExp_name.test(select_available_users_clone[i].text) || (select_available_users_clone[i].value == -1) ) 
    140                 { 
    141                         sel = select_available_users_tmp.options; 
    142                         option = new Option(select_available_users_clone[i].text,select_available_users_clone[i].value); 
    143  
    144                         if (select_available_users_clone[i].value == -1) 
    145                                 option.disabled = true; 
    146  
    147                         sel[sel.length] = option; 
    148                 } 
    149         } 
    150         oWait.innerHTML = '&nbsp;'; 
     113         
     114        var sentence = Element(id).value; 
     115 
     116        var url = '$this.ldap_functions.get_available_users2&context=' + 
     117                            Element('ea_combo_org_available_users').value + 
     118                            ( sentence ? '&sentence=' + sentence: '' ); 
     119 
     120        userFinder( sentence, 'ea_select_available_users', url, 'ea_span_searching' ); 
    151121}                        
    152122 
     
    198168                Element('em_input_saveAcl').checked = false; 
    199169                Element('em_input_folderAcl').checked = false; 
     170                Element('em_input_readCalendar').checked = false; 
     171                Element('em_input_writeCalendar').checked = false; 
     172                Element('em_input_editCalendar').checked = false; 
     173                Element('em_input_deleteCalendar').checked = false; 
     174                Element('em_input_restrictCalendar').checked = false; 
    200175        Element('em_input_sendAcl').disabled = true; 
    201176        select_owners = Element('ea_select_owners'); 
     
    211186                        var user = select_owners.options[i].value; 
    212187                        delete sharemailbox.ownersAcl[user]; 
     188                       sharemailbox.ownersCalendarAcl[user] = ''; 
    213189                        select_owners.options[i--] = null; 
    214190                } 
     
    222198} 
    223199 
    224 function get_shared_accounts_timeOut(input) 
    225 { 
    226         var head_table = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("remove")+'</td></tr></table>'; 
    227          
    228         if (input.length > 4) 
    229         { 
    230                 clearTimeout(finderTimeout); 
    231                 finderTimeout = setTimeout("get_shared_accounts('"+input+"')",500); 
    232         } 
    233         else 
    234         { 
    235                 Element('shared_accounts_content').innerHTML = head_table; 
    236         } 
    237 } 
    238  
    239 function get_shared_accounts(input) 
     200function get_shared_accounts_timeOut(input, event) 
     201{ 
     202        Element('shared_accounts_content').innerHTML = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("display name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("remove")+'</td></tr></table>'; 
     203         
     204        if (event.keyCode === 13) 
     205        { 
     206            get_shared_accounts( input ); 
     207        } 
     208} 
     209 
     210function get_shared_accounts(input, callback) 
    240211{ 
    241212        var handler_get_shared_accounts = function(data) 
     
    243214                if (data.status == 'true') 
    244215                { 
    245                         var table = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("remove")+'</td></tr>'+data.trs+'</table>'; 
     216                        var table = '<table border="0" width="90%"><tr bgcolor="#d3dce3"><td width="30%">'+get_lang("full name")+'</td><td width="30%">'+get_lang("display name")+'</td><td width="30%">'+get_lang("mail")+'</td><td width="5%" align="center">'+get_lang("remove")+'</td></tr>'+data.trs+'</table>'; 
    246217                        Element('shared_accounts_content').innerHTML = table; 
    247218                } 
     
    260231                        modal('shared_accounts_modal','save'); 
    261232                         
     233                        Element( 'lightboxCaption' ).innerHTML = get_lang( 'Edit Shared Accounts' ); 
     234                        Element('shared_accounts_modal').value = data.mailquota; 
     235 
     236 
    262237                        var combo_org = Element('ea_combo_org'); 
    263238                        for (i=0; i<combo_org.length; i++) 
     
    278253                        if (data.phpgwAccountVisible == '-1') 
    279254                                Element('phpgwAccountVisible').checked = true; 
    280                          
     255                         Element('uidnumber').value = data.uidnumber; 
    281256                        Element('cn').value = data.cn; 
    282257                        Element('mail').value = data.mail; 
     
    301276            } 
    302277 
     278            if( data.mailalternateaddress ) 
     279                loadAppended( 'mailalternateaddress', data.mailalternateaddress ); 
     280 
    303281                        sinc_combos_org(data.user_context); 
    304282                        sharemailbox.ownersAcl = new Array(); 
    305             if( data.owners != "undefined" && data.owners_acl != "undefined" ){  
     283                        sharemailbox.ownersCalendarAcl = new Array(); 
     284            if( data.owners && data.owners != "undefined" && data.owners_acl != "undefined" ){  
    306285                                for (i=0; i<data.owners.length; i++){ 
    307286                                                sharemailbox.ownersAcl[ data.owners[i] ] = data.owners_acl[i];   
     287                                                sharemailbox.ownersCalendarAcl[ data.owners[i] ] = data.owners_calendar_acl[i]; 
    308288                                } 
    309289            } 
     
    324304        else   form = document.forms["shared_accounts_form"]; 
    325305         
     306         hidden_owners_calendar_acl = Element('owners_calendar_acls'); 
    326307        hidden_owners_acl = Element('owners_acls'); 
    327308        select_owners = Element('ea_select_owners'); 
     
    331312                } 
    332313        hidden_owners_acl.value =  admin_connector.serialize(sharemailbox.ownersAcl); 
     314        hidden_owners_calendar_acl.value =  admin_connector.serialize(sharemailbox.ownersCalendarAcl); 
    333315        cExecuteForm ("$this.shared_accounts.save", form, handler_save_shared_accounts); 
    334         hidden_owners_acl.value = ""; 
     316        get_shared_accounts(Element('ea_shared_account_search').value); 
    335317} 
    336318 
     
    348330        else 
    349331        { 
    350                 get_shared_accounts(Element('ea_shared_account_search').value); 
     332                 
     333                hidden_owners_acl.value = ""; 
    351334                close_lightbox(); 
    352335                write_msg(get_lang('Shared account successful saved') + '.', 'normal'); 
     
    374357        } 
    375358        cExecute ('$this.shared_accounts.delete&uid='+uid, handle_delete_shared_account); 
    376 }       function cShareMailbox() 
     359}function cShareMailbox() 
    377360        { 
    378361                this.arrayWin = new Array(); 
     
    380363                this.alert = false; 
    381364                this.ownersAcl = new Array(); 
     365                this.ownersCalendarAcl = new Array(); 
    382366        } 
    383367 
     
    419403                Element('em_input_saveAcl').disabled = true; 
    420404                Element('em_input_folderAcl').checked = false; 
     405                Element('em_input_readCalendar').checked = false; 
     406                Element('em_input_writeCalendar').checked = false; 
     407                Element('em_input_editCalendar').checked = false; 
     408                Element('em_input_deleteCalendar').checked = false; 
     409                Element('em_input_restrictCalendar').checked = false; 
     410 
     411                Element('em_input_editCalendar').disabled = true; 
     412                Element('em_input_deleteCalendar').disabled = true; 
     413                Element('em_input_restrictCalendar').disabled = true; 
    421414                 
    422                 if (this.ownersAcl[user] != "false" && this.ownersAcl[user].indexOf('lrs',0) >= 0) 
     415                if(this.ownersCalendarAcl[user]) 
     416                { 
     417                    if (this.ownersCalendarAcl[user].indexOf('1-',0) >= 0) 
     418                    { 
     419                            Element('em_input_readCalendar').checked = true; 
     420 
     421                            Element('em_input_editCalendar').disabled = false; 
     422                            Element('em_input_deleteCalendar').disabled = false; 
     423                            Element('em_input_restrictCalendar').disabled = false; 
     424                    } 
     425                    if (this.ownersCalendarAcl[user].indexOf('2-',0) >= 0) 
     426                    { 
     427                            Element('em_input_writeCalendar').checked = true; 
     428                    } 
     429                    if (this.ownersCalendarAcl[user].indexOf('4-',0) >= 0) 
     430                    { 
     431                            Element('em_input_editCalendar').checked = true; 
     432                    } 
     433                    if (this.ownersCalendarAcl[user].indexOf('8-',0) >= 0) 
     434                    { 
     435                            Element('em_input_deleteCalendar').checked = true; 
     436                    } 
     437                    if (this.ownersCalendarAcl[user].indexOf('16-',0) >= 0) 
     438                    { 
     439                            Element('em_input_restrictCalendar').checked = true; 
     440                    } 
     441                } 
     442 
     443                if(this.ownersAcl[user]) 
     444                { 
     445                    if ( this.ownersAcl[user].indexOf('lrs',0) >= 0) 
    423446                { 
    424447                        Element('em_input_sendAcl').disabled = false; 
     
    428451                        Element('em_input_sendAcl').disabled = true; 
    429452                         
    430                 if (this.ownersAcl[user] != "false" && this.ownersAcl[user].indexOf('d',0) >= 0) 
     453                    if ( this.ownersAcl[user].indexOf('d',0) >= 0) 
    431454                { 
    432455                        Element('em_input_deleteAcl').checked = true; 
    433456                } 
    434                 if (this.ownersAcl[user] != "false" && this.ownersAcl[user].indexOf('wi',0) >= 0) 
     457                    if ( this.ownersAcl[user].indexOf('wi',0) >= 0) 
    435458                { 
    436459                        Element('em_input_writeAcl').checked = true; 
    437460                }                
    438                 if (this.ownersAcl[user] != "false" && this.ownersAcl[user].indexOf('a',0) >= 0) 
     461                    if (this.ownersAcl[user].indexOf('a',0) >= 0) 
    439462                { 
    440463                        Element('em_input_sendAcl').disabled = false; 
    441464                        Element('em_input_sendAcl').checked = true; 
    442465                } 
    443                 if (this.ownersAcl[user] != "false" && this.ownersAcl[user].indexOf('p',0) >= 0) 
     466                    if ( this.ownersAcl[user].indexOf('p',0) >= 0) 
    444467                { 
    445468                        Element('em_input_saveAcl').disabled = false; 
    446469                        Element('em_input_saveAcl').checked = true; 
    447470                } 
    448                 if (this.ownersAcl[user] != "false" && this.ownersAcl[user].indexOf('c',0) >= 0) 
     471                    if ( this.ownersAcl[user].indexOf('c',0) >= 0) 
    449472                { 
    450473                        Element('em_input_folderAcl').checked = true; 
    451474                } 
    452                 if( this.ownersAcl[user] != "false" && Element('em_input_writeAcl').checked && Element('em_input_sendAcl').checked ){ 
     475                    if( Element('em_input_writeAcl').checked && Element('em_input_sendAcl').checked ){ 
    453476                        Element('em_input_saveAcl').disabled = false; 
    454477                } else Element('em_input_saveAcl').disabled = true; 
     478        } 
    455479        } 
    456480         
     
    464488                        return false; 
    465489                } 
    466                 var user = select.options[select.selectedIndex].value; 
     490                 
     491                for(var k = 0; k < select.options.length; k ++ ) 
     492                { 
     493                    if(select.options[k].selected !== true ) continue; 
     494                     
     495                     
     496                    acl = ''; 
     497                    var user = select.options[k].value; 
    467498                 
    468499                if (Element('em_input_readAcl').checked) { 
     
    495526                if (Element('em_input_saveAcl').checked) 
    496527                        acl += 'p'; 
     528                         
    497529                this.ownersAcl[user] = acl;              
     530        } 
     531        } 
     532 
     533        cShareMailbox.prototype.setCalendaraclfromuser = function() 
     534        { 
     535                var acl         = ''; 
     536                var select      = Element('ea_select_owners'); 
     537 
     538                if(select.selectedIndex == "-1"){ 
     539                        alert("Selecione antes um usuario!"); 
     540                        return false; 
     541                } 
     542                 
     543                for(var k = 0; k < select.options.length; k ++ ) 
     544                { 
     545                    if(select.options[k].selected !== true ) continue; 
     546                     
     547                    acl = ''; 
     548                    var user = select.options[k].value; 
     549 
     550                    if (Element('em_input_readCalendar').checked) 
     551                    { 
     552 
     553                        acl += '1-'; 
     554 
     555                        Element('em_input_editCalendar').disabled = false; 
     556                        Element('em_input_deleteCalendar').disabled = false; 
     557                        Element('em_input_restrictCalendar').disabled = false; 
     558 
     559                        if (Element('em_input_editCalendar').checked) 
     560                                acl += '4-'; 
     561 
     562                        if (Element('em_input_deleteCalendar').checked) 
     563                                acl += '8-'; 
     564 
     565                        if (Element('em_input_restrictCalendar').checked) 
     566                                acl += '16-'; 
     567                    } 
     568                    else 
     569                    { 
     570                        Element('em_input_editCalendar').disabled = true; 
     571                        Element('em_input_deleteCalendar').disabled = true; 
     572                        Element('em_input_restrictCalendar').disabled = true; 
     573                        Element('em_input_editCalendar').checked = false; 
     574                        Element('em_input_deleteCalendar').checked = false; 
     575                        Element('em_input_restrictCalendar').checked = false; 
     576                    } 
     577 
     578                    if (Element('em_input_writeCalendar').checked) 
     579                            acl += '2-'; 
     580 
     581 
     582                    this.ownersCalendarAcl[user] = acl; 
     583                } 
    498584        } 
    499585                 
     
    550636                for(var i = 0;i < select_users.options.length; i++) 
    551637                        if(select_users.options[i].selected) 
     638                    { 
     639                        
     640                        var user = select_users.options[i].value; 
     641                        this.ownersCalendarAcl[user] = ''; 
    552642                                select_users.options[i--] = null; 
    553643                                 
     644                    } 
     645                 
    554646                Element('em_input_readAcl').checked = false;             
    555647                Element('em_input_deleteAcl').checked = false; 
     
    558650                Element('em_input_saveAcl').checked = false; 
    559651                Element('em_input_folderAcl').checked = false; 
     652                Element('em_input_readCalendar').checked = false; 
     653                Element('em_input_writeCalendar').checked = false; 
     654                Element('em_input_editCalendar').checked = false; 
     655                Element('em_input_deleteCalendar').checked = false; 
     656                Element('em_input_restrictCalendar').checked = false; 
    560657        } 
    561658         
  • trunk/expressoAdmin1_2/js/jscode/users.js

    r3018 r5133  
    11countFiles = 1; 
     2 
     3function Element( id ) 
     4{ 
     5    return document.getElementById( id ); 
     6} 
     7 
    28function validate_fields(type) 
    39{ 
     
    3238                } 
    3339                if (document.forms[0].password2.value == ''){ 
    34                         alert(get_lang('repassword field is empty') + '.'); 
     40                        alert(get_lang('re-password field is empty') + '.'); 
    3541                        return; 
    3642                } 
     
    3844 
    3945        if (document.forms[0].password1.value != document.forms[0].password2.value){ 
    40                 alert(get_lang('password and repassword are different') + '.'); 
     46                alert(get_lang('password and re-password are different') + '.'); 
    4147                return; 
    4248        } 
     
    155161 
    156162                        if (type == 'create_user') 
    157                         { 
    158                                 // Turn enabled checkbox on create user.  
     163                        {       // Turn enabled checkbox on create user. 
    159164                                document.getElementById('changepassword').disabled = false;  
    160165                                cExecuteForm ("$this.user.create", document.forms[0], handler_create); 
     
    256261} 
    257262 
    258 function get_available_groups(context) 
    259 { 
    260         var handler_get_available_groups = function(data) 
    261         { 
    262                 select_available_groups = document.getElementById('ea_select_available_groups'); 
    263  
    264                 if ((data) && (data.length > 0)) 
    265                 { 
    266                         // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 
    267                         select_available_groups.innerHTML = '#' + data; 
    268                         select_available_groups.outerHTML = select_available_groups.outerHTML; 
    269                         select_available_groups_clone = select_available_groups.cloneNode(true); 
    270                         document.getElementById('ea_input_searchGroup').value = ''; 
    271                 } 
    272                 else 
    273                 { 
    274                         // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 
    275                         select_available_groups.innerHTML = '#'; 
    276                         select_available_groups.outerHTML = select_available_groups.outerHTML; 
    277                 } 
    278         }        
    279                  
    280         cExecute ('$this.ldap_functions.get_available_groups&context='+context, handler_get_available_groups); 
     263function get_available_groups(context, sentence) 
     264{ 
     265//     if( !sentence ) 
     266//      sentence = Element( 'ea_input_searchGroup' ).value; 
     267//  
     268//      var url = '$this.ldap_functions.get_available_groups&context='+context + '&sentence='+sentence; 
     269//  
     270//     var fillHandler = function( fill ){ 
     271//  
     272//      //fill = fill.users; 
     273//  
     274//      Element('ea_select_available_groups').innerHTML = fill; 
     275//  
     276//      return( fill !== "" ); 
     277//     } 
     278//  
     279//     userFinder( sentence, fillHandler, url, new Function('x','return x'), 'ea_span_searching_group' ); 
     280 
     281    if( !sentence ) 
     282        sentence = 'ea_input_searchGroup'; 
     283 
     284    optionFind( sentence, 'ea_select_available_groups', 
     285                '$this.ldap_functions.get_available_groups', 
     286                context, 'ea_span_searching_group' ); 
     287                 
    281288} 
    282289         
     
    352359} 
    353360         
    354 function get_available_maillists(context) 
    355 { 
    356         var handler_get_available_maillists = function(data) 
    357         { 
    358                 select_available_maillists = document.getElementById('ea_select_available_maillists'); 
    359  
    360                 if ((data) && (data.length > 0)) 
    361                 { 
    362                         // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 
    363                         select_available_maillists.innerHTML = '#' + data; 
    364                         select_available_maillists.outerHTML = select_available_maillists.outerHTML; 
    365                         select_available_maillists_clone = select_available_maillists.cloneNode(true); 
    366                         document.getElementById('ea_input_searchMailList').value = ''; 
    367                 } 
    368                 else 
    369                 { 
    370                         // Necessario, pois o IE6 tem um bug que retira o primeiro options se o innerHTML estiver vazio. 
    371                         select_available_maillists.innerHTML = '#'; 
    372                         select_available_maillists.outerHTML = select_available_maillists.outerHTML; 
    373                 } 
    374         } 
    375         cExecute ('$this.ldap_functions.get_available_maillists&context='+context, handler_get_available_maillists); 
     361function get_available_maillists(context, sentence) 
     362{ 
     363    if( !sentence ) 
     364        sentence = Element('ea_input_searchMailList').value; 
     365 
     366    var url = '$this.ldap_functions.get_available_maillists&context='+context + '&sentence='+sentence; 
     367 
     368    var fillHandler = function( fill ){ 
     369 
     370        //fill = fill.users; 
     371 
     372        Element('ea_select_available_maillists').innerHTML = fill; 
     373 
     374        return( fill !== "" ); 
     375        } 
     376 
     377    userFinder( sentence, fillHandler, url, new Function('x','return x'), 'ea_span_searching_maillist' ); 
    376378} 
    377379         
     
    565567 
    566568// Funcoes Find MailList 
    567 function optionFinderTimeout_maillist(obj) 
    568 { 
    569         clearTimeout(finderTimeout_maillist); 
    570         var oWait = document.getElementById("ea_span_searching_maillist"); 
    571         oWait.innerHTML = get_lang('Searching') + '...'; 
    572         finderTimeout_maillist = setTimeout("optionFinder_maillist('"+obj.id+"')",500); 
     569function optionFinderTimeout_maillist(obj, event) 
     570{ 
     571    if( event && event.keyCode !== 13 ) 
     572        return; 
     573 
     574    optionFinder_maillist( obj.id ); 
    573575} 
    574576function optionFinder_maillist(id) { 
    575         var oWait = document.getElementById("ea_span_searching_maillist"); 
    576         var oText = document.getElementById(id); 
    577                  
    578         //Limpa todo o select 
    579         for(var i = 0;i < select_available_maillists.options.length; i++) 
    580                 select_available_maillists.options[i--] = null; 
    581          
    582         var RegExp_name = new RegExp(oText.value, "i"); 
    583          
    584         //Inclui as listas começando com a pesquisa 
    585         for(i = 0; i < select_available_maillists_clone.length; i++){ 
    586                 if (RegExp_name.test(select_available_maillists_clone[i].text)) 
    587                 { 
    588                         sel = select_available_maillists.options; 
    589                         option = new Option(select_available_maillists_clone[i].text,select_available_maillists_clone[i].value);                                 
    590                         sel[sel.length] = option; 
    591                 } 
    592         } 
    593         oWait.innerHTML = '&nbsp;'; 
     577                 
     578    get_available_maillists( Element('ea_combo_org_maillists').value, Element(id).value ); 
     579         
    594580}                        
    595581 
     
    599585 
    600586// Funcoes Find Group 
    601 function optionFinderTimeout_group(obj) 
    602 { 
    603         clearTimeout(finderTimeout_group); 
    604         var oWait = document.getElementById("ea_span_searching_group"); 
    605         oWait.innerHTML = get_lang('Searching') + '...'; 
    606         finderTimeout_group = setTimeout("optionFinder_group('"+obj.id+"')",500); 
     587function optionFinderTimeout_group(obj, event) 
     588{ 
     589                 
     590        if( event && event.keyCode !== 13 ) 
     591            return; 
     592         
     593        optionFinder_group(obj.id); 
    607594} 
    608595function optionFinder_group(id) {        
    609         var oWait = document.getElementById("ea_span_searching_group"); 
    610         var oText = document.getElementById(id); 
    611                  
    612         //Limpa todo o select 
    613         for(var i = 0;i < select_available_groups.options.length; i++) 
    614                 select_available_groups.options[i--] = null; 
    615          
    616         var RegExp_name = new RegExp(oText.value, "i"); 
    617          
    618         //Inclui as listas começando com a pesquisa 
    619         for(i = 0; i < select_available_groups_clone.length; i++){ 
    620                 if (RegExp_name.test(select_available_groups_clone[i].text)) 
    621                 { 
    622                         sel = select_available_groups.options; 
    623                         option = new Option(select_available_groups_clone[i].text,select_available_groups_clone[i].value);                               
    624                         sel[sel.length] = option; 
    625                 } 
    626         } 
    627         oWait.innerHTML = '&nbsp;'; 
     596         
     597        get_available_groups( Element('ea_combo_org_groups').value, Element(id).value ); 
    628598} 
    629599 
  • trunk/expressoAdmin1_2/js/modal/modal.js

    r1975 r5133  
    33        try{ 
    44                content = Element(id).cloneNode(true); 
    5                 //Acrescentado para eliminar bug do IE que deixa um formulario inválido, 
    6                 //se for inserido outro na mesma página com o mesmo ID, ficando ambos inválidos 
     5                //Acrescentado para eliminar bug do IE que deixa um formulario inválido, 
     6                //se for inserido outro na mesma página com o mesmo ID, ficando ambos inválidos 
    77                content_code = content.innerHTML;                
    88                content.innerHTML = content_code.replace("_template",""); 
  • trunk/expressoAdmin1_2/setup/setup.inc.php

    r4306 r5133  
    1313        $setup_info['expressoAdmin1_2']['title']        = 'Expresso Admin'; 
    1414        /* Ao incrementar versão, não esquecer de declarar função do tables_update.inc.php*/ 
    15         $setup_info['expressoAdmin1_2']['version']      = '2.2.2'; 
     15        $setup_info['expressoAdmin1_2']['version']      = '2.0.006'; 
    1616        $setup_info['expressoAdmin1_2']['app_order']    = 1; 
    1717        $setup_info['expressoAdmin1_2']['tables'][]             = 'phpgw_expressoadmin'; 
     
    2020        $setup_info['expressoAdmin1_2']['tables'][]             = 'phpgw_expressoadmin_log'; 
    2121        $setup_info['expressoAdmin1_2']['tables'][]             = 'phpgw_expressoadmin_samba'; 
     22        $setup_info['expressoAdmin1_2']['tables'][]             = 'phpgw_expressoadmin_configuration'; 
     23        $setup_info['expressoAdmin1_2']['tables'][]             = 'phpgw_expressoadmin_acls'; 
    2224        $setup_info['expressoAdmin1_2']['enable']               = 1; 
    2325 
     
    3537        $setup_info['expressoAdmin1_2']['depends'][] = array( 
    3638                'appname' => 'phpgwapi', 
    37                 'versions' => Array('2.2') 
     39                'versions' => Array('2.4.0') 
    3840        ); 
    3941?> 
  • trunk/expressoAdmin1_2/setup/tables_current.inc.php

    r414 r5133  
    1515                                'manager_lid'   => array('type' => 'varchar','precision' => 50,'nullable' => false), 
    1616                                'context'               => array('type' => 'varchar','precision' => 255,'nullable' => false), 
    17                                 'acl'                   => array('type' => 'int','precision' => 8,'nullable' => false) 
     17                                'acl'                   => array('type' => 'int','precision' => 14,'nullable' => false) 
    1818                        ), 
    1919                        'pk' => array(), 
     
    6868                        'ix' => array(), 
    6969                        'uc' => array() 
     70                ), 
     71 
     72                'phpgw_expressoadmin_configuration' => array( 
     73                        'fd' => array( 
     74                                'id' => array( 'type' => 'int', 'precision' => 8), 
     75                                'email_user' => array( 'type' => 'varchar', 'precision' => 100), 
     76                                'configuration_type' => array( 'type' => 'varchar', 'precision' => 30), 
     77                                'email_max_recipient' => array( 'type' => 'int', 'precision' => 8), 
     78                                'email_user_type' => array( 'type' => 'varchar', 'precision' => 1), 
     79                                'email_quota' => array( 'type' => 'int', 'precision' => 8), 
     80                                'email_recipient' => array( 'type' => 'varchar', 'precision' => 50), 
     81 
     82                        ), 
     83                        'pk' => array('id'), 
     84                        'fk' => array(), 
     85                        'ix' => array(), 
     86                        'uc' => array() 
     87                ), 
     88 
     89                'phpgw_expressoadmin_acls' => array( 
     90                        'fd' => array( 
     91                                'manager_lid' => array( 'type' => 'varchar', 'precision' => 50), 
     92                                'context' => array( 'type' => 'varchar', 'precision' => 255), 
     93                                'acl_name' => array( 'type' => 'varchar', 'precision' => 255) 
     94                        ), 
     95                        'pk' => array(), 
     96                        'fk' => array(), 
     97                        'ix' => array(), 
     98                        'uc' => array() 
     99                ), 
     100 
     101                'phpgw_expressoadmin_configuration' => array( 
     102                        'fd' => array( 
     103                                'id' => array( 'type' => 'int', 'precision' => 8), 
     104                                'email_user' => array( 'type' => 'varchar', 'precision' => 100), 
     105                                'configuration_type' => array( 'type' => 'varchar', 'precision' => 30), 
     106                                'email_max_recipient' => array( 'type' => 'int', 'precision' => 8), 
     107                                'email_user_type' => array( 'type' => 'varchar', 'precision' => 1), 
     108                                'email_quota' => array( 'type' => 'int', 'precision' => 8), 
     109                                'email_recipient' => array( 'type' => 'varchar', 'precision' => 50), 
     110 
     111                        ), 
     112                        'pk' => array('id'), 
     113                        'fk' => array(), 
     114                        'ix' => array(), 
     115                        'uc' => array() 
     116                ), 
     117 
     118                'phpgw_expressoadmin_acls' => array( 
     119                        'fd' => array( 
     120                                'manager_lid' => array( 'type' => 'varchar', 'precision' => 50), 
     121                                'context' => array( 'type' => 'varchar', 'precision' => 255), 
     122                                'acl_name' => array( 'type' => 'varchar', 'precision' => 255) 
     123                        ), 
     124                        'pk' => array(), 
     125                        'fk' => array(), 
     126                        'ix' => array(), 
     127                        'uc' => array() 
    70128                ) 
    71129        ); 
  • trunk/expressoAdmin1_2/setup/tables_update.inc.php

    r4306 r5133  
    99        * option) any later version.                                               * 
    1010        \**************************************************************************/     
    11         // Since Expresso 1.2 using ExpressoAdmin 1.261 
     11        $test[] = '1.2'; 
     12        function expressoAdmin1_2_upgrade1_2() 
     13        { 
     14                $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '1.21'; 
     15                return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 
     16        } 
     17         
     18        $test[] = '1.21'; 
     19        function expressoAdmin1_2_upgrade1_21() 
     20        { 
     21                $oProc = $GLOBALS['phpgw_setup']->oProc; 
     22 
     23                $oProc->CreateTable( 
     24                        'phpgw_expressoadmin_samba', array( 
     25                                'fd' => array( 
     26                                        'samba_domain_name' => array( 'type' => 'varchar', 'precision' => 50), 
     27                                        'samba_domain_sid' => array( 'type' => 'varchar', 'precision' => 100) 
     28                                ), 
     29                                'pk' => array('samba_domain_name'), 
     30                                'fk' => array(), 
     31                                'ix' => array(), 
     32                                'uc' => array() 
     33                        ) 
     34                ); 
     35                 
     36                $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '1.240'; 
     37                return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 
     38        } 
     39 
     40        $test[] = '1.240'; 
     41        function expressoAdmin1_2_upgrade1_240() 
     42        { 
     43                $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '1.250'; 
     44                return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 
     45        } 
     46         
     47        $test[] = '1.250'; 
     48        function expressoAdmin1_2_upgrade1_250() 
     49        { 
     50                $GLOBALS['phpgw_setup']->oProc->DropColumn('phpgw_expressoadmin_log','','appinfo'); 
     51                $GLOBALS['phpgw_setup']->oProc->DropColumn('phpgw_expressoadmin_log','','groupinfo'); 
     52                $GLOBALS['phpgw_setup']->oProc->DropColumn('phpgw_expressoadmin_log','','msg'); 
     53                $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '1.261'; 
     54                return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 
     55        } 
     56         
    1257        $test[] = '1.261'; 
    1358        function expressoAdmin1_2_upgrade1_261() 
     
    4489        { 
    4590                $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.0.005'; 
     91                //$GLOBALS['phpgw_setup']->db->query("alter table phpgw_expressoadmin_log drop groupinfo"); 
     92                //$GLOBALS['phpgw_setup']->db->query("alter table phpgw_expressoadmin_log drop appinfo"); 
     93                //$GLOBALS['phpgw_setup']->db->query("alter table phpgw_expressoadmin_log drop msg");/ 
     94         
    4695                return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 
    4796        } 
    4897        $test[] = '2.0.005'; 
    49         function expressoAdmin1_2_upgrade2_0_005() 
    50         { 
    51                 $GLOBALS['phpgw_setup']->db->query("alter table phpgw_expressoadmin_log drop groupinfo"); 
    52                 $GLOBALS['phpgw_setup']->db->query("alter table phpgw_expressoadmin_log drop appinfo"); 
    53                 $GLOBALS['phpgw_setup']->db->query("alter table phpgw_expressoadmin_log drop msg");              
    54                 $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.1.000'; 
    55                 return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 
    56         } 
    57         $test[] = '2.1.000'; 
    58         function expressoAdmin1_2_upgrade2_1_000() 
    59         { 
    60                 $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.2.000'; 
    61                 return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 
    62         } 
    63         $test[] = '2.2.000'; 
    64         function expressoAdmin1_2_upgrade2_2_000() 
    65         { 
    66                 $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.2.1'; 
    67                 return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver']; 
    68         } 
    69         $test[] = '2.2.1';  
    70         function expressoAdmin1_2_upgrade2_2_1()  
     98        function expressoAdmin1_2_upgrade2_0_005() { 
     99                $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.0.006'; 
     100                $GLOBALS['phpgw_setup']->db->query(" 
     101 
     102                    DROP SEQUENCE IF EXISTS seq_phpgw_expressoadmin_configuration; 
     103                    CREATE SEQUENCE seq_phpgw_expressoadmin_configuration 
     104                      INCREMENT 1 
     105                      MINVALUE 1 
     106                      MAXVALUE 9223372036854775807 
     107                      START 93 
     108                      CACHE 1; 
     109                    ALTER TABLE seq_phpgw_expressoadmin_configuration OWNER TO ".$GLOBALS['phpgw_domain']['default']['db_user']."; 
     110 
     111 
     112                    DROP TABLE IF EXISTS phpgw_expressoadmin_configuration; 
     113                    CREATE TABLE phpgw_expressoadmin_configuration 
     114                    ( 
     115                      id integer NOT NULL DEFAULT nextval(('seq_phpgw_expressoadmin_configuration'::text)::regclass), 
     116                      email_user character varying(100), 
     117                      configuration_type character varying(30) NOT NULL, 
     118                      email_max_recipient integer DEFAULT 0, 
     119                      email_user_type character varying(1), 
     120                      email_quota integer, 
     121                      email_recipient character varying(50), 
     122                      CONSTRAINT phpgw_expressoadmin_configuration_pkey PRIMARY KEY (id) 
     123                    ) 
     124                    WITH ( 
     125                      OIDS=TRUE 
     126                    ); 
     127 
     128                    DROP INDEX IF EXISTS configuration_type_indice; 
     129                    CREATE INDEX configuration_type_indice 
     130                      ON phpgw_expressoadmin_configuration 
     131                      USING btree 
     132                      (configuration_type); 
     133                    ALTER TABLE phpgw_expressoadmin_configuration CLUSTER ON configuration_type_indice; 
     134 
     135                    DROP INDEX IF EXISTS email_user_indice; 
     136                    CREATE INDEX email_user_indice 
     137                      ON phpgw_expressoadmin_configuration 
     138                      USING btree 
     139                      (email_user); 
     140                    ALTER TABLE phpgw_expressoadmin_configuration CLUSTER ON email_user_indice; 
     141 
     142                    DROP TABLE IF EXISTS phpgw_expressoadmin_acls; 
     143                    CREATE TABLE phpgw_expressoadmin_acls 
     144                    ( 
     145                      manager_lid character varying(50) NOT NULL, 
     146                      context character varying(255) NOT NULL, 
     147                      acl_name character varying(255) NOT NULL 
     148                    ) 
     149                    WITH ( 
     150                      OIDS=TRUE 
     151                    ); 
     152                    ALTER TABLE phpgw_expressoadmin_acls OWNER TO ".$GLOBALS['phpgw_domain']['default']['db_user']."; 
     153 
     154 
     155                    DROP INDEX IF EXISTS manager_lid_indice; 
     156                    CREATE INDEX manager_lid_indice 
     157                      ON phpgw_expressoadmin_acls 
     158                      USING btree 
     159                      (manager_lid); 
     160                    ALTER TABLE phpgw_expressoadmin_acls CLUSTER ON manager_lid_indice; 
     161 
     162 
     163                "); 
     164 
     165                 $GLOBALS['phpgw_setup']->db->query("SELECT * FROM phpgw_expressoadmin"); 
     166                 $results = array(); 
     167 
     168                function safeBitCheck($number,$comparison) 
     169        { 
     170                    $binNumber = base_convert($number,10,2); 
     171                    $binComparison = strrev(base_convert($comparison,10,2)); 
     172                            $str = strlen($binNumber); 
     173 
     174                    if ( ($str <= strlen($binComparison)) && ($binComparison{$str-1}==="1") ) 
     175                            return '1'; 
     176                    else 
     177                            return '0'; 
     178        } 
     179 
     180                function make_array_acl($acl) 
     181        { 
     182 
     183                        $array_acl_tmp = array(); 
     184                        $tmp = array(           "acl_add_users", 
     185                                                                "acl_edit_users", 
     186                                                                "acl_delete_users", 
     187                                                                "acl_EMPTY1", 
     188                                                                "acl_add_groups", 
     189                                                                "acl_edit_groups", 
     190                                                                "acl_delete_groups", 
     191                                                                "acl_change_users_password", 
     192                                                                "acl_add_maillists", 
     193                                                                "acl_edit_maillists", 
     194                                                                "acl_delete_maillists", 
     195                                                                "acl_EMPTY2", 
     196                                                                "acl_create_sectors", 
     197                                                                "acl_edit_sectors", 
     198                                                                "acl_delete_sectors", 
     199                                                                "acl_edit_sambausers_attributes", 
     200                                                                "acl_view_global_sessions", 
     201                                                                "acl_view_logs", 
     202                                                                "acl_change_users_quote", 
     203                                                                "acl_set_user_default_password", 
     204                                                                "acl_create_computers", 
     205                                                                "acl_edit_computers", 
     206                                                                "acl_delete_computers", 
     207                                                                "acl_rename_users", 
     208                                                                "acl_edit_sambadomains", 
     209                                                                "acl_view_users", 
     210                                                                "acl_edit_email_groups", 
     211                                                                "acl_empty_user_inbox", 
     212                                                                "acl_manipulate_corporative_information", 
     213                                                                "acl_edit_users_picture", 
     214                                                                "acl_edit_scl_email_lists", 
     215                                                                "acl_edit_users_phonenumber", 
     216                                                                "acl_add_institutional_accounts", 
     217                                                                "acl_edit_institutional_accounts", 
     218                                                                "acl_remove_institutional_accounts", 
     219                                                                "acl_add_shared_accounts", 
     220                                                                "acl_edit_shared_accounts", 
     221                                                                "acl_delete_shared_accounts", 
     222                                                                "acl_edit_shared_accounts_acl", 
     223                                                                "acl_edit_shared_accounts_quote", 
     224                                                                "acl_empty_shared_accounts_inbox" 
     225                                                                ); 
     226 
     227                        foreach ($tmp as $index => $right) 
     228        { 
     229                                $bin = ''; 
     230                                for ($i=0; $i<$index; $i++) 
     231                                { 
     232                                        $bin .= '0'; 
     233                                } 
     234                                $bin = '1' . $bin; 
     235 
     236                                $array_acl[$right] = safeBitCheck(bindec($bin), $acl); 
     237        } 
     238                        return $array_acl; 
     239                } 
     240 
     241                 while($GLOBALS['phpgw_setup']->db->next_record()) 
     242                     array_push($results, $GLOBALS['phpgw_setup']->db->row()); 
     243 
     244                 foreach ($results as $result) 
     245                 { 
     246                    $manager_info = make_array_acl($result['acl']); 
     247 
     248 
     249                   foreach ($manager_info as $info => $value) 
     250                    { 
     251                        $acl  = strstr($info, 'acl_'); 
     252 
     253                        if ($acl !== false) 
    71254        {  
    72             $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'] = '2.2.2';  
     255 
     256                                $fields = array( 
     257                                                'manager_lid' => $result['manager_lid'], 
     258                                                'context' =>    $result['context'], 
     259                                                'acl_name' => $info, 
     260                                               ); 
     261 
     262 
     263                                $GLOBALS['phpgw_setup']->db->insert('phpgw_expressoadmin_acls', $fields); 
     264                            
     265                        } 
     266 
     267                    } 
     268 
     269                 } 
     270 
    73271            return $GLOBALS['setup_info']['expressoAdmin1_2']['currentver'];  
    74272        }  
  • trunk/expressoAdmin1_2/templates/default/accounts_form.tpl

    r3018 r5133  
    2222<input type="hidden" name="defaultDomain"               value="{defaultDomain}"> 
    2323<input type="hidden" name="ldap_context"                value="{ldap_context}"> 
    24 <input type="hidden" name="associated_domain"           value="{associated_domain}"> 
    2524 
    2625<br> 
     
    4342                <tr bgcolor={row_on}> 
    4443                        <td>{lang_search_organization}:</td> 
    45                         <td><input type="text" id="organization_search" {disabled} autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org_info');" onBlur="javascript:sinc_combos_org(context.value); get_associated_domain(context.value); get_available_groups(context.value); get_available_maillists(context.value); get_available_sambadomains(context.value, '{type}')"></td> 
     44                        <td><input type="text" id="organization_search" {disabled} autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org_info');" onBlur="javascript:sinc_combos_org(context.value); get_available_sambadomains(context.value, '{type}')"></td> 
    4645                </tr> 
    4746 
    4847                <tr bgcolor={row_off}> 
    4948                        <td>{lang_organizations}:</td> 
    50                         <td><select {disabled} id="ea_combo_org_info" name="context" onchange="javascript:sinc_combos_org(this.value); get_associated_domain(this.value); get_available_groups(this.value); get_available_maillists(this.value); get_available_sambadomains(this.value, '{type}')">{sectors}</select></td> 
     49                        <td><select {disabled} id="ea_combo_org_info" name="context" onchange="javascript:sinc_combos_org(this.value); get_available_groups(this.value); get_available_maillists(this.value); get_available_sambadomains(this.value, '{type}')">{sectors}</select></td> 
    5150                </tr> 
    5251                                                         
     
    245244                                                <td> 
    246245                                                        {lang_search_for_group}:<br> 
    247                                                         <input {disable_group} id="ea_input_searchGroup" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout_group(this)"><br> 
     246                                                        <input {disable_group} id="ea_input_searchGroup" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout_group(this, event)"><br> 
    248247                                                        <font color="red"><span id="ea_span_searching_group">&nbsp;<span></font> 
    249248                                                        <br> 
     
    308307                                                <td> 
    309308                                                        {lang_search_email_list}:<br> 
    310                                                         <input {disabled} id="ea_input_searchMailList" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout_maillist(this)"><br> 
     309                                                        <input {disabled} id="ea_input_searchMailList" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout_maillist(this, event)"><br> 
    311310                                                        <font color="red"><span id="ea_span_searching_maillist">&nbsp;<span></font> 
    312311                                                        <br>                                                     
  • trunk/expressoAdmin1_2/templates/default/config.tpl

    r3351 r5133  
    8282        </tr> 
    8383        <tr class="row_off"> 
     84                <td>{lang_Default_Shared_Account_Quota}:</td> 
     85                <td><input name="newsettings[expressoAdmin_defaultSharedAccountQuota]" value="{value_expressoAdmin_defaultSharedAccountQuota}" size="10" /></td> 
     86        </tr> 
     87        <tr class="row_on"> 
    8488                <td>{lang_Minimum_Size_Login}:</td> 
    8589                <td><input name="newsettings[expressoAdmin_minimumSizeLogin]" value="{value_expressoAdmin_minimumSizeLogin}" size="10" /></td> 
    8690        </tr> 
    87         <tr class="row_on"> 
     91        <tr class="row_off"> 
    8892                <td>{lang_Default_Domain}:</td> 
    8993                <td><input name="newsettings[expressoAdmin_defaultDomain]" value="{value_expressoAdmin_defaultDomain}" size="15" /></td> 
    9094        </tr> 
    91         <tr class="row_off"> 
     95        <tr class="row_on"> 
    9296                <td>{lang_concatenate_default_domain_to_the_mail}:</td> 
    9397                <td> 
     
    98102                </td> 
    99103        </tr> 
    100         <tr class="row_on"> 
     104        <tr class="row_off"> 
    101105                <td>{lang_use_restrictions_in_the_creation_of_groups}:</td> 
    102106                <td> 
     
    107111                </td> 
    108112        </tr> 
    109         <tr class="row_off"> 
     113        <tr class="row_on"> 
    110114                <td>{lang_use_restrictions_in_the_creation_of_emaillists}:</td> 
    111115                <td> 
     
    116120                </td> 
    117121        </tr> 
    118         <tr class="row_on"> 
    119                 <td>{lang_This_server_uses_Sending_Control_List_by_Ppolicy}:</td> 
     122        <tr class="row_off"> 
     123                <td>{lang_This_server_uses_Sending_Control_List_by_Policy}:</td> 
    120124                <td> 
    121125                        <select name="newsettings[expressoAdmin_scl]"> 
     
    125129                </td> 
    126130        </tr> 
    127         <tr class="row_off"> 
     131        <tr class="row_on"> 
    128132                <td>{lang_Does_CPF_field_must_be_completed}?</td> 
    129133                <td> 
     
    135139        </tr> 
    136140         
    137          <tr class="row_off"> 
    138                 <td>{lang_deny_user_accounts_with_the_same_cpf}?</td> 
    139                 <td> 
    140                         <select name="newsettings[expressoAdmin_deny_same_cpf]"> 
    141                                 <option value="false" {selected_expressoAdmin_deny_same_cpf_false}>{lang_no}</option> 
    142                                 <option value="true" {selected_expressoAdmin_deny_same_cpf_true}>{lang_yes}</option> 
    143                         </select> 
    144                 </td> 
    145       </tr> 
    146          
    147         <tr class="row_th">      
    148                 <td>{lang_maximum_length_of_photo_archive__(default_10240_=_10_kb)}:</td> 
    149                 <td><input name="newsettings[expressoAdmin_photo_length]" value="{value_expressoAdmin_photo_length}" size="15" /></td>   
    150         </tr> 
    151          
    152         <tr bgcolor="{row_on}"> 
    153      <td>{lang_Do_you_wish_enable_autosearch?}</td> 
    154      <td> 
    155        <select id="usersAutoSearch" name="newsettings[users_auto_search]"> 
    156         <option value="false" {selected_users_auto_search_false}>{lang_No}</option> 
    157         <option value="true" {selected_users_auto_search_true}>{lang_Yes}</option> 
    158        </select> 
    159      </td> 
    160    </tr> 
    161     
    162    <tr bgcolor="{row_off}"> 
    163        <td>{lang_Minimum_number_of_characters_to_start_the_search_for_participants}</td> 
    164        <td> 
    165           <input type="text" id="minNum" value="{value_min_num_characters}" name="newsettings[min_num_characters]    " size=2 maxlength=2 /> 
    166        </td> 
    167    </tr> 
    168          
    169141        <tr class="th"> 
    170142                <td colspan="2" align="center"><b>{lang_Configurations_to_get_nextID_from_another_DB}<br>{lang_Leave_the_host_field_empty_to_use_the_same_DB_of_the_ExpressoLivre}</b></td> 
    171143        </tr> 
    172         <tr class="row_off"> 
     144        <tr class="row_on"> 
    173145                <td>{lang_db_host}:</td> 
    174146                <td><input id="nextid_db_host" name="newsettings[expressoAdmin_nextid_db_host]" value="{value_expressoAdmin_nextid_db_host}" size="30" /></td> 
    175147        </tr> 
    176         <tr class="row_on"> 
     148        <tr class="row_off"> 
    177149                <td>{lang_db_port}:</td> 
    178150                <td><input id="nextid_db_port" name="newsettings[expressoAdmin_nextid_db_port]" value="{value_expressoAdmin_nextid_db_port}" size="30" /></td> 
    179151        </tr> 
    180         <tr class="row_off"> 
     152        <tr class="row_on"> 
    181153                <td>{lang_db_name}:</td> 
    182154                <td><input id="nextid_db_name" name="newsettings[expressoAdmin_nextid_db_name]" value="{value_expressoAdmin_nextid_db_name}" size="30" /></td> 
    183155        </tr> 
    184         <tr class="row_on"> 
     156        <tr class="row_off"> 
    185157                <td>{lang_db_user}:</td> 
    186158                <td><input id="nextid_db_user" name="newsettings[expressoAdmin_nextid_db_user]" value="{value_expressoAdmin_nextid_db_user}" size="30" /></td> 
    187159        </tr> 
    188         <tr class="row_off"> 
     160        <tr class="row_on"> 
    189161                <td>{lang_db_password}:</td> 
    190162                <td><input id="nextid_db_password" name="newsettings[expressoAdmin_nextid_db_password]" value="{value_expressoAdmin_nextid_db_password}" size="30" /></td> 
    191163        </tr> 
    192         <tr class="row_on"> 
     164        <tr class="row_off"> 
    193165                <td><input type="button" value="{lang_test_connection_with_DB}" onClick="javascript:test_db_connection()"></td> 
    194166                <td><span>{lang_Result}: </span><span id="nextid_db_result"></span></td> 
    195167        </tr> 
    196         <tr class="row_off"> 
    197                 <td>{lang_use_quotas_control_for_ou}</td> 
    198                 <td> 
    199                 <select name="newsettings[expressoAdmin_cotasOu]"> 
    200                          <option value="">{lang_No}</option> 
    201                          <option value="true"{selected_expressoAdmin_cotasOu_true}>{lang_Yes}</option> 
    202                 </select> 
    203                 </td> 
    204         </tr>    
    205168        <tr class="row_on"> 
    206169                <td>{lang_use_login_generator}</td> 
  • trunk/expressoAdmin1_2/templates/default/groups_form.tpl

    r3251 r5133  
    7777                                                         
    7878                                                        <br> 
     79                                                        <!-- 
    7980                                                        <input type="checkbox" name="ea_check_allUsers" id="ea_check_allUsers" onclick="javascript:get_available_users(org_context.value, this.checked);">{lang_show_users_from_all_sub-organizations}. 
     81                                                        --> 
    8082                                                        <br><br> 
    8183                                                         
    8284                                                        {lang_search_user}:<br> 
    83                                                         <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this)"><br> 
     85                                                        <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this, event)"><br> 
    8486                                                         
    8587                                                        <font color="red"><span id="ea_span_searching">&nbsp;</span></font> 
     
    99101                                                </td> 
    100102                                        </tr> 
    101                                         <tr> 
    102                                         <td colspan="3"> 
    103                                                 {lang_block_personal_data_edit}: 
    104                                                 <br> 
    105                                                 <table width="50%" border="0"> 
    106                                                                 {personal_data_fields} 
    107                                                         </table> 
    108                                                 </td> 
    109                                         </tr> 
    110103 
    111104                                        <tr> 
  • trunk/expressoAdmin1_2/templates/default/index.tpl

    r1913 r5133  
    11<!-- BEGIN body --> 
    22<table width="90%" border="0" cellspacing="10" cellpadding="0" align="center">  
     3        <tr> 
     4                <td width="1%" align="center"> 
     5                        <img src='./templates/default/images/configurations.png'> 
     6                </td> 
     7                <td> 
     8                        <a href="../index.php?menuaction=expressoAdmin1_2.uiconfiguration.index">{lang_configurations}</a> 
     9                </td> 
     10        </tr> 
    311        <tr> 
    412                <td width="1%" align="center"> 
     
    5765                </td> 
    5866        </tr>  
     67     
     68        <tr> 
     69                <td width="1%" align="center"> 
     70                        <img src='./templates/default/images/message_size.png'> 
     71                </td> 
     72                <td> 
     73                        <a href="../index.php?menuaction=expressoAdmin1_2.uimessages_size.index">{lang_messages_size}</a> 
     74                </td> 
     75        </tr> 
     76         
    5977        <tr> 
    6078                <td width="1%" align="center"> 
  • trunk/expressoAdmin1_2/templates/default/institutional_accounts.tpl

    r1458 r5133  
    1515                                <td align="right" "left" width="25%"> 
    1616                                                {lang_to_search}: 
    17                                                 <input type="text" onKeyUp="javascript:get_institutional_accounts_timeOut(this.value)" id="ea_institutional_account_search" autocomplete="off" value="{query}"> 
     17                                                <input type="text" onKeyUp="javascript:get_institutional_accounts_timeOut(this.value, event)" id="ea_institutional_account_search" autocomplete="off" value="{query}"> 
    1818                                </td> 
    1919                        </tr> 
     
    2626                                <td width="30%">{lang_full_name}</td> 
    2727                                <td width="30%">{lang_mail}</td> 
    28                                 <td width="5%" align="center">{lang_remove}</td> 
     28                                <td width="5%" align="center">{lang_delete}</td> 
    2929                        </tr> 
    3030                </table> 
  • trunk/expressoAdmin1_2/templates/default/institutional_accounts_modal.tpl

    r1991 r5133  
    1 <input type="hidden" id="{modal_id}_title" value="{lang_criation_of_institutional_accounts}"> 
    2 <input type="hidden" id="{modal_id}_height" value="503"> 
    3 <input type="hidden" id="{modal_id}_width" value="930"> 
    4 <input type="hidden" id="{modal_id}_close_action" value="close_lightbox()"> 
    5 <input type="hidden" id="{modal_id}_create_action" value="create_institutional_accounts()"> 
    6 <input type="hidden" id="{modal_id}_save_action" value="save_institutional_accounts()"> 
    7 <input type="hidden" id="{modal_id}_onload_action" value="set_onload({manager_context})"> 
     1<input type="hidden" id="{modal_id}_title" value="{lang_criation_of_institutional_accounts}" /> 
     2<input type="hidden" id="{modal_id}_height" value="503" /> 
     3<input type="hidden" id="{modal_id}_width" value="930" /> 
     4<input type="hidden" id="{modal_id}_close_action" value="close_lightbox()" /> 
     5<input type="hidden" id="{modal_id}_create_action" value="create_institutional_accounts()" /> 
     6<input type="hidden" id="{modal_id}_save_action" value="save_institutional_accounts()" /> 
     7<input type="hidden" id="{modal_id}_onload_action" value="set_onload({manager_context})" /> 
    88 
    99<form enctype="multipart/form-data" name="institutional_accounts_form_template" method="post"> 
    10 <input type="hidden" id="anchor" name="anchor"> 
     10<input type="hidden" id="anchor" name="anchor" /> 
    1111 
    1212<table border="0" width="80%" cellspacing="4"> 
    1313        <tr> 
    1414                <td width="35%" bgcolor="#DDDDDD"> 
    15                         {lang_search_organization}:<br> 
    16                         <input type="text" id="organization_search" autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org');" onBlur="javascript:sinc_combos_org(context.value);"> 
    17                         <br> 
    18                         {lang_organization}:<br> 
    19                         <select id="ea_combo_org" name="context" onchange="javascript:sinc_combos_org(this.value);javascript:get_associated_domain(this.value);">{manager_organizations}</select><br> 
     15                        {lang_search_organization}:<br /> 
     16                        <input type="text" id="organization_search"  size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org');" onBlur="javascript:sinc_combos_org(context.value);" /> 
     17                        <br /> 
     18                        {lang_organization}:<br /> 
     19                        <select id="ea_combo_org" name="context" onchange="javascript:sinc_combos_org(this.value);">{manager_organizations}</select><br /> 
    2020                         
    21                         <input type="hidden" id="associated_domain" name="associated_domain"> 
     21                        {lang_full_name}: <font color="blue">{lang_eg}: Setor Diser</font><br /> 
     22                        <input id="cn" name="cn" size="35" autocomplete="off" /><br /> 
    2223                                                         
    23                         {lang_full_name}: <font color="blue">{lang_eg}: Setor Diser</font><br> 
    24                         <input id="cn" name="cn" size="35" autocomplete="off"><br> 
     24                        {lang_mail}: <font color="blue">{lang_eg}: diser@celepar.pr.gov.br</font><br /> 
     25                        <input id="mail" name="mail" onKeyUp='javascript:emailSugestion_expressoadmin2(this)' size="35" autocomplete="off" /><br /> 
    2526                                                 
    26                         {lang_mail}: <font color="blue">{lang_eg}: diser@celepar.pr.gov.br</font><br> 
    27                         <input id="mail" name="mail" onKeyUp='javascript:emailSugestion_expressoadmin2(this)' size="35" autocomplete="off"><br> 
     27                        {lang_description}:<br /> 
     28                        <input id="desc" name="desc" size="60" autocomplete="off" /><br /> 
    2829 
    29                         {lang_description}:<br> 
    30                         <input id="desc" name="desc" size="60" autocomplete="off"><br> 
     30                        {lang_is_account_active}: <input type="checkbox" id="accountStatus" name="accountStatus" checked /><br /> 
     31                        {lang_omit_account_from_the_catalog}: <input type="checkbox" id="phpgwAccountVisible" name="phpgwAccountVisible" /><br /> 
    3132                                                         
    32                         {lang_is_account_active}: <input type="checkbox" id="accountStatus" name="accountStatus" checked><br> 
    33                         {lang_omit_account_from_the_catalog}: <input type="checkbox" id="phpgwAccountVisible" name="phpgwAccountVisible"><br> 
    34                                                          
    35                         <b>{lang_owners}:</b><br> 
     33                        <b>{lang_owners}:</b><br /> 
    3634                        <select id="ea_select_owners" name="owners[]" style="width:400px; height:200px" multiple size="13"></select> 
    3735                </td> 
    3836                                                 
    3937                <td width="10%" valign="middle" align="center" bgcolor="#DDDDDD"> 
    40                         <button type="button" onClick="javascript:add_user();"><img src="expressoAdmin1_2/templates/default/images/add.png" style="vertical-align: middle;">&nbsp;{lang_add_owner}</button> 
    41                         <br><br> 
    42                         <button type="button" onClick="javascript:remove_user();"><img src="expressoAdmin1_2/templates/default/images/rem.png" style="vertical-align: middle;">&nbsp;{lang_remove_owner}</button> 
     38                        <button type="button" onClick="javascript:add_user();"><img src="expressoAdmin1_2/templates/default/images/add.png" style="vertical-align: middle;" />&nbsp;{lang_add_owner}</button> 
     39                        <br /><br /> 
     40                        <button type="button" onClick="javascript:remove_user();"><img src="expressoAdmin1_2/templates/default/images/rem.png" style="vertical-align: middle;" />&nbsp;{lang_remove_owner}</button> 
    4341                </td> 
    4442                                                 
    4543                <td width="35%" valign="bottom" bgcolor="#DDDDDD"> 
    46                         {lang_search_organization}:<br> 
    47                         <input type="text" id="organization_search" autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org_available_users');" onBlur="javascript:get_available_users(org_context.value);"> 
    48                         <br> 
     44                        {lang_search_organization}:<br /> 
     45                        <input type="text" id="organization_search"  size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org_available_users');" onBlur="javascript:get_available_users(org_context.value);" /> 
     46                        <br /> 
    4947                                                         
    50                         {lang_organizations}:<br> 
     48                        {lang_organizations}:<br /> 
    5149                        <select name="org_context" id="ea_combo_org_available_users" onchange="javascript:get_available_users(this.value);">{all_organizations}</select> 
    52                         <br> 
     50                        <br /> 
    5351                        <!-- 
    5452                        <input type="checkbox" name="ea_check_allUsers" id="ea_check_allUsers" onclick="javascript:get_available_users(org_context.value, this.checked);">{lang_all_users}. 
    5553                        --> 
    56                         <br><br> 
     54                        <br /><br /> 
    5755                                                         
    58                         {lang_search_user}:<br> 
    59                         <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this)"><br> 
     56                        {lang_search_user}:<br /> 
     57                        <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this,event)" /><br /> 
    6058                                                         
    6159                        <font color="red"><span id="ea_span_searching">&nbsp;</span></font> 
    62                         <br> 
    63                         <b>{lang_users}:</b><br> 
     60                        <br /> 
     61                        <b>{lang_users}:</b><br /> 
    6462                        <select id="ea_select_available_users" style="width:400px; height:200px" multiple size="13"></select> 
    6563                </td> 
  • trunk/expressoAdmin1_2/templates/default/maillists_form.tpl

    r3351 r5133  
    1414                                        <input type="hidden" name="restrictionsOnEmailLists" value="{restrictionsOnEmailLists}"> 
    1515                                        <input type="hidden" name="defaultDomain" value="{defaultDomain}"> 
    16                                         <input type="hidden" id="autosearch" value="{autosearch}"> 
    1716 
    1817                                        <tr> 
     
    6362                                                         
    6463                                                        {lang_organizations}:<br> 
    65                                                         <select name="org_context" id="ea_combo_org_maillists" onchange="javascript:get_available_users(this.value, ea_check_allUsers.checked,true);">{combo_all_orgs}</select> 
     64                                                        <select name="org_context" id="ea_combo_org_maillists" onchange="javascript:get_available_users(this.value, ea_check_allUsers.checked);">{combo_all_orgs}</select> 
    6665                                                        <br> 
     66                                                        <!-- 
    6767                                                        <input type="checkbox" name="ea_check_allUsers" id="ea_check_allUsers" onclick="javascript:get_available_users(org_context.value, this.checked);">{lang_show_users_from_all_sub-organizations}. 
     68                                                        --> 
    6869                                                        <br><br> 
    6970                                                         
    7071                                                        {lang_search_user}:<br> 
    71                                                         <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this,{minNum},'search',{autosearch},true)"><br> 
     72                                                        <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this,event)"><br> 
    7273                                                         
    7374                                                        <font color="red"><span id="ea_span_searching">&nbsp;</span></font> 
  • trunk/expressoAdmin1_2/templates/default/maillists_scl.tpl

    r3351 r5133  
    1212                                        <input type="hidden" name="ldap_context" value="{ldap_context}"> 
    1313                                        <input type="hidden" name="manager_context" value="{manager_context}"> 
    14                                         <input type="hidden" id="autosearch" value="{autosearch}"> 
     14                                         
    1515                                        <tr> 
    1616                                                <td colspan="3" align="right" bgcolor="{color_bg1}"> 
     
    3939                                                <td valign="bottom" bgcolor="#DDDDDD"> 
    4040                                                        {lang_organizations}:<br> 
    41                                                         <select name="org_context" id="ea_combo_org_maillists" onchange="javascript:get_available_users(this.value, ea_check_allUsers.checked,false);">{combo_org}</select> 
     41                                                        <select name="org_context" id="ea_combo_org_maillists" onchange="javascript:get_available_users(this.value, ea_check_allUsers.checked);">{combo_org}</select> 
    4242                                                         
    4343                                                        <br> 
     
    4747                                                         
    4848                                                        {lang_search_user}:<br> 
    49                                                         <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this,{minNum},'search',{autosearch},false)"><br> 
     49                                                        <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this)"><br> 
    5050                                                         
    5151                                                        <font color="red"><span id="ea_span_searching">&nbsp;</span></font> 
  • trunk/expressoAdmin1_2/templates/default/managers.tpl

    r4559 r5133  
    55   <td align="right"> 
    66    <form method="POST" action="{action}"> 
    7         <input type="submit" value="{lang_add_manager}"> 
     7        <input type="submit" value="{lang_add_manager}" /> 
    88    </form> 
    99   </td> 
  • trunk/expressoAdmin1_2/templates/default/managers_form.tpl

    r1913 r5133  
    2727                                        <td width="25%">{lang_search_for_manager}:</td> 
    2828                                                <td> 
    29                                                         <input type="text" id="manager_lid" {input_manager_lid_disabled} name="manager_lid" value="{manager_lid}" size=30 autocomplete="off" onkeyup="javascript:search_manager(this.value)"></input> 
     29                                                        <input type="text" id="manager_lid" {input_manager_lid_disabled} name="manager_lid" value="{manager_lid}" size=30 autocomplete="off" onkeypress="return search_manager(this.value, event)"></input> 
    3030                                                        <font color="red"><span id="ea_span_searching_manager">&nbsp;</span></font> 
    3131                                                </td> 
     
    6262                                            <tr bgcolor="{color_font1}" align='right'> 
    6363                                                        <td width="20%">{lang_add_users}:</td> 
    64                                                         <td width="2%"><input type="checkbox" name="acl_add_users" value="1" {acl_add_users}></td> 
     64                                                        <td width="2%"><input type="checkbox" name="acl_add_users" value="true" {acl_add_users}></td> 
    6565                                                        <td width="20%">{lang_add_groups}:</td> 
    66                                                         <td width="2%"><input type="checkbox" name="acl_add_groups" value="16" {acl_add_groups}></td>                                                    
     66                                                        <td width="2%"><input type="checkbox" name="acl_add_groups" value="true" {acl_add_groups}></td> 
    6767                                                        <td width="20%">{lang_add_email_lists}:</td> 
    68                                                         <td width="2%"><input type="checkbox" name="acl_add_maillists" value="256" {acl_add_maillists}></td> 
     68                                                        <td width="2%"><input type="checkbox" name="acl_add_maillists" value="true" {acl_add_maillists}></td> 
    6969                                                        <td width="20%">{lang_create_organizations}:</td> 
    70                                                         <td width="2%"><input type="checkbox" name="acl_create_sectors" value="4096" {acl_create_sectors}></td> 
     70                                                        <td width="2%"><input type="checkbox" name="acl_create_sectors" value="true" {acl_create_sectors}></td> 
    7171                                            </tr> 
    7272                                            <tr bgcolor="{color_font2}" align='right'> 
    7373                                                        <td>{lang_edit_users}:</td> 
    74                                                         <td><input type="checkbox" name="acl_edit_users" value="2" {acl_edit_users}></td> 
     74                                                        <td><input type="checkbox" name="acl_edit_users" value="true" {acl_edit_users}></td> 
    7575                                                        <td>{lang_edit_groups}:</td> 
    76                                                         <td><input type="checkbox" name="acl_edit_groups" value="32" {acl_edit_groups}></td> 
     76                                                        <td><input type="checkbox" name="acl_edit_groups" value="true" {acl_edit_groups}></td> 
    7777                                                        <td>{lang_edit_email_lists}:</td> 
    78                                                         <td><input type="checkbox" name="acl_edit_maillists" value="512" {acl_edit_maillists}></td> 
     78                                                        <td><input type="checkbox" name="acl_edit_maillists" value="true" {acl_edit_maillists}></td> 
    7979                                                        <td>{lang_edit_organizations}:</td> 
    80                                                         <td><input type="checkbox" name="acl_edit_sectors" value="8192" {acl_edit_sectors}></td> 
     80                                                        <td><input type="checkbox" name="acl_edit_sectors" value="true" {acl_edit_sectors}></td> 
    8181                                                </tr> 
    8282                                                <tr bgcolor="{color_font1}" align='right'> 
    8383                                                        <td>{lang_delete_users}:</td> 
    84                                                         <td><input type="checkbox" name="acl_delete_users" value="4" {acl_delete_users}></td> 
     84                                                        <td><input type="checkbox" name="acl_delete_users" value="true" {acl_delete_users}></td> 
    8585                                                        <td>{lang_delete_groups}:</td> 
    86                                                         <td><input type="checkbox" name="acl_delete_groups" value="64" {acl_delete_groups}></td> 
     86                                                        <td><input type="checkbox" name="acl_delete_groups" value="true" {acl_delete_groups}></td> 
    8787                                                        <td>{lang_delete_email_lists}:</td> 
    88                                                         <td><input type="checkbox" name="acl_delete_maillists" value="1024" {acl_delete_maillists}></td> 
     88                                                        <td><input type="checkbox" name="acl_delete_maillists" value="true" {acl_delete_maillists}></td> 
    8989                                                        <td>{lang_delete_organizations}:</td> 
    90                                                         <td><input type="checkbox" name="acl_delete_sectors" value="16384" {acl_delete_sectors}></td> 
    91                                                 </tr> 
    92                                                 <tr bgcolor="{color_font2}" align='right'> 
    93                                                         <td>{lang_rename_users}:</td> 
    94                                                         <td><input type="checkbox" name="acl_rename_users" value="8388608" {acl_rename_users}></td> 
    95                                                         <td>{lang_edit_email_attribute_from_the_groups}:</td> 
    96                                                         <td><input type="checkbox" name="acl_edit_email_groups" value="67108864" {acl_edit_email_groups}></td> 
    97                                                         <td>{lang_edit_SCL_email_lists}:</td> 
    98                                                         <td><input type="checkbox" name="acl_edit_scl_email_lists" value="1073741824" {acl_edit_scl_email_lists}></td> 
    99                                                 </tr> 
    100                                                 <tr bgcolor="{color_font1}" align='right'> 
    101                                                         <td>{lang_manipulate_corporative_information}:</td> 
    102                                                         <td><input type="checkbox" name="acl_manipulate_corporative_information" value="268435456" {acl_manipulate_corporative_information}></td> 
     90                                                        <td><input type="checkbox" name="acl_delete_sectors" value="true" {acl_delete_sectors}></td> 
     91                                                </tr> 
     92                                                <tr align='right'> 
     93                                                        <td bgcolor="{color_font2}">{lang_rename_users}:</td> 
     94                                                        <td bgcolor="{color_font2}"><input type="checkbox" name="acl_rename_users" value="true" {acl_rename_users}></td> 
     95                                                        <td bgcolor="{color_font2}">{lang_edit_email_attribute_from_the_groups}:</td> 
     96                                                        <td bgcolor="{color_font2}"><input type="checkbox" name="acl_edit_email_groups" value="true" {acl_edit_email_groups}></td> 
     97                                                        <td bgcolor="{color_font2}">{lang_edit_SCL_email_lists}:</td> 
     98                                                        <td bgcolor="{color_font2}"><input type="checkbox" name="acl_edit_scl_email_lists" value="true" {acl_edit_scl_email_lists}></td> 
     99                                                        <td>&nbsp;</td> 
     100                                                        <td>&nbsp;</td> 
     101                                                </tr> 
     102                                                <tr  align='right'> 
     103                                                        <td bgcolor="{color_font1}" >{lang_manipulate_corporative_information}:</td> 
     104                                                        <td bgcolor="{color_font1}" ><input type="checkbox" name="acl_manipulate_corporative_information" value="true" {acl_manipulate_corporative_information}></td> 
     105                                                        <td>&nbsp;</td> 
     106                                                        <td>&nbsp;</td> 
     107                                                        <td>&nbsp;</td> 
     108                                                        <td>&nbsp;</td> 
     109                                                        <td>&nbsp;</td> 
     110                                                        <td>&nbsp;</td> 
    103111                                                </tr> 
    104112                                                <tr bgcolor="{color_font2}" align='right'> 
    105113                                                        <td>{lang_view_user}:</td> 
    106                                                         <td><input type="checkbox" name="acl_view_users" value="33554432" {acl_view_users}></td> 
     114                                                        <td><input type="checkbox" name="acl_view_users" value="true" {acl_view_users}></td> 
    107115                                                        <td>{lang_add_shared_accounts}:</td> 
    108                                                         <td><input type="checkbox" name="acl_add_shared_accounts" value="34359738368" {acl_add_shared_accounts}></td> 
     116                                                        <td><input type="checkbox" name="acl_add_shared_accounts" value="true" {acl_add_shared_accounts}></td> 
    109117                                                        <td>{lang_add_institutional_accounts}:</td> 
    110                                                         <td><input type="checkbox" name="acl_add_institutional_accounts" value="4294967296" {acl_add_institutional_accounts}></td> 
    111                                                 </tr> 
    112                                                 <tr bgcolor="{color_font1}" align='right'> 
    113                                                         <td>{lang_edit_users_picture}:</td> 
    114                                                         <td><input type="checkbox" name="acl_edit_users_picture" value="536870912" {acl_edit_users_picture}></td> 
    115                                                         <td>{lang_edit_shared_accounts}:</td> 
    116                                                         <td><input type="checkbox" name="acl_edit_shared_accounts" value="68719476736" {acl_edit_shared_accounts}></td> 
    117                                                         <td>{lang_edit_institutional_accounts}:</td> 
    118                                                         <td><input type="checkbox" name="acl_edit_institutional_accounts" value="8589934592" {acl_edit_institutional_accounts}></td> 
    119  
    120                                                 </tr> 
    121                                                 <tr bgcolor="{color_font2}" align='right'> 
    122                                                         <td>{lang_edit_users_phonenumber}:</td> 
    123                                                         <td><input type="checkbox" name="acl_edit_users_phonenumber" value="2147483648" {acl_edit_users_phonenumber}></td> 
    124                                                         <td>{lang_delete_shared_accounts}:</td> 
    125                                                         <td><input type="checkbox" name="acl_delete_shared_accounts" value="137438953472" {acl_delete_shared_accounts}></td> 
    126                                                         <td>{lang_remove_institutional_accounts}:</td> 
    127                                                         <td><input type="checkbox" name="acl_remove_institutional_accounts" value="17179869184" {acl_remove_institutional_accounts}></td> 
    128                                                 </tr> 
    129                                                 <tr bgcolor="{color_font1}" align='right'> 
    130                                                         <td>{lang_change_users_password}:</td> 
    131                                                         <td><input type="checkbox" name="acl_change_users_password" value="128" {acl_change_users_password}></td> 
    132                                                         <td>{lang_edit_shared_accounts_acl}:</td> 
    133                                                         <td><input type="checkbox" name="acl_edit_shared_accounts_acl" value="274877906944" {acl_edit_shared_accounts_acl}></td> 
    134                                                 </tr> 
    135                                                 <tr bgcolor="{color_font2}" align='right'> 
    136                                                         <td>{lang_change_users_quote}:</td> 
    137                                                         <td><input type="checkbox" name="acl_change_users_quote" value="262144" {acl_change_users_quote}></td> 
    138                                                         <td>{lang_edit_shared_accounts_quote}:</td> 
    139                                                         <td><input type="checkbox" name="acl_edit_shared_accounts_quote" value="549755813888" {acl_edit_shared_accounts_quote}></td> 
    140                                                 </tr> 
    141                                                 <tr bgcolor="{color_font1}" align='right'> 
    142                                                         <td>{lang_set_default_users_password}:</td> 
    143                                                         <td><input type="checkbox" name="acl_set_user_default_password" value="524288" {acl_set_user_default_password}></td> 
    144                                                         <td>{lang_empty_shared_accounts_inbox}:</td> 
    145                                                         <td><input type="checkbox" name="acl_empty_shared_accounts_inbox" value="1099511627776" {acl_empty_shared_accounts_inbox}></td> 
    146                                                 </tr> 
    147                                                 <tr bgcolor="{color_font2}" align='right'> 
    148                                                         <td>{lang_empty_user_inbox}:</td> 
    149                                                         <td><input type="checkbox" name="acl_empty_user_inbox" value="134217728" {acl_empty_user_inbox}></td> 
     118                                                        <td><input type="checkbox" name="acl_add_institutional_accounts" value="true" {acl_add_institutional_accounts}></td> 
     119                                                        <td>{lang_edit_general_maximum_number_of_recipients}:</td> 
     120                                                        <td><input type="checkbox" name="acl_edit_maximum_number_of_recipients_generally" value="true" {acl_edit_maximum_number_of_recipients_generally}></td> 
     121 
     122                                                </tr> 
     123                                                <tr align='right'> 
     124                                                        <td bgcolor="{color_font1}" >{lang_edit_users_picture}:</td> 
     125                                                        <td bgcolor="{color_font1}" ><input type="checkbox" name="acl_edit_users_picture" value="true" {acl_edit_users_picture}></td> 
     126                                                        <td bgcolor="{color_font1}" >{lang_edit_shared_accounts}:</td> 
     127                                                        <td bgcolor="{color_font1}" ><input type="checkbox" name="acl_edit_shared_accounts" value="true" {acl_edit_shared_accounts}></td> 
     128                                                        <td bgcolor="{color_font1}" >{lang_edit_institutional_accounts}:</td> 
     129                                                        <td bgcolor="{color_font1}" ><input type="checkbox" name="acl_edit_institutional_accounts" value="true" {acl_edit_institutional_accounts}></td> 
     130                                                        <td bgcolor="{color_font1}" >{lang_add_maximum_number_of_recipients_by_user}:</td> 
     131                                                        <td bgcolor="{color_font1}" ><input type="checkbox" name="acl_add_maximum_number_of_recipients_by_user" value="true" {acl_add_maximum_number_of_recipients_by_user}></td> 
     132 
     133                                                </tr> 
     134                                                <tr align='right'> 
     135                                                        <td bgcolor="{color_font2}">{lang_edit_users_phonenumber}:</td> 
     136                                                        <td bgcolor="{color_font2}"><input type="checkbox" name="acl_edit_users_phonenumber" value="true" {acl_edit_users_phonenumber}></td> 
     137                                                        <td bgcolor="{color_font2}">{lang_delete_shared_accounts}:</td> 
     138                                                        <td bgcolor="{color_font2}"><input type="checkbox" name="acl_delete_shared_accounts" value="true" {acl_delete_shared_accounts}></td> 
     139                                                        <td bgcolor="{color_font2}">{lang_remove_institutional_accounts}:</td> 
     140                                                        <td bgcolor="{color_font2}"><input type="checkbox" name="acl_remove_institutional_accounts" value="true" {acl_remove_institutional_accounts}></td> 
     141                                                        <td bgcolor="{color_font2}">{lang_edit_and_remove_maximum_number_of_recipients_by_user}:</td> 
     142                                                        <td bgcolor="{color_font2}"><input type="checkbox" name="acl_edit_and_remove_maximum_number_of_recipients_by_user" value="true" {acl_edit_and_remove_maximum_number_of_recipients_by_user}></td> 
     143 
     144                                                </tr> 
     145                                                <tr  align='right'> 
     146                                                        <td bgcolor="{color_font1}">{lang_change_users_password}:</td> 
     147                                                        <td bgcolor="{color_font1}"><input type="checkbox" name="acl_change_users_password" value="true" {acl_change_users_password}></td> 
     148                                                        <td bgcolor="{color_font1}">{lang_edit_shared_accounts_acl}:</td> 
     149                                                        <td bgcolor="{color_font1}"><input type="checkbox" name="acl_edit_shared_accounts_acl" value="true" {acl_edit_shared_accounts_acl}></td> 
     150                                                        <td>&nbsp;</td> 
     151                                                        <td>&nbsp;</td> 
     152                                                        <td bgcolor="{color_font1}">{lang_add_maximum_number_of_recipients_by_group}:</td> 
     153                                                        <td bgcolor="{color_font1}"><input type="checkbox" name="acl_add_maximum_number_of_recipients_by_group" value=true" {acl_add_maximum_number_of_recipients_by_group}></td> 
     154 
     155                                                </tr> 
     156                                                <tr align='right'> 
     157                                                        <td bgcolor="{color_font2}"> {lang_change_users_quote}:</td>  
     158                                                        <td bgcolor="{color_font2}"><input type="checkbox" name="acl_change_users_quote" value="true" {acl_change_users_quote}></td> 
     159                                                        <td bgcolor="{color_font2}">{lang_edit_shared_accounts_quote}:</td> 
     160                                                        <td bgcolor="{color_font2}"><input type="checkbox" name="acl_edit_shared_accounts_quote" value="true" {acl_edit_shared_accounts_quote}></td> 
     161                                                        <td bgcolor="{color_font2}">{lang_active_blocking_sending_email_to_shared_accounts}:</td> 
     162                                                        <td bgcolor="{color_font2}"><input type="checkbox" name="acl_active_blocking_sending_email_to_shared_accounts" value="true" {acl_active_blocking_sending_email_to_shared_accounts}</td> 
     163                                                        <td bgcolor="{color_font2}">{lang_edit_and_remove_maximum_number_of_recipients_by_group}:</td> 
     164                                                        <td bgcolor="{color_font2}"><input type="checkbox" name="acl_edit_and_remove_maximum_number_of_recipients_by_group" value="true" {acl_edit_and_remove_maximum_number_of_recipients_by_group}</td> 
     165                                                </tr> 
     166                                                <tr align='right'> 
     167                                                        <td bgcolor="{color_font1}">{lang_set_default_users_password}:</td> 
     168                                                        <td bgcolor="{color_font1}"><input type="checkbox" name="acl_set_user_default_password" value="true" {acl_set_user_default_password}></td> 
     169                                                        <td bgcolor="{color_font1}">{lang_empty_shared_accounts_inbox}:</td> 
     170                                                        <td bgcolor="{color_font1}"><input type="checkbox" name="acl_empty_shared_accounts_inbox" value="true" {acl_empty_shared_accounts_inbox}></td> 
     171                                                        <td bgcolor="{color_font1}">{lang_add_blocking_sending_email_to_shared_accounts_exception}:</td> 
     172                                                        <td bgcolor="{color_font1}"><input type="checkbox" name="acl_add_blocking_sending_email_to_shared_accounts_exception" value="true" {acl_add_blocking_sending_email_to_shared_accounts_exception}</td> 
     173                                                        <td>&nbsp;</td> 
     174                                                        <td>&nbsp;</td> 
     175                                                </tr> 
     176                                                <tr align='right'> 
     177                                                        <td  bgcolor="{color_font2}">{lang_empty_user_inbox}:</td> 
     178                                                        <td  bgcolor="{color_font2}"><input type="checkbox" name="acl_empty_user_inbox" value="true" {acl_empty_user_inbox}></td> 
     179                                                        <td>&nbsp;</td> 
     180                                                        <td>&nbsp;</td> 
     181                                                        <td bgcolor="{color_font2}">{lang_edit_and_remove_blocking_sending_email_to_shared_accounts_exception}:</td> 
     182                                                        <td bgcolor="{color_font2}"><input type="checkbox" name="acl_edit_and_remove_blocking_sending_email_to_shared_accounts_exception" value="true" {acl_edit_and_remove_blocking_sending_email_to_shared_accounts_exception}</td> 
     183                                                        <td>&nbsp;</td> 
     184                                                        <td>&nbsp;</td> 
    150185                                                </tr> 
    151186                                                 
     
    153188                                                <tr bgcolor="{color_font1}" align='right'> 
    154189                                                        <td style="{display_samba_suport}">{lang_edit_SAMBA_users_attributes}:</td> 
    155                                                         <td style="{display_samba_suport}"><input type="checkbox" name="acl_edit_sambausers_attributes" value="32768" {acl_edit_sambausers_attributes}></td> 
     190                                                        <td style="{display_samba_suport}"><input type="checkbox" name="acl_edit_sambausers_attributes" value="true" {acl_edit_sambausers_attributes}></td> 
    156191                                                </tr> 
    157192                                                <tr bgcolor="{color_font2}" align='right'> 
    158193                                                        <td style="{display_samba_suport}">{lang_edit_SAMBA_domains}:</td> 
    159                                                         <td style="{display_samba_suport}"><input type="checkbox" name="acl_edit_sambadomains" value="16777216" {acl_edit_sambadomains}></td> 
     194                                                        <td style="{display_samba_suport}"><input type="checkbox" name="acl_edit_sambadomains" value="true" {acl_edit_sambadomains}></td> 
    160195                                                </tr> 
    161196                                                <tr><td>&nbsp;</td></tr> 
    162197 
     198                                                        <td>&nbsp;</td> 
     199                                                        <td>&nbsp;</td> 
     200                                                <td bgcolor="{color_font2}" align='right'>{lang_add_messages_size_rule}:</td> 
     201                                                <td bgcolor="{color_font2}" align='right'><input type="checkbox" name="acl_add_messages_size_rule" value="true" {acl_add_messages_size_rule}</td> 
     202                                          
    163203                                                <tr bgcolor="{color_font2}" align='right'> 
    164204                                                        <td>{lang_show_sessions}:</td> 
    165                                                         <td><input type="checkbox" name="acl_view_global_sessions" value="65536" {acl_view_global_sessions}></td> 
     205                                                        <td><input type="checkbox" name="acl_view_global_sessions" value="true" {acl_view_global_sessions}></td> 
     206                                                         
     207                                                        <td bgcolor="{color_font2}">{lang_edit_messages_size_rule}:</td> 
     208                                                        <td bgcolor="{color_font2}"><input type="checkbox" name="acl_edit_messages_size_rule" value="true" {acl_edit_messages_size_rule}</td> 
     209                                                         
    166210                                                        <td style="{display_samba_suport}">{lang_create_computers}:</td> 
    167                                                         <td style="{display_samba_suport}"><input type="checkbox" name="acl_create_computers" value="1048576" {acl_create_computers}></td> 
     211                                                        <td style="{display_samba_suport}"><input type="checkbox" name="acl_create_computers" value="true" {acl_create_computers}></td> 
    168212                                                </tr> 
    169213                                                <tr bgcolor="{color_font1}" align='right'> 
    170214                                                        <td>{lang_view_logs}:</td> 
    171                                                         <td><input type="checkbox" name="acl_view_logs" value="131072" {acl_view_logs}></td> 
     215                                                        <td><input type="checkbox" name="acl_view_logs" value="true" {acl_view_logs}></td> 
     216                                                         
     217                                                        <td bgcolor="{color_font2}">{lang_remove_messages_size_rule}:</td> 
     218                                                        <td bgcolor="{color_font2}"><input type="checkbox" name="acl_remove_messages_size_rule" value="true" {acl_remove_messages_size_rule}</td> 
     219                                                         
    172220                                                        <td style="{display_samba_suport}">{lang_edit_computers}:</td> 
    173                                                         <td style="{display_samba_suport}"><input type="checkbox" name="acl_edit_computers" value="2097152" {acl_edit_computers}></td> 
     221                                                        <td style="{display_samba_suport}"><input type="checkbox" name="acl_edit_computers" value="true" {acl_edit_computers}></td> 
    174222                                                </tr> 
    175223                                                <tr bgcolor="{color_font2}" align='right'> 
     
    177225                                                        <td>&nbsp;</td> 
    178226                                                        <td style="{display_samba_suport}">{lang_delete_computers}:</td> 
    179                                                         <td style="{display_samba_suport}"><input type="checkbox" name="acl_delete_computers" value="4194304" {acl_delete_computers}></td> 
    180                                                 </tr> 
    181                                                 </table></td></tr>                                               
     227                                                        <td style="{display_samba_suport}"><input type="checkbox" name="acl_delete_computers" value="true" {acl_delete_computers}></td> 
     228                                                </tr>  
     229                                                </table></td> 
     230 
     231                                                </tr> 
    182232                                        <!-- END ACL CONTROL --> 
    183233                                         
     
    208258 {error_messages} 
    209259<!-- END form --> 
     260  
  • trunk/expressoAdmin1_2/templates/default/sectors.tpl

    r1516 r5133  
    1717 </table> 
    1818  
    19  <table border="0" width="70%" align="center"> 
     19 <table border="0" width="65%" align="center"> 
    2020  <tr bgcolor="{th_bg}"> 
    2121   <td>{lang_name}</td> 
    2222   <td>{lang_inactives}</td> 
    23    <td>{lang_ver_cota}</td> 
    2423   <td>{lang_add_sub_sectors}</td> 
    2524   <td>{lang_edit}</td> 
     
    3433  <td>{sector_name}</td> 
    3534  <td width="13%">{inactives_link}</td>  
    36   <td width="13%">{cota_link}</td>  
    37   <td width="12%">{add_link}</td> 
     35  <td width="25%">{add_link}</td> 
    3836  <td width="5%">{edit_link}</td> 
    3937  <td width="5%">{delete_link}</td> 
  • trunk/expressoAdmin1_2/templates/default/sectors_form.tpl

    r3887 r5133  
    2525                <tr>   
    2626                        <td> 
    27                                 {lang_Associated_domain}: 
    28                         </td> 
    29                         <td> 
    30                                 <input type="text" {disable} autocomplete="off" name="associated_domain" value={associated_domain}> 
    31                         </td> 
    32                 </tr> 
    33                 {open_comment_cotas} 
    34                 <tr>   
    35                         <td> 
    36                                 {lang_users_quota}: 
    37                         </td> 
    38                         <td> 
    39                                 <input type="text" autocomplete="off" name="users_quota" value={users_quota}> 
    40                         </td> 
    41                 </tr> 
    42                  
    43                 <tr>   
    44                         <td> 
    45                                 {lang_disk_quota}: 
    46                         </td> 
    47                         <td> 
    48                                 <input type="text" autocomplete="off" name="disk_quota" value={disk_quota}> 
    49                         </td> 
    50                 </tr> 
    51                 <tr>   
    52                         <td> 
    53                                 {lang_file_manager_quota}: 
    54                         </td> 
    55                         <td> 
    56                                 <input type="text" autocomplete="off" name="file_manager_quota" value={file_manager_quota}> 
    57                         </td> 
    58                 </tr> 
    59                 {close_comment_cotas} 
    60                 <tr>   
    61                         <td> 
    6227                                {lang_do_not_show_this_sector}: 
    6328                        </td> 
  • trunk/expressoAdmin1_2/templates/default/shared_accounts.tpl

    r1913 r5133  
    1515                                <td align="right" "left" width="25%"> 
    1616                                                {lang_to_search}: 
    17                                                 <input type="text" onKeyUp="javascript:get_shared_accounts_timeOut(this.value)" id="ea_shared_account_search" autocomplete="off" value="{query}"> 
     17                                                <input type="text" onKeyUp="javascript:get_shared_accounts_timeOut(this.value, event)" id="ea_shared_account_search" autocomplete="off" value="{query}"> 
    1818                                </td> 
    1919                        </tr> 
     
    2525                        <tr bgcolor="{th_bg}"> 
    2626                                <td width="30%">{lang_full_name}</td> 
     27                                <td width="30%">{lang_display_name}</td> 
    2728                                <td width="30%">{lang_mail}</td> 
    2829                                <td width="5%" align="center">{lang_remove}</td> 
  • trunk/expressoAdmin1_2/templates/default/shared_accounts_modal.tpl

    r3356 r5133  
    11<input type="hidden" id="{modal_id}_title" value="{lang_creation_of_shared_accounts}"> 
    2 <input type="hidden" id="{modal_id}_height" value="503"> 
     2<input type="hidden" id="{modal_id}_height" value="550"> 
    33<input type="hidden" id="{modal_id}_width" value="930"> 
    44<input type="hidden" id="{modal_id}_close_action" value="close_lightbox()"> 
     
    66<input type="hidden" id="{modal_id}_save_action" value="save_shared_accounts()"> 
    77<input type="hidden" id="{modal_id}_onload_action" value="set_onload({manager_context})"> 
     8<input type="hidden" id="{modal_id}_alternate_mails" value="{alternate_mails}"> 
    89<form enctype="multipart/form-data" name="shared_accounts_form_template" method="post"> 
    910<input type="hidden" id="anchor" name="anchor"> 
    1011<input type="hidden" id="owners_acls" name="owners_acl" value=""> 
     12<input type="hidden" id="owners_calendar_acls" name="owners_calendar_acl" value=""> 
     13<input type="hidden" id="uidnumber" name="uidnumber" value=""> 
    1114<table border="0" cellspacing="4"> 
    1215        <tr> 
    1316                <td width="35%" bgcolor="#DDDDDD"> 
    14                         <p style="line-height: 220%">{lang_search_organization}: 
     17                        <div style="line-height: 220%">{lang_search_organization}: 
    1518                        <input type="text" id="organization_search" autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org');" onBlur="javascript:sinc_combos_org(context.value);"><br> 
    1619                         
     
    1922                         
    2023                        <input type="hidden" id="associated_domain" name="associated_domain"> 
    21                                                          
    2224                        {lang_full_name}:  
    2325                        <input id="cn" name="cn" size="36" autocomplete="off"><br> 
    24                                                  
    2526                        {lang_mail}:  
    2627                        <input id="mail" name="mail" onKeyUp='javascript:emailSugestion_expressoadmin2(this)' size="45" autocomplete="off"><br> 
    27  
     28                        <input type="button" value="{lang_add_alternative_mail}" onclick="addTextbox( 'mailalternateaddress[]', 'mailalternateaddress' );"> 
     29                        <div style="overflow: auto; height: 40px; line-height: 100%;" id="mailalternateaddress"> 
     30<!--                    <input id="mailalternateaddress" name="mailalternateaddress[]" size="45" autocomplete="off"><span onclick="appendClone('mailalternateaddress');" style="cursor: pointer;"> +</span> --> 
     31                        </div> 
    2832                        {lang_description}: 
    2933                        <input id="desc" name="desc" size="42" autocomplete="off"><br> 
     
    3438                        <div id='display_empty_inbox' name='display_empty_inbox' style="display:none"><input type='button' {disabled} {disabled_empty_inbox} value='{lang_empty_inbox}' onclick="javascript:empty_inbox(anchor.value);"></div> 
    3539                                                         
    36                         {lang_is_account_active}: <input type="checkbox" id="accountStatus" name="accountStatus" checked><br> 
    37                         {lang_omit_account_from_the_catalog}: <input type="checkbox" id="phpgwAccountVisible" name="phpgwAccountVisible"></p> 
     40                        {lang_is_account_active}: <input type="checkbox" id="accountStatus" name="accountStatus" checked><!--<br>--> 
     41                        {lang_omit_account_from_the_catalog}: <input type="checkbox" id="phpgwAccountVisible" name="phpgwAccountVisible"></div> 
    3842                                                         
    3943                        <b>{lang_owners}:</b><br> 
    4044                        <select style="width:350px; height:170px" id="ea_select_owners" onchange="sharemailbox.getaclfromuser(this.value);" name="owners[]" multiple size="13"></select> 
    41                         <span style="position:absolute;top:240;left:410"><table><tbody><tr><td colspan="2"><b>{lang_Rights}:</b></td></tr> 
    42                         <tr><td>{lang_read}:</td><td><input id="em_input_readAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_others_users_will_can_read_your_messages}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 
    43                         <tr><td>{lang_exclusion}:</td><td><input id="em_input_deleteAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_others_users_will_can_delete/move_your_messages}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 
    44                         <tr><td>{lang_creation}:</td><td><input id="em_input_writeAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_others_users_will_can_create/add_your_messages}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 
    45                         <tr><td>{lang_send}:</td><td><input disabled="disabled" id="em_input_sendAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_others_users_will_can_send_messages_as_you}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 
    46                         <tr><td>{lang_save}:</td><td><input disabled="disabled" id="em_input_saveAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_other_users_will_save_the_sent_messages_as_you_in_this_mailbox}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 
    47                         <tr><td>{lang_folder}:</td><td><input id="em_input_folderAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_allow_create_or_delete_folders_on_this_mailbox}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 
    48                         </span></tbody></table> 
     45                       
    4946                </td> 
    5047                                                 
    51                 <td width="15%" valign="middle" align="center" bgcolor="#DDDDDD"> 
     48                <td width="15%" valign="bottom" align="center" bgcolor="#DDDDDD" style="padding-bottom: 5px;"> 
     49                    <table align="center"> 
     50                        <tbody> 
     51                                <tr> 
     52                                    <td colspan="2" width="125"><b>{lang_calendar}:</b></td> 
     53                                </tr> 
     54                                <tr> 
     55                                    <td>{lang_read}</td><td><input type="checkbox" name="checkAttr" id ="em_input_readCalendar" onclick="return sharemailbox.setCalendaraclfromuser();" /><img title="{lang_this_user_will_can_read_events_at_the_mailbox_calendar}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td> 
     56                                </tr> 
     57                                <tr > 
     58                                    <td>{lang_add}</td><td><input type="checkbox" name="checkAttr" id ="em_input_writeCalendar" onclick="return sharemailbox.setCalendaraclfromuser();" /><img title="{lang_this_user_will_can_create_events_at_the_mailbox_calendar}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td> 
     59                                </tr> 
     60                                <tr> 
     61                                    <td>{lang_edit}</td><td><input type="checkbox" name="checkAttr" id ="em_input_editCalendar" onclick="return sharemailbox.setCalendaraclfromuser();" /><img title="{lang_this_user_will_can_edit_events_at_the_mailbox_calendar}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td> 
     62                                </tr> 
     63                                <tr> 
     64                                    <td>{lang_exclusion}</td><td><input type="checkbox" name="checkAttr" id ="em_input_deleteCalendar" onclick="return sharemailbox.setCalendaraclfromuser();" /><img title="{lang_this_user_will_can_delete_events_at_the_mailbox_calendar}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td> 
     65                                </tr> 
     66                                <tr > 
     67                                    <td>{lang_restrict}</td><td><input type="checkbox" name="checkAttr" id ="em_input_restrictCalendar" onclick="return sharemailbox.setCalendaraclfromuser();" /><img title="{lang_this_user_will_can_read_restrict_events_at_the_mailbox_calendar}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td> 
     68                                </tr> 
     69                            </tbody> 
     70                    </table> 
     71                    <br /> 
     72                    <table align="ce"><tbody><tr><td colspan="2" width="125"><b>{lang_Rights}:</b></td></tr> 
     73                        <tr><td>{lang_read}:</td><td><input id="em_input_readAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_this_user_will_can_read_messages}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 
     74                        <tr><td>{lang_exclusion}:</td><td><input id="em_input_deleteAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_this_user_will_can_delete/move_messages}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 
     75                        <tr><td>{lang_creation}:</td><td><input id="em_input_writeAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_this_user_will_can_create/add_messages}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 
     76                        <tr><td>{lang_send}:</td><td><input disabled="disabled" id="em_input_sendAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_this_user_will_can_send_messages}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 
     77                        <tr><td>{lang_save}:</td><td><input disabled="disabled" id="em_input_saveAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_this_user_will_save_the_sent_messages_on_this_mailbox}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 
     78                        <tr><td>{lang_folder}:</td><td><input id="em_input_folderAcl" onclick="return sharemailbox.setaclfromuser();" type="checkbox"><img title="{lang_allow_create_or_delete_folders_on_this_mailbox}." src="./expressoAdmin1_2/templates/default/images/ajuda.jpg"></td></tr> 
     79                        </tbody></table> 
     80                        <br /> 
    5281                        <button id="bt_add_user" type="button" onClick="javascript:add_user();"><img src="expressoAdmin1_2/templates/default/images/add.png" style="vertical-align: middle;">&nbsp;{lang_add_owner}</button> 
    53                         <br><br> 
    54                         <button id="bt_remove_user" type="button" onClick="javascript:remove_user();"><img src="expressoAdmin1_2/templates/default/images/rem.png" style="vertical-align: middle;">&nbsp;{lang_remove_owner}</button> 
     82                        <br /><br /> 
     83                        <button id="bt_remove_user" type="button" onClick="javascript:remove_user();"><img src="expressoAdmin1_2/templates/default/images/rem.png" style="vertical-align: middle;">&nbsp;{lang_remove_owner}</button><br><br> 
    5584                </td> 
    5685                                                 
    5786                <td width="25%" valign="bottom" bgcolor="#DDDDDD"> 
    5887                        {lang_search_organization}:<br> 
    59                         <input type="text" id="organization_search" autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org_available_users');" onBlur="javascript:get_available_users(org_context.value);"> 
     88                        <input type="text" id="organization_search" autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org_available_users');" > 
    6089                        <br> 
    6190                                                         
    6291                        {lang_organizations}:<br> 
    63                         <select name="org_context" id="ea_combo_org_available_users" onchange="javascript:get_available_users(this.value);">{all_organizations}</select> 
     92                        <select name="org_context" id="ea_combo_org_available_users" >{all_organizations}</select> 
    6493                        <br> 
    6594                        <!-- 
    66                         <input type="checkbox" name="ea_check_allUsers" id="ea_check_allUsers" onclick="javascript:get_available_users(org_context.value, this.checked);">{lang_all_users}. 
     95                        <input type="checkbox" name="ea_check_allUsers" id="ea_check_allUsers">{lang_all_users}. 
    6796                        --> 
    6897                        <br><br> 
    6998                                                         
    7099                        {lang_search_user}:<br> 
    71                         <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this)"><br> 
     100                        <input id="ea_input_searchUser" size="35" autocomplete="off" onkeyup="javascript:optionFinderTimeout(this, event)"><br> 
    72101                                                         
    73102                        <font color="red"><span id="ea_span_searching">&nbsp;</span></font> 
    74103                        <br> 
    75104                        <b>{lang_users}:</b><br> 
    76                         <select id="ea_select_available_users" style="width:350px; height:160px" multiple size="13"></select> 
     105<!--                    <div style="overflow: scroll; width:350px; height:160px" > --> 
     106                        <select id="ea_select_available_users" style="overflow: scroll; width:350px; height:160px" multiple size="13" ></select> 
     107<!--                    </div> --> 
    77108                </td> 
    78109        </tr> 
Note: See TracChangeset for help on using the changeset viewer.