<?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ö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ö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";
*/
?>