Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
8 / 8
CRAP
100.00% covered (success)
100.00%
24 / 24
AustinHeap\Database\Encryption\EncryptionDefaults
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
8 / 8
18
100.00% covered (success)
100.00%
24 / 24
 isEnabledDefault
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 isDisabledDefault
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 isVersioningDefault
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 isVersionlessDefault
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getPrefixDefault
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getControlCharactersDefault
100.00% covered (success)
100.00%
1 / 1
8
100.00% covered (success)
100.00%
13 / 13
 getHelpersDefault
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 buildCharacter
100.00% covered (success)
100.00%
1 / 1
4
100.00% covered (success)
100.00%
5 / 5
<?php
/**
 * src/EncryptionDefaults.php.
 *
 * @author      Austin Heap <me@austinheap.com>
 * @version     v0.2.0
 */
declare(strict_types=1);
namespace AustinHeap\Database\Encryption;
use RuntimeException;
/**
 * EncryptionDefaults.
 *
 * @link        https://github.com/austinheap/laravel-database-encryption
 * @link        https://packagist.org/packages/austinheap/laravel-database-encryption
 * @link        https://austinheap.github.io/laravel-database-encryption/classes/AustinHeap.Database.Encryption.EncryptionDefaults.html
 */
abstract class EncryptionDefaults
{
    /**
     * Shared default enabled flag.
     *
     * @var bool
     */
    public const DEFAULT_ENABLED = false;
    /**
     * Shared default versioning flag.
     *
     * @var bool
     */
    public const DEFAULT_VERSIONING = true;
    /**
     * Shared default prefix.
     *
     * @var string
     */
    public const DEFAULT_PREFIX = '__LARAVEL-DATABASE-ENCRYPTED-%VERSION%__';
    /**
     * Shared default control characters.
     *
     * @var array
     */
    public const DEFAULT_CONTROL_CHARACTERS = [
        'header' => [
            'start' => 1,
            'stop'  => 4,
        ],
        'prefix' => [
            'start' => 2,
            'stop'  => 3,
        ],
        'field'   => [
            'start'     => 30,
            'delimiter' => 25,
            'stop'      => 23,
        ],
    ];
    /**
     * Shared default helpers.
     *
     * @var array
     */
    public const DEFAULT_HELPERS = [
        'database_encryption',
        'db_encryption',
        'dbencryption',
        'database_encrypt',
        'db_encrypt',
        'dbencrypt',
        'database_decrypt',
        'db_decrypt',
        'dbdecrypt',
    ];
    /**
     * Private default control characters cache.
     *
     * @var null|array
     */
    private static $defaultControlCharactersCache = null;
    /**
     * Private default prefix cache.
     *
     * @var null|string
     */
    private static $defaultPrefixCache = null;
    /**
     * @return bool
     */
    public static function isEnabledDefault(): bool
    {
        return static::DEFAULT_ENABLED;
    }
    /**
     * @return bool
     */
    public static function isDisabledDefault(): bool
    {
        return ! static::isEnabledDefault();
    }
    /**
     * @return bool
     */
    public static function isVersioningDefault(): bool
    {
        return static::DEFAULT_VERSIONING;
    }
    /**
     * @return bool
     */
    public static function isVersionlessDefault(): bool
    {
        return ! static::isVersioningDefault();
    }
    /**
     * @return string
     */
    public static function getPrefixDefault(): string
    {
        return static::DEFAULT_PREFIX;
    }
    /**
     * @return array
     */
    public static function getControlCharactersDefault(?string $type = null, bool $raw = false): array
    {
        if (is_null(self::$defaultControlCharactersCache)) {
            $characters = [];
            foreach (self::DEFAULT_CONTROL_CHARACTERS as $control => $config) {
                $characters[$control] = [];
                foreach (['start', 'delimiter', 'stop'] as $mode) {
                    if (isset($config[$mode])) {
                        $characters[$control][$mode] = self::buildCharacter($config[$mode], true);
                    }
                }
            }
            self::$defaultControlCharactersCache = $characters;
        }
        if (! is_null($type)) {
            throw_if(! array_key_exists($type, self::$defaultControlCharactersCache), RuntimeException::class,
                     'Default control characters do not exist for $type: "'.(empty($type) ? '(empty)' : $type).'".');
            return self::$defaultControlCharactersCache[$type];
        }
        return self::$defaultControlCharactersCache;
    }
    /**
     * @return array
     */
    public static function getHelpersDefault(): array
    {
        return static::DEFAULT_HELPERS;
    }
    /**
     * Builds array of character information from character.
     *
     * @return array
     */
    public static function buildCharacter($character, bool $default = false): array
    {
        throw_if(! is_int($character) && ! is_string($character), RuntimeException::class,
                 'Cannot build character array from $character type: "'.gettype($character).'".');
        return [
            'int'     => is_int($character) ? $character : ord($character),
            'string'  => is_string($character) ? $character : chr($character),
            'default' => $default,
        ];
    }
}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy