protected function ImagemagickEventSubscriber::doEnsureSourceLocalPath in ImageMagick 8.3
Same name and namespace in other branches
- 8.2 src/EventSubscriber/ImagemagickEventSubscriber.php \Drupal\imagemagick\EventSubscriber\ImagemagickEventSubscriber::doEnsureSourceLocalPath()
Ensures source image URI to a local filesystem path.
Parameters
\Drupal\imagemagick\ImagemagickExecArguments $arguments: The ImageMagick/GraphicsMagick execution arguments object.
1 call to ImagemagickEventSubscriber::doEnsureSourceLocalPath()
- ImagemagickEventSubscriber::ensureSourceLocalPath in src/
EventSubscriber/ ImagemagickEventSubscriber.php - Reacts to an image being parsed.
File
- src/
EventSubscriber/ ImagemagickEventSubscriber.php, line 104
Class
- ImagemagickEventSubscriber
- Imagemagick's module Event Subscriber.
Namespace
Drupal\imagemagick\EventSubscriberCode
protected function doEnsureSourceLocalPath(ImagemagickExecArguments $arguments) {
// Early return if already set.
if (!empty($arguments
->getSourceLocalPath())) {
return;
}
$source = $arguments
->getSource();
if (!$this->streamWrapperManager
->isValidUri($source)) {
// The value of $source is likely a file path already.
$arguments
->setSourceLocalPath($source);
}
else {
// If we can resolve the realpath of the file, then the file is local
// and we can assign the actual file path.
$path = $this->fileSystem
->realpath($source);
if ($path) {
$arguments
->setSourceLocalPath($path);
}
else {
// We are working with a remote file, copy the remote source file to a
// temp one and set the local path to it.
try {
$temp_path = $this->fileSystem
->tempnam('temporary://', 'imagemagick_');
$this->fileSystem
->unlink($temp_path);
$temp_path .= '.' . pathinfo($source, PATHINFO_EXTENSION);
$path = $this->fileSystem
->copy($arguments
->getSource(), $temp_path, FileSystemInterface::EXISTS_ERROR);
$arguments
->setSourceLocalPath($this->fileSystem
->realpath($path));
drupal_register_shutdown_function([
static::class,
'removeTemporaryRemoteCopy',
], $arguments
->getSourceLocalPath());
} catch (FileException $e) {
$this->logger
->error($e
->getMessage());
}
}
}
}