Commit 1d336588042699a56300aa9aa57cd7c9475398d9
1 parent
53898ac4
Merged in from STABLE trunk...
KTC-417 "A license file (once uploaded) is seen as a binary file" Fixed. Committed By: Conrad Vermeulen Reviewed By: Megan Watson git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/STABLE/branches/3.5.3a-Release-Branch@9277 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
2 changed files
with
38 additions
and
32 deletions
lib/documentmanagement/documentutil.inc.php
| @@ -76,16 +76,10 @@ class KTDocumentUtil { | @@ -76,16 +76,10 @@ class KTDocumentUtil { | ||
| 76 | 76 | ||
| 77 | KTDocumentUtil::copyMetadata($oDocument, $iPreviousMetadataVersion); | 77 | KTDocumentUtil::copyMetadata($oDocument, $iPreviousMetadataVersion); |
| 78 | 78 | ||
| 79 | - $md5hash = md5_file($sFilename); | ||
| 80 | - $content = $oDocument->_oDocumentContentVersion; | ||
| 81 | - $content->setStorageHash($md5hash); | ||
| 82 | - $content->update(); | ||
| 83 | - | ||
| 84 | - if (empty($aOptions)) $aOptions = array(); | ||
| 85 | - $aOptions['md5hash'] = $md5hash; | ||
| 86 | - | ||
| 87 | - if (!$oStorage->upload($oDocument, $sFilename, $aOptions)) { | ||
| 88 | - return PEAR::raiseError(_kt('An error occurred while storing the new file')); | 79 | + $aOptions['temp_file'] = $sFilename; |
| 80 | + $res = KTDocumentUtil::storeContents($oDocument, '', $aOptions); | ||
| 81 | + if (PEAR::isError($res)) { | ||
| 82 | + return $res; | ||
| 89 | } | 83 | } |
| 90 | 84 | ||
| 91 | $oDocument->setLastModifiedDate(getCurrentDateTime()); | 85 | $oDocument->setLastModifiedDate(getCurrentDateTime()); |
| @@ -107,6 +101,7 @@ class KTDocumentUtil { | @@ -107,6 +101,7 @@ class KTDocumentUtil { | ||
| 107 | $oDocument->setFileName($sFilename); | 101 | $oDocument->setFileName($sFilename); |
| 108 | $default->log->info('renamed document ' . $oDocument->getId() . ' to ' . $sFilename); | 102 | $default->log->info('renamed document ' . $oDocument->getId() . ' to ' . $sFilename); |
| 109 | 103 | ||
| 104 | + // detection of mime types needs to be refactored. this stuff is damn messy! | ||
| 110 | // If the filename has changed then update the mime type | 105 | // If the filename has changed then update the mime type |
| 111 | $iMimeTypeId = KTMime::getMimeTypeID('', $sFilename); | 106 | $iMimeTypeId = KTMime::getMimeTypeID('', $sFilename); |
| 112 | $oDocument->setMimeTypeId($iMimeTypeId); | 107 | $oDocument->setMimeTypeId($iMimeTypeId); |
| @@ -871,14 +866,6 @@ $sourceDocument->getName(), | @@ -871,14 +866,6 @@ $sourceDocument->getName(), | ||
| 871 | 866 | ||
| 872 | $sFilename = (isset($aOptions['temp_file'])) ? $aOptions['temp_file'] : ''; | 867 | $sFilename = (isset($aOptions['temp_file'])) ? $aOptions['temp_file'] : ''; |
| 873 | 868 | ||
| 874 | -// $oOutputFile = new KTFSFileLike($sFilename); | ||
| 875 | -// $res = KTFileLikeUtil::copy_contents($oContents, $oOutputFile); | ||
| 876 | -// if (($res === false)) { | ||
| 877 | -// return PEAR::raiseError(_kt("Couldn't store contents, and no reason given.")); | ||
| 878 | -// } else if (PEAR::isError($res)) { | ||
| 879 | -// return PEAR::raiseError(sprintf(_kt("Couldn't store contents: %s"), $res->getMessage())); | ||
| 880 | -// } | ||
| 881 | - | ||
| 882 | if(empty($sFilename)){ | 869 | if(empty($sFilename)){ |
| 883 | return PEAR::raiseError(sprintf(_kt("Couldn't store contents: %s"), _kt('The uploaded file does not exist.'))); | 870 | return PEAR::raiseError(sprintf(_kt("Couldn't store contents: %s"), _kt('The uploaded file does not exist.'))); |
| 884 | } | 871 | } |
| @@ -891,8 +878,9 @@ $sourceDocument->getName(), | @@ -891,8 +878,9 @@ $sourceDocument->getName(), | ||
| 891 | if (empty($aOptions)) $aOptions = array(); | 878 | if (empty($aOptions)) $aOptions = array(); |
| 892 | $aOptions['md5hash'] = $md5hash; | 879 | $aOptions['md5hash'] = $md5hash; |
| 893 | 880 | ||
| 881 | + // detection of mime types needs to be refactored. this stuff is damn messy! | ||
| 894 | $sType = KTMime::getMimeTypeFromFile($sFilename); | 882 | $sType = KTMime::getMimeTypeFromFile($sFilename); |
| 895 | - $iMimeTypeId = KTMime::getMimeTypeID($sType, $oDocument->getFileName()); | 883 | + $iMimeTypeId = KTMime::getMimeTypeID($sType, $oDocument->getFileName(), $sFilename); |
| 896 | $oDocument->setMimeTypeId($iMimeTypeId); | 884 | $oDocument->setMimeTypeId($iMimeTypeId); |
| 897 | 885 | ||
| 898 | $res = $oStorage->upload($oDocument, $sFilename, $aOptions); | 886 | $res = $oStorage->upload($oDocument, $sFilename, $aOptions); |
lib/mime.inc.php
| @@ -6,31 +6,31 @@ | @@ -6,31 +6,31 @@ | ||
| 6 | * Document Management Made Simple | 6 | * Document Management Made Simple |
| 7 | * Copyright (C) 2008 KnowledgeTree Inc. | 7 | * Copyright (C) 2008 KnowledgeTree Inc. |
| 8 | * Portions copyright The Jam Warehouse Software (Pty) Limited | 8 | * Portions copyright The Jam Warehouse Software (Pty) Limited |
| 9 | - * | 9 | + * |
| 10 | * This program is free software; you can redistribute it and/or modify it under | 10 | * This program is free software; you can redistribute it and/or modify it under |
| 11 | * the terms of the GNU General Public License version 3 as published by the | 11 | * the terms of the GNU General Public License version 3 as published by the |
| 12 | * Free Software Foundation. | 12 | * Free Software Foundation. |
| 13 | - * | 13 | + * |
| 14 | * This program is distributed in the hope that it will be useful, but WITHOUT | 14 | * This program is distributed in the hope that it will be useful, but WITHOUT |
| 15 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 15 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
| 16 | * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | 16 | * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more |
| 17 | * details. | 17 | * details. |
| 18 | - * | 18 | + * |
| 19 | * You should have received a copy of the GNU General Public License | 19 | * You should have received a copy of the GNU General Public License |
| 20 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 20 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 21 | - * | ||
| 22 | - * You can contact KnowledgeTree Inc., PO Box 7775 #87847, San Francisco, | 21 | + * |
| 22 | + * You can contact KnowledgeTree Inc., PO Box 7775 #87847, San Francisco, | ||
| 23 | * California 94120-7775, or email info@knowledgetree.com. | 23 | * California 94120-7775, or email info@knowledgetree.com. |
| 24 | - * | 24 | + * |
| 25 | * The interactive user interfaces in modified source and object code versions | 25 | * The interactive user interfaces in modified source and object code versions |
| 26 | * of this program must display Appropriate Legal Notices, as required under | 26 | * of this program must display Appropriate Legal Notices, as required under |
| 27 | * Section 5 of the GNU General Public License version 3. | 27 | * Section 5 of the GNU General Public License version 3. |
| 28 | - * | 28 | + * |
| 29 | * In accordance with Section 7(b) of the GNU General Public License version 3, | 29 | * In accordance with Section 7(b) of the GNU General Public License version 3, |
| 30 | * these Appropriate Legal Notices must retain the display of the "Powered by | 30 | * these Appropriate Legal Notices must retain the display of the "Powered by |
| 31 | - * KnowledgeTree" logo and retain the original copyright notice. If the display of the | 31 | + * KnowledgeTree" logo and retain the original copyright notice. If the display of the |
| 32 | * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices | 32 | * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices |
| 33 | - * must display the words "Powered by KnowledgeTree" and retain the original | 33 | + * must display the words "Powered by KnowledgeTree" and retain the original |
| 34 | * copyright notice. | 34 | * copyright notice. |
| 35 | * Contributor( s): ______________________________________ | 35 | * Contributor( s): ______________________________________ |
| 36 | * | 36 | * |
| @@ -48,12 +48,10 @@ class KTMime { | @@ -48,12 +48,10 @@ class KTMime { | ||
| 48 | * @param string filename | 48 | * @param string filename |
| 49 | * @return int mime type primary key if found, else default mime type primary key (text/plain) | 49 | * @return int mime type primary key if found, else default mime type primary key (text/plain) |
| 50 | */ | 50 | */ |
| 51 | - function getMimeTypeID($sMimeType, $sFileName) { | 51 | + function getMimeTypeID($sMimeType, $sFileName, $sTempFile = null) { |
| 52 | global $default; | 52 | global $default; |
| 53 | $sTable = KTUtil::getTableName('mimetypes'); | 53 | $sTable = KTUtil::getTableName('mimetypes'); |
| 54 | 54 | ||
| 55 | - | ||
| 56 | - | ||
| 57 | // check by file extension | 55 | // check by file extension |
| 58 | $sExtension = KTMime::stripAllButExtension($sFileName); | 56 | $sExtension = KTMime::stripAllButExtension($sFileName); |
| 59 | $res = DBUtil::getOneResultKey(array("SELECT id FROM " . $sTable . " WHERE LOWER(filetypes) = ?", array($sExtension)),'id'); | 57 | $res = DBUtil::getOneResultKey(array("SELECT id FROM " . $sTable . " WHERE LOWER(filetypes) = ?", array($sExtension)),'id'); |
| @@ -65,7 +63,6 @@ class KTMime { | @@ -65,7 +63,6 @@ class KTMime { | ||
| 65 | return $res; | 63 | return $res; |
| 66 | } | 64 | } |
| 67 | 65 | ||
| 68 | - | ||
| 69 | // get the mime type id | 66 | // get the mime type id |
| 70 | if (isset($sMimeType)) { | 67 | if (isset($sMimeType)) { |
| 71 | $res = DBUtil::getResultArray(array("SELECT id FROM " . $sTable . " WHERE mimetypes = ?", array($sMimeType))); | 68 | $res = DBUtil::getResultArray(array("SELECT id FROM " . $sTable . " WHERE mimetypes = ?", array($sMimeType))); |
| @@ -77,6 +74,22 @@ class KTMime { | @@ -77,6 +74,22 @@ class KTMime { | ||
| 77 | } | 74 | } |
| 78 | } | 75 | } |
| 79 | 76 | ||
| 77 | + if (!is_null($sTempFile)) | ||
| 78 | + { | ||
| 79 | + // The default is a binary file, so if mime magic can resolve better, lets try... | ||
| 80 | + $sMimeType = KTMime::getMimeTypeFromFile($sTempFile); | ||
| 81 | + if (!empty($sMimeType)) | ||
| 82 | + { | ||
| 83 | + $res = DBUtil::getResultArray(array("SELECT id FROM " . $sTable . " WHERE mimetypes = ?", array($sMimeType))); | ||
| 84 | + if (PEAR::isError($res)) { | ||
| 85 | + ; // pass ?! | ||
| 86 | + } | ||
| 87 | + if (count($res) != 0) { | ||
| 88 | + return $res[0]['id']; | ||
| 89 | + } | ||
| 90 | + } | ||
| 91 | + } | ||
| 92 | + | ||
| 80 | //otherwise return the default mime type | 93 | //otherwise return the default mime type |
| 81 | return KTMime::getDefaultMimeTypeID(); | 94 | return KTMime::getDefaultMimeTypeID(); |
| 82 | } | 95 | } |
| @@ -159,6 +172,11 @@ class KTMime { | @@ -159,6 +172,11 @@ class KTMime { | ||
| 159 | } | 172 | } |
| 160 | 173 | ||
| 161 | if ($sType) { | 174 | if ($sType) { |
| 175 | + $iSpacePos = strpos($sType, ' '); | ||
| 176 | + if ($iSpacePos !== false) | ||
| 177 | + { | ||
| 178 | + $sType = substr($sType, 0, $iSpacePos); | ||
| 179 | + } | ||
| 162 | return preg_replace('/;.*$/', '', $sType); | 180 | return preg_replace('/;.*$/', '', $sType); |
| 163 | } | 181 | } |
| 164 | 182 |