file containing meta data can be specified

This commit is contained in:
Uwe Steinmann 2019-07-30 06:34:16 +02:00
parent 1de9ed37d5
commit 3d5812c86d
2 changed files with 45 additions and 4 deletions

View File

@ -48,6 +48,43 @@ if(strpos($dirname, realpath($settings->_dropFolderDir.'/'.$user->getLogin().'/'
UI::exitError(getMLText("admin_tools"),getMLText("invalid_dropfolder_folder"));
}
$metadata = array();
if(!empty($_GET["dropfolderfileform2"])) {
$metadatafile = realpath($settings->_dropFolderDir.'/'.$user->getLogin()."/".$_GET["dropfolderfileform2"]);
$csvdelim = ';';
$csvencl = '"';
if($fp = fopen($metadatafile, 'r')) {
$colmap = array();
if($header = fgetcsv($fp, 0, $csvdelim, $csvencl)) {
print_r($header);
foreach($header as $i=>$colname) {
if(in_array($colname, array('filename', 'category'))) {
$colmap[$colname] = $i;
}
}
}
if(count($colmap) > 1) {
$nameprefix = dirname($dirname).'/';
$allcats = $dms->getDocumentCategories();
$catids = array();
foreach($allcats as $cat)
$catids[$cat->getName()] = $cat;
while(!feof($fp)) {
if($data = fgetcsv($fp, 0, $csvdelim, $csvencl)) {
$metadata[$nameprefix.$data[$colmap['filename']]] = array('category'=>array());
if($data[$colmap['category']]) {
$kk = explode(',', $data[$colmap['category']]);
foreach($kk as $k) {
if(isset($catids[$k]))
$metadata[$nameprefix.$data[$colmap['filename']]]['category'][] = $catids[$k];
}
}
}
}
}
}
}
$setfiledate = false;
if(isset($_GET['setfiledate']) && $_GET["setfiledate"]) {
$setfiledate = true;
@ -58,7 +95,7 @@ if(isset($_GET['setfolderdate']) && $_GET["setfolderdate"]) {
$setfolderdate = true;
}
function import_folder($dirname, $folder, $setfiledate, $setfolderdate) { /* {{{ */
function import_folder($dirname, $folder, $setfiledate, $setfolderdate, $metadata) { /* {{{ */
global $user, $doccount, $foldercount;
$d = dir($dirname);
@ -87,7 +124,7 @@ function import_folder($dirname, $folder, $setfiledate, $setfolderdate) { /* {{{
// echo $mimetype." - ".$filetype." - ".$path."\n";
if($res = $folder->addDocument($name, $comment, $expires, $user, $keywords,
$categories, $filetmp, $name,
$metadata[$path]['category'], $filetmp, $name,
$filetype, $mimetype, $sequence, $reviewers,
$approvers, $reqversion, $version_comment)) {
$doccount++;
@ -108,7 +145,7 @@ function import_folder($dirname, $folder, $setfiledate, $setfolderdate) { /* {{{
if($setfolderdate) {
$newfolder->setDate(filemtime($path));
}
if(!import_folder($path, $newfolder, $setfiledate, $setfolderdate))
if(!import_folder($path, $newfolder, $setfiledate, $setfolderdate, $metadata))
return false;
} else {
return false;
@ -125,7 +162,7 @@ if($newfolder = $folder->addSubFolder($_GET["dropfolderfileform1"], '', $user, 1
if($setfolderdate) {
$newfolder->setDate(filemtime($dirname));
}
if(!import_folder($dirname, $newfolder, $setfiledate, $setfolderdate))
if(!import_folder($dirname, $newfolder, $setfiledate, $setfolderdate, $metadata))
$session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('error_importfs')));
else {
if(isset($_GET['remove']) && $_GET["remove"]) {

View File

@ -59,6 +59,10 @@ class SeedDMS_View_ImportFS extends SeedDMS_Bootstrap_Style {
getMLText("dropfolder_folder"),
$this->getDropFolderChooserHtml("form1", "", 1)
);
$this->formField(
getMLText("dropfolder_metadata"),
$this->getDropFolderChooserHtml("form2", "", 0)
);
$this->formField(
getMLText("removeFolderFromDropFolder"),
array(