mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-05-14 05:31:42 +00:00
fulltext service can use new text previewer to create a cached txt file of a document
This commit is contained in:
parent
75638089e6
commit
98e7c58b74
|
@ -54,6 +54,7 @@ class SeedDMS_FulltextService {
|
||||||
$this->services = array();
|
$this->services = array();
|
||||||
$this->converters = array();
|
$this->converters = array();
|
||||||
$this->conversionmgr = null;
|
$this->conversionmgr = null;
|
||||||
|
$this->previewer = null;
|
||||||
$this->logger = null;
|
$this->logger = null;
|
||||||
$this->maxsize = 0;
|
$this->maxsize = 0;
|
||||||
$this->index = null;
|
$this->index = null;
|
||||||
|
@ -93,6 +94,73 @@ class SeedDMS_FulltextService {
|
||||||
$this->cmdtimeout = $timeout;
|
$this->cmdtimeout = $timeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setPreviewer($previewer) {
|
||||||
|
$this->previewer = $previewer;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns callback function to convert a document into plain text
|
||||||
|
*
|
||||||
|
* This variant just uses the conversion manager and does not
|
||||||
|
* cache the converted document
|
||||||
|
*/
|
||||||
|
public function getConversionCallback() { /* {{{ */
|
||||||
|
$conversionmgr = $this->conversionmgr;
|
||||||
|
return function($object) use ($conversionmgr) {
|
||||||
|
$result = ['content'=>false, 'cmd'=>'', 'errormsg'=>''];
|
||||||
|
if(!$conversionmgr)
|
||||||
|
return $result;
|
||||||
|
if($object->isType('document')) {
|
||||||
|
$dms = $object->getDMS();
|
||||||
|
$version = $object->getLatestContent();
|
||||||
|
$mimetype = $version->getMimeType();
|
||||||
|
$path = $dms->contentDir . $version->getPath();
|
||||||
|
if(file_exists($path)) {
|
||||||
|
if($service = $conversionmgr->getService($mimetype, 'text/plain')) {
|
||||||
|
$content = $conversionmgr->convert($path, $mimetype, 'text/plain');
|
||||||
|
if($content) {
|
||||||
|
$result['content'] = $content;
|
||||||
|
} elseif($content === false) {
|
||||||
|
$result['errormsg'] = 'Conversion failed';
|
||||||
|
}
|
||||||
|
$result['cmd'] = get_class($service);
|
||||||
|
} else {
|
||||||
|
$result['cmd'] = 'No service to convert '.$mimetype.' to text/plain';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
};
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns callback function to convert a document into plain text
|
||||||
|
*
|
||||||
|
* This variant just uses the text previewer which
|
||||||
|
* caches the converted document
|
||||||
|
*/
|
||||||
|
public function getConversionWithPreviewCallback() { /* {{{ */
|
||||||
|
$previewer = $this->previewer;
|
||||||
|
return function($object) use ($previewer) {
|
||||||
|
$result = ['content'=>false, 'cmd'=>'', 'errormsg'=>''];
|
||||||
|
if($object->isType('document')) {
|
||||||
|
$dms = $object->getDMS();
|
||||||
|
$version = $object->getLatestContent();
|
||||||
|
if($previewer->createPreview($version)) {
|
||||||
|
if($previewer->hasPreview($version)) {
|
||||||
|
$filename = $previewer->getFileName($version).'.txt';
|
||||||
|
$result['content'] = file_get_contents($filename);
|
||||||
|
$result['cmd'] = 'previewer '.$previewer->getFileSize($version);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$result['cmd'] = 'previewer';
|
||||||
|
$result['errormsg'] = 'Creating preview failed';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
};
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return an indexable document from the given document or folder
|
* Return an indexable document from the given document or folder
|
||||||
*
|
*
|
||||||
|
@ -108,7 +176,8 @@ class SeedDMS_FulltextService {
|
||||||
$nocontent = $object->getLatestContent()->getFileSize() > $this->maxsize && $this->maxsize && !$forceupdate;
|
$nocontent = $object->getLatestContent()->getFileSize() > $this->maxsize && $this->maxsize && !$forceupdate;
|
||||||
else
|
else
|
||||||
$nocontent = true;
|
$nocontent = true;
|
||||||
return new $this->services[0]['IndexedDocument']($object->getDMS(), $object, $this->conversionmgr ? $this->conversionmgr : $this->converters, $nocontent, $this->cmdtimeout);
|
$convcallback = $this->getConversionWithPreviewCallback();
|
||||||
|
return new $this->services[0]['IndexedDocument']($object->getDMS(), $object, $convcallback /*$this->conversionmgr ? $this->conversionmgr : $this->converters*/, $nocontent, $this->cmdtimeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue
Block a user