source: trunk/expressoAdmin1_2/inc/class.bosectors.inc.php @ 1516

Revision 1516, 6.1 KB checked in by eduardoalex, 15 years ago (diff)

Ticket #419 - Parte principal da funcionalidade. Falta add atributos no ldap

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1<?php
2        /************************************************************************************\
3        * Expresso Administração                                                                                                     *
4        * by Joao Alfredo Knopik Junior (joao.alfredo@gmail.com, jakjr@celepar.pr.gov.br)        *
5        * -----------------------------------------------------------------------------------*
6        *  This program is free software; you can redistribute it and/or modify it                       *
7        *  under the terms of the GNU General Public License as published by the                         *
8        *  Free Software Foundation; either version 2 of the License, or (at your                        *
9        *  option) any later version.                                                                                                            *
10        \************************************************************************************/
11
12        class bosectors
13        {
14                var $public_functions = array(
15                        'create_sector' => True,
16                        'save_sector'   => True,
17                        'delete_sector' => True
18                );
19       
20                var $so;
21                var $functions;
22                var $db_functions;
23       
24                function bosectors()
25                {
26                        $this->so = createobject('expressoAdmin1_2.sosectors');
27                        $this->functions = $this->so->functions;
28                        $this->db_functions = $this->so->db_functions;
29                        $this->group = createobject('expressoAdmin1_2.group');
30                        $this->user = createobject('expressoAdmin1_2.user');
31                }
32
33                function create_sector()
34                {
35                        // Verifica o acesso do gerente
36                        if (!$this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'create_sectors'))
37                        {
38                                $return['status'] = false;
39                                $return['msg'] = lang('you do not have access to create sectors') . '.';
40                                return $return;
41                        }
42
43                        // Cria array para incluir no LDAP
44                        $dn = 'ou=' . $_POST['sector'] . ',' . $_POST['context'];                       
45                        $sector_info = array();
46                        $sector_info['ou']                              = $_POST['sector']; 
47                        $sector_info['objectClass'][0]  = 'top';
48                        $sector_info['objectClass'][1]  = 'organizationalUnit';
49                       
50                        /*Insere as informações sobre quota total por usuários e por gigabytes de espaço em disco
51                          Se não vierem os dados, ele coloca 0 (Caso não exista controle de cota).
52                        */
53                        $sector_info['diskQuota'] = isset($_POST['disk_quota']) ? $_POST['disk_quota'] : "0";
54                        $sector_info['usersQuota'] = isset($_POST['users_quota']) ? $_POST['users_quota'] : "0";
55
56                       
57                        $systemName = $GLOBALS['phpgw_info']['server']['system_name'];
58                        if ($systemName != '')
59                                $sector_info['phpgwSystem'] = strtolower($systemName);
60                       
61                        if ($_POST['sector_visible'])
62                        {
63                                $sector_info['objectClass'][2]  = 'phpgwAccount';
64                                $sector_info['phpgwaccountvisible'] = '-1';
65                        }
66                       
67                        // Chama funcao para escrever no OpenLDAP, case de erro, volta com msg de erro.
68                        if (!$this->so->write_ldap($dn, $sector_info))
69                        {
70                                $_POST['error_messages'] = lang('Error in OpenLDAP recording.');
71                                ExecMethod('expressoAdmin1_2.uisectors.add_sector');
72                                return false;
73                        }
74                       
75                        //Escreve no log
76                        $this->db_functions->write_log("created sector", "$dn");
77                       
78                        // Volta para o ListSectors
79                        $url = ($GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uisectors.list_sectors'));
80                        $GLOBALS['phpgw']->redirect($url);
81                }
82
83                function save_sector()
84                {
85                        $sector_info = $this->so->get_info($_POST['context']);
86                       
87                        if (($_POST['sector_visible'] == 'on') && ($sector_info['phpgwaccountvisible'] != '-1'))
88                        {
89                                foreach ($sector_info[0]['objectclass'] as $objectClass)
90                                {
91                                        if ($objectClass == 'phpgwAccount')
92                                                $phpgwAccount = true;
93                                        else
94                                                $phpgwAccount = false;
95                                }
96                               
97                                if (!$phpgwAccount)
98                                {
99                                        $ldap_mod_add['objectClass'][] = 'phpgwAccount';
100                                }
101                               
102                                $ldap_mod_add['phpgwaccountvisible'] = '-1';
103                                $this->so->add_attribute($sector_info[0]['dn'], $ldap_mod_add);
104                        }
105                        elseif($sector_info['phpgwaccountvisible'] == '-1')
106                        {
107                                $ldap_mod_del['objectClass'] = 'phpgwAccount';
108                                $ldap_mod_del['phpgwaccountvisible'] = array();
109                                $this->so->remove_attribute($sector_info[0]['dn'], $ldap_mod_del);
110                        }
111                       
112                        //Modifica o conteúdo das cotas.
113                        if( (isset($_POST['disk_quota']) ) && (isset($_POST['users_quota']) ) ) { //se for passado alguma coisa, lógico
114                                $ldap_mod_replace = array();
115                                $ldap_mod_replace['diskQuota'] = $_POST['disk_quota'];
116                                $ldap_mod_replace['usersQuota'] = $_POST['users_quota'];
117                                $this->so->replace_attribute($sector_info[0]['dn'], $ldap_mod_replace);
118                        }
119                               
120                        // Volta para o ListSectors
121                        ExecMethod('expressoAdmin1_2.uisectors.list_sectors');
122                }
123
124                function delete_sector()
125                {
126
127                        // Verifica o acesso do gerente
128                        if (!$this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'delete_sectors'))
129                        {
130                                $return['status'] = false;
131                                $return['msg'] = lang('you do not have access to delete sectors') . '.';
132                                return $return;
133                        }
134
135                        $sector_dn = $_POST['dn'];
136                        $manager_context = $_POST['manager_context'];
137
138                       
139
140                        $sector_users = $this->so->get_sector_users($sector_dn);
141                        for ($i=0; $i<count($sector_users)-1; $i++)
142                        {
143                                //_debug_array($user);
144                                // Pega o UID e os grupos que o usuario fz parte.
145                                $uid = $sector_users[$i]['uid'][0];
146                                $account_id = $sector_users[$i]['uidnumber'][0];
147                                $dn = $sector_users[$i]['dn'];
148                                $this->user->delete(Array('uid' =>  $uid , 'uidnumber' => $account_id));
149                        }
150
151
152                        $sector_groups = $this->so->get_sector_groups($sector_dn);
153                        for ($i=0; $i<count($sector_groups)-1; $i++)
154                        {
155                                $dn = $sector_groups[$i]['dn'];
156                                $gidnumber = $sector_groups[$i]['gidnumber'][0];
157
158                                //Delete group
159                                $this->group->delete(Array('gidnumber' => $gidnumber, 'cn' => $dn));
160                        }
161                       
162                        if ( (!empty($GLOBALS['phpgw_info']['server']['ldap_master_host'])) &&
163                                 (!empty($GLOBALS['phpgw_info']['server']['ldap_master_root_dn'])) &&
164                                 (!empty($GLOBALS['phpgw_info']['server']['ldap_master_root_pw'])) )
165                        {
166                                $connection = $GLOBALS['phpgw']->common->ldapConnect($GLOBALS['phpgw_info']['server']['ldap_master_host'],
167                                                                                                   $GLOBALS['phpgw_info']['server']['ldap_master_root_dn'],
168                                                                                                   $GLOBALS['phpgw_info']['server']['ldap_master_root_pw']);
169                        }
170                        else
171                        {
172                                $connection = $GLOBALS['phpgw']->common->ldapConnect();
173                        }
174                       
175                        $this->so->delete_sector_ldap_recursively($connection, $sector_dn);
176                        ldap_close($connection);
177                       
178                        // Volta para o ListGroups
179                        $url = ($GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uisectors.list_sectors'));
180                        $GLOBALS['phpgw']->redirect($url);
181                }
182        }
183?>
Note: See TracBrowser for help on using the repository browser.