mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-02-06 15:14:58 +00:00
add checking for duplicates
This commit is contained in:
parent
e996ecb2d7
commit
259303fff1
|
@ -2111,6 +2111,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
|
||||
*
|
||||
|
|
|
@ -60,10 +60,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;
|
||||
|
|
|
@ -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 "<table class=\"table-condensed\">";
|
||||
print "<thead>\n<tr>\n";
|
||||
print "<th>".getMLText("document")."</th>\n";
|
||||
print "<th>".getMLText("version")."</th>\n";
|
||||
print "<th>".getMLText("original_filename")."</th>\n";
|
||||
print "<th>".getMLText("mimetype")."</th>\n";
|
||||
print "</tr>\n</thead>\n<tbody>\n";
|
||||
foreach($duplicateversions as $rec) {
|
||||
$version = $rec['content'];
|
||||
$doc = $version->getDocument();
|
||||
print "<tr>";
|
||||
print "<td>".$doc->getId()."</td><td>".$version->getVersion()."</td><td>".$version->getOriginalFileName()."</td><td>".$version->getMimeType()."</td>";
|
||||
print "<td>";
|
||||
foreach($rec['duplicates'] as $duplicate) {
|
||||
print $duplicate->getVersion();
|
||||
}
|
||||
print "</td>";
|
||||
print "</tr>\n";
|
||||
}
|
||||
print "</tbody></table>\n";
|
||||
}
|
||||
|
||||
$this->contentContainerEnd();
|
||||
$this->htmlEndPage();
|
||||
} /* }}} */
|
||||
|
|
Loading…
Reference in New Issue
Block a user