diff --git a/SeedDMS_Core/Core/inc.ClassDMS.php b/SeedDMS_Core/Core/inc.ClassDMS.php index ce53de34c..0b50c1609 100644 --- a/SeedDMS_Core/Core/inc.ClassDMS.php +++ b/SeedDMS_Core/Core/inc.ClassDMS.php @@ -2062,6 +2062,34 @@ class SeedDMS_Core_DMS { } /* }}} */ + /** + * Returns document content which is duplicated + * + * This method is for finding document content which is available twice + * in the database. The checksum of a document content was introduced + * in version 4.0.0 of SeedDMS for finding duplicates. + */ + function getDuplicateDocumentContent() { /* {{{ */ + $queryStr = "SELECT a.*, b.id as dupid FROM tblDocumentContent a LEFT JOIN tblDocumentContent b ON a.checksum=b.checksum where a.id!=b.id ORDER by a.id"; + $resArr = $this->db->getResultArray($queryStr); + if (!$resArr) + return false; + + $versions = array(); + foreach($resArr as $row) { + $document = new $this->classnames['document']($row['document'], '', '', '', '', '', '', '', '', '', '', ''); + $document->setDMS($this); + $version = new $this->classnames['documentcontent']($row['id'], $document, $row['version'], $row['comment'], $row['date'], $row['createdBy'], $row['dir'], $row['orgFileName'], $row['fileType'], $row['mimeType'], $row['fileSize'], $row['checksum']); + if(!isset($versions[$row['dupid']])) { + $versions[$row['id']]['content'] = $version; + $versions[$row['id']]['duplicates'] = array(); + } else + $versions[$row['dupid']]['duplicates'][] = $version; + } + return $versions; + + } /* }}} */ + /** * Returns statitical information * diff --git a/out/out.ObjectCheck.php b/out/out.ObjectCheck.php index d4d16f42e..c0457c94b 100644 --- a/out/out.ObjectCheck.php +++ b/out/out.ObjectCheck.php @@ -62,10 +62,11 @@ $unlinkedfolders = $dms->checkFolders(); $unlinkeddocuments = $dms->checkDocuments(); $nofilesizeversions = $dms->getNoFileSizeDocumentContent(); $nochecksumversions = $dms->getNoChecksumDocumentContent(); +$duplicateversions = $dms->getDuplicateDocumentContent(); $rootfolder = $dms->getFolder($settings->_rootFolderID); $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); -$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'folder'=>$folder, 'unlinkedcontent'=>$unlinkedversions, 'unlinkedfolders'=>$unlinkedfolders, 'unlinkeddocuments'=>$unlinkeddocuments, 'nofilesizeversions'=>$nofilesizeversions, 'nochecksumversions'=>$nochecksumversions, 'unlink'=>$unlink, 'setfilesize'=>$setfilesize, 'setchecksum'=>$setchecksum, 'repair'=>$repair, 'rootfolder'=>$rootfolder)); +$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'folder'=>$folder, 'unlinkedcontent'=>$unlinkedversions, 'unlinkedfolders'=>$unlinkedfolders, 'unlinkeddocuments'=>$unlinkeddocuments, 'nofilesizeversions'=>$nofilesizeversions, 'nochecksumversions'=>$nochecksumversions, 'duplicateversions'=>$duplicateversions, 'unlink'=>$unlink, 'setfilesize'=>$setfilesize, 'setchecksum'=>$setchecksum, 'repair'=>$repair, 'rootfolder'=>$rootfolder)); if($view) { $view->show(); exit; diff --git a/views/bootstrap/class.ObjectCheck.php b/views/bootstrap/class.ObjectCheck.php index d3c87b68c..a312d972f 100644 --- a/views/bootstrap/class.ObjectCheck.php +++ b/views/bootstrap/class.ObjectCheck.php @@ -172,6 +172,7 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { $unlinkeddocuments = $this->params['unlinkeddocuments']; $nofilesizeversions = $this->params['nofilesizeversions']; $nochecksumversions = $this->params['nochecksumversions']; + $duplicateversions = $this->params['duplicateversions']; $repair = $this->params['repair']; $unlink = $this->params['unlink']; $setfilesize = $this->params['setfilesize']; @@ -340,6 +341,34 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { } } + $this->contentContainerEnd(); + + $this->contentHeading(getMLText("duplicate_content")); + $this->contentContainerStart(); + + if($duplicateversions) { + print "
".getMLText("document")." | \n"; + print "".getMLText("version")." | \n"; + print "".getMLText("original_filename")." | \n"; + print "".getMLText("mimetype")." | \n"; + print "|
---|---|---|---|---|
".$doc->getId()." | ".$version->getVersion()." | ".$version->getOriginalFileName()." | ".$version->getMimeType()." | "; + print ""; + foreach($rec['duplicates'] as $duplicate) { + print $duplicate->getVersion(); + } + print " | "; + print "