diff --git a/app/Filament/Resources/DashboardResource/Widgets/OrdersAggregateChart.php b/app/Filament/Resources/DashboardResource/Widgets/OrdersAggregateChart.php index 24eb3ca..e861607 100755 --- a/app/Filament/Resources/DashboardResource/Widgets/OrdersAggregateChart.php +++ b/app/Filament/Resources/DashboardResource/Widgets/OrdersAggregateChart.php @@ -4,9 +4,8 @@ namespace App\Filament\Resources\DashboardResource\Widgets; use App\Models\User\UserOrder; use Filament\Widgets\ChartWidget; -use Flowframe\Trend\Trend; -use Flowframe\Trend\TrendValue; use Illuminate\Contracts\Support\Htmlable; +use Illuminate\Support\Facades\DB; class OrdersAggregateChart extends ChartWidget { @@ -28,47 +27,45 @@ class OrdersAggregateChart extends ChartWidget return __('filament::resources.stats.orders_chart.description'); } + private function getTrendData($query): array + { + return $query->whereBetween('created_at', [now()->startOfMonth(), now()->endOfMonth()]) + ->selectRaw('DATE(created_at) as date, COUNT(*) as aggregate') + ->groupBy(DB::raw('DATE(created_at)')) + ->orderBy('date') + ->pluck('aggregate', 'date') + ->toArray(); + } + #[\Override] protected function getData(): array { - $pendingOrder = Trend::query(UserOrder::pending()) - ->between(start: now()->startOfMonth(), end: now()->endOfMonth()) - ->perDay() - ->count(); + $pendingData = $this->getTrendData(UserOrder::pending()); + $cancelledData = $this->getTrendData(UserOrder::cancelled()); + $completedData = $this->getTrendData(UserOrder::completed()); - $cancelledOrder = Trend::query(UserOrder::cancelled()) - ->between(start: now()->startOfMonth(), end: now()->endOfMonth()) - ->perDay() - ->count(); - - $completedOrder = Trend::query(UserOrder::completed()) - ->between(start: now()->startOfMonth(), end: now()->endOfMonth()) - ->perDay() - ->count(); + $allDates = collect(array_keys(array_merge($pendingData, $cancelledData, $completedData))) + ->unique() + ->sort() + ->values(); $datasets = [ - $this->getDataset($pendingOrder, __('filament::resources.stats.orders_chart.pending'), '#fbbf24', '#f59e0b'), - $this->getDataset($cancelledOrder, __('filament::resources.stats.orders_chart.cancelled'), '#dc2626', '#b91c1c'), - $this->getDataset($completedOrder, __('filament::resources.stats.orders_chart.completed'), '#10b981', '#059669'), + $this->getDataset($pendingData, $allDates, __('filament::resources.stats.orders_chart.pending'), '#fbbf24', '#f59e0b'), + $this->getDataset($cancelledData, $allDates, __('filament::resources.stats.orders_chart.cancelled'), '#dc2626', '#b91c1c'), + $this->getDataset($completedData, $allDates, __('filament::resources.stats.orders_chart.completed'), '#10b981', '#059669'), ]; - $data = $pendingOrder->map(fn (TrendValue $value) => $value->date)->merge( - $cancelledOrder->map(fn (TrendValue $value) => $value->date), - )->merge( - $completedOrder->map(fn (TrendValue $value) => $value->date), - )->unique()->sort()->flatten(); - return [ 'datasets' => $datasets, - 'labels' => $data, + 'labels' => $allDates, ]; } - protected function getDataset($data, $label, string $backgroundColor, string $borderColor): array + private function getDataset(array $data, $allDates, string $label, string $backgroundColor, string $borderColor): array { return [ 'label' => $label, - 'data' => $data->map(fn (TrendValue $value) => $value->aggregate), + 'data' => $allDates->map(fn ($date) => $data[$date] ?? 0), 'backgroundColor' => $backgroundColor, 'borderColor' => $borderColor, ]; diff --git a/app/Filament/Widgets/ArticlesAggregateChart.php b/app/Filament/Widgets/ArticlesAggregateChart.php index 7c2c89a..da92e25 100755 --- a/app/Filament/Widgets/ArticlesAggregateChart.php +++ b/app/Filament/Widgets/ArticlesAggregateChart.php @@ -4,9 +4,8 @@ namespace App\Filament\Widgets; use App\Models\Articles\WebsiteArticle; use Filament\Widgets\ChartWidget; -use Flowframe\Trend\Trend; -use Flowframe\Trend\TrendValue; use Illuminate\Contracts\Support\Htmlable; +use Illuminate\Support\Facades\DB; class ArticlesAggregateChart extends ChartWidget { @@ -34,13 +33,12 @@ class ArticlesAggregateChart extends ChartWidget #[\Override] protected function getData(): array { - $data = Trend::model(WebsiteArticle::class) - ->between( - start: now()->startOfMonth(), - end: now()->endOfMonth(), - ) - ->perDay() - ->count(); + $data = WebsiteArticle::query() + ->whereBetween('created_at', [now()->startOfMonth(), now()->endOfMonth()]) + ->selectRaw('DATE(created_at) as date, COUNT(*) as aggregate') + ->groupBy(DB::raw('DATE(created_at)')) + ->orderBy('date') + ->get(); $label = __('filament::resources.stats.articles_chart.label'); @@ -48,10 +46,10 @@ class ArticlesAggregateChart extends ChartWidget 'datasets' => [ [ 'label' => $label, - 'data' => $data->map(fn (TrendValue $value) => $value->aggregate), + 'data' => $data->pluck('aggregate'), ], ], - 'labels' => $data->map(fn (TrendValue $value) => $value->date), + 'labels' => $data->pluck('date'), ]; } diff --git a/app/Http/Controllers/Shop/PayPalController.php b/app/Http/Controllers/Shop/PayPalController.php index 771c50f..2b673a1 100755 --- a/app/Http/Controllers/Shop/PayPalController.php +++ b/app/Http/Controllers/Shop/PayPalController.php @@ -4,11 +4,10 @@ namespace App\Http\Controllers\Shop; use App\Http\Controllers\Controller; use App\Http\Requests\AccountTopupFormRequest; +use App\Services\PayPalService; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; -use Srmklive\PayPal\Services\PayPal; -use Srmklive\PayPal\Services\PayPal as PayPalClient; use Symfony\Component\HttpFoundation\Response; class PayPalController extends Controller @@ -17,17 +16,11 @@ class PayPalController extends Controller private const string STATUS_COMPLETED = 'COMPLETED'; - private ?PayPalClient $provider = null; + private PayPalService $paypal; - private function getProvider(): PayPalClient + public function __construct(PayPalService $paypal) { - if (! $this->provider instanceof PayPal) { - $this->provider = new PayPalClient; - $this->provider->setApiCredentials(config('habbo.paypal')); - $this->provider->getAccessToken(); - } - - return $this->provider; + $this->paypal = $paypal; } public function process(AccountTopupFormRequest $request): Response|RedirectResponse @@ -44,7 +37,7 @@ class PayPalController extends Controller 'user_action' => 'CONTINUE', ], 'purchase_units' => [ - 0 => [ + [ 'amount' => [ 'currency_code' => config('habbo.paypal.currency'), 'value' => (string) $amount, @@ -53,14 +46,13 @@ class PayPalController extends Controller ], ]; - $response = $this->getProvider()->createOrder($orderData); + $response = $this->paypal->createOrder($orderData); - if (isset($response['id']) === false) { + if ($response === null || ! isset($response['id'])) { + $message = $response['message'] ?? __('Something went wrong'); Log::error('Error creating order', ['response' => $response]); - return to_route('shop.index')->withErrors( - ['message' => $response['message'] ?? __('Something went wrong')], - ); + return to_route('shop.index')->withErrors(['message' => $message]); } foreach ($response['links'] as $links) { @@ -76,7 +68,7 @@ class PayPalController extends Controller } return to_route('shop.index')->withErrors( - ['message' => $response['message'] ?? __('Something went wrong')], + ['message' => __('Something went wrong')], ); } @@ -97,26 +89,30 @@ class PayPalController extends Controller return to_route('shop.index')->withErrors(['message' => __('Transaction already processed')]); } - $response = $this->getProvider()->capturePaymentOrder($request['token']); - $paymentDetails = $response['purchase_units'][0]['payments']['captures'][0] ?? null; + $response = $this->paypal->capturePaymentOrder($request['token']); + + if ($response === null) { + Log::error('PayPal capture returned null'); + + return to_route('shop.index')->withErrors(['message' => __('Something went wrong, please try again later')]); + } + + if (isset($response['status'], $response['purchase_units'][0]['payments']['captures'][0]) === false) { + if (isset($response['error']['details'][0])) { + $details = $response['error']['details'][0]; + $transaction->update([ + 'status' => $response['name'] ?? 'ERROR', + 'description' => sprintf('%s - %s', $details['issue'] ?? '', $details['description'] ?? ''), + 'amount' => 0, + ]); + } - if (! isset($response['status'], $paymentDetails)) { Log::error('Invalid response from PayPal', ['response' => $response]); return to_route('shop.index')->withErrors(['message' => __('Something went wrong, please try again later')]); } - if (($response['status'] ?? null) === null) { - $details = $response['error']['details'][0]; - $transaction->update([ - 'status' => $response['name'], - 'description' => sprintf('%s - %s', $details['issue'], $details['description']), - 'amount' => 0, - ]); - - return to_route('shop.index')->withErrors(['message' => __('Something went wrong, please check your paypal account to make sure nothing was deducted and try again')]); - } - + $paymentDetails = $response['purchase_units'][0]['payments']['captures'][0]; $capturedAmount = (float) $paymentDetails['amount']['value']; $expectedAmount = (float) ($transaction->expected_amount ?? 0); @@ -144,7 +140,7 @@ class PayPalController extends Controller if ($response['status'] !== self::STATUS_COMPLETED) { return to_route('shop.index')->withErrors( - ['message' => $response['message'] ?? __('Something went wrong')], + ['message' => __('Something went wrong')], ); } diff --git a/app/Services/PayPalService.php b/app/Services/PayPalService.php new file mode 100644 index 0000000..23c386d --- /dev/null +++ b/app/Services/PayPalService.php @@ -0,0 +1,152 @@ +mode = config('habbo.paypal.mode', 'sandbox'); + $this->clientId = config("habbo.paypal.{$this->mode}.client_id", ''); + $this->clientSecret = config("habbo.paypal.{$this->mode}.client_secret", ''); + + $baseUrl = $this->mode === 'live' + ? 'https://api-m.paypal.com' + : 'https://api-m.sandbox.paypal.com'; + + $this->client = new Client([ + 'base_uri' => $baseUrl, + 'timeout' => 30, + 'http_errors' => false, + ]); + } + + public function getAccessToken(): ?string + { + $cacheKey = 'paypal_access_token_' . $this->mode; + + return Cache::remember($cacheKey, 32400, function () { + try { + $response = $this->client->post('/v1/oauth2/token', [ + 'headers' => [ + 'Accept' => 'application/json', + 'Content-Type' => 'application/x-www-form-urlencoded', + ], + 'auth' => [$this->clientId, $this->clientSecret], + 'form_params' => [ + 'grant_type' => 'client_credentials', + ], + ]); + + $body = json_decode($response->getBody(), true); + + if ($response->getStatusCode() !== 200 || ! isset($body['access_token'])) { + Log::error('PayPal access token request failed', [ + 'status' => $response->getStatusCode(), + 'response' => $body, + ]); + + return; + } + + return $body['access_token']; + } catch (GuzzleException $e) { + Log::error('PayPal access token exception', [ + 'message' => $e->getMessage(), + ]); + + return; + } + }); + } + + public function createOrder(array $orderData): ?array + { + $accessToken = $this->getAccessToken(); + + if ($accessToken === null) { + return null; + } + + try { + $response = $this->client->post('/v2/checkout/orders', [ + 'headers' => [ + 'Content-Type' => 'application/json', + 'Authorization' => "Bearer {$accessToken}", + 'Accept' => 'application/json', + ], + 'json' => $orderData, + ]); + + $body = json_decode($response->getBody(), true); + + if ($response->getStatusCode() >= 400) { + Log::error('PayPal create order failed', [ + 'status' => $response->getStatusCode(), + 'response' => $body, + ]); + + return $body; + } + + return $body; + } catch (GuzzleException $e) { + Log::error('PayPal create order exception', [ + 'message' => $e->getMessage(), + ]); + + return null; + } + } + + public function capturePaymentOrder(string $orderId): ?array + { + $accessToken = $this->getAccessToken(); + + if ($accessToken === null) { + return null; + } + + try { + $response = $this->client->post("/v2/checkout/orders/{$orderId}/capture", [ + 'headers' => [ + 'Content-Type' => 'application/json', + 'Authorization' => "Bearer {$accessToken}", + 'Accept' => 'application/json', + ], + ]); + + $body = json_decode($response->getBody(), true); + + if ($response->getStatusCode() >= 400) { + Log::error('PayPal capture order failed', [ + 'status' => $response->getStatusCode(), + 'response' => $body, + ]); + + return $body; + } + + return $body; + } catch (GuzzleException $e) { + Log::error('PayPal capture order exception', [ + 'message' => $e->getMessage(), + ]); + + return null; + } + } +} diff --git a/composer.json b/composer.json index 8f76d7d..f25c7d8 100755 --- a/composer.json +++ b/composer.json @@ -14,7 +14,6 @@ "ext-sockets": "*", "doctrine/dbal": "^4.4", "filament/filament": "^5.6", - "flowframe/laravel-trend": "0.4.99", "guzzlehttp/guzzle": "^7.10", "inertiajs/inertia-laravel": "^3.1", "laravel/fortify": "^1.37", @@ -31,7 +30,6 @@ "spatie/laravel-sluggable": "^4.0", "spiral/roadrunner-cli": "^2.7", "spiral/roadrunner-http": "^4.1", - "srmklive/paypal": "3.0.99", "stevebauman/purify": "^6.3" }, "require-dev": { @@ -101,72 +99,7 @@ "pestphp/pest-plugin": true } }, - "repositories": [ - { - "type": "package", - "package": { - "name": "flowframe/laravel-trend", - "version": "0.4.99", - "source": { - "url": "https://github.com/Flowframe/laravel-trend.git", - "type": "git", - "reference": "5ace11d3075932652dc48963faa732c043aeb14d" - }, - "autoload": { - "psr-4": { - "Flowframe\\Trend\\": "src" - } - }, - "require": { - "php": "^8.0", - "illuminate/contracts": "^8.37|^9|^10.0|^11.0|^12.0|^13.0", - "illuminate/database": "^8.37|^9|^10.0|^11.0|^12.0|^13.0", - "illuminate/support": "^8.37|^9|^10.0|^11.0|^12.0|^13.0", - "spatie/laravel-package-tools": "^1.4.3" - } - } - }, - { - "type": "package", - "package": { - "name": "srmklive/paypal", - "version": "3.0.99", - "source": { - "url": "https://github.com/srmklive/laravel-paypal.git", - "type": "git", - "reference": "1ddc49fd836a4785933ab953452152f3fedbac63" - }, - "dist": { - "url": "https://api.github.com/repos/srmklive/laravel-paypal/zipball/1ddc49fd836a4785933ab953452152f3fedbac63", - "type": "zip", - "reference": "1ddc49fd836a4785933ab953452152f3fedbac63" - }, - "autoload": { - "psr-4": { - "Srmklive\\PayPal\\": "src/" - } - }, - "require": { - "php": ">=7.2|^8.0", - "ext-curl": "*", - "guzzlehttp/guzzle": "~7.0", - "nesbot/carbon": "~2.0|^3.0", - "illuminate/support": "~6.0|~7.0|~8.0|~9.0|^10.0|^11.0|^12.0|^13.0", - "illuminate/console": "~6.0|~7.0|~8.0|~9.0|^10.0|^11.0|^12.0|^13.0" - }, - "extra": { - "laravel": { - "providers": [ - "Srmklive\\PayPal\\Providers\\PayPalServiceProvider" - ], - "aliases": { - "PayPal": "Srmklive\\PayPal\\Facades\\PayPal" - } - } - } - } - } - ], + "repositories": [], "minimum-stability": "stable", "prefer-stable": true } diff --git a/composer.lock b/composer.lock index 638a08f..a509a1a 100755 --- a/composer.lock +++ b/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": "f297a466517bedb236e0e702ed83d250", + "content-hash": "b124d8a22803da548bb33931f590e3bf", "packages": [ { "name": "bacon/bacon-qr-code", @@ -213,23 +213,22 @@ }, { "name": "brick/math", - "version": "0.14.8", + "version": "0.17.2", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629" + "reference": "8189e751995f9e15729c1aa2f89fa8f166ffe818" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/63422359a44b7f06cae63c3b429b59e8efcc0629", - "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629", + "url": "https://api.github.com/repos/brick/math/zipball/8189e751995f9e15729c1aa2f89fa8f166ffe818", + "reference": "8189e751995f9e15729c1aa2f89fa8f166ffe818", "shasum": "" }, "require": { "php": "^8.2" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.2", "phpstan/phpstan": "2.1.22", "phpunit/phpunit": "^11.5" }, @@ -261,7 +260,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.14.8" + "source": "https://github.com/brick/math/tree/0.17.2" }, "funding": [ { @@ -269,7 +268,7 @@ "type": "github" } ], - "time": "2026-02-10T14:33:43+00:00" + "time": "2026-05-25T20:34:43+00:00" }, { "name": "carbonphp/carbon-doctrine-types", @@ -1863,16 +1862,16 @@ }, { "name": "firebase/php-jwt", - "version": "v7.0.5", + "version": "v7.1.0", "source": { "type": "git", "url": "https://github.com/googleapis/php-jwt.git", - "reference": "47ad26bab5e7c70ae8a6f08ed25ff83631121380" + "reference": "b374a5d1a4f1f67fadc2165cdb284645945e2fc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/php-jwt/zipball/47ad26bab5e7c70ae8a6f08ed25ff83631121380", - "reference": "47ad26bab5e7c70ae8a6f08ed25ff83631121380", + "url": "https://api.github.com/repos/googleapis/php-jwt/zipball/b374a5d1a4f1f67fadc2165cdb284645945e2fc0", + "reference": "b374a5d1a4f1f67fadc2165cdb284645945e2fc0", "shasum": "" }, "require": { @@ -1881,6 +1880,7 @@ "require-dev": { "guzzlehttp/guzzle": "^7.4", "phpfastcache/phpfastcache": "^9.2", + "phpseclib/phpseclib": "~3.0", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5", "psr/cache": "^2.0||^3.0", @@ -1889,7 +1889,8 @@ }, "suggest": { "ext-sodium": "Support EdDSA (Ed25519) signatures", - "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present", + "phpseclib/phpseclib": "Support PS256 (RSASSA-PSS) signatures" }, "type": "library", "autoload": { @@ -1914,38 +1915,16 @@ } ], "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", - "homepage": "https://github.com/firebase/php-jwt", + "homepage": "https://github.com/googleapis/php-jwt", "keywords": [ "jwt", "php" ], "support": { "issues": "https://github.com/googleapis/php-jwt/issues", - "source": "https://github.com/googleapis/php-jwt/tree/v7.0.5" + "source": "https://github.com/googleapis/php-jwt/tree/v7.1.0" }, - "time": "2026-04-01T20:38:03+00:00" - }, - { - "name": "flowframe/laravel-trend", - "version": "0.4.99", - "source": { - "type": "git", - "url": "https://github.com/Flowframe/laravel-trend.git", - "reference": "5ace11d3075932652dc48963faa732c043aeb14d" - }, - "require": { - "illuminate/contracts": "^8.37|^9|^10.0|^11.0|^12.0|^13.0", - "illuminate/database": "^8.37|^9|^10.0|^11.0|^12.0|^13.0", - "illuminate/support": "^8.37|^9|^10.0|^11.0|^12.0|^13.0", - "php": "^8.0", - "spatie/laravel-package-tools": "^1.4.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Flowframe\\Trend\\": "src" - } - } + "time": "2026-06-11T17:54:14+00:00" }, { "name": "fruitcake/php-cors", @@ -2020,16 +1999,16 @@ }, { "name": "google/protobuf", - "version": "v5.35.0", + "version": "v5.35.1", "source": { "type": "git", "url": "https://github.com/protocolbuffers/protobuf-php.git", - "reference": "d96ed77c7edaff3cd576a74173aa0b0655c87b1a" + "reference": "55bb4a7d6739b5af0927b96213c1371a3afb7cfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/protocolbuffers/protobuf-php/zipball/d96ed77c7edaff3cd576a74173aa0b0655c87b1a", - "reference": "d96ed77c7edaff3cd576a74173aa0b0655c87b1a", + "url": "https://api.github.com/repos/protocolbuffers/protobuf-php/zipball/55bb4a7d6739b5af0927b96213c1371a3afb7cfb", + "reference": "55bb4a7d6739b5af0927b96213c1371a3afb7cfb", "shasum": "" }, "require": { @@ -2058,9 +2037,9 @@ "proto" ], "support": { - "source": "https://github.com/protocolbuffers/protobuf-php/tree/v5.35.0" + "source": "https://github.com/protocolbuffers/protobuf-php/tree/v5.35.1" }, - "time": "2026-05-19T22:13:40+00:00" + "time": "2026-06-11T21:19:23+00:00" }, { "name": "graham-campbell/result-type", @@ -2126,22 +2105,22 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.11.1", + "version": "7.12.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "5af96f374e0ab4ebd747b8310888c99d3adb0a8c" + "reference": "d34627490fbc03bf5c5d7cfed81f2faa19519425" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/5af96f374e0ab4ebd747b8310888c99d3adb0a8c", - "reference": "5af96f374e0ab4ebd747b8310888c99d3adb0a8c", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d34627490fbc03bf5c5d7cfed81f2faa19519425", + "reference": "d34627490fbc03bf5c5d7cfed81f2faa19519425", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^2.5", - "guzzlehttp/psr7": "^2.11", + "guzzlehttp/psr7": "^2.12.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.5 || ^3.0", @@ -2154,7 +2133,7 @@ "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", "guzzle/client-integration-tests": "3.0.2", - "guzzlehttp/test-server": "^0.5", + "guzzlehttp/test-server": "^0.5.1", "php-http/message-factory": "^1.1", "phpunit/phpunit": "^8.5.52 || ^9.6.34", "psr/log": "^1.1 || ^2.0 || ^3.0" @@ -2234,7 +2213,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.11.1" + "source": "https://github.com/guzzle/guzzle/tree/7.12.1" }, "funding": [ { @@ -2250,7 +2229,7 @@ "type": "tidelift" } ], - "time": "2026-06-07T22:54:06+00:00" + "time": "2026-06-18T14:12:49+00:00" }, { "name": "guzzlehttp/promises", @@ -2338,16 +2317,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.11.0", + "version": "2.12.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "bbb5e61349fa5cb822b3e87842b951088b76b81f" + "reference": "172ef2f4e9824c1e058b7f30be8ae25a02c0f2b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/bbb5e61349fa5cb822b3e87842b951088b76b81f", - "reference": "bbb5e61349fa5cb822b3e87842b951088b76b81f", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/172ef2f4e9824c1e058b7f30be8ae25a02c0f2b7", + "reference": "172ef2f4e9824c1e058b7f30be8ae25a02c0f2b7", "shasum": "" }, "require": { @@ -2437,7 +2416,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.11.0" + "source": "https://github.com/guzzle/psr7/tree/2.12.1" }, "funding": [ { @@ -2453,20 +2432,20 @@ "type": "tidelift" } ], - "time": "2026-06-02T12:30:48+00:00" + "time": "2026-06-18T09:49:37+00:00" }, { "name": "guzzlehttp/uri-template", - "version": "v1.0.6", + "version": "v1.0.7", "source": { "type": "git", "url": "https://github.com/guzzle/uri-template.git", - "reference": "eef7f87bab6f204eba3c39224d8075c70c637946" + "reference": "7fe811c23a9e3cd712b4389eaeb50b5456d8c529" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/eef7f87bab6f204eba3c39224d8075c70c637946", - "reference": "eef7f87bab6f204eba3c39224d8075c70c637946", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/7fe811c23a9e3cd712b4389eaeb50b5456d8c529", + "reference": "7fe811c23a9e3cd712b4389eaeb50b5456d8c529", "shasum": "" }, "require": { @@ -2523,7 +2502,7 @@ ], "support": { "issues": "https://github.com/guzzle/uri-template/issues", - "source": "https://github.com/guzzle/uri-template/tree/v1.0.6" + "source": "https://github.com/guzzle/uri-template/tree/v1.0.7" }, "funding": [ { @@ -2539,7 +2518,7 @@ "type": "tidelift" } ], - "time": "2026-05-23T22:00:21+00:00" + "time": "2026-06-12T21:33:43+00:00" }, { "name": "inertiajs/inertia-laravel", @@ -2831,16 +2810,16 @@ }, { "name": "laravel/framework", - "version": "v13.15.0", + "version": "v13.16.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "7e23b2aa4e1133a43835c93a810b4bedc40e425b" + "reference": "6135650d69bd9442e470bb1b343422081b076f1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/7e23b2aa4e1133a43835c93a810b4bedc40e425b", - "reference": "7e23b2aa4e1133a43835c93a810b4bedc40e425b", + "url": "https://api.github.com/repos/laravel/framework/zipball/6135650d69bd9442e470bb1b343422081b076f1e", + "reference": "6135650d69bd9442e470bb1b343422081b076f1e", "shasum": "" }, "require": { @@ -3051,7 +3030,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2026-06-09T13:45:51+00:00" + "time": "2026-06-16T16:07:50+00:00" }, { "name": "laravel/octane", @@ -3395,16 +3374,16 @@ }, { "name": "laravel/socialite", - "version": "v5.27.0", + "version": "v5.28.0", "source": { "type": "git", "url": "https://github.com/laravel/socialite.git", - "reference": "40e0757a75637c7b2dff05d3286b0d8fc25e5c0e" + "reference": "4c131ff4b24d8881a9c8fe4eecb5ffeff9803f26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/40e0757a75637c7b2dff05d3286b0d8fc25e5c0e", - "reference": "40e0757a75637c7b2dff05d3286b0d8fc25e5c0e", + "url": "https://api.github.com/repos/laravel/socialite/zipball/4c131ff4b24d8881a9c8fe4eecb5ffeff9803f26", + "reference": "4c131ff4b24d8881a9c8fe4eecb5ffeff9803f26", "shasum": "" }, "require": { @@ -3463,7 +3442,7 @@ "issues": "https://github.com/laravel/socialite/issues", "source": "https://github.com/laravel/socialite" }, - "time": "2026-04-24T14:05:47+00:00" + "time": "2026-06-12T03:24:05+00:00" }, { "name": "laravel/tinker", @@ -4525,16 +4504,16 @@ }, { "name": "nesbot/carbon", - "version": "3.11.4", + "version": "3.13.0", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "e890471a3494740f7d9326d72ce6a8c559ffee60" + "reference": "40f6618f052df16b545f626fbf9a878e6497d16a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/e890471a3494740f7d9326d72ce6a8c559ffee60", - "reference": "e890471a3494740f7d9326d72ce6a8c559ffee60", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/40f6618f052df16b545f626fbf9a878e6497d16a", + "reference": "40f6618f052df16b545f626fbf9a878e6497d16a", "shasum": "" }, "require": { @@ -4626,7 +4605,7 @@ "type": "tidelift" } ], - "time": "2026-04-07T09:57:54+00:00" + "time": "2026-06-18T13:49:15+00:00" }, { "name": "nette/php-generator", @@ -5007,16 +4986,16 @@ }, { "name": "opcodesio/log-viewer", - "version": "v3.24.0", + "version": "v3.24.2", "source": { "type": "git", "url": "https://github.com/opcodesio/log-viewer.git", - "reference": "8afefde09f6005f7d8ee3f628aa311f27c91d125" + "reference": "bdf931182c40001dd3ebf728fdded0648b121ae0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opcodesio/log-viewer/zipball/8afefde09f6005f7d8ee3f628aa311f27c91d125", - "reference": "8afefde09f6005f7d8ee3f628aa311f27c91d125", + "url": "https://api.github.com/repos/opcodesio/log-viewer/zipball/bdf931182c40001dd3ebf728fdded0648b121ae0", + "reference": "bdf931182c40001dd3ebf728fdded0648b121ae0", "shasum": "" }, "require": { @@ -5079,7 +5058,7 @@ ], "support": { "issues": "https://github.com/opcodesio/log-viewer/issues", - "source": "https://github.com/opcodesio/log-viewer/tree/v3.24.0" + "source": "https://github.com/opcodesio/log-viewer/tree/v3.24.2" }, "funding": [ { @@ -5091,20 +5070,20 @@ "type": "github" } ], - "time": "2026-03-15T19:31:14+00:00" + "time": "2026-06-11T13:41:17+00:00" }, { "name": "opcodesio/mail-parser", - "version": "v0.2.3", + "version": "v0.2.4", "source": { "type": "git", "url": "https://github.com/opcodesio/mail-parser.git", - "reference": "6f9544a1e526d5849cf8d96600556b2951893aec" + "reference": "7151e4183288e46d911a76803c5545a1c8822226" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opcodesio/mail-parser/zipball/6f9544a1e526d5849cf8d96600556b2951893aec", - "reference": "6f9544a1e526d5849cf8d96600556b2951893aec", + "url": "https://api.github.com/repos/opcodesio/mail-parser/zipball/7151e4183288e46d911a76803c5545a1c8822226", + "reference": "7151e4183288e46d911a76803c5545a1c8822226", "shasum": "" }, "require": { @@ -5142,9 +5121,9 @@ ], "support": { "issues": "https://github.com/opcodesio/mail-parser/issues", - "source": "https://github.com/opcodesio/mail-parser/tree/v0.2.3" + "source": "https://github.com/opcodesio/mail-parser/tree/v0.2.4" }, - "time": "2026-02-28T09:04:57+00:00" + "time": "2026-06-11T08:50:37+00:00" }, { "name": "openspout/openspout", @@ -5611,16 +5590,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.53", + "version": "3.0.55", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "511ddc8e352d5d1f1e33bea468b6f4ef48438cf9" + "reference": "db9744e6d47e742b1f974e965ad49bdd041105af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/511ddc8e352d5d1f1e33bea468b6f4ef48438cf9", - "reference": "511ddc8e352d5d1f1e33bea468b6f4ef48438cf9", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/db9744e6d47e742b1f974e965ad49bdd041105af", + "reference": "db9744e6d47e742b1f974e965ad49bdd041105af", "shasum": "" }, "require": { @@ -5701,7 +5680,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.53" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.55" }, "funding": [ { @@ -5717,7 +5696,7 @@ "type": "tidelift" } ], - "time": "2026-06-09T18:08:26+00:00" + "time": "2026-06-14T23:24:10+00:00" }, { "name": "phpstan/phpdoc-parser", @@ -6619,20 +6598,20 @@ }, { "name": "ramsey/uuid", - "version": "4.9.2", + "version": "4.9.3", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "8429c78ca35a09f27565311b98101e2826affde0" + "reference": "1df15849d00943a67d677dc9cfd80795f038c9f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/8429c78ca35a09f27565311b98101e2826affde0", - "reference": "8429c78ca35a09f27565311b98101e2826affde0", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/1df15849d00943a67d677dc9cfd80795f038c9f8", + "reference": "1df15849d00943a67d677dc9cfd80795f038c9f8", "shasum": "" }, "require": { - "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", + "brick/math": ">=0.8.16 <=0.18", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" }, @@ -6691,9 +6670,9 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.9.2" + "source": "https://github.com/ramsey/uuid/tree/4.9.3" }, - "time": "2025-12-14T04:43:48+00:00" + "time": "2026-06-18T03:57:49+00:00" }, { "name": "roadrunner-php/roadrunner-api-dto", @@ -7734,16 +7713,16 @@ }, { "name": "spiral/roadrunner", - "version": "v2025.1.14", + "version": "v2025.1.15", "source": { "type": "git", "url": "https://github.com/roadrunner-server/roadrunner.git", - "reference": "3853ad693522e82d53d62950e5f1315402c910f2" + "reference": "321b817fab1056e404533ca1ddd200e77d1525fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/roadrunner-server/roadrunner/zipball/3853ad693522e82d53d62950e5f1315402c910f2", - "reference": "3853ad693522e82d53d62950e5f1315402c910f2", + "url": "https://api.github.com/repos/roadrunner-server/roadrunner/zipball/321b817fab1056e404533ca1ddd200e77d1525fd", + "reference": "321b817fab1056e404533ca1ddd200e77d1525fd", "shasum": "" }, "type": "metapackage", @@ -7771,7 +7750,7 @@ "chat": "https://discord.gg/V6EK4he", "docs": "https://docs.roadrunner.dev/", "issues": "https://github.com/roadrunner-server/roadrunner/issues", - "source": "https://github.com/roadrunner-server/roadrunner/tree/v2025.1.14" + "source": "https://github.com/roadrunner-server/roadrunner/tree/v2025.1.15" }, "funding": [ { @@ -7779,7 +7758,7 @@ "type": "github" } ], - "time": "2026-05-15T13:20:01+00:00" + "time": "2026-06-17T14:49:38+00:00" }, { "name": "spiral/roadrunner-cli", @@ -8354,44 +8333,6 @@ ], "time": "2026-03-23T22:56:56+00:00" }, - { - "name": "srmklive/paypal", - "version": "3.0.99", - "source": { - "type": "git", - "url": "https://github.com/srmklive/laravel-paypal.git", - "reference": "1ddc49fd836a4785933ab953452152f3fedbac63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/srmklive/laravel-paypal/zipball/1ddc49fd836a4785933ab953452152f3fedbac63", - "reference": "1ddc49fd836a4785933ab953452152f3fedbac63" - }, - "require": { - "ext-curl": "*", - "guzzlehttp/guzzle": "~7.0", - "illuminate/console": "~6.0|~7.0|~8.0|~9.0|^10.0|^11.0|^12.0|^13.0", - "illuminate/support": "~6.0|~7.0|~8.0|~9.0|^10.0|^11.0|^12.0|^13.0", - "nesbot/carbon": "~2.0|^3.0", - "php": ">=7.2|^8.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Srmklive\\PayPal\\Providers\\PayPalServiceProvider" - ], - "aliases": { - "PayPal": "Srmklive\\PayPal\\Facades\\PayPal" - } - } - }, - "autoload": { - "psr-4": { - "Srmklive\\PayPal\\": "src/" - } - } - }, { "name": "stevebauman/purify", "version": "v6.3.2", @@ -11836,16 +11777,16 @@ }, { "name": "ueberdosis/tiptap-php", - "version": "2.1.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/ueberdosis/tiptap-php.git", - "reference": "6ea321fa665080e1a72ac5f52dfab19f6a292e2d" + "reference": "74bfb7be1c8c6102b240f3879b7f984a6ab87b97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ueberdosis/tiptap-php/zipball/6ea321fa665080e1a72ac5f52dfab19f6a292e2d", - "reference": "6ea321fa665080e1a72ac5f52dfab19f6a292e2d", + "url": "https://api.github.com/repos/ueberdosis/tiptap-php/zipball/74bfb7be1c8c6102b240f3879b7f984a6ab87b97", + "reference": "74bfb7be1c8c6102b240f3879b7f984a6ab87b97", "shasum": "" }, "require": { @@ -11885,7 +11826,7 @@ ], "support": { "issues": "https://github.com/ueberdosis/tiptap-php/issues", - "source": "https://github.com/ueberdosis/tiptap-php/tree/2.1.0" + "source": "https://github.com/ueberdosis/tiptap-php/tree/2.1.1" }, "funding": [ { @@ -11901,7 +11842,7 @@ "type": "open_collective" } ], - "time": "2026-01-10T16:40:02+00:00" + "time": "2026-06-12T18:19:46+00:00" }, { "name": "vlucas/phpdotenv", @@ -12220,16 +12161,16 @@ }, { "name": "webmozart/assert", - "version": "2.4.0", + "version": "2.4.1", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "9007ea6f45ecf352a9422b36644e4bfc039b9155" + "reference": "2ccb7c2e821038c03a3e6e1700c570c158c55f70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/9007ea6f45ecf352a9422b36644e4bfc039b9155", - "reference": "9007ea6f45ecf352a9422b36644e4bfc039b9155", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/2ccb7c2e821038c03a3e6e1700c570c158c55f70", + "reference": "2ccb7c2e821038c03a3e6e1700c570c158c55f70", "shasum": "" }, "require": { @@ -12280,9 +12221,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/2.4.0" + "source": "https://github.com/webmozarts/assert/tree/2.4.1" }, - "time": "2026-05-20T13:07:01+00:00" + "time": "2026-06-15T15:31:57+00:00" } ], "packages-dev": [ @@ -12381,28 +12322,29 @@ }, { "name": "composer/pcre", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" + "reference": "d5a341b3fb61f3001970940afb1d332968a183ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", - "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "url": "https://api.github.com/repos/composer/pcre/zipball/d5a341b3fb61f3001970940afb1d332968a183ed", + "reference": "d5a341b3fb61f3001970940afb1d332968a183ed", "shasum": "" }, "require": { "php": "^7.4 || ^8.0" }, "conflict": { - "phpstan/phpstan": "<1.11.10" + "phpstan/phpstan": "<2.2.2" }, "require-dev": { - "phpstan/phpstan": "^1.12 || ^2", - "phpstan/phpstan-strict-rules": "^1 || ^2", - "phpunit/phpunit": "^8 || ^9" + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^9" }, "type": "library", "extra": { @@ -12440,7 +12382,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.3.2" + "source": "https://github.com/composer/pcre/tree/3.4.0" }, "funding": [ { @@ -12450,13 +12392,9 @@ { "url": "https://github.com/composer", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2024-11-12T16:29:46+00:00" + "time": "2026-06-07T11:47:49+00:00" }, { "name": "composer/xdebug-handler", @@ -13116,16 +13054,16 @@ }, { "name": "laravel/mcp", - "version": "v0.8.0", + "version": "v0.8.1", "source": { "type": "git", "url": "https://github.com/laravel/mcp.git", - "reference": "18221a07093d84153883bc956e5e213999549a4b" + "reference": "fdc39c9e21048801508765cb4d72bd9e8501b51f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/mcp/zipball/18221a07093d84153883bc956e5e213999549a4b", - "reference": "18221a07093d84153883bc956e5e213999549a4b", + "url": "https://api.github.com/repos/laravel/mcp/zipball/fdc39c9e21048801508765cb4d72bd9e8501b51f", + "reference": "fdc39c9e21048801508765cb4d72bd9e8501b51f", "shasum": "" }, "require": { @@ -13186,20 +13124,20 @@ "issues": "https://github.com/laravel/mcp/issues", "source": "https://github.com/laravel/mcp" }, - "time": "2026-06-08T13:48:51+00:00" + "time": "2026-06-11T13:59:49+00:00" }, { "name": "laravel/pint", - "version": "v1.29.1", + "version": "v1.29.3", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "0770e9b7fafd50d4586881d456d6eb41c9247a80" + "reference": "da1d1111a6aa2e082d2a388b194afe1ba0a05d14" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/0770e9b7fafd50d4586881d456d6eb41c9247a80", - "reference": "0770e9b7fafd50d4586881d456d6eb41c9247a80", + "url": "https://api.github.com/repos/laravel/pint/zipball/da1d1111a6aa2e082d2a388b194afe1ba0a05d14", + "reference": "da1d1111a6aa2e082d2a388b194afe1ba0a05d14", "shasum": "" }, "require": { @@ -13210,14 +13148,14 @@ "php": "^8.2.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.95.1", - "illuminate/view": "^12.56.0", - "larastan/larastan": "^3.9.6", + "friendsofphp/php-cs-fixer": "^3.95.8", + "illuminate/view": "^12.62.0", + "larastan/larastan": "^3.10.0", "laravel-zero/framework": "^12.1.0", + "laravel/agent-detector": "^2.0.2", "mockery/mockery": "^1.6.12", "nunomaduro/termwind": "^2.4.0", - "pestphp/pest": "^3.8.6", - "shipfastlabs/agent-detector": "^1.1.3" + "pestphp/pest": "^3.8.6" }, "bin": [ "builds/pint" @@ -13254,7 +13192,7 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2026-04-20T15:26:14+00:00" + "time": "2026-06-16T15:34:04+00:00" }, { "name": "laravel/roster", @@ -13621,16 +13559,16 @@ }, { "name": "pestphp/pest", - "version": "v4.7.2", + "version": "v4.7.3", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "40b88b62ef8a7c6fcae5fc28f1fa747f601c131b" + "reference": "87882a8561bf3ddf230b9a6b764f367f687d5b2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/40b88b62ef8a7c6fcae5fc28f1fa747f601c131b", - "reference": "40b88b62ef8a7c6fcae5fc28f1fa747f601c131b", + "url": "https://api.github.com/repos/pestphp/pest/zipball/87882a8561bf3ddf230b9a6b764f367f687d5b2f", + "reference": "87882a8561bf3ddf230b9a6b764f367f687d5b2f", "shasum": "" }, "require": { @@ -13643,12 +13581,12 @@ "pestphp/pest-plugin-mutate": "^4.0.1", "pestphp/pest-plugin-profanity": "^4.2.1", "php": "^8.3.0", - "phpunit/phpunit": "^12.5.28", + "phpunit/phpunit": "^12.5.29", "symfony/process": "^7.4.13|^8.1.0" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.5.28", + "phpunit/phpunit": ">12.5.29", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, @@ -13724,7 +13662,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v4.7.2" + "source": "https://github.com/pestphp/pest/tree/v4.7.3" }, "funding": [ { @@ -13736,7 +13674,7 @@ "type": "github" } ], - "time": "2026-06-01T06:08:59+00:00" + "time": "2026-06-12T05:57:27+00:00" }, { "name": "pestphp/pest-plugin", @@ -14707,16 +14645,16 @@ }, { "name": "phpunit/phpunit", - "version": "12.5.28", + "version": "12.5.29", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "5895d05f5bf421ed230fbd76e1277e4b8955def4" + "reference": "9aa66a47db3ea70f1a468e66dd969f67e594945a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5895d05f5bf421ed230fbd76e1277e4b8955def4", - "reference": "5895d05f5bf421ed230fbd76e1277e4b8955def4", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9aa66a47db3ea70f1a468e66dd969f67e594945a", + "reference": "9aa66a47db3ea70f1a468e66dd969f67e594945a", "shasum": "" }, "require": { @@ -14730,7 +14668,7 @@ "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.3", - "phpunit/php-code-coverage": "^12.5.6", + "phpunit/php-code-coverage": "^12.5.7", "phpunit/php-file-iterator": "^6.0.1", "phpunit/php-invoker": "^6.0.0", "phpunit/php-text-template": "^5.0.0", @@ -14740,7 +14678,7 @@ "sebastian/diff": "^7.0.0", "sebastian/environment": "^8.1.2", "sebastian/exporter": "^7.0.3", - "sebastian/global-state": "^8.0.2", + "sebastian/global-state": "^8.0.3", "sebastian/object-enumerator": "^7.0.0", "sebastian/recursion-context": "^7.0.1", "sebastian/type": "^6.0.4", @@ -14785,7 +14723,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.28" + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.29" }, "funding": [ { @@ -14793,25 +14731,25 @@ "type": "other" } ], - "time": "2026-05-27T14:01:10+00:00" + "time": "2026-06-04T06:14:42+00:00" }, { "name": "rector/rector", - "version": "2.4.5", + "version": "2.4.6", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "cbd86024be5014d3c14d9f0b3f7aae8ecbffd62c" + "reference": "9b9e5c76618e4d359f65b54ca2eabcad3d1761ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/cbd86024be5014d3c14d9f0b3f7aae8ecbffd62c", - "reference": "cbd86024be5014d3c14d9f0b3f7aae8ecbffd62c", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/9b9e5c76618e4d359f65b54ca2eabcad3d1761ee", + "reference": "9b9e5c76618e4d359f65b54ca2eabcad3d1761ee", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.56" + "phpstan/phpstan": "^2.2.2" }, "conflict": { "rector/rector-doctrine": "*", @@ -14845,7 +14783,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.4.5" + "source": "https://github.com/rectorphp/rector/tree/2.4.6" }, "funding": [ { @@ -14853,7 +14791,7 @@ "type": "github" } ], - "time": "2026-05-26T21:03:22+00:00" + "time": "2026-06-17T11:56:28+00:00" }, { "name": "sebastian/cli-parser", diff --git a/config/paypal.php b/config/paypal.php deleted file mode 100755 index 3852d5b..0000000 --- a/config/paypal.php +++ /dev/null @@ -1,48 +0,0 @@ - [ - 'client_id' => env('PAYPAL_SANDBOX_CLIENT_ID', ''), - 'client_secret' => env('PAYPAL_SANDBOX_CLIENT_SECRET', ''), - 'app_id' => env('PAYPAL_SANDBOX_APP_ID', 'APP-80W284485P519543T'), - 'settings' => [ - 'mode' => 'sandbox', - 'http.ConnectionTimeOut' => 30, - 'log.LogEnabled' => false, - 'log.FileName' => storage_path('logs/paypal.log'), - 'log.LogLevel' => 'ERROR', - 'validation.level' => 'log', - 'cache.enabled' => true, - 'cache.FileName' => storage_path('framework/cache/paypal.auth.cache'), - ], - ], - - 'live' => [ - 'client_id' => env('PAYPAL_LIVE_CLIENT_ID', ''), - 'client_secret' => env('PAYPAL_LIVE_CLIENT_SECRET', ''), - 'app_id' => env('PAYPAL_LIVE_APP_ID', ''), - 'settings' => [ - 'mode' => 'live', - 'http.ConnectionTimeOut' => 30, - 'log.LogEnabled' => false, - 'log.FileName' => storage_path('logs/paypal.log'), - 'log.LogLevel' => 'ERROR', - 'validation.level' => 'log', - 'cache.enabled' => true, - 'cache.FileName' => storage_path('framework/cache/paypal.auth.cache'), - ], - ], - - 'settings' => [ - 'mode' => env('PAYPAL_MODE', 'sandbox'), - 'http.ConnectionTimeOut' => 30, - 'log.LogEnabled' => false, - 'log.FileName' => storage_path('logs/paypal.log'), - 'log.LogLevel' => 'ERROR', - 'validation.level' => 'log', - 'cache.enabled' => true, - 'cache.FileName' => storage_path('framework/cache/paypal.auth.cache'), - ], -]; diff --git a/package.json b/package.json index 88e28ef..4270baf 100755 --- a/package.json +++ b/package.json @@ -29,36 +29,36 @@ "@popperjs/core": "2.11.8", "@prettier/plugin-php": "0.25.0", "@shufo/prettier-plugin-blade": "1.16.2", - "@swc/core": "^1.15.40", + "@swc/core": "^1.15.41", "@tailwindcss/forms": "0.5.11", - "@tailwindcss/postcss": "4.3.0", - "@tailwindcss/typography": "0.5.19", + "@tailwindcss/postcss": "4.3.1", + "@tailwindcss/typography": "0.5.20", "alpinejs": "3.15.12", "autoprefixer": "10.5.0", - "axios": "^1.17.0", - "esbuild": "^0.28.0", - "eslint": "^10.4.1", + "axios": "^1.18.0", + "esbuild": "^0.28.1", + "eslint": "^10.5.0", "eslint-plugin-vue": "10.9.2", "laravel-vite-plugin": "^3.1.0", "lodash": "^4.18.1", "postcss": "8.5.15", "postcss-import": "16.1.1", - "prettier": "3.8.3", + "prettier": "3.8.4", "sass-loader": "17.0.0", "stylelint": "^17.13.0", "stylelint-config-standard": "^40.0.0", - "tailwindcss": "4.3.0", + "tailwindcss": "4.3.1", "turbolinks": "5.2.0", "vite": "^8.0.16" }, "dependencies": { - "@inertiajs/react": "^3.3.1", + "@inertiajs/react": "^3.4.0", "@vitejs/plugin-react": "^6.0.2", "flowbite": "4.0.2", "json5": "^2.2.3", "react": "^19.2.7", "react-dom": "^19.2.7", - "sass": "1.100.0", + "sass": "1.101.0", "swiper": "^12.2.0" } } diff --git a/public/build/manifest.json b/public/build/manifest.json index f7d8067..1e15ea2 100644 --- a/public/build/manifest.json +++ b/public/build/manifest.json @@ -111,7 +111,7 @@ "src": "public/assets/images/profile/profile-bg.png" }, "resources/css/global.css": { - "file": "assets/global-DmKtm1TC.css", + "file": "assets/global-D3hwr7UE.css", "name": "global", "names": [ "global.css" @@ -166,7 +166,7 @@ ] }, "resources/themes/atom/css/app.css": { - "file": "assets/app-DtTGSxkD.css", + "file": "assets/app-BXjZsuSm.css", "name": "app", "names": [ "app.css" diff --git a/resources/themes/atom/views/shop/shop.blade.php b/resources/themes/atom/views/shop/shop.blade.php index db83b49..e9af0e0 100755 --- a/resources/themes/atom/views/shop/shop.blade.php +++ b/resources/themes/atom/views/shop/shop.blade.php @@ -100,7 +100,7 @@ {{ auth()->user() ? __('Current balance: $:balance', ['balance' => auth()->user()->website_balance]) : __('Current balance: Login required') }} - @if(config('paypal.live.client_id') && config('paypal.live.client_secret') && config('paypal.live.client_id') !== 'test_client_id') + @if(config('habbo.paypal.live.client_id') && config('habbo.paypal.live.client_secret') && config('habbo.paypal.live.client_id') !== 'test_client_id')