diff --git a/op/op.ImportFS.php b/op/op.ImportFS.php index de5f402c9..2e51d36a8 100644 --- a/op/op.ImportFS.php +++ b/op/op.ImportFS.php @@ -48,6 +48,33 @@ if(strpos($dirname, realpath($settings->_dropFolderDir.'/'.$user->getLogin().'/' UI::exitError(getMLText("admin_tools"),getMLText("invalid_dropfolder_folder")); } +function getBaseData($colname, $coldata, $objdata) { /* {{{ */ + $objdata[$colname] = $coldata; + return $objdata; +} /* }}} */ + +function getAttributeData($attrdef, $coldata, $objdata) { /* {{{ */ + $objdata['attributes'][$attrdef->getID()] = $coldata; + return $objdata; +} /* }}} */ + +function getCategoryData($colname, $coldata, $objdata) { /* {{{ */ + global $catids; + $kk = explode(',', $coldata); + foreach($kk as $k) { + if(isset($catids[$k])) + $objdata['category'][] = $catids[$k]; + } + return $objdata; +} /* }}} */ + +function getUserData($colname, $coldata, $objdata) { /* {{{ */ + global $userids; + if(isset($userids[$coldata])) + $objdata['owner'] = $userids[$coldata]; + return $objdata; +} /* }}} */ + $metadata = array(); if(!empty($_GET["dropfolderfileform2"])) { $metadatafile = realpath($settings->_dropFolderDir.'/'.$user->getLogin()."/".$_GET["dropfolderfileform2"]); @@ -58,32 +85,69 @@ if(!empty($_GET["dropfolderfileform2"])) { 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; + $colname = trim($colname); + if(in_array($colname, array('category'))) { + $colmap[$i] = array("getCategoryData", $colname); + } elseif(in_array($colname, array('owner'))) { + $colmap[$i] = array("getUserData", $colname); + } elseif(in_array($colname, array('filename', 'category', 'name', 'comment'))) { + $colmap[$i] = array("getBaseData", $colname); + } elseif(substr($colname, 0, 5) == 'attr:') { + $kk = explode(':', $colname, 2); + if(($attrdef = $dms->getAttributeDefinitionByName($kk[1])) || ($attrdef = $dms->getAttributeDefinition((int) $kk[1]))) { + $colmap[$i] = array("getAttributeData", $attrdef); + } } } } + echo "
";print_r($colmap);echo "
"; if(count($colmap) > 1) { $nameprefix = dirname($dirname).'/'; $allcats = $dms->getDocumentCategories(); $catids = array(); foreach($allcats as $cat) $catids[$cat->getName()] = $cat; + $allusers = $dms->getAllUsers(); + $userids = array(); + foreach($allusers as $muser) + $userids[$muser->getLogin()] = $muser; while(!feof($fp)) { if($data = fgetcsv($fp, 0, $csvdelim, $csvencl)) { - $metadata[$nameprefix.$data[$colmap['filename']]] = array('category'=>array()); + $mi = $nameprefix.$data[$colmap['filename']]; + $metadata[$mi] = array('category'=>array()); + $md = array(); + foreach($data as $i=>$coldata) { + if(isset($colmap[$i])) { + $md = call_user_func($colmap[$i][0], $colmap[$i][1], $coldata, $md); + } + } + $metadata[$mi] = $md; + /* 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]; + $metadata[$mi]['category'][] = $catids[$k]; } } + if($data[$colmap['owner']]) { + if(isset($userids[trim($data[$colmap['owner']])])) + $metadata[$mi]['owner'] = $userids[trim($data[$colmap['owner']])]; + } + if($data[$colmap['name']]) { + $metadata[$mi]['name'] = $data[$colmap['name']]; + } + if($data[$colmap['comment']]) { + $metadata[$mi]['comment'] = $data[$colmap['comment']]; + } + */ } } } } } +echo "
";print_r($metadata);echo "
"; +exit; $setfiledate = false; if(isset($_GET['setfiledate']) && $_GET["setfiledate"]) {