source: trunk/expressoAdmin1_2/inc/class.uicomputers.inc.php @ 2

Revision 2, 18.0 KB checked in by niltonneto, 17 years ago (diff)

Removida todas as tags usadas pelo CVS ($Id, $Source).
Primeira versão no CVS externo.

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