source: branches/2.2/expressoAdmin1_2/inc/class.uicomputers.inc.php @ 414

Revision 414, 18.9 KB checked in by niltonneto, 16 years ago (diff)

Alterações feitas por João Alfredo.
Email: jakjr@…

  • 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 uicomputers
13        {
14                var $public_functions = array
15                (
16                        'list_computers'                                => True,
17                        'add_computer'                                  => True,
18                        'validade_computers_data_add'   => True,
19                        'edit_computer'                                 => True,
20                        'validade_computers_data_edit'  => True,
21                        'delete_computer'                               => True,
22                        'css'                                                   => True
23                );
24
25                var $bo;
26                var $nextmatchs;
27                var $functions;
28                var $current_config;
29                var $db_functions;
30                       
31                function uicomputers()
32                {
33                        $this->nextmatchs = CreateObject('phpgwapi.nextmatchs');
34                        $this->bo = CreateObject('expressoAdmin1_2.bocomputers');
35                        $this->so = $this->bo->so;
36                        $this->functions = $this->bo->functions;
37                        $this->db_functions = $this->bo->db_functions;
38                       
39                        $c = CreateObject('phpgwapi.config','expressoAdmin1_2');
40                        $c->read_repository();
41                        $this->current_config = $c->config_data;
42
43                        if(!@is_object($GLOBALS['phpgw']->js))
44                        {
45                                $GLOBALS['phpgw']->js = CreateObject('phpgwapi.javascript');
46                        }
47                        $GLOBALS['phpgw']->js->validate_file('jscode','computers','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao
48                }
49               
50                function list_computers()
51                {
52                        $manager_lid = $GLOBALS['phpgw']->accounts->data['account_lid'];
53                        $manager_acl = $this->functions->read_acl($manager_lid);
54                        $manager_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($manager_lid,'list_computers'))
62                        {
63                                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/expressoAdmin1_2/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                                {
71                                        $GLOBALS['query'] = $_POST['query'];
72                                }
73                        }
74
75                        unset($GLOBALS['phpgw_info']['flags']['noheader']);
76                        unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
77                       
78                        $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '.lang('Computers');
79                        $GLOBALS['phpgw']->common->phpgw_header();
80
81                        $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
82                        $p->set_file(array('computers'   => 'computers.tpl'));
83                        $p->set_block('computers','body','body');
84                        $p->set_block('computers','row','row');
85                        $p->set_block('computers','row_empty','row_empty');
86
87                        // Seta as variaveis padroes.
88                        $var = Array(
89                                'th_bg'                                         => $GLOBALS['phpgw_info']['theme']['th_bg'],
90                                'add_action'                            => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uicomputers.add_computer'),
91                                'add_computers_disabled'        => $this->functions->check_acl($manager_lid,'create_computers') ? '' : 'display:none',
92                                'back_url'                                      => $GLOBALS['phpgw']->link('/expressoAdmin1_2/index.php'),
93                                'context_display'                       => $context_display,
94                        );
95                        $p->set_var($var);
96                        $p->set_var($this->functions->make_dinamic_lang($p, 'body'));
97                       
98                        // Save query
99                        $p->set_var('query', $GLOBALS['query']);
100                       
101                        //Admin make a search
102                        if ($GLOBALS['query'] != '')
103                        {
104                                $computers_info = $this->functions->get_list('computers', $GLOBALS['query'], $manager_contexts);
105                        }
106                       
107                        if (!count($computers_info) && $GLOBALS['query'] != '')
108                        {
109                                $p->set_var('message',lang('No matches found'));
110                                $p->parse('rows','row_empty',True);
111                        }
112                        else if (count($computers_info))
113                        {
114                                if ($this->functions->check_acl($manager_lid,'edit_computers'))
115                                {
116                                        $can_edit = True;
117                                }
118                                if ($this->functions->check_acl($manager_lid,'delete_computers'))
119                                {
120                                        $can_delete = True;
121                                }
122
123                                foreach($computers_info as $computer)
124                                {
125                                        $tr_color = $this->nextmatchs->alternate_row_color($tr_color);
126                                        $var = array(
127                                                'tr_color'                      => $tr_color,
128                                                'row_cn'                        => $computer['cn'],
129                                                'row_description'       => $computer['description']
130                                        );
131                                        $p->set_var($var);
132
133                                        if ($can_edit)
134                                        {
135                                                $p->set_var('edit_link',$this->row_action('edit','computer',$computer['uidNumber']));
136                                        }
137                                        else
138                                        {
139                                                $p->set_var('edit_link','&nbsp;');
140                                        }
141
142                                        if ($can_delete)
143                                        {
144                                                $p->set_var('delete_link',$this->row_action('delete','computer',$computer['uidNumber']));
145                                        }
146                                        else
147                                        {
148                                                $p->set_var('delete_link','&nbsp;');
149                                        }
150
151                                        $p->fp('rows','row',True);
152                                }
153                        }
154                        $p->set_var($var);
155                        $p->pfp('out','body');
156                }
157               
158                function add_computer()
159                {
160                        $manager_lid = $GLOBALS['phpgw']->accounts->data['account_lid'];
161                        $manager_acl = $this->functions->read_acl($manager_lid);
162                        $manager_contexts = $manager_acl['contexts'];
163                       
164                        // Verifica se tem acesso a este modulo
165                        if (!$this->functions->check_acl($manager_lid,'create_computers'))
166                        {
167                                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/expressoAdmin1_2/inc/access_denied.php'));
168                        }
169
170                        unset($GLOBALS['phpgw_info']['flags']['noheader']);
171                        unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
172                        $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '.lang('Create Computers');
173                        $GLOBALS['phpgw']->common->phpgw_header();
174                       
175                        // Set o template
176                        $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
177                        $p->set_file(Array('create_email_list' => 'computers_form.tpl'));
178                        $p->set_block('create_email_list','body','body');
179
180                        // Inclue na combo, os usuarios previamente selecionados no caso de um erro na validacao dos dados.
181                        $users_in_list = '';
182                        if (count($_POST['email_list_users']) != 0)
183                        {                       
184                                foreach ($_POST['email_list_users'] as $user_data)
185                                {
186                                        $tmp                    = explode("|", $user_data);
187                                        $user_cn                = $tmp[0];
188                                        $user_email     = $tmp[1];
189                                        $users_in_list .= '<option value="'.$user_data.'">'.$user_cn. ' (' . $user_email . ')' . '</option>';
190                                }
191                        }
192                       
193                        foreach ($manager_contexts as $index=>$context)
194                                $sectors .= $this->functions->get_organizations($context);
195
196                        // Cria combo de dominio samba
197                        if ($this->current_config['expressoAdmin_samba_support'] == 'true')
198                        {
199                                $a_sambadomains = $this->db_functions->get_sambadomains_list();
200                                $sambadomainname_options = '';
201                                if (count($a_sambadomains))
202                                {
203                                        foreach ($a_sambadomains as $a_sambadomain)
204                                        {
205                                                $sambadomainname_options .= "<option value='" . $a_sambadomain['samba_domain_sid'] . "'>" . $a_sambadomain['samba_domain_name'] . "</option>";
206                                        }
207                                }
208                        }
209
210                        // Seta variaveis utilizadas pelo tpl.
211                        $var = Array(
212                                // LINKS
213                                'back_url'                                              => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uicomputers.list_computers'),
214                                'form_action'                                   => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uicomputers.validade_computers_data_add'),
215
216                                'combo_sectors'                                 => $sectors,                   
217                                'row_on'                                                => "#DDDDDD",
218                                'row_off'                                               => "#EEEEEE",
219                                'color_bg1'                                             => "#E8F0F0",
220
221                                'display_tr_computer_password'  => $_POST['sambaAcctFlags'] == '[I          ]' ? '' : 'display:none',
222
223                                'sambadomainname_options'               => $sambadomainname_options,
224
225                                // Retorna os valores, quando da um erro na validação.
226                                'computer_cn'                                   => $_POST['computer_cn'],
227                                'computer_description'                  => $_POST['computer_description'],
228                                                               
229                                // Quando for edit, passa o id do grupo, quando for para criar um grupo novo, passa vazio.
230                                'hidden_vars'                                   => '<input type="hidden" name="uidnumber" value="">',
231                                'error_messages'                                => $_POST['error_messages'] == '' ? '' : "<script type='text/javascript'>alert('".$_POST['error_messages']."')</script>"
232                        );
233                        $p->set_var($var);
234                        $p->set_var($this->functions->make_dinamic_lang($p, 'body'));
235                       
236                        if ($_POST['sambaAcctFlags'] != '')
237                        {
238                                switch($_POST['sambaAcctFlags'])
239                                {
240                                        case '[W          ]':
241                                                $p->set_var('active_workstation_selected', 'selected');
242                                                break;
243                                        case '[DW         ]':
244                                                $p->set_var('desactive_workstation_selected', 'selected');
245                                                break;
246                                        case '[I          ]':
247                                                $p->set_var('trust_account_selected', 'selected');
248                                                break;
249                                        case '[S          ]':
250                                                $p->set_var('server_selected', 'selected');
251                                                break;
252                                }       
253                        }
254                       
255                        $p->pfp('out','create_email_list');
256                }
257               
258                function validade_computers_data_add()
259                {
260                        if (($_POST['sambaAcctFlags'] == '[I          ]') && ($_POST['computer_password'] == ''))
261                        {
262                                $_POST['error_messages'] = lang('Computer password is empty.');
263                                ExecMethod('expressoAdmin1_2.uicomputers.add_computer');
264                                return;
265                        }
266
267                        $computer_cn = $_POST['computer_cn'];
268                       
269                        // Verifica se o uid do computador nao esta vazio.
270                        if ($computer_cn == '')
271                        {
272                                $_POST['error_messages'] = lang('Computer UID is empty.');
273                                ExecMethod('expressoAdmin1_2.uicomputers.add_computer');
274                                return;
275                        }
276                       
277                        // Verifica se o nome do computaor existe no contexto atual.
278                        if ($this->so->exist_computer_uid($computer_cn))
279                        {
280                                $_POST['error_messages'] = lang('Computer UID already exist.');
281                                ExecMethod('expressoAdmin1_2.uicomputers.add_computer');
282                                return;
283                        }
284                       
285                        ExecMethod('expressoAdmin1_2.bocomputers.create_computer');
286                }
287               
288               
289                function edit_computer()
290                {
291                        $manager_lid = $GLOBALS['phpgw']->accounts->data['account_lid'];
292                        $manager_acl = $this->functions->read_acl($manager_lid);
293                        $manager_contexts = $manager_acl['contexts'];
294                       
295                        // Verifica se tem acesso a este modulo
296                        if (!$this->functions->check_acl($manager_lid,'edit_computers'))
297                        {
298                                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/expressoAdmin1_2/inc/access_denied.php'));
299                        }
300                       
301                        // Set o header
302                        unset($GLOBALS['phpgw_info']['flags']['noheader']);
303                        unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
304                        $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '.lang('Edit Computer');
305                        $GLOBALS['phpgw']->common->phpgw_header();
306
307                        // Set o template
308                        $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
309                        $p->set_file(Array('edit_computers' => 'computers_form.tpl'));
310                        $p->set_block('edit_computers','body','body');
311                       
312                        //O POST esta vazio, oq indica que precisamos recuperar os dados do computador no ldap.
313                        if ($_POST['try_saved'] != 'true')
314                        {
315                                $uidnumber = $_GET['uidnumber'];
316                                $computer_data = $this->so->get_computer_data($uidnumber);
317
318                                // Gera combo sectors
319                                foreach ($manager_contexts as $index=>$context)
320                                        $sectors .= $this->functions->get_organizations($context, trim(strtolower($computer_data['context'])));
321
322                                // Cria combo de dominios do samba
323                                if ($this->current_config['expressoAdmin_samba_support'] == 'true')
324                                {
325                                        $a_sambadomains = $this->db_functions->get_sambadomains_list();
326                                        $sambadomainname_options = '';
327                                        if (count($a_sambadomains))
328                                        {
329                                                foreach ($a_sambadomains as $a_sambadomain)
330                                                {
331                                                        if ($a_sambadomain['samba_domain_sid'] == $computer_data['sambasid'])
332                                                                $sambadomainname_options .= "<option value='" . $a_sambadomain['samba_domain_sid'] . "' SELECTED>" . $a_sambadomain['samba_domain_name'] . "</option>";
333                                                        else
334                                                                $sambadomainname_options .= "<option value='" . $a_sambadomain['samba_domain_sid'] . "'>" . $a_sambadomain['samba_domain_name'] . "</option>";
335                                                }
336                                        }
337                                }
338
339                                // Salva valores antigos
340                                $var = Array(
341                                        'uidnumber'                                             => $uidnumber,
342                                        'old_computer_cn'                               => $computer_data['computer_cn'],
343                                        'old_computer_dn'                               => $computer_data['dn'],
344                                        'old_computer_sambaAcctFlags'   => $computer_data['sambaAcctFlags'],
345                                        'old_computer_description'              => $computer_data['computer_description'],
346                                        'old_computer_context'                  => $computer_data['context'],
347                                        'old_sambasid'                                  => $computer_data['sambasid'],
348
349                                        'row_on'                                                => "#DDDDDD",
350                                        'row_off'                                               => "#EEEEEE",
351                                        'color_bg1'                                             => "#E8F0F0",
352                               
353                                        'display_tr_computer_password'  => $computer_data['sambaAcctFlags'] == '[I          ]' ? '' : 'display:none',
354
355                                        'computer_cn'                           => $computer_data['computer_cn'],
356                                        'computer_dn'                           => $computer_data['dn'],
357                                        'computer_description'          => $computer_data['computer_description'],
358                                        'combo_sectors'                         => $sectors,
359                                        'sambadomainname_options'       => $sambadomainname_options,
360                                       
361                                        // LINKS
362                                        'back_url'                                      => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uicomputers.list_computers'),
363                                        'form_action'                           => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uicomputers.validade_computers_data_edit')
364                                );
365                                $p->set_var($var);
366                                $p->set_var($this->functions->make_dinamic_lang($p, 'body'));
367                               
368                                if ($computer_data['sambaAcctFlags'] != '')
369                                {
370                                        switch($computer_data['sambaAcctFlags'])
371                                        {
372                                                case '[W          ]':
373                                                        $p->set_var('active_workstation_selected', 'selected');
374                                                        break;
375                                                case '[DW         ]':
376                                                        $p->set_var('desactive_workstation_selected', 'selected');
377                                                        break;
378                                                case '[I          ]':
379                                                        $p->set_var('trust_account_selected', 'selected');
380                                                        break;
381                                                case '[S          ]':
382                                                        $p->set_var('server_selected', 'selected');
383                                                        break;
384                                        }       
385                                }
386                        }
387                        else // DEMAIS VEZES
388                        {
389                                // Pega combo das organizações e seleciona um dos setores em caso de um erro na validaçao dos dados.
390                                foreach ($manager_contexts as $index=>$context)
391                                        $sectors .= $this->functions->get_organizations($context, trim(strtolower($_POST['sector_context'])));
392                                //$sectors = $this->functions->get_organizations($manager_contexts);
393                               
394                                // Cria combo de dominios do samba
395                                if ($this->current_config['expressoAdmin_samba_support'] == 'true')
396                                {
397                                        $a_sambadomains = $this->db_functions->get_sambadomains_list();
398                                        $sambadomainname_options = '';
399                                        if (count($a_sambadomains))
400                                        {
401                                                foreach ($a_sambadomains as $a_sambadomain)
402                                                {
403                                                        if ($a_sambadomain['samba_domain_sid'] == $_POST['sambasid'])
404                                                                $sambadomainname_options .= "<option value='" . $a_sambadomain['samba_domain_sid'] . "' SELECTED>" . $a_sambadomain['samba_domain_name'] . "</option>";
405                                                        else
406                                                                $sambadomainname_options .= "<option value='" . $a_sambadomain['samba_domain_sid'] . "'>" . $a_sambadomain['samba_domain_name'] . "</option>";
407                                                }
408                                        }
409                                }
410                               
411                                $var = Array(
412                                        // LINKS
413                                        'back_url'                                              => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uicomputers.list_computers'),
414                                        'form_action'                                   => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uicomputers.validade_computers_data_edit'),
415
416                                        'row_on'                                                => "#DDDDDD",
417                                        'row_off'                                               => "#EEEEEE",
418                                        'color_bg1'                                             => "#E8F0F0",
419
420                                        // Retorna os valores, quando da um erro na validação.
421                                        'uidnumber'                                             => $_POST['uidnumber'],
422                                        'error_messages'                                => $_POST['error_messages'] == '' ? '' : "<script type='text/javascript'>alert('".$_POST['error_messages']."')</script>",
423
424                                        'display_tr_computer_password'  => $_POST['sambaAcctFlags'] == '[I          ]' ? '' : 'display:none',
425
426                                        // Retorna os valores, quando da um erro na validação.
427                                        'computer_cn'                                   => $_POST['computer_cn'],
428                                        'computer_description'                  => $_POST['computer_description'],
429                                        'combo_sectors'                                 => $sectors,
430                                        'sambadomainname_options'               => $sambadomainname_options,
431                               
432                                        // Valores que devem ser mantidos, aqui sao referenciados como old.
433                                        'old_computer_cn'                               => $_POST['old_computer_cn'],
434                                        'old_computer_dn'                               => $_POST['old_computer_dn'],
435                                        'old_computer_sambaAcctFlags'   => $_POST['old_computer_sambaAcctFlags'],
436                                        'old_computer_description'              => $_POST['old_computer_description'],
437                                        'old_computer_context'                  => $_POST['old_computer_context'],
438                                        'old_sambasid'                                  => $_POST['sambasid']
439                                );
440                                $p->set_var($var);
441                                $p->set_var($this->functions->make_dinamic_lang($p, 'body'));   
442
443                                if ($_POST['sambaAcctFlags'] != '')
444                                {
445                                        switch($_POST['sambaAcctFlags'])
446                                        {
447                                                case '[W          ]':
448                                                        $p->set_var('active_workstation_selected', 'selected');
449                                                        break;
450                                                case '[DW         ]':
451                                                        $p->set_var('desactive_workstation_selected', 'selected');
452                                                        break;
453                                                case '[I          ]':
454                                                        $p->set_var('trust_account_selected', 'selected');
455                                                        break;
456                                                case '[S          ]':
457                                                        $p->set_var('server_selected', 'selected');
458                                                        break;
459                                        }       
460                                }
461                        }
462                        $p->pfp('out','edit_computers');
463                }
464               
465                function validade_computers_data_edit()
466                {
467                        // Verifica se o uid do computador nao esta vazio.
468                        if ($_POST['computer_cn'] == '')
469                        {
470                                $_POST['error_messages'] = lang('Computer UID is empty.');
471                                ExecMethod('expressoAdmin1_2.uicomputers.edit_computer');
472                                return;
473                        }
474
475                        ExecMethod('expressoAdmin1_2.bocomputers.save_computer');
476                }
477               
478                function delete_computer()
479                {
480                        $account_lid = $GLOBALS['phpgw']->accounts->data['account_lid'];
481                        $acl = $this->functions->read_acl($account_lid);
482                        $manager_context = $acl[0]['context'];
483                       
484                        // Verifica se tem acesso a este modulo
485                        if (!$this->functions->check_acl($account_lid,'delete_computers'))
486                        {
487                                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/expressoAdmin1_2/inc/access_denied.php'));
488                        }
489                       
490                        unset($GLOBALS['phpgw_info']['flags']['noheader']);
491                        unset($GLOBALS['phpgw_info']['flags']['nonavbar']);
492                        $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '.lang('Delete Computer');
493                        $GLOBALS['phpgw']->common->phpgw_header();
494
495                        // Set o template
496                        $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
497                        $p->set_file(Array('delete_computer' => 'computers_delete.tpl'));
498                        $p->set_block('delete_computer','body','body');
499                       
500                        // Get group data
501                        $uidnumber              = $_GET['uidnumber'];
502                        $computer_data  = $this->so->get_computer_data($uidnumber, $manager_context);
503                       
504                        // Seta variaveis utilizadas pelo tpl.
505                        $var = Array(
506                                'color_bg1'                                     => "#E8F0F0",
507                                'dn'                                            => $email_list_data['dn'],
508                                'computer_cn'                           => $computer_data['computer_cn'],
509                                'computer_dn'                           => $computer_data['dn'],
510                                'computer_description'          => $computer_data['computer_description'],
511                                'back_url'                                      => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uicomputers.list_computers'),
512                                'delete_action'                         => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.bocomputers.delete_computer'),
513                        );
514                        $p->set_var($var);
515                        $p->set_var($this->functions->make_dinamic_lang($p, 'body'));
516                        $p->pfp('out','delete_computer');
517                }
518               
519                function row_action($action,$type,$uidNumber)
520                {
521                        return '<a href="'.$GLOBALS['phpgw']->link('/index.php',Array(
522                                'menuaction'            => 'expressoAdmin1_2.uicomputers.'.$action.'_'.$type,
523                                'uidnumber'                     => $uidNumber
524                        )).'"> '.lang($action).' </a>';
525                }
526               
527                function css()
528                {
529                        $appCSS = '';
530                        return $appCSS;
531                }
532        }
533?>
Note: See TracBrowser for help on using the repository browser.