PageRenderTime 48ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/includes/Auto.php

http://buscocarro.googlecode.com/
PHP | 264 lines | 197 code | 24 blank | 43 comment | 17 complexity | c394682e7e5152ce3fb20d6ebd872c36 MD5 | raw file
Possible License(s): BSD-3-Clause, BSD-2-Clause, LGPL-2.1
  1. <?php
  2. /**
  3. * Clase para la gesti?n de autos en el portal.
  4. *
  5. * @author anyul
  6. */
  7. class Auto {
  8. private $db;
  9. private $imagen;
  10. public $errores = array();
  11. public function __construct() {
  12. set_error_handler("Misc::error_handler");
  13. $this->db = new db();
  14. }
  15. public function __destruct() {
  16. restore_error_handler();
  17. }
  18. function ingresarAuto($data) {
  19. // <editor-fold defaultstate="collapsed" desc="Data">
  20. $datos = array();
  21. $datos['idMarca'] = $data['auto']['marca'];
  22. $datos['idModelo'] = $data['auto']['modelo'];
  23. $datos['anio'] = $data['auto']['fecha'];
  24. $datos['transmision'] = $data['auto']['transmision'];
  25. $datos['km'] = $data['auto']['recorrido'];
  26. $datos['tipoVehiculo'] = $data['auto']['tipovehiculo'];
  27. // $datos['modeloVehiculo'] = $data['auto']['modeloVehiculo'];
  28. $datos['version'] = $data['auto']['version'];
  29. $datos['color'] = $data['auto']['color'];
  30. $datos['placa'] = $data['auto']['placa'];
  31. $datos['motor'] = $data['auto']['motor'];
  32. $datos['cilindros'] = $data['auto']['cilindros'];
  33. $datos['traccion'] = $data['auto']['traccion'];
  34. $datos['vidriosAhumados'] = $data['auto']['vidrios'];
  35. $datos['tapizado'] = $data['auto']['tapizado'];
  36. $datos['airbag'] = $data['auto']['airbag'];
  37. $datos['frenosAbs'] = $data['auto']['frenosabs'];
  38. $datos['aireAcondicionado'] = $data['auto']['aireacondicionado'];
  39. $datos['estereo'] = $data['auto']['estereo'];
  40. $datos['direccionVehiculo'] = $data['auto']['direccion'];
  41. $datos['precioVehiculo'] = $data['auto']['precio'];
  42. $datos['negociable'] = $data['auto']['negociable'];
  43. $datos['status'] = 0;
  44. $datos['comentario'] = htmlentities($data['auto']['caracteristicas'], ENT_QUOTES, "UTF-8");
  45. $datos['usuario_id'] = $data['user']['idusuarios'];
  46. //// </editor-fold>
  47. try {
  48. $resultado = $this->db->insert("carros", $datos);
  49. $carroId = $resultado['insert_id'];
  50. if ($carroId > 0) {
  51. foreach ($data['images'] as $indice => $tempImagen) {
  52. $num = substr($indice, strlen($indice) - 1, 1);
  53. if ($tempImagen['error'] == 0) {
  54. // <editor-fold defaultstate="collapsed" desc="mover imagen e insertar en DB">
  55. $nombre_imagen = 'carro-' . $resultado['insert_id'] . "-" . $num . ".jpg";
  56. // <editor-fold defaultstate="collapsed" desc="mover y redimensionar imagen">
  57. $exito = $this->mover_imagen($tempImagen, $nombre_imagen);
  58. if ($exito) {
  59. // </editor-fold>
  60. // <editor-fold defaultstate="collapsed" desc="Insertar Imagenes">
  61. $this->insertar_imagen_bd($num, $nombre_imagen, $carroId);
  62. }
  63. // </editor-fold>
  64. } elseif ($tempImagen['error'] != 4) {
  65. trigger_error("Error al cargar la foto. " . var_export($tempImagen, 1), E_USER_ERROR);
  66. $mensaje_error = Misc::error_carga_imagen($tempImagen['error']);
  67. array_push($this->errores, "No se pudo cargar la foto " . $num . ": " . $mensaje_error);
  68. }
  69. $num++;
  70. // </editor-fold>
  71. }
  72. } else {
  73. trigger_error("no se gener? id del insert del carro:" . var_export($datos, 1) . "Resultado:" . var_export($resultado, 1), E_USER_ERROR);
  74. }
  75. } catch (Exception $exc) {
  76. // <editor-fold defaultstate="collapsed" desc="manejo d excepcion">
  77. foreach ($data['images'] as $value) {
  78. $filename = '../images/carros/' . basename($value['name']);
  79. if (is_file($filename)) {
  80. unset($filename);
  81. }
  82. }
  83. // </editor-fold>
  84. }
  85. return $resultado;
  86. }
  87. function borrarAuto($id) {
  88. $result = $this->db->delete("carros", array('idCarro' => $id));
  89. return $result;
  90. }
  91. function actualizarAuto($data, $imagen, $id) {
  92. $datos = array();
  93. // <editor-fold defaultstate="collapsed" desc="Datos">
  94. $datos['idMarca'] = $data['auto']['marca'];
  95. $datos['idModelo'] = $data['auto']['modelo'];
  96. $datos['anio'] = $data['auto']['fecha'];
  97. $datos['transmision'] = $data['auto']['transmision'];
  98. $datos['km'] = $data['auto']['recorrido'];
  99. $datos['tipoVehiculo'] = $data['auto']['tipovehiculo'];
  100. $datos['version'] = $data['auto']['version'];
  101. $datos['color'] = $data['auto']['color'];
  102. $datos['placa'] = $data['auto']['placa'];
  103. $datos['motor'] = $data['auto']['motor'];
  104. $datos['cilindros'] = $data['auto']['cilindros'];
  105. $datos['traccion'] = $data['auto']['traccion'];
  106. $datos['vidriosAhumados'] = $data['auto']['vidrios'];
  107. $datos['tapizado'] = $data['auto']['tapizado'];
  108. $datos['airbag'] = $data['auto']['airbag'];
  109. $datos['frenosAbs'] = $data['auto']['frenosabs'];
  110. $datos['aireAcondicionado'] = $data['auto']['aireacondicionado'];
  111. $datos['estereo'] = $data['auto']['estereo'];
  112. $datos['direccionVehiculo'] = $data['auto']['direccion'];
  113. $datos['precioVehiculo'] = $data['auto']['precio'];
  114. $datos['negociable'] = $data['auto']['negociable'];
  115. $datos['comentario'] = htmlentities($data['auto']['caracteristicas']);
  116. $datos['vendido'] = $data['auto']['vendido'];
  117. // $datos['usuario_id'] = $data['user']['idusuarios'];
  118. //// </editor-fold>
  119. try {
  120. $result = $this->db->update("carros", $datos, array("idCarro" => $id));
  121. if (!$result['suceed']) {
  122. trigger_error("Fallo en actualizaci?n de auto:" . var_export($result, 1), E_USER_ERROR);
  123. }
  124. foreach ($imagen as $indice => $update_imagen) {
  125. $num = substr($indice, strlen($indice) - 1, 1);
  126. //si se carga una imagen y no contiene errores
  127. if ($update_imagen['error'] == UPLOAD_ERR_OK) {
  128. $nombre_imagen = 'carro-' . $id . "-" . $num . ".jpg";
  129. $exito = $this->mover_imagen($update_imagen, $nombre_imagen);
  130. if ($exito) {
  131. $this->insertar_imagen_bd($num, $nombre_imagen, $id);
  132. }
  133. } elseif ($update_imagen['error'] == UPLOAD_ERR_NO_FILE) {
  134. //do nothing
  135. } else {
  136. $mensaje_error = Misc::error_carga_imagen($update_imagen['error']);
  137. trigger_error($mensaje_error . var_export($update_imagen, 1));
  138. }
  139. $num++;
  140. }
  141. return $result['suceed'];
  142. } catch (Exception $exc) {
  143. echo $exc->getTraceAsString();
  144. return false;
  145. }
  146. }
  147. function mostrarAuto() {
  148. }
  149. function listarAutos() {
  150. }
  151. /**
  152. * cambia el status de un auto en la bd
  153. * @param Integer $id el id del auto
  154. * @param Integer $status el estatus nuevo del registro
  155. * @return mixed el arreglo con los datos de la operacion
  156. */
  157. function activarAuto($id, $status) {
  158. $result = $this->db->update("carros", array('status' => $status), array('idCarro' => $id));
  159. return $result;
  160. }
  161. function vendido($id, $status) {
  162. $result = $this->db->update("carros", array('vendido' => $status), array('idCarro' => $id));
  163. return $result;
  164. }
  165. /**
  166. * Elimina una imagen de un auto en la base de datos
  167. * @param Integer $id_imagen el id de la imagen
  168. * @return mixed arreglo con los resultados de la operacion
  169. */
  170. function eliminar_imagen($id_imagen) {
  171. $result = $this->db->delete("imagenescarros", array("idImagenesCarros" => $id_imagen));
  172. return $result;
  173. }
  174. /**
  175. * mueve una imagen cargada de la carpeta temporal y le asigna el logo del sitio web
  176. * @param mixed $imagen arreglo con los datos de la imagen cargada
  177. * @param String $nombre_imagen el nombre deseado para la imagen
  178. */
  179. private function mover_imagen($imagen, $nombre_imagen) {
  180. $this->imagen = new SimpleImage();
  181. $exito = move_uploaded_file($imagen['tmp_name'], '../images/carros/' . $nombre_imagen);
  182. if ($exito) {
  183. $filename = '../images/carros/' . $nombre_imagen;
  184. $watermark = "../images/logo.gif";
  185. $destino = $filename;
  186. chmod($filename, 0744);
  187. $this->imagen->load($filename);
  188. $this->imagen->resize(533, 400);
  189. $this->imagen->save($filename);
  190. $this->imagen->merge($filename, $watermark, $destino);
  191. } else {
  192. $mensaje_error = Misc::error_carga_imagen($update_imagen['error']);
  193. trigger_error("No se pudo mover la imagen. " . $mensaje_error);
  194. }
  195. return $exito;
  196. }
  197. /**
  198. * insertar imagen de carro en la base de datos
  199. * @param Integer $num
  200. * @param String $nombre_imagen
  201. * @param Integer $id
  202. */
  203. private function insertar_imagen_bd($num, $nombre_imagen, $id) {
  204. $datosimagen['titulo'] = "BuscoCarro.com";
  205. $datosimagen['tipoimagen_idtipoimagen'] = ($num == 1) ? 1 : 2;
  206. $datosimagen['urlImagen'] = $nombre_imagen;
  207. $datosimagen['carro_id'] = $id;
  208. $result = $this->db->insert("imagenescarros", $datosimagen);
  209. if (!$result['suceed']) {
  210. trigger_error("No se pudo guardar la imagen - Detalle:" . var_export($result, 1), E_USER_ERROR);
  211. }
  212. }
  213. function traer_marcas_nav() {
  214. return $this->db->dame_query("select distinct nombre, urlImagen from marcas where id in(10, 11, 17, 18, 25, 29, 31, 42, 55)");
  215. }
  216. function ultimas_publicaciones($limit = 4) {
  217. return $this->db->dame_query("
  218. select
  219. idCarro,
  220. precioVehiculo as 'precio',
  221. anio,
  222. marcas.nombre as 'marca',
  223. modelos.nombre as 'modelo',
  224. imagenescarros.urlImagen as 'imagen',
  225. estado.Estado as 'estado',
  226. carros.comentario
  227. from carros
  228. inner join modelos on carros.idModelo = modelos.idmodelos
  229. inner join marcas on carros.idMarca = marcas.id
  230. inner join imagenescarros on imagenescarros.carro_id = carros.idCarro and imagenescarros.tipoimagen_idtipoimagen=1
  231. inner join usuarios on carros.usuario_id = usuarios.idusuarios
  232. inner join estado on usuarios.Estado_idEstado = estado.idEstado
  233. where carros.status=1 and vendido=0
  234. order by rand() limit $limit");
  235. }
  236. function listar_tipo_vehiculos() {
  237. return $this->db->dame_query("select * from tipovehiculo");
  238. }
  239. }
  240. ?>