source: trunk/expressoAdmin1_2/inc/class.bomessages_size.inc.php @ 5593

Revision 5593, 17.5 KB checked in by wmerlotto, 12 years ago (diff)

Ticket #2398 - Compatibilizacao com PHP-5.3 no modulo ExpressoAdmin

Line 
1<?php
2        /***********************************************************************************\
3        * Expresso Administração                                                                                                                        *
4        * by Prognus Software Livre (prognus@prognus.com.br, airton@prognus.com.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
12include_once('class.functions.inc.php');
13include_once('class.ldap_functions.inc.php');
14include_once('class.somessages_size.inc.php');
15require_once 'class.db_functions.inc.php';
16include_once(PHPGW_API_INC.'/class.common.inc.php');
17
18
19        class bomessages_size
20        {
21                var $so;
22                var $dbFunctions;
23                var $functions;
24                var $ldap_functions;
25                var $manager_contexts;
26                var $current_config;
27               
28                /**
29         * Construtor
30         */
31                function bomessages_size()
32                {                                       
33                        $this->so = new somessages_size();
34                        $this->dbFunctions = new db_functions();
35                        $this->ldap_functions = new ldap_functions();                   
36                        $this->functions = new functions();
37                        $common = new common();
38                       
39                        /*
40                        if ((!empty($GLOBALS['phpgw_info']['server']['ldap_master_host'])) &&
41                                (!empty($GLOBALS['phpgw_info']['server']['ldap_master_root_dn'])) &&
42                                (!empty($GLOBALS['phpgw_info']['server']['ldap_master_root_pw'])) )
43                        {
44                                $this->ldap_functions = $common->ldapConnect($GLOBALS['phpgw_info']['server']['ldap_master_host'],
45                                                                                                                        $GLOBALS['phpgw_info']['server']['ldap_master_root_dn'],
46                                                                                                                        $GLOBALS['phpgw_info']['server']['ldap_master_root_pw']
47                                                                                                                        );
48                        }
49                        else
50                        {
51                                $this->ldap_functions = $common->ldapConnect();
52                        }*/
53                }
54               
55       
56                /**
57         * @abstract Cria uma nova regra.
58                 * @params array params com as informações do formulário com os dados da nova regra.
59         * @return mixed retorna um status informando se a operação foi concluída com sucesso e uma mensagem de erro ou sucesso.
60         */
61                function create_rule($params)
62                {                       
63                        /* Início da validação dos campos do form */
64                       
65                        /* Verifica se o nome da regra foi preenchida */
66                        if(empty($params['rule_name']))
67                        {
68                                $result['status'] = false;
69                                $result['msg']  = $this->functions->lang('Field rule name is empty');           
70                                return $result;
71                        }
72                        /* Verifica se o valor máximo da mensagem foi configurado */
73                        if (empty($params['max_messages_size']))
74                        {
75                                $result['status'] = false;
76                                $result['msg']  = $this->functions->lang('Field message size is empty');       
77                                return $result;
78                        }
79                        /* Verifica se esse valor é um número */
80                        if((!preg_match("/^[0-9]+$/i", $params['max_messages_size'])))
81                        {
82                                $result['status'] = false;
83                                $result['msg']  = $this->functions->lang('Field size must be a number');
84                                return $result;
85                       
86                        }
87                        /* Verifica se no nome da regra existe o caracter % (não permitido) */
88                        if(strpos($params['rule_name'],"%"))
89                        {
90                                $result['status'] = false;
91                                $result['msg']  = $this->functions->lang('Invalid character in name.');
92                                return $result;
93                        }
94                        /* Verifica se já existe uma regra com o mesmo nome */
95                        if($this->so->get_rule($params['rule_name']))
96                        {       
97                                $result['status'] = false;
98                                $result['msg']  = $this->functions->lang('Rule name already in use.');
99                                return $result;
100                        }
101                        /* Verifica se selecionou algum usuário pra nova regra */                               
102                        if(!$params['owners'])
103                return array('status' => false , 'msg' => 'no groups or user selecteds');
104                       
105                        /* Fim da validação dos campos do form */
106                       
107                       
108                        foreach ($params['owners'] as $user_selected)
109            {
110               
111                                $check_user_selected = explode(',', $user_selected);
112                                $user_selected = $check_user_selected[0];
113                                $type_user = $check_user_selected[1];
114
115                                $fields = array(
116                            'email_user' => $user_selected,
117                            'configuration_type' => 'MessageMaxSize',
118                            'email_max_recipient' => $params['max_messages_size'],
119                            'email_user_type' => $type_user,
120                                                        'email_recipient' => $params['rule_name']
121                                                        );
122
123                if(!$this->so->insert_rule_db($fields))
124                    return array('status' => false , 'msg' => 'Error on insert');
125                                else
126                                        $this->dbFunctions->write_log('Rule message size created', $userInRuleDB);
127            }
128                        return array('status' => true);
129                }
130               
131               
132                /**
133         * @abstract Salva a regra padrão de tamanho de mensagens.
134                 * @params params - informação do novo tamanho padrão.
135         * @return retorna um status informando se a operação foi concluída com sucesso e uma mensagem de erro ou sucesso.
136         */     
137                function save_default_rule($params)
138                {
139                        if(!$this->so->insert_default_rule_2($params['default_max_size']))
140                                return array('status' => false, 'msg' => 'Error on insert default rule');
141                        else
142                                $this->dbFunctions->write_log('Default size rule message saved', $params['default_max_size']);
143                               
144                        return array('status' => true, 'msg' => 'Default rule insert ok!');
145                }
146               
147
148                /**
149         * @abstract Salva uma regra que foi aberta para edição.
150                 * @params params - informações da regra vindas do formulário.
151         * @return retorna um status informando se a operação foi concluída com sucesso e uma mensagem de erro ou sucesso.
152         */
153                function save_rule($params)
154                {
155                        $usuarios = array();
156                        foreach($params['owners'] as $i=>$value)
157                        {
158                                $usuarios[] = $value;
159                        }
160                       
161                        $users = $this->so->get_users_by_rule($params['original_rule_name']);   
162
163                        /* Início da validação dos campos do form */
164                       
165                        /* Verifica se o nome da regra foi preenchida */
166                        if(empty($params['rule_name']))
167                        {
168                                $result['status'] = false;
169                                $result['msg']  = $this->functions->lang('Field rule name is empty');           
170                                return $result;
171                        }
172                        /* Verifica se o valor máximo da mensagem foi configurado */
173                        if (empty($params['max_messages_size']))
174                        {
175                                $result['status'] = false;
176                                $result['msg']  = $this->functions->lang('Field message size is empty');       
177                                return $result;
178                        }
179                        /* Verifica se esse valor é um número */
180                        if((!preg_match('/^[0-9]+$/i', $params['max_messages_size'])))
181                        {
182                                $result['status'] = false;
183                                $result['msg']  = $this->functions->lang('Field size must be a number');
184                                return $result;
185                       
186                        }
187                        /* Verifica se no nome da regra existe o caracter % (não permitido) */
188                        if(strpos($params['rule_name'],"%"))
189                        {
190                                $result['status'] = false;
191                                $result['msg']  = $this->functions->lang('Invalid character in name.');
192                                return $result;
193                        }
194                        /* Fim da validação dos campos do form */       
195
196                        $rule_name = $users[0]['email_recipient'];
197                        $max_size  = $users[0]['email_max_recipient'];
198                       
199                        // Deleto os usuários da regra que está sendo editada pra inserir novamente pra ter um controle dos usuários excluídos e adicionados.
200                        if (!($this->so->remove_rule($rule_name)))
201                        {
202                                return array('status' => false , 'msg' => 'Error on delete a parada!');
203                        }
204       
205                        foreach ($usuarios as $user_selected)
206            {     
207                                $check_user_selected = explode(',', $user_selected);
208                                $user_selected = $check_user_selected[0];
209                                $type_user = $check_user_selected[1];
210                       
211                $fields = array(
212                            'email_user' => $user_selected,
213                            'configuration_type' => 'MessageMaxSize',
214                            'email_max_recipient' => $params['max_messages_size'],
215                            'email_user_type' => $type_user,
216                                                        'email_recipient' => $params['rule_name']
217                            );
218       
219                                if(!$this->so->insert_rule_db($fields))
220                    return array('status' => false , 'msg' => 'Error on insert');
221                                else
222                                        $this->dbFunctions->write_log('Rule message size created', $userInRuleDB);     
223            }
224                        return array('status' => true, 'msg' => 'Salvo com sucessso!!');
225                }
226               
227               
228                /**
229         * @abstract Recupera o valor da regra padrão.
230         * @return retorna o valor da regra padrão.
231         */
232                function get_default_rule()
233                {
234                        $return = $this->so->get_default_rule();
235                        if (!$return)
236                                return false;
237                       
238                        foreach($return as $i=>$value)
239                        {                       
240                                return $value['config_value'];
241                        }                               
242
243                }
244               
245               
246                /**
247         * @abstract Deleta uma regra.
248                 * @params params['rule_name'] - nome da regra que deseja excluir
249         * @return retorna um status informando se a operação foi concluída com sucesso e uma mensagem de erro ou sucesso.
250         */
251                function delete_rule($params)
252                {
253                        if (!($this->so->remove_rule($params['rule_name'])))
254                                return array('status' => false , 'msg' => 'Error on delete!');
255                        else
256                                $this->dbFunctions->write_log('Rule message size removed', $params['rule_name']);       
257                               
258                        return array('status' => true , 'msg' => 'Rule successful deleted!');
259                }
260               
261               
262                /**
263         * @abstract Busca todas as regras cadastradas.
264         * @return array com as informações das regras cadastradas
265         */
266                function get_all_rules()
267                {
268                        $return = $this->so->get_all_rules();
269                        return $return;
270                }
271               
272               
273            /**
274         * @abstract Busca as regras cadastradas por usuário.
275                 * @params input - parte do nome do usuário que deseja encontrar a regra a que ele pertence.
276         * @return array com as informações das regras cadastradas que batem com o padrão da busca.
277         */
278                function get_rules_by_user($params)
279                {
280                        if(!empty($params['input']))
281                                $rules = $this->so->get_rules($params['input'], true);
282                        else
283                                $rules = $this->get_all_rules();
284                               
285                        $rules_tr = '';
286
287                        for ($i = 0; $i<count($rules); $i++)
288                        {
289                                $name_link = (string)str_replace(" ", "%", $rules[$i]['email_recipient']);
290                                $rules_tr .= "<tr class='normal' onMouseOver=this.className='selected' onMouseOut=this.className='normal'><td onClick=javascript:edit_messages_size('" . $name_link . "')>" . $rules[$i]['email_recipient'] . "</td><td onClick=edit_messages_size('$name_link')>" . $rules[$i]['email_max_recipient'] . " MB</td><td align='center' onClick=delete_messages_size('$name_link')><img HEIGHT='16' WIDTH='16' src=./expressoAdmin1_2/templates/default/images/delete.png></td></tr>";
291                        }
292                       
293                        $return['status'] = 'true';
294                        $return['trs'] = $rules_tr;                     
295                        return $return;         
296                }
297               
298               
299                /**
300         * @abstract Busca as regras cadastradas por nome de regra.
301                 * @params input - parte do nome da regra que deseja encontrar.
302         * @return array com as informações das regras cadastradas que batem com o padrão da busca.
303         */
304                function get_rules($params)
305                {
306                        if($params['input']!='')
307                                $rules = $this->so->get_rules($params['input']);
308                        else
309                                $rules = $this->get_all_rules();
310                       
311                        $rules_tr = '';
312
313                        for ($i = 0; $i<count($rules); $i++)
314                        {
315                                $name_link = (string)str_replace(" ", "%", $rules[$i]['email_recipient']);
316                                $rules_tr .= "<tr class='normal' onMouseOver=this.className='selected' onMouseOut=this.className='normal'><td onClick=javascript:edit_messages_size('" . $name_link . "')>" . $rules[$i]['email_recipient'] . "</td><td onClick=edit_messages_size('$name_link')>" . $rules[$i]['email_max_recipient'] . " MB</td><td align='center' onClick=delete_messages_size('$name_link')><img HEIGHT='16' WIDTH='16' src=./expressoAdmin1_2/templates/default/images/delete.png></td></tr>";
317                        }
318                       
319                        $return['status'] = 'true';
320                        $return['trs'] = $rules_tr;                     
321                        return $return;         
322                }
323               
324               
325                /**
326         * @abstract Pega usuários de uma regra.
327                 * @params params['rule_name'] - nome da regra que deseja os usuários.
328         * @return retorna os usuários dessa regra. Se o parâmetro option for true, ele retorna já formatado com os options.
329         */
330                function get_users_by_rule($params, $option=true)
331                {
332                        $return = $this->so->get_users_by_rule($params['name_rule']);
333
334                        if($return)
335                        {
336                                if($option)
337                                {
338                                        if (count($return))
339                                        {
340                                                foreach ($return as $i => $value)
341                                                {       
342                                                        if($return[$i]['email_user_type'] == 'G')
343                                                        {
344                                                                $gid_grupo = $return[$i]['email_user'];
345                                                                $cn = $this->ldap_functions->get_group_cn_by_gidnumber($return[$i]['email_user']);
346                                                                $options .= '<option value="'.$gid_grupo.',G">'.$cn.'('.$gid_grupo.')</option>';
347                                                        }
348                                                        else
349                                                        {
350                                                                $uid_usuario = $return[$i]['email_user'];
351                                                                $cn = $this->ldap_functions->get_user_cn_by_uid($return[$i]['email_user']);                                                     
352                                                                $options .= '<option value="'.$uid_usuario.',U">'.$cn.'('.$uid_usuario.')</option>';
353                                                        }
354                                                }
355                                        }
356                                        $return[0]['options'] = $options;
357                                        $return[0]['status'] = true;
358                                        $return[0]['msg'] = "Retornou alguma coisa do banco. Agora é só tratar de chamar o modal.";
359               
360                                        return $return[0];
361                                }
362                                else // Retornar os usuários mas não com formatação de option
363                                {
364                                        $users;
365                                        if (count($return))
366                                        {
367                                                foreach ($return as $i => $value)
368                                                {
369                                                        $users .= $return[$i]['email_user'] . "%";
370                                                        //array_push($users, $return[$i]['email_user']);
371                                                }
372                                        }
373
374                                       
375                                        $return[0]['users'] = $users;
376                                        $return[0]['status'] = true;
377                                        $return[0]['msg'] = "Retornou alguma coisa do banco. Agora é só tratar de chamar o modal.";     
378                                        return $return[0];
379                                }
380                                       
381                        }
382                        else 
383                                return array('status' => false , 'msg' => 'Error on read rule');
384                }
385               
386               
387            /** @abstract Busca usuarios de um contexto.
388                 *      @params array parrams que vem com as informações do contexto e outros dados vindos do formulário.
389                 *  @reutn retorna os usuários já com as opções do select pra preencher a tela modal com os usuários disponíveis.
390                 */
391                function get_available_users($params)
392                {
393                        $context= $params['context'];
394                        $justthese = array("cn", "uid");
395                        $filter = "&(phpgwAccountType=u)(!(phpgwAccountVisible=-1))";
396       
397                        if( $params['sentence'] )
398                                $filter .= "(cn=*${params[sentence]}*)";
399       
400                        if ($this->ldap_functions)
401                        {
402                                $sr=ldap_search($this->ldap_functions, $context, "($filter)", $justthese);
403                                $entries = ldap_get_entries($this->ldap_functions, $sr);                       
404       
405                                for ($i=0; $i<$entries["count"]; $i++){
406                                                $u_tmp[$entries[$i]["uid"][0]] = $entries[$i]["cn"][0];
407                                }
408       
409                                natcasesort($u_tmp);
410       
411                                $i = 0;
412                                $users = array();
413                                $options = array();
414       
415                                if (count($u_tmp))
416                                {
417                                        foreach ($u_tmp as $uidnumber => $cn)
418                                        {
419                                                $options[] = '"'.$uidnumber.'"'.':'.'"'.utf8_decode($cn).'"';
420                                        }
421                                        unset($u_tmp);
422                                }                       
423                                return "{".implode(',',$options)."}";
424                        }
425                }
426               
427               
428            /** @abstract Busca usuarios e grupos de um contexto.
429                 *      @params array parrams que vem com as informações do contexto e outros dados vindos do formulário.
430                 *  @reutn retorna os usuários já com as opções do select pra preencher a tela modal com os usuários disponíveis.
431                 */
432                function get_available_users_and_groups($params)
433        {
434
435            $this->ds = $this->ldap_functions->ldapMasterConnect();
436
437             //Monta lista de Grupos e Usuarios
438                $users = Array();
439                $groups = Array();
440                $user_context= $this->ldap_functions->ldap_context;
441               
442                $filtro =utf8_encode($params['filter']);
443                $context =utf8_encode($params['context']);
444
445                if ($this->ds)
446                {
447                    $justthese = array("gidNumber","cn","dn");
448                    $sr=ldap_search($this->ds, $context, ("(&(phpgwaccounttype=g)(!(phpgwaccountvisible=-1))(cn=*$filtro*))"),$justthese);
449                    $info = ldap_get_entries($this->ds, $sr);
450
451                    for ($i=0; $i<$info["count"]; $i++)
452                        $groups[$uids=$info[$i]["gidnumber"][0]] = Array('name'    =>    $uids=$info[$i]["cn"][0], 'type'    =>    g);
453
454                    $justthese = array("phpgwaccountvisible","uidNumber","cn","uid");
455                         $sr=ldap_search($this->ds, $context, ("(&(phpgwaccounttype=u)(!(phpgwaccountvisible=-1))(phpgwaccountstatus=A)(|(cn=*$filtro*)(mail=$filtro*)))"),$justthese);
456                 
457                    $info = ldap_get_entries($this->ds, $sr);
458
459                    for ($i=0; $i<$info["count"]; $i++)
460                    {
461                        if ($info[$i]["phpgwaccountvisible"][0] == '-1')
462                      continue;
463                        $users[$uids=$info[$i]["uidnumber"][0]] = Array('name'    =>    $uids=$info[$i]["cn"][0], 'type'    =>    u,'uid' => $info[$i]["uid"][0]);
464                    }
465                }
466                ldap_close($this->ds);
467
468                @asort($users);
469                @reset($users);
470                @asort($groups);
471                @reset($groups);
472                $user_options ='';
473                $group_options ='';
474                $user_options2 ='';
475                $group_options2 ='';
476
477            foreach($groups as $id => $group_array) {
478                    $group_options .= '<option  value="'.$id.'">'.utf8_decode($group_array['name']).'</option>'."\n";
479                    $group_options2 .= '<option  value="'.$id.',G">'.utf8_decode($group_array['name']).'</option>'."\n";
480            }
481            foreach($users as $id => $user_array) {
482                    $user_options .= '<option  value="'.utf8_decode($user_array['uid']).'">'.utf8_decode($user_array['name']).'</option>'."\n";
483                    $user_options2 .= '<option  value="'.utf8_decode($user_array['uid']).',U">'.utf8_decode($user_array['name']).'</option>'."\n";
484               
485            }
486
487            return array("users" => $user_options, "groups" => $group_options , "users2" => $user_options2, "groups2" => $group_options2);
488        }
489               
490               
491                function get_available_users_and_groups2($params)
492                {
493                        $returnLDAP = $this->ldap_functions->get_available_users3($params);
494
495                        $return = array();
496                        $return['users'] = $returnLDAP['users2'];
497                        $return['groups'] = $returnLDAP['groups2'];
498
499                        return $return;
500                }
501               
502               
503        } // end class bomessages_size
504?>
Note: See TracBrowser for help on using the repository browser.