function transform()
 {
     global $default;
     $iMimeTypeId = $this->oDocument->getMimeTypeId();
     $sMimeType = KTMime::getMimeTypeName($iMimeTypeId);
     $sFileName = $this->oDocument->getFileName();
     $aTestTypes = array('application/octet-stream', 'application/zip', 'application/x-zip');
     if (in_array($sMimeType, $aTestTypes)) {
         $sExtension = KTMime::stripAllButExtension($sFileName);
         $sTable = KTUtil::getTableName('mimetypes');
         $sQuery = "SELECT id, mimetypes FROM {$sTable} WHERE LOWER(filetypes) = ?";
         $aParams = array($sExtension);
         $aRow = DBUtil::getOneResult(array($sQuery, $aParams));
         if (PEAR::isError($aRow)) {
             $default->log->debug("ODI: error in query: " . print_r($aRow, true));
             return;
         }
         if (empty($aRow)) {
             $default->log->debug("ODI: query returned entry");
             return;
         }
         $id = $aRow['id'];
         $mimetype = $aRow['mimetypes'];
         $default->log->debug("ODI: query returned: " . print_r($aRow, true));
         if (in_array($mimetype, $aTestTypes)) {
             // Haven't changed, really not an OpenDocument file...
             return;
         }
         if ($id) {
             $this->oDocument->setMimeTypeId($id);
             $this->oDocument->update();
         }
     }
     parent::transform();
 }
Beispiel #2
0
 /**
  * Get the mime type primary key for a specific mime type
  *
  * @param string detected mime type
  * @param string filename
  * @return int mime type primary key if found, else default mime type primary key (text/plain)
  */
 function getMimeTypeID($sMimeType, $sFileName, $sTempFile = null)
 {
     global $default;
     $sTable = KTUtil::getTableName('mimetypes');
     // check by file extension
     $sExtension = KTMime::stripAllButExtension($sFileName);
     $res = DBUtil::getOneResultKey(array("SELECT id FROM " . $sTable . " WHERE LOWER(filetypes) = ?", array($sExtension)), 'id');
     if (PEAR::isError($res) || empty($res)) {
         // pass ?!
     } else {
         return $res;
     }
     // get the mime type id
     if (isset($sMimeType)) {
         $res = DBUtil::getResultArray(array("SELECT id FROM " . $sTable . " WHERE mimetypes = ?", array($sMimeType)));
         if (PEAR::isError($res)) {
             // pass ?!
         }
         if (count($res) != 0) {
             return $res[0]['id'];
         }
     }
     if (!is_null($sTempFile)) {
         // The default is a binary file, so if mime magic can resolve better, lets try...
         $sMimeType = KTMime::getMimeTypeFromFile($sTempFile);
         if (!empty($sMimeType)) {
             $res = DBUtil::getResultArray(array("SELECT id FROM " . $sTable . " WHERE mimetypes = ?", array($sMimeType)));
             if (PEAR::isError($res)) {
                 // pass ?!
             }
             if (count($res) != 0) {
                 return $res[0]['id'];
             }
         }
     }
     //otherwise return the default mime type
     return KTMime::getDefaultMimeTypeID();
 }