source: companies/serpro/expressoAdminSerpro/inc/class.uigroups.inc.php @ 903

Revision 903, 17.9 KB checked in by niltonneto, 15 years ago (diff)

Importacao inicial do Expresso do Serpro

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 uigroups
13        {
14                var $public_functions = array
15                (
16                        'list_groups'   => True,
17                        'add_groups'    => True,
18                        'edit_groups'   => True,
19                        'css'                   => True
20                );
21
22                var $nextmatchs;
23                var $group;
24                var $functions;
25                var $ldap_functions;
26                var $db_functions;
27                       
28                function uigroups()
29                {
30                        $this->group            = CreateObject('expressoAdminSerpro.group');
31                        $this->nextmatchs       = createobject('phpgwapi.nextmatchs');
32                        $this->functions        = CreateObject('expressoAdminSerpro.functions');
33                        $this->ldap_functions = CreateObject('expressoAdminSerpro.ldap_functions');
34                        $this->db_functions = CreateObject('expressoAdminSerpro.db_functions');
35                       
36                        $c = CreateObject('phpgwapi.config','expressoAdminSerpro');
37                        $c->read_repository();
38                        $this->current_config = $c->config_data;
39                       
40                        if(!@is_object($GLOBALS['phpgw']->js))
41                        {
42                                $GLOBALS['phpgw']->js = CreateObject('phpgwapi.javascript');
43                        }
44                        $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdminSerpro');#diretorio, arquivo.js, aplicacao
45                        $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdminSerpro');
46                        $GLOBALS['phpgw']->js->validate_file('jscode','groups','expressoAdminSerpro');
47                }
48               
49                function list_groups()
50                {
51                        $account_lid = $GLOBALS['phpgw']->accounts->data['account_lid'];
52                        $manager_acl = $this->functions->read_acl($account_lid);
53                        $raw_context = $acl['raw_context'];
54                        $contexts = $manager_acl['contexts'];
55                        foreach ($manager_acl['contexts_display'] as $index=>$tmp_context)
56                        {
57                                $context_display .= '<br>'.$tmp_context;
58                        }
59                       
60                        // Verifica se tem acesso a este modulo
61                        if (!$this->functions->check_acl($account_lid,'list_groups'))
62                        {
63                                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/expressoAdminSerpro/inc/access_denied.php'));
64                        }
65
66                        if(isset($_POST['query']))
67                        {
68                                // limit query to limit characters
69                                if(eregi('^[a-z_0-9_-].+$',$_POST['query']))
70                                        $GLOBALS['query'] = $_POST['query'];
71                        }
72                                               
73                        unset($GLOBALS['phpgw_info']['flags']['noheader']);
74                        unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
75                       
76                        $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdminSerpro']['title'].' - '.lang('User groups');
77                        $GLOBALS['phpgw']->common->phpgw_header();
78
79                        $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
80                        $p->set_file(array('groups'   => 'groups.tpl'));
81                        $p->set_block('groups','list','list');
82                        $p->set_block('groups','row','row');
83                        $p->set_block('groups','row_empty','row_empty');
84
85                        // Seta as variaveis padroes.
86                        $var = Array(
87                                'th_bg'                                 => $GLOBALS['phpgw_info']['theme']['th_bg'],
88                                'back_url'                              => $GLOBALS['phpgw']->link('/expressoAdminSerpro/index.php'),
89                                'add_action'                    => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdminSerpro.uigroups.add_groups'),
90                                'add_group_disabled'    => $this->functions->check_acl($account_lid,'add_groups') ? '' : 'disabled',
91                                //'context'                             => $context,
92                                'context_display'               => $context_display,
93                                'lang_groups_names'             => lang('Groups Names'),
94                                'lang_description'              => lang('Description'),
95                                'lang_add_groups'               => lang('Add Groups'),
96                                'lang_edit'                     => lang('Edit'),
97                                'lang_delete'                   => lang('Delete'),
98                                'lang_back'                             => lang('back'),
99                                'lang_context'                  => lang('context'),
100                                'lang_search'                   => lang('search')
101                        );
102                        $p->set_var($var);
103                       
104                        // Save query
105                        $p->set_var('query', $GLOBALS['query']);
106                       
107                        //Admin make a search
108                        if ($GLOBALS['query'] != '')
109                        {
110                                $groups_info = $this->functions->get_list('groups', $GLOBALS['query'], $contexts);
111                        }
112                        $total = count($groups_info);
113
114                        if (!count($total) && $GLOBALS['query'] != '')
115                        {
116                                $p->set_var('message',lang('No matches found'));
117                        }
118                        else if ($total)
119                        {
120                                if ($this->functions->check_acl($account_lid,'edit_groups'))
121                                {
122                                        $can_edit = True;
123                                }
124                                if ($this->functions->check_acl($account_lid,'delete_groups'))
125                                {
126                                        $can_delete = True;
127                                }
128
129                                foreach($groups_info as $group)
130                                {
131                                        $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
132                                        $var = Array(
133                                                'tr_color'              => $tr_color,
134                                                'row_cn'                        => $group['cn'],
135                                                'row_description'       => $group['description']
136                                        );
137                                        $p->set_var($var);
138
139                                        if ($can_edit)
140                                        {
141                                                $p->set_var('edit_link',$this->row_action('edit','groups',$group['gidnumber'],$group['cn']));
142                                        }
143                                        else
144                                        {
145                                                $p->set_var('edit_link','&nbsp;');
146                                        }
147
148                                        if ($can_delete)
149                                        {
150                                                $p->set_var('delete_link',"<a href='#' onClick='javascript:delete_group(\"".$group['cn']."\",\"".$group['gidnumber']."\");'>Excluir</a>");
151                                        }
152                                        else
153                                        {
154                                                $p->set_var('delete_link','&nbsp;');
155                                        }
156
157                                        $p->fp('rows','row',True);
158                                }
159                        }
160                        $p->parse('rows','row_empty',True);
161                        $p->set_var($var);
162
163                        if (! $GLOBALS['phpgw']->acl->check('group_access',4,'admin'))
164                        {
165                                $p->set_var('input_add','<input type="submit" value="' . lang('Add') . '">');
166                        }
167                        if (! $GLOBALS['phpgw']->acl->check('group_access',2,'admin'))
168                        {
169                                $p->set_var('input_search',lang('Search') . '&nbsp;<input name="query" value="'.htmlspecialchars(stripslashes($GLOBALS['query'])).'">');
170                        }
171                        $p->pfp('out','list');
172                }
173               
174                function add_groups()
175                {
176                        //$GLOBALS['phpgw']->js->set_onload('get_available_users(document.forms[0].org_context.value, document.forms[0].ea_check_allUsers.checked);');
177                        if ($this->current_config['expressoAdmin_samba_support'] == 'true')
178                                $GLOBALS['phpgw']->js->set_onload('get_available_sambadomains(document.forms[0].context.value, \'create_group\');');
179
180                        $manager_lid = $GLOBALS['phpgw']->accounts->data['account_lid'];
181                        $manager_acl = $this->functions->read_acl($manager_lid);
182                        $manager_contexts = $manager_acl['contexts'];
183                       
184                        // Verifica se tem acesso a este modulo
185                        if (!$this->functions->check_acl($manager_lid,'add_groups'))
186                        {
187                                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/expressoAdminSerpro/inc/access_denied.php'));
188                        }
189
190                        unset($GLOBALS['phpgw_info']['flags']['noheader']);
191                        unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
192                        $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdminSerpro']['title'].' - '.lang('Create Group');
193                        $GLOBALS['phpgw']->common->phpgw_header();
194                       
195                        // Set o template
196                        $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
197                        $p->set_file(Array('create_group' => 'groups_form.tpl'));
198
199                        // Pega combo das organizações e seleciona um dos setores em caso de um erro na validaçao dos dados.
200                        //$combo_manager_org = $this->functions->get_organizations($manager_context, trim(strtolower($group_info['context'])));
201                        foreach ($manager_contexts as $index=>$context)
202                                $combo_manager_org .= $this->functions->get_organizations($context, trim(strtolower($group_info['context'])));
203                        $combo_all_orgs = $this->functions->get_organizations($GLOBALS['phpgw_info']['server']['ldap_context'], trim(strtolower($group_info['context'])));
204                       
205                        // Chama funcao para criar lista de aplicativos disponiveis.
206                        $apps = $this->functions->make_list_app($manager_lid);
207                       
208                        // Cria combo de dominio samba
209                        if ($this->current_config['expressoAdmin_samba_support'] == 'true')
210                        {
211                                $a_sambadomains = $this->db_functions->get_sambadomains_list();
212                                $sambadomainname_options = '';
213                                if (count($a_sambadomains))
214                                {
215                                        foreach ($a_sambadomains as $a_sambadomain)
216                                        {
217                                                // So mostra os sambaDomainName do contexto do manager
218                                                if ($this->ldap_functions->exist_sambadomains($manager_contexts, $a_sambadomain['samba_domain_name']))
219                                                        $sambadomainname_options .= "<option value='" . $a_sambadomain['samba_domain_sid'] . "'>" . $a_sambadomain['samba_domain_name'] . "</option>";
220                                        }
221                                }
222                        }
223                       
224                        // Seta variaveis utilizadas pelo tpl.
225                        $var = Array(
226                                'color_bg1'                     => "#E8F0F0",
227                                'color_bg2'                     => "#D3DCE3",
228                                'type'                          => 'create_group',
229                                'cn'                            => '',
230                                'restrictionsOnGroup'           => $this->current_config['expressoAdmin_restrictionsOnGroup'],
231                                'type'                          => 'create_group',
232                                'ldap_context'                  => $GLOBALS['phpgw_info']['server']['ldap_context'],
233                                'ufn_ldap_context'              => ldap_dn2ufn($GLOBALS['phpgw_info']['server']['ldap_context']),
234                                'lang_back'                     => lang('Back'),
235                                'lang_save'                     => lang('save'),
236                                'lang_group_organization'       => lang('Group Organization'),
237                                'lang_search_organization'      => lang('Search Organiztion'),
238                                'lang_org'                      => lang('Organizations'),
239                                'lang_group_name'               => lang('group name'),
240                                'lang_description'              => lang('Description'),
241                                'lang_email'                    => lang('E-mail'),
242                                'concatenateDomain'             => $this->current_config['expressoAdmin_concatenateDomain'],
243                                'defaultDomain'                 => $this->current_config['expressoAdmin_defaultDomain'],
244                                'lang_group_users'              => lang('Group users'),
245                                'lang_applications'             => lang('Applications'),
246                                'lang_add_user'                 => lang('Add User'),
247                                'lang_rem_user'                 => lang('Remove User'),
248                                'lang_all_users'                => lang('Select users from all sub-organizations'),
249                                'lang_ldap_path'                => lang('ldap path'),
250                                'lang_user_search'              => lang('user search'),
251                                'lang_users'                    => lang('users'),
252                                'lang_organizations'            => lang('organizations'),
253                                'lang_group_account_hide'       => lang('group account hide'),
254                                'apps'                          => $apps,
255                                //'use_attrs_samba_checked'     => $this->current_config['expressoAdmin_samba_support'] == 'true' ? 'CHECKED' : '',
256                                'use_attrs_samba_checked'       => '',
257                                'disabled_samba'                => $group_info['sambaGroup'] ? '' : 'disabled',
258                                'display_samba_options'         => $this->current_config['expressoAdmin_samba_support'] == 'true' ? '' : '"display:none"',
259                                'sambadomainname_options'       => $sambadomainname_options,
260                                'disable_email_groups'          => $this->functions->check_acl($manager_lid,'edit_email_groups') ? '' : 'disabled',
261                                'back_url'                                      => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdminSerpro.uigroups.list_groups'),
262                                'combo_manager_org'             => $combo_manager_org,
263                                'combo_all_orgs'                => $combo_all_orgs,
264                                'disabled_organization'         => $this->current_config['expressoAdmin_allowOrganizations'] == 'false' ? 'disabled' : '',
265                                'groups_default_dn'             => $this->current_config['expressoAdmin_groupsDefaultDn']
266                        );
267                        $p->set_var($var);
268
269                        $p->pfp('out','create_group');
270                }
271               
272                function edit_groups()
273                {
274                        //$GLOBALS['phpgw']->js->set_onload('get_available_users(document.forms[0].org_context.value, document.forms[0].ea_check_allUsers.checked);');
275
276                        $manager_lid = $GLOBALS['phpgw']->accounts->data['account_lid'];
277                        $manager_acl = $this->functions->read_acl($manager_lid);
278                        $manager_contexts = $manager_acl['contexts'];
279
280                        // Verifica se tem acesso a este modulo
281                        if (!$this->functions->check_acl($manager_lid,'edit_groups'))
282                        {
283                                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/expressoAdminSerpro/inc/access_denied.php'));
284                        }
285
286                        // GET all infomations about the group.
287                        $group_info = $this->group->get_info($_GET['gidnumber']);
288
289                        unset($GLOBALS['phpgw_info']['flags']['noheader']);
290                        unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
291                        $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdminSerpro']['title'].' - '.lang('Edit Group');
292                        $GLOBALS['phpgw']->common->phpgw_header();
293
294                        // Set o template
295                        $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
296                        $p->set_file(Array('create_group' => 'groups_form.tpl'));
297
298                        // Obtem combo das organizações e seleciona a org do grupo.
299                        foreach ($manager_contexts as $index=>$context)
300                                $combo_manager_org .= $this->functions->get_organizations($context, trim(strtolower($group_info['context'])));
301                        $combo_all_orgs = $this->functions->get_organizations($GLOBALS['phpgw_info']['server']['ldap_context'], trim(strtolower($group_info['context'])));
302
303                        // Usuarios do grupo.
304                        $user_count = 0;
305                        if (count($group_info['memberuid_info']) > 0)
306                        {
307                                foreach ($group_info['memberuid_info'] as $uid=>$user_data)
308                                {
309                                        if ($user_data['uidnumber'])
310                                        {
311                                                $array_users[$user_data['uidnumber']] = $user_data['cn'];
312                                                $array_users_uid[$user_data['uidnumber']] = $uid;
313                                                $array_users_type[$user_data['uidnumber']] = $user_data['type'];
314                                        }
315                                        else
316                                        {
317                                                $array_users[$uid] = $user_data['cn'];
318                                        }
319                                }
320                                natcasesort($array_users);
321                               
322                                foreach ($array_users as $uidnumber=>$cn)
323                                {
324                                        $user_count++;
325                                        if ($array_users_type[$uidnumber] == 'u')
326                                        {
327                                                $users .= "<option value=" . $uidnumber . ">" . $cn . " [" . $array_users_uid[$uidnumber] . "]</option>";
328                                        }
329                                        else
330                                        {
331                                                $unknow .= "<option value=-1>" . $cn . " [Corrigir manualmente]</option>";
332                                        }
333                                }
334                               
335                                $opt_tmp_users  = '<option  value="-1" disabled>-----------------------------&nbsp;&nbsp;&nbsp;&nbsp;Usuários&nbsp;&nbsp;&nbsp;&nbsp;---------------------------- </option>'."\n";
336                                $opt_tmp_unknow = '<option  value="-1" disabled>------------&nbsp;&nbsp;&nbsp;&nbsp;Usuários não encontrados no BD, somente no LDAP     &nbsp;&nbsp;&nbsp;&nbsp;------------</option>'."\n";
337                                $ea_select_usersInGroup = $unknow != '' ? $opt_tmp_unknow . $unknow . $opt_tmp_users . $users : $opt_tmp_users . $users;
338                        }
339                       
340                        // Chama funcao para criar lista de aplicativos disponiveis.
341                        $apps = $this->functions->make_list_app($manager_lid, $group_info['apps']);
342                       
343                        // Cria combo de dominios do samba
344                        if ($this->current_config['expressoAdmin_samba_support'] == 'true')
345                        {
346                                $a_sambadomains = $this->db_functions->get_sambadomains_list();
347                                $sambadomainname_options = '';
348                                if (count($a_sambadomains))
349                                {
350                                        foreach ($a_sambadomains as $a_sambadomain)
351                                        {
352                                                if ($a_sambadomain['samba_domain_sid'] == $group_info['sambasid'])
353                                                        $sambadomainname_options .= "<option value='" . $a_sambadomain['samba_domain_sid'] . "' SELECTED>" . $a_sambadomain['samba_domain_name'] . "</option>";
354                                                else
355                                                        $sambadomainname_options .= "<option value='" . $a_sambadomain['samba_domain_sid'] . "'>" . $a_sambadomain['samba_domain_name'] . "</option>";
356                                        }
357                                }
358                        }
359                       
360                        // Seta variaveis utilizadas pelo tpl.
361
362                        $var = Array(
363                                'color_bg1'                                     => "#E8F0F0",
364                                'color_bg2'                                     => "#D3DCE3",
365                                'type'                                          => 'edit_group',
366                                'ldap_context'                          => $GLOBALS['phpgw_info']['server']['ldap_context'],
367                                'lang_back'                                     => lang('Back'),
368                                'lang_save'                                     => lang('save'),
369                                'lang_group_organization'       => lang('Group Organization'),
370                                'lang_search_organization'      => lang('Search Organiztion'),
371                                'lang_org'                                      => lang('Organizations'),
372                                'lang_group_name'                       => lang('group name'),
373                                'lang_description'                      => lang('Description'),
374                                'lang_email'                            => lang('E-mail'),
375                                'lang_group_users'                      => lang('Group users'),
376                                'lang_applications'                     => lang('Applications'),
377                                'lang_add_user'                         => lang('Add User'),
378                                'lang_rem_user'                         => lang('Remove User'),
379                                'lang_all_users'                        => lang('Select users from all sub-organizations'),
380                                'lang_ldap_path'                        => lang('ldap path'),
381                                'lang_user_search'                      => lang('user search'),
382                                'lang_users'                            => lang('users'),
383                                'lang_organizations'                    => lang('organizations'),
384                                'lang_group_account_hide'               => lang('group account hide'),
385
386                                'gidnumber'                             => $group_info['gidnumber'],
387                                //'manager_context'                     => $manager_context,
388                                'cn'                                    => $group_info['cn'],
389                                'group_dn'                              => $group_info['dn'],
390                                'user_count'                            => $user_count,
391                                'email'                                 => $group_info['email'],
392                                'description'                           => $group_info['description'],
393                                'apps'                                  => $apps,
394                                'use_attrs_samba_checked'       => $group_info['sambaGroup'] ? 'CHECKED' : '',
395                                'disabled_samba'                => $group_info['sambaGroup'] ? '' : 'disabled',
396                                'disable_email_groups'          => $this->functions->check_acl($manager_lid,'edit_email_groups') ? '' : 'disabled',
397                                'sambadomainname_options'       => $sambadomainname_options,
398                                'phpgwaccountvisible_checked'   => $group_info['phpgwaccountvisible'] == '-1' ? 'CHECKED' : '',
399                                'back_url'                                      => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdminSerpro.uigroups.list_groups'),
400                                'combo_manager_org'                     => $combo_manager_org,
401                                'combo_all_orgs'                        => $combo_all_orgs,
402                                'ea_select_usersInGroup'        => $ea_select_usersInGroup,
403                                'disabled_organization'         => $this->current_config['expressoAdmin_allowOrganizations'] == 'false' ? 'disabled' : '',
404                                'groups_default_dn'             => $this->current_config['expressoAdmin_groupsDefaultDn'],
405                                'group_dn_disable'              => "disabled",
406                        );
407                        $p->set_var($var);
408
409                        $p->pfp('out','create_group');
410                }
411                               
412                function row_action($action,$type,$gidnumber,$group_name)
413                {
414                        return '<a href="'.$GLOBALS['phpgw']->link('/index.php',Array(
415                                'menuaction'            => 'expressoAdminSerpro.uigroups.'.$action.'_'.$type,
416                                'gidnumber'             => $gidnumber,
417                                'group_name'    => $group_name
418                        )).'"> '.lang($action).' </a>';
419                }
420               
421                function css()
422                {
423                        $appCSS = '';
424/*                      'th.activetab
425                        {
426                                color:#000000;
427                                background-color:#D3DCE3;
428                                border-top-width : 1px;
429                                border-top-style : solid;
430                                border-top-color : Black;
431                                border-left-width : 1px;
432                                border-left-style : solid;
433                                border-left-color : Black;
434                                border-right-width : 1px;
435                                border-right-style : solid;
436                                border-right-color : Black;
437                        }
438                       
439                        th.inactivetab
440                        {
441                                color:#000000;
442                                background-color:#E8F0F0;
443                                border-bottom-width : 1px;
444                                border-bottom-style : solid;
445                                border-bottom-color : Black;
446                        }
447                       
448                        .td_left { border-left : 1px solid Gray; border-top : 1px solid Gray; }
449                        .td_right { border-right : 1px solid Gray; border-top : 1px solid Gray; }
450                       
451                        div.activetab{ display:inline; }
452                        div.inactivetab{ display:none; }';*/
453                       
454                        return $appCSS;
455                }
456               
457        }
458?>
Note: See TracBrowser for help on using the repository browser.