mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-02-11 09:35:00 +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->converters = array();
|
||||
$this->conversionmgr = null;
|
||||
$this->previewer = null;
|
||||
$this->logger = null;
|
||||
$this->maxsize = 0;
|
||||
$this->index = null;
|
||||
|
@ -93,6 +94,73 @@ class SeedDMS_FulltextService {
|
|||
$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
|
||||
*
|
||||
|
@ -108,7 +176,8 @@ class SeedDMS_FulltextService {
|
|||
$nocontent = $object->getLatestContent()->getFileSize() > $this->maxsize && $this->maxsize && !$forceupdate;
|
||||
else
|
||||
$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