Skip to content

Commit cfbd813

Browse files
committed
Create destination directory even if folder is specify in filename
Signed-off-by: Jérémy DECOOL <[email protected]>
1 parent 3243cfd commit cfbd813

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

src/PHPImageWorkshop/Core/ImageWorkshopLayer.php

+10-9
Original file line numberDiff line numberDiff line change
@@ -1525,22 +1525,23 @@ public function save($folder, $imageName, $createFolders = true, $backgroundColo
15251525
throw new ImageWorkshopLayerException(sprintf('Destination folder "%s" not writable.', $folder), self::ERROR_NOT_WRITABLE_FOLDER);
15261526
}
15271527

1528+
$extension = explode('.', $imageName);
1529+
$extension = strtolower($extension[count($extension) - 1]);
1530+
1531+
$filename = sprintf('%s/%s', rtrim($folder, '/'), ltrim($imageName, '/'));
1532+
15281533
// Creating the folders if they don't exist
1529-
if (!is_dir($folder) && $createFolders) {
1530-
if (!mkdir($folder, 0777, true)) {
1531-
throw new ImageWorkshopLayerException(sprintf('Unable to create destination folder "%s".', $folder), self::ERROR_NOT_WRITABLE_FOLDER);
1534+
$dirname = dirname($filename);
1535+
if (!is_dir($dirname) && $createFolders) {
1536+
if (!mkdir($dirname, 0777, true)) {
1537+
throw new ImageWorkshopLayerException(sprintf('Unable to create destination folder "%s".', $dirname), self::ERROR_NOT_WRITABLE_FOLDER);
15321538
}
15331539

15341540
$oldUmask = umask(0);
15351541
umask($oldUmask);
1536-
chmod($folder, 0777);
1542+
chmod($dirname, 0777);
15371543
}
15381544

1539-
$extension = explode('.', $imageName);
1540-
$extension = strtolower($extension[count($extension) - 1]);
1541-
1542-
$filename = $folder.'/'.$imageName;
1543-
15441545
if (($extension == 'jpg' || $extension == 'jpeg' || $extension == 'gif') && (!$backgroundColor || $backgroundColor == 'transparent')) {
15451546
$backgroundColor = 'ffffff';
15461547
}

0 commit comments

Comments
 (0)