Commit 1d336588042699a56300aa9aa57cd7c9475398d9

Authored by kevin_fourie
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
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