source: trunk/workflow/inc/class.bo_utils.inc.php @ 7475

Revision 7475, 6.2 KB checked in by rafaelgobara, 11 years ago (diff)

Ticket #3172 - Retirado espaço desnecessario.

  • Property svn:executable set to *
Line 
1<?php
2/**************************************************************************\
3* eGroupWare                                                                       *
4* http://www.egroupware.org                                                *
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
12require_once 'class.bo_ajaxinterface.inc.php';
13
14/**
15 * @package Workflow
16 * @license http://www.gnu.org/copyleft/gpl.html GPL
17 * @author Sidnei Augusto Drovetto Jr. - drovetto@gmail.com
18 */
19class bo_utils extends bo_ajaxinterface
20{
21        /**
22         * @var object $db
23         * @access public
24         */
25        var $db;
26        /**
27         * Construtor da classe bo_utils
28         * @return object
29         * @access public
30         */
31        function bo_utils()
32        {
33                parent::bo_ajaxinterface();
34                $this->db =& Factory::getInstance('WorkflowObjects')->getDBExpresso();
35        }
36
37        /**
38         * Retorna as cidades de um estado
39         * @param array $params parametros
40         * @return array Array com IDs e nomes das cidades
41         * @access public
42         */
43        function get_cities($params)
44        {
45                $output = array();
46                $output['target'] = $params['target'];
47                $state_id = $params['state_id'];
48                $sql = "SELECT id_city, city_name FROM phpgw_cc_city WHERE id_state = $state_id ORDER BY city_name";
49                $result = $this->db->query($sql);
50                $output['cities'] = array();
51                while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC))
52                        $output['cities'][] = array(
53                                                                        'id' => $row['id_city'],
54                                                                        'name' => $row['city_name']);
55                return $output;
56        }
57
58        /**
59         * Retorna a lista de registros encontrados no LDAP cujo cn contenha o parâmetro digitado
60         * @param array $params parametros
61         * @return array Array com o nome da combo onde devem ser carregados os resultados da busca, com
62         *                               um array com IDs e names dos registros encontrados e/ou uma mensagem de erro.
63         * @access public
64         */
65        function search_ldap_users_by_cn($params)
66        {
67                // parâmetro a ser procurado no ldap
68                $cn = trim(preg_replace('/ +/', ' ', $params['cn']));
69
70                $output           = array();
71                $output['target'] = $params['target'];
72                $output['values'] = array();
73                $output['msg']    = "";
74
75                // verifica se o nome digitado contém apenas letras e/ou espaços
76                if(preg_match('/^[a-z -]*$/i', $cn)){
77                        if (strlen($cn) < 3)
78                        {
79                                $output['msg'] = 'Por favor, utilize pelo menos 3 caracteres em sua busca.';
80                                return $output;
81                        }
82                        // atributo a ser retornado como id da option, se não for passado este parâmetro, usar 'dn'
83                        $ret_id   = empty($params['id']) ? 'dn' : $params['id'];
84
85                        // atributo a ser retornado como name da option, se não for passado este parâmetro, usar 'cn'
86                        $ret_name = empty($params['name']) ? 'cn' : $params['name'];
87
88                        $ret_complement = empty($params['complement']) ? '' : $params['complement'];
89
90                        // According to the ldap selected, format de config params to be extracted
91                        if ($params['useCCParams'] == true || $params['useCCParams'] == "true")
92                        {
93                                $ldap_indexes = array('module' => 'contactcenter',
94                                                                                'host' => 'cc_ldap_host0',
95                                                                                'basedn' => 'cc_ldap_context0',
96                                                                                'user' => 'cc_ldap_browse_dn0',
97                                                                                'passwd' => 'cc_ldap_pw0');
98                        }
99                        else
100                        {
101                                $ldap_indexes = array('module' => 'workflow',
102                                                                                'host' => 'ldap_host',
103                                                                                'basedn' => 'ldap_user_context',
104                                                                                'user' => 'ldap_user',
105                                                                                'passwd' => 'ldap_password');
106
107                        }
108                        $ajaxConfig = &Factory::newInstance('ajax_config', $ldap_indexes['module']);
109                        $config = $ajaxConfig->read_repository();
110
111                        $ldapconfig['host'] = $config[$ldap_indexes['host']];
112                        $ldapconfig['basedn'] = $config[$ldap_indexes['basedn']];
113                        $usuario = $config[$ldap_indexes['user']];
114                        $senha = $config[$ldap_indexes['passwd']];
115
116                        $referrals = ($params['useCCParams'] == "true") ? 1 : $config['ldap_follow_referrals'];
117
118                        if($usuario != "" && $senha != ""){
119                                $ds = ldap_connect($ldapconfig['host']);
120
121                                ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
122                                ldap_set_option($ds, LDAP_OPT_REFERRALS, $referrals);
123
124                                $lbind = @ldap_bind($ds, $usuario, $senha);
125
126                                $filter     = '(&(uid=*)(phpgwAccountType=u)(!(phpgwAccountVisible=-1))(cn=*' . $cn . '*))';
127
128                                if($ret_complement != '')
129                                        $attrib_ret = array('cn', $ret_id, $ret_name, $ret_complement);
130                                else
131                                        $attrib_ret = array('cn', $ret_id, $ret_name);
132
133                                $r = ldap_search($ds, $ldapconfig['basedn'], $filter, $attrib_ret, 0, 0, 5);
134
135                                if($r){
136                                        if(ldap_count_entries($ds, $r) == 0){
137                                                $output['msg'] = 'Não foram encontrados registros.';
138                                        }
139                                        elseif(ldap_count_entries($ds, $r) < 200){
140
141                                                $result = ldap_get_entries($ds, $r);
142
143                                                foreach($result as $value){
144                                                        if( ($value[$ret_name][0] != '') && ($value[$ret_complement][0] != '') ){
145                                                                        $complement = " >> " . $value[$ret_complement][0];
146                                                                        $output['values'][] = array(
147                                                                                                                                 'id'   => $value[$ret_id],
148                                                                                                                                 'name' => trim(ucwords(strtolower($value[$ret_name][0]))) . $complement
149                                                                                                                           );
150
151                                                        }
152                                                elseif($value[$ret_name][0] != ''){
153                                                                $output['values'][] = array(
154                                                                                                                         'id'   => $value[$ret_id],
155                                                                                                                         'name' => trim(ucwords(strtolower($value[$ret_name][0])))
156                                                                                                                   );
157                                                        }
158                                                else{
159                                                                $output['values'][] = array(
160                                                                                                                         'id'   => '',
161                                                                                                                         'name' => "-- Selecione uma Opção --"
162                                                                                                                   );
163                                                        }
164
165                                                }
166
167                                                foreach ($output['values'] as $key => $value){
168                                                        $nome[$key] = $value['name'];
169                                                        $ids[$key] = $value['id'];
170                                                }
171                                                // faz ordenação de um array multidimensional
172                                                array_multisort($nome, SORT_ASC, $ids, SORT_ASC, $output['values']);
173                                        }
174                                        else{
175                                                $output['msg'] = 'Foram encontrados mais de 200 registros, por favor, refine sua pesquisa.';
176                                        }
177                                }
178                                else{
179                                        $output['msg'] = 'Não foram encontrados registros.';
180                                }
181
182                                ldap_close($ds);
183                        }
184                }
185                else{
186                        $output['msg'] = 'Não digite caracteres especiais nem números. Apenas letras e espaços são permitidos.';
187                }
188                return $output;
189        }
190}
191?>
Note: See TracBrowser for help on using the repository browser.