Пример #1
0
 /**
  * Stores contents (filelike) from source into the document storage
  */
 function storeContents(&$oDocument, $oContents = null, $aOptions = null)
 {
     if (is_null($aOptions)) {
         $aOptions = array();
     }
     if (PEAR::isError($oDocument)) {
         return PEAR::raiseError(sprintf(_kt("Couldn't store contents: %s"), $oDocument->getMessage()));
     }
     $bCanMove = KTUtil::arrayGet($aOptions, 'move');
     $oStorage =& KTStorageManagerUtil::getSingleton();
     $oKTConfig =& KTConfig::getSingleton();
     $sBasedir = $oKTConfig->get('urls/tmpDirectory');
     $sFilename = isset($aOptions['temp_file']) ? $aOptions['temp_file'] : '';
     if (empty($sFilename)) {
         return PEAR::raiseError(sprintf(_kt("Couldn't store contents: %s"), _kt('The uploaded file does not exist.')));
     }
     $md5hash = md5_file($sFilename);
     $content = $oDocument->_oDocumentContentVersion;
     $content->setStorageHash($md5hash);
     $content->update();
     if (empty($aOptions)) {
         $aOptions = array();
     }
     $aOptions['md5hash'] = $md5hash;
     // detection of mime types needs to be refactored. this stuff is damn messy!
     $sType = KTMime::getMimeTypeFromFile($sFilename);
     $iMimeTypeId = KTMime::getMimeTypeID($sType, $oDocument->getFileName(), $sFilename);
     $oDocument->setMimeTypeId($iMimeTypeId);
     $res = $oStorage->upload($oDocument, $sFilename, $aOptions);
     if ($res === false) {
         return PEAR::raiseError(sprintf(_kt("Couldn't store contents: %s"), _kt('No reason given')));
     }
     if (PEAR::isError($res)) {
         return PEAR::raiseError(sprintf(_kt("Couldn't store contents: %s"), $res->getMessage()));
     }
     KTDocumentUtil::setComplete($oDocument, 'contents');
     if ($aOptions['cleanup_initial_file'] && file_exists($sFilename)) {
         @unlink($sFilename);
     }
     return true;
 }