diff --git a/code/app/Http/Controllers/UploadFiles.php b/code/app/Http/Controllers/UploadFiles.php new file mode 100644 index 0000000..363e14c --- /dev/null +++ b/code/app/Http/Controllers/UploadFiles.php @@ -0,0 +1,17 @@ +file('avatar')->store('avatars'); + + return $path; + } + +} diff --git a/code/composer.json b/code/composer.json index 14e3b0e..94ba191 100755 --- a/code/composer.json +++ b/code/composer.json @@ -8,7 +8,8 @@ ], "license": "MIT", "require": { - "php": "^7.3|^8.2", + "php": "^7.3|^8.1", + "erlandmuchasaj/laravel-file-uploader": "^1.0", "faisal50x/query-filter": "^1.0", "fideloper/proxy": "^4.4", "fruitcake/laravel-cors": "^2.0", diff --git a/code/composer.lock b/code/composer.lock index 8dfa8d7..db17173 100644 --- a/code/composer.lock +++ b/code/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b6b30841da551def9c23599f31146e84", + "content-hash": "98fb3f9a3aaf4e4d715a79ecc82144eb", "packages": [ { "name": "asm89/stack-cors", @@ -488,6 +488,91 @@ ], "time": "2020-12-29T14:50:06+00:00" }, + { + "name": "erlandmuchasaj/laravel-file-uploader", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/erlandmuchasaj/laravel-file-uploader.git", + "reference": "9841bb092c381996cb5880a0f7d2abaaaaed1816" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/erlandmuchasaj/laravel-file-uploader/zipball/9841bb092c381996cb5880a0f7d2abaaaaed1816", + "reference": "9841bb092c381996cb5880a0f7d2abaaaaed1816", + "shasum": "" + }, + "require": { + "ext-exif": "*", + "ext-fileinfo": "*", + "ext-json": "*", + "illuminate/contracts": "^8|^9|^10", + "illuminate/filesystem": "^8|^9|^10", + "illuminate/http": "^8|^9|^10", + "illuminate/support": "^8|^9|^10", + "nesbot/carbon": "^2", + "php": "^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "ErlandMuchasaj\\LaravelFileUploader\\FileUploaderServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "ErlandMuchasaj\\LaravelFileUploader\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Erland Muchasaj", + "email": "erland.muchasaj@gmail.com", + "homepage": "https://erlandmuchasaj.tech/", + "role": "Developer" + } + ], + "description": "A simple package to help you easily upload files to your laravel project.", + "homepage": "https://github.com/erlandmuchasaj/laravel-file-uploader", + "keywords": [ + "cms", + "emcms", + "file", + "images", + "laravel", + "library", + "media", + "package", + "upload" + ], + "support": { + "email": "erland.muchasaj@gmail.com", + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/erlandmuchasaj/laravel-file-uploader/issues", + "source": "https://github.com/erlandmuchasaj/laravel-file-uploader" + }, + "funding": [ + { + "url": "https://ko-fi.com/erlandmuchasaj", + "type": "Ko-fi" + }, + { + "url": "https://paypal.me/emcms?country.x=AL&locale.x=en_US", + "type": "PayPal" + }, + { + "url": "https://www.patreon.com/erlandmuchasaj", + "type": "patreon" + } + ], + "time": "2023-07-11T09:35:24+00:00" + }, { "name": "faisal50x/query-filter", "version": "v1.0.6", @@ -8966,8 +9051,8 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.3|^8.2" + "php": "^7.3|^8.1" }, "platform-dev": [], - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.2.0" } diff --git a/code/config/database.php b/code/config/database.php index b42d9b3..9e679da 100755 --- a/code/config/database.php +++ b/code/config/database.php @@ -15,7 +15,7 @@ return [ | */ - 'default' => env('DB_CONNECTION', 'mysql'), + 'default' => env('DB_CONNECTION', 'sqlite'), /* |-------------------------------------------------------------------------- diff --git a/code/routes/web.php b/code/routes/web.php index b130397..94796d3 100755 --- a/code/routes/web.php +++ b/code/routes/web.php @@ -1,7 +1,8 @@ validate([ + 'file' => [ + 'required', + 'file', + 'image', + 'mimes:' . $extensions, + 'max:'.$max_size, + ] + ]); + + $file = $request->file('file'); + + //$response = FileUploader::store($file); + return redirect() + ->back() + ->with('success','File has been uploaded.') + ->with('file', $response); +})->name('files.store'); diff --git a/code/storage/debugbar/.gitignore b/code/storage/debugbar/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/code/storage/debugbar/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/code/vendor/autoload.php b/code/vendor/autoload.php index 7d4cfa0..8cb49cc 100644 --- a/code/vendor/autoload.php +++ b/code/vendor/autoload.php @@ -2,24 +2,6 @@ // autoload.php @generated by Composer -if (PHP_VERSION_ID < 50600) { - if (!headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - } - $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL; - if (!ini_get('display_errors')) { - if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { - fwrite(STDERR, $err); - } elseif (!headers_sent()) { - echo $err; - } - } - trigger_error( - $err, - E_USER_ERROR - ); -} - require_once __DIR__ . '/composer/autoload_real.php'; return ComposerAutoloaderInite02496dcc909b631cc2eec0f86cb5cfc::getLoader(); diff --git a/code/vendor/composer/ClassLoader.php b/code/vendor/composer/ClassLoader.php index 7824d8f..afef3fa 100644 --- a/code/vendor/composer/ClassLoader.php +++ b/code/vendor/composer/ClassLoader.php @@ -42,37 +42,35 @@ namespace Composer\Autoload; */ class ClassLoader { - /** @var \Closure(string):void */ - private static $includeFile; - - /** @var string|null */ + /** @var ?string */ private $vendorDir; // PSR-4 /** - * @var array> + * @var array[] + * @psalm-var array> */ private $prefixLengthsPsr4 = array(); /** - * @var array> + * @var array[] + * @psalm-var array> */ private $prefixDirsPsr4 = array(); /** - * @var list + * @var array[] + * @psalm-var array */ private $fallbackDirsPsr4 = array(); // PSR-0 /** - * List of PSR-0 prefixes - * - * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2'))) - * - * @var array>> + * @var array[] + * @psalm-var array> */ private $prefixesPsr0 = array(); /** - * @var list + * @var array[] + * @psalm-var array */ private $fallbackDirsPsr0 = array(); @@ -80,7 +78,8 @@ class ClassLoader private $useIncludePath = false; /** - * @var array + * @var string[] + * @psalm-var array */ private $classMap = array(); @@ -88,29 +87,29 @@ class ClassLoader private $classMapAuthoritative = false; /** - * @var array + * @var bool[] + * @psalm-var array */ private $missingClasses = array(); - /** @var string|null */ + /** @var ?string */ private $apcuPrefix; /** - * @var array + * @var self[] */ private static $registeredLoaders = array(); /** - * @param string|null $vendorDir + * @param ?string $vendorDir */ public function __construct($vendorDir = null) { $this->vendorDir = $vendorDir; - self::initializeIncludeClosure(); } /** - * @return array> + * @return string[] */ public function getPrefixes() { @@ -122,7 +121,8 @@ class ClassLoader } /** - * @return array> + * @return array[] + * @psalm-return array> */ public function getPrefixesPsr4() { @@ -130,7 +130,8 @@ class ClassLoader } /** - * @return list + * @return array[] + * @psalm-return array */ public function getFallbackDirs() { @@ -138,7 +139,8 @@ class ClassLoader } /** - * @return list + * @return array[] + * @psalm-return array */ public function getFallbackDirsPsr4() { @@ -146,7 +148,8 @@ class ClassLoader } /** - * @return array Array of classname => path + * @return string[] Array of classname => path + * @psalm-return array */ public function getClassMap() { @@ -154,7 +157,8 @@ class ClassLoader } /** - * @param array $classMap Class to filename map + * @param string[] $classMap Class to filename map + * @psalm-param array $classMap * * @return void */ @@ -171,25 +175,24 @@ class ClassLoader * Registers a set of PSR-0 directories for a given prefix, either * appending or prepending to the ones previously set for this prefix. * - * @param string $prefix The prefix - * @param list|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories + * @param string $prefix The prefix + * @param string[]|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories * * @return void */ public function add($prefix, $paths, $prepend = false) { - $paths = (array) $paths; if (!$prefix) { if ($prepend) { $this->fallbackDirsPsr0 = array_merge( - $paths, + (array) $paths, $this->fallbackDirsPsr0 ); } else { $this->fallbackDirsPsr0 = array_merge( $this->fallbackDirsPsr0, - $paths + (array) $paths ); } @@ -198,19 +201,19 @@ class ClassLoader $first = $prefix[0]; if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = $paths; + $this->prefixesPsr0[$first][$prefix] = (array) $paths; return; } if ($prepend) { $this->prefixesPsr0[$first][$prefix] = array_merge( - $paths, + (array) $paths, $this->prefixesPsr0[$first][$prefix] ); } else { $this->prefixesPsr0[$first][$prefix] = array_merge( $this->prefixesPsr0[$first][$prefix], - $paths + (array) $paths ); } } @@ -219,9 +222,9 @@ class ClassLoader * Registers a set of PSR-4 directories for a given namespace, either * appending or prepending to the ones previously set for this namespace. * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param list|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param string[]|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories * * @throws \InvalidArgumentException * @@ -229,18 +232,17 @@ class ClassLoader */ public function addPsr4($prefix, $paths, $prepend = false) { - $paths = (array) $paths; if (!$prefix) { // Register directories for the root namespace. if ($prepend) { $this->fallbackDirsPsr4 = array_merge( - $paths, + (array) $paths, $this->fallbackDirsPsr4 ); } else { $this->fallbackDirsPsr4 = array_merge( $this->fallbackDirsPsr4, - $paths + (array) $paths ); } } elseif (!isset($this->prefixDirsPsr4[$prefix])) { @@ -250,18 +252,18 @@ class ClassLoader throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); } $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = $paths; + $this->prefixDirsPsr4[$prefix] = (array) $paths; } elseif ($prepend) { // Prepend directories for an already registered namespace. $this->prefixDirsPsr4[$prefix] = array_merge( - $paths, + (array) $paths, $this->prefixDirsPsr4[$prefix] ); } else { // Append directories for an already registered namespace. $this->prefixDirsPsr4[$prefix] = array_merge( $this->prefixDirsPsr4[$prefix], - $paths + (array) $paths ); } } @@ -270,8 +272,8 @@ class ClassLoader * Registers a set of PSR-0 directories for a given prefix, * replacing any others previously set for this prefix. * - * @param string $prefix The prefix - * @param list|string $paths The PSR-0 base directories + * @param string $prefix The prefix + * @param string[]|string $paths The PSR-0 base directories * * @return void */ @@ -288,8 +290,8 @@ class ClassLoader * Registers a set of PSR-4 directories for a given namespace, * replacing any others previously set for this namespace. * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param list|string $paths The PSR-4 base directories + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param string[]|string $paths The PSR-4 base directories * * @throws \InvalidArgumentException * @@ -423,8 +425,7 @@ class ClassLoader public function loadClass($class) { if ($file = $this->findFile($class)) { - $includeFile = self::$includeFile; - $includeFile($file); + includeFile($file); return true; } @@ -475,9 +476,9 @@ class ClassLoader } /** - * Returns the currently registered loaders keyed by their corresponding vendor directories. + * Returns the currently registered loaders indexed by their corresponding vendor directories. * - * @return array + * @return self[] */ public static function getRegisteredLoaders() { @@ -554,26 +555,18 @@ class ClassLoader return false; } - - /** - * @return void - */ - private static function initializeIncludeClosure() - { - if (self::$includeFile !== null) { - return; - } - - /** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file - * @return void - */ - self::$includeFile = \Closure::bind(static function($file) { - include $file; - }, null, null); - } +} + +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + * + * @param string $file + * @return void + * @private + */ +function includeFile($file) +{ + include $file; } diff --git a/code/vendor/composer/InstalledVersions.php b/code/vendor/composer/InstalledVersions.php index 51e734a..d50e0c9 100644 --- a/code/vendor/composer/InstalledVersions.php +++ b/code/vendor/composer/InstalledVersions.php @@ -21,14 +21,12 @@ use Composer\Semver\VersionParser; * See also https://getcomposer.org/doc/07-runtime.md#installed-versions * * To require its presence, you can require `composer-runtime-api ^2.0` - * - * @final */ class InstalledVersions { /** * @var mixed[]|null - * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null + * @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array}|array{}|null */ private static $installed; @@ -39,7 +37,7 @@ class InstalledVersions /** * @var array[] - * @psalm-var array}> + * @psalm-var array}> */ private static $installedByVendor = array(); @@ -98,7 +96,7 @@ class InstalledVersions { foreach (self::getInstalled() as $installed) { if (isset($installed['versions'][$packageName])) { - return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false; + return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); } } @@ -119,7 +117,7 @@ class InstalledVersions */ public static function satisfies(VersionParser $parser, $packageName, $constraint) { - $constraint = $parser->parseConstraints((string) $constraint); + $constraint = $parser->parseConstraints($constraint); $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); return $provided->matches($constraint); @@ -243,7 +241,7 @@ class InstalledVersions /** * @return array - * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} + * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string} */ public static function getRootPackage() { @@ -257,7 +255,7 @@ class InstalledVersions * * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. * @return array[] - * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} + * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array} */ public static function getRawData() { @@ -280,7 +278,7 @@ class InstalledVersions * Returns the raw data of all installed.php which are currently loaded for custom implementations * * @return array[] - * @psalm-return list}> + * @psalm-return list}> */ public static function getAllRawData() { @@ -303,7 +301,7 @@ class InstalledVersions * @param array[] $data A vendor/composer/installed.php data set * @return void * - * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data + * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array} $data */ public static function reload($data) { @@ -313,7 +311,7 @@ class InstalledVersions /** * @return array[] - * @psalm-return list}> + * @psalm-return list}> */ private static function getInstalled() { @@ -328,9 +326,7 @@ class InstalledVersions if (isset(self::$installedByVendor[$vendorDir])) { $installed[] = self::$installedByVendor[$vendorDir]; } elseif (is_file($vendorDir.'/composer/installed.php')) { - /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ - $required = require $vendorDir.'/composer/installed.php'; - $installed[] = self::$installedByVendor[$vendorDir] = $required; + $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { self::$installed = $installed[count($installed) - 1]; } @@ -342,17 +338,12 @@ class InstalledVersions // only require the installed.php file if this file is loaded from its dumped location, // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 if (substr(__DIR__, -8, 1) !== 'C') { - /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ - $required = require __DIR__ . '/installed.php'; - self::$installed = $required; + self::$installed = require __DIR__ . '/installed.php'; } else { self::$installed = array(); } } - - if (self::$installed !== array()) { - $installed[] = self::$installed; - } + $installed[] = self::$installed; return $installed; } diff --git a/code/vendor/composer/LICENSE b/code/vendor/composer/LICENSE index f27399a..62ecfd8 100644 --- a/code/vendor/composer/LICENSE +++ b/code/vendor/composer/LICENSE @@ -1,4 +1,3 @@ - Copyright (c) Nils Adermann, Jordi Boggiano Permission is hereby granted, free of charge, to any person obtaining a copy @@ -18,4 +17,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/code/vendor/composer/autoload_classmap.php b/code/vendor/composer/autoload_classmap.php index a579431..5e8cd85 100644 --- a/code/vendor/composer/autoload_classmap.php +++ b/code/vendor/composer/autoload_classmap.php @@ -2,13 +2,14 @@ // autoload_classmap.php @generated by Composer -$vendorDir = dirname(__DIR__); +$vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( 'App\\Console\\Kernel' => $baseDir . '/app/Console/Kernel.php', 'App\\Exceptions\\Handler' => $baseDir . '/app/Exceptions/Handler.php', 'App\\Http\\Controllers\\Controller' => $baseDir . '/app/Http/Controllers/Controller.php', + 'App\\Http\\Controllers\\UploadFiles' => $baseDir . '/app/Http/Controllers/UploadFiles.php', 'App\\Http\\Kernel' => $baseDir . '/app/Http/Kernel.php', 'App\\Http\\Middleware\\Authenticate' => $baseDir . '/app/Http/Middleware/Authenticate.php', 'App\\Http\\Middleware\\EncryptCookies' => $baseDir . '/app/Http/Middleware/EncryptCookies.php', @@ -818,6 +819,12 @@ return array( 'Egulias\\EmailValidator\\Warning\\QuotedString' => $vendorDir . '/egulias/email-validator/src/Warning/QuotedString.php', 'Egulias\\EmailValidator\\Warning\\TLD' => $vendorDir . '/egulias/email-validator/src/Warning/TLD.php', 'Egulias\\EmailValidator\\Warning\\Warning' => $vendorDir . '/egulias/email-validator/src/Warning/Warning.php', + 'ErlandMuchasaj\\LaravelFileUploader\\Exceptions\\InvalidFile' => $vendorDir . '/erlandmuchasaj/laravel-file-uploader/src/Exceptions/InvalidFile.php', + 'ErlandMuchasaj\\LaravelFileUploader\\Exceptions\\InvalidUpload' => $vendorDir . '/erlandmuchasaj/laravel-file-uploader/src/Exceptions/InvalidUpload.php', + 'ErlandMuchasaj\\LaravelFileUploader\\Exceptions\\MissingFile' => $vendorDir . '/erlandmuchasaj/laravel-file-uploader/src/Exceptions/MissingFile.php', + 'ErlandMuchasaj\\LaravelFileUploader\\Exceptions\\UploadFailed' => $vendorDir . '/erlandmuchasaj/laravel-file-uploader/src/Exceptions/UploadFailed.php', + 'ErlandMuchasaj\\LaravelFileUploader\\FileUploader' => $vendorDir . '/erlandmuchasaj/laravel-file-uploader/src/FileUploader.php', + 'ErlandMuchasaj\\LaravelFileUploader\\FileUploaderServiceProvider' => $vendorDir . '/erlandmuchasaj/laravel-file-uploader/src/FileUploaderServiceProvider.php', 'Facade\\FlareClient\\Api' => $vendorDir . '/facade/flare-client-php/src/Api.php', 'Facade\\FlareClient\\Concerns\\HasContext' => $vendorDir . '/facade/flare-client-php/src/Concerns/HasContext.php', 'Facade\\FlareClient\\Concerns\\UsesTime' => $vendorDir . '/facade/flare-client-php/src/Concerns/UsesTime.php', diff --git a/code/vendor/composer/autoload_files.php b/code/vendor/composer/autoload_files.php index 45c3e67..acfc70c 100644 --- a/code/vendor/composer/autoload_files.php +++ b/code/vendor/composer/autoload_files.php @@ -2,39 +2,39 @@ // autoload_files.php @generated by Composer -$vendorDir = dirname(__DIR__); +$vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( - 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', - '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php', + 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', + 'ec07570ca5a812141189b1fa81503674' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert/Functions.php', + '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', - '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php', - '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php', '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php', - '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php', - 'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php', - 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => $vendorDir . '/symfony/polyfill-iconv/bootstrap.php', - 'a1105708a18b76903365ca1c4aa61b02' => $vendorDir . '/symfony/translation/Resources/functions.php', - '538ca81a9a966a6716601ecf48f4eaef' => $vendorDir . '/opis/closure/functions.php', + '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', + 'c72349b1fe8d0deeedd3a52e8aa814d8' => $vendorDir . '/mockery/mockery/library/helpers.php', + 'ce9671a430e4846b44e1c68c7611f9f5' => $vendorDir . '/mockery/mockery/library/Mockery.php', + '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php', '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', - 'e39a8b23c42d4e1452234d762b03835a' => $vendorDir . '/ramsey/uuid/src/functions.php', + '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', + 'a1105708a18b76903365ca1c4aa61b02' => $vendorDir . '/symfony/translation/Resources/functions.php', + 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => $vendorDir . '/symfony/polyfill-iconv/bootstrap.php', '2c102faa651ef8ea5874edb585946bce' => $vendorDir . '/swiftmailer/swiftmailer/lib/swift_required.php', - '9cdd7b9056abc3081735233ba9dd9c7f' => $vendorDir . '/facade/flare-client-php/src/helpers.php', + '538ca81a9a966a6716601ecf48f4eaef' => $vendorDir . '/opis/closure/functions.php', + 'e39a8b23c42d4e1452234d762b03835a' => $vendorDir . '/ramsey/uuid/src/functions.php', '265b4faa2b3a9766332744949e83bf97' => $vendorDir . '/laravel/framework/src/Illuminate/Collections/helpers.php', 'c7a3c339e7e14b60e06a2d7fcce9476b' => $vendorDir . '/laravel/framework/src/Illuminate/Events/functions.php', 'f0906e6318348a765ffb6eb24e0d0938' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/helpers.php', '58571171fd5812e6e447dce228f52f4d' => $vendorDir . '/laravel/framework/src/Illuminate/Support/helpers.php', + '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php', + '9cdd7b9056abc3081735233ba9dd9c7f' => $vendorDir . '/facade/flare-client-php/src/helpers.php', '6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php', '801c31d8ed748cfa537fa45402288c95' => $vendorDir . '/psy/psysh/src/functions.php', + 'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php', '4a1f389d6ce373bda9e57857d3b61c84' => $vendorDir . '/barryvdh/laravel-debugbar/src/helpers.php', 'ed962a97bd972bc82007176b647d4e36' => $vendorDir . '/facade/ignition/src/helpers.php', - '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', - 'c72349b1fe8d0deeedd3a52e8aa814d8' => $vendorDir . '/mockery/mockery/library/helpers.php', - 'ce9671a430e4846b44e1c68c7611f9f5' => $vendorDir . '/mockery/mockery/library/Mockery.php', - 'ec07570ca5a812141189b1fa81503674' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert/Functions.php', '377b22b161c09ed6e5152de788ca020a' => $vendorDir . '/spatie/laravel-permission/src/helpers.php', ); diff --git a/code/vendor/composer/autoload_namespaces.php b/code/vendor/composer/autoload_namespaces.php index 60f0c14..47ff9e5 100644 --- a/code/vendor/composer/autoload_namespaces.php +++ b/code/vendor/composer/autoload_namespaces.php @@ -2,7 +2,7 @@ // autoload_namespaces.php @generated by Composer -$vendorDir = dirname(__DIR__); +$vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( diff --git a/code/vendor/composer/autoload_psr4.php b/code/vendor/composer/autoload_psr4.php index 139b2b9..7a755f6 100644 --- a/code/vendor/composer/autoload_psr4.php +++ b/code/vendor/composer/autoload_psr4.php @@ -2,7 +2,7 @@ // autoload_psr4.php @generated by Composer -$vendorDir = dirname(__DIR__); +$vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( @@ -79,6 +79,7 @@ return array( 'Facade\\Ignition\\' => array($vendorDir . '/facade/ignition/src'), 'Facade\\IgnitionContracts\\' => array($vendorDir . '/facade/ignition-contracts/src'), 'Facade\\FlareClient\\' => array($vendorDir . '/facade/flare-client-php/src'), + 'ErlandMuchasaj\\LaravelFileUploader\\' => array($vendorDir . '/erlandmuchasaj/laravel-file-uploader/src'), 'Egulias\\EmailValidator\\' => array($vendorDir . '/egulias/email-validator/src'), 'Dotenv\\' => array($vendorDir . '/vlucas/phpdotenv/src'), 'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'), diff --git a/code/vendor/composer/autoload_real.php b/code/vendor/composer/autoload_real.php index ebd5d55..7518f51 100644 --- a/code/vendor/composer/autoload_real.php +++ b/code/vendor/composer/autoload_real.php @@ -25,26 +25,56 @@ class ComposerAutoloaderInite02496dcc909b631cc2eec0f86cb5cfc require __DIR__ . '/platform_check.php'; spl_autoload_register(array('ComposerAutoloaderInite02496dcc909b631cc2eec0f86cb5cfc', 'loadClassLoader'), true, true); - self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); + self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__))); spl_autoload_unregister(array('ComposerAutoloaderInite02496dcc909b631cc2eec0f86cb5cfc', 'loadClassLoader')); - require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInite02496dcc909b631cc2eec0f86cb5cfc::getInitializer($loader)); + $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); + if ($useStaticLoader) { + require __DIR__ . '/autoload_static.php'; + + call_user_func(\Composer\Autoload\ComposerStaticInite02496dcc909b631cc2eec0f86cb5cfc::getInitializer($loader)); + } else { + $map = require __DIR__ . '/autoload_namespaces.php'; + foreach ($map as $namespace => $path) { + $loader->set($namespace, $path); + } + + $map = require __DIR__ . '/autoload_psr4.php'; + foreach ($map as $namespace => $path) { + $loader->setPsr4($namespace, $path); + } + + $classMap = require __DIR__ . '/autoload_classmap.php'; + if ($classMap) { + $loader->addClassMap($classMap); + } + } $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInite02496dcc909b631cc2eec0f86cb5cfc::$files; - $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { - if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { - $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; - - require $file; - } - }, null, null); - foreach ($filesToLoad as $fileIdentifier => $file) { - $requireFile($fileIdentifier, $file); + if ($useStaticLoader) { + $includeFiles = Composer\Autoload\ComposerStaticInite02496dcc909b631cc2eec0f86cb5cfc::$files; + } else { + $includeFiles = require __DIR__ . '/autoload_files.php'; + } + foreach ($includeFiles as $fileIdentifier => $file) { + composerRequiree02496dcc909b631cc2eec0f86cb5cfc($fileIdentifier, $file); } return $loader; } } + +/** + * @param string $fileIdentifier + * @param string $file + * @return void + */ +function composerRequiree02496dcc909b631cc2eec0f86cb5cfc($fileIdentifier, $file) +{ + if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { + $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; + + require $file; + } +} diff --git a/code/vendor/composer/autoload_static.php b/code/vendor/composer/autoload_static.php index 5b7022f..ec6925a 100644 --- a/code/vendor/composer/autoload_static.php +++ b/code/vendor/composer/autoload_static.php @@ -7,36 +7,36 @@ namespace Composer\Autoload; class ComposerStaticInite02496dcc909b631cc2eec0f86cb5cfc { public static $files = array ( - 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', - '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', + 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', + 'ec07570ca5a812141189b1fa81503674' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert/Functions.php', + '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', - '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php', - '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php', '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php', - '8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php', - 'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php', - 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => __DIR__ . '/..' . '/symfony/polyfill-iconv/bootstrap.php', - 'a1105708a18b76903365ca1c4aa61b02' => __DIR__ . '/..' . '/symfony/translation/Resources/functions.php', - '538ca81a9a966a6716601ecf48f4eaef' => __DIR__ . '/..' . '/opis/closure/functions.php', + '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', + 'c72349b1fe8d0deeedd3a52e8aa814d8' => __DIR__ . '/..' . '/mockery/mockery/library/helpers.php', + 'ce9671a430e4846b44e1c68c7611f9f5' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery.php', + '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php', '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', - 'e39a8b23c42d4e1452234d762b03835a' => __DIR__ . '/..' . '/ramsey/uuid/src/functions.php', + '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', + 'a1105708a18b76903365ca1c4aa61b02' => __DIR__ . '/..' . '/symfony/translation/Resources/functions.php', + 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => __DIR__ . '/..' . '/symfony/polyfill-iconv/bootstrap.php', '2c102faa651ef8ea5874edb585946bce' => __DIR__ . '/..' . '/swiftmailer/swiftmailer/lib/swift_required.php', - '9cdd7b9056abc3081735233ba9dd9c7f' => __DIR__ . '/..' . '/facade/flare-client-php/src/helpers.php', + '538ca81a9a966a6716601ecf48f4eaef' => __DIR__ . '/..' . '/opis/closure/functions.php', + 'e39a8b23c42d4e1452234d762b03835a' => __DIR__ . '/..' . '/ramsey/uuid/src/functions.php', '265b4faa2b3a9766332744949e83bf97' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections/helpers.php', 'c7a3c339e7e14b60e06a2d7fcce9476b' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Events/functions.php', 'f0906e6318348a765ffb6eb24e0d0938' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/helpers.php', '58571171fd5812e6e447dce228f52f4d' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/helpers.php', + '8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php', + '9cdd7b9056abc3081735233ba9dd9c7f' => __DIR__ . '/..' . '/facade/flare-client-php/src/helpers.php', '6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php', '801c31d8ed748cfa537fa45402288c95' => __DIR__ . '/..' . '/psy/psysh/src/functions.php', + 'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php', '4a1f389d6ce373bda9e57857d3b61c84' => __DIR__ . '/..' . '/barryvdh/laravel-debugbar/src/helpers.php', 'ed962a97bd972bc82007176b647d4e36' => __DIR__ . '/..' . '/facade/ignition/src/helpers.php', - '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', - 'c72349b1fe8d0deeedd3a52e8aa814d8' => __DIR__ . '/..' . '/mockery/mockery/library/helpers.php', - 'ce9671a430e4846b44e1c68c7611f9f5' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery.php', - 'ec07570ca5a812141189b1fa81503674' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert/Functions.php', '377b22b161c09ed6e5152de788ca020a' => __DIR__ . '/..' . '/spatie/laravel-permission/src/helpers.php', ); @@ -158,6 +158,7 @@ class ComposerStaticInite02496dcc909b631cc2eec0f86cb5cfc ), 'E' => array ( + 'ErlandMuchasaj\\LaravelFileUploader\\' => 35, 'Egulias\\EmailValidator\\' => 23, ), 'D' => @@ -492,6 +493,10 @@ class ComposerStaticInite02496dcc909b631cc2eec0f86cb5cfc array ( 0 => __DIR__ . '/..' . '/facade/flare-client-php/src', ), + 'ErlandMuchasaj\\LaravelFileUploader\\' => + array ( + 0 => __DIR__ . '/..' . '/erlandmuchasaj/laravel-file-uploader/src', + ), 'Egulias\\EmailValidator\\' => array ( 0 => __DIR__ . '/..' . '/egulias/email-validator/src', @@ -600,6 +605,7 @@ class ComposerStaticInite02496dcc909b631cc2eec0f86cb5cfc 'App\\Console\\Kernel' => __DIR__ . '/../..' . '/app/Console/Kernel.php', 'App\\Exceptions\\Handler' => __DIR__ . '/../..' . '/app/Exceptions/Handler.php', 'App\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/app/Http/Controllers/Controller.php', + 'App\\Http\\Controllers\\UploadFiles' => __DIR__ . '/../..' . '/app/Http/Controllers/UploadFiles.php', 'App\\Http\\Kernel' => __DIR__ . '/../..' . '/app/Http/Kernel.php', 'App\\Http\\Middleware\\Authenticate' => __DIR__ . '/../..' . '/app/Http/Middleware/Authenticate.php', 'App\\Http\\Middleware\\EncryptCookies' => __DIR__ . '/../..' . '/app/Http/Middleware/EncryptCookies.php', @@ -1409,6 +1415,12 @@ class ComposerStaticInite02496dcc909b631cc2eec0f86cb5cfc 'Egulias\\EmailValidator\\Warning\\QuotedString' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/QuotedString.php', 'Egulias\\EmailValidator\\Warning\\TLD' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/TLD.php', 'Egulias\\EmailValidator\\Warning\\Warning' => __DIR__ . '/..' . '/egulias/email-validator/src/Warning/Warning.php', + 'ErlandMuchasaj\\LaravelFileUploader\\Exceptions\\InvalidFile' => __DIR__ . '/..' . '/erlandmuchasaj/laravel-file-uploader/src/Exceptions/InvalidFile.php', + 'ErlandMuchasaj\\LaravelFileUploader\\Exceptions\\InvalidUpload' => __DIR__ . '/..' . '/erlandmuchasaj/laravel-file-uploader/src/Exceptions/InvalidUpload.php', + 'ErlandMuchasaj\\LaravelFileUploader\\Exceptions\\MissingFile' => __DIR__ . '/..' . '/erlandmuchasaj/laravel-file-uploader/src/Exceptions/MissingFile.php', + 'ErlandMuchasaj\\LaravelFileUploader\\Exceptions\\UploadFailed' => __DIR__ . '/..' . '/erlandmuchasaj/laravel-file-uploader/src/Exceptions/UploadFailed.php', + 'ErlandMuchasaj\\LaravelFileUploader\\FileUploader' => __DIR__ . '/..' . '/erlandmuchasaj/laravel-file-uploader/src/FileUploader.php', + 'ErlandMuchasaj\\LaravelFileUploader\\FileUploaderServiceProvider' => __DIR__ . '/..' . '/erlandmuchasaj/laravel-file-uploader/src/FileUploaderServiceProvider.php', 'Facade\\FlareClient\\Api' => __DIR__ . '/..' . '/facade/flare-client-php/src/Api.php', 'Facade\\FlareClient\\Concerns\\HasContext' => __DIR__ . '/..' . '/facade/flare-client-php/src/Concerns/HasContext.php', 'Facade\\FlareClient\\Concerns\\UsesTime' => __DIR__ . '/..' . '/facade/flare-client-php/src/Concerns/UsesTime.php', diff --git a/code/vendor/composer/installed.json b/code/vendor/composer/installed.json index 05d7364..4781a36 100644 --- a/code/vendor/composer/installed.json +++ b/code/vendor/composer/installed.json @@ -1321,6 +1321,94 @@ ], "install-path": "../egulias/email-validator" }, + { + "name": "erlandmuchasaj/laravel-file-uploader", + "version": "1.0.5", + "version_normalized": "1.0.5.0", + "source": { + "type": "git", + "url": "https://github.com/erlandmuchasaj/laravel-file-uploader.git", + "reference": "9841bb092c381996cb5880a0f7d2abaaaaed1816" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/erlandmuchasaj/laravel-file-uploader/zipball/9841bb092c381996cb5880a0f7d2abaaaaed1816", + "reference": "9841bb092c381996cb5880a0f7d2abaaaaed1816", + "shasum": "" + }, + "require": { + "ext-exif": "*", + "ext-fileinfo": "*", + "ext-json": "*", + "illuminate/contracts": "^8|^9|^10", + "illuminate/filesystem": "^8|^9|^10", + "illuminate/http": "^8|^9|^10", + "illuminate/support": "^8|^9|^10", + "nesbot/carbon": "^2", + "php": "^8.0" + }, + "time": "2023-07-11T09:35:24+00:00", + "type": "library", + "extra": { + "laravel": { + "providers": [ + "ErlandMuchasaj\\LaravelFileUploader\\FileUploaderServiceProvider" + ] + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "ErlandMuchasaj\\LaravelFileUploader\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Erland Muchasaj", + "email": "erland.muchasaj@gmail.com", + "homepage": "https://erlandmuchasaj.tech/", + "role": "Developer" + } + ], + "description": "A simple package to help you easily upload files to your laravel project.", + "homepage": "https://github.com/erlandmuchasaj/laravel-file-uploader", + "keywords": [ + "cms", + "emcms", + "file", + "images", + "laravel", + "library", + "media", + "package", + "upload" + ], + "support": { + "email": "erland.muchasaj@gmail.com", + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/erlandmuchasaj/laravel-file-uploader/issues", + "source": "https://github.com/erlandmuchasaj/laravel-file-uploader" + }, + "funding": [ + { + "url": "https://ko-fi.com/erlandmuchasaj", + "type": "Ko-fi" + }, + { + "url": "https://paypal.me/emcms?country.x=AL&locale.x=en_US", + "type": "PayPal" + }, + { + "url": "https://www.patreon.com/erlandmuchasaj", + "type": "patreon" + } + ], + "install-path": "../erlandmuchasaj/laravel-file-uploader" + }, { "name": "facade/flare-client-php", "version": "1.10.0", diff --git a/code/vendor/composer/installed.php b/code/vendor/composer/installed.php index 12e7d91..2c349d2 100644 --- a/code/vendor/composer/installed.php +++ b/code/vendor/composer/installed.php @@ -1,76 +1,76 @@ array( - 'name' => 'laravel/laravel', - 'pretty_version' => '1.0.0+no-version-set', - 'version' => '1.0.0.0', - 'reference' => NULL, + 'pretty_version' => 'dev-master', + 'version' => 'dev-master', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), + 'reference' => '35fa74ee8aba84a0939ef239f76046e0c6c35351', + 'name' => 'laravel/laravel', 'dev' => true, ), 'versions' => array( 'asm89/stack-cors' => array( 'pretty_version' => 'v2.1.1', 'version' => '2.1.1.0', - 'reference' => '73e5b88775c64ccc0b84fb60836b30dc9d92ac4a', 'type' => 'library', 'install_path' => __DIR__ . '/../asm89/stack-cors', 'aliases' => array(), + 'reference' => '73e5b88775c64ccc0b84fb60836b30dc9d92ac4a', 'dev_requirement' => false, ), 'barryvdh/laravel-debugbar' => array( 'pretty_version' => 'v3.7.0', 'version' => '3.7.0.0', - 'reference' => '3372ed65e6d2039d663ed19aa699956f9d346271', 'type' => 'library', 'install_path' => __DIR__ . '/../barryvdh/laravel-debugbar', 'aliases' => array(), + 'reference' => '3372ed65e6d2039d663ed19aa699956f9d346271', 'dev_requirement' => true, ), 'barryvdh/laravel-ide-helper' => array( 'pretty_version' => 'v2.13.0', 'version' => '2.13.0.0', - 'reference' => '81d5b223ff067a1f38e14c100997e153b837fe4a', 'type' => 'library', 'install_path' => __DIR__ . '/../barryvdh/laravel-ide-helper', 'aliases' => array(), + 'reference' => '81d5b223ff067a1f38e14c100997e153b837fe4a', 'dev_requirement' => true, ), 'barryvdh/reflection-docblock' => array( 'pretty_version' => 'v2.1.1', 'version' => '2.1.1.0', - 'reference' => 'e6811e927f0ecc37cc4deaa6627033150343e597', 'type' => 'library', 'install_path' => __DIR__ . '/../barryvdh/reflection-docblock', 'aliases' => array(), + 'reference' => 'e6811e927f0ecc37cc4deaa6627033150343e597', 'dev_requirement' => true, ), 'brick/math' => array( 'pretty_version' => '0.11.0', 'version' => '0.11.0.0', - 'reference' => '0ad82ce168c82ba30d1c01ec86116ab52f589478', 'type' => 'library', 'install_path' => __DIR__ . '/../brick/math', 'aliases' => array(), + 'reference' => '0ad82ce168c82ba30d1c01ec86116ab52f589478', 'dev_requirement' => false, ), 'composer/class-map-generator' => array( 'pretty_version' => '1.1.0', 'version' => '1.1.0.0', - 'reference' => '953cc4ea32e0c31f2185549c7d216d7921f03da9', 'type' => 'library', 'install_path' => __DIR__ . '/./class-map-generator', 'aliases' => array(), + 'reference' => '953cc4ea32e0c31f2185549c7d216d7921f03da9', 'dev_requirement' => true, ), 'composer/pcre' => array( 'pretty_version' => '3.1.1', 'version' => '3.1.1.0', - 'reference' => '00104306927c7a0919b4ced2aaa6782c1e61a3c9', 'type' => 'library', 'install_path' => __DIR__ . '/./pcre', 'aliases' => array(), + 'reference' => '00104306927c7a0919b4ced2aaa6782c1e61a3c9', 'dev_requirement' => true, ), 'cordoval/hamcrest-php' => array( @@ -88,208 +88,217 @@ 'dflydev/dot-access-data' => array( 'pretty_version' => 'v3.0.2', 'version' => '3.0.2.0', - 'reference' => 'f41715465d65213d644d3141a6a93081be5d3549', 'type' => 'library', 'install_path' => __DIR__ . '/../dflydev/dot-access-data', 'aliases' => array(), + 'reference' => 'f41715465d65213d644d3141a6a93081be5d3549', 'dev_requirement' => false, ), 'doctrine/cache' => array( 'pretty_version' => '2.2.0', 'version' => '2.2.0.0', - 'reference' => '1ca8f21980e770095a31456042471a57bc4c68fb', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/cache', 'aliases' => array(), + 'reference' => '1ca8f21980e770095a31456042471a57bc4c68fb', 'dev_requirement' => true, ), 'doctrine/dbal' => array( 'pretty_version' => '3.7.1', 'version' => '3.7.1.0', - 'reference' => '5b7bd66c9ff58c04c5474ab85edce442f8081cb2', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/dbal', 'aliases' => array(), + 'reference' => '5b7bd66c9ff58c04c5474ab85edce442f8081cb2', 'dev_requirement' => true, ), 'doctrine/deprecations' => array( 'pretty_version' => '1.1.2', 'version' => '1.1.2.0', - 'reference' => '4f2d4f2836e7ec4e7a8625e75c6aa916004db931', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/deprecations', 'aliases' => array(), + 'reference' => '4f2d4f2836e7ec4e7a8625e75c6aa916004db931', 'dev_requirement' => true, ), 'doctrine/event-manager' => array( 'pretty_version' => '2.0.0', 'version' => '2.0.0.0', - 'reference' => '750671534e0241a7c50ea5b43f67e23eb5c96f32', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/event-manager', 'aliases' => array(), + 'reference' => '750671534e0241a7c50ea5b43f67e23eb5c96f32', 'dev_requirement' => true, ), 'doctrine/inflector' => array( 'pretty_version' => '2.0.8', 'version' => '2.0.8.0', - 'reference' => 'f9301a5b2fb1216b2b08f02ba04dc45423db6bff', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/inflector', 'aliases' => array(), + 'reference' => 'f9301a5b2fb1216b2b08f02ba04dc45423db6bff', 'dev_requirement' => false, ), 'doctrine/instantiator' => array( 'pretty_version' => '2.0.0', 'version' => '2.0.0.0', - 'reference' => 'c6222283fa3f4ac679f8b9ced9a4e23f163e80d0', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/instantiator', 'aliases' => array(), + 'reference' => 'c6222283fa3f4ac679f8b9ced9a4e23f163e80d0', 'dev_requirement' => true, ), 'doctrine/lexer' => array( 'pretty_version' => '1.2.3', 'version' => '1.2.3.0', - 'reference' => 'c268e882d4dbdd85e36e4ad69e02dc284f89d229', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/lexer', 'aliases' => array(), + 'reference' => 'c268e882d4dbdd85e36e4ad69e02dc284f89d229', 'dev_requirement' => false, ), 'dragonmantank/cron-expression' => array( 'pretty_version' => 'v3.3.3', 'version' => '3.3.3.0', - 'reference' => 'adfb1f505deb6384dc8b39804c5065dd3c8c8c0a', 'type' => 'library', 'install_path' => __DIR__ . '/../dragonmantank/cron-expression', 'aliases' => array(), + 'reference' => 'adfb1f505deb6384dc8b39804c5065dd3c8c8c0a', 'dev_requirement' => false, ), 'egulias/email-validator' => array( 'pretty_version' => '2.1.25', 'version' => '2.1.25.0', - 'reference' => '0dbf5d78455d4d6a41d186da50adc1122ec066f4', 'type' => 'library', 'install_path' => __DIR__ . '/../egulias/email-validator', 'aliases' => array(), + 'reference' => '0dbf5d78455d4d6a41d186da50adc1122ec066f4', + 'dev_requirement' => false, + ), + 'erlandmuchasaj/laravel-file-uploader' => array( + 'pretty_version' => '1.0.5', + 'version' => '1.0.5.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../erlandmuchasaj/laravel-file-uploader', + 'aliases' => array(), + 'reference' => '9841bb092c381996cb5880a0f7d2abaaaaed1816', 'dev_requirement' => false, ), 'facade/flare-client-php' => array( 'pretty_version' => '1.10.0', 'version' => '1.10.0.0', - 'reference' => '213fa2c69e120bca4c51ba3e82ed1834ef3f41b8', 'type' => 'library', 'install_path' => __DIR__ . '/../facade/flare-client-php', 'aliases' => array(), + 'reference' => '213fa2c69e120bca4c51ba3e82ed1834ef3f41b8', 'dev_requirement' => true, ), 'facade/ignition' => array( 'pretty_version' => '2.17.7', 'version' => '2.17.7.0', - 'reference' => 'b4f5955825bb4b74cba0f94001761c46335c33e9', 'type' => 'library', 'install_path' => __DIR__ . '/../facade/ignition', 'aliases' => array(), + 'reference' => 'b4f5955825bb4b74cba0f94001761c46335c33e9', 'dev_requirement' => true, ), 'facade/ignition-contracts' => array( 'pretty_version' => '1.0.2', 'version' => '1.0.2.0', - 'reference' => '3c921a1cdba35b68a7f0ccffc6dffc1995b18267', 'type' => 'library', 'install_path' => __DIR__ . '/../facade/ignition-contracts', 'aliases' => array(), + 'reference' => '3c921a1cdba35b68a7f0ccffc6dffc1995b18267', 'dev_requirement' => true, ), 'faisal50x/query-filter' => array( 'pretty_version' => 'v1.0.6', 'version' => '1.0.6.0', - 'reference' => 'b1f19b49b5765b9d57128cd846bc46dda0347271', 'type' => 'library', 'install_path' => __DIR__ . '/../faisal50x/query-filter', 'aliases' => array(), + 'reference' => 'b1f19b49b5765b9d57128cd846bc46dda0347271', 'dev_requirement' => false, ), 'fakerphp/faker' => array( 'pretty_version' => 'v1.23.0', 'version' => '1.23.0.0', - 'reference' => 'e3daa170d00fde61ea7719ef47bb09bb8f1d9b01', 'type' => 'library', 'install_path' => __DIR__ . '/../fakerphp/faker', 'aliases' => array(), + 'reference' => 'e3daa170d00fde61ea7719ef47bb09bb8f1d9b01', 'dev_requirement' => true, ), 'fideloper/proxy' => array( 'pretty_version' => '4.4.2', 'version' => '4.4.2.0', - 'reference' => 'a751f2bc86dd8e6cfef12dc0cbdada82f5a18750', 'type' => 'library', 'install_path' => __DIR__ . '/../fideloper/proxy', 'aliases' => array(), + 'reference' => 'a751f2bc86dd8e6cfef12dc0cbdada82f5a18750', 'dev_requirement' => false, ), 'filp/whoops' => array( 'pretty_version' => '2.15.4', 'version' => '2.15.4.0', - 'reference' => 'a139776fa3f5985a50b509f2a02ff0f709d2a546', 'type' => 'library', 'install_path' => __DIR__ . '/../filp/whoops', 'aliases' => array(), + 'reference' => 'a139776fa3f5985a50b509f2a02ff0f709d2a546', 'dev_requirement' => true, ), 'fruitcake/laravel-cors' => array( 'pretty_version' => 'v2.2.0', 'version' => '2.2.0.0', - 'reference' => '783a74f5e3431d7b9805be8afb60fd0a8f743534', 'type' => 'library', 'install_path' => __DIR__ . '/../fruitcake/laravel-cors', 'aliases' => array(), + 'reference' => '783a74f5e3431d7b9805be8afb60fd0a8f743534', 'dev_requirement' => false, ), 'graham-campbell/result-type' => array( 'pretty_version' => 'v1.1.1', 'version' => '1.1.1.0', - 'reference' => '672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831', 'type' => 'library', 'install_path' => __DIR__ . '/../graham-campbell/result-type', 'aliases' => array(), + 'reference' => '672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831', 'dev_requirement' => false, ), 'guzzlehttp/guzzle' => array( 'pretty_version' => '7.8.0', 'version' => '7.8.0.0', - 'reference' => '1110f66a6530a40fe7aea0378fe608ee2b2248f9', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/guzzle', 'aliases' => array(), + 'reference' => '1110f66a6530a40fe7aea0378fe608ee2b2248f9', 'dev_requirement' => false, ), 'guzzlehttp/promises' => array( 'pretty_version' => '2.0.1', 'version' => '2.0.1.0', - 'reference' => '111166291a0f8130081195ac4556a5587d7f1b5d', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/promises', 'aliases' => array(), + 'reference' => '111166291a0f8130081195ac4556a5587d7f1b5d', 'dev_requirement' => false, ), 'guzzlehttp/psr7' => array( 'pretty_version' => '2.6.1', 'version' => '2.6.1.0', - 'reference' => 'be45764272e8873c72dbe3d2edcfdfcc3bc9f727', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/psr7', 'aliases' => array(), + 'reference' => 'be45764272e8873c72dbe3d2edcfdfcc3bc9f727', 'dev_requirement' => false, ), 'hamcrest/hamcrest-php' => array( 'pretty_version' => 'v2.0.1', 'version' => '2.0.1.0', - 'reference' => '8c3d0a3f6af734494ad8f6fbbee0ba92422859f3', 'type' => 'library', 'install_path' => __DIR__ . '/../hamcrest/hamcrest-php', 'aliases' => array(), + 'reference' => '8c3d0a3f6af734494ad8f6fbbee0ba92422859f3', 'dev_requirement' => true, ), 'illuminate/auth' => array( @@ -487,109 +496,109 @@ 'laravel/framework' => array( 'pretty_version' => 'v8.83.27', 'version' => '8.83.27.0', - 'reference' => 'e1afe088b4ca613fb96dc57e6d8dbcb8cc2c6b49', 'type' => 'library', 'install_path' => __DIR__ . '/../laravel/framework', 'aliases' => array(), + 'reference' => 'e1afe088b4ca613fb96dc57e6d8dbcb8cc2c6b49', 'dev_requirement' => false, ), 'laravel/laravel' => array( - 'pretty_version' => '1.0.0+no-version-set', - 'version' => '1.0.0.0', - 'reference' => NULL, + 'pretty_version' => 'dev-master', + 'version' => 'dev-master', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), + 'reference' => '35fa74ee8aba84a0939ef239f76046e0c6c35351', 'dev_requirement' => false, ), 'laravel/serializable-closure' => array( 'pretty_version' => 'v1.3.2', 'version' => '1.3.2.0', - 'reference' => '076fe2cf128bd54b4341cdc6d49b95b34e101e4c', 'type' => 'library', 'install_path' => __DIR__ . '/../laravel/serializable-closure', 'aliases' => array(), + 'reference' => '076fe2cf128bd54b4341cdc6d49b95b34e101e4c', 'dev_requirement' => false, ), 'laravel/telescope' => array( 'pretty_version' => 'v4.17.2', 'version' => '4.17.2.0', - 'reference' => '64da53ee46b99ef328458eaed32202b51e325a11', 'type' => 'library', 'install_path' => __DIR__ . '/../laravel/telescope', 'aliases' => array(), + 'reference' => '64da53ee46b99ef328458eaed32202b51e325a11', 'dev_requirement' => true, ), 'laravel/tinker' => array( 'pretty_version' => 'v2.8.2', 'version' => '2.8.2.0', - 'reference' => 'b936d415b252b499e8c3b1f795cd4fc20f57e1f3', 'type' => 'library', 'install_path' => __DIR__ . '/../laravel/tinker', 'aliases' => array(), + 'reference' => 'b936d415b252b499e8c3b1f795cd4fc20f57e1f3', 'dev_requirement' => false, ), 'league/commonmark' => array( 'pretty_version' => '2.4.1', 'version' => '2.4.1.0', - 'reference' => '3669d6d5f7a47a93c08ddff335e6d945481a1dd5', 'type' => 'library', 'install_path' => __DIR__ . '/../league/commonmark', 'aliases' => array(), + 'reference' => '3669d6d5f7a47a93c08ddff335e6d945481a1dd5', 'dev_requirement' => false, ), 'league/config' => array( 'pretty_version' => 'v1.2.0', 'version' => '1.2.0.0', - 'reference' => '754b3604fb2984c71f4af4a9cbe7b57f346ec1f3', 'type' => 'library', 'install_path' => __DIR__ . '/../league/config', 'aliases' => array(), + 'reference' => '754b3604fb2984c71f4af4a9cbe7b57f346ec1f3', 'dev_requirement' => false, ), 'league/flysystem' => array( 'pretty_version' => '1.1.10', 'version' => '1.1.10.0', - 'reference' => '3239285c825c152bcc315fe0e87d6b55f5972ed1', 'type' => 'library', 'install_path' => __DIR__ . '/../league/flysystem', 'aliases' => array(), + 'reference' => '3239285c825c152bcc315fe0e87d6b55f5972ed1', 'dev_requirement' => false, ), 'league/mime-type-detection' => array( 'pretty_version' => '1.14.0', 'version' => '1.14.0.0', - 'reference' => 'b6a5854368533df0295c5761a0253656a2e52d9e', 'type' => 'library', 'install_path' => __DIR__ . '/../league/mime-type-detection', 'aliases' => array(), + 'reference' => 'b6a5854368533df0295c5761a0253656a2e52d9e', 'dev_requirement' => false, ), 'maximebf/debugbar' => array( 'pretty_version' => 'v1.19.1', 'version' => '1.19.1.0', - 'reference' => '03dd40a1826f4d585ef93ef83afa2a9874a00523', 'type' => 'library', 'install_path' => __DIR__ . '/../maximebf/debugbar', 'aliases' => array(), + 'reference' => '03dd40a1826f4d585ef93ef83afa2a9874a00523', 'dev_requirement' => true, ), 'mockery/mockery' => array( 'pretty_version' => '1.6.6', 'version' => '1.6.6.0', - 'reference' => 'b8e0bb7d8c604046539c1115994632c74dcb361e', 'type' => 'library', 'install_path' => __DIR__ . '/../mockery/mockery', 'aliases' => array(), + 'reference' => 'b8e0bb7d8c604046539c1115994632c74dcb361e', 'dev_requirement' => true, ), 'monolog/monolog' => array( 'pretty_version' => '2.9.2', 'version' => '2.9.2.0', - 'reference' => '437cb3628f4cf6042cc10ae97fc2b8472e48ca1f', 'type' => 'library', 'install_path' => __DIR__ . '/../monolog/monolog', 'aliases' => array(), + 'reference' => '437cb3628f4cf6042cc10ae97fc2b8472e48ca1f', 'dev_requirement' => false, ), 'mtdowling/cron-expression' => array( @@ -601,208 +610,208 @@ 'myclabs/deep-copy' => array( 'pretty_version' => '1.11.1', 'version' => '1.11.1.0', - 'reference' => '7284c22080590fb39f2ffa3e9057f10a4ddd0e0c', 'type' => 'library', 'install_path' => __DIR__ . '/../myclabs/deep-copy', 'aliases' => array(), + 'reference' => '7284c22080590fb39f2ffa3e9057f10a4ddd0e0c', 'dev_requirement' => true, ), 'nesbot/carbon' => array( 'pretty_version' => '2.71.0', 'version' => '2.71.0.0', - 'reference' => '98276233188583f2ff845a0f992a235472d9466a', 'type' => 'library', 'install_path' => __DIR__ . '/../nesbot/carbon', 'aliases' => array(), + 'reference' => '98276233188583f2ff845a0f992a235472d9466a', 'dev_requirement' => false, ), 'nette/schema' => array( 'pretty_version' => 'v1.2.5', 'version' => '1.2.5.0', - 'reference' => '0462f0166e823aad657c9224d0f849ecac1ba10a', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/schema', 'aliases' => array(), + 'reference' => '0462f0166e823aad657c9224d0f849ecac1ba10a', 'dev_requirement' => false, ), 'nette/utils' => array( 'pretty_version' => 'v4.0.3', 'version' => '4.0.3.0', - 'reference' => 'a9d127dd6a203ce6d255b2e2db49759f7506e015', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/utils', 'aliases' => array(), + 'reference' => 'a9d127dd6a203ce6d255b2e2db49759f7506e015', 'dev_requirement' => false, ), 'nikic/php-parser' => array( 'pretty_version' => 'v4.17.1', 'version' => '4.17.1.0', - 'reference' => 'a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), + 'reference' => 'a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d', 'dev_requirement' => false, ), 'nunomaduro/collision' => array( 'pretty_version' => 'v5.11.0', 'version' => '5.11.0.0', - 'reference' => '8b610eef8582ccdc05d8f2ab23305e2d37049461', 'type' => 'library', 'install_path' => __DIR__ . '/../nunomaduro/collision', 'aliases' => array(), + 'reference' => '8b610eef8582ccdc05d8f2ab23305e2d37049461', 'dev_requirement' => true, ), 'opcodesio/log-viewer' => array( 'pretty_version' => 'v3.1.5', 'version' => '3.1.5.0', - 'reference' => '69d886a779611da501841148314b03b2c9a52108', 'type' => 'library', 'install_path' => __DIR__ . '/../opcodesio/log-viewer', 'aliases' => array(), + 'reference' => '69d886a779611da501841148314b03b2c9a52108', 'dev_requirement' => false, ), 'opcodesio/mail-parser' => array( 'pretty_version' => 'v0.1.5', 'version' => '0.1.5.0', - 'reference' => '7668596baa73ef2678ab6888f1a4639d7d054f21', 'type' => 'library', 'install_path' => __DIR__ . '/../opcodesio/mail-parser', 'aliases' => array(), + 'reference' => '7668596baa73ef2678ab6888f1a4639d7d054f21', 'dev_requirement' => false, ), 'opis/closure' => array( 'pretty_version' => '3.6.3', 'version' => '3.6.3.0', - 'reference' => '3d81e4309d2a927abbe66df935f4bb60082805ad', 'type' => 'library', 'install_path' => __DIR__ . '/../opis/closure', 'aliases' => array(), + 'reference' => '3d81e4309d2a927abbe66df935f4bb60082805ad', 'dev_requirement' => false, ), 'phar-io/manifest' => array( 'pretty_version' => '2.0.3', 'version' => '2.0.3.0', - 'reference' => '97803eca37d319dfa7826cc2437fc020857acb53', 'type' => 'library', 'install_path' => __DIR__ . '/../phar-io/manifest', 'aliases' => array(), + 'reference' => '97803eca37d319dfa7826cc2437fc020857acb53', 'dev_requirement' => true, ), 'phar-io/version' => array( 'pretty_version' => '3.2.1', 'version' => '3.2.1.0', - 'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74', 'type' => 'library', 'install_path' => __DIR__ . '/../phar-io/version', 'aliases' => array(), + 'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74', 'dev_requirement' => true, ), 'phpdocumentor/reflection-common' => array( 'pretty_version' => '2.2.0', 'version' => '2.2.0.0', - 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b', 'type' => 'library', 'install_path' => __DIR__ . '/../phpdocumentor/reflection-common', 'aliases' => array(), + 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b', 'dev_requirement' => true, ), 'phpdocumentor/type-resolver' => array( 'pretty_version' => '1.7.3', 'version' => '1.7.3.0', - 'reference' => '3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419', 'type' => 'library', 'install_path' => __DIR__ . '/../phpdocumentor/type-resolver', 'aliases' => array(), + 'reference' => '3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419', 'dev_requirement' => true, ), 'phpoption/phpoption' => array( 'pretty_version' => '1.9.1', 'version' => '1.9.1.0', - 'reference' => 'dd3a383e599f49777d8b628dadbb90cae435b87e', 'type' => 'library', 'install_path' => __DIR__ . '/../phpoption/phpoption', 'aliases' => array(), + 'reference' => 'dd3a383e599f49777d8b628dadbb90cae435b87e', 'dev_requirement' => false, ), 'phpstan/phpdoc-parser' => array( 'pretty_version' => '1.24.2', 'version' => '1.24.2.0', - 'reference' => 'bcad8d995980440892759db0c32acae7c8e79442', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpdoc-parser', 'aliases' => array(), + 'reference' => 'bcad8d995980440892759db0c32acae7c8e79442', 'dev_requirement' => true, ), 'phpunit/php-code-coverage' => array( 'pretty_version' => '9.2.29', 'version' => '9.2.29.0', - 'reference' => '6a3a87ac2bbe33b25042753df8195ba4aa534c76', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-code-coverage', 'aliases' => array(), + 'reference' => '6a3a87ac2bbe33b25042753df8195ba4aa534c76', 'dev_requirement' => true, ), 'phpunit/php-file-iterator' => array( 'pretty_version' => '3.0.6', 'version' => '3.0.6.0', - 'reference' => 'cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-file-iterator', 'aliases' => array(), + 'reference' => 'cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf', 'dev_requirement' => true, ), 'phpunit/php-invoker' => array( 'pretty_version' => '3.1.1', 'version' => '3.1.1.0', - 'reference' => '5a10147d0aaf65b58940a0b72f71c9ac0423cc67', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-invoker', 'aliases' => array(), + 'reference' => '5a10147d0aaf65b58940a0b72f71c9ac0423cc67', 'dev_requirement' => true, ), 'phpunit/php-text-template' => array( 'pretty_version' => '2.0.4', 'version' => '2.0.4.0', - 'reference' => '5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-text-template', 'aliases' => array(), + 'reference' => '5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28', 'dev_requirement' => true, ), 'phpunit/php-timer' => array( 'pretty_version' => '5.0.3', 'version' => '5.0.3.0', - 'reference' => '5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-timer', 'aliases' => array(), + 'reference' => '5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2', 'dev_requirement' => true, ), 'phpunit/phpunit' => array( 'pretty_version' => '9.6.13', 'version' => '9.6.13.0', - 'reference' => 'f3d767f7f9e191eab4189abe41ab37797e30b1be', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/phpunit', 'aliases' => array(), + 'reference' => 'f3d767f7f9e191eab4189abe41ab37797e30b1be', 'dev_requirement' => true, ), 'psr/cache' => array( 'pretty_version' => '3.0.0', 'version' => '3.0.0.0', - 'reference' => 'aa5030cfa5405eccfdcb1083ce040c2cb8d253bf', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/cache', 'aliases' => array(), + 'reference' => 'aa5030cfa5405eccfdcb1083ce040c2cb8d253bf', 'dev_requirement' => true, ), 'psr/clock' => array( 'pretty_version' => '1.0.0', 'version' => '1.0.0.0', - 'reference' => 'e41a24703d4560fd0acb709162f73b8adfc3aa0d', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/clock', 'aliases' => array(), + 'reference' => 'e41a24703d4560fd0acb709162f73b8adfc3aa0d', 'dev_requirement' => false, ), 'psr/clock-implementation' => array( @@ -814,10 +823,10 @@ 'psr/container' => array( 'pretty_version' => '1.1.2', 'version' => '1.1.2.0', - 'reference' => '513e0666f7216c7459170d56df27dfcefe1689ea', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), + 'reference' => '513e0666f7216c7459170d56df27dfcefe1689ea', 'dev_requirement' => false, ), 'psr/container-implementation' => array( @@ -829,10 +838,10 @@ 'psr/event-dispatcher' => array( 'pretty_version' => '1.0.0', 'version' => '1.0.0.0', - 'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/event-dispatcher', 'aliases' => array(), + 'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0', 'dev_requirement' => false, ), 'psr/event-dispatcher-implementation' => array( @@ -844,10 +853,10 @@ 'psr/http-client' => array( 'pretty_version' => '1.0.3', 'version' => '1.0.3.0', - 'reference' => 'bb5906edc1c324c9a05aa0873d40117941e5fa90', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-client', 'aliases' => array(), + 'reference' => 'bb5906edc1c324c9a05aa0873d40117941e5fa90', 'dev_requirement' => false, ), 'psr/http-client-implementation' => array( @@ -859,10 +868,10 @@ 'psr/http-factory' => array( 'pretty_version' => '1.0.2', 'version' => '1.0.2.0', - 'reference' => 'e616d01114759c4c489f93b099585439f795fe35', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-factory', 'aliases' => array(), + 'reference' => 'e616d01114759c4c489f93b099585439f795fe35', 'dev_requirement' => false, ), 'psr/http-factory-implementation' => array( @@ -874,10 +883,10 @@ 'psr/http-message' => array( 'pretty_version' => '2.0', 'version' => '2.0.0.0', - 'reference' => '402d35bcb92c70c026d1a6a9883f06b2ead23d71', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-message', 'aliases' => array(), + 'reference' => '402d35bcb92c70c026d1a6a9883f06b2ead23d71', 'dev_requirement' => false, ), 'psr/http-message-implementation' => array( @@ -889,10 +898,10 @@ 'psr/log' => array( 'pretty_version' => '2.0.0', 'version' => '2.0.0.0', - 'reference' => 'ef29f6d262798707a9edd554e2b82517ef3a9376', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), + 'reference' => 'ef29f6d262798707a9edd554e2b82517ef3a9376', 'dev_requirement' => false, ), 'psr/log-implementation' => array( @@ -905,10 +914,10 @@ 'psr/simple-cache' => array( 'pretty_version' => '1.0.1', 'version' => '1.0.1.0', - 'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), + 'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b', 'dev_requirement' => false, ), 'psr/simple-cache-implementation' => array( @@ -920,37 +929,37 @@ 'psy/psysh' => array( 'pretty_version' => 'v0.11.22', 'version' => '0.11.22.0', - 'reference' => '128fa1b608be651999ed9789c95e6e2a31b5802b', 'type' => 'library', 'install_path' => __DIR__ . '/../psy/psysh', 'aliases' => array(), + 'reference' => '128fa1b608be651999ed9789c95e6e2a31b5802b', 'dev_requirement' => false, ), 'ralouphie/getallheaders' => array( 'pretty_version' => '3.0.3', 'version' => '3.0.3.0', - 'reference' => '120b605dfeb996808c31b6477290a714d356e822', 'type' => 'library', 'install_path' => __DIR__ . '/../ralouphie/getallheaders', 'aliases' => array(), + 'reference' => '120b605dfeb996808c31b6477290a714d356e822', 'dev_requirement' => false, ), 'ramsey/collection' => array( 'pretty_version' => '2.0.0', 'version' => '2.0.0.0', - 'reference' => 'a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5', 'type' => 'library', 'install_path' => __DIR__ . '/../ramsey/collection', 'aliases' => array(), + 'reference' => 'a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5', 'dev_requirement' => false, ), 'ramsey/uuid' => array( 'pretty_version' => '4.7.5', 'version' => '4.7.5.0', - 'reference' => '5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e', 'type' => 'library', 'install_path' => __DIR__ . '/../ramsey/uuid', 'aliases' => array(), + 'reference' => '5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e', 'dev_requirement' => false, ), 'rhumsaa/uuid' => array( @@ -962,217 +971,217 @@ 'sebastian/cli-parser' => array( 'pretty_version' => '1.0.1', 'version' => '1.0.1.0', - 'reference' => '442e7c7e687e42adc03470c7b668bc4b2402c0b2', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/cli-parser', 'aliases' => array(), + 'reference' => '442e7c7e687e42adc03470c7b668bc4b2402c0b2', 'dev_requirement' => true, ), 'sebastian/code-unit' => array( 'pretty_version' => '1.0.8', 'version' => '1.0.8.0', - 'reference' => '1fc9f64c0927627ef78ba436c9b17d967e68e120', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/code-unit', 'aliases' => array(), + 'reference' => '1fc9f64c0927627ef78ba436c9b17d967e68e120', 'dev_requirement' => true, ), 'sebastian/code-unit-reverse-lookup' => array( 'pretty_version' => '2.0.3', 'version' => '2.0.3.0', - 'reference' => 'ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/code-unit-reverse-lookup', 'aliases' => array(), + 'reference' => 'ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5', 'dev_requirement' => true, ), 'sebastian/comparator' => array( 'pretty_version' => '4.0.8', 'version' => '4.0.8.0', - 'reference' => 'fa0f136dd2334583309d32b62544682ee972b51a', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/comparator', 'aliases' => array(), + 'reference' => 'fa0f136dd2334583309d32b62544682ee972b51a', 'dev_requirement' => true, ), 'sebastian/complexity' => array( 'pretty_version' => '2.0.2', 'version' => '2.0.2.0', - 'reference' => '739b35e53379900cc9ac327b2147867b8b6efd88', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/complexity', 'aliases' => array(), + 'reference' => '739b35e53379900cc9ac327b2147867b8b6efd88', 'dev_requirement' => true, ), 'sebastian/diff' => array( 'pretty_version' => '4.0.5', 'version' => '4.0.5.0', - 'reference' => '74be17022044ebaaecfdf0c5cd504fc9cd5a7131', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/diff', 'aliases' => array(), + 'reference' => '74be17022044ebaaecfdf0c5cd504fc9cd5a7131', 'dev_requirement' => true, ), 'sebastian/environment' => array( 'pretty_version' => '5.1.5', 'version' => '5.1.5.0', - 'reference' => '830c43a844f1f8d5b7a1f6d6076b784454d8b7ed', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/environment', 'aliases' => array(), + 'reference' => '830c43a844f1f8d5b7a1f6d6076b784454d8b7ed', 'dev_requirement' => true, ), 'sebastian/exporter' => array( 'pretty_version' => '4.0.5', 'version' => '4.0.5.0', - 'reference' => 'ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/exporter', 'aliases' => array(), + 'reference' => 'ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d', 'dev_requirement' => true, ), 'sebastian/global-state' => array( 'pretty_version' => '5.0.6', 'version' => '5.0.6.0', - 'reference' => 'bde739e7565280bda77be70044ac1047bc007e34', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/global-state', 'aliases' => array(), + 'reference' => 'bde739e7565280bda77be70044ac1047bc007e34', 'dev_requirement' => true, ), 'sebastian/lines-of-code' => array( 'pretty_version' => '1.0.3', 'version' => '1.0.3.0', - 'reference' => 'c1c2e997aa3146983ed888ad08b15470a2e22ecc', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/lines-of-code', 'aliases' => array(), + 'reference' => 'c1c2e997aa3146983ed888ad08b15470a2e22ecc', 'dev_requirement' => true, ), 'sebastian/object-enumerator' => array( 'pretty_version' => '4.0.4', 'version' => '4.0.4.0', - 'reference' => '5c9eeac41b290a3712d88851518825ad78f45c71', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/object-enumerator', 'aliases' => array(), + 'reference' => '5c9eeac41b290a3712d88851518825ad78f45c71', 'dev_requirement' => true, ), 'sebastian/object-reflector' => array( 'pretty_version' => '2.0.4', 'version' => '2.0.4.0', - 'reference' => 'b4f479ebdbf63ac605d183ece17d8d7fe49c15c7', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/object-reflector', 'aliases' => array(), + 'reference' => 'b4f479ebdbf63ac605d183ece17d8d7fe49c15c7', 'dev_requirement' => true, ), 'sebastian/recursion-context' => array( 'pretty_version' => '4.0.5', 'version' => '4.0.5.0', - 'reference' => 'e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/recursion-context', 'aliases' => array(), + 'reference' => 'e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1', 'dev_requirement' => true, ), 'sebastian/resource-operations' => array( 'pretty_version' => '3.0.3', 'version' => '3.0.3.0', - 'reference' => '0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/resource-operations', 'aliases' => array(), + 'reference' => '0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8', 'dev_requirement' => true, ), 'sebastian/type' => array( 'pretty_version' => '3.2.1', 'version' => '3.2.1.0', - 'reference' => '75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/type', 'aliases' => array(), + 'reference' => '75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7', 'dev_requirement' => true, ), 'sebastian/version' => array( 'pretty_version' => '3.0.2', 'version' => '3.0.2.0', - 'reference' => 'c6c1022351a901512170118436c764e473f6de8c', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/version', 'aliases' => array(), + 'reference' => 'c6c1022351a901512170118436c764e473f6de8c', 'dev_requirement' => true, ), 'spatie/laravel-permission' => array( 'pretty_version' => '3.18.0', 'version' => '3.18.0.0', - 'reference' => '1c51a5fa12131565fe3860705163e53d7a26258a', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/laravel-permission', 'aliases' => array(), + 'reference' => '1c51a5fa12131565fe3860705163e53d7a26258a', 'dev_requirement' => false, ), 'swiftmailer/swiftmailer' => array( 'pretty_version' => 'v6.3.0', 'version' => '6.3.0.0', - 'reference' => '8a5d5072dca8f48460fce2f4131fcc495eec654c', 'type' => 'library', 'install_path' => __DIR__ . '/../swiftmailer/swiftmailer', 'aliases' => array(), + 'reference' => '8a5d5072dca8f48460fce2f4131fcc495eec654c', 'dev_requirement' => false, ), 'symfony/console' => array( 'pretty_version' => 'v5.4.28', 'version' => '5.4.28.0', - 'reference' => 'f4f71842f24c2023b91237c72a365306f3c58827', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), + 'reference' => 'f4f71842f24c2023b91237c72a365306f3c58827', 'dev_requirement' => false, ), 'symfony/css-selector' => array( 'pretty_version' => 'v6.3.2', 'version' => '6.3.2.0', - 'reference' => '883d961421ab1709877c10ac99451632a3d6fa57', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/css-selector', 'aliases' => array(), + 'reference' => '883d961421ab1709877c10ac99451632a3d6fa57', 'dev_requirement' => false, ), 'symfony/deprecation-contracts' => array( 'pretty_version' => 'v3.3.0', 'version' => '3.3.0.0', - 'reference' => '7c3aff79d10325257a001fcf92d991f24fc967cf', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), + 'reference' => '7c3aff79d10325257a001fcf92d991f24fc967cf', 'dev_requirement' => false, ), 'symfony/error-handler' => array( 'pretty_version' => 'v5.4.29', 'version' => '5.4.29.0', - 'reference' => '328c6fcfd2f90b64c16efaf0ea67a311d672f078', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/error-handler', 'aliases' => array(), + 'reference' => '328c6fcfd2f90b64c16efaf0ea67a311d672f078', 'dev_requirement' => false, ), 'symfony/event-dispatcher' => array( 'pretty_version' => 'v6.3.2', 'version' => '6.3.2.0', - 'reference' => 'adb01fe097a4ee930db9258a3cc906b5beb5cf2e', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/event-dispatcher', 'aliases' => array(), + 'reference' => 'adb01fe097a4ee930db9258a3cc906b5beb5cf2e', 'dev_requirement' => false, ), 'symfony/event-dispatcher-contracts' => array( 'pretty_version' => 'v3.3.0', 'version' => '3.3.0.0', - 'reference' => 'a76aed96a42d2b521153fb382d418e30d18b59df', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/event-dispatcher-contracts', 'aliases' => array(), + 'reference' => 'a76aed96a42d2b521153fb382d418e30d18b59df', 'dev_requirement' => false, ), 'symfony/event-dispatcher-implementation' => array( @@ -1184,172 +1193,172 @@ 'symfony/finder' => array( 'pretty_version' => 'v5.4.27', 'version' => '5.4.27.0', - 'reference' => 'ff4bce3c33451e7ec778070e45bd23f74214cd5d', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), + 'reference' => 'ff4bce3c33451e7ec778070e45bd23f74214cd5d', 'dev_requirement' => false, ), 'symfony/http-foundation' => array( 'pretty_version' => 'v5.4.30', 'version' => '5.4.30.0', - 'reference' => '671769f79de0532da1478c60968b42506e185d2e', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/http-foundation', 'aliases' => array(), + 'reference' => '671769f79de0532da1478c60968b42506e185d2e', 'dev_requirement' => false, ), 'symfony/http-kernel' => array( 'pretty_version' => 'v5.4.30', 'version' => '5.4.30.0', - 'reference' => '16b9b36f81631155546d9f05271dd027c83c3dd4', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/http-kernel', 'aliases' => array(), + 'reference' => '16b9b36f81631155546d9f05271dd027c83c3dd4', 'dev_requirement' => false, ), 'symfony/mime' => array( 'pretty_version' => 'v5.4.26', 'version' => '5.4.26.0', - 'reference' => '2ea06dfeee20000a319d8407cea1d47533d5a9d2', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/mime', 'aliases' => array(), + 'reference' => '2ea06dfeee20000a319d8407cea1d47533d5a9d2', 'dev_requirement' => false, ), 'symfony/polyfill-ctype' => array( 'pretty_version' => 'v1.28.0', 'version' => '1.28.0.0', - 'reference' => 'ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), + 'reference' => 'ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb', 'dev_requirement' => false, ), 'symfony/polyfill-iconv' => array( 'pretty_version' => 'v1.28.0', 'version' => '1.28.0.0', - 'reference' => '6de50471469b8c9afc38164452ab2b6170ee71c1', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-iconv', 'aliases' => array(), + 'reference' => '6de50471469b8c9afc38164452ab2b6170ee71c1', 'dev_requirement' => false, ), 'symfony/polyfill-intl-grapheme' => array( 'pretty_version' => 'v1.28.0', 'version' => '1.28.0.0', - 'reference' => '875e90aeea2777b6f135677f618529449334a612', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', 'aliases' => array(), + 'reference' => '875e90aeea2777b6f135677f618529449334a612', 'dev_requirement' => false, ), 'symfony/polyfill-intl-idn' => array( 'pretty_version' => 'v1.28.0', 'version' => '1.28.0.0', - 'reference' => 'ecaafce9f77234a6a449d29e49267ba10499116d', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-idn', 'aliases' => array(), + 'reference' => 'ecaafce9f77234a6a449d29e49267ba10499116d', 'dev_requirement' => false, ), 'symfony/polyfill-intl-normalizer' => array( 'pretty_version' => 'v1.28.0', 'version' => '1.28.0.0', - 'reference' => '8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', 'aliases' => array(), + 'reference' => '8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92', 'dev_requirement' => false, ), 'symfony/polyfill-mbstring' => array( 'pretty_version' => 'v1.28.0', 'version' => '1.28.0.0', - 'reference' => '42292d99c55abe617799667f454222c54c60e229', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), + 'reference' => '42292d99c55abe617799667f454222c54c60e229', 'dev_requirement' => false, ), 'symfony/polyfill-php72' => array( 'pretty_version' => 'v1.28.0', 'version' => '1.28.0.0', - 'reference' => '70f4aebd92afca2f865444d30a4d2151c13c3179', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php72', 'aliases' => array(), + 'reference' => '70f4aebd92afca2f865444d30a4d2151c13c3179', 'dev_requirement' => false, ), 'symfony/polyfill-php73' => array( 'pretty_version' => 'v1.28.0', 'version' => '1.28.0.0', - 'reference' => 'fe2f306d1d9d346a7fee353d0d5012e401e984b5', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php73', 'aliases' => array(), + 'reference' => 'fe2f306d1d9d346a7fee353d0d5012e401e984b5', 'dev_requirement' => false, ), 'symfony/polyfill-php80' => array( 'pretty_version' => 'v1.28.0', 'version' => '1.28.0.0', - 'reference' => '6caa57379c4aec19c0a12a38b59b26487dcfe4b5', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php80', 'aliases' => array(), + 'reference' => '6caa57379c4aec19c0a12a38b59b26487dcfe4b5', 'dev_requirement' => false, ), 'symfony/process' => array( 'pretty_version' => 'v5.4.28', 'version' => '5.4.28.0', - 'reference' => '45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), + 'reference' => '45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b', 'dev_requirement' => false, ), 'symfony/routing' => array( 'pretty_version' => 'v5.4.26', 'version' => '5.4.26.0', - 'reference' => '853fc7df96befc468692de0a48831b38f04d2cb2', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/routing', 'aliases' => array(), + 'reference' => '853fc7df96befc468692de0a48831b38f04d2cb2', 'dev_requirement' => false, ), 'symfony/service-contracts' => array( 'pretty_version' => 'v2.5.2', 'version' => '2.5.2.0', - 'reference' => '4b426aac47d6427cc1a1d0f7e2ac724627f5966c', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/service-contracts', 'aliases' => array(), + 'reference' => '4b426aac47d6427cc1a1d0f7e2ac724627f5966c', 'dev_requirement' => false, ), 'symfony/string' => array( 'pretty_version' => 'v6.3.5', 'version' => '6.3.5.0', - 'reference' => '13d76d0fb049051ed12a04bef4f9de8715bea339', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/string', 'aliases' => array(), + 'reference' => '13d76d0fb049051ed12a04bef4f9de8715bea339', 'dev_requirement' => false, ), 'symfony/translation' => array( 'pretty_version' => 'v6.3.7', 'version' => '6.3.7.0', - 'reference' => '30212e7c87dcb79c83f6362b00bde0e0b1213499', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/translation', 'aliases' => array(), + 'reference' => '30212e7c87dcb79c83f6362b00bde0e0b1213499', 'dev_requirement' => false, ), 'symfony/translation-contracts' => array( 'pretty_version' => 'v3.3.0', 'version' => '3.3.0.0', - 'reference' => '02c24deb352fb0d79db5486c0c79905a85e37e86', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/translation-contracts', 'aliases' => array(), + 'reference' => '02c24deb352fb0d79db5486c0c79905a85e37e86', 'dev_requirement' => false, ), 'symfony/translation-implementation' => array( @@ -1361,55 +1370,55 @@ 'symfony/var-dumper' => array( 'pretty_version' => 'v5.4.29', 'version' => '5.4.29.0', - 'reference' => '6172e4ae3534d25ee9e07eb487c20be7760fcc65', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/var-dumper', 'aliases' => array(), + 'reference' => '6172e4ae3534d25ee9e07eb487c20be7760fcc65', 'dev_requirement' => false, ), 'theseer/tokenizer' => array( 'pretty_version' => '1.2.1', 'version' => '1.2.1.0', - 'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e', 'type' => 'library', 'install_path' => __DIR__ . '/../theseer/tokenizer', 'aliases' => array(), + 'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e', 'dev_requirement' => true, ), 'tijsverkoyen/css-to-inline-styles' => array( 'pretty_version' => '2.2.6', 'version' => '2.2.6.0', - 'reference' => 'c42125b83a4fa63b187fdf29f9c93cb7733da30c', 'type' => 'library', 'install_path' => __DIR__ . '/../tijsverkoyen/css-to-inline-styles', 'aliases' => array(), + 'reference' => 'c42125b83a4fa63b187fdf29f9c93cb7733da30c', 'dev_requirement' => false, ), 'vlucas/phpdotenv' => array( 'pretty_version' => 'v5.5.0', 'version' => '5.5.0.0', - 'reference' => '1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7', 'type' => 'library', 'install_path' => __DIR__ . '/../vlucas/phpdotenv', 'aliases' => array(), + 'reference' => '1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7', 'dev_requirement' => false, ), 'voku/portable-ascii' => array( 'pretty_version' => '1.6.1', 'version' => '1.6.1.0', - 'reference' => '87337c91b9dfacee02452244ee14ab3c43bc485a', 'type' => 'library', 'install_path' => __DIR__ . '/../voku/portable-ascii', 'aliases' => array(), + 'reference' => '87337c91b9dfacee02452244ee14ab3c43bc485a', 'dev_requirement' => false, ), 'webmozart/assert' => array( 'pretty_version' => '1.11.0', 'version' => '1.11.0.0', - 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), + 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', 'dev_requirement' => false, ), ), diff --git a/code/vendor/erlandmuchasaj/laravel-file-uploader/.gitignore b/code/vendor/erlandmuchasaj/laravel-file-uploader/.gitignore new file mode 100644 index 0000000..2d70cb2 --- /dev/null +++ b/code/vendor/erlandmuchasaj/laravel-file-uploader/.gitignore @@ -0,0 +1,4 @@ +/vendor +composer.lock +.DS_Store +.idea diff --git a/code/vendor/erlandmuchasaj/laravel-file-uploader/CHANGELOG.md b/code/vendor/erlandmuchasaj/laravel-file-uploader/CHANGELOG.md new file mode 100644 index 0000000..5355d78 --- /dev/null +++ b/code/vendor/erlandmuchasaj/laravel-file-uploader/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog + +All notable changes to `erlandmuchasaj/laravel-file-uploader` will be documented in this file. + +## 1.0.0 - 2023-03-06 + +- initial release diff --git a/code/vendor/erlandmuchasaj/laravel-file-uploader/CODE_OF_CONDUCT.md b/code/vendor/erlandmuchasaj/laravel-file-uploader/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..f166d3b --- /dev/null +++ b/code/vendor/erlandmuchasaj/laravel-file-uploader/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +dave@blakey.co. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/code/vendor/erlandmuchasaj/laravel-file-uploader/CONTRIBUTING.md b/code/vendor/erlandmuchasaj/laravel-file-uploader/CONTRIBUTING.md new file mode 100644 index 0000000..fd06774 --- /dev/null +++ b/code/vendor/erlandmuchasaj/laravel-file-uploader/CONTRIBUTING.md @@ -0,0 +1,56 @@ +# Contributing + +Contributions are **welcome** and will be fully **credited**. + +Please read and understand the contribution guide before creating an issue or pull request. + +## Etiquette + +This project is open source, and as such, the maintainers give their free time to build and maintain the source code +held within. They make the code freely available in the hope that it will be of use to other developers. It would be +extremely unfair for them to suffer abuse or anger for their hard work. + +Please be considerate towards maintainers when raising issues or presenting pull requests. Let's show the +world that developers are civilized and selfless people. + +It's the duty of the maintainer to ensure that all submissions to the project are of sufficient +quality to benefit the project. Many developers have different skills, strengths, and weaknesses. +Respect the maintainer's decision, and do not be upset or abusive if your submission is not used. + +## Viability + +When requesting or submitting new features, first consider whether it might be useful to others. Open +source projects are used by many developers, who may have entirely different needs to your own. Think about +whether your feature is likely to be used by other users of the project. + +## Procedure + +Before filing an issue: + +- Attempt to replicate the problem, to ensure that it wasn't a coincidental incident. +- Check to make sure your feature suggestion isn't already present within the project. +- Check the pull requests tab to ensure that the bug doesn't have a fix in progress. +- Check the pull requests tab to ensure that the feature isn't already in progress. + +Before submitting a pull request: + +- Check the codebase to ensure that your feature doesn't already exist. +- Check the pull requests to ensure that another person hasn't already submitted the feature or fix. + +## Requirements + +If the project maintainer has any additional requirements, you will find them listed here. + +- **[PSR-12 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-12-extended-coding-style-guide.md)** - The easiest way to apply the conventions is to install [PHP Code Sniffer](http://pear.php.net/package/PHP_CodeSniffer). + +- **Add tests!** - Your patch won't be accepted if it doesn't have tests. + +- **Document any change in behaviour** - Make sure the `README.md` and any other relevant documentation are kept up-to-date. + +- **Consider our release cycle** - We try to follow [SemVer v2.0.0](http://semver.org/). Randomly breaking public APIs is not an option. + +- **One pull request per feature** - If you want to do more than one thing, send multiple pull requests. + +- **Send coherent history** - Make sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please [squash them](http://www.git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages) before submitting. + +**Happy coding**! diff --git a/code/vendor/erlandmuchasaj/laravel-file-uploader/LICENSE.md b/code/vendor/erlandmuchasaj/laravel-file-uploader/LICENSE.md new file mode 100644 index 0000000..002c84c --- /dev/null +++ b/code/vendor/erlandmuchasaj/laravel-file-uploader/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Erland Muchasaj + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/code/vendor/erlandmuchasaj/laravel-file-uploader/README.md b/code/vendor/erlandmuchasaj/laravel-file-uploader/README.md new file mode 100644 index 0000000..ca2b71c --- /dev/null +++ b/code/vendor/erlandmuchasaj/laravel-file-uploader/README.md @@ -0,0 +1,156 @@ +# Laravel File Uploader + +Laravel File Uploader offers an easy way to upload files to different disks. +The main purpose of the package is to remove the repeated and cumbersome code and simplify it into some simple methods. + +## Installation + +You can install the package via composer: + +```bash +composer require erlandmuchasaj/laravel-file-uploader +``` + +## Usage + +This package has an very easy and straight-forward usage. +Just import the package and pass the file as parameter, and it will handle the rest. + +```php +use ErlandMuchasaj\LaravelFileUploader\FileUploader; + +Route::post('/files', function (\Illuminate\Http\Request $request) { + + $max_size = (int) ini_get('upload_max_filesize') * 1000; + + // FileUploader::images() get all image extensions ex: jpg, png, jpeg, gif, etc. + // FileUploader::documents() get all documents extensions ex: 'csv', 'html', 'pdf', 'doc', 'docx', 'ppt' etc. + $extensions = implode(',', FileUploader::images()); + + $request->validate([ + 'file' => [ + 'required', + 'file', + 'image', + 'mimes:' . $extensions, + 'max:'.$max_size, + ] + ]); + + $file = $request->file('file'); + + $response = FileUploader::store($file); + // $response = FileUploader::store($file, $options); + // available options (as key=>value pare) are: + // `disk`, 'user_id`, `path`, `visibility` + + // do something with the $response + // you can save it into your model etc. + + return redirect() + ->back() + ->with('success', __('File has been uploaded.')) + ->with('file', $response); +})->name('files.store'); + +/** + * $response = [ + * "type" => "image" + * "extension" => "png" + * "_extension" => "png" + * "name" => "blog3" + * "original_name" => "blog3.png" + * "size" => 549247 + * "mime_type" => "image/png" + * "dimensions" => "670x841" + * "path" => "uploads/1/image/blog3_1678118034.png" // <== + * "url" => "/storage/uploads/1/image/blog3_1678118034.png" + * "user_id" => 1 + * "disk" => "local" + * "visibility" => "public" + * "uuid" => "dd5889c0-5057-49ef-a6ef-e3da961a47d1" + * ] +*/ + +``` + +If you need to modify the config files, you should publish the migration and the config/permission.php config file +with: +```bash +php artisan vendor:publish --provider="ErlandMuchasaj\LaravelFileUploader\FileUploaderServiceProvider" +``` + +Some other helper methods: + +```php + $path = 'uploads/1/image/blog3_1678118034.png'; // the path of the image where is stored. + $response = FileUploader::get($path); // get file as StreamedResponse + $response = FileUploader::getFile($path); // get file as content. + $response = FileUploader::url($path); // full path url - /storage/uploads/1/image/blog3_1678118034.png + $response = FileUploader::path($path); // C:\wamp\www\laravel-app\storage\app\uploads/1/image/blog3_1678118034.png + $response = FileUploader::meta($path); // metadata about the file. + /** + * [ + * "path" => "C:\wamp\www\laravel-app\storage\app\uploads/1/image/blog3_1678118034.png" + * "url" => "/storage/uploads/1/image/blog3_1678118034.png" + * "visibility" => "public" + * "mimeType" => "image/png" + * "size" => "536.37 KB" + * "last_modified" => "1 hour ago" + * "name" => "blog3_1678118034.png" + * "pathinfo" => [ + * "dirname" => "uploads/1/image" + * "basename" => "blog3_1678118034.png" + * "extension" => "png" + * "filename" => "blog3_1678118034" + * ] + * ] + */ + + $response = FileUploader::download($path, 'something_nice'); // download the file as StreamedResponse + $response = FileUploader::getVisibility($path); // file visibility when applicable private/public + $response = FileUploader::setVisibility($path, 'private'); // change file visibility + $response = FileUploader::remove($path); // delete a file +``` + +Also, some other size converting helper functions are available for example: + +```php + $size = 549247; + FileUploader::formatBytes($size); // "536.37 KB" + + FileUploader::convertBytesToSpecified($size, 'KB'); // 536.37KB + FileUploader::convertBytesToSpecified($size, 'MB'); // 0.52MB +``` + +--- + +## Support me + +I invest a lot of time and resources into creating [best in class open source packages](https://github.com/erlandmuchasaj?tab=repositories). + +If you found this package helpful you can show support by clicking on the following button below and donating some amount to help me work on these projects frequently. + + + buy me a coffee + + +## Changelog + +Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently. + +## Contributing + +Please see [CONTRIBUTING](CONTRIBUTING.md) for details. + +## Security Vulnerabilities + +Please see [SECURITY](SECURITY.md) for details. + +## Credits + +- [Erland Muchasaj](https://github.com/erlandmuchasaj) + +## License + +The MIT License (MIT). Please see [License File](LICENSE.md) for more information. diff --git a/code/vendor/erlandmuchasaj/laravel-file-uploader/SECURITY.md b/code/vendor/erlandmuchasaj/laravel-file-uploader/SECURITY.md new file mode 100644 index 0000000..cffbacc --- /dev/null +++ b/code/vendor/erlandmuchasaj/laravel-file-uploader/SECURITY.md @@ -0,0 +1,13 @@ +# Security Policy + +## Supported Versions + +| Version | Supported | +| ------- | ------------------ | +| 1.x.x | :white_check_mark: | + +## Reporting a Vulnerability + +If you discover a security vulnerability within this package, +please send an e-mail to Erland Muchasaj via [erland.muchasaj@gmail.com](mailto:erland.muchasaj@gmail.com). +All security vulnerabilities will be promptly addressed. diff --git a/code/vendor/erlandmuchasaj/laravel-file-uploader/composer.json b/code/vendor/erlandmuchasaj/laravel-file-uploader/composer.json new file mode 100644 index 0000000..d0433c7 --- /dev/null +++ b/code/vendor/erlandmuchasaj/laravel-file-uploader/composer.json @@ -0,0 +1,76 @@ +{ + "name": "erlandmuchasaj/laravel-file-uploader", + "type": "library", + "description": "A simple package to help you easily upload files to your laravel project.", + "minimum-stability": "dev", + "prefer-stable": true, + "homepage": "https://github.com/erlandmuchasaj/laravel-file-uploader", + "license": "MIT", + "keywords": [ + "file", + "media", + "images", + "upload", + "laravel", + "library", + "cms", + "emcms", + "package" + ], + "autoload": { + "psr-4": { + "ErlandMuchasaj\\LaravelFileUploader\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "ErlandMuchasaj\\LaravelFileUploader\\FileUploaderServiceProvider" + ] + } + }, + "authors": [ + { + "name": "Erland Muchasaj", + "email": "erland.muchasaj@gmail.com", + "homepage": "https://erlandmuchasaj.tech/", + "role": "Developer" + } + ], + "support": { + "issues": "https://github.com/erlandmuchasaj/laravel-file-uploader/issues", + "source": "https://github.com/erlandmuchasaj/laravel-file-uploader", + "email": "erland.muchasaj@gmail.com", + "irc": "irc://irc.freenode.org/composer" + }, + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/erlandmuchasaj" + }, + { + "type": "Ko-fi", + "url": "https://ko-fi.com/erlandmuchasaj" + }, + { + "type": "PayPal", + "url": "https://paypal.me/emcms?country.x=AL&locale.x=en_US" + } + ], + "config": { + "sort-packages": true, + "preferred-install": "dist", + "optimize-autoloader": true + }, + "require": { + "php": "^8.0", + "ext-exif": "*", + "ext-fileinfo": "*", + "ext-json": "*", + "nesbot/carbon": "^2", + "illuminate/http": "^8|^9|^10", + "illuminate/support": "^8|^9|^10", + "illuminate/contracts": "^8|^9|^10", + "illuminate/filesystem": "^8|^9|^10" + } +} diff --git a/code/vendor/erlandmuchasaj/laravel-file-uploader/config/file-uploader.php b/code/vendor/erlandmuchasaj/laravel-file-uploader/config/file-uploader.php new file mode 100644 index 0000000..6a04490 --- /dev/null +++ b/code/vendor/erlandmuchasaj/laravel-file-uploader/config/file-uploader.php @@ -0,0 +1,55 @@ + env('FILESYSTEM_DISK', 'local'), + + 'visibility' => 'public', + + /* + |-------------------------------------------------------------------------- + | Filesystem path + |-------------------------------------------------------------------------- + | + | Here you may configure the path structure of the uploaded files + | uploads/{user_id}/{type}/{filename} + | + | Supported variables: "{user_id}", "{type}", "{filename}" + | + */ + + 'path' => 'uploads/{user_id}/{type}/{filename}', + + /* + |-------------------------------------------------------------------------- + | Default files user group + |-------------------------------------------------------------------------- + | + | All files will be grouped by default to root user aka ID=1. + | If you have a different default user id you can set it here. + | + */ + + 'user_id' => 1, + + /* + |-------------------------------------------------------------------------- + | Shall we use safe extension and name extraction + |-------------------------------------------------------------------------- + | + | getClientOriginalName() and getClientOriginalExtension() + | are considered unsafe. + | + */ + + 'safe' => false, +]; diff --git a/code/vendor/erlandmuchasaj/laravel-file-uploader/src/Exceptions/InvalidFile.php b/code/vendor/erlandmuchasaj/laravel-file-uploader/src/Exceptions/InvalidFile.php new file mode 100644 index 0000000..dcce167 --- /dev/null +++ b/code/vendor/erlandmuchasaj/laravel-file-uploader/src/Exceptions/InvalidFile.php @@ -0,0 +1,9 @@ + + */ + protected static array $studlyCache = []; + + /** + * default constants used to build file path + */ + const UPLOAD_PATH = 'uploads/{user_id}/{type}/{filename}'; + + /** + * The public visibility setting. + * - default + * + * @var string + */ + const VISIBILITY_PUBLIC = 'public'; + + /** + * The private visibility setting. + * + * @var string + */ + const VISIBILITY_PRIVATE = 'private'; + + /** + * Available file folder for sizes + */ + const ORIGINAL = 'original'; // this is not a directory just used as name + + const THUMB = 'thumb'; + + const XSMALL = 'xs'; + + const SMALL = 'sm'; + + const MEDIUM = 'md'; + + const LARGE = 'lg'; + + const XLARGE = 'xl'; + + /** + * Available file types + * suppoerted by fileService + */ + const IMAGE = 'image'; + + const AUDIO = 'audio'; + + const VIDEO = 'video'; + + const FILE = 'file'; + + const FONT = 'font'; + + const ARCHIVE = 'archive'; + + const DOCUMENT = 'document'; + + const SPREADSHEETS = 'spreadsheets'; + + /** + * Available file types + * + * @var array + */ + public static array $validTypes = [ + self::IMAGE, + self::AUDIO, + self::VIDEO, + self::FILE, + self::FONT, + self::ARCHIVE, + self::DOCUMENT, + self::SPREADSHEETS, + ]; + + /** + * Available sizes for images + * + * @var array + */ + public static array $validSizes = [ + self::THUMB => 60, + self::XSMALL => 150, + self::SMALL => 300, + self::MEDIUM => 768, + self::LARGE => 1024, + self::XLARGE => 2048, + ]; + + /** + * validOptions of visibility + * + * @var array + */ + public static array $validOptions = [ + self::VISIBILITY_PUBLIC, + self::VISIBILITY_PRIVATE, + ]; + + /** + * $image_ext + * + * @var array + */ + private static array $image_ext = ['jpg', 'pjpg', 'jpe', 'jpeg', 'png', 'bmp', 'gif', 'svg', 'svgz', 'tiff', 'tif', 'webp', 'ico', 'avif']; + + /** + * $font_ext + * + * @var array + */ + private static array $font_ext = ['ttc', 'otf', 'ttf', 'woff', 'woff2']; + + /** + * $audio_ext + * + * @var array + */ + private static array $audio_ext = ['mp3', 'm4a', 'ogg', 'mpga', 'wav']; + + /** + * $video_ext + * + * @var array + */ + private static array $video_ext = ['smv', 'movie', 'mov', 'wvx', 'wmx', 'wm', 'mp4', 'mp4', 'mp4v', 'mpg4', 'mpeg', 'mpg', 'mpe', 'wmv', 'avi', 'ogv', '3gp', '3g2']; + + /** + * $document_ext + * + * @var array + */ + private static array $document_ext = ['css', 'csv', 'html', 'htm', 'conf', 'log', 'txt', 'text', 'pdf', 'doc', 'docx', 'ppt', 'pptx', 'pps', 'ppsx', 'odt', 'xls', 'xlsx']; + + /** + * $archive + * + * @var array + * + * @example application/zip + */ + private static array $archives_ext = ['gzip', 'rar', 'tar', 'zip', '7z']; + + /** + * Upload a file into specified disk using + * specified visibility and then store into DB. + * + * @param array $args + * @return array + * + * @throws UploadFailed + */ + public static function store( + UploadedFile $file, + array $args = [] + ): array { + try { + $data = self::upload($file, $args); + } catch (Exception $e) { + throw new UploadFailed($e->getMessage(), $e->getCode()); + } + + return $data; + } + + /** + * Upload an image to specific FileSystem + * + * @param array $options + * @return array + * + * @throws InvalidUpload + * @throws InvalidFile + */ + public static function upload(UploadedFile $file, array $options = []): array + { + if (! $file->isValid()) { + throw new InvalidFile($file->getErrorMessage()); + } + + if ($file->getSize() === false) { + throw new InvalidFile('File failed to load.'); + } + + // // here you can put as many default values as you want. + // $defaults = [ + // 'disk' => self::$disk, // The disk where the file is being saved. + // 'safe' => false, // weather or not to use safe client file operators + // 'user_id' => 1, // files are grouped by user. + // 'path' => self::UPLOAD_PATH, // Where files are being stored. + // 'visibility' => self::VISIBILITY_PUBLIC, // public | private + // ]; + $defaults = self::getConfig(); + + // merge default options with passed parameters + $args = array_merge($defaults, $options); + + if (! in_array($args['visibility'], self::$validOptions, true)) { + $args['visibility'] = self::VISIBILITY_PUBLIC; + } + + $disk = $args['disk'] ?? self::$disk; + + $user_id = $args['user_id'] ?? null; + + /** + * getClientOriginalName() and getClientOriginalExtension() are considered + * unsafe therefor we use hashName() and extension() + */ + // get filename with extension + $filenameWithExtension = $file->getClientOriginalName(); + // $filenameWithExtension = $file->hashName() ?: $file->getClientOriginalName(); + + // get file extension + $extension = $file->getClientOriginalExtension(); + // $extension = $file->extension() ?: $file->getClientOriginalExtension(); + + // get filename without extension + $filename = pathinfo($filenameWithExtension, PATHINFO_FILENAME); + + // @todo - EM: Check filename normalizer + $filename = (new WhitespacePathNormalizer)->normalizePath($filename); + $filename = self::defaultSanitizer($filename); + + // filename to store + $filenameToStore = $filename.'_'.time().'.'.$extension; + + // Get the type of file we are storing + $type = self::getType($extension); + + // Make a file path where image will be stored [uploads/{user_id}/{type}/{filename}.{ext}] + $filePath = self::getUserDir($filenameToStore, $type, (int) $user_id); + + // Upload File to storage disk + $fileContent = fopen($file, 'r+'); + if (! $fileContent) { + throw new InvalidUpload('Could not read file from disk...'); + } + + $path = Storage::disk($disk)->put($filePath, $fileContent, $args['visibility']); // very nice for very big files + + // Store $filePath in the database + if (! $path) { + throw new InvalidUpload('The file could not be written to disk...'); + } + +// dd([ +// 'type' => $type, +// 'extension' => $file->getClientOriginalExtension(), +// '_extension' => $file->extension() ?: $file->getClientOriginalExtension(), +// 'name' => $filename, +// 'original_name' => $file->getClientOriginalName(), +// 'size' => $file->getSize(), +// 'mime_type' => $file->getClientMimeType(), +// 'dimensions' => self::getDimensions($file, $type), +// 'path' => $filePath, +// 'url' => Storage::disk($disk)->url($filePath), +// 'user_id' => $user_id, +// 'disk' => $disk, +// 'visibility' => $args['visibility'], // indicate if file is public or private +// 'hash_file' => self::getHashFile($file), +// 'uuid' => Str::uuid()->toString(), +// ]); + + return [ + 'type' => $type, + 'extension' => $file->getClientOriginalExtension(), + '_extension' => $file->extension() ?: $file->getClientOriginalExtension(), + 'name' => $filename, + 'original_name' => $file->getClientOriginalName(), + 'size' => $file->getSize(), + 'mime_type' => $file->getClientMimeType(), + 'dimensions' => self::getDimensions($file, $type), + 'path' => $filePath, + 'url' => Storage::disk($disk)->url($filePath), + 'user_id' => $user_id, + 'disk' => $disk, + 'visibility' => $args['visibility'], // indicate if file is public or private + 'uuid' => Str::uuid()->toString(), + ]; + } + + protected static function getUser(int $user_id = null): ?int + { + $defaults = self::getConfig(); + + return $user_id ?? (! empty($defaults['user_id']) ? (int) $defaults['user_id'] : 1); + } + + protected static function getDisk(string $disk = null): string + { + $key = $disk; + + if (isset(FileUploader::$studlyCache['disk_'.$key])) { + return FileUploader::$studlyCache['disk_'.$key]; + } + + $defaults = self::getConfig(); + + return FileUploader::$studlyCache['disk_'.$key] = $disk ?: $defaults['disk']; + } + + /** + * Get FileUploader configurations + * + * @return array + */ + protected static function getConfig(): array + { + $config = config(FileUploaderServiceProvider::$abstract); + + return empty($config) ? [] : Arr::wrap($config); + } + + /** + * Create a streamed response for a given file. + * + * + * @return StreamedResponse Content + */ + public static function get(string $path, string $disk = null): StreamedResponse + { + return Storage::disk(self::getDisk($disk))->response($path); + } + + /** + * Create a streamed response for a given file. + * + * + * @return string|null Content + * + * @throws MissingFile + */ + public static function getFile(string $path, string $disk = null): ?string + { + if (! Storage::disk(self::getDisk($disk))->exists($path)) { + throw new MissingFile("File $path does not exists."); + } + + return Storage::disk(self::getDisk($disk))->get($path); + } + + /** + * Get public path url. + * Mainly used to access public files. + */ + public static function url(string $path, string $disk = null): string + { + return Storage::disk(self::getDisk($disk))->url($path); + } + + /** + * Get file path. + */ + public static function path(string $path, string $disk = null): string + { + return Storage::disk(self::getDisk($disk))->path($path); + } + + /** + * Download a specific resource + * + * @param string|null $name name with extensions. + */ + public static function download(string $path, string|null $name, string $disk = null): StreamedResponse + { + return Storage::disk(self::getDisk($disk))->download($path, $name); + } + + /** + * Get Visibility of a file + * + * @return string public|private + */ + public static function getVisibility(string $path, string $disk = null): string + { + return Storage::disk(self::getDisk($disk))->getVisibility($path); + } + + /** + * Set Visibility of a file + */ + public static function setVisibility(string $path, string $visibility, string $disk = null): bool + { + if (! in_array($visibility, self::$validOptions, true)) { + return false; + } + + return Storage::disk(self::getDisk($disk))->setVisibility($path, $visibility); + } + + /** + * Delete file from disk + * + * @throws MissingFile + */ + public static function remove(string $path, bool $throwError = true, string $disk = null): bool + { + if ($throwError && ! Storage::disk(self::getDisk($disk))->exists($path)) { + throw new MissingFile('File does not exist!'); + } + + return Storage::disk(self::getDisk($disk))->delete($path); + } + + /** + * Get meta data for a specific file. + * + * + * @return array + */ + public static function meta(string $path, string $disk = null): array + { + $diskFrom = Storage::disk(self::getDisk($disk)); + + return [ + 'path' => $diskFrom->path($path), + 'url' => $diskFrom->url($path), + 'visibility' => $diskFrom->getVisibility($path), + 'mimeType' => $diskFrom->mimeType($path), + 'size' => self::formatBytes($diskFrom->size($path)), + 'last_modified' => Carbon::createFromTimestamp($diskFrom->lastModified($path))->diffForHumans(), + 'name' => basename($path), + ]; + } + + /** + * Get all extensions + * + * @return array Extensions of all file types + */ + public static function allExtensions(): array + { + return array_merge(self::$image_ext, self::$audio_ext, self::$video_ext, self::$document_ext, self::$archives_ext, self::$font_ext); + } + + /** + * Get all allowed image extensions + * + * @return array + */ + public static function images(): array + { + return self::$image_ext; + } + + /** + * Get all allowed document extensions + * + * @return array + */ + public static function documents(): array + { + return self::$document_ext; + } + + /** + * Get type by extension + * + * @param string $ext Specific extension + * @return string Type + */ + private static function getType(string $ext): string + { + if (self::in_array($ext, self::$image_ext)) { + return self::IMAGE; + } + + if (self::in_array($ext, self::$audio_ext)) { + return self::AUDIO; + } + + if (self::in_array($ext, self::$video_ext)) { + return self::VIDEO; + } + + if (self::in_array($ext, self::$document_ext)) { + return self::DOCUMENT; + } + + if (in_array($ext, self::$font_ext)) { + return self::FONT; + } + + if (in_array($ext, self::$archives_ext)) { + return self::ARCHIVE; + } + + return self::FILE; + } + + private static function defaultSanitizer(string $fileName): string + { + $fileName = (string) preg_replace('#\p{C}+#u', '', $fileName); + + return str_replace(['#', '/', '\\', ' '], '-', $fileName); + } + + /** + * Get directory for the specific user + * + * @return string Specific user directory + * + * @example uploads/{user_id}/{type}/{filename} + */ + private static function getUserDir(string $filename, string $type = self::FILE, int $user_id = null): string + { + $defaults = self::getConfig(); + + $dir = $defaults['path'] ?? self::UPLOAD_PATH; + + return trim(strtr($dir, [ + '{user_id}' => $user_id, + '{type}' => $type, + '{filename}' => $filename, + ]), '/\\'); + } + + /** + * Grab dimensions of an image. + * + * @return string|null string|null + */ + private static function getDimensions(UploadedFile $file, string $type = self::IMAGE): ?string + { + if ('image' !== $type) { + return null; + } + + if (self::isValidFileInstance($file) && $file->getClientMimeType() === 'image/svg+xml') { + return null; + } + + if (! self::isValidFileInstance($file) || ! $sizeDetails = @getimagesize($file->getRealPath())) { + return null; + } + + [$width, $height] = $sizeDetails; + + return $width.'x'.$height; + } + + /** + * Check that the given value is a valid file instance. + */ + private static function isValidFileInstance(mixed $file): bool + { + if ($file instanceof SymfonyUploadedFile && ! $file->isValid()) { + return false; + } + + return $file instanceof SymfonyFile; + } + + /** + * @param array $haystack + */ + private static function in_array(string $needle, array $haystack): bool + { + return in_array(strtolower($needle), array_map('strtolower', $haystack)); + } + + /** + * get icon path + */ + public static function getIconPath(string $mimeType): string + { + $file_type_icons_path = 'img'.DIRECTORY_SEPARATOR.'file-type-icons'.DIRECTORY_SEPARATOR; + + $icon_file = match ($mimeType) { + 'image/jpeg', 'image/pjpeg', 'image/x-jps' => 'jpeg.png', + 'image/png' => 'png.png', + 'image/gif' => 'gif.png', + 'image/bmp', 'image/x-windows-bmp' => 'bmp.png', + 'text/html', 'text/asp', 'text/javascript', 'text/ecmascript', 'application/x-javascript', 'application/javascript', 'application/ecmascript' => 'html.png', + 'text/plain' => 'conf.png', + 'text/css' => 'css.png', + 'audio/aiff', 'audio/x-aiff', 'audio/midi' => 'midi.png', + 'application/x-troff-msvideo', 'video/avi', 'video/msvideo', 'video/x-msvideo', 'video/avs-video' => 'avi.png', + 'video/animaflex' => 'fla.png', + 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.ms-word.document.macroEnabled.12', 'application/vnd.ms-word.template.macroEnabled.12', 'application/vnd.oasis.opendocument.text', 'application/vnd.apple.pages', 'application/vnd.ms-xpsdocument', 'application/oxps', 'application/rtf', 'application/wordperfect', 'application/octet-stream' => 'docx.png', + 'application/x-compressed', 'application/x-7z-compressed', 'application/x-gzip', 'application/zip', 'multipart/x-gzip', 'multipart/x-zip' => 'zip.png', + 'application/x-gtar', 'application/rar', 'application/x-tar' => 'rar.png', + 'video/mpeg', 'audio/mpeg' => 'mpeg.png', + 'application/pdf' => 'pdf.png', + 'application/mspowerpoint', 'application/vnd.ms-powerpoint', 'application/powerpoint' => 'ms-pptx.png', + 'application/excel', 'application/x-excel', 'application/x-msexcel', 'application/vnd.apple.numbers', 'application/application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.ms-excel.sheet.macroEnabled.12', 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'ms-xlsx.png', + 'image/vnd.adobe.photoshop' => 'psd.png', + 'not-found' => 'not-found.png', + default => 'unknown.png', + }; + + return $file_type_icons_path.$icon_file; + } + + /** + * getFileType + * Return file mimetype default: 'application/octet-stream' + */ + public static function getFileType(string $filename): bool|string + { + $mime_types = [ + + 'txt' => 'text/plain', + 'htm' => 'text/html', + 'html' => 'text/html', + 'php' => 'text/html', + 'css' => 'text/css', + 'js' => 'application/javascript', + 'json' => 'application/json', + 'xml' => 'application/xml', + 'swf' => 'application/x-shockwave-flash', + 'flv' => 'video/x-flv', + + // images + 'png' => 'image/png', + 'jpe' => 'image/jpeg', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'gif' => 'image/gif', + 'bmp' => 'image/bmp', + 'ico' => 'image/vnd.microsoft.icon', + 'tiff' => 'image/tiff', + 'tif' => 'image/tiff', + 'svg' => 'image/svg+xml', + 'svgz' => 'image/svg+xml', + + // archives + 'zip' => 'application/zip', + 'rar' => 'application/x-rar-compressed', + 'exe' => 'application/x-msdownload', + 'msi' => 'application/x-msdownload', + 'cab' => 'application/vnd.ms-cab-compressed', + + // audio/video + 'mp3' => 'audio/mpeg', + 'qt' => 'video/quicktime', + 'mov' => 'video/quicktime', + + // adobe + 'pdf' => 'application/pdf', + 'psd' => 'image/vnd.adobe.photoshop', + 'ai' => 'application/postscript', + 'eps' => 'application/postscript', + 'ps' => 'application/postscript', + + // ms-office + 'doc' => 'application/msword', + 'rtf' => 'application/rtf', + 'xls' => 'application/vnd.ms-excel', + 'ppt' => 'application/vnd.ms-powerpoint', + + // open office + 'odt' => 'application/vnd.oasis.opendocument.text', + 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', + ]; + + $arr = explode('.', $filename); + $ext = strtolower(array_pop($arr)); + if (array_key_exists($ext, $mime_types)) { + return $mime_types[$ext]; + } elseif (function_exists('finfo_open')) { + $fileInfo = finfo_open(FILEINFO_MIME); + if ($fileInfo) { + $mimetype = finfo_file($fileInfo, $filename); + finfo_close($fileInfo); + + return $mimetype; + } + } + + return 'application/octet-stream'; + } + + /** + * helper to format bytes to other units + * + * @param int $size in-bytes + */ + public static function formatBytes(int $size, int $precision = 2): string + { + $units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; + $bytes = max($size, 0); + $pow = floor(($bytes ? log($bytes) : 0) / log(1024)); + $pow = min($pow, count($units) - 1); + $bytes /= pow(1024, $pow); + + return round($bytes, $precision).' '.$units[$pow]; + } + + /** + * converts KB,MB,GB,TB,PB,EB,ZB,YB to bytes + * + * + * @example 1KB => 1000 (bytes) + */ + public static function convertToBytes(string $from): float|int|string + { + $number = (int) substr($from, 0, -2); + + return match (strtoupper(substr($from, -2))) { + 'KB' => $number * 1024, + 'MB' => $number * pow(1024, 2), + 'GB' => $number * pow(1024, 3), + 'TB' => $number * pow(1024, 4), + 'PB' => $number * pow(1024, 5), + 'EB' => $number * pow(1024, 6), + 'ZB' => $number * pow(1024, 7), + 'YB' => $number * pow(1024, 8), + default => $from, + }; + } + + /** + * Convert bytes to the unit specified by the $to parameter. + * + * @param int $bytes The filesize in Bytes. + * @param string $to The unit type to convert to. Accepts KB, MB, GB, TB or PB for Kilobytes, Megabytes, Gigabytes, Terabytes or PetaBytes, respectively. + * @param int $decimal_places The number of decimal places to return. + * @return string Returns only the number of units, not the type letter. Returns 0 if the $to unit type is out of scope. + * + * @example 1024 (KB) => 1MB + */ + public static function convertBytesToSpecified(int $bytes, string $to = 'MB', int $decimal_places = 2): string + { + $formulas = [ + 'KB' => number_format($bytes / 1024, $decimal_places), + 'MB' => number_format($bytes / pow(1024, 2), $decimal_places), + 'GB' => number_format($bytes / pow(1024, 3), $decimal_places), + 'TB' => number_format($bytes / pow(1024, 4), $decimal_places), + 'PB' => number_format($bytes / pow(1024, 5), $decimal_places), + 'EB' => number_format($bytes / pow(1024, 6), $decimal_places), + 'ZB' => number_format($bytes / pow(1024, 7), $decimal_places), + 'YB' => number_format($bytes / pow(1024, 8), $decimal_places), + ]; + + return isset($formulas[$to]) ? $formulas[$to].$to : 0 .$to; + } +} diff --git a/code/vendor/erlandmuchasaj/laravel-file-uploader/src/FileUploaderServiceProvider.php b/code/vendor/erlandmuchasaj/laravel-file-uploader/src/FileUploaderServiceProvider.php new file mode 100644 index 0000000..1e028b8 --- /dev/null +++ b/code/vendor/erlandmuchasaj/laravel-file-uploader/src/FileUploaderServiceProvider.php @@ -0,0 +1,42 @@ +mergeConfigFrom( + __DIR__.'/../config/file-uploader.php', + static::$abstract + ); + } + + public function boot(): void + { + if ($this->app->runningInConsole()) { + $this->publishes([ + __DIR__.'/../config/file-uploader.php' => config_path(static::$abstract.'.php'), + ], 'config'); + } + } + + /** + * Get the services provided by the provider. + * + * @return array + */ + public function provides(): array + { + return [static::$abstract]; + } +}