fhiiqm/inc/file_upload.inc.php
author Bettina Schwarzer
Fri, 05 Feb 2016 14:03:40 +0100
changeset 44 d652bbba2d43
parent 43 70cea8f0e807
permissions -rw-r--r--
fhiiqm: achilleus -> db2, Korrekturen

<?php

/**
 * @author B.Schwarzer, Fritz-Haber-Institut
 * @copyright 05/2011
 */

function upload($ufile, $fname, $id, $dir="documents")
{
   /**
    * prueft Uploadfile und verschiebt es in gewaehltes Verzeichnis
    *  Parameter
    *   $ufile = upload-File: name <input>-Feld 
    * 	$fname = gewaehlter filename
    *   $id    = ID
    *   $dir   = Verzeichnisname der Upload-Files
    */

        $errupl1 = null;
        $errupl2 = null;
        $errupl3 = null;
		// Test filesize, filetyp	
		if ($_FILES[$ufile]["size"] < 1) $errupl1 .= "$ufile: File ist leer! ";
		if ($_FILES[$ufile]["size"] > 32000000) $errupl1 .= "$ufile: File > 32MByte! ";
//		list($first,$rest) = explode(".",$_FILES[$ufile]["name"]);
		$filep = explode(".",$_FILES[$ufile]["name"]);
		$anz    = count($filep);
      	$typ   = $filep[$anz-1];
		if (substr($typ,0,2)=="ph" || substr($typ,0,2)=="pl" || substr($typ,0,2)=="cg" || substr($typ,0,2)=="ex") $errupl2 .="$ufile: falscher Filetyp! ";
//echo "filesize=" . $_FILES[$ufile]["size"] . "<br>\n";
		if ($_FILES[$ufile]["error"] > 0) $errupl3 = "Fehler upload: ".$_FILES[$ufile]["error"];
		if (!$errupl1 && !$errupl2 && !$errupl3)
		{
			// File laden
			$filetyp = $_FILES[$ufile]['type'];
			$filesize = $_FILES[$ufile]['size'];
			$filename = basename(addslashes($_FILES[$ufile]["name"]));				
			$tempname = $_FILES[$ufile]['tmp_name'];
			if ($fname)
            {
                  $ret = move_uploaded_file ( $tempname, $dir."/".$id."_".$fname);
            }
            else    
                $ret = move_uploaded_file ( $tempname, $dir."/".$id."_".$filename);

			if ($ret)
			{		
	//				echo "Error upload: ". $_FILES['pfile']['error'] .", $tempname<br>\n";
                if ($fname) $fname=$id."_".$fname; else $fname = $id."_".$filename;
   				echo "<p class=\"green\">Upload von '" . $_FILES[$ufile]["name"]."' erfolgreich.<br>
                    gespeicherter Dateiname: '". $fname ."'</p>\n";
				return true;
			}
			else
			{
				echo "<p class=\"red\">Upload von '" . $_FILES[$ufile]["name"]."' fehlgeschlagen.</p>\n";
				return false;
			}	
		}
		else
		{
			echo "<p class=\"red\">Upload von '" . $_FILES[$ufile]["name"]."' nicht m&ouml;glich!<br>$errupl1<br>$errupl2<br>$errupl3</p>\n";			
			echo "<p>Upload bitte wiederholen</p>\n";
			return false;
		}	
}

function upload_multif($ufile, $fname, $id, $dir="documents")
{
   /**
    * prueft Uploadfile und verschiebt es in gewaehltes Verzeichnis
    *  Parameter
    *   $ufile = upload-File-Array: name <input>-Felder 
    * 	$fname = gewaehltes filenamen-Array
    *   $id    = ID
    *   $dir   = Verzeichnisname der Upload-Files
    */

        $errupl1 = null;
        $errupl2 = null;
        $errupl3 = null;
        $ret = true;
		// Test filesize, filetyp	
        foreach ($_FILES[$ufile]['error'] as $key => $error) 
        {
            if ($error == UPLOAD_ERR_OK)
            {
                if ($_FILES[$ufile]['size'][$key] < 1) $errupl1 .= $_FILES[$ufile]['name'][$key].": File ist leer! ";
        		if ($_FILES[$ufile]['size'][$key] > 32000000) $errupl1 .= $_FILES[$ufile]['name'][$key].": File > 32MByte! ";
        //		list($first,$rest) = explode(".",$_FILES[$ufile]["name"]);
        		$filep = explode(".",$_FILES[$ufile]['name'][$key]);
        		$anz    = count($filep);
              	$typ   = $filep[$anz-1];
        		if (substr($typ,0,2)=="ph" || substr($typ,0,2)=="pl" || substr($typ,0,2)=="cg" || substr($typ,0,2)=="ex") $errupl2 .="$ufile: falscher Filetyp! ";
        //echo "filesize=" . $_FILES[$ufile]["size"] . "<br>\n";
        		if (!$errupl1 && !$errupl2)
        		{
        			// File laden
        			$filename = basename(addslashes($_FILES[$ufile]['name'][$key]));				
        			$tempname = $_FILES[$ufile]['tmp_name'][$key];
//echo "key = $key, fname = ".$fname[$key].", filename = $filename, uploadname = " . $_FILES[$ufile]['name'][$key] ."<br />";
        			if ($fname[$key])
                    {
                          $ret = move_uploaded_file ( $tempname, $dir."/".$id."_".$fname[$key]);
                    }
                    else    
                        $ret = move_uploaded_file ( $tempname, $dir."/".$id."_".$filename);
        
        			if ($ret)
        			{		
                        if ($fname[$key]) $fnam=$id."_".$fname[$key]; else $fnam = $id."_".$filename;
           				echo "<p class=\"green\">Upload von '$filename' erfolgreich.<br>
                            gespeicherter Dateiname: '". $fnam ."'</p>\n";
        				$ret = $ret && true;
        			}
        			else
        			{
        				echo "<p class=\"red\">Upload von '" . $_FILES[$ufile]["name"][$key]."' fehlgeschlagen.</p>\n";
        				$ret = $ret && false;
        			}	
        		}
        		else
        		{
                    $errupl3 = "Fehler upload: ".$_FILES[$ufile]["error"][$key];
        			echo "<p class=\"red\">Upload von '" . $_FILES[$ufile]["name"][$key]."' nicht m&ouml;glich!<br>$errupl1<br>$errupl2<br>$errupl3</p>\n";			
        			echo "<p>Upload bitte wiederholen</p>\n";
        			$ret = $ret && false;
        		}
            }
        $errupl1 = null;
        $errupl2 = null;
        $errupl3 = null;
        }
        return $ret;	
}

function gen_filename($nfile, $ufile, $id, $upload=1)
{
   /** generiert Filenamen aus Eingabefilenamen und Uploadfilenamen
    *  wenn upload<>1, dann aus neuem Dateinamen+alten (wenn nicht angegeben:Typ)
    * Parameter
    *    $nfile  -   vorgegebener Name durch Nutzer
    *    $ufile  -   Name aus Upload-Feld Formular, bzw. alter Filename
    *    $id     -   ID
    */

    if ($nfile > '!')
    {
        $su = array("ä","ö","ü","ß","Ä","Ö","Ü");
        $er = array("ae","oe","ue","ss","Ae","Oe","Ue");
    
        switch ($id) 
        {
            case ($id < 10):
                $len = 2;
                break;
            case ($id < 100):
                $len = 3;
                break;
            case ($id < 1000):
                $len = 4;
                break;
        }
//            echo "cid, len : $cid, $len<br><br>\n";          
		// Dokument-Typ aus Dateibezeichnung bzw. Uploadfile, wenn nicht angegeben
		$filea = explode(".",$nfile);
		$anz    = count($filea);
      	if ($anz>1) // File-Typ im Eingabenamen angegeben
        {   
            $typ = $filea[$anz-1]; 
            for ($i=0; $i<$anz-1; $i++)
            {
                $fname .= "." . $filea[$i];
            }
        }
        else // File-Typ aus Uploadfile
        {
            if ($upload)
                $filep = explode(".",$_FILES[$ufile]['name']);
            else
                $filep = explode(".",$ufile);
            $anz    = count($filep);
            if ($anz>1) $typ = $filep[$anz-1]; else $typ = "pdf";
            $fname = $nfile;
        }
        // ev. vorhandene gaengige Umlaute ersetzen
        $fname = str_replace($su,$er,$fname);
        
        if (strlen($typ) < 3) $typ="pdf";
        if (substr($fname,0,1) == ".")
            $fname = substr($fname,1,50-(4+$len)) . "." .$typ;
        else
            $fname = substr($fname,0,50-(4+$len)) . "." .$typ;
        if (substr($fname,0,$len) == "$id" . "_") $fname = substr($fname,$len,50);
     }
     else $fname = "";       
     return $fname;
}

function mod_file($path,$id,$fname_new,$mod,$fname_old="")
{
   /** Loeschen, Aendern des Namens von Vetragsdokumenten
    * Parameter 
    *    $path       -   Pfad zur Datei
    *    $id         -   ID des zu bearbeiteten Files, beginnt mit 'ID_'
    *    $fname_new  -   neuer Filename
    *    $mod        -   del = Loeschen
    *                    upd = Umbenennen
    *    $fname_old  -   alter Filename
    */
    
    if ($fname_old == "") $fname_old = exec("ls ".$path." | grep '". $id . "_'");
    if ($fname_old)
    {
        if (file_exists($path."/".$fname_old))
        {
            chmod($path."/".$fname_old,0644);
            if ($mod == "del")
            {
                return unlink($path."/".$fname_old);
            }
            elseif ($mod == "upd" && $fname_new>"!")
            {
                return rename($path."/".$fname_old, $path."/".$fname_new);           
            }
        }
        else return true;
    }
    else return true;    
}
// Test Aufruf
/*
    if (mod_file("/var/www/fhiiqm/documents","20","","del"))
        echo "Erfolg!\n";
    else
        echo "Misserfolg\n";
*/

?>