source: sandbox/2.4.1-3/prototype/rest/user/UsersResource.php @ 6360

Revision 6360, 6.9 KB checked in by gustavo, 12 years ago (diff)

Ticket #2768 - Melhorias na inserção de destinatários na criacao de mensagem

  • Property svn:executable set to *
Line 
1<?php
2
3if( !defined( 'ROOTPATH' ) )
4    define( 'ROOTPATH', dirname(__FILE__).'/..' );
5
6require_once(ROOTPATH.'/rest/hypermedia/hypermedia.php');
7
8use prototype\api\Config as Config;
9
10class UsersResource extends Resource {
11
12    /**
13     * Retorna uma lista de usuários
14     *
15     * @license    http://www.gnu.org/copyleft/gpl.html GPL
16     * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br)
17     * @sponsor    Caixa Econômica Federal
18     * @author     José Vicente Tezza Jr.
19     * @return     Retorna uma lista de usuários do LDAP
20     * @access     public
21     * */
22    function get($request) {
23
24        $response = new Response($request);
25        $response->addHeader('Content-type', 'aplication/json');
26        $response->code = Response::OK;
27
28        $h = new Hypermedia();
29        $c = new Collection($request->resources, 'UsersResource');
30
31        try {
32
33            $this->secured();
34
35            //Executa uma consulta de usuários do LDAP a partir de um determinado atributo e valor
36            if(isset($_GET['field']) && isset($_GET['value'])){
37
38                    //recupera os atributos definidos no conceito 'user'
39                    $map = Config::get('user', 'OpenLDAP.mapping');
40
41                    //verifica se o campo(atributo) passado pelo usuário está definido no conceito 'user'
42                    if(isset($map[ $_GET['field'] ])){
43                            $users = Controller::find(array('concept' => 'user','service'=>'OpenLDAP'), false, array('filter' => array('=', $_GET['field'],$_GET['value'] )));
44                    }
45                    else{
46                        //lança warning no log do Expresso
47                        trigger_error("Invalid field (".$_GET['field'].") in the query.", E_USER_WARNING);
48
49                        //formata os atributos LDAP do conceito 'user'
50                        $attributes = implode(', ', $map);
51
52                        //Configura o erro na hypermedia
53                        $error = new Error();
54                        $error->setCode(Response::NOTFOUND);
55                        $error->setTitle('UserLDAP not found');
56                        $error->setDescription("Invalid field (".$_GET['field'].") in the query. Use of these: ".$attributes);
57
58                        $c->setError($error);
59                        $h->setCollection($c);
60
61                        //retorna a hypermedia
62                        $response->code = Response::NOTFOUND;
63                        $response->body = $h->getHypermedia($request->accept[10][0]);
64                        return $response;
65                    }
66            }
67            else{
68                    //Executa a consulta dos primeiros 20 usuarios do LDAP
69                    $users = Controller::find(array('concept' => 'user','service'=>'OpenLDAP'), false, array('filter' => array('=', 'phpgwAccountType', 'u'),'limit'=>20));
70            }
71
72ob_start();
73print_r($users);
74$teste = ob_get_clean();
75file_put_contents('/tmp/log-tezza.txt', $teste,FILE_APPEND);
76
77
78            //Se nao foi encontrado usuarios na consulta
79            if($users===false){
80                $error = new Error();
81                $error->setCode(Response::NOTFOUND);
82                $error->setTitle('UserLDAP not found');
83                $error->setDescription('Users not found.');
84
85                $c->setError($error);
86                $h->setCollection($c);
87
88                $response->code = Response::NOTFOUND;
89                $response->body = $h->getHypermedia($request->accept[10][0]);
90                return $response;
91            }
92
93            foreach($users as $value){
94                $d = new Data();
95                $i = new Item($request->resources, 'UsersResource', $value['uid']);
96
97                $d->setName('name');
98                $d->setValue($value['name']);
99                $d->setPrompt('Nome do Usuário');
100                $d->setDataType('string');
101                $d->setMaxLength('100');
102                $d->setMinLength(null);
103                $d->setRequired(true);
104
105                $i->addData($d);
106
107                $d = new Data();
108                $d->setName('email');
109                $d->setValue($value['mail']);
110                $d->setPrompt('Email do Usuário');
111                $d->setDataType('string');
112                $d->setMaxLength('100');
113                $d->setMinLength(null);
114                $d->setRequired(true);
115
116                $i->addData($d);
117
118                $d = new Data();
119                $d->setName('telephoneNumber');
120                $d->setValue($value['telephoneNumber']);
121                $d->setPrompt('Telefone do Usuário');
122                $d->setDataType('string');
123                $d->setMaxLength('100');
124                $d->setMinLength(null);
125                $d->setRequired(true);
126
127                $i->addData($d);
128
129                $l = new Link();
130
131                $l->setHref('');
132                $l->setRel('delete');
133                $l->setAlt('Remover');
134                $l->setPrompt('Remover');
135                $l->setRender('link');
136
137                $i->addLink($l);
138
139                $l = new Link();
140                $l->setHref('');
141                $l->setRel('put');
142                $l->setAlt('Atualizar');
143                $l->setPrompt('Atualizar');
144                $l->setRender('link');
145
146                $i->addLink($l);
147
148                $l = new Link();
149                $l->setHref('/userldap/'.$value['uid']);
150                $l->setRel('get');
151                $l->setAlt('Buscar');
152                $l->setPrompt('Buscar');
153                $l->setRender('link');
154
155                $i->addLink($l);
156                $c->addItem($i);
157            }
158
159            $t = new Template();
160            $d = new Data();
161
162            $d->setName('name');
163            $d->setValue(null);
164            $d->setPrompt('Nome do Usuário');
165            $d->setDataType('string');
166            $d->setMaxLength(100);
167            $d->setMinLength(null);
168            $d->setRequired(true);
169
170            $t->addData($d);
171
172            $d = new Data();
173            $d->setName('email');
174            $d->setValue(null);
175            $d->setPrompt('Email do Usuário');
176            $d->setDataType('string');
177            $d->setMaxLength(100);
178            $d->setMinLength(null);
179            $d->setRequired(true);
180
181            $t->addData($d);
182
183            $d = new Data();
184            $d->setName('telefone');
185            $d->setValue(null);
186            $d->setPrompt('Telefone do Usuário');
187            $d->setDataType('string');
188            $d->setMaxLength(100);
189            $d->setMinLength(null);
190            $d->setRequired(true);
191
192            $t->addData($d);
193
194            $c->setTemplate($t);
195
196            $d = new Data();
197            $d->setName('Usuário LDAP');
198            $d->setValue(null);
199            $d->setPrompt('Usuário do LDAP');
200            $d->setDataType(null);
201            $d->setMaxLength(null);
202            $d->setMinLength(null);
203            $d->setRequired(null);
204
205            $c->setData($d);
206
207            $queries = array();
208            $queries[0] = new Querie();
209            $queries[0]->setHref($c->href);
210            $queries[0]->setData('field','',true);
211            $queries[0]->setData('value','',true);
212            $c->setQueries($queries);
213
214
215            $h->setCollection($c);
216
217        }catch (Exception $ex){
218                $error = new Error();
219                $error->setCode(Response::INTERNALSERVERERROR);
220                $error->setTitle('Internal Server Error');
221                $error->setDescription($ex);
222
223                $c->setError($error);
224                $h->setCollection($c);
225
226                $response->code = Response::INTERNALSERVERERROR;
227                $response->body = $h->getHypermedia($request->accept[10][0]);
228                return $response;
229        }
230
231        $response->body = $h->getHypermedia($request->accept[10][0]);
232        return $response;
233  }
234}
235?>
Note: See TracBrowser for help on using the repository browser.