public function processDocument(DocumentEvent $event)
    {
        $subdir     = $event->getCacheSubdirectory();
        $sourceFile = $event->getSourceFilepath();

        if (null == $subdir || null == $sourceFile) {
            throw new \InvalidArgumentException("Cache sub-directory and source file path cannot be null");
        }

        $originalDocumentPathInCache = $this->getCacheFilePath($subdir, $sourceFile, true);

        if (! file_exists($originalDocumentPathInCache)) {
            if (! file_exists($sourceFile)) {
                throw new DocumentException(sprintf("Source document file %s does not exists.", $sourceFile));
            }

            $mode = ConfigQuery::read(self::CONFIG_DELIVERY_MODE, 'symlink');

            if ($mode == 'symlink') {
                if (false === symlink($sourceFile, $originalDocumentPathInCache)) {
                    throw new DocumentException(sprintf("Failed to create symbolic link for %s in %s document cache directory", basename($sourceFile), $subdir));
                }
            } else {
                // mode = 'copy'
                if (false === @copy($sourceFile, $originalDocumentPathInCache)) {
                    throw new DocumentException(sprintf("Failed to copy %s in %s document cache directory", basename($sourceFile), $subdir));
                }
            }
        }

        // Compute the document URL
        $documentUrl = $this->getCacheFileURL($subdir, basename($originalDocumentPathInCache));

        // Update the event with file path and file URL
        $event->setDocumentPath($documentUrl);
        $event->setDocumentUrl(URL::getInstance()->absoluteUrl($documentUrl, null, URL::PATH_TO_FILE, $this->cdnBaseUrl));
    }
public function processDocument(DocumentEvent $event)
    {
        $subdir     = $event->getCacheSubdirectory();
        $sourceFile = $event->getSourceFilepath();

        if (null == $subdir || null == $sourceFile) {
            throw new \InvalidArgumentException("Cache sub-directory and source file path cannot be null");
        }

        $originalDocumentPathInCache = $this->getCacheFilePath($subdir, $sourceFile, true);

        if (! file_exists($originalDocumentPathInCache)) {
            if (! file_exists($sourceFile)) {
                throw new DocumentException(sprintf("Source document file %s does not exists.", $sourceFile));
            }

            $mode = ConfigQuery::read(self::CONFIG_DELIVERY_MODE, 'symlink');

            if ($mode == 'symlink') {
                if (false === symlink($sourceFile, $originalDocumentPathInCache)) {
                    throw new DocumentException(sprintf("Failed to create symbolic link for %s in %s document cache directory", basename($sourceFile), $subdir));
                }
            } else {
                // mode = 'copy'
                if (false === @copy($sourceFile, $originalDocumentPathInCache)) {
                    throw new DocumentException(sprintf("Failed to copy %s in %s document cache directory", basename($sourceFile), $subdir));
                }
            }
        }

        // Compute the document URL
        $documentUrl = $this->getCacheFileURL($subdir, basename($originalDocumentPathInCache));

        // Update the event with file path and file URL
        $event->setDocumentPath($documentUrl);
        $event->setDocumentUrl(URL::getInstance()->absoluteUrl($documentUrl, null, URL::PATH_TO_FILE, $this->cdnBaseUrl));
    }
public function processDocument ( DocumentEvent $ event ) { $ subdir = $ event -> getCacheSubdirectory ( ) ; $ sourceFile = $ event -> getSourceFilepath ( ) ; if ( null == $ subdir || null == $ sourceFile ) { throw new \ InvalidArgumentException ( "Cache sub-directory and source file path cannot be null" ) ; } $ originalDocumentPathInCache = $ this -> getCacheFilePath ( $ subdir , $ sourceFile , true ) ; if ( ! file_exists ( $ originalDocumentPathInCache ) ) { if ( ! file_exists ( $ sourceFile ) ) { throw new DocumentException ( sprintf ( "Source document file %s does not exists." , $ sourceFile ) ) ; } $ mode = ConfigQuery :: read ( self :: CONFIG_DELIVERY_MODE , 'symlink' ) ; if ( $ mode == 'symlink' ) { if ( false === symlink ( $ sourceFile , $ originalDocumentPathInCache ) ) { throw new DocumentException ( sprintf ( "Failed to create symbolic link for %s in %s document cache directory" , basename ( $ sourceFile ) , $ subdir ) ) ; } } else { // mode = 'copy' if ( false === @ copy ( $ sourceFile , $ originalDocumentPathInCache ) ) { throw new DocumentException ( sprintf ( "Failed to copy %s in %s document cache directory" , basename ( $ sourceFile ) , $ subdir ) ) ; } } } // Compute the document URL $ documentUrl = $ this -> getCacheFileURL ( $ subdir , basename ( $ originalDocumentPathInCache ) ) ; // Update the event with file path and file URL $ event -> setDocumentPath ( $ documentUrl ) ; $ event -> setDocumentUrl ( URL :: getInstance ( ) -> absoluteUrl ( $ documentUrl , null , URL :: PATH_TO_FILE , $ this -> cdnBaseUrl ) ) ; }
Process document and write the result in the document cache.

When the original document is required, create either a symbolic link with the
original document in the cache dir, or copy it in the cache dir if it's not already done.

This method updates the cache_file_path and file_url attributes of the event

@param DocumentEvent $event Event

@throws \Thelia\Exception\DocumentException
@throws \InvalidArgumentException           , DocumentException
Process document and write the result in the document cache .