コード例 #1
0
 /**
  * @param string $partId
  * @param string $messageId
  * 
  * @return array
  */
 public function extractWinMailDat($messageId, $partId = NULL)
 {
     $path = Tinebase_Core::getTempDir() . '/winmail/';
     // create base path
     if (!is_dir($path)) {
         mkdir($path);
     }
     // create path for this message id
     if (!is_dir($path . $messageId)) {
         mkdir($path . $messageId);
         $part = $this->getMessagePart($messageId, $partId);
         $path = $path . $messageId . '/';
         $datFile = $path . 'winmail.dat';
         $stream = $part->getDecodedStream();
         $tmpFile = fopen($datFile, 'w');
         stream_copy_to_stream($stream, $tmpFile);
         fclose($tmpFile);
         // find out filenames
         $files = array();
         $fileString = explode(chr(10), Tinebase_Core::callSystemCommand('tnef -t ' . $datFile));
         foreach ($fileString as $line) {
             $split = explode('|', $line);
             $clean = trim($split[0]);
             if (!empty($clean)) {
                 $files[] = $clean;
             }
         }
         // extract files
         Tinebase_Core::callSystemCommand('tnef -C ' . $path . ' ' . $datFile);
     } else {
         // temp files still existing
         $dir = new DirectoryIterator($path . $messageId);
         $files = array();
         foreach ($dir as $file) {
             if ($file->isFile() && $file->getFilename() != 'winmail.dat') {
                 $files[] = $file->getFilename();
             }
         }
     }
     asort($files);
     return $files;
 }