BookStack\Services\ImageService::destroyImage PHP Method

destroyImage() public method

Destroys an Image object along with its files and thumbnails.
public destroyImage ( Image $image ) : boolean
$image BookStack\Image
return boolean
    public function destroyImage(Image $image)
    {
        $storage = $this->getStorage();
        $imageFolder = dirname($this->getPath($image));
        $imageFileName = basename($this->getPath($image));
        $allImages = collect($storage->allFiles($imageFolder));
        $imagesToDelete = $allImages->filter(function ($imagePath) use($imageFileName) {
            $expectedIndex = strlen($imagePath) - strlen($imageFileName);
            return strpos($imagePath, $imageFileName) === $expectedIndex;
        });
        $storage->delete($imagesToDelete->all());
        // Cleanup of empty folders
        foreach ($storage->directories($imageFolder) as $directory) {
            if ($this->isFolderEmpty($directory)) {
                $storage->deleteDirectory($directory);
            }
        }
        if ($this->isFolderEmpty($imageFolder)) {
            $storage->deleteDirectory($imageFolder);
        }
        $image->delete();
        return true;
    }