]\n";
echo "\n";
echo "Description:\n";
echo " This program creates an xml dump of the whole or parts of the dms.\n";
echo "\n";
echo "Options:\n";
echo " -h, --help: print usage information and exit.\n";
echo " -v, --version: print version and exit.\n";
echo " --config: set alternative config file.\n";
echo " --folder: set start folder.\n";
echo " --maxsize: maximum size of files to be included in output\n";
echo " (defaults to 100000)\n";
echo " --contentdir: directory where all document versions are stored\n";
echo " which are larger than maxsize.\n";
} /* }}} */
function wrapWithCData($text) { /* {{{ */
if(preg_match("/[<>&]/", $text))
return("");
else
return $text;
} /* }}} */
$version = "0.0.1";
$shortoptions = "hv";
$longoptions = array('help', 'version', 'skip-root', 'config:', 'folder:', 'maxsize:', 'contentdir:');
if(false === ($options = getopt($shortoptions, $longoptions))) {
usage();
exit(0);
}
/* Print help and exit */
if(isset($options['h']) || isset($options['help'])) {
usage();
exit(0);
}
/* Print version and exit */
if(isset($options['v']) || isset($options['verѕion'])) {
echo $version."\n";
exit(0);
}
/* Set alternative config file */
if(isset($options['config'])) {
$settings = new Settings($options['config']);
} else {
$settings = new Settings();
}
/* Set maximum size of files included in xml file */
if(isset($options['maxsize'])) {
$maxsize = intval($options['maxsize']);
} else {
$maxsize = 100000;
}
/* Set directory for file largen than maxsize */
if(isset($options['contentdir'])) {
if(file_exists($options['contentdir'])) {
$contentdir = $options['contentdir'];
if(substr($contentdir, -1, 1) != DIRECTORY_SEPARATOR)
$contentdir .= DIRECTORY_SEPARATOR;
} else {
echo "Directory ".$options['contentdir']." does not exists\n";
exit(1);
}
} else {
$contentdir = '';
}
if(isset($settings->_extraPath))
ini_set('include_path', $settings->_extraPath. PATH_SEPARATOR .ini_get('include_path'));
require_once("SeedDMS/Core.php");
if(isset($options['folder'])) {
$folderid = intval($options['folder']);
} else {
$folderid = $settings->_rootFolderID;
}
$skiproot = false;
if(isset($options['skip-root'])) {
$skiproot = true;
}
function tree($folder, $parent=null, $indent='', $skipcurrent=false) { /* {{{ */
global $index, $dms, $maxsize, $contentdir;
if(!$skipcurrent) {
echo $indent."getId()."\"";
if($parent)
echo " parent=\"".$parent->getID()."\"";
echo ">\n";
echo $indent." ".wrapWithCData($folder->getName())."\n";
echo $indent." ".date('c', $folder->getDate())."\n";
echo $indent." ".$folder->getDefaultAccess()."\n";
echo $indent." ".$folder->inheritsAccess()."\n";
echo $indent." ".$folder->getSequence()."\n";
echo $indent." ".wrapWithCData($folder->getComment())."\n";
echo $indent." ".$folder->getOwner()->getId()."\n";
if($attributes = $folder->getAttributes()) {
foreach($attributes as $attribute) {
$attrdef = $attribute->getAttributeDefinition();
echo $indent." getID()."\">".$attribute->getValue()."\n";
}
}
if($folder->inheritsAccess()) {
echo $indent." \n";
} else {
echo $indent." \n";
$accesslist = $folder->getAccessList();
foreach($accesslist['users'] as $acl) {
echo $indent." getUser();
echo " user=\"".$user->getID()."\"";
echo " mode=\"".$acl->getMode()."\"";
echo "/>\n";
}
foreach($accesslist['groups'] as $acl) {
echo $indent." getGroup();
echo $indent." group=\"".$group->getID()."\"";
echo $indent." mode=\"".$acl->getMode()."\"";
echo "/>\n";
}
echo $indent." \n";
}
echo $indent."\n";
$parentfolder = $folder;
} else {
$parentfolder = null;
}
$subfolders = $folder->getSubFolders();
if($subfolders) {
foreach($subfolders as $subfolder) {
tree($subfolder, $parentfolder, $indent);
}
}
$documents = $folder->getDocuments();
if($documents) {
foreach($documents as $document) {
$owner = $document->getOwner();
echo $indent."getId()."\" folder=\"".$folder->getID()."\"";
if($document->isLocked())
echo " locked=\"true\"";
echo ">\n";
echo $indent." ".wrapWithCData($document->getName())."\n";
echo $indent." ".date('c', $document->getDate())."\n";
if($document->getExpires())
echo $indent." ".date('c', $document->getExpires())."\n";
echo $indent." ".$owner->getId()."\n";
if($document->getKeywords())
echo $indent." ".wrapWithCData($document->getKeywords())."\n";
echo $indent." ".$document->getDefaultAccess()."\n";
echo $indent." ".$document->inheritsAccess()."\n";
echo $indent." ".$document->getSequence()."\n";
if($document->isLocked()) {
$user = $document->getLockingUser();
echo $indent." ".$user->getId()."\n";
}
echo $indent." ".wrapWithCData($document->getComment())."\n";
if($attributes = $document->getAttributes()) {
foreach($attributes as $attribute) {
$attrdef = $attribute->getAttributeDefinition();
echo $indent." getID()."\">".$attribute->getValue()."\n";
}
}
/* Check if acl is not inherited */
if(!$document->inheritsAccess()) {
echo $indent." \n";
$accesslist = $document->getAccessList();
foreach($accesslist['users'] as $acl) {
echo $indent." getUser();
echo " user=\"".$user->getID()."\"";
echo " mode=\"".$acl->getMode()."\"";
echo "/>\n";
}
foreach($accesslist['groups'] as $acl) {
echo $indent." getGroup();
echo $indent." group=\"".$group->getID()."\"";
echo $indent." mode=\"".$acl->getMode()."\"";
echo "/>\n";
}
echo $indent." \n";
}
$cats = $document->getCategories();
if($cats) {
echo $indent." \n";
foreach($cats as $cat) {
echo $indent." getId()."\"/>\n";
}
echo $indent." \n";
}
$versions = $document->getContent();
if($versions) {
echo $indent." \n";
foreach($versions as $version) {
$approvalStatus = $version->getApprovalStatus(30);
$reviewStatus = $version->getReviewStatus();
$owner = $version->getUser();
echo $indent." getVersion()."\">\n";
echo $indent." ".$version->getMimeType()."\n";
echo $indent." ".date('c', $version->getDate())."\n";
echo $indent." ".$version->getFileType()."\n";
echo $indent." ".wrapWithCData($version->getComment())."\n";
echo $indent." ".$owner->getId()."\n";
echo $indent." ".wrapWithCData($version->getOriginalFileName())."\n";
if($attributes = $version->getAttributes()) {
foreach($attributes as $attribute) {
$attrdef = $attribute->getAttributeDefinition();
echo $indent." getID()."\">".$attribute->getValue()."\n";
}
}
if($approvalStatus) {
echo $indent." \n";
$curapprovalid = 0;
foreach($approvalStatus as $a) {
if($a['approveID'] != $curapprovalid) {
if($curapprovalid != 0) {
echo $indent." \n";
}
echo $indent." \n";
echo $indent." ".$a['type']."\n";
echo $indent." ".$a['required']."\n";
}
echo $indent." \n";
echo $indent." ".$a['userID']."\n";
echo $indent." ".$a['status']."\n";
echo $indent." ".wrapWithCData($a['comment'])."\n";
echo $indent." ".$a['date']."\n";
echo $indent." \n";
// echo $indent." \n";
$curapprovalid = $a['approveID'];
}
if($curapprovalid != 0)
echo $indent." \n";
echo $indent." \n";
}
if($reviewStatus) {
echo $indent." \n";
$curreviewid = 0;
foreach($reviewStatus as $a) {
if($a['reviewID'] != $curreviewid) {
if($curreviewid != 0) {
echo $indent." \n";
}
echo $indent." \n";
echo $indent." ".$a['type']."\n";
echo $indent." ".$a['required']."\n";
}
echo $indent." \n";
echo $indent." ".$a['userID']."\n";
echo $indent." ".$a['status']."\n";
echo $indent." ".wrapWithCData($a['comment'])."\n";
echo $indent." ".$a['date']."\n";
echo $indent." \n";
// echo $indent." \n";
$curreviewid = $a['reviewID'];
}
if($curreviewid != 0)
echo $indent." \n";
echo $indent." \n";
}
if(file_exists($dms->contentDir . $version->getPath())) {
echo $indent." contentDir . $version->getPath())."\"";
if(filesize($dms->contentDir . $version->getPath()) < $maxsize) {
echo ">\n";
echo chunk_split(base64_encode(file_get_contents($dms->contentDir . $version->getPath())), 76, "\n");
echo $indent." \n";
} else {
echo " fileref=\"".$document->getID()."-".$version->getVersion().$version->getFileType()."\" />\n";
if($contentdir) {
copy($dms->contentDir . $version->getPath(), $contentdir.$document->getID()."-".$version->getVersion().$version->getFileType());
}
}
} else {
echo $indent." \n";
}
echo $indent." \n";
}
echo $indent." \n";
}
$files = $document->getDocumentFiles();
if($files) {
echo $indent." \n";
foreach($files as $file) {
$owner = $file->getUser();
echo $indent." getId()."\">\n";
echo $indent." ".wrapWithCData($file->getName())."\n";
echo $indent." ".$file->getMimeType()."\n";
echo $indent." ".date('c', $file->getDate())."\n";
echo $indent." ".wrapWithCData($file->getFileType())."\n";
echo $indent." ".$owner->getId()."\n";
echo $indent." ".wrapWithCData($file->getComment())."\n";
echo $indent." ".wrapWithCData($file->getOriginalFileName())."\n";
if(file_exists($dms->contentDir . $file->getPath())) {
echo $indent." contentDir . $file->getPath())."\"";
if(filesize($dms->contentDir . $file->getPath()) < $maxsize) {
echo ">\n";
echo chunk_split(base64_encode(file_get_contents($dms->contentDir . $file->getPath())), 76, "\n");
echo $indent." \n";
} else {
echo " fileref=\"".$document->getID()."-A-".$file->getID().$file->getFileType()."\" />\n";
if($contentdir) {
copy($dms->contentDir . $version->getPath(), $contentdir.$document->getID()."-A-".$file->getID().$file->getFileType());
}
}
} else {
echo $indent." \n";
}
echo $indent." \n";
}
echo $indent." \n";
}
$links = $document->getDocumentLinks();
if($links) {
echo $indent." \n";
foreach($links as $link) {
$owner = $link->getUser();
$target = $link->getTarget();
echo $indent." getId()."\">\n";
echo $indent." ".$target->getId()."\n";
echo $indent." ".$owner->getId()."\n";
echo $indent." ".$link->isPublic()."\n";
echo $indent." \n";
}
echo $indent." \n";
}
$notifications = $document->getNotifyList();
if($notifications) {
if($notifications['groups'] || $notifications['users']) {
echo $indent." \n";
if($notifications['users']) {
foreach($notifications['users'] as $user) {
echo $indent." getID()."\" />\n";
}
}
if($notifications['groups']) {
foreach($notifications['groups'] as $group) {
echo $indent." getID()."\" />\n";
}
}
echo $indent." \n";
}
}
echo $indent."\n";
}
}
} /* }}} */
$db = new SeedDMS_Core_DatabaseAccess($settings->_dbDriver, $settings->_dbHostname, $settings->_dbUser, $settings->_dbPass, $settings->_dbDatabase);
$db->connect() or die ("Could not connect to db-server \"" . $settings->_dbHostname . "\"");
$dms = new SeedDMS_Core_DMS($db, $settings->_contentDir.$settings->_contentOffsetDir);
if(!$settings->_doNotCheckDBVersion && !$dms->checkVersion()) {
echo "Database update needed.";
exit;
}
$dms->setRootFolderID($settings->_rootFolderID);
echo "\n";
echo "getDBVersion(), 1, 3))."\">\n";
$users = $dms->getAllUsers();
if($users) {
echo "\n";
foreach ($users as $user) {
echo " getId()."\">\n";
echo " ".wrapWithCData($user->getLogin())."\n";
echo " ".wrapWithCData($user->getPwd())."\n";
echo " ".wrapWithCData($user->getEmail())."\n";
echo " ".wrapWithCData($user->getFullName())."\n";
echo " ".wrapWithCData($user->getComment())."\n";
echo " ".$user->getLanguage()."\n";
echo " ".$user->getTheme()."\n";
echo " ".$user->getRole()."\n";
echo " ".$user->isHidden()."\n";
echo " ".$user->isDisabled()."\n";
echo " ".$user->getPwdExpiration()."\n";
if($image = $user->getImage()) {
echo " \n";
echo " ".$image['mimeType']."\n";
echo " ".base64_encode($image['image'])."\n";
echo " \n";
}
if($mreviewers = $user->getMandatoryReviewers()) {
echo " \n";
foreach($mreviewers as $mreviewer) {
if((int) $mreviewer['reviewerUserID'])
echo " \n";
elseif((int) $mreviewer['reviewerGroupID'])
echo " \n";
}
echo " \n";
}
if($mapprovers = $user->getMandatoryApprovers()) {
echo " \n";
foreach($mapprovers as $mapprover) {
if((int) $mapprover['approverUserID'])
echo " \n";
elseif((int) $mapprover['approverGroupID'])
echo " \n";
}
echo " \n";
}
echo " \n";
}
echo "\n";
}
$groups = $dms->getAllGroups();
if($groups) {
echo "\n";
foreach ($groups as $group) {
echo " getId()."\">\n";
echo " ".wrapWithCData($group->getName())."\n";
echo " ".wrapWithCData($group->getComment())."\n";
$users = $group->getUsers();
if($users) {
echo " \n";
foreach ($users as $user) {
echo " getId()."\"/>\n";
}
echo " \n";
}
echo " \n";
}
echo "\n";
}
$categories = $dms->getAllKeywordCategories();
if($categories) {
echo "\n";
foreach($categories as $category) {
$owner = $category->getOwner();
echo " getId()."\">\n";
echo " ".wrapWithCData($category->getName())."\n";
echo " ".$owner->getId()."\n";
if($keywords = $category->getKeywordLists()) {
echo " \n";
foreach($keywords as $keyword) {
echo " \n";
echo " ".wrapWithCData($keyword['keywords'])."\n";
echo " \n";
}
echo " \n";
}
echo " \n";
}
echo "\n";
}
$categories = $dms->getDocumentCategories();
if($categories) {
echo "\n";
foreach($categories as $category) {
echo " getId()."\">\n";
echo " ".wrapWithCData($category->getName())."\n";
echo " \n";
}
echo "\n";
}
$attrdefs = $dms->getAllAttributeDefinitions();
if($attrdefs) {
echo "\n";
foreach ($attrdefs as $attrdef) {
echo " getID()."\" objtype=\"";
switch($attrdef->getObjType()) {
case SeedDMS_Core_AttributeDefinition::objtype_all:
echo "all";
break;
case SeedDMS_Core_AttributeDefinition::objtype_folder:
echo "folder";
break;
case SeedDMS_Core_AttributeDefinition::objtype_document:
echo "document";
break;
case SeedDMS_Core_AttributeDefinition::objtype_documentcontent:
echo "documentcontent";
break;
}
echo "\">\n";
echo " ".$attrdef->getName()."\n";
echo " ".$attrdef->getMultipleValues()."\n";
echo " ".$attrdef->getValueSet()."\n";
echo " ".$attrdef->getType()."\n";
echo " ".$attrdef->getMinValues()."\n";
echo " ".$attrdef->getMaxValues()."\n";
echo " ".wrapWithCData($attrdef->getRegex())."\n";
echo " \n";
}
echo "\n";
}
$folder = $dms->getFolder($folderid);
if($folder) {
tree($folder, null, '', $skiproot);
}
echo "\n";
?>