BookStack\Services\ImageService::saveNew PHP Method

saveNew() private method

Saves a new image
private saveNew ( string $imageName, string $imageData, string $type, integer $uploadedTo ) : Image
$imageName string
$imageData string
$type string
$uploadedTo integer
return BookStack\Image
    private function saveNew($imageName, $imageData, $type, $uploadedTo = 0)
    {
        $storage = $this->getStorage();
        $secureUploads = setting('app-secure-images');
        $imageName = str_replace(' ', '-', $imageName);
        if ($secureUploads) {
            $imageName = str_random(16) . '-' . $imageName;
        }
        $imagePath = '/uploads/images/' . $type . '/' . Date('Y-m-M') . '/';
        if ($this->isLocal()) {
            $imagePath = '/public' . $imagePath;
        }
        while ($storage->exists($imagePath . $imageName)) {
            $imageName = str_random(3) . $imageName;
        }
        $fullPath = $imagePath . $imageName;
        try {
            $storage->put($fullPath, $imageData);
            $storage->setVisibility($fullPath, 'public');
        } catch (Exception $e) {
            throw new ImageUploadException('Image Path ' . $fullPath . ' is not writable by the server.');
        }
        if ($this->isLocal()) {
            $fullPath = str_replace_first('/public', '', $fullPath);
        }
        $imageDetails = ['name' => $imageName, 'path' => $fullPath, 'url' => $this->getPublicUrl($fullPath), 'type' => $type, 'uploaded_to' => $uploadedTo];
        if (user()->id !== 0) {
            $userId = user()->id;
            $imageDetails['created_by'] = $userId;
            $imageDetails['updated_by'] = $userId;
        }
        $image = Image::forceCreate($imageDetails);
        return $image;
    }