getClaseAccion(); if ( $pedido->getUsuario()->tienePermisos($clase)) { if ($pedido->esGet() and Cache::estaCacheado($pedido->getQueryString()) and USA_CACHE) { $respuestaHTTP = Cache::traerDeCache( $pedido->getQueryString() ); } else { $accion = new $clase(); $accion->restringirSoloAUas($pedido->getUsuario()->getUasLimitadas()); $accion->setPedido( $pedido ); $respuesta = $accion->obtenerRespuesta(); $respuestaHTTP = new JSONRespuesta( 1, null, $respuesta ); USA_CACHE and Cache::cachear($pedido->getQueryString(), $respuestaHTTP, false, $accion->getVitalidadSegundos()); } $respuestaHTTP->mostrar(); } else { throw new Exception($pedido->getAccion().': No tiene suficientes permisos para la accion'); } } catch (PDOConexionException $e) // TODO: refactoring (evitar repetir codigo) { if (ES_PRODUCCION) { $id_error = time().','.uniqid(); error_log("[".$id_error."]: ". $e->getMessage()); $msg_error = "Error de base de datos. [".$id_error."]"; } else { $msg_error = $e->getMessage(); } $respuesta = new JSONRespuesta( -1, $msg_error, array('tipo_error'=>'base_de_datos') ); $respuesta->mostrar(); } catch (PDOException $e) { if (ES_PRODUCCION) { $id_error = time().','.uniqid(); error_log("[".$id_error."]: ". $e->getMessage()); $msg_error = "Error de base de datos. [".$id_error."]"; } else { $msg_error = $e->getMessage(); } $respuesta = new JSONRespuesta( -1, $msg_error, array('tipo_error'=>'base_de_datos')); $respuesta->mostrar(); } catch (Exception $e) { $respuesta = new JSONRespuesta( -1, $e->getMessage(), array('tipo_error'=>'aplicacion') ); $respuesta->mostrar(); }