function inscribirUsuario() { if (isset($_GET['i'])) { if (validarUsuarioLoggeado()) { $usuario = getUsuarioActual(); $idCurso = removeBadHtmlTags($_GET['i']); require_once 'modulos/cursos/modelos/CursoModelo.php'; $curso = getCurso($idCurso); if ($usuario->activado == 1) { if (isset($curso)) { if ($curso->idUsuario != $usuario->idUsuario) { require_once 'modulos/usuarios/modelos/UsuarioCursosModelo.php'; if (!esUsuarioUnAlumnoDelCurso($usuario->idUsuario, $idCurso)) { //iniciar transacción //si el curso tiene precio: // -validar que el usuario tenga saldo suficiente // -actualizar el saldo // -agregamos la operación //despues, si tiene precio o no // -se inscribe el usuario // -se envia el mail // //ESTO SE DEBE DE HACER DENTRO DE UNA TRANSACCIÓN PARA QUE TODO SÉA VÁLIDO try { require_once 'bd/conex.php'; beginTransaction(); require_once 'funcionesPHP/CargarInformacionSession.php'; cargarUsuarioSession(); $usuario = getUsuarioActual(); $huboError = false; $suscribirAlumno = true; if ($curso->precio > 0) { //validar que el saldo del usuario sea suficiente para inscribirse a este curso if ($usuario->saldo >= $curso->precio) { //Actualizamos el saldo del usuario require_once 'modulos/usuarios/modelos/usuarioModelo.php'; if (actualizaSaldoUsuario($usuario->idUsuario, -$curso->precio)) { //Se actualizó correctamente el saldo del usuario, procedemos //a guardar la operación require_once 'modulos/pagos/modelos/operacionModelo.php'; $operacion = new Operacion(); $operacion->cantidad = $curso->precio; $operacion->detalle = "Curso: <a href='/curso/" . $curso->uniqueUrl . "'>" . $curso->titulo . '</a>'; $operacion->idUsuario = $usuario->idUsuario; $operacion->completada = 1; $operacion->idTipoOperacion = 2; if (altaOperacion($operacion) < 0) { $huboError = true; } } else { $huboError = true; } } else { //No tiene saldo suficiente para suscribirse al curso, lo enviamos a //una página donde puede recargar saldo $suscribirAlumno = false; setSessionMessage("<h4 class='error'>No tienes el saldo suficiente para suscribirte</h4>"); redirect("/usuarios/saldo"); } } if ($suscribirAlumno) { //ahora a inscribir al usuario if (inscribirUsuarioCurso($usuario->idUsuario, $idCurso, $curso->precio)) { require_once 'funcionesPHP/CargarInformacionSession.php'; cargarCursosSession(); cargarUsuarioSession(); setSessionMessage("<h4 class='success'>Haz quedado inscrito a este curso</h4>"); require_once 'modulos/email/modelos/envioEmailModelo.php'; //enviar email al usuario que se suscribió enviarMailSuscripcionCurso($usuario->email, $curso->titulo, $curso->imagen, 'www.unova.mx/curso/' . $curso->uniqueUrl); } else { $huboError = true; setSessionMessage("<h4 class='error'>Ocurrió un error al inscribirte al curso</h4>"); } } } catch (Exception $e) { $huboError = true; setSessionMessage("<h4 class='error'>Ocurrió un error al inscribirte al curso. Excepción " . $e->getMessage() . ".</h4>"); } //validamos si hubo algun error if ($huboError) { rollBackTransaction(); } else { commitTransaction(); } redirect("/curso/" . $curso->uniqueUrl); } else { //el usuario ya está inscrito setSessionMessage("<h4 class='error'>Ya estás suscrito a este curso</h4>"); redirect("/curso/" . $curso->uniqueUrl); } } else { //el curso pertenece al usuario setSessionMessage("<h4 class='error'>No puedes inscribirte a tu propio curso</h4>"); goToIndex(); } } else { //el curso no existe setSessionMessage("<h4 class='error'>Curso no válido</h4>"); goToIndex(); } } else { //El usuario no ha confirmado su cuenta setSessionMessage("<h4 class='error'>Debes confirmar tu cuenta para poder inscribirte a este curso</h4><h4 class='notice'><a href='/usuarios/usuario/enviarCorreoConfirmacion'>Click aquí para confirmar cuenta</a></h4>"); redirect("/curso/" . $curso->uniqueUrl); } } else { ////no hay usuario loggeado, pero esto se valida dentro de la función } } else { //no hay i, ir a index goToIndex(); } }
<?php require_once 'modulos/usuarios/clases/Usuario.php'; require_once 'funcionesPHP/funcionesGenerales.php'; require_once 'modulos/cursos/clases/Curso.php'; require_once 'funcionesPHP/LogFile.php'; session_start(); //validamos que una sesión no este siendo usada por varias computadoras al mismo tiempo if (validarUniqueSession()) { guardarTipoLayout(); //actualizamos la cantidad de saldo cada 3 requests if (isset($_SESSION['contador'])) { $n = $_SESSION['contador']; if ($n >= 3) { require_once 'funcionesPHP/CargarInformacionSession.php'; cargarUsuarioSession(); $n = 0; } $n++; $_SESSION['contador'] = $n; } if (!empty($_GET['c'])) { $controlador = $_GET['c']; } else { $controlador = $controladorPredefinido; } if (!empty($_GET['a'])) { $accion = $_GET['a']; } else { $accion = $accionPredefinida; }
function retirarSaldoSubmit() { if (validarUsuarioLoggeadoParaSubmits() && !empty($_POST['cantidad'])) { $cantidad = str_replace("\$", "", $_POST['cantidad']); $cantidad = floatval($cantidad); $huboError = false; $usuario = getUsuarioActual(); if (isset($usuario->emailPaypal) && strlen($usuario->emailPaypal) > 0) { if ($cantidad >= 50 && $cantidad <= $usuario->saldo) { require_once 'modulos/pagos/modelos/solicitudSaldoModelo.php'; require_once 'modulos/usuarios/modelos/usuarioModelo.php'; require_once 'modulos/pagos/modelos/operacionModelo.php'; require_once 'funcionesPHP/CargarInformacionSession.php'; require_once 'bd/conex.php'; beginTransaction(); if (actualizaSaldoUsuario($usuario->idUsuario, -$cantidad)) { //Se actualizó correctamente el saldo, entonces generamos una operación $operacion = new Operacion(); $operacion->idUsuario = $usuario->idUsuario; $operacion->cantidad = $cantidad; $operacion->idTipoOperacion = 4; $operacion->completada = 1; $operacion->detalle = "Retiro de saldo"; $operacion->idOperacion = altaOperacion($operacion); if ($operacion->idOperacion >= 0) { //se dio de alta correctamente la operacion, generamos la solicitud $solicitudSaldo = new SolicitudSaldo(); $solicitudSaldo->idUsuario = $usuario->idUsuario; $solicitudSaldo->cantidad = $cantidad; $solicitudSaldo->entregado = 0; //0=no entregado if (altaSolicitudSaldo($solicitudSaldo)) { commitTransaction(); setSessionMessage("<h4 class='success'>Tu solicitud de retirar saldo fue enviada correctamente</h4>"); cargarUsuarioSession(); } else { $huboError = true; } } else { $huboError = true; } } else { $huboError = true; } if ($huboError) { rollBackTransaction(); setSessionMessage("<h4 class='error'>Ocurrió un error al realizar tu solicitud. Intenta de nuevo más tarde</h4>"); } } else { //no es una cantidad válida setSessionMessage("<h4 class='error'>La cantidad que se quiere retirar no es válida</h4>"); } redirect("/usuarios/saldo"); } else { setSessionMessage("<h4 class='error'>Debes establecer tu correo electrónico asociado a Paypal para poder retirar tu saldo</h4>"); redirect("/usuarios/usuario/cambiarCorreoPaypal"); } } else { goToIndex(); } }
function confirmarCuenta() { $uuid = $_GET['i']; require_once 'modulos/usuarios/modelos/usuarioModelo.php'; $idUsuario = getIdUsuarioFromUuid($uuid); if (setActivado($idUsuario, 1)) { setSessionMessage("<h4 class='success'>Tu cuenta ha sido confirmada. ¡Gracias!</h4>"); require_once 'funcionesPHP/CargarInformacionSession.php'; cargarUsuarioSession(); } else { setSessionMessage("<h4 class='error'>Ocurrió un error al confirmar tu cuenta. Intenta de nuevo más tarde</h4>"); } goToIndex(); }