/** * Método del controlador el cual se encarga de la edición de las ofertas * @param integer $id ID de la oferta a editar */ public function editar($id = 0) { // validamos y saneamos aqui porque vamos a utilizarlo en caso // de que no haya $_POST $id = (int) $id; $id = Validaciones::saneamiento($id); // Bloque try catch para preveer posibles excepciones try { if (!$_POST) { // comprobamos si la oferta que se intenta editar es del usuario // que realiza la petición if (!OfertaModel::comprobarPropiedadOferta($id)) { Session::add('feedback_negative', 'No puedes editar una oferta que no es tuya'); header('Location: /Oferta'); exit; } // mostrar el formulario para poder editar // para ello deberemos recuperar los BD $info = OfertaModel::getId($id); $empresa = OfertaModel::getNombreEmpresa(); $datos = ['titulo' => 'Edición de oferta', 'empresas' => $empresa, 'datos' => $info]; echo $this->view->render("ofertas/formularioOferta", $datos); } else { // tratamos los datos en el modelo if (OfertaModel::editar($id, $_POST)) { Session::add('feedback_positive', 'La oferta ha sido editada'); header('Location: /Oferta'); exit; } else { // existen errores, llamamos a la vista para mostrar los errores // Saneamos $_POST Session::add('feedback_negative', 'La oferta no se ha podido modificar o no se ha modificado nada'); $empresa = OfertaModel::getNombreEmpresa(); $array = Validaciones::sanearEntrada($_POST); $datos = ['datos' => $array, 'empresas' => $empresa]; // mostramos la vista con los datos saneados, // para evitar la inyeción de código echo $this->view->render('ofertas/formularioOferta', $datos); } } } catch (PDOException $e) { // llamamos a la vista de error 500 $array = ['msg' => 'Error del servidor, disculpe las molestias.']; echo $this->view->render('error/error500', $array); // modo debbug ON /*echo '<pre>'; echo $e->getMessage();*/ } }
/** * Método de edición de ofertas * @param Integer $id ID de la oferta a modificar * @param Array $array Datos a editar * @return Boolean True = si se realiza la edición, False = sino se realiza */ public static function editar($id, $array) { if (!$array) { Session::add('feedback_negative', 'No se han recicibido datos'); return false; } // hacemos las validaciones if ($ofr = OfertaModel::getId($id)) { if ($ofr) { $array['id'] = $ofr['id']; } if (OfertaModel::validar($array)) { // Saneamos el array $array = Validaciones::sanearEntrada($array); // Procedemos a la inserción de la empresa en la base de datos // Para ello preestablecemos el array que queremos insertar if (!Session::get('user_id')) { Session::add('feedback_negative', 'No tiene iniciada sesión, por lo tanto no podemos crear la oferta'); return false; } $empresa = Session::get('empresa'); $empresa = $empresa['id']; $datos = [':nombre' => $array['nombre'], ':descripcion' => $array['descripcion'], ':requisitos' => $array['requisitos'], ':url' => $array['url'], ':salario' => $array['salario'], ':empresa' => $empresa, ':id' => $id]; Session::delete('empresa'); // devolvemos lo que la inserción nos dice //d($datos);die; return OfertaModel::edit($datos); } else { // Como ya existen los errores en Session // simplemente los devolvemos return false; } } else { Session::add('feedback_negative', 'No se ha modificado la empresa'); return false; } }