Commit b48e9d187ce6a2a35ea90b4b63c5c971562b68f2

Authored by nbm
1 parent 022f1f74

Save time and only try unzip files that have the correct OpenDocument

file extensions.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@5076 c91229c3-7414-0410-bfa2-8a42b809f60b
plugins/ktstandard/contents/OpenDocumentIndexer.php
@@ -42,15 +42,36 @@ class KTOpenDocumentIndexerTrigger extends KTBaseIndexerTrigger { @@ -42,15 +42,36 @@ class KTOpenDocumentIndexerTrigger extends KTBaseIndexerTrigger {
42 ); 42 );
43 43
44 function transform() { 44 function transform() {
  45 + global $default;
45 $iMimeTypeId = $this->oDocument->getMimeTypeId(); 46 $iMimeTypeId = $this->oDocument->getMimeTypeId();
46 $sMimeType = KTMime::getMimeTypeName($iMimeTypeId); 47 $sMimeType = KTMime::getMimeTypeName($iMimeTypeId);
47 $sFileName = $this->oDocument->getFileName(); 48 $sFileName = $this->oDocument->getFileName();
48 - if (in_array($sMimeType, array('application/octet-stream', 'application/zip', 'application/x-zip'))) { 49 + $aTestTypes = array('application/octet-stream', 'application/zip', 'application/x-zip');
  50 + if (in_array($sMimeType, $aTestTypes)) {
49 $sExtension = KTMime::stripAllButExtension($sFileName); 51 $sExtension = KTMime::stripAllButExtension($sFileName);
50 $sTable = KTUtil::getTableName('mimetypes'); 52 $sTable = KTUtil::getTableName('mimetypes');
51 - $sQuery = "SELECT id FROM $sTable WHERE LOWER(filetypes) = ?"; 53 + $sQuery = "SELECT id, mimetypes FROM $sTable WHERE LOWER(filetypes) = ?";
52 $aParams = array($sExtension); 54 $aParams = array($sExtension);
53 - $id = DBUtil::getOneResultKey(array($sQuery, $aParams), 'id'); 55 + $aRow = DBUtil::getOneResult(array($sQuery, $aParams));
  56 +
  57 + if (PEAR::isError($aRow)) {
  58 + $default->log->debug("ODI: error in query: " . print_r($aRow, true));
  59 + return;
  60 + }
  61 + if (empty($aRow)) {
  62 + $default->log->debug("ODI: query returned entry");
  63 + return;
  64 + }
  65 +
  66 + $id = $aRow['id'];
  67 + $mimetype = $aRow['mimetypes'];
  68 + $default->log->debug("ODI: query returned: " . print_r($aRow, true));
  69 +
  70 + if (in_array($mimetype, $aTestTypes)) {
  71 + // Haven't changed, really not an OpenDocument file...
  72 + return;
  73 + }
  74 +
54 if ($id) { 75 if ($id) {
55 $this->oDocument->setMimeTypeId($id); 76 $this->oDocument->setMimeTypeId($id);
56 $this->oDocument->update(); 77 $this->oDocument->update();