Corrected Upload Permissions for DMS Documents

This commit is contained in:
Andreas Österreicher
2018-07-26 08:28:43 +02:00
parent 2e210b3ebb
commit 2aad3257b6
7 changed files with 599 additions and 1134 deletions
+72 -79
View File
@@ -53,7 +53,7 @@ if (! $rechte->isberechtigt('basis/dms', null, 's', null))
<script type="text/javascript" src="../vendor/joeldbirch/superfish/dist/js/superfish.min.js"></script>
<script type="text/javascript" src="../include/tiny_mce/tiny_mce_popup.js"></script>
<style type="text/css">
.buttondesign
.buttondesign
{
background-color: #87cefa;
border: 1px solid black;
@@ -259,17 +259,19 @@ if ($importFile != '')
{
if (! $rechte->isberechtigt('basis/dms', $kategorie->kategorie_oe_kurzbz, 'sui'))
die($rechte->errormsg);
$ext = pathinfo($importFile, PATHINFO_EXTENSION);
$filename = uniqid();
$filename .= ".".$ext;
$dms_id = $_POST['dms_id_import'];
// kopiert aus import Verzeichnis
if (copy(IMPORT_PATH.$importFile, DMS_PATH.$filename))
{
$dms = new dms();
if(!$dms->setPermission(DMS_PATH.$filename))
echo $dms->errormsg;
if ($dms_id != '')
{
if (! $dms->load($dms_id))
@@ -285,18 +287,18 @@ if ($importFile != '')
}
// Mimetype auslesen
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$dms->insertamum = date('Y-m-d H:i:s');
$dms->insertvon = $user;
$dms->mimetype = finfo_file($finfo, IMPORT_PATH.$importFile); // Davor deprecated: mime_content_type(IMPORT_PATH.$importFile);
$dms->filename = $filename;
$dms->name = $importFile;
if ($dms->save(true))
{
echo 'File wurde erfolgreich hochgeladen. <br>Filename:'.$filename.' <br>ID: <a href="id://'.$dms->dms_id.'/Auswahl" onclick="FileBrowserDialog.mySubmit('.$dms->dms_id.'); return false;" style="font-size: small">'.$dms->dms_id.'</a>';
$dms_id = $dms->dms_id;
if ($projekt_kurzbz != '' || $projektphase_id != '')
{
if (! $dms->saveProjektzuordnung($dms_id, $projekt_kurzbz, $projektphase_id))
@@ -305,13 +307,7 @@ if ($importFile != '')
}
else
echo 'Fehler beim Speichern der Daten';
if (! @chgrp(DMS_PATH.$filename, 'dms'))
echo '<br>CHGRP failed';
if (! @chmod(DMS_PATH.$filename, 0774))
echo '<br>CHMOD failed';
exec('sudo chown wwwrun '.$filename);
// Lösche File aus Verzeichnis nachdem es raufgeladen wurde
if (! unlink(IMPORT_PATH.$importFile))
echo 'Fehler beim Löschen aufgetreten.';
@@ -321,7 +317,7 @@ if (isset($_POST['fileupload']))
{
if (! $rechte->isberechtigt('basis/dms', $kategorie->kategorie_oe_kurzbz, 'sui'))
die($rechte->errormsg);
$dms_id = $_POST['dms_id'];
$beschreibung = $_POST['beschreibung'];
$schlagworte = $_POST['schlagworte'];
@@ -330,17 +326,14 @@ if (isset($_POST['fileupload']))
$filename = uniqid();
$filename .= ".".$ext;
$uploadfile = DMS_PATH.$filename;
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
{
if (! @chgrp($uploadfile, 'dms'))
echo '<br>CHGRP failed';
if (! @chmod($uploadfile, 0774))
echo '<br>CHMOD failed';
exec('sudo chown wwwrun '.$uploadfile);
$dms = new dms();
if(!$dms->setPermission($uploadfile))
echo $dms->errormsg;
if ($dms_id != '')
{
if (! $dms->load($dms_id))
@@ -356,7 +349,7 @@ if (isset($_POST['fileupload']))
}
// Mimetype auslesen
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$dms->insertamum = date('Y-m-d H:i:s');
$dms->insertvon = $user;
$dms->mimetype = finfo_file($finfo, $uploadfile); // Davor deprecated: $_FILES['userfile']['type'];
@@ -365,14 +358,14 @@ if (isset($_POST['fileupload']))
$dms->beschreibung = $beschreibung;
$dms->schlagworte = $schlagworte;
$dms->cis_suche = $cis_suche;
if ($dms->save(true))
{
echo '<p class="ok">File wurde erfolgreich hochgeladen.</p>Filename intern: '.$filename.' <br>Dateiname: '.$dms->name;
echo '<br>ID: <a href="id://'.$dms->dms_id.'/Auswahl" onclick="FileBrowserDialog.mySubmit('.$dms->dms_id.'); return false;" style="font-size: small" title="'.$dms->beschreibung.'">
'.$dms->dms_id.'</a><br><br>';
$dms_id = $dms->dms_id;
if ($projekt_kurzbz != '' || $projektphase_id != '')
{
if (! $dms->saveProjektzuordnung($dms_id, $projekt_kurzbz, $projektphase_id))
@@ -394,14 +387,14 @@ if (isset($_POST['action']) && $_POST['action'] == 'rename')
{
if (! $rechte->isberechtigt('basis/dms', $kategorie->kategorie_oe_kurzbz, 'su'))
die($rechte->errormsg);
$name = $_POST['dateiname'];
$dms_id = $_POST['dms_id'];
$version = $_POST['version'];
$beschreibung = $_POST['beschreibung'];
$schlagworte = $_POST['schlagworte'];
$cis_suche = isset($_POST['cis_suche']) ? true : false;
$dms = new dms();
if ($dms->load($dms_id, $version))
{
@@ -411,7 +404,7 @@ if (isset($_POST['action']) && $_POST['action'] == 'rename')
$dms->cis_suche = $cis_suche;
$dms->updateamum = date('Y-m-d H:i:s');
$dms->updatevon = $user;
if ($dms->save(false))
echo '<span class="ok">Dateiname wurde erfolgreich geändert</span>';
else
@@ -425,16 +418,16 @@ if (isset($_REQUEST['delete']))
{
if (! $rechte->isberechtigt('basis/dms', $kategorie->kategorie_oe_kurzbz, 'suid'))
die($rechte->errormsg);
// lösche nur die Version
if (isset($_REQUEST['version']))
{
$dms_id = $_REQUEST['dms_id'];
$version = $_REQUEST['version'];
$dms = new dms();
$dms->load($dms_id, $version);
// DB Eintrag löschen
if (! $dms->deleteVersion($dms_id, $version))
echo '<span class="error">'.$dms->errormsg.'</span>';
@@ -457,7 +450,7 @@ if (isset($_REQUEST['delete']))
// lösche gesamten Eintrag
$dms = new dms();
$dms_id = $_REQUEST['dms_id'];
// DB Einträge und Dokumente löschen
if (! $dms->deleteDms($dms_id))
echo '<span class="error">'.$dms->errormsg.'</span>';
@@ -490,10 +483,10 @@ if ($versionId != '')
elseif ($renameId != '')
{
// Datei umbenennen
if (! $rechte->isberechtigt('basis/dms', $kategorie->kategorie_oe_kurzbz, 'su'))
die($rechte->errormsg);
echo '<h1>Datei umbennen</h1>';
if (isset($_REQUEST['searching']) && $_REQUEST['searching'] == 'true')
echo '<p><a href="'.$_SERVER['PHP_SELF'].'?searching=true&searchstring='.$_REQUEST['searchstring'].'&page='.$page.'&dpp='.$dpp.'">zurück</a></p>';
@@ -516,10 +509,10 @@ elseif ($renameId != '')
elseif ($chkatID != '')
{
// Kategorie aendern
if (! $rechte->isberechtigt('basis/dms', $kategorie->kategorie_oe_kurzbz, 'su'))
die($rechte->errormsg);
if (isset($_POST['action']) && ($_POST['action'] == 'chkat'))
{
// neue Kategorie speichern
@@ -564,7 +557,7 @@ else
{
echo '<div style="padding: 5px; border-bottom: 1px solid lightblue"><a href="admin_dms.php" target="_blank">Administration</a></div>';
}
// Kategorien anzeigen
$dms = new dms();
$dms->getKategorie();
@@ -599,7 +592,7 @@ else
<td valign="top" style="border-top: 1px solid lightblue;">';
// Dokumente der Ausgewaehlten Kategorie laden und Anzeigen
$dms = new dms();
if ($searchstring != '' && (isset($_GET['searching']) && $_GET['searching'] == true))
{
$count = new dms();
@@ -607,7 +600,7 @@ else
$anzahl = count($count->result); // Falsches Ergebnis falls keine Berechtigung für eine Kategorie besteht
$dms->search($searchstring, $dpp, $page);
$suche = true;
if ($page != 0)
{
echo '<span style="float:left">'.$anzahl.' Elemente gefunden</span><span style="float:right">Seite '.$page.' von <a href="'.$_SERVER['PHP_SELF'].'?page=';
@@ -633,9 +626,9 @@ else
{
echo '<span align="center"><a href="'.$_SERVER['PHP_SELF'].'?page=1&dpp='.$dpp.'&searching=true&searchstring='.$searchstring.'">Seite 1</a></span>';
}
drawFilesList($dms->result);
echo '<form action="'.$_SERVER['PHP_SELF'].'?page=';
if ($page - 100 < 1)
{
@@ -783,7 +776,7 @@ else
</form>';
}
else
{
{
// Wenn eine Berechtigung auf der Kategorie liegt prüfen, ob der User die notwendigen Rechte hat
if ($kategorie->berechtigung_kurzbz == '' || $rechte->isBerechtigt($kategorie->berechtigung_kurzbz))
{
@@ -792,7 +785,7 @@ else
$count = new dms();
$anzahl = $count->countDocumentsKategorie($kategorie_kurzbz);
$dms->getDocuments($kategorie_kurzbz, $dpp, $page);
if ($page != 0)
{
echo '<span style="float:left">'.$anzahl.' Elemente gefunden</span><span style="float:right">Seite '.$page.' von <a href="'.$_SERVER['PHP_SELF'].'?kategorie_kurzbz='.$kategorie_kurzbz.'&page=';
@@ -818,7 +811,7 @@ else
{
echo '<span align="center"><a href="'.$_SERVER['PHP_SELF'].'?kategorie_kurzbz='.$kategorie_kurzbz.'&page=1&dpp='.$dpp.'">Seite 1</a></span>';
}
drawFilesList($dms->result);
echo '<form action="'.$_SERVER['PHP_SELF'].'?kategorie_kurzbz='.$kategorie_kurzbz.'&page=';
if ($page - 100 < 1)
@@ -964,14 +957,14 @@ else
</select> Elemente pro Seite&nbsp;
</form>';
}
else
else
echo '<span style="float:left">Sie haben keine Berechtigung für diese Kategorie</span>';
}
else
else
echo '<span style="float:left">Sie haben keine Berechtigung für diese Kategorie</span>';
}
// drawFilesThumb($dms->result);
echo '
</td>
</tr>
@@ -1042,7 +1035,7 @@ else
}
else
echo 'upload();';
echo '
});
</script>';
@@ -1063,7 +1056,7 @@ function drawAllVersions($id)
global $rechte, $kategorie;
$dms = new dms();
$dms->getAllVersions($id);
echo '<script>
$(document).ready(function()
{
@@ -1109,7 +1102,7 @@ function drawAllVersions($id)
echo '<li><a href="'.$_SERVER['PHP_SELF'].'?renameid='.$dms_help->dms_id.'&kategorie_kurzbz='.$dms_help->kategorie_kurzbz.'&dms_id='.$dms_help->dms_id.'&version='.$dms_help->version.'" style="font-size:small">Datei umbenennen</a></li>';
if ($rechte->isberechtigt('basis/dms', $kategorie->kategorie_oe_kurzbz, 'suid'))
echo '<li><a href="'.$_SERVER['PHP_SELF'].'?kategorie_kurzbz='.$dms_help->kategorie_kurzbz.'&versionid='.$dms_help->dms_id.'&dms_id='.$dms_help->dms_id.'&version='.$dms_help->version.'&delete" style="font-size:small">Löschen</a></li>';
echo '</ul>
</li>
</ul>
@@ -1125,7 +1118,7 @@ function drawAllVersions($id)
function drawFilesFromImport()
{
global $kategorie_kurzbz, $projekt_kurzbz, $projektphase_id;
if ($handle = opendir(IMPORT_PATH))
{
echo '<script>
@@ -1141,7 +1134,7 @@ function drawFilesFromImport()
echo ' <h3>Files im Import Ordner</h3>
<table class="tablesorter" id="t3" style="width: auto"> <form action ="'.$_SERVER['PHP_SELF'].'" method="POST" name="import" >
<thead><th>File</th><th></th></thead><tbody>';
while (false !== ($file = readdir($handle)))
{
if ($file != '.' && $file != '..')
@@ -1176,19 +1169,19 @@ function drawKategorieMenue($rows)
{
global $kategorie_kurzbz;
global $rechte;
$kategorie_berechtigt = false;
// echo '<ul>';
foreach ($rows as $row)
{
// Wenn eine Berechtigung auf der Kategorie liegt prüfen, ob der User die notwendigen Rechte hat
if ($row->berechtigung_kurzbz != '' && !$rechte->isberechtigt($row->berechtigung_kurzbz))
continue;
$dms = new dms();
$dms->getKategorie($row->kategorie_kurzbz);
$kategorie = new dms();
$kategorie->loadKategorie($row->kategorie_kurzbz);
@@ -1198,14 +1191,14 @@ function drawKategorieMenue($rows)
// Wenn eine oe_kurzbz auf der Kategorie liegt prüfen, ob der User die Kategorie sehen darf
if ($dms->kategorie_oe_kurzbz == '' || !$rechte->isberechtigt('basis/dms', $dms->kategorie_oe_kurzbz, 's'))
$kategorie_berechtigt = true;
if ($kategorie_kurzbz == '')
$kategorie_kurzbz = $row->kategorie_kurzbz;
if ($kategorie_kurzbz == $row->kategorie_kurzbz)
$class = 'marked';
else
$class = '';
// Suchen, ob eine Sperre fuer diese Kategorie vorhanden ist
$groups = $dms->getLockGroups($row->kategorie_kurzbz);
$locked = '';
@@ -1233,7 +1226,7 @@ function drawKategorieMenue($rows)
</li>';
}
}
else
else
{
if (count($dms->result) > 0)
drawKategorieMenue($dms->result);
@@ -1251,7 +1244,7 @@ function drawFilesList($rows)
{
global $mimetypes, $suche, $rechte;
$dms = new dms();
if (count($rows) > 0)
{
echo '
@@ -1264,7 +1257,7 @@ function drawFilesList($rows)
echo 'sortList: [[4,0],[1,1]], headers: {3:{sorter:false}},';
else
echo 'sortList: [[0,0]], headers: {2:{sorter:false}},';
echo '
widgets: ["zebra"]
});
@@ -1272,7 +1265,7 @@ function drawFilesList($rows)
</script>
';
}
echo '
<table class="tablesorter" id="t2">
<thead>
@@ -1299,7 +1292,7 @@ function drawFilesList($rows)
// Wenn eine Berechtigung auf der Kategorie liegt prüfen, ob der User die notwendigen Rechte hat
if ($row->berechtigung_kurzbz != '' && !$rechte->isberechtigt($row->berechtigung_kurzbz))
continue;
else
else
$i++;
echo '
@@ -1309,7 +1302,7 @@ function drawFilesList($rows)
echo '<img title="'.$row->name.'" src="../skin/images/'.$mimetypes[$row->mimetype].'" style="height: 15px">';
else
echo '<img title="'.$row->name.'" src="../skin/images/blank.gif" style="height: 15px">';
// wenn es noch höhere Versionen zu diesem Dokument gibt, wird dieses gekennzeichnet
$newVersion = '';
$newerVersionAlert = '';
@@ -1318,20 +1311,20 @@ function drawFilesList($rows)
$newVersion = '--';
$newerVersionAlert = 'alert(\'Achtung!! Es gibt eine neuere Version dieses Dokuments. Es wird die aktuellste eingefügt.\');';
}
echo '
<a href="id://'.$row->dms_id.'/Auswahl" onclick="'.$newerVersionAlert.' FileBrowserDialog.mySubmit('.$row->dms_id.'); return false;" style="font-size: small" title="'.$row->beschreibung.'">
'.$newVersion.' '.$row->name.'</a>
</td>';
$datum = new datum();
echo '<td style="padding: 1px;" title="'.$datum->formatDatum($row->insertamum, 'd.m.Y H:m').' von '.$row->insertvon.'">';
echo $row->version;
echo '</td>';
$kategorie = new dms();
$kategorie->loadKategorie($row->kategorie_kurzbz);
// zeige bei suche auch kategorie an
if ($suche == true)
{
@@ -1340,7 +1333,7 @@ function drawFilesList($rows)
echo '</td>';
}
echo '<td style="padding: 1px;">';
// Upload einer neuen Version
echo '<ul class="sf-menu">
<li><a href="#" style="font-size:small">Erweitert</a>
@@ -1428,7 +1421,7 @@ function drawFilesList($rows)
echo '<li><a href="'.$_SERVER['PHP_SELF'].'?searching=true';
if (isset($_REQUEST['searchstring']))
echo '&searchstring='.$_REQUEST['searchstring'];
echo '&dms_id='.$row->dms_id.'&delete" onclick="return conf_del()" style="font-size:small" >Löschen</a></li>';
}
}
@@ -1510,9 +1503,9 @@ function drawFilesList($rows)
}
if ($i > 0)
echo '</tbody></table>';
else
else
echo '<tr><td colspan="5">Für keines der gefundenen Elemente besteht eine Berechtigung</td></tr></tbody></table>';
$suche = false;
}
@@ -1525,7 +1518,7 @@ function drawFilesList($rows)
function drawRenameForm($dms_id, $version, $page = NULL, $dpp = NULL, $searching, $searchstring)
{
global $kategorie_kurzbz;
$dms = new dms();
if ($dms->load($dms_id, $version))
{
@@ -1588,10 +1581,10 @@ function drawChangeKategorie($dms_id, $page = NULL, $dpp = NULL)
global $rechte;
$dms = new dms();
$dms->load($dms_id);
$allKategorien = new dms();
$allKategorien->getAllKategories();
if (isset($_REQUEST['searching']) && $_REQUEST['searching'] == 'true')
{
echo '<form action="'.$_SERVER['PHP_SELF'].'?chkatID='.$dms_id.'&searching=true&searchstring='.$_REQUEST['searchstring'];
@@ -1613,19 +1606,19 @@ function drawChangeKategorie($dms_id, $page = NULL, $dpp = NULL)
echo '
<select name="kategoriez">
<option value="auswahl">-- Bitte Auswählen --</option>';
foreach ($allKategorien->result as $kategorienResult)
{
if ($kategorienResult->kategorie_oe_kurzbz != '' && !$rechte->isberechtigt('basis/dms', $kategorienResult->kategorie_oe_kurzbz, 'su'))
continue;
$selected = '';
if ($kategorienResult->kategorie_kurzbz == $dms->kategorie_kurzbz)
$selected = 'selected';
echo '<option '.$selected.' value="'.$kategorienResult->kategorie_kurzbz.'">'.$x.$kategorienResult->bezeichnung.' ['.$kategorienResult->kategorie_kurzbz.']</option>';
}
echo '</select>
<input type="hidden" name="action" value="chkat">
<input type="hidden" name="dms_id" value="'.$dms_id.'">';
+227 -228
View File
@@ -1,228 +1,227 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
// Oberflaeche zum Upload von Dokumenten aus dem FAS
require_once('../config/vilesci.config.inc.php');
require_once('../include/functions.inc.php');
require_once('../include/person.class.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/akte.class.php');
require_once('../include/dokument.class.php');
require_once('../include/dms.class.php');
require_once('../include/phrasen.class.php');
header("Content-Type: text/html; charset=utf-8");
$PHP_SELF = $_SERVER['PHP_SELF'];
echo "<html><body>";
$user = get_uid();
$p = new phrasen();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('assistenz') && !$rechte->isBerechtigt('mitarbeiter'))
die('Keine Berechtigung');
$kategorie_kurzbz = isset($_REQUEST['kategorie_kurzbz'])?$_REQUEST['kategorie_kurzbz']:'';
$dokument_kurzbz = isset($_REQUEST['dokument_kurzbz'])?$_REQUEST['dokument_kurzbz']:'';
if(isset($_POST['submitbild']))
{
$error = false;
// dms Eintrag anlegen
if(isset($_POST['fileupload']))
{
$ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
$filename = uniqid();
$filename.=".".$ext;
$uploadfile = DMS_PATH.$filename;
if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))
{
if(!chgrp($uploadfile,'dms'))
echo 'CHGRP failed';
if(!chmod($uploadfile, 0774))
echo 'CHMOD failed';
exec('sudo chown wwwrun '.$uploadfile);
$dms = new dms();
$dms->version='0';
$dms->kategorie_kurzbz=$kategorie_kurzbz;
$dms->insertamum=date('Y-m-d H:i:s');
//$dms->insertvon = $user;
$dms->mimetype=$_FILES['file']['type'];
$dms->filename = $filename;
$dms->name = $_FILES['file']['name'];
if($dms->save(true))
{
$dms_id=$dms->dms_id;
}
else
{
echo 'Fehler beim Speichern der Daten';
$error = true;
}
}
else
{
echo 'Fehler beim Hochladen der Datei';
$error = true;
}
}
if(isset($_FILES['file']['tmp_name']) && !$error)
{
//Extension herausfiltern
$ext = explode('.',$_FILES['file']['name']);
$ext = mb_strtolower($ext[count($ext)-1]);
$filename = $_FILES['file']['tmp_name'];
//$fp = fopen($filename,'r');
//auslesen
//$content = fread($fp, filesize($filename));
//fclose($fp);
$akte = new akte();
if($akte->getAkten($_GET['person_id'], 'Lichtbil'))
{
if(count($akte->result)>0)
{
$akte = $akte->result[0];
$akte->new = false;
}
else
$akte->new = true;
}
else
{
$akte->new = true;
}
$dokument = new dokument();
$dokument->loadDokumenttyp($_REQUEST['dokumenttyp']);
$extension = end(explode(".",strtolower($_FILES['file']['name'])));
$akte->dokument_kurzbz = $_REQUEST['dokumenttyp'];
$akte->person_id = $_GET['person_id'];
//$akte->inhalt = base64_encode($content);
$akte->mimetype = $_FILES['file']['type'];
$akte->erstelltam = date('Y-m-d H:i:s');
$akte->gedruckt = false;
$akte->titel = $akte->titel = cutString($_FILES['file']['name'], 32, '~', true); // Filename gekuerzt auf 32 Zeichen;
$akte->bezeichnung = cutString($dokument->bezeichnung_mehrsprachig[DEFAULT_LANGUAGE], 32);
$akte->updateamum = date('Y-m-d H:i:s');
$akte->updatevon = $user;
$akte->insertamum = date('Y-m-d H:i:s');
$akte->nachgereicht = false;
$akte->anmerkung = '';
$akte->insertvon = $user;
$akte->uid = '';
$akte->dms_id = $dms_id;
$akte->new = true;
$akte->titel_intern = $_REQUEST['titel_intern'];
$akte->anmerkung_intern = $_REQUEST['anmerkung_intern'];
if(!$akte->save())
{
echo "<b>Fehler: $akte->errormsg</b>";
}
else
{
// Bei erfolgreichem Upload wird die Ansicht im FAS refresht
echo "<b>Erfolgreich gespeichert</b>
<script>
window.opener.InteressentDokumentTreeNichtabgegebenDatasourceRefresh();
window.opener.InteressentDokumentTreeAbgegebenDatasourceRefresh();
window.close();
</script>";
}
}
}
if(isset($_GET['person_id']))
{
$dokument = new dokument();
$dokument->getAllDokumente('Zeugnis');
echo " <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<link href='../skin/style.css.php' rel='stylesheet' type='text/css'>
<link rel='stylesheet' href='../skin/jquery.css' type='text/css'/>
</head>
<body style='padding:10px;'>
<h1>Upload Dokumente</h1>
<form method='POST' enctype='multipart/form-data' action='$PHP_SELF?person_id=".$_GET['person_id']."'>
<table>
<tr>
<td align='right'>Dokument:</td>
<td><input type='file' name='file' /></td>
</tr>
<tr>
<td align='right'>Typ:</td>
<td><SELECT style='width:300px' name='dokumenttyp'>";
foreach ($dokument->result as $dok)
{
$onclick="document.getElementById('titel_intern').value='".$dok->dokument_kurzbz."';";
if(isset($_GET['dokument_kurzbz']) && $_GET['dokument_kurzbz']==$dok->dokument_kurzbz)
$selected='selected';
else
$selected='';
echo '<option value="'.$dok->dokument_kurzbz.'" onclick="'.$onclick.'" '.$selected.'>'.$dok->bezeichnung."</option>\n";
}
echo " <tr>
<td align='right'>Titel:</td><td><input size='45' maxlength='32' type='text' name='titel_intern' id='titel_intern' length='35' ></td>
</tr>
<tr>
<td align='right'>Anmerkung:</td><td><textarea name='anmerkung_intern' cols='45' id='anmerkung_intern'></textarea></td>
</tr>
<tr>
<td><input type='hidden' name='kategorie_kurzbz' id='kategorie_kurzbz' value='Akte'>
<input type='hidden' name='fileupload' id='fileupload'></td>
<td><input type='submit' name='submitbild' value='Upload'></td>
</tr></table></form></body></html>";
}
else
{
echo "Es wurde keine Person_id angegeben";
}
?>
</body>
</html>
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
// Oberflaeche zum Upload von Dokumenten aus dem FAS
require_once('../config/vilesci.config.inc.php');
require_once('../include/functions.inc.php');
require_once('../include/person.class.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/akte.class.php');
require_once('../include/dokument.class.php');
require_once('../include/dms.class.php');
require_once('../include/phrasen.class.php');
header("Content-Type: text/html; charset=utf-8");
$PHP_SELF = $_SERVER['PHP_SELF'];
echo "<html><body>";
$user = get_uid();
$p = new phrasen();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('assistenz') && !$rechte->isBerechtigt('mitarbeiter'))
die('Keine Berechtigung');
$kategorie_kurzbz = isset($_REQUEST['kategorie_kurzbz'])?$_REQUEST['kategorie_kurzbz']:'';
$dokument_kurzbz = isset($_REQUEST['dokument_kurzbz'])?$_REQUEST['dokument_kurzbz']:'';
if(isset($_POST['submitbild']))
{
$error = false;
// dms Eintrag anlegen
if(isset($_POST['fileupload']))
{
$ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
$filename = uniqid();
$filename.=".".$ext;
$uploadfile = DMS_PATH.$filename;
if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))
{
if(!chgrp($uploadfile,'dms'))
echo 'CHGRP failed';
if(!chmod($uploadfile, 0774))
echo 'CHMOD failed';
$dms = new dms();
$dms->version='0';
$dms->kategorie_kurzbz=$kategorie_kurzbz;
$dms->insertamum=date('Y-m-d H:i:s');
//$dms->insertvon = $user;
$dms->mimetype=$_FILES['file']['type'];
$dms->filename = $filename;
$dms->name = $_FILES['file']['name'];
if($dms->save(true))
{
$dms_id=$dms->dms_id;
}
else
{
echo 'Fehler beim Speichern der Daten';
$error = true;
}
}
else
{
echo 'Fehler beim Hochladen der Datei';
$error = true;
}
}
if(isset($_FILES['file']['tmp_name']) && !$error)
{
//Extension herausfiltern
$ext = explode('.',$_FILES['file']['name']);
$ext = mb_strtolower($ext[count($ext)-1]);
$filename = $_FILES['file']['tmp_name'];
//$fp = fopen($filename,'r');
//auslesen
//$content = fread($fp, filesize($filename));
//fclose($fp);
$akte = new akte();
if($akte->getAkten($_GET['person_id'], 'Lichtbil'))
{
if(count($akte->result)>0)
{
$akte = $akte->result[0];
$akte->new = false;
}
else
$akte->new = true;
}
else
{
$akte->new = true;
}
$dokument = new dokument();
$dokument->loadDokumenttyp($_REQUEST['dokumenttyp']);
$extension = end(explode(".",strtolower($_FILES['file']['name'])));
$akte->dokument_kurzbz = $_REQUEST['dokumenttyp'];
$akte->person_id = $_GET['person_id'];
//$akte->inhalt = base64_encode($content);
$akte->mimetype = $_FILES['file']['type'];
$akte->erstelltam = date('Y-m-d H:i:s');
$akte->gedruckt = false;
$akte->titel = $akte->titel = cutString($_FILES['file']['name'], 32, '~', true); // Filename gekuerzt auf 32 Zeichen;
$akte->bezeichnung = cutString($dokument->bezeichnung_mehrsprachig[DEFAULT_LANGUAGE], 32);
$akte->updateamum = date('Y-m-d H:i:s');
$akte->updatevon = $user;
$akte->insertamum = date('Y-m-d H:i:s');
$akte->nachgereicht = false;
$akte->anmerkung = '';
$akte->insertvon = $user;
$akte->uid = '';
$akte->dms_id = $dms_id;
$akte->new = true;
$akte->titel_intern = $_REQUEST['titel_intern'];
$akte->anmerkung_intern = $_REQUEST['anmerkung_intern'];
if(!$akte->save())
{
echo "<b>Fehler: $akte->errormsg</b>";
}
else
{
// Bei erfolgreichem Upload wird die Ansicht im FAS refresht
echo "<b>Erfolgreich gespeichert</b>
<script>
window.opener.InteressentDokumentTreeNichtabgegebenDatasourceRefresh();
window.opener.InteressentDokumentTreeAbgegebenDatasourceRefresh();
window.close();
</script>";
}
}
}
if(isset($_GET['person_id']))
{
$dokument = new dokument();
$dokument->getAllDokumente('Zeugnis');
echo " <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<link href='../skin/style.css.php' rel='stylesheet' type='text/css'>
<link rel='stylesheet' href='../skin/jquery.css' type='text/css'/>
</head>
<body style='padding:10px;'>
<h1>Upload Dokumente</h1>
<form method='POST' enctype='multipart/form-data' action='$PHP_SELF?person_id=".$_GET['person_id']."'>
<table>
<tr>
<td align='right'>Dokument:</td>
<td><input type='file' name='file' /></td>
</tr>
<tr>
<td align='right'>Typ:</td>
<td><SELECT style='width:300px' name='dokumenttyp'>";
foreach ($dokument->result as $dok)
{
$onclick="document.getElementById('titel_intern').value='".$dok->dokument_kurzbz."';";
if(isset($_GET['dokument_kurzbz']) && $_GET['dokument_kurzbz']==$dok->dokument_kurzbz)
$selected='selected';
else
$selected='';
echo '<option value="'.$dok->dokument_kurzbz.'" onclick="'.$onclick.'" '.$selected.'>'.$dok->bezeichnung."</option>\n";
}
echo " <tr>
<td align='right'>Titel:</td><td><input size='45' maxlength='32' type='text' name='titel_intern' id='titel_intern' length='35' ></td>
</tr>
<tr>
<td align='right'>Anmerkung:</td><td><textarea name='anmerkung_intern' cols='45' id='anmerkung_intern'></textarea></td>
</tr>
<tr>
<td><input type='hidden' name='kategorie_kurzbz' id='kategorie_kurzbz' value='Akte'>
<input type='hidden' name='fileupload' id='fileupload'></td>
<td><input type='submit' name='submitbild' value='Upload'></td>
</tr></table></form></body></html>";
}
else
{
echo "Es wurde keine Person_id angegeben";
}
?>
</body>
</html>
+53 -57
View File
@@ -22,7 +22,7 @@
require_once('../config/vilesci.config.inc.php');
require_once('../include/functions.inc.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/dms.class.php');
require_once('../include/dms.class.php');
require_once('../include/notiz.class.php');
header("Content-Type: text/html; charset=utf-8");
@@ -41,68 +41,64 @@ $dokument_kurzbz = isset($_REQUEST['dokument_kurzbz'])?$_REQUEST['dokument_kurzb
if(isset($_POST['fileupload']))
{
$error = false;
// dms Eintrag anlegen
if(isset($_GET['notiz_id']))
{
$ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
$filename = uniqid();
$filename.=".".$ext;
$uploadfile = DMS_PATH.$filename;
$error = false;
// dms Eintrag anlegen
if(isset($_GET['notiz_id']))
{
$ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
$filename = uniqid();
$filename.=".".$ext;
$uploadfile = DMS_PATH.$filename;
if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))
{
if(!chgrp($uploadfile,'dms'))
echo 'CHGRP failed';
if(!chmod($uploadfile, 0774))
echo 'CHMOD failed';
exec('sudo chown wwwrun '.$uploadfile);
if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))
{
$dms = new dms();
if(!$dms->setPermission($uploadfile))
echo $dms->errormsg;
$dms = new dms();
$dms->version='0';
$dms->kategorie_kurzbz=$kategorie_kurzbz;
$dms->insertamum=date('Y-m-d H:i:s');
$dms->insertvon = $user;
$dms->mimetype=$_FILES['file']['type'];
$dms->filename = $filename;
$dms->name = $_FILES['file']['name'];
$dms->beschreibung = $_POST['anmerkung_intern'];
$dms->version='0';
$dms->kategorie_kurzbz=$kategorie_kurzbz;
$dms->insertamum=date('Y-m-d H:i:s');
$dms->insertvon = $user;
$dms->mimetype=$_FILES['file']['type'];
$dms->filename = $filename;
$dms->name = $_FILES['file']['name'];
$dms->beschreibung = $_POST['anmerkung_intern'];
if($dms->save(true))
{
$dms_id=$dms->dms_id;
$notiz = new notiz($_GET['notiz_id']);
if(!$notiz->saveDokument($dms_id))
{
echo 'Fehler beim Speichern des Dokuments';
$error = true;
}
if($dms->save(true))
{
$dms_id=$dms->dms_id;
$notiz = new notiz($_GET['notiz_id']);
if(!$notiz->saveDokument($dms_id))
{
echo 'Fehler beim Speichern des Dokuments';
$error = true;
}
else
{
echo '<script>window.opener.NotizDokumentUploadScope.RefreshNotizBlocking();window.opener.NotizDokumentUploadScope.selectItem();window.close();</script>';
}
}
else
{
echo 'Fehler beim Speichern der Daten';
$error = true;
}
}
else
{
echo 'Fehler beim Hochladen der Datei';
$error = true;
}
}
else
{
echo 'Es muss eine Notiz ausgewaehlt werden';
$error = true;
}
}
else
{
echo 'Fehler beim Speichern der Daten';
$error = true;
}
}
else
{
echo 'Fehler beim Hochladen der Datei';
$error = true;
}
}
else
{
echo 'Es muss eine Notiz ausgewaehlt werden';
$error = true;
}
}
if(isset($_GET['notiz_id']))
@@ -113,7 +109,7 @@ if(isset($_GET['notiz_id']))
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<link href='../skin/style.css.php' rel='stylesheet' type='text/css'>
<link rel='stylesheet' href='../skin/jquery.css' type='text/css'/>
</head>
</head>
<body style='padding:10px;'>
<h1>Upload Dokumente</h1>
<form method='POST' enctype='multipart/form-data' action='$PHP_SELF?notiz_id=".$_GET['notiz_id']."'>
@@ -122,8 +118,8 @@ if(isset($_GET['notiz_id']))
<td align='right'>Dokument:</td>
<td><input type='file' name='file' /></td>
</tr>";
echo " <tr>
echo " <tr>
<td align='right'>Anmerkung:</td><td><textarea name='anmerkung_intern' cols='45' id='anmerkung_intern'></textarea></td>
</tr>
<tr>
+247 -223
View File
File diff suppressed because it is too large Load Diff
-254
View File
@@ -1,254 +0,0 @@
<?php
/* Copyright (C) 2012 FH Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
*/
/**
* Webdav Directory fuer DMS
*/
require_once(dirname(__FILE__).'/../include/dms.class.php');
require_once(dirname(__FILE__).'/../include/benutzerberechtigung.class.php');
class DMSDirectory extends Sabre_DAV_Collection
{
private $myPath;
private $kategorie_kurzbz;
private $kategorie_bezeichnung;
private $auth;
function __construct($myPath, $auth=null)
{
if($myPath=='')
{
$this->kategorie_kurzbz=null;
$this->kategorie_bezeichnung='';
$this->myPath='/';
}
else
{
$this->myPath = $myPath;
//KategorieKurzbz ermitteln
$this->kategorie_kurzbz = $this->getKategorie($myPath);
//Kategorie Bezeichnung ermitteln
$this->kategorie_bezeichnung = mb_substr($myPath,mb_strrpos($myPath,"/"));
}
$this->auth = $auth;
}
function getUser()
{
return $this->auth->getCurrentUser();
}
/**
* ermittelt die Kategorie Kurzbz aus dem Pfadnamen
*
*/
function getKategorie($path)
{
$parts = explode("/",$path);
$parent = null;
foreach($parts as $kat)
{
$dms = new dms();
$dms->getKategorieFromBezeichnung($kat, $parent);
if(isset($dms->result[0]))
$parent = $dms->result[0]->kategorie_kurzbz;
//else
// error_log("error katbezsearch kat: $kat parent: $parent");
}
return $parent;
}
/**
* Liefert die Kindelemente des Ordners / der Kategorie
*/
function getChildren()
{
$dms = new dms();
//Kategorien holen
$dms->getKategorie($this->kategorie_kurzbz);
$children = array();
// Loop through the directory, and create objects for each node
foreach($dms->result as $row)
{
if($dms->isBerechtigtKategorie($row->kategorie_kurzbz, $this->getUser()))
$children[] = $this->getChild($row->bezeichnung);
}
if($this->kategorie_kurzbz!='')
{
//Dokumente holen
$dms->getDocuments($this->kategorie_kurzbz);
foreach($dms->result as $row)
{
if(!$dms->isLocked($row->dms_id) || $dms->isBerechtigt($row->dms_id, $this->getUser()))
{
$children[] = $this->getChild($row->name);
}
}
}
return $children;
}
/**
* Holt das Objekt mit dem entsprechenden Namen
*/
function getChild($name)
{
if($name!='')
{
$dms = new dms();
if($dms->getDocumentFromName($name, $this->kategorie_kurzbz) && count($dms->result)>0)
return new DMSFile($this->myPath.'/'.$name, $this->auth);
elseif($dms->getKategorieFromBezeichnung($name, $this->kategorie_kurzbz) && count($dms->result)>0)
return new DMSDirectory($this->myPath.'/'.$name, $this->auth);
else
{
// We have to throw a FileNotFound exception if the file didn't exist
throw new Sabre_DAV_Exception_FileNotFound('The file with name: ' . $name . ' could not be found');
}
}
else
return new DMSDirectory($this->myPath.'/'.$name,$this->auth);
}
/**
* Prueft ob ein Kindelement mit dem Namen existiert
*/
function childExists($name)
{
$dms = new dms();
if($dms->getDocumentFromName($name, $this->kategorie_kurzbz) && count($dms->result)>0)
return true;
elseif($dms->getKategorieFromBezeichnung($name, $this->kategorie_kurzbz) && count($dms->result)>0)
return true;
else
return false;
}
/**
* Liefert den Namen der Kategorie / des Ordners
*/
function getName()
{
return $this->kategorie_bezeichnung;
}
/**
* Loescht die Kategorie / den Ordner
*/
function delete()
{
$dms = new dms();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($this->getUser());
if($rechte->isBerechtigt('basis/dms',null, 'suid'))
{
if(!$dms->deleteKategorie($this->kategorie_kurzbz))
throw new Sabre_DAV_Exception_MethodNotAllowed('Failed '.$dms->errormsg);
}
else
throw new Sabre_DAV_Exception_MethodNotAllowed('Keine Berechtigung');
}
/**
* Aendert den Namen einer Kategorie
* @oaram $newName
*/
function setName($newName)
{
$dms = new dms();
if($dms->loadKategorie($this->kategorie_kurzbz))
{
$dms->bezeichnung = $newName;
$dms->kategorie_kurzbz = $newName;
$dms->beschreibung = $newName;
$this->kategorie_bezeichnung = $newName;
if(!$dms->saveKategorie(false))
{
throw new Sabre_DAV_Exception_FileNotFound('Rename Failed');
}
}
else
{
throw new Sabre_DAV_Exception_FileNotFound('Directory not found');
}
}
/**
* Erstellt eine neue Datei
*/
function createFile($name, $data=null)
{
$dms = new dms();
$pos = mb_strrpos($name,'.')+1;
if($pos>1)
$ext = '.'.mb_substr($name, $pos);
else
$ext ='';
$filename=uniqid().$ext;
$dms->version='0';
$dms->kategorie_kurzbz=$this->kategorie_kurzbz;
$dms->insertamum=date('Y-m-d H:i:s');
$dms->insertvon = $this->getUser();
//$dms->mimetype= mime_content_type(IMPORT_PATH.$importFile);
$dms->filename = $filename;
$dms->name = $name;
if($dms->save(true))
{
file_put_contents(DMS_PATH.$filename, $data);
if(!chgrp(DMS_PATH.$filename,'dms'))
echo 'CHGRP failed';
if(!chmod(DMS_PATH.$filename, 0774))
echo 'CHMOD failed';
exec('sudo chown wwwrun '.$filename);
}
else
throw new Sabre_DAV_Exception_MethodNotAllowed('Failed '.$dms->errormsg);
}
/**
* Erstellt ein neues Directory / Kategorie
* @param name Name des Ordners
*/
function CreateDirectory($name)
{
$dms = new dms();
if(!$dms->loadKategorie($name))
{
$dms->kategorie_kurzbz=$name;
$dms->bezeichnung = $name;
$dms->beschreibung = $name;
$dms->parent_kategorie_kurzbz = $this->kategorie_kurzbz;
if(!$dms->saveKategorie(true))
{
throw new Sabre_DAV_Exception_MethodNotAllowed('Failed '.$dms->errormsg);
}
}
else
{
throw new Sabre_DAV_Exception_MethodNotAllowed('Directory already exists');
}
}
}
?>
-229
View File
@@ -1,229 +0,0 @@
<?php
/* Copyright (C) 2012 FH Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
*/
/**
* Webdav File fuer DMS
*/
require_once(dirname(__FILE__).'/../include/dms.class.php');
require_once(dirname(__FILE__).'/../include/datum.class.php');
require_once(dirname(__FILE__).'/../include/benutzerberechtigung.class.php');
class DMSFile extends Sabre_DAV_File
{
private $myPath;
private $kategorie_kurzbz;
private $name;
private $dms_id;
private $auth;
function __construct($myPath, $auth=null)
{
$this->myPath = $myPath;
//Dateinamen ermitteln
$this->name = mb_substr($myPath, mb_strrpos($myPath,"/")+1);
//Kategorie ermitteln
$katpath = mb_substr($myPath,0,mb_strrpos($myPath,"/"));
$this->kategorie_kurzbz = $this->getKategorie($katpath);
//DMS ID ermitteln
$dms = new dms();
$dms->getDocumentFromName($this->name, $this->kategorie_kurzbz);
if(isset($dms->result[0]))
$this->dms_id = $dms->result[0]->dms_id;
//else
// error_log("fileNotFound $this->name in kat $this->kategorie_kurzbz");
$this->auth = $auth;
}
/**
* Liefert den eingeloggten User
*/
function getUser()
{
return $this->auth->getCurrentUser();
}
/**
* Parst die Kategorie aus dem Pfad
*/
function getKategorie($path)
{
$parts = explode($path, "/");
$parent = null;
foreach($parts as $kat)
{
$dms = new dms();
$dms->getKategorieFromBezeichnung($kat, $parent);
if(isset($dms->result[0]))
$parent = $dms->result[0]->kategorie_kurzbz;
}
return $parent;
}
/**
* Liefert den Dateinamen
*/
function getName()
{
return $this->name;
}
/**
* Liefert die Datei
*/
function get()
{
$dms = new dms();
$dms->load($this->dms_id);
return fopen(DMS_PATH.$dms->filename,'r');
}
/**
* Liefert die Dateigroesse
*/
function getSize()
{
$dms = new dms();
$dms->load($this->dms_id);
return filesize(DMS_PATH.$dms->filename);
}
/**
* Liefert einen eindeutige Identifier fuer die Datei
*/
function getETag()
{
$dms = new dms();
$dms->load($this->dms_id);
return '"' . md5_file(DMS_PATH.$dms->filename) . '"';
}
/**
* Entfernt eine Datei
*/
function delete()
{
$dms = new dms();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($this->getUser());
if($rechte->isBerechtigt('basis/dms',null,'suid'))
{
$dms->load($this->dms_id);
if(!$dms->deleteDms($this->dms_id))
{
throw new Sabre_DAV_Exception_FileNotFound('Failed '.$dms->errormsg);
}
else
{
unlink(DMS_PATH.$dms->filename);
}
}
else
{
throw new Sabre_DAV_Exception_MethodNotAllowed('Keine Berechtigung');
}
}
/**
* Benennt eine Datei um
*/
function setName($newName)
{
$dms = new dms();
if($dms->load($this->dms_id))
{
$dms->updateamum = date('Y-m-d H:i:s');
$dms->updatevon = $this->getUser();
$dms->name = $newName;
if(!$dms->save(false))
{
throw new Sabre_DAV_Exception_FileNotFound('Failed '.$dms->errormsg);
}
else
$this->name = $newName;
}
else
{
throw new Sabre_DAV_Exception_FileNotFound('Failed '.$dms->errormsg);
}
}
/**
* Liefert Timestamp der letzten Aenderung
*/
function getLastModified()
{
$dms = new dms();
$dms->load($this->dms_id);
$datum = new datum();
if($dms->updateamum!='')
$ts = $datum->mktime_fromtimestamp($dms->updateamum);
else
$ts = $datum->mktime_fromtimestamp($dms->insertamum);
return $ts;
}
/**
* Speichert Daten in eine Datei
* @param $data
*/
function put($data)
{
$dms = new dms();
if($dms->load($this->dms_id))
{
$dms->version = $dms->version++;
$pos = mb_strrpos($dms->name,'.')+1;
if($pos>1)
$ext = '.'.mb_substr($dms->name, $pos);
else
$ext ='';
$filename=uniqid().$ext;
$dms->version++;
$dms->insertamum=date('Y-m-d H:i:s');
$dms->insertvon = $this->getUser();
$dms->filename = $filename;
if($dms->save(true))
{
if(file_put_contents(DMS_PATH.$filename, $data))
{
if(!chgrp(DMS_PATH.$filename,'dms'))
echo 'CHGRP failed';
if(!chmod(DMS_PATH.$filename, 0774))
echo 'CHMOD failed';
exec('sudo chown wwwrun '.$filename);
$dms->save(false);
}
else
throw new Sabre_DAV_Exception_FileNotFound('Failed to Write File');
}
else
{
throw new Sabre_DAV_Exception_FileNotFound('Failed '.$dms->errormsg);
}
}
}
}
?>
-64
View File
@@ -1,64 +0,0 @@
<?php
/* Copyright (C) 2012 FH Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
*/
/**
* Webdav Server fuer DMS-Zugriff
*/
require_once('../config/cis.config.inc.php');
require_once('../include/sabredav/lib/Sabre/autoload.php');
//require_once('../../../sabredav161/SabreDAV/lib/Sabre/autoload.php');
require_once('DMSdirectory.class.php');
require_once('DMSfile.class.php');
require_once('auth.class.php');
$authBackend = new MyAuth();
// Creating the plugin. We're assuming that the realm
// name is called 'SabreDAV'.
$authPlugin = new Sabre_DAV_Auth_Plugin($authBackend,'FHTW');
// Change public to something else, if you are using a different directory for your files
$rootDirectory = new DMSDirectory('',$authPlugin);
// The server object is responsible for making sense out of the WebDAV protocol
$server = new Sabre_DAV_Server($rootDirectory);
// Adding the plugin to the server
$server->addPlugin($authPlugin);
// If your server is not on your webroot, make sure the following line has the correct information
// $server->setBaseUri('/~evert/mydavfolder'); // if its in some kind of home directory
// $server->setBaseUri('/dav/index.php/'); // if you can't use mod_rewrite, use index.php as a base uri
// $server->setBaseUri('/'); // ideally, SabreDAV lives on a root directory with mod_rewrite sending every request to index.php
$path = str_replace($_SERVER['DOCUMENT_ROOT'],'',__FILE__).'/';
$server->setBaseUri($path);
// The lock manager is reponsible for making sure users don't overwrite each others changes. Change 'data' to a different
// directory, if you're storing your data somewhere else.
$lockBackend = new Sabre_DAV_Locks_Backend_File('data/locks');
$lockPlugin = new Sabre_DAV_Locks_Plugin($lockBackend);
$server->addPlugin($lockPlugin);
//GUI fuer Browser
$browser = new Sabre_DAV_Browser_Plugin();
$server->addPlugin($browser);
// All we need to do now, is to fire up the server
$server->exec();
?>