Beispiel #1
0
foreach ($filesInPreviewDirectory as $fileInPreviewDirectory) {
    if (!stringStartsWith(basename($fileInPreviewDirectory), "docvert") && !stringEndsWith(basename($fileInPreviewDirectory), "wmf") && !stringEndsWith(basename($fileInPreviewDirectory), "gif") && !stringEndsWith(basename($fileInPreviewDirectory), "png") && !stringEndsWith(basename($fileInPreviewDirectory), "jpeg") && !stringEndsWith(basename($fileInPreviewDirectory), "jpg") && !stringEndsWith(basename($fileInPreviewDirectory), "svg")) {
        //print 'Delete: '.$fileInPreviewDirectory.'<br />';
        silentlyUnlink($fileInPreviewDirectory);
    } else {
        //print 'Retain: '.$fileInPreviewDirectory.'<br />';
    }
}
$docbookPath = $previewDirectory . 'docvert--all-docbook.xml';
$docbook = file_get_contents($docbookPath);
$docbook = str_replace('{{body}}', $docbookBody, $docbook);
$docbook = str_replace('{{title}}', $docbookTitle, $docbook);
$contentPath = $previewDirectory . 'content.xml';
file_put_contents($contentPath, $docbook);
$pipelineToUse = $pipeline;
$autoPipeline = $autopipeline;
$skipAheadToDocbook = true;
$pipelinePreviewDirectory = 'writable' . DIRECTORY_SEPARATOR . $documentPathParts[0];
applyPipeline($contentPath, $pipelineToUse, $autoPipeline, $pipelinePreviewDirectory, $skipAheadToDocbook);
zipFiles($allDocumentsPreviewDirectory, $zipFilePath);
$urlParamsArray = array('preview' => $documentPathParts[0]);
//'pipeline' => $pipelineToUse,
//'autopipeline' => $autopipeline
$urlParams = "";
foreach ($urlParamsArray as $key => $value) {
    if ($urlParams) {
        $urlParams .= '&';
    }
    $urlParams .= rawurlencode($key) . '=' . rawurlencode($value);
}
header("Location: web-service.php?" . $urlParams);
Beispiel #2
0
function processConversion($files, $converter, $pipeline, $autoPipeline, $afterConversion, $setupOpenOfficeOrg, $outputZip, $justShowPreviewDirectory = null)
{
    $forcedPipeline = getGlobalConfigItem('forcePipeline');
    if ($forcedPipeline != null) {
        $pipeline = 'fake:' . $forcedPipeline;
    }
    ensureClientType();
    if (thereWasAFileGiven($files, $pipeline) || $justShowPreviewDirectory) {
        $returnZipPath = null;
        $previewDirectory = null;
        if (!$justShowPreviewDirectory) {
            $previewDirectory = getTemporaryDirectoryInsideDirectory(getWritableDirectory(), 'preview');
            $temporaryDirectory = getTemporaryDirectory();
            $pipelineToRunOnDocuments = substringAfter($pipeline, ':');
            foreach ($files as $file) {
                if ($file['size'] != 0) {
                    $documentPath = moveUploadToConversionDirectory($file, $temporaryDirectory);
                    $oasisOpenDocumentPath = '';
                    if (!isAnOasisOpenDocument($file)) {
                        $oasisOpenDocumentPath = makeOasisOpenDocument($documentPath, $converter);
                        silentlyUnlink($documentPath);
                    } else {
                        $oasisOpenDocumentPath = $documentPath;
                    }
                    if ($pipelineToRunOnDocuments != "none") {
                        extractUsefulOasisOpenDocumentFiles($oasisOpenDocumentPath);
                        silentlyUnlink($oasisOpenDocumentPath);
                        $oasisOpenDocumentContentPath = dirname($oasisOpenDocumentPath) . DIRECTORY_SEPARATOR . 'docvert-content.xml';
                        applyPipeline($oasisOpenDocumentContentPath, $pipelineToRunOnDocuments, $autoPipeline, $previewDirectory);
                        silentlyUnlink($oasisOpenDocumentContentPath);
                    }
                }
            }
            $returnZipPath = zipAndDeleteTemporaryFiles($temporaryDirectory);
            if ($afterConversion == 'preview') {
                include_once dirname(__FILE__) . '/webpage.php';
                $themes = new Themes();
                //$returnZipPath = $themes->unzipConversionResults($returnZipPath, $previewDirectory); //WTF
            }
        } else {
            $previewDirectory = getWritableDirectory() . $justShowPreviewDirectory;
            $zipsInPreviewDirectory = glob($previewDirectory . DIRECTORY_SEPARATOR . '*.zip');
            if (count($zipsInPreviewDirectory) != 1) {
                $errorData = array('zipsInPreviewDirectory' => count($zipsInPreviewDirectory), 'previewDirectory' => $previewDirectory);
                webServiceError('&docvert-internal-error-no-zip-file;', 500, $errorData);
            }
            $returnZipPath = $zipsInPreviewDirectory[0];
        }
        if ($afterConversion == 'preview') {
            include_once dirname(__FILE__) . '/webpage.php';
            $themes = new Themes();
            $themes->previewConversionResults($returnZipPath, $previewDirectory);
        } elseif ($afterConversion == 'saveZip') {
            if (DOCVERT_CLIENT_TYPE == 'command line') {
                moveFile($returnZipPath, $outputZip);
                print 'Ok! File saved to ' . $outputZip . "\n";
                deleteDirectoryRecursively($temporaryDirectory);
                die;
            } else {
                webServiceError('&error-after-conversion-flag;');
            }
        } elseif ($afterConversion == 'downloadZip') {
            //TODO: different versions of IE want different "content disposition" header syntaxes
            //perhaps we could detect versions of IE and serve up what they need? Will need quite a bit of research.
            header('Content-Type: application/x-zip-compressed');
            header('Content-disposition: attachment; filename=' . basename($returnZipPath));
            $zipContents = file_get_contents($returnZipPath);
            print $zipContents;
            flush();
            silentlyUnlink($returnZipPath);
            deleteDirectoryRecursively($temporaryDirectory);
            die;
        } else {
            webServiceError('&error-unsupported-after-conversion;', 500, array('after-conversion' => revealXml($afterConversion)));
        }
    } elseif ($setupOpenOfficeOrg) {
        setupOpenOfficeOrg();
    } else {
        /* TODO: so there's been no upload and what do we do?
         * I suppose an http status code would be appropriate.
         *     http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
         * The 4xx series are for user error, which seems appropriate.
         * ...but none of them seem quite appropriate for a casual
         * "you didn't give me files" response.
         * They talk about malformed requests.
         *
         * So I'm doing a "400 Bad Request" in the meantime.
         */
        webServiceError('&error-no-files-uploaded;', '400 Bad Request');
    }
}