Exemplo n.º 1
0
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;
    }
}
Exemplo n.º 2
0
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;
}