function subirImagen() { //Regresara un json con error y link $error = ""; $link = ""; if (validarUsuarioLoggeado()) { if (isset($_POST['u']) && isset($_POST['uuid']) && isset($_POST['cu']) && isset($_POST['cl'])) { $idUsuario = $_POST['u']; $uuid = $_POST['uuid']; $idCurso = $_POST['cu']; $idClase = $_POST['cl']; $usuario = getUsuarioActual(); require_once 'modulos/cursos/modelos/ClaseModelo.php'; require_once 'modulos/cursos/modelos/CursoModelo.php'; if ($usuario->idUsuario == getIdUsuarioDeCurso($idCurso) && $usuario->idUsuario == $idUsuario && $usuario->uuid == $uuid && clasePerteneceACurso($idCurso, $idClase)) { $file = "archivos/temporal/original_" . $_FILES["imagen"]["name"]; if (move_uploaded_file($_FILES['imagen']['tmp_name'], $file)) { //Se subió correctamente el archivo, lo subimos al S3 require_once 'modulos/aws/modelos/s3Modelo.php'; $res = uploadFileToS3($file, "popcornExtraFiles"); if ($res['res']) { //se subio bien al s3 require_once 'modulos/editorPopcorn/modelos/archivosExtraModelo.php'; $archivoExtra = new ArchivoExtra(); $archivoExtra->idClase = $idClase; $archivoExtra->link = $res['link']; if (agregarArchivoExtra($archivoExtra) >= 0) { //Se agrego bien a la bd $link = $res['link']; } else { //error al agregar a la bd $error = "Error al guardar en la bd"; } } else { //no se subio al s3 $error = "no se subio al s3"; } //sin importar si se subio bien, borramos el archivo temporal unlink($file); } else { $error = "error al mover el archivo"; } } else { $error = "No tienes permiso para modificar"; } } else { $error = "datos no validos"; } } else { $error = "Usuario no válido"; } $array = array("error" => $error, "link" => $link, "post" => $_POST); echo json_encode($array); }
function publicar() { $idCurso = $_GET['ic']; $usuario = getUsuarioActual(); if (isset($usuario)) { if ($usuario->activado == 1) { require_once 'modulos/cursos/modelos/CursoModelo.php'; if (getIdUsuarioDeCurso($idCurso) == $usuario->idUsuario) { //Si el usuario loggeado es del curso, publicar if (setPublicarCurso($idCurso, 1)) { echo ' ok'; } else { echo 'ERROR BD'; } } else { echo 'ERROR. Usuario no dueño'; } } else { //El usuario no ha confirmado su cuenta echo 'ERROR. Usuario no activado.'; } } else { echo 'ERROR. Usuario no loggeado'; } }
function borrarTema() { if (validarUsuarioLoggeadoParaSubmits()) { if (isset($_GET['i'])) { $idCurso = $_GET['i']; $idTema = $_GET['j']; require_once 'modulos/cursos/modelos/CursoModelo.php'; require_once 'modulos/cursos/modelos/TemaModelo.php'; if (getUsuarioActual()->idUsuario == getIdUsuarioDeCurso($idCurso)) { $tema = getTema($idTema); //El curso si pertenece al usuario $numClases = numeroDeClasesDelTema($idTema); if ($numClases > 0) { //no puedes borrar el tema porque tiene clases asignadas echo "<div> <h3 class='error'>No puedes borrar este tema porque todavía tiene clases.<br> Borra las clases primero</h3></div>"; } else { if (bajaTema($idTema) <= 0) { echo "<div><h3 class='error'> Ocurrió un error al borrar el tema. Intenta de nuevo más tarde.</h3></div>"; } else { //echo "<div><h3 class='info'></h3></div>"; echo "ok"; //Si fue satisfactorio no regresamos ningun resultado } } } else { //Error, el usuario no es dueño de este curso, no puede modificar //goToIndex(); //no enviar a ningun lado porque es llamada ajax } } else { //Error, no hay get['i'] //goToIndex(); //no enviar a ningun lado porque es llamada ajax } } else { //Error, no hay usuario loggeado para ejecutar acción Ajax, no hacer nada } }
function crearClase($idUsuario, $idCurso, $uuid, $idTema, $fileName, $fileType) { require_once 'modulos/cursos/clases/Clase.php'; require_once 'modulos/cursos/modelos/ClaseModelo.php'; require_once 'modulos/usuarios/modelos/usuarioModelo.php'; require_once 'modulos/cursos/modelos/CursoModelo.php'; require_once 'modulos/cursos/modelos/TemaModelo.php'; $filePath = "archivos/temporal/uploaderFiles/"; if (getIdUsuarioDeCurso($idCurso) == $idUsuario && getIdUsuarioFromUuid($uuid) == $idUsuario && $idCurso == getIdCursoPerteneciente($idTema)) { //Validamos que el curso sea del usuario, que el uuid pertenezca a este usuario y que el tema sea del curso $clase = new Clase(); $clase->idTema = $idTema; //Revisamos que el nombre del archivo no pase de 50 caractéres if (strlen($fileName) > 45) { $auxFileName = substr($fileName, 0, 50); if (!rename($filePath . $fileName, $filePath . $auxFileName)) { //Ocurrió un error al renombrar el archivo die('Ocurrió un error al subir el archivo'); } $fileName = $auxFileName; } $clase->titulo = $fileName; $clase->idTipoClase = getTipoClase($fileType); if ($clase->idTipoClase == 0) { $clase->transformado = 0; $idClase = altaClase($clase); //Si es video creamos la clase con la bandera que todavía no se transforma //guardamos en la cola que falta transformar este video //$url = "http://localhost/videos.php"; $file = $filePath . $fileName; $params = array("idClase" => $idClase, "file" => $file, "fileType" => $fileType); $json = json_encode($params); require_once 'lib/php/beanstalkd/ColaMensajes.php'; $colaMensajes = new ColaMensajes("transformarvideos"); $colaMensajes->push($json); return $clase; } else { $clase->transformado = 1; //Si es de otro tipo, lo subimos al CDN de rackspace y creamos la clase require_once 'modulos/cdn/modelos/cdnModelo.php'; $file = $filePath . $fileName; //Le agregamos al nombre del archivo un codigo aleatorio de 5 caracteres $fileName = getUniqueCode(15) . "_" . $fileName; $uri = crearArchivoCDN($file, $fileName, $clase->idTipoClase); if ($uri != NULL) { //Si se creo correctamene el archivo CDN, creamos la clase y borramos el archivo local $clase->archivo = $uri; altaClase($clase); return $clase; } else { //Si ocurrió un error, se borra y regresamos false unlink($file); return NULL; } } } else { //Hay errores en la integridad usuario <-> curso //borramos el archivo unlink("archivos/temporal/uploaderFiles/" . $fileName); return NULL; } }
function guardarEdicionVideo() { $res = array(); $resultado = ""; $mensaje = ""; if (validarUsuarioLoggeado()) { if (isset($_POST['u']) && isset($_POST['uuid']) && isset($_POST['cu']) && isset($_POST['cl'])) { $idUsuario = $_POST['u']; $uuid = $_POST['uuid']; $idCurso = $_POST['cu']; $idClase = $_POST['cl']; $usuario = getUsuarioActual(); require_once 'modulos/cursos/modelos/ClaseModelo.php'; require_once 'modulos/cursos/modelos/CursoModelo.php'; if ($usuario->idUsuario == getIdUsuarioDeCurso($idCurso) && $usuario->idUsuario == $idUsuario && $usuario->uuid == $uuid && clasePerteneceACurso($idCurso, $idClase)) { $json = json_encode($_POST); $json = str_replace("'", "", $json); if (actualizaCodigoClase($idClase, $json)) { $resultado = "ok"; $mensaje = "Los cambios han sido guardados correctamente"; } else { $resultado = "error"; $mensaje = "Error al modificar la BD."; } } else { $resultado = "error"; $mensaje = "No puedes modificar esta clase"; echo json_encode($res); } } else { $resultado = "error"; $mensaje = "Los datos recibidos son incorrectos"; echo json_encode($res); } } else { $resultado = "error"; $mensaje = "No hay usuario loggeado"; } $res = array("resultado" => $resultado, "mensaje" => $mensaje); echo json_encode($res); }
function guardarEdicionVideo() { $res = array(); $resultado = ""; $mensaje = ""; if (validarUsuarioLoggeado()) { if (isset($_POST['u']) && isset($_POST['uuid']) && isset($_POST['cu']) && isset($_POST['cl'])) { $idUsuario = $_POST['u']; $uuid = $_POST['uuid']; $idCurso = $_POST['cu']; $idClase = $_POST['cl']; $usuario = getUsuarioActual(); require_once 'modulos/cursos/modelos/ClaseModelo.php'; require_once 'modulos/cursos/modelos/CursoModelo.php'; if ($usuario->idUsuario == getIdUsuarioDeCurso($idCurso) && $usuario->idUsuario == $idUsuario && $usuario->uuid == $uuid && clasePerteneceACurso($idCurso, $idClase)) { $auxPostArray = array(); //Cargamos los datos de video if (isset($_POST['videoData'])) { $auxPostArray['videoData'] = $_POST['videoData']; } //Cargamos los textos if (isset($_POST['textos'])) { $auxPostArray['textos'] = $_POST['textos']; } //Cargamos las imagenes if (isset($_POST['imagenes'])) { $auxPostArray['imagenes'] = $_POST['imagenes']; } //Cargamos los videos if (isset($_POST['videos'])) { $auxPostArray['videos'] = $_POST['videos']; } //Cargamos los links if (isset($_POST['links'])) { $auxPostArray['links'] = $_POST['links']; } //Cargamos las preguntas if (isset($_POST['preguntas'])) { $auxPostArray['preguntas'] = $_POST['preguntas']; //validamos que las preguntas que ya no se usen, se borren de la bd require_once 'modulos/cursos/modelos/ControlModelo.php'; require_once 'modulos/cursos/modelos/ControlPreguntaModelo.php'; $control = getControlDeClase($idClase); $preguntasEnBD = getIdsPreguntasDeControl($control->idControl); //Cargamos los ids de las preguntas en un arreglo, para poder checarlo y borrar las que //ya no se usen $idPreguntasNuevas = array(); foreach ($_POST['preguntas'] as $pregunta) { array_push($idPreguntasNuevas, $pregunta['idPregunta']); } foreach ($preguntasEnBD as $pregunta) { //checamos que esta pregunta este en uso if (!in_array($pregunta, $idPreguntasNuevas)) { //Si no esta en el arreglo, la debemos de borrar bajaControlPregunta($pregunta); } } } $json = json_encode($auxPostArray); $json = str_replace("'", "", $json); //revisamos que los archivos que se subieron para esta clase aún se utilizen require_once 'modulos/editorPopcorn/modelos/archivosExtraModelo.php'; $archivosExtra = getArchivosExtraDeClase($idClase); if (isset($archivosExtra)) { foreach ($archivosExtra as $archivo) { $auxName = substr(strrchr($archivo->link, "/"), 1); if (strpos($json, $auxName) !== false) { //echo 'El archivo ' . $archivo->link . ' todavía se usa<br>'; //No hacemos nada, el archivo esta en uso } else { //echo 'El archivo ' . $archivo->link . ' YA NO SE USA!<br>'; //El archivo ya no se usa, lo borramos del s3 require_once 'modulos/aws/modelos/s3Modelo.php'; //echo 'se va a borrar el id = ' . $archivo->idArchivoExtra . ' link= ' . $archivo->link; if (deleteFileFromS3ByUrl($archivo->link)) { //Se borro el archivo del s3, lo borramos de la bd //echo 'se borro del s3 '; if (borrarArchivoExtra($archivo->idArchivoExtra)) { //echo 'se borro de la bd'; } } } } } if (actualizaCodigoClase($idClase, $json)) { $resultado = "ok"; $mensaje = "Los cambios han sido guardados correctamente"; } else { $resultado = "error"; $mensaje = "Error al modificar la BD."; } } else { $resultado = "error"; $mensaje = "No puedes modificar esta clase"; echo json_encode($res); } } else { $resultado = "error"; $mensaje = "Los datos recibidos son incorrectos"; echo json_encode($res); } } else { $resultado = "error"; $mensaje = "No hay usuario loggeado"; } $res = array("resultado" => $resultado, "mensaje" => $mensaje); echo json_encode($res); }
function eliminar() { if (validarUsuarioLoggeado()) { if (validarAdministradorPrivado()) { if (isset($_GET['i']) && is_numeric($_GET['i'])) { $idCurso = intval($_GET['i']); require_once 'modulos/cursos/modelos/CursoModelo.php'; $idUsuario = getIdUsuarioDeCurso($idCurso); //Debido a los archivos en el cdn no podemos borrar las clases por cascada, //pero si los cursos y temas. //Obtenemos todas la clases que pertenecen a este curso, borramos del cdn los archivos y las clases, //y borramos lo demás por cascada require_once 'modulos/cursos/modelos/ClaseModelo.php'; $res = borrarClasesConArchivosDeCurso($idCurso); if ($res['res']) { if (bajaCurso($idCurso) > 0) { setSessionMessage("Se eliminó con éxito el curso", " ¡Bien! ", "success"); } else { setSessionMessage("Ocurrió un error al eliminar", " ¡Error! ", "error"); } } else { setSessionMessage($res['error'], " ¡Error! ", "error"); } } else { setSessionMessage("Ocurrió un error", " ¡Error! ", "error"); } redirect("/cursos"); } else { goToIndex(); } } else { goToIndex(); } }
function crearClaseDeArchivo($idUsuario, $idCurso, $idTema, $fileName, $fileType) { require_once 'modulos/usuarios/modelos/usuarioModelo.php'; require_once 'modulos/cursos/modelos/CursoModelo.php'; require_once 'modulos/cursos/modelos/TemaModelo.php'; //Carpeta donde se va a guardar el archivo temporal $filePath = getServerRoot() . "/archivos/temporal/uploaderFiles/"; $res = array(); //Validamos que el curso sea del usuario y que el tema sea del curso if (getIdUsuarioDeCurso($idCurso) == $idUsuario && $idCurso == getIdCursoPerteneciente($idTema)) { //Guardamos el nombre original del archivo para establecerlo como titulo $pathInfo = pathinfo($filePath . $fileName); $titulo = $pathInfo['filename']; $newName = getUniqueCode(64) . "." . $pathInfo['extension']; require_once 'funcionesPHP/funcionesParaArchivos.php'; //Le cambiamos el nombre del archivo a uno generico if (rename($filePath . $fileName, $filePath . $newName)) { $file = $filePath . $newName; $pathInfo = pathinfo($file); $clase = new Clase(); $clase->idTema = $idTema; $clase->titulo = $titulo; $clase->idTipoClase = getTipoClase($fileType); //Establecemos el ancho de banda utilizado por la subida de este archivo $size = getFileSize($file); require_once 'modulos/principal/modelos/variablesDeProductoModelo.php'; deltaVariableDeProducto("usoActualAnchoDeBanda", $size); require_once 'modulos/aws/modelos/s3Modelo.php'; if ($clase->idTipoClase == 0 || $clase->idTipoClase == 4) { //Creamos la clase en la bd //Si es video o audio creamos la clase con la bandera que todavía no se transforma $clase->transformado = 0; $clase->usoDeDisco = 0; $clase->duracion = "00:00"; $clase->orden = getUltimoOrdenEnTema($idTema) + 1; $idClase = altaClase($clase); if ($idClase >= 0) { //Subimos el archivo al servicio S3 de amazon $s3res = uploadFileToS3($file); if ($s3res['res']) { //El archivo se subio al cdn //Generamos los datos del mensaje $datosDelMensaje = array("bucket" => $s3res['bucket'], "key" => $s3res['key'], "tipo" => $clase->idTipoClase, "host" => getDomainName(), "idClase" => $idClase); $datosJson = json_encode($datosDelMensaje); require_once 'modulos/aws/modelos/sqsModelo.php'; if (AddMessageToQueue($datosJson)) { //Se mando correctamente el mensaje //Se dió de alta correctamente $res['resultado'] = true; $res['url'] = "#"; } else { //Ocurrio un eror al agregar el mensaje $res['resultado'] = false; $res['mensaje'] = "Ocurrió un error al guardar tu archivo en nuestros servidores. Intenta de nuevo más tarde"; } } else { //Erro al subir el archivo al s3 de amazon $res['resultado'] = false; $res['mensaje'] = "Ocurrió un error al guardar tu archivo en nuestros servidores. Intenta de nuevo más tarde"; } } else { //Ocurrió un error al agregar a la bd $res['resultado'] = false; $res['mensaje'] = "Ocurrió un error al guardar tu archivo en nuestros servidores. Intenta de nuevo más tarde"; } } else { $clase->transformado = 1; //Subimos el archivo al servicio S3 de amazon $s3res = uploadFileToS3($file); if ($s3res['res']) { //Si se subio, guardamos la clase en la bd $clase->archivo = $s3res['link']; $clase->usoDeDisco = $size; $clase->orden = getUltimoOrdenEnTema($idTema) + 1; $idClase = altaClase($clase); if ($idClase >= 0) { //Se dió de alta correctamente $res['resultado'] = true; $res['url'] = "#"; } else { //Ocurrió un error al agregar a la bd $res['resultado'] = false; $res['mensaje'] = "Ocurrió un error al guardar tu archivo en nuestros servidores. Intenta de nuevo más tarde"; } } else { //Si ocurrió un error al subir al s3 $res['resultado'] = false; $res['mensaje'] = "Ocurrió un error al guardar tu archivo en nuestros servidores. Intenta de nuevo más tarde"; } } //Sin importar que paso, borramos el archivo temporal unlink($file); } else { //Si ocurrió un error, se borra y regresamos false unlink($filePath . $fileName); $res['resultado'] = false; $res['mensaje'] = "El nombre del archivo no es válido"; } } else { //Hay errores en la integridad usuario <-> curso //borramos el archivo unlink($filePath . $fileName); $res['resultado'] = false; $res['mensaje'] = "No tienes permisos para modificar este curso"; } return $res; }
function obtenerPregunta() { $res = "error"; $msg = ""; if (validarUsuarioLoggeado()) { if (isset($_POST['u']) && isset($_POST['uuid']) && isset($_POST['cu']) && isset($_POST['cl'])) { $idUsuario = $_POST['u']; $uuid = $_POST['uuid']; $idCurso = $_POST['cu']; $idClase = $_POST['cl']; $usuario = getUsuarioActual(); require_once 'modulos/cursos/modelos/ClaseModelo.php'; require_once 'modulos/cursos/modelos/CursoModelo.php'; if ($usuario->idUsuario == getIdUsuarioDeCurso($idCurso) && $usuario->idUsuario == $idUsuario && $usuario->uuid == $uuid && clasePerteneceACurso($idCurso, $idClase)) { //$_POST['idPregunta'] $idPregunta = $_POST['idPregunta']; require_once 'modulos/cursos/modelos/ControlPreguntaModelo.php'; $pregunta = getPregunta($idPregunta); if (isset($pregunta) && !is_null($pregunta)) { $res = "ok"; $msg = json_encode($pregunta); } else { $res = "borrar"; $msg = "la pregunta no existe"; } } else { //Error en la integridad usuario-curso-clase $msg = "Error de integridad usuario-curso-clase"; } } else { //Error en los datos recibidos $msg = "Datos recibidos incorrectos"; } } else { //Usuario no loggeado $msg = "usuario no loggeado"; } echo json_encode(array("res" => $res, "mensaje" => $msg)); }