// require our module objects require_once Settings::getSettingsVars('CONTROLLER_URL') . 'modulesController.php'; $registry_objects = ModulesController::singleton(); // Setting path of model db $registry->setDataBaseObject('database', 'db'); $oBD = $registry->getObject('db')->newConnection(DATABASE_GESTOR, BD_SERVER, BD_USER, BD_PASSWORD, BD_DATABASE, DATABASE_CHARSET); // Include Language Class include Settings::getSettingsVars('CLASS_URL') . 'localizer.class.php'; // Include Smarty Class smarty.php. require_once 'smarty.class.php'; $oSesion->inicioSesion(); $datos_usuario = $oSesion->getSesion('datos_usuario'); if (isset($datos_usuario['id_usuario'])) { Settings::setSettingsVars('DEFAULT_LANG', $datos_usuario['codigo_idioma']); Settings::setSettingsVars('ID_ZONE', $datos_usuario['id_zone']); $name_zone = Combos::getNameTimeZone($datos_usuario['id_zone']); Settings::setSettingsVars('NAME_ZONE', $name_zone); date_default_timezone_set($name_zone); $oSmarty->assign('LOGUEADO', true); $aDatosSesionUsuario = $oSesion->getSesion('datos_usuario'); $oSmarty->assign('datos_sesion', $aDatosSesionUsuario); } else { $oSmarty->assign('LOGUEADO', false); $oSesion->cierreSesion(); $oSmarty->assign('datos_sesion', ''); Settings::setSettingsVars('DEFAULT_LANG', 'en'); Settings::setSettingsVars('NAME_ZONE', 'Europe/London'); date_default_timezone_set('Europe/London'); } Localizer::init(Settings::getSettingsVars('DEFAULT_LANG')); // Assign Global language variable
/** * Returns array('success'=>true) or array('error'=>'error message') */ function handleUpload($uploadDirectory, $replaceOldFile = FALSE, $id_user, $id_padre) { if (!is_writable($uploadDirectory)) { return array('error' => "Server error. Upload directory isn't writable."); } if (!$this->file) { return array('error' => 'No files were uploaded.'); } $size = $this->file->getSize(); if ($size == 0) { return array('error' => 'File is empty'); } if ($size > $this->sizeLimit) { return array('error' => 'File is too large'); } $type_file = $this->file->getType(); $pathinfo = pathinfo($this->file->getName()); $filename = $pathinfo['filename']; //$filename = md5(uniqid()); $ext = $pathinfo['extension']; if ($this->allowedExtensions && !in_array(strtolower($ext), $this->allowedExtensions)) { $these = implode(', ', $this->allowedExtensions); return array('error' => 'File has an invalid extension, it should be one of ' . $these . '.'); } //Primero comprobamos que no existe un fichero con el mismo nombre en el nivel de carpeta en el que está $file_version = 0; $consulta_sql = "SELECT a.nombre, a.id_archivo FROM " . $this->sTablaArchivo . " as a, " . $this->sTablaUsuarioArchivo . " as ua WHERE a.tipo=1 AND a.id_archivo_padre='" . $id_padre . "' AND a.nombre = '" . $filename . "' AND a.ext = '" . $ext . "' AND a.type_file='" . $type_file . "' AND a.id_archivo = ua.id_archivo AND ua.id_usuario =" . $id_user . ";"; $rs = $this->oBD->Execute($consulta_sql); $aResultado = $rs->GetRows(); $rs->Close(); if ($rs->RecordCount() > 0) { //Si existe ya un fichero en el mismo nivel actualizamos la versión $file_version = 1; $id_archivo_version = $aResultado[0]['id_archivo']; } if (!$replaceOldFile) { //Generamos un número único para el fichero $filename_new = md5(uniqid()); $filename_new = "f" . $filename_new . rand(0, 999999999999999); while (file_exists($uploadDirectory . $filename_new)) { $filename_new = "f" . $filename_new . rand(0, 999999999999999); } } if ($this->file->save($uploadDirectory . $filename_new . '.' . $ext)) { //. '.' . $ext //Upload and insert file in DDBB $result = false; if ($file_version == 0) { $name_zone = Combos::getNameTimeZone(Settings::getSettingsVars('ID_ZONE')); $fecha = Combos::getDateTimeZone($name_zone); // Insertamos la información en la base de datos. $consulta_sql = "INSERT INTO " . $this->sTablaArchivo . " (tipo,fecha, nombre, id_archivo_padre, privacidad, fecha_update,name_file,type_file,type_size,max_size,ext) "; $consulta_sql .= " VALUES(1,'{$fecha}','" . $filename . "', '" . $id_padre . "', 1 , '{$fecha}','" . $filename_new . "','" . $type_file . "','" . $size . "','" . $size . "', '" . $ext . "')"; if (!$this->oBD->Execute($consulta_sql)) { return array('error' => 'Error insert File in Data Base'); } else { $id_file = $this->oBD->Insert_ID(); $consulta_sql = "INSERT INTO " . $this->sTablaUsuarioArchivo . " (id_usuario, id_archivo, propietario) "; $consulta_sql .= " VALUES({$id_user}, {$id_file}, 1 )"; if (!$this->oBD->Execute($consulta_sql)) { return array('error' => 'Error insert File in Data Base'); } else { //Comprobamos el último id $consulta_sql = "SELECT MAX(v.id_version) as version FROM " . $this->sTablaArchivoVersion . " as v WHERE v.id_archivo='" . $id_file . "';"; $rs = $this->oBD->Execute($consulta_sql); $aResultado = $rs->GetRows(); $rs->Close(); $version = 1; if ($aResultado[0]['version'] != "" || $aResultado[0]['version'] != NULL) { $version = $aResultado[0]['version'] + 1; } $consulta_sql = "INSERT INTO " . $this->sTablaArchivoVersion . " (id_version,id_archivo, fecha, nombre, size) "; $consulta_sql .= " VALUES({$version},{$id_file},'{$fecha}','{$filename}','{$size}')"; if (!$this->oBD->Execute($consulta_sql)) { $consulta_sql = "UPDATE " . $this->sTablaArchivo . " as a INNER JOIN (" . $this->sTablaUsuarioArchivo . " as ua INNER JOIN " . $this->sTablaUsuario . " as u ON ua.id_usuario = u.id_usuario AND u.id_usuario = " . $id_user . ") ON a.id_archivo = ua.id_archivo SET a.max_size=a.max_size+{$size} WHERE a.tipo=0 AND a.id_archivo = '" . $id_padre . "' ;"; if (!$this->oBD->Execute($consulta_sql)) { return array('error' => 'Error insert File in Data Base'); } else { //Convert PDF to SWF PdfToSwfConverter::convertPdfToSwf($uploadDirectory . $filename_new . '.' . $ext, $uploadDirectory . $filename_new . '.swf'); return array('success' => true); } } else { //Convert PDF to SWF PdfToSwfConverter::convertPdfToSwf($uploadDirectory . $filename_new . '.' . $ext, $uploadDirectory . $filename_new . '.swf'); return array('success' => true); } } } } else { //if $file_version == 1 update version of file $name_zone = Combos::getNameTimeZone(Settings::getSettingsVars('ID_ZONE')); $fecha = Combos::getDateTimeZone($name_zone); // Insertamos la información en la base de datos. if ($id_padre != 0) { $consulta_sql = "UPDATE " . $this->sTablaArchivo . " as a INNER JOIN (" . $this->sTablaUsuarioArchivo . " as ua INNER JOIN " . $this->sTablaUsuario . " as u ON ua.id_usuario = u.id_usuario AND u.id_usuario = " . $id_user . ") ON a.id_archivo = ua.id_archivo SET a.max_size=a.max_size+{$size} WHERE a.tipo=0 AND a.id_archivo = '" . $id_padre . "' ;"; if (!$this->oBD->Execute($consulta_sql)) { return array('error' => 'Error insert File in Data Base'); } } //Comprobamos el último id $consulta_sql = "SELECT MAX(v.id_version) as version FROM " . $this->sTablaArchivoVersion . " as v WHERE v.id_archivo='" . $id_archivo_version . "';"; $rs = $this->oBD->Execute($consulta_sql); $aResultado = $rs->GetRows(); $rs->Close(); $version = 1; if ($aResultado[0]['version'] != "" || $aResultado[0]['version'] != NULL) { $version = $aResultado[0]['version'] + 1; } $consulta_sql = "INSERT INTO " . $this->sTablaArchivoVersion . " (id_version,id_archivo, fecha, nombre, size) "; $consulta_sql .= " VALUES({$version},{$id_archivo_version},'{$fecha}','{$filename}','{$size}')"; if (!$this->oBD->Execute($consulta_sql)) { return array('error' => 'Error insert File in Data Base'); } else { //Convert PDF to SWF PdfToSwfConverter::convertPdfToSwf($uploadDirectory . $filename_new . '.' . $ext, $uploadDirectory . $filename_new . '.swf'); return array('success' => true); } } } else { return array('error' => 'Could not save uploaded file.' . 'The upload was cancelled, or server error encountered'); } }