- Timestamp:
- 06/15/12 14:49:24 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sandbox/2.4.1-3/prototype/rest/catalog/DynamicContactResource.php
r6512 r6523 1 1 <?php 2 2 3 if ( !defined( 'ROOTPATH' ))4 define( 'ROOTPATH', dirname(__FILE__).'/..');5 6 require_once(ROOTPATH .'/rest/hypermedia/hypermedia.php');3 if (!defined('ROOTPATH')) 4 define('ROOTPATH', dirname(__FILE__) . '/..'); 5 6 require_once(ROOTPATH . '/rest/hypermedia/hypermedia.php'); 7 7 8 8 use prototype\api\Config as Config; … … 20 20 * @access public 21 21 * */ 22 function get($request, $id){ 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, 'DynamicContactResource'); 30 31 try { 32 // $this->secured(); 33 34 $dynamicContacts = Controller::find( 35 array( 'concept' => 'dynamicContact' ), 36 false, 37 array( 'filter' => array( 'AND', array( '=', 'owner', Config::me("uidNumber") ) , array('=', 'id', $id) ) ) 38 ); 39 40 //Se nao foi encontrado contatos na consulta 41 if($dynamicContacts===false){ 42 $error = new Error(); 43 $error->setCode(Response::NOTFOUND); 44 $error->setTitle('Dynamic Contact not found'); 45 $error->setDescription('Dynamic Contact not found.'); 46 47 $c->setError($error); 48 $h->setCollection($c); 49 50 $response->code = Response::NOTFOUND; 51 $response->body = $h->getHypermedia($request->accept[10][0]); 52 return $response; 53 } 54 55 56 $t = new Template(); 57 $d = new Data(); 58 59 $d->setName('name'); 60 $d->setValue(null); 61 $d->setPrompt('Nome do Contato Recente'); 62 $d->setDataType('string'); 63 $d->setMaxLength(100); 64 $d->setMinLength(null); 65 $d->setRequired(true); 66 67 $t->addData($d); 68 69 $d = new Data(); 70 $d->setName('mail'); 71 $d->setValue(null); 72 $d->setPrompt('Email do Contato Recente'); 73 $d->setDataType('string'); 74 $d->setMaxLength(100); 75 $d->setMinLength(null); 76 $d->setRequired(true); 77 78 $t->addData($d); 79 80 $d = new Data(); 81 $d->setName('number_of_messages'); 82 $d->setValue(null); 83 $d->setPrompt('Quantidade de mensagens enviadas'); 84 $d->setDataType('integer'); 85 $d->setMaxLength(100); 86 $d->setMinLength(null); 87 $d->setRequired(false); 88 89 $t->addData($d); 90 91 $c->setTemplate($t); 92 93 $d = new Data(); 94 $d->setName('id'); 95 $d->setValue($dynamicContacts[0]['id']); 96 $d->setPrompt('Identificador do Contato Recente'); 97 $d->setDataType('integer'); 98 $d->setMaxLength(null); 99 $d->setMinLength(null); 100 $d->setRequired(true); 101 102 $c->addData($d); 103 104 $d = new Data(); 105 106 $d->setName('name'); 107 $d->setValue($dynamicContacts[0]['name']); 108 $d->setPrompt('Nome do Contato Recente'); 109 $d->setDataType('string'); 110 $d->setMaxLength('100'); 111 $d->setMinLength(null); 112 $d->setRequired(true); 113 114 $c->addData($d); 115 116 $d = new Data(); 117 $d->setName('mail'); 118 $d->setValue($dynamicContacts[0]['mail']); 119 $d->setPrompt('Email do Contato Recente'); 120 $d->setDataType('string'); 121 $d->setMaxLength('100'); 122 $d->setMinLength(null); 123 $d->setRequired(true); 124 125 $c->addData($d); 126 127 $d = new Data(); 128 $d->setName('number_of_messages'); 129 $d->setValue($dynamicContacts[0]['number_of_messages']); 130 $d->setPrompt('Quantidade de mensagens enviadas'); 131 $d->setDataType('integer'); 132 $d->setMaxLength('100'); 133 $d->setMinLength(null); 134 $d->setRequired(false); 135 136 $c->addData($d); 137 138 139 $l = new Link(); 140 141 $l->setHref(''); 142 $l->setRel('delete'); 143 $l->setAlt('Remover'); 144 $l->setPrompt('Remover'); 145 $l->setRender('link'); 146 147 $c->addLink($l); 148 149 $l = new Link(); 150 $l->setHref(''); 151 $l->setRel('put'); 152 $l->setAlt('Atualizar'); 153 $l->setPrompt('Atualizar'); 154 $l->setRender('link'); 155 156 $c->addLink($l); 22 function get($request, $id) { 23 24 $this->secured(); 25 26 $response = new Response($request); 27 $response->addHeader('Content-type', 'aplication/json'); 28 $response->code = Response::OK; 29 30 $h = new Hypermedia(); 31 $c = new Collection($request->resources, 'DynamicContactResource', $id); 32 33 try { 34 $dynamicContact = Controller::read( 35 array('concept' => 'dynamicContact'), false, array('filter' => array('AND', array('=', 'owner', Config::me("uidNumber")), array('=', 'id', $id))) 36 ); 37 38 //Se nao foi encontrado contatos na consulta 39 if (!$dynamicContact) { 40 $this->createException($request, $response, Response::NOTFOUND, 'Bad request', 'Dynamic Contact not found.'); 41 return $response; 42 } 43 44 //Normaliza dado 45 if(is_array($dynamicContact)) 46 $dynamicContact = $dynamicContact[0]; 47 48 49 $t = new Template(); 50 $d = new Data(); 51 52 $d->setName('name'); 53 $d->setValue(null); 54 $d->setPrompt('Nome do Contato Recente'); 55 $d->setDataType('string'); 56 $d->setMaxLength(100); 57 $d->setMinLength(null); 58 $d->setRequired(true); 59 60 $t->addData($d); 61 62 $d = new Data(); 63 $d->setName('mail'); 64 $d->setValue(null); 65 $d->setPrompt('Email do Contato Recente'); 66 $d->setDataType('string'); 67 $d->setMaxLength(100); 68 $d->setMinLength(null); 69 $d->setRequired(true); 70 71 $t->addData($d); 72 73 $d = new Data(); 74 $d->setName('number_of_messages'); 75 $d->setValue(null); 76 $d->setPrompt('Quantidade de mensagens enviadas'); 77 $d->setDataType('integer'); 78 $d->setMaxLength(100); 79 $d->setMinLength(null); 80 $d->setRequired(false); 81 82 $t->addData($d); 83 84 $c->setTemplate($t); 85 86 $d = new Data(); 87 $d->setName('id'); 88 $d->setValue($dynamicContact['id']); 89 $d->setPrompt('Identificador do Contato Recente'); 90 $d->setDataType('integer'); 91 $d->setMaxLength(null); 92 $d->setMinLength(null); 93 $d->setRequired(true); 94 95 $c->addData($d); 96 97 $d = new Data(); 98 99 $d->setName('name'); 100 $d->setValue($dynamicContact['name']); 101 $d->setPrompt('Nome do Contato Recente'); 102 $d->setDataType('string'); 103 $d->setMaxLength('100'); 104 $d->setMinLength(null); 105 $d->setRequired(true); 106 107 $c->addData($d); 108 109 $d = new Data(); 110 $d->setName('mail'); 111 $d->setValue($dynamicContact['mail']); 112 $d->setPrompt('Email do Contato Recente'); 113 $d->setDataType('string'); 114 $d->setMaxLength('100'); 115 $d->setMinLength(null); 116 $d->setRequired(true); 117 118 $c->addData($d); 119 120 $d = new Data(); 121 $d->setName('number_of_messages'); 122 $d->setValue($dynamicContact['number_of_messages']); 123 $d->setPrompt('Quantidade de mensagens enviadas'); 124 $d->setDataType('integer'); 125 $d->setMaxLength('100'); 126 $d->setMinLength(null); 127 $d->setRequired(false); 128 129 $c->addData($d); 130 131 132 $l = new Link(); 133 134 $l->setHref(''); 135 $l->setRel('delete'); 136 $l->setAlt('Remover'); 137 $l->setPrompt('Remover'); 138 $l->setRender('link'); 139 140 $c->addLink($l); 141 142 $l = new Link(); 143 $l->setHref(''); 144 $l->setRel('put'); 145 $l->setAlt('Atualizar'); 146 $l->setPrompt('Atualizar'); 147 $l->setRender('link'); 148 149 $c->addLink($l); 157 150 158 151 $h->setCollection($c); 159 160 161 }catch (Exception $ex){ 162 $error = new Error(); 163 $error->setCode(Response::INTERNALSERVERERROR); 164 $error->setTitle('Internal Server Error'); 165 $error->setDescription($ex); 166 167 $c->setError($error); 168 $h->setCollection($c); 169 170 $response->code = Response::INTERNALSERVERERROR; 171 $response->body = $h->getHypermedia($request->accept[10][0]); 172 return $response; 173 } 174 175 $response->body = $h->getHypermedia($request->accept[10][0]); 176 return $response; 177 } 152 } catch (Exception $ex) { 153 $this->createException($request, $response, Response::INTERNALSERVERERROR, 'Internal Server Error', 'Internal Server Error'); 154 return $response; 155 } 156 157 $response->body = $h->getHypermedia($request->accept[10][0]); 158 return $response; 159 } 178 160 179 161 /** … … 187 169 * @access public 188 170 * */ 189 function put($request, $id){ 190 $post = $request->dataDecoded; 191 192 if(count($post) == 0){ 193 $response = new Response($request); 194 $response->code = Response::INTERNALSERVERERROR; 195 return $response; 196 } 197 198 //recupera os atributos definidos no conceito 'user' 199 $map = Config::get('dynamicContact', 'PostgreSQL.mapping'); 200 201 $params = array(); 202 foreach($post as $key => $value){ 203 204 if( !isset( $map[ $key ] ) || $key == 'id' || $key == 'timestamp' || $key == 'number_of_messages' ){ 205 continue; 206 } 207 $params[$key] = $value; 208 } 209 210 if(count($params) == 0){ 211 $response = new Response($request); 212 $response->code = Response::INTERNALSERVERERROR; 213 return $response; 214 } 215 216 //completar os atributos 217 $params['owner'] = Config::me("uidNumber"); 218 $params['timestamp'] = time(); 219 $params['id'] = $id; 220 221 222 $response = new Response($request); 223 // $response->addHeader('Content-type', 'aplication/json'); 224 // $response->code = Response::NOCONTENT; 225 226 try{ 227 228 // $this->secured(); 229 230 $dynamicContact = Controller::read( 231 array( 'concept' => 'dynamicContact' ), 232 false, 233 array( 'filter' => array( 234 'AND', 235 array('=', 'owner', Config::me("uidNumber") ), 236 array('=', 'id', $id) ) ) 237 ); 238 171 function put($request, $id) { 172 173 $this->secured(); 174 175 $post = $request->dataDecoded; 176 $response = new Response($request); 177 178 if (count($post) == 0){ 179 $this->createException($request, $response, Response::BADREQUEST, 'Bad request', 'Invalid template data'); 180 return $response; 181 } 182 183 //recupera os atributos definidos no conceito 'user' 184 $map = Config::get('dynamicContact', 'PostgreSQL.mapping'); 185 186 $params = array(); 187 foreach ($post as $key => $value) { 188 189 if (!isset($map[$key]) || $key == 'id' || $key == 'timestamp' || $key == 'number_of_messages') { 190 continue; 191 } 192 $params[$key] = $value; 193 } 194 195 if (count($params) == 0) { 196 $this->createException($request, $response, Response::BADREQUEST, 'Bad request', 'Invalid template data'); 197 return $response; 198 } 199 200 //completar os atributos 201 $params['owner'] = Config::me("uidNumber"); 202 $params['timestamp'] = time(); 203 $params['id'] = $id; 204 205 $response->addHeader('Content-type', 'aplication/json'); 206 $response->code = Response::NOCONTENT; 207 208 try { 209 210 $dynamicContact = Controller::read( 211 array('concept' => 'dynamicContact'), false, array('filter' => array( 212 'AND', 213 array('=', 'owner', Config::me("uidNumber")), 214 array('=', 'id', $id))) 215 ); 216 217 218 //Se existe o recurso 219 if ($dynamicContact) { 220 //Normaliza o recurso 221 if(is_array($dynamicContact)) 222 $dynamicContact = $dynamicContact[0]; 239 223 240 //Se existe o recurso 241 if($dynamicContact){ 242 $params['number_of_messages'] = $dynamicContact[0]['number_of_messages'] + 1; 243 $dynamicContact = Controller::update( 244 array('concept' => 'dynamicContact', 245 'id'=>$id), 246 $params 247 ); 248 249 if(!$dynamicContact){ 250 throw new Exception(Controller::service('PostgreSQL')->error); 251 } 252 253 } 254 else{ 255 $params['number_of_messages'] = '1'; 256 $idDynamicContact = Controller::create( 257 array('concept' => 'dynamicContact'), 258 $params 259 ); 260 261 if(!$idDynamicContact){ 262 throw new Exception(Controller::service('PostgreSQL')->error); 263 } 264 265 } 266 267 }catch (Exception $ex){ 268 $response->code = Response::INTERNALSERVERERROR; 269 return $response; 270 } 271 272 return $response; 273 274 } 224 $params['number_of_messages'] = $dynamicContact['number_of_messages'] + 1; 225 226 $dynamicContact = Controller::update(array('concept' => 'dynamicContact', 'id' => $id), $params); 227 228 if (!$dynamicContact) { 229 $this->createException($request, $response, Response::INTERNALSERVERERROR, 'Internal Server Error', Controller::service('PostgreSQL')->error); 230 return $response; 231 } 232 } else { 233 /* 234 $idDynamicContact = Controller::create( array('concept' => 'dynamicContact'), $params); 235 */ 236 //if (!$idDynamicContact) { 237 $this->createException($request, $response, Response::NOTFOUND, 'Bad request', 'Invalid data'); 238 return $response; 239 //} 240 } 241 } catch (Exception $ex) { 242 $this->createException($request, $response, Response::INTERNALSERVERERROR, 'Internal Server Error', 'Internal Server Error'); 243 return $response; 244 } 245 $response->body = json_encode(null); 246 return $response; 247 } 275 248 276 249 /** … … 283 256 * @access public 284 257 * */ 285 function delete($request, $id){ 258 function delete($request, $id) { 259 260 $this->secured(); 286 261 287 262 $response = new Response($request); 288 //$response->addHeader('Content-type', 'aplication/json');263 $response->addHeader('Content-type', 'aplication/json'); 289 264 $response->code = Response::NOCONTENT; 290 265 291 try{ 292 //Verifica se o recurso existe 293 $responseGET = $this->get($request, $id); 294 $code = $responseGET->code; 295 296 //Se existe o recurso 297 if($code == Response::OK){ 298 299 // $this->secured(); 300 301 $delete = Controller::delete(array('concept' => 'dynamicContact'), false, array('filter' => array('=', 'id', $id))); 302 303 if(!$delete){ 304 throw new Exception(Controller::service('PostgreSQL')->error); 305 } 266 try { 267 //Verifica se o recurso existe 268 $dinamicContact = Controller::read(array('concept' => 'dynamicContact', 'id' => $id)); 269 270 //Se existe o recurso 271 if ($dinamicContact) { 272 273 $delete = Controller::delete(array('concept' => 'dynamicContact', 'id' => $id)); 274 275 if (!$delete) { 276 $this->createException($request, $response, Response::INTERNALSERVERERROR, 'Internal Server Error', Controller::service('PostgreSQL')->error); 277 return $response; 306 278 } 307 else{ 308 $response->code = Response::NOTFOUND; 309 } 310 311 }catch (Exception $ex){ 312 $response->code = Response::INTERNALSERVERERROR; 313 return $response; 314 } 315 316 $response->body = json_encode(array('ABC'=>'123')); 317 318 return $response; 319 } 279 } else { 280 $this->createException($request, $response, Response::NOTFOUND, 'Bad request', 'Invalid data'); 281 return $response; 282 } 283 } catch (Exception $ex) { 284 $this->createException($request, $response, Response::INTERNALSERVERERROR, 'Internal Server Error', 'Internal Server Error'); 285 return $response; 286 } 287 288 $response->body = json_encode(null); 289 return $response; 290 } 291 292 private function createException($request, &$response, $code, $title, $description) { 293 $response->code = $code; 294 295 $h = new Hypermedia(); 296 $c = new Collection($request->resources, 'DynamicContactResource'); 297 $e = new Error(); 298 299 $e->setCode($code); 300 $e->setTitle($title); 301 $e->setDescription($description); 302 303 $c->setError($e); 304 $h->setCollection($c); 305 306 $response->body = $h->getHypermedia($request->accept[10][0]); 307 } 320 308 321 309 } 310 322 311 ?>
Note: See TracChangeset
for help on using the changeset viewer.