<?php

/**
 * Class SCoreException
 *
 * A base exception to be caught by the upper levels.
 */
class SCoreException extends Exception
{
    public function __construct(string $msg, ?string $query=null)
    {
        parent::__construct($msg);
        $this->query = $query;
    }
}

/**
 * Class PermissionDeniedException
 *
 * A fairly common, generic exception.
 */
class PermissionDeniedException extends SCoreException
{
}

/**
 * Class ImageDoesNotExist
 *
 * This exception is used when an Image cannot be found by ID.
 *
 * Example: Image::by_id(-1) returns null
 */
class ImageDoesNotExist extends SCoreException
{
}

/*
 * For validate_input()
 */
class InvalidInput extends SCoreException
{
}

/*
 * This is used by the image resizing code when there is not enough memory to perform a resize.
 */
class InsufficientMemoryException extends SCoreException
{
}
/*
 * This is used by the image resizing code when there is an error while resizing
 */
class ImageResizeException extends SCoreException
{
    public $error;

    public function __construct(string $error)
    {
        $this->error = $error;
    }
}