fhiiqm/inc/file_upload.inc.php
author Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
Wed, 31 Aug 2011 14:22:19 +0200
changeset 1 6288d5685bff
child 8 908abe8cec4d
permissions -rw-r--r--
Stand v. 31.08.2011

<?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"] > 6000000) $errupl1 .= "$ufile: File > 6MByte! ";
//		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><br><a href=\"sc_desc_update.php\">Upload bitte wiederholen</a><br></p>\n";
			return false;
		}	
}

function gen_filename($nfile, $ufile, $id)
{
   /** generiert Filenamen aus Eingabefilenamen und Uploadfilenamen
    * Parameter
    *   $nfile  -   vorgegebener Name durch Nutzer
    *    $ufile  -   Name aus Upload-Feld Formular
    *    $id     -   ID
    */
            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
            {
                $filep = explode(".",$_FILES[$ufile]["name"]);
                $anz    = count($filep);
                if ($anz>1) $typ = $filep[$anz-1]; else $typ = "pdf";
                $fname = $nfile;
            }
            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);
            
        return $fname;
}

function mod_file($path,$id,$fname_new,$mod)
{
   /** 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
    */
    
    if ($fname_old = exec("ls ".$path." | grep '". $id . "_'"))
    {
        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);           
           }
        }
    }    
}
// Test Aufruf
/*
    if (mod_file("/var/www/fhiiqm/documents","20","","del"))
        echo "Erfolg!\n";
    else
        echo "Misserfolg\n";
*/

?>