source: trunk/expressoAdmin1_2/inc/class.uiaccounts.inc.php @ 2712

Revision 2712, 35.4 KB checked in by rodsouza, 14 years ago (diff)

Ticket #1058 - Adaptando todo o expressoAdmin1_2 para não realizar reload.

  • 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 uiaccounts
13        {
14                var $public_functions = array
15                (
16                        'list_users'                            => True,
17                        'add_users'                                     => True,
18                        'edit_user'                                     => True,
19                        'view_user'                                     => True,
20                        'show_photo'                            => True,
21                        'show_access_log'                       => True,
22                        'css'                                           => True,
23                        'list_inactive_users' => True
24                );
25
26                var $nextmatchs;
27                var $user;
28                var $functions;
29                var $current_config;
30                var $ldap_functions;
31                var $db_functions;
32
33                function uiaccounts()
34                {
35                        $this->user                     = CreateObject('expressoAdmin1_2.user');
36                        $this->nextmatchs       = CreateObject('phpgwapi.nextmatchs');
37                        $this->functions        = CreateObject('expressoAdmin1_2.functions');
38                        $this->ldap_functions = CreateObject('expressoAdmin1_2.ldap_functions');
39                        $this->db_functions = CreateObject('expressoAdmin1_2.db_functions');
40                       
41                        $c = CreateObject('phpgwapi.config','expressoAdmin1_2');
42                        $c->read_repository();
43                        $this->current_config = $c->config_data;
44                       
45                        if(!@is_object($GLOBALS['phpgw']->js))
46                        {
47                                $GLOBALS['phpgw']->js = CreateObject('phpgwapi.javascript');
48                        }
49                        $GLOBALS['phpgw']->js->validate_file('jscode','globals','expressoAdmin1_2');
50                        $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');
51                        $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2');
52                        $GLOBALS['phpgw']->js->validate_file('jscode','tabs','expressoAdmin1_2');
53                        $GLOBALS['phpgw']->js->validate_file('jscode','users','expressoAdmin1_2');
54                        $GLOBALS['phpgw_info']['flags']['java_script_thirst'] = "<script>var expressoAdmin_controller = '{$GLOBALS[ 'phpgw' ] -> link( '/expressoAdmin1_2/controller.php' )}?action=';</script>";
55                }
56
57                function list_inactive_users() {
58
59                        $context = $_GET["context"];
60
61                        //unset($GLOBALS['phpgw_info']['flags']['noheader']);
62                        //unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
63                        $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '. lang('list inactives');
64                        //$GLOBALS['phpgw']->common->phpgw_header();
65
66                        $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
67                        $p->set_file(array('inactive_users' => 'list_inactives.tpl'));
68                        $p->set_block('inactive_users','list','list');
69                        $p->set_block('inactive_users','row','row');
70                        $p->set_block('inactive_users','row_empty','row_empty');
71                        $contexts = array();
72                        array_push($contexts,$context);
73                                               
74                        $usuarios = $this->functions->get_inactive_users($contexts);
75
76       
77                       
78                        $var = Array(
79                                'th_bg'                                 => $GLOBALS['phpgw_info']['theme']['th_bg'],
80                                'back_url'                              => $GLOBALS['phpgw']->link('/index.php?menuaction=expressoAdmin1_2.uisectors.list_sectors'),
81                                'context_display'               => $context_display,
82                                'lang_idusuario'                        => lang('uidNumber'),
83                                'lang_login'                    => lang('user login'),
84                                'lang_ultimo_login'     => lang('last login'),
85                                'lang_back'                     => lang('back')
86                        );
87                        $p->set_var($var);
88
89                        if (!count($usuarios))
90                        {
91                                $p->set_var('message',lang('No matches found'));
92                        }
93                        else
94                        {
95                                foreach($usuarios as $usuario)
96                                {
97                                        $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
98                                       
99                                        $var = Array(
100                                                'tr_color'    => $tr_color,
101                                                'id'  => $usuario["uidNumber"],
102                                                'login' => $usuario["login"],
103                                                'data_ultimo_login' => date("d/m/Y",$usuario["li"])
104                                        );
105                                        $p->set_var($var);
106
107                                        $p->fp('rows','row',True);
108                                }
109                        }               
110                        $p->parse('rows','row_empty',True);
111                        $p->pfp('out','list');
112
113                       
114                }
115
116                function list_users()
117                {
118                        $account_lid = $GLOBALS['phpgw']->accounts->data['account_lid'];
119                        $acl = $this->functions->read_acl($account_lid);
120                        $raw_context = $acl['raw_context'];
121                        $contexts = $acl['contexts'];
122                        foreach ($acl['contexts_display'] as $index=>$tmp_context)
123                        {
124                                $context_display .= '<br>'.$tmp_context;
125                        }
126                        // Verifica se o administrador tem acesso.
127                        if (!$this->functions->check_acl($account_lid,'list_users'))
128                        {
129                                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/expressoAdmin1_2/inc/access_denied.php'));
130                        }
131
132                        if(isset($_POST['query']))
133                        {
134                                // limit query to limit characters
135                                if(eregi('^[a-z_0-9_-].+$',$_POST['query']))
136                                {
137                                        $GLOBALS['query'] = $_POST['query'];
138                                }
139                        }
140                       
141                        //unset($GLOBALS['phpgw_info']['flags']['noheader']);
142                        //unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
143                        $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '.lang('User accounts');
144                        //$GLOBALS['phpgw']->common->phpgw_header();
145
146                        $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
147                        $p->set_file(Array('accounts' => 'accounts.tpl'));
148                        $p->set_block('accounts','body');
149                        $p->set_block('accounts','row');
150                        $p->set_block('accounts','row_empty');
151
152                        $var = Array(
153                                'bg_color'                                      => $GLOBALS['phpgw_info']['theme']['bg_color'],
154                                'th_bg'                                         => $GLOBALS['phpgw_info']['theme']['th_bg'],
155                                'accounts_url'                          => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uiaccounts.list_users'),
156                                'back_url'                                      => $GLOBALS['phpgw']->link('/expressoAdmin1_2/index.php'),
157                                'add_action'                            => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uiaccounts.add_users'),
158                                'create_user_disabled'          => $this->functions->check_acl($account_lid,'add_users') ? '' : 'disabled',
159                                'context'                                       => $raw_context,
160                                'context_display'                       => $context_display,
161                                'imapDelimiter'                         => $_SESSION['phpgw_info']['expresso']['email_server']['imapDelimiter']
162                        );
163                        $p->set_var($var);
164                        $p->set_var($this->functions->make_dinamic_lang($p, 'body'));
165
166                        $p->set_var('query', $GLOBALS['query']);
167                       
168                        //Admin make a search
169                        if ($GLOBALS['query'] != '')
170                        {
171                                $account_info = $this->functions->get_list('accounts', $GLOBALS['query'], $contexts);
172                        }
173                       
174                        if (!count($account_info) && $GLOBALS['query'] != '')
175                        {
176                                $p->set_var('message',lang('No matches found'));
177                                $p->parse('rows','row_empty',True);
178                        }
179                        else if (count($account_info))
180                        {  // Can edit, delete or rename users ??
181                                if (($this->functions->check_acl($account_lid,'edit_users')) ||
182                                        ($this->functions->check_acl($account_lid,'change_users_password')) ||
183                                        ($this->functions->check_acl($account_lid,'edit_sambausers_attributes')) || 
184                                        ($this->functions->check_acl($account_lid,'change_users_quote')) ||
185                                        ($this->functions->check_acl($account_lid,'manipulate_corporative_information')) ||
186                                        ($this->functions->check_acl($account_lid,'edit_users_phonenumber'))
187                                        )
188                                        $can_edit = True;
189                                elseif ($this->functions->check_acl($account_lid,'view_users'))
190                                        $can_view = True;
191                                if ($this->functions->check_acl($account_lid,'delete_users'))
192                                        $can_delete = True;
193                                if ($this->functions->check_acl($account_lid,'rename_users'))
194                                        $can_rename = True;
195
196                                while (list($null,$account) = each($account_info))
197                                {
198                                        $this->nextmatchs->template_alternate_row_color($p);
199
200                                        $var = array(
201                                                'row_loginid'   => $account['account_lid'],
202                                                'row_cn'                => $account['account_cn'],
203                                                'row_mail'              => (!$account['account_mail']?'<font color=red>Sem E-mail</font>':$account['account_mail'])
204                                        );
205                                        $p->set_var($var);
206
207                                        if ($can_edit)
208                                                $p->set_var('row_edit',$this->row_action('edit','user',$account['account_id']));
209                                        elseif ($can_view)
210                                                $p->set_var('row_edit',$this->row_action('view','user',$account['account_id']));
211                                        else
212                                                $p->set_var('row_edit','&nbsp;');
213
214                                        if ($can_rename)
215                                                $p->set_var('row_rename',"<a href='#' onClick='javascript:rename_user(\"".$account['account_lid']."\",\"".$account['account_id']."\");'>".lang('to rename')."</a>");
216                                        else
217                                                $p->set_var('row_rename','&nbsp;');
218
219                                        if ($can_delete)
220                                        {
221                                                $p->set_var('row_delete',"<a href='#' onClick='javascript:delete_user(\"".$account['account_lid']."\",\"".$account['account_id']."\");'>".lang('to delete')."</a>");
222                                        }
223                                        else
224                                                $p->set_var('row_delete','&nbsp;');
225
226                                        $p->parse('rows','row',True);
227                                }
228                        }
229                        $p->pfp('out','body');
230                }
231
232                function add_users()
233                {
234                        $manager_lid = $GLOBALS['phpgw']->accounts->data['account_lid'];
235                        $acl = $this->functions->read_acl($manager_lid);
236                       
237                        $manager_contexts = $acl['contexts'];
238                       
239                        // Verifica se tem acesso a este modulo
240                        if (!$this->functions->check_acl($manager_lid,'add_users'))
241                        {
242                                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/expressoAdmin1_2/inc/access_denied.php'));
243                        }
244                               
245                        // Imprime nav_bar
246                        //unset($GLOBALS['phpgw_info']['flags']['noheader']);
247                        //unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
248                        $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '.lang('Create User');
249                        //$GLOBALS['phpgw']->common->phpgw_header();
250                       
251                        // Seta template
252                        //$GLOBALS['phpgw']->js = CreateObject('phpgwapi.javascript');
253                        $t = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
254                        $t->set_file(array("body" => "accounts_form.tpl"));
255                        $t->set_block('body','main');
256
257                        // Pega combo das organizacoes e seleciona, caso seja um post, o setor que o usuario selecionou.
258                        foreach ($manager_contexts as $index=>$context)
259                                $combo_manager_org .= $this->functions->get_organizations($context);
260                        $combo_all_orgs = $this->functions->get_organizations($GLOBALS['phpgw_info']['server']['ldap_context'], '', true, true, true);
261
262                        // Chama funcao para criar lista de aplicativos disponiveis.
263                        $applications_list = $this->functions->make_list_app($manager_lid);
264
265                        // Cria combo de dominio samba
266                        if ($this->current_config['expressoAdmin_samba_support'] == 'true')
267                        {
268                                $a_sambadomains = $this->db_functions->get_sambadomains_list();
269                                $sambadomainname_options = '';
270                                if (count($a_sambadomains))
271                                {
272                                        foreach ($a_sambadomains as $a_sambadomain)
273                                        {
274                                                // So mostra os sambaDomainName do contexto do manager
275                                                if ($this->ldap_functions->exist_sambadomains($manager_contexts, $a_sambadomain['samba_domain_name']))
276                                                        $sambadomainname_options .= "<option value='" . $a_sambadomain['samba_domain_sid'] . "'>" . $a_sambadomain['samba_domain_name'] . "</option>";
277                                        }
278                                }
279                        }
280                       
281                        // Valores default.
282                        $var = Array(
283                                'row_on'                                => "#DDDDDD",
284                                'row_off'                               => "#EEEEEE",
285                                'color_bg1'                             => "#E8F0F0",
286                                //'manager_context'             => $manager_context,
287                                'type'                                  => 'create_user',
288                                'back_url'                              => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uiaccounts.list_users'),
289                                'display_samba_suport'  => $this->current_config['expressoAdmin_samba_support'] == 'true' ? '' : 'none',
290                                'disabled_access_button'=> 'disabled',
291                                'display_access_log_button'     => 'none',
292                                'display_access_log_button'     => 'none',
293                                'display_empty_user_inbox'      =>'none',
294                                'display_quota_used'            => 'none',
295                               
296                                // First ABA
297                                'display_spam_uid'                              => 'display:none',
298                                'lang_generate_login'              => lang('Generate login'),
299                                'start_coment_expired'                                          => "<!--",
300                                'end_coment_expired'                                            => "-->",
301                                'sectors'                                               => $combo_manager_org,
302                                'combo_organizations'                   => $combo_manager_org,
303                                'combo_all_orgs'                                => $combo_all_orgs,
304                                'passwd_expired_checked'                => 'CHECKED',
305                                'changepassword_checked'                => 'CHECKED',
306                                'phpgwaccountstatus_checked'    => 'CHECKED',
307                                'photo_bin'                                             => $GLOBALS['phpgw_info']['server']['webserver_url'].'/expressoAdmin1_2/templates/default/images/photo_celepar.png',
308                                'display_picture'                               => $this->functions->check_acl($manager_lid,'edit_users_picture') ? '' : 'none',
309                                'display_tr_default_password'   => 'none',
310                                'minimumSizeLogin'                              => $this->current_config['expressoAdmin_minimumSizeLogin'],
311                                'defaultDomain'                                 => $this->current_config['expressoAdmin_defaultDomain'],
312                                'concatenateDomain'                             => $this->current_config['expressoAdmin_concatenateDomain'],
313                                'ldap_context'                                  => ldap_dn2ufn($GLOBALS['phpgw_info']['server']['ldap_context']),
314                               
315                                // Corporative Information
316                                'display_corporative_information' => $this->functions->check_acl($manager_lid,'manipulate_corporative_information') ? '' : 'none',
317                               
318                                //MAIL
319                                'accountstatus_checked'                 => 'CHECKED',
320                                'mailquota'                                             => $this->current_config['expressoAdmin_defaultUserQuota'],
321                                'changequote_disabled'                  => $this->functions->check_acl($manager_lid,'change_users_quote') ? '' : 'readonly',
322                                'imapDelimiter'                                 => $_SESSION['phpgw_info']['expresso']['email_server']['imapDelimiter'],
323                                'input_mailalternateaddress_fields' => '<input type="text" name="mailalternateaddress[]" id="mailalternateaddress" autocomplete="off" value="{mailalternateaddress}" {disabled} size=30>',
324                                'input_mailforwardingaddress_fields'=> '<input type="text" name="mailforwardingaddress[]" id="mailforwardingaddress" autocomplete="off" value="{mailforwardingaddress}" {disabled} size=30>',
325                               
326                                'apps'                                                          => $applications_list,
327                               
328                                //SAMBA ABA
329                                'use_attrs_samba_checked'                       => 'CHECKED',
330                                'sambadomainname_options'                       => $sambadomainname_options,
331                                'sambalogonscript'                                      => $this->current_config['expressoAdmin_defaultLogonScript'] != '' ? $this->current_config['expressoAdmin_defaultLogonScript'] : '',
332                                'use_suggestion_in_logon_script'        => $this->current_config['expressoAdmin_defaultLogonScript'] == '' ? 'true' : 'false',
333                        );
334                       
335                        if( (isset($this->current_config['expressoAdmin_loginGenScript'])) &&
336                                ($this->current_config['expressoAdmin_loginGenScript'])) {
337                                $var['input_uid_disabled'] = 'disabled';
338                                $var['comment_button'] = ' ';
339                                $var['end_comment_button'] = ' ';
340                        }
341                        else {
342                                $var['input_uid_disabled'] = ' ';
343                                $var['comment_button'] = '<!--';
344                                $var['end_comment_button'] = '-->';
345                        }               
346                       
347                        $t->set_var($var);
348                        $t->set_var($this->functions->make_dinamic_lang($t, 'main'));
349                        $t->pfp('out','main');
350
351                        $script = '<script>';
352                        $script .= 'get_available_groups(document.forms[0].context.value);';
353                        $script .= 'get_available_maillists(document.forms[0].context.value);';
354                        $script .= 'get_associated_domain(document.forms[0].context.value);';
355                        if ($this->current_config['expressoAdmin_samba_support'] == 'true')
356                                $script .= 'get_available_sambadomains(document.forms[0].context.value, \'create_user\');';
357                        $script .= '</script>';
358
359                        echo "<style>{$this -> css( )}</style>";
360                        echo $script;
361
362                }
363               
364                function view_user()
365                {
366                        ExecMethod('expressoAdmin1_2.uiaccounts.edit_user');
367                        return;
368                }
369               
370                function edit_user()
371                {
372                        $manager_account_lid = $GLOBALS['phpgw']->accounts->data['account_lid'];
373                        $acl = $this->functions->read_acl($manager_account_lid);
374                        $raw_context = $acl['raw_context'];
375                        $contexts = $acl['contexts'];           
376                        $alert_warning = '';
377                       
378                        // Verifica se tem acesso a este modulo
379                        $disabled = 'disabled';
380                        $disabled_password = 'disabled';
381                        $disabled_samba = 'disabled';
382                        $disabled_edit_photo = 'disabled';
383                        $disabled_phonenumber = 'disabled';
384                        $disabled_group = 'disabled';
385                       
386                        $display_picture = 'none';
387                        if ((!$this->functions->check_acl($manager_account_lid,'edit_users')) &&
388                                (!$this->functions->check_acl($manager_account_lid,'change_users_password')) &&
389                                (!$this->functions->check_acl($manager_account_lid,'edit_sambausers_attributes')) &&
390                                (!$this->functions->check_acl($manager_account_lid,'view_users')) &&
391                                (!$this->functions->check_acl($manager_account_lid,'manipulate_corporative_information')) &&
392                                (!$this->functions->check_acl($manager_account_lid,'edit_users_phonenumber'))
393                                )
394                        {
395                                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/expressoAdmin1_2/inc/access_denied.php'));
396                        }
397                        // SOMENTE ALTERACAO DE SENHA
398                        if ((!$this->functions->check_acl($manager_account_lid,'edit_users')) && ($this->functions->check_acl($manager_account_lid,'change_users_password')))
399                        {
400                                $disabled = 'disabled';
401                                $disabled_password = '';
402                        }
403                        // SOMENTE ALTERACAO DOS ATRIBUTOS SAMBA
404                        if ((!$this->functions->check_acl($manager_account_lid,'edit_users')) && ($this->functions->check_acl($manager_account_lid,'edit_sambausers_attributes')))
405                        {
406                                $disabled = 'disabled';
407                                $disabled_samba = '';
408                        }
409                        // SOMENTE ALTERACAO DE TELEFONE
410                        if ((!$this->functions->check_acl($manager_account_lid,'edit_users')) && ($this->functions->check_acl($manager_account_lid,'edit_users_phonenumber')))
411                        {
412                                $disabled = 'disabled';
413                                $disabled_phonenumber = '';
414                        }
415                        // SOMENTE GRUPOS
416                        if ((!$this->functions->check_acl($manager_account_lid,'edit_users')) && ($this->functions->check_acl($manager_account_lid,'edit_groups')))
417                        {
418                                $disabled = 'disabled';
419                                $disabled_group = '';
420                        }
421                        // TOTAIS MENOS O SAMBA
422                        if (($this->functions->check_acl($manager_account_lid,'edit_users')) && (!$this->functions->check_acl($manager_account_lid,'edit_sambausers_attributes')))
423                        {
424                                $disabled = '';
425                                $disabled_password = '';
426                                $disabled_samba = 'disabled';
427                                $disabled_group = '';
428                        }
429                        // TOTAIS
430                        elseif ($this->functions->check_acl($manager_account_lid,'edit_users'))
431                        {
432                                $disabled = '';
433                                $disabled_password = '';
434                                $disabled_samba = '';
435                                $disabled_phonenumber = '';
436                                $disabled_group = '';
437                        }
438                       
439                        if (!$this->functions->check_acl($manager_account_lid,'change_users_quote'))
440                                $disabled_quote = 'readonly';
441                       
442                        if ($this->functions->check_acl($manager_account_lid,'edit_users_picture'))
443                        {
444                                $disabled_edit_photo = '';
445                                $display_picture = '';
446                        }
447                        // GET all infomations about the user.
448                        $user_info = $this->user->get_user_info($_GET['account_id']);
449
450                        // Formata o CPF
451                        if ($user_info['corporative_information_cpf'] != '')
452                        {
453                                if (strlen($user_info['corporative_information_cpf']) < 11)
454                                {
455                                        while (strlen($user_info['corporative_information_cpf']) < 11)
456                                        {
457                                                $user_info['corporative_information_cpf'] = '0' . $user_info['corporative_information_cpf'];
458                                        }
459                                }
460                                if (strlen($user_info['corporative_information_cpf']) == 11)
461                                {
462                                        // Compativel com o php4.
463                                        //$cpf_tmp = str_split($user_info['corporative_information_cpf'], 3);
464                                        $cpf_tmp[0] = $user_info['corporative_information_cpf'][0] . $user_info['corporative_information_cpf'][1] . $user_info['corporative_information_cpf'][2];
465                                        $cpf_tmp[1] = $user_info['corporative_information_cpf'][3] . $user_info['corporative_information_cpf'][4] . $user_info['corporative_information_cpf'][5];
466                                        $cpf_tmp[2] = $user_info['corporative_information_cpf'][6] . $user_info['corporative_information_cpf'][7] . $user_info['corporative_information_cpf'][8];
467                                        $cpf_tmp[3] = $user_info['corporative_information_cpf'][9] . $user_info['corporative_information_cpf'][10];
468                                        $user_info['corporative_information_cpf'] = $cpf_tmp[0] . '.' . $cpf_tmp[1] . '.' . $cpf_tmp[2] . '-' . $cpf_tmp[3];
469                                }
470                        }
471                        // JavaScript
472                        $GLOBALS['phpgw']->js->set_onload("get_available_groups(document.forms[0].context.value);");
473                        $GLOBALS['phpgw']->js->set_onload("get_available_maillists(document.forms[0].context.value);");
474                        $GLOBALS['phpgw']->js->set_onload("use_samba_attrs('".$user_info['sambaUser']."');");
475                       
476                        // Seta header.
477                        //unset($GLOBALS['phpgw_info']['flags']['noheader']);
478                        //unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
479
480                        $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '.lang('Edit User');
481                        //$GLOBALS['phpgw']->common->phpgw_header();
482
483                        // Seta templates.
484                        $t = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
485                        $t->set_file(array("body" => "accounts_form.tpl"));
486                        $t->set_block('body','main');
487                                                       
488                        foreach ($contexts as $index=>$context)
489                                $combo_manager_org .= $this->functions->get_organizations($context, $user_info['context']);
490                        $combo_all_orgs = $this->functions->get_organizations($GLOBALS['phpgw_info']['server']['ldap_context'], $user_info['context'], true, true, true);                       
491
492                        // GROUPS.
493                        if (count($user_info['groups_info']) > 0)
494                        {
495                                foreach ($user_info['groups_info'] as $group)
496                                {
497                                        $array_groups[$group['gidnumber']] = $group['cn'];
498                                }
499                                natcasesort($array_groups);
500                                foreach ($array_groups as $gidnumber=>$cn)
501                                {
502                                        // O memberUid do usuario esta somente no Banco, entao adicionamos o memberUid no Ldap.
503                                        if (is_null($user_info['groups_ldap'][$gidnumber]))
504                                        {
505                                                $this->ldap_functions->add_user2group($gidnumber, $user_info['uid']);
506                                                $ea_select_user_groups_options .= "<option value=" . $gidnumber . ">" . $cn . " [" . lang('included memberuid on ldap')."]</option>";
507
508                                                if ($alert_warning == '')
509                                                        $alert_warning = lang("the expressoadmin corrected the following inconsistencies") . ":\\n";
510                                                $alert_warning .= lang("included user on group") . ":\\n$cn - gidnumber: $gidnumber.";
511                                        }
512                                        else
513                                                $ea_select_user_groups_options .= "<option value=" . $gidnumber . ">" . $cn . "</option>";
514                                       
515                                        if ($gidnumber == $user_info['gidnumber'])
516                                        {
517                                                $ea_combo_primary_user_group_options .= "<option value=" . $gidnumber . " selected>" . $cn . "</option>";
518                                        }
519                                        else
520                                        {
521                                                $ea_combo_primary_user_group_options .= "<option value=" . $gidnumber . ">" . $cn . "</option>";
522                                        }
523                                }
524                               
525                                // O memberUid do usuario esta somente no Ldap.
526                                $groups_db = array_flip($user_info['groups']);
527                                foreach ($user_info['groups_ldap'] as $gidnumber=>$cn)
528                                {
529                                        if (is_null($groups_db[$gidnumber]))
530                                        {
531                                                /*
532                                                $this->ldap_functions->remove_user2group($gidnumber, $user_info['uid']);
533                                                if ($alert_warning == '')
534                                                        $alert_warning = "O expressoAdmin corrigiu as seguintes inconsistencias:\\n";
535                                                $alert_warning .= "Removido atributo memberUid do usuario do grupo $cn.\\n";
536                                                */
537                                                $ea_select_user_groups_options .= "<option value=" . $gidnumber . ">" . $cn . " [".lang('only on ldap')."]</option>";
538                                        }
539                                }
540                        }
541                       
542                        // MAILLISTS
543                        if (count($user_info['maillists_info']) > 0)
544                        {
545                                foreach ($user_info['maillists_info'] as $maillist)
546                                {
547                                        $array_maillist[$maillist['uid']] = $maillist['uid'] . "  (" . $maillist['mail'] . ") ";
548                                }
549                                natcasesort($array_maillist);
550                                foreach ($array_maillist as $uid=>$option)
551                                {
552                                        $ea_select_user_maillists_options .= "<option value=" . $uid . ">" . $option . "</option>";
553                                }
554                        }
555                       
556                        // APPS.
557                        if ($disabled == 'disabled')
558                                $apps = $this->functions->make_list_app($manager_account_lid, $user_info['apps'], 'disabled');
559                        else
560                                $apps = $this->functions->make_list_app($manager_account_lid, $user_info['apps']);
561                       
562                        //PHOTO
563                        if ($user_info['photo_exist'])
564                        {
565                                $photo_bin = "./index.php?menuaction=expressoAdmin1_2.uiaccounts.show_photo&uidNumber=".$_GET['account_id'];
566                        }
567                        else
568                        {
569                                $photo_bin = $GLOBALS['phpgw_info']['server']['webserver_url'] . '/expressoAdmin1_2/templates/default/images/photo_celepar.png';
570                                $disabled_delete_photo = 'disabled';
571                        }
572
573                        // Cria combo de dominios do samba
574                        if ($this->current_config['expressoAdmin_samba_support'] == 'true')
575                        {
576                                $a_sambadomains = $this->db_functions->get_sambadomains_list();
577                                $sambadomainname_options = '';
578                                if (count($a_sambadomains))
579                                {
580                                        foreach ($a_sambadomains as $a_sambadomain)
581                                        {
582                                                if ($a_sambadomain['samba_domain_sid'] == $user_info['sambasid'])
583                                                        $sambadomainname_options .= "<option value='" . $a_sambadomain['samba_domain_sid'] . "' SELECTED>" . $a_sambadomain['samba_domain_name'] . "</option>";
584                                                else
585                                                        $sambadomainname_options .= "<option value='" . $a_sambadomain['samba_domain_sid'] . "'>" . $a_sambadomain['samba_domain_name'] . "</option>";
586                                        }
587                                }
588                        }
589                       
590                        // Mail Alternate & Forwarding
591                        if (is_array($user_info['mailalternateaddress']))
592                        {
593                                for ($i = 0; $i < $user_info['mailalternateaddress']['count']; $i++)
594                                {
595                                        if ($i > 0)
596                                                $input_mailalternateaddress_fields .= '<br>';
597                                        $input_mailalternateaddress_fields .= '<input type="text" name="mailalternateaddress[]" id="mailalternateaddress" autocomplete="off" value="'.$user_info['mailalternateaddress'][$i].'" {disabled} size=30>';
598                                }
599                        }
600                        else
601                        {
602                                $input_mailalternateaddress_fields = '<input type="text" name="mailalternateaddress[]" id="mailalternateaddress" autocomplete="off" value="" {disabled} size=30>';
603                        }
604
605                        if (is_array($user_info['mailforwardingaddress']))
606                        {
607                                for ($i = 0; $i < $user_info['mailforwardingaddress']['count']; $i++)
608                                {
609                                        if ($i > 0)
610                                                $input_mailforwardingaddress_fields .= '<br>';
611                                        $input_mailforwardingaddress_fields .= '<input type="text" name="mailforwardingaddress[]" id="mailforwardingaddress" autocomplete="off" value="'.$user_info['mailforwardingaddress'][$i].'" {disabled} size=30>';
612                                }
613                        }
614                        else
615                        {
616                                $input_mailforwardingaddress_fields = '<input type="text" name="mailforwardingaddress[]" id="mailforwardingaddress" autocomplete="off" value="" {disabled} size=30>';
617                        }
618
619                        $start_coment = "<!--";
620                        $end_coment = "-->";           
621                        $time_to_expire = $GLOBALS['phpgw_info']['server']['time_to_account_expires'];
622                        if(isset($time_to_expire)) {
623                                if ($GLOBALS['phpgw']->session->get_last_access_on_history($user_info["uidnumber"])+($time_to_expire*86400) < time())
624                                {
625                                        $start_coment = "";
626                                        $end_coment = "";
627                                }
628                        }
629
630                        if ($alert_warning != '')
631                                $alert_warning = "alert('". $alert_warning ."')";
632                       
633                        $var = Array(
634                                'uidnumber'                                     => $_GET['account_id'],
635                                'type'                                          => 'edit_user',
636                                'photo_exist'                           => $user_info['photo_exist'],
637                                'departmentnumber'                      => $user_info['departmentnumber'],
638                                'user_context'                          => $user_info['context'],
639                               
640                                'row_on'                                        => "#DDDDDD",
641                                'row_off'                                       => "#EEEEEE",
642                                'color_bg1'                                     => "#E8F0F0",
643                                'action'                                        => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uiaccounts.validate_user_data_edit'),
644                                'back_url'                                      => './index.php?menuaction=expressoAdmin1_2.uiaccounts.list_users',
645                                'disabled'                                      => $disabled,
646                                'disabled_password'                     => $disabled_password,
647                                'disabled_samba'                        => $disabled_samba,
648                                'changequote_disabled'          => $disabled_quote,
649                                'disable_phonenumber'           => $disabled_phonenumber,
650                                'disable_group'                         => $disabled_group,
651                                'lang_account_expired'  => lang('lang_account_expired'),
652                                'lang_yes'                                              => lang('yes'),
653                                'lang_no'                                               => lang('no'),
654                                'start_coment_expired'                                          => $start_coment,
655                                'end_coment_expired'                                            => $end_coment,
656                               
657                                // Display ABAS
658                                'display_corporative_information'=> $this->functions->check_acl($manager_account_lid,'manipulate_corporative_information') ? '' : 'none',
659                                'display_applications'          => $this->functions->check_acl($manager_account_lid,'display_applications') ? '' : 'none',
660                                'display_emaillists'            => $this->functions->check_acl($manager_account_lid,'display_emaillists') ? '' : 'none',
661                                'display_groups'                        => $this->functions->check_acl($manager_account_lid,'display_groups') ? '' : 'none',
662                                'display_emailconfig'           => $this->functions->check_acl($manager_account_lid,'display_emailconfig') ? '' : 'none',
663                               
664                                // First ABA
665                                'alert_warning'                                 => "$alert_warning",
666                                'display_input_account_lid'             => 'display:none',
667                                'sectors'                                               => $combo_manager_org,
668                                'combo_organizations'                   => $combo_manager_org,
669                                'combo_all_orgs'                                => $combo_all_orgs,
670                                'uid'                                                   => $user_info['uid'],
671                                'givenname'                                             => $user_info['givenname'],
672                                'mail1'                                                 => $user_info['mail'],
673                                'sn'                                                    => $user_info['sn'],
674                                'telephonenumber'                               => $user_info['telephonenumber'],
675                                'photo_bin'                                             => $photo_bin,
676                                'disabled_edit_photo'                   => $disabled_edit_photo,
677                                'display_picture'                               => $display_picture,
678                                'display_tr_default_password'   => $this->functions->check_acl($manager_account_lid,'set_user_default_password') ? '' : 'none',
679                                'passwd_expired_checked'                => $user_info['passwd_expired'] == '0' ? 'CHECKED' : '',
680                                'changepassword_checked'                => $user_info['changepassword'] == '1' ? 'CHECKED' : '',
681                                'phpgwaccountstatus_checked'    => $user_info['phpgwaccountstatus'] == 'A' ? 'CHECKED' : '',
682                                'phpgwaccountvisible_checked'   => $user_info['phpgwaccountvisible'] == '-1' ? 'CHECKED' : '',
683
684                                // Corporative Information
685                                'corporative_information_employeenumber' => $user_info['corporative_information_employeenumber'],
686                                'corporative_information_cpf'                   => $user_info['corporative_information_cpf'],
687                                'corporative_information_rg'                    => $user_info['corporative_information_rg'],
688                                'corporative_information_rguf'                  => $user_info['corporative_information_rguf'],
689                                'corporative_information_description'   => $user_info['corporative_information_description'],
690                               
691                                //MAIL
692                                'disabled_quota_used'           => 'disabled',
693                                'accountstatus_checked'         => $user_info['accountstatus'] == 'active' ? 'CHECKED' : '',
694                                'mail'                                          => $user_info['mail'],
695                                'input_mailalternateaddress_fields'     => $input_mailalternateaddress_fields,
696                                'input_mailforwardingaddress_fields'=> $input_mailforwardingaddress_fields,
697                                'deliverymode_checked'          => $user_info['deliverymode'] == 'forwardOnly' ? 'CHECKED' : '',
698                                'mailquota'                                     => $user_info['mailquota'] == '-1' ? '' : $user_info['mailquota'],
699                                'mailquota_used'                        => $user_info['mailquota_used'] == '-1' ? lang('without quota') : $user_info['mailquota_used'],
700
701                                //Third ABA
702                                'ea_select_user_groups_options' => $ea_select_user_groups_options,
703                                'ea_combo_primary_user_group_options'   => $ea_combo_primary_user_group_options,
704                               
705                                //Fourd ABA
706                                'ea_select_user_maillists_options'  => $ea_select_user_maillists_options,
707                                                               
708                                //Five ABA
709                                'apps'  => $apps,
710
711                                //SAMBA ABA
712                                'userSamba'                                     => $user_info['sambaUser'],
713                                'sambadomainname_options'       => $sambadomainname_options,
714                                'use_attrs_samba_checked'       => $user_info['sambaUser'] ? 'CHECKED' : '',
715                                'active_user_selected'          => $user_info['sambaaccflags'] == '[U          ]' ? 'selected' : '',
716                                'desactive_user_selected'       => $user_info['sambaaccflags'] == '[DU         ]' ? 'selected' : '',
717                                'sambalogonscript'                      => $user_info['sambalogonscript'],
718                                'sambahomedirectory'            => $user_info['homedirectory'],
719                                'defaultLogonScript'            => $this->current_config['expressoAdmin_defaultLogonScript'],
720                                'use_suggestion_in_logon_script' => $this->current_config['expressoAdmin_defaultLogonScript'] == '' ? 'true' : 'false'
721                        );
722                        $t->set_var($var);
723                        $t->set_var($this->functions->make_dinamic_lang($t, 'main'));
724                       
725                        // Devo mostrar aba SAMBA ??
726                        if ( ($this->current_config['expressoAdmin_samba_support'] == 'true') && ($this->functions->check_acl($manager_account_lid,'edit_sambausers_attributes')) )
727                                $t->set_var('display_samba_suport', '');
728                        else
729                                $t->set_var('display_samba_suport', 'none');
730                       
731                        echo "<style>{$this -> css( )}</style>";
732                        $t->pfp('out','body');                 
733                        $GLOBALS['phpgw_info']['flags']['java_script'] = '<script>get_available_groups(document.forms[0].context.value);get_available_maillists(document.forms[0].context.value);use_samba_attrs("'.$user_info['sambaUser'].'");</script>';
734                }
735               
736                function row_action($action,$type,$account_id)
737                {
738                        return '<a href="'.$GLOBALS['phpgw']->link('/index.php',Array(
739                                'menuaction' => 'expressoAdmin1_2.uiaccounts.'.$action.'_'.$type,
740                                'account_id' => $account_id
741                        )).'"> '.lang($action).' </a>';
742                }
743
744                function css()
745                {
746                        $appCSS =
747                        'th.activetab
748                        {
749                                color:#000000;
750                                background-color:#D3DCE3;
751                                border-top-width : 1px;
752                                border-top-style : solid;
753                                border-top-color : Black;
754                                border-left-width : 1px;
755                                border-left-style : solid;
756                                border-left-color : Black;
757                                border-right-width : 1px;
758                                border-right-style : solid;
759                                border-right-color : Black;
760                                font-size: 12px;
761                                font-family: Tahoma, Arial, Helvetica, sans-serif;
762                        }
763                       
764                        th.inactivetab
765                        {
766                                color:#000000;
767                                background-color:#E8F0F0;
768                                border-bottom-width : 1px;
769                                border-bottom-style : solid;
770                                border-bottom-color : Black;
771                                font-size: 12px;
772                                font-family: Tahoma, Arial, Helvetica, sans-serif;                             
773                        }
774                       
775                        .td_left {border-left:1px solid Gray; border-top:1px solid Gray; border-bottom:1px solid Gray;}
776                        .td_right {border-right:1px solid Gray; border-top:1px solid Gray; border-bottom:1px solid Gray;}
777                       
778                        div.activetab{ display:inline; }
779                        div.inactivetab{ display:none; }';
780                       
781                        return $appCSS;
782                }
783
784                function show_photo()
785                {
786                        $uidNumber = $_GET['uidNumber'];
787                        $photo = $this->get_photo($uidNumber);
788                       
789                if ($photo)
790                        {
791                        header("Content-Type: image/jpeg");
792                                $width = imagesx($photo);
793                                $height = imagesy($photo);
794                    $twidth = 80;
795                $theight = 106;
796                                $small_photo = imagecreatetruecolor ($twidth, $theight);
797                                imagecopyresampled($small_photo, $photo, 0, 0, 0, 0,$twidth, $theight, $width, $height);
798                                imagejpeg($small_photo,"",100);
799                                return;
800                        }
801                }
802               
803                function get_photo($uidNumber)
804                {
805                        $ldap_conn = $GLOBALS['phpgw']->common->ldapConnect();
806                        $filter="(&(phpgwAccountType=u)(uidNumber=".$uidNumber."))";
807                        $justthese = array("jpegphoto");
808
809                        $search = ldap_search($ldap_conn, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese);
810                        $entry = ldap_first_entry($ldap_conn, $search);
811                        $jpeg_data = ldap_get_values_len($ldap_conn, $entry, "jpegphoto");
812                        $jpegphoto = imagecreatefromstring($jpeg_data[0]);
813                        return $jpegphoto;
814                }
815               
816                function show_access_log()
817                {       
818                        $account_id = $_GET['account_id'];
819                       
820                        $manager_account_lid = $GLOBALS['phpgw']->accounts->data['account_lid'];
821                        $tmp = $this->functions->read_acl($manager_account_lid);
822                        $manager_context = $tmp[0]['context'];
823                       
824                        // Verifica se tem acesso a este modulo
825                        if ((!$this->functions->check_acl($manager_account_lid,'edit_users')) && (!$this->functions->check_acl($manager_account_lid,'change_users_password')))
826                        {
827                                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/expressoAdmin1_2/inc/access_denied.php'));
828                        }
829
830                        // Seta header.
831                        //unset($GLOBALS['phpgw_info']['flags']['noheader']);
832                        //unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
833
834                        $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '.lang('Access Log');
835                        //$GLOBALS['phpgw']->common->phpgw_header();
836
837                        // Seta templates.
838                        $t = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
839                        $t->set_file(array("body" => "accesslog.tpl"));
840                        $t->set_block('body','main');
841                        $t->set_block('body','row','row');
842
843                        // GET access log from the user.
844                        $GLOBALS['phpgw']->db->limit_query("select loginid,ip,li,lo,account_id,sessionid from phpgw_access_log WHERE account_id=".$account_id." order by li desc",$start,__LINE__,__FILE__);
845                        while ($GLOBALS['phpgw']->db->next_record())
846                        {
847                                $records[] = array(
848                                        'loginid'    => $GLOBALS['phpgw']->db->f('loginid'),
849                                        'ip'         => $GLOBALS['phpgw']->db->f('ip'),
850                                        'li'         => $GLOBALS['phpgw']->db->f('li'),
851                                        'lo'         => $GLOBALS['phpgw']->db->f('lo'),
852                                        'account_id' => $GLOBALS['phpgw']->db->f('account_id'),
853                                        'sessionid'  => $GLOBALS['phpgw']->db->f('sessionid')
854                                );
855                        }
856
857                        // Seta as vcariaveis
858                        while (is_array($records) && list(,$record) = each($records))
859                        {
860                                $var = array(
861                                        'row_loginid' => $record['loginid'],
862                                        'row_ip'      => $record['ip'],
863                                        'row_li'      => date("d/m/Y - H:i:s", $record['li']),
864                                        'row_lo'      => $record['lo'] == 0 ? 0 : date("d/m/Y - H:i:s", $record['lo'])
865                                );
866                                $t->set_var($var);
867                                $t->fp('rows','row',True);
868                        }
869
870                        $var = Array(
871                                'th_bg'                 => $GLOBALS['phpgw_info']['theme']['th_bg'],
872                                'back_url'              => "./index.php?menuaction=expressoAdmin1_2.uiaccounts.edit_user&account_id=$account_id",
873                        );
874                        $t->set_var($var);
875                        $t->set_var($this->functions->make_dinamic_lang($t, 'body'));
876                        $t->pfp('out','body');
877                }
878        }
879?>
Note: See TracBrowser for help on using the repository browser.