diff --git a/.editorconfig b/.editorconfig
index 6537ca467..78326873f 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -3,9 +3,9 @@ root = true
[*]
charset = utf-8
end_of_line = lf
-insert_final_newline = true
+indent_size = 2
indent_style = space
-indent_size = 4
+insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
@@ -13,3 +13,24 @@ trim_trailing_whitespace = false
[*.{yml,yaml}]
indent_size = 2
+
+[docker-compose.yml]
+indent_size = 2
+
+[*.php]
+indent_size = 4
+
+[*.blade.php]
+indent_size = 2
+
+[*.js]
+indent_size = 4
+
+[*.jsx]
+indent_size = 2
+
+[*.tsx]
+indent_size = 2
+
+[*.json]
+indent_size = 4
diff --git a/.env.example b/.env.example
index ee25724ca..bf995c5bc 100644
--- a/.env.example
+++ b/.env.example
@@ -1,28 +1,54 @@
+# ⚠️ CAUTION: Advanced Configuration ⚠️
+#
+# This file (.env) stores sensitive environment variables.
+# Modifying these values can significantly impact your application's behavior.
+#
+# Proceed with caution:
+# - Only edit if you have a clear understanding of the specific variable and its purpose.
+# - Use the control panel or installer for most configuration changes whenever possible.
+# - Keep a backup of this file before making any modifications.
+#
+# Need Help? Consult the documentation or contact support before making changes.
+
### --- App Settings --- ###
-APP_NAME=Ctrlpanel.gg
+APP_NAME=CtrlPanel.gg
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=http://localhost
-# List with timezones https://www.php.net/manual/en/timezones.php
APP_TIMEZONE=UTC
### --- App Settings End --- ###
-### --- DB Settings (required) --- ###
+### --- Database Settings (required) --- ###
+# SQL
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=dashboard
DB_USERNAME=dashboarduser
DB_PASSWORD=
-### --- DB Settings End --- ###
+### --- Discord Settings (required for Discord OAuth) --- ###
+DISCORD_CLIENT_ID=
+DISCORD_CLIENT_SECRET=
+
+### --- Discord Settings End --- ###
-# Google Recaptcha API Credentials - https://www.google.com/recaptcha/admin - reCaptcha V2 (not v3)
+### --- Google Recaptcha Settings --- ###
RECAPTCHA_SITE_KEY=6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
RECAPTCHA_SECRET_KEY=6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
+### --- Google Recaptcha Settings End --- ###
+
+# No-SQL
+MEMCACHED_HOST=127.0.0.1
+
+REDIS_HOST=127.0.0.1
+REDIS_PASSWORD=null
+REDIS_PORT=6379
+### --- Database Settings End --- ###
-# Mail Server Settings - (HOST -> SMTP Server)
+
+### --- Mail Server Settings --- ###
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
@@ -31,25 +57,22 @@ MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
+### --- Mail Server Settings End --- ###
-
-# Laravel Logging Settings - https://laravel.com/docs/5.7/logging - Not needed to be changed
+### --- Logging Settings --- ###
LOG_CHANNEL=stack
LOG_LEVEL=debug
+### --- Logging Settings End --- ###
-# Do not change anything below this line
-BROADCAST_DRIVER=log
+### --- Cache and Queue Settings --- ###
CACHE_DRIVER=file
QUEUE_CONNECTION=database
SESSION_DRIVER=file
SESSION_LIFETIME=120
+SETTINGS_CACHE_ENABLED=true
+### --- Cache and Queue Settings End --- ###
-MEMCACHED_HOST=127.0.0.1
-
-REDIS_HOST=127.0.0.1
-REDIS_PASSWORD=null
-REDIS_PORT=6379
-
+### --- External Services Credentials --- ###
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
@@ -62,3 +85,7 @@ PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
+
+RECAPTCHA_SITE_KEY=6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
+RECAPTCHA_SECRET_KEY=6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
+### --- External Services Credentials End --- ###
diff --git a/.gitattributes b/.gitattributes
index 967315dd3..2f74b7dd8 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,5 +1,10 @@
+# Automatically detect text files
* text=auto
+
+# Vendored files for specific languages
*.css linguist-vendored
*.scss linguist-vendored
*.js linguist-vendored
+
+# Ignore CHANGELOG.md when exporting
CHANGELOG.md export-ignore
diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
new file mode 100644
index 000000000..6b807f423
--- /dev/null
+++ b/.github/CODE_OF_CONDUCT.md
@@ -0,0 +1,22 @@
+## Code of Conduct
+
+### 🤝 Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
+
+### 🌟 Our Standards
+Examples of behavior that contributes to creating a positive environment include:
+
+- Using welcoming and inclusive language
+- Being respectful of differing viewpoints and experiences
+- Gracefully accepting constructive criticism
+- Focusing on what is best for the community
+- Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+- The use of sexualized language or imagery and unwelcome sexual attention or advances
+- Trolling, insulting/derogatory comments, and personal or political attacks
+- Public or private harassment
+- Publishing others' private information, such as a physical or electronic address, without explicit permission
+- Other conduct which could reasonably be considered inappropriate in a professional setting
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
new file mode 100644
index 000000000..93b4ee75c
--- /dev/null
+++ b/.github/CONTRIBUTING.md
@@ -0,0 +1,37 @@
+# Contributing Guidelines
+
+Thank you for considering contributing to this repository! Before making a contribution, please take a moment to review the following guidelines.
+
+## 🕵️♂️ Finding Tasks
+
+Check the open issues to see if there's something you can contribute to. If you have an idea or encounter a bug that's not already listed, feel free to create a new issue and wait for feedback from the development team.
+
+## 🤝 Code of Conduct & Contributor License
+
+Please adhere to our [Code of Conduct](https://github.com/Ctrlpanel-gg/panel/blob/main/.github/CODE_OF_CONDUCT.md) and our [Contributor License](https://github.com/Ctrlpanel-gg/panel/blob/main/CONTRIBUTOR_LICENSE_AGREEMENT.md) in all your interactions with the project.
+
+## 🌍 Localization
+
+Please read our [Localization Guide](https://github.com/Ctrlpanel-gg/panel/blob/main/lang/README.md) on how to manage and add localization to the project.
+
+## 🚀 Pull Request Process
+
+1. Provide a clear and descriptive title for your pull request (PR) summarizing the changes in this format : 'commit-norms-action: what-you-are-doing'.
+2. If your PR is not yet finished, correctly mark it as a draft and mention any errors it's correcting.
+3. The development team will review your code and offer feedback or approve/merge it as necessary.
+4. Ensure that your PR adheres to our Code of Conduct and coding style guidelines.
+5. Test your changes thoroughly to ensure they function as expected.
+6. Include relevant documentation updates if applicable.
+7. Address any review comments promptly to expedite the review process.
+
+### 💻 Coding Style
+
+We adhere to the PSR12 code standard for PHP.
+
+- Follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) commit norms.
+- Name your PR branch as [commit-norms-action]/what-you-are-doing.
+- Make clear commits, one per action, and include comments.
+
+⚠️ **Important Note:** The owner of the project has the final decision, and the development team of CtrlPanel reserves the right to close incorrect PRs. PRs that remain inactive or invalid for an extended period may also be subject to closure.
+
+Thank you for your contributions! 🎉
diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
index 077ef34d4..53671ccd3 100644
--- a/.github/ISSUE_TEMPLATE/bug.yml
+++ b/.github/ISSUE_TEMPLATE/bug.yml
@@ -1,6 +1,5 @@
name: "\U0001F41B Bug report"
description: Create a report to help us improve
-title: "[Bug]: "
labels: ["bug"]
body:
- type: textarea
@@ -33,8 +32,8 @@ body:
- type: textarea
id: ctrlpanel-logs
attributes:
- label: Ctrlpanel Logs
- description: Please copy and paste your laravel-log output. You may also provide a link to it using the following command `tail -n 100 /var/www/controlpanel/storage/logs/laravel.log | nc pteropaste.com 99`
+ label: CtrlPanel Logs
+ description: Please copy and paste your laravel-log output. You may also provide a link to it using the following command `tail -n 100 /var/www/ctrlpanel/storage/logs/laravel.log | nc pteropaste.com 99`
render: Shell
- type: textarea
id: additional-info
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index 7b1652eaa..34e1506be 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -5,4 +5,4 @@ contact_links:
about: Please visit our Discord for help with your installation.
- name: ❓ General Question
url: https://discord.gg/4Y6HjD2uyU
- about: Please visit our Discord for general questions about the ControlPanel.
+ about: Please visit our Discord for general questions about the CtrlPanel.
diff --git a/.github/ISSUE_TEMPLATE/feature.yml b/.github/ISSUE_TEMPLATE/feature.yml
index 6d628f97c..e61d14909 100644
--- a/.github/ISSUE_TEMPLATE/feature.yml
+++ b/.github/ISSUE_TEMPLATE/feature.yml
@@ -1,6 +1,5 @@
name: "\U0001F680 Feature request"
description: Suggest a feature or idea for this project
-title: "[Feature] "
labels: ["feature"]
body:
- type: textarea
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 000000000..7da279d75
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,37 @@
+✨ Thank you for your contribution to our project! Before you submit your pull request, please take a moment to review and complete the following
+
+⚠️ Please modify this template below and if not already done, read our contributing rules in .github folder, Thanks!
+
+Ensure that your pull request meets the following criteria:
+
+- The code follows the style guidelines of this project
+- You have performed a self-review of your own code and tested it
+- You have commented your code, particularly in hard-to-understand areas
+- Your changes generate no new warnings
+
+Delete the above text and the following sections before submitting your pull request.
+
+---
+
+💡 **Description**
+
+Briefly describe the purpose of your pull request, including any relevant issue numbers it addresses.
+
+---
+
+🛠️ **Type of Change**
+
+Please select the appropriate type of change:
+
+- Bug fix (non-breaking change which fixes an issue)
+- User interface (UI) improvement
+- New feature (non-breaking change which adds functionality)
+- Breaking change (a fix or feature that would cause existing functionality to not work as expected)
+- Other
+- This change requires a documentation update
+
+---
+
+🖼️ **Screenshots (if applicable)**
+
+If your pull request includes any visual changes, please provide screenshots here, do not use any external link.
diff --git a/.github/SECURITY.md b/.github/SECURITY.md
new file mode 100644
index 000000000..ef6b07aa9
--- /dev/null
+++ b/.github/SECURITY.md
@@ -0,0 +1,17 @@
+# Security Policy
+
+## Reporting a Vulnerability
+
+🛡️ If you discover a security vulnerability, please report it to us via GitHub Advisories.
+
+⚠️ Please refrain from using the public issue tracker or discussing the vulnerability in public channels, as it may exacerbate the issue.
+
+## Acceptance of Bug Bounty Platforms
+
+At this time, we only accept vulnerability reports through GitHub Advisories. We kindly ask that you do not submit reports via other third-party bug bounty platforms, as they will be disregarded.
+
+## Supported Versions
+- Latests
+
+### CtrlPanel Versions
+We strongly recommend using or upgrading to the latest version of CtrlPanel to ensure you have access to the latest security fixes and enhancements.
diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml
new file mode 100644
index 000000000..54016c792
--- /dev/null
+++ b/.github/workflows/docker-build.yml
@@ -0,0 +1,43 @@
+name: Build and Push Docker Image
+
+on:
+ push:
+ tags:
+ - '*'
+
+jobs:
+ build-and-push-docker-image:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ packages: write
+
+ env:
+ REGISTRY: ghcr.io
+ IMAGE_NAME: ${{ github.repository }}
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Log in to the Container registry
+ uses: docker/login-action@v3
+ with:
+ registry: ${{ env.REGISTRY }}
+ username: ${{ github.actor }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Extract metadata (tags, labels) for Docker
+ id: meta
+ uses: docker/metadata-action@v5
+ with:
+ images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
+
+ - name: Build and push Docker image
+ uses: docker/build-push-action@v5
+ with:
+ context: .
+ push: true
+ file: docker/standalone/Dockerfile
+ tags: ${{ steps.meta.outputs.tags }}
+ labels: ${{ steps.meta.outputs.labels }}
diff --git a/.gitignore b/.gitignore
index 58212a1db..e27770f13 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,28 +1,38 @@
+# Ignore dependencies and cache
+/.idea
/node_modules
+/vendor
+/storage/*.key
+
+# Ignore public assets
/public/hot
/public/storage
-/storage/*.key
-/vendor
-/storage/credit_deduction_log
-storage/debugbar
+/storage/app/public/logo.png
+
+# Ignore environment files and configuration
.env
.env.testing
.env.backup
-.idea
+.env.dev
+
+# Ignore testing and debug logs
.phpunit.result.cache
-docker-compose.override.yml
-Homestead.json
-Homestead.yaml
npm-debug.log
yarn-error.log
yarn.lock
+
+# Ignore Docker and Homestead configuration
+docker-compose.override.yml
+Homestead.json
+Homestead.yaml
+
+# Ignore gitignore itself
.gitignore
-.env.dev
-.env.testing
-storage/invoices.zip
-storage/app/public/logo.png
-*vscode
- - Kopie.env
+
+# Ignore installation logs and locks
public/install/logs.txt
install.lock
public/install/logs/installer.log
+
+/.idea
+cpggdatabase.sql
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index 74ddb1f9f..000000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# Contributing
-
-When contributing to this repository, please go through the open issues to see if you can contribute to something. If you want to contribute something that is not in the issues you can make an issue and wait for response from the dev team.
-
-Please note we have a code of conduct, please follow it in all your interactions with the project.
-
-If you added any Strings which are displayed at the frontend please localize them (e.g. "New String" -> {{ __('New String') }}) and run the localization string generation:
-
-```cmd
-php artisan translatable:export en
-```
-
-## Pull request process
-
-1. Give your PR a good descriptive title, so we can view immediately what the PR is about.
-2. The dev team will look at your code and approve / merge when possible.
-3. Make sure your PR follows our code of conduct and coding style.
-
-## Code of Conduct
-
-### Our Pledge
-In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
-
-### Coding Style
-
-We are following the PSR12 code standard for PHP.
-
-### Our Standards
-Examples of behavior that contributes to creating a positive environment include:
-
-- Using welcoming and inclusive language
-- Being respectful of differing viewpoints and experiences
-- Gracefully accepting constructive criticism
-- Focusing on what is best for the community
-- Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-- The use of sexualized language or imagery and unwelcome sexual attention or advances
-- Trolling, insulting/derogatory comments, and personal or political attacks
-- Public or private harassment
-- Publishing others' private information, such as a physical or electronic address, without explicit permission
-- Other conduct which could reasonably be considered inappropriate in a professional setting
diff --git a/CONTRIBUTOR_LICENSE_AGREEMENT.md b/CONTRIBUTOR_LICENSE_AGREEMENT.md
new file mode 100644
index 000000000..05df29748
--- /dev/null
+++ b/CONTRIBUTOR_LICENSE_AGREEMENT.md
@@ -0,0 +1,96 @@
+Thank you for your interest in CtrlPanel-gg ("CtrlPanel Developers"). To clarify the intellectual property license
+granted with Contributions from any person or entity, the CtrlPanel Developers
+must have on file a signed Contributor License Agreement ("CLA")
+from each Contributor, indicating agreement with the license
+terms below. This agreement is for your protection as a Contributor
+as well as the protection of the CtrlPanel Developers and its users. It does not
+change your rights to use your own Contributions for any other purpose.
+
+You accept and agree to the following terms and conditions for Your
+Contributions (present and future) that you submit to the CtrlPanel Developers. In
+return, the CtrlPanel Developers shall not use Your Contributions in a way that
+is contrary to the public benefit or inconsistent with its nonprofit
+status and bylaws in effect at the time of the Contribution. Except
+for the license granted herein to the CtrlPanel Developers and recipients of
+software distributed by the CtrlPanel Developers, You reserve all right, title,
+and interest in and to Your Contributions.
+1. Definitions.
+ "You" (or "Your") shall mean the copyright owner or legal entity
+ authorized by the copyright owner that is making this Agreement
+ with the CtrlPanel Developers. For legal entities, the entity making a
+ Contribution and all other entities that control, are controlled
+ by, or are under common control with that entity are considered to
+ be a single Contributor. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+ "Contribution" shall mean any original work of authorship,
+ including any modifications or additions to an existing work, that
+ is intentionally submitted by You to the CtrlPanel Developers for inclusion
+ in, or documentation of, any of the products owned or managed by
+ the CtrlPanel Developers (the "Work"). For the purposes of this definition,
+ "submitted" means any form of electronic, verbal, or written
+ communication sent to the CtrlPanel Developers or its representatives,
+ including but not limited to communication on electronic mailing
+ lists, source code control systems, and issue tracking systems that
+ are managed by, or on behalf of, the CtrlPanel Developers for the purpose of
+ discussing and improving the Work, but excluding communication that
+ is conspicuously marked or otherwise designated in writing by You
+ as "Not a Contribution."
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to the CtrlPanel Developers and to
+ recipients of software distributed by the CtrlPanel Developers a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare derivative works of,
+ publicly display, publicly perform, sublicense, and distribute Your
+ Contributions and such derivative works.
+3. Grant of Patent License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to the CtrlPanel Developers and to
+ recipients of software distributed by the CtrlPanel Developers a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have
+ made, use, offer to sell, sell, import, and otherwise transfer the
+ Work, where such license applies only to those patent claims
+ licensable by You that are necessarily infringed by Your
+ Contribution(s) alone or by combination of Your Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If any
+ entity institutes patent litigation against You or any other entity
+ (including a cross-claim or counterclaim in a lawsuit) alleging
+ that your Contribution, or the Work to which you have contributed,
+ constitutes direct or contributory patent infringement, then any
+ patent licenses granted to that entity under this Agreement for
+ that Contribution or Work shall terminate as of the date such
+ litigation is filed.
+4. You represent that you are legally entitled to grant the above
+ license. If your employer(s) has rights to intellectual property
+ that you create that includes your Contributions, you represent
+ that you have received permission to make Contributions on behalf
+ of that employer, that your employer has waived such rights for
+ your Contributions to the CtrlPanel Developers, or that your employer has
+ executed a separate Corporate CLA with the CtrlPanel Developers.
+5. You represent that each of Your Contributions is Your original
+ creation (see section 7 for submissions on behalf of others). You
+ represent that Your Contribution submissions include complete
+ details of any third-party license or other restriction (including,
+ but not limited to, related patents and trademarks) of which you
+ are personally aware and which are associated with any part of Your
+ Contributions.
+6. You are not expected to provide support for Your Contributions,
+ except to the extent You desire to provide support. You may provide
+ support for free, for a fee, or not at all. Unless required by
+ applicable law or agreed to in writing, You provide Your
+ Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied, including, without
+ limitation, any warranties or conditions of TITLE, NON-
+ INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
+7. Should You wish to submit work that is not Your original creation,
+ You may submit it to the CtrlPanel Developers separately from any
+ Contribution, identifying the complete details of its source and of
+ any license or other restriction (including, but not limited to,
+ related patents, trademarks, and license agreements) of which you
+ are personally aware, and conspicuously marking the work as
+ "Submitted on behalf of a third-party: [named here]".
+8. You agree to notify the CtrlPanel Developers of any facts or circumstances of
+ which you become aware that would make these representations
+ inaccurate in any respect.
diff --git a/LICENSE b/LICENSE
index 00e2a0b66..29ebfa545 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,21 +1,661 @@
-MIT License
-
-Copyright (c) 2021 CtrlPanel.gg
-
-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.
+ GNU AFFERO GENERAL PUBLIC LICENSE
+ Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. You received '.config('SETTINGS::REFERRAL::REWARD').' '.config('SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME').' because '.$this->ref_user->name.' registered with your Referral-Code! You received '. $this->reward . ' ' . $this->credits_display_name . ' because ' . $this->ref_user->name . ' registered with your Referral-Code! Thank you very much for supporting us!. '.config('app.name', 'Laravel').' Thank you for using our Software If you have any questions, make sure to join our Discord (you can change this message in the Settings ) This installer will lead you through the most crucial Steps of Ctrlpanel.gg`s
- setup HTTPS is required Write-permissions on .env-file php
- version: (minimum required ) mysql
- version: (minimum required ) Missing
- php-extentions: Git
- version: Tar
- version: Lets start with your Database{$coupon->code}
";
+ })
+ ->orderColumn('status', 'derived_status $1')
+ ->rawColumns(['actions', 'code', 'status'])
+ ->make();
+ }
+}
diff --git a/app/Http/Controllers/Admin/LegalController.php b/app/Http/Controllers/Admin/LegalController.php
index 0eafca573..2f101e356 100644
--- a/app/Http/Controllers/Admin/LegalController.php
+++ b/app/Http/Controllers/Admin/LegalController.php
@@ -10,6 +10,8 @@
class LegalController extends Controller
{
+ const READ_PERMISSION = "admin.legal.read";
+ const WRITE_PERMISSION = "admin.legal.write";
/**
* Display
*
@@ -17,6 +19,8 @@ class LegalController extends Controller
*/
public function index()
{
+ $this->checkAnyPermission([self::READ_PERMISSION,self::WRITE_PERMISSION]);
+
$tos = File::get(Theme::path($path = 'views', "default") . '/information/tos-content.blade.php');
$privacy = File::get(Theme::path($path = 'views', "default") . '/information/privacy-content.blade.php');
$imprint = File::get(Theme::path($path = 'views', "default") . '/information/imprint-content.blade.php');
@@ -29,6 +33,8 @@ public function index()
}
public function update(Request $request){
+ $this->checkPermission(self::WRITE_PERMISSION);
+
$tos = $request->tos;
$privacy = $request->privacy;
$imprint = $request->imprint;
diff --git a/app/Http/Controllers/Admin/OverViewController.php b/app/Http/Controllers/Admin/OverViewController.php
index 280b59d4c..6d9ebab80 100644
--- a/app/Http/Controllers/Admin/OverViewController.php
+++ b/app/Http/Controllers/Admin/OverViewController.php
@@ -2,12 +2,14 @@
namespace App\Http\Controllers\Admin;
-use App\Classes\Pterodactyl;
+use App\Classes\PterodactylClient;
+use App\Settings\PterodactylSettings;
+use App\Settings\GeneralSettings;
use App\Http\Controllers\Controller;
-use App\Models\Egg;
-use App\Models\Location;
-use App\Models\Nest;
-use App\Models\Node;
+use App\Models\Pterodactyl\Egg;
+use App\Models\Pterodactyl\Location;
+use App\Models\Pterodactyl\Nest;
+use App\Models\Pterodactyl\Node;
use App\Models\Payment;
use App\Models\Product;
use App\Models\Server;
@@ -17,15 +19,28 @@
class OverViewController extends Controller
{
+ const READ_PERMISSION = "admin.overview.read";
+ const SYNC_PERMISSION = "admin.overview.sync";
public const TTL = 86400;
- public function index()
+ private $pterodactyl;
+
+ public function __construct(PterodactylSettings $ptero_settings)
+ {
+ $this->pterodactyl = new PterodactylClient($ptero_settings);
+ }
+
+ public function index(GeneralSettings $general_settings)
{
+ $this->checkAnyPermission([self::READ_PERMISSION,self::SYNC_PERMISSION]);
+
//Get counters
$counters = collect();
//Set basic variables in the collection
- $counters->put('users', User::query()->count());
- $counters->put('credits', number_format(User::query()->where('role', '!=', 'admin')->sum('credits'), 2, '.', ''));
+ $counters->put('users', collect());
+ $counters['users']->active = User::where("suspended", 0)->count();
+ $counters['users']->total = User::query()->count();
+ $counters->put('credits', number_format(User::query()->whereHas("roles", function($q){ $q->where("id", "!=", "1"); })->sum('credits'), 2, '.', ''));
$counters->put('payments', Payment::query()->count());
$counters->put('eggs', Egg::query()->count());
$counters->put('nests', Nest::query()->count());
@@ -134,7 +149,7 @@ public function index()
//Get node information and prepare collection
$pteroNodeIds = [];
- foreach (Pterodactyl::getNodes() as $pteroNode) {
+ foreach ($this->pterodactyl->getNodes() as $pteroNode) {
array_push($pteroNodeIds, $pteroNode['attributes']['id']);
}
$nodes = collect();
@@ -145,7 +160,7 @@ public function index()
} //Check if node exists on pterodactyl too, if not, skip
$nodes->put($nodeId, collect());
$nodes[$nodeId]->name = $DBnode['name'];
- $pteroNode = Pterodactyl::getNode($nodeId);
+ $pteroNode = $this->pterodactyl->getNode($nodeId);
$nodes[$nodeId]->usagePercent = round(max($pteroNode['allocated_resources']['memory'] / ($pteroNode['memory'] * ($pteroNode['memory_overallocate'] + 100) / 100), $pteroNode['allocated_resources']['disk'] / ($pteroNode['disk'] * ($pteroNode['disk_overallocate'] + 100) / 100)) * 100, 2);
$counters['totalUsagePercent'] += $nodes[$nodeId]->usagePercent;
@@ -156,11 +171,12 @@ public function index()
}
$counters['totalUsagePercent'] = ($DBnodes->count()) ? round($counters['totalUsagePercent'] / $DBnodes->count(), 2) : 0;
- foreach (Pterodactyl::getServers() as $server) { //gets all servers from Pterodactyl and calculates total of credit usage for each node separately + total
+ foreach ($this->pterodactyl->getServers() as $server) { //gets all servers from Pterodactyl and calculates total of credit usage for each node separately + total
$nodeId = $server['attributes']['node'];
if ($CPServer = Server::query()->where('pterodactyl_id', $server['attributes']['id'])->first()) {
- $price = Product::query()->where('id', $CPServer->product_id)->first()->price;
+ $product = Product::query()->where('id', $CPServer->product_id)->first();
+ $price = $product->getMonthlyPrice();
if (! $CPServer->suspended) {
$counters['earnings']->active += $price;
$counters['servers']->active++;
@@ -207,6 +223,7 @@ public function index()
'deletedNodesPresent' => ($DBnodes->count() != count($pteroNodeIds)) ? true : false,
'perPageLimit' => ($counters['servers']->total != Server::query()->count()) ? true : false,
'tickets' => $tickets,
+ 'credits_display_name' => $general_settings->credits_display_name
]);
}
@@ -215,6 +232,8 @@ public function index()
*/
public function syncPterodactyl()
{
+ $this->checkPermission(self::SYNC_PERMISSION);
+
Node::syncNodes();
Egg::syncEggs();
diff --git a/app/Http/Controllers/Admin/PartnerController.php b/app/Http/Controllers/Admin/PartnerController.php
index c91f592de..3b641c5f2 100644
--- a/app/Http/Controllers/Admin/PartnerController.php
+++ b/app/Http/Controllers/Admin/PartnerController.php
@@ -5,13 +5,21 @@
use App\Http\Controllers\Controller;
use App\Models\PartnerDiscount;
use App\Models\User;
+use App\Settings\LocaleSettings;
+use App\Settings\ReferralSettings;
use Illuminate\Http\Request;
class PartnerController extends Controller
{
- public function index()
+ const READ_PERMISSION = "admin.partners.read";
+ const WRITE_PERMISSION = "admin.partners.write";
+ public function index(LocaleSettings $locale_settings)
{
- return view('admin.partners.index');
+ $this->checkAnyPermission([self::WRITE_PERMISSION,self::READ_PERMISSION]);
+
+ return view('admin.partners.index', [
+ 'locale_datatables' => $locale_settings->datatables
+ ]);
}
/**
@@ -21,6 +29,8 @@ public function index()
*/
public function create()
{
+ $this->checkPermission(self::WRITE_PERMISSION);
+
return view('admin.partners.create', [
'partners' => PartnerDiscount::get(),
'users' => User::orderBy('name')->get(),
@@ -58,6 +68,8 @@ public function store(Request $request)
*/
public function edit(PartnerDiscount $partner)
{
+ $this->checkPermission(self::WRITE_PERMISSION);
+
return view('admin.partners.edit', [
'partners' => PartnerDiscount::get(),
'partner' => $partner,
@@ -94,6 +106,8 @@ public function update(Request $request, PartnerDiscount $partner)
*/
public function destroy(PartnerDiscount $partner)
{
+ $this->checkPermission(self::WRITE_PERMISSION);
+
$partner->delete();
return redirect()->back()->with('success', __('partner has been removed!'));
@@ -108,29 +122,30 @@ public function dataTable()
return datatables($query)
->addColumn('actions', function (PartnerDiscount $partner) {
return '
-
+
';
})
->addColumn('user', function (PartnerDiscount $partner) {
- return ($user = User::where('id', $partner->user_id)->first()) ? ''.$user->name.'' : __('Unknown user');
+ return ($user = User::where('id', $partner->user_id)->first()) ? '' . $user->name . '' : __('Unknown user');
})
->editColumn('created_at', function (PartnerDiscount $partner) {
return $partner->created_at ? $partner->created_at->diffForHumans() : '';
})
->editColumn('partner_discount', function (PartnerDiscount $partner) {
- return $partner->partner_discount ? $partner->partner_discount.'%' : '0%';
+ return $partner->partner_discount ? $partner->partner_discount . '%' : '0%';
})
->editColumn('registered_user_discount', function (PartnerDiscount $partner) {
- return $partner->registered_user_discount ? $partner->registered_user_discount.'%' : '0%';
+ return $partner->registered_user_discount ? $partner->registered_user_discount . '%' : '0%';
})
- ->editColumn('referral_system_commission', function (PartnerDiscount $partner) {
- return $partner->referral_system_commission >= 0 ? $partner->referral_system_commission.'%' : __('Default').' ('.config('SETTINGS::REFERRAL:PERCENTAGE').'%)';
+ ->editColumn('referral_system_commission', function (PartnerDiscount $partner, ReferralSettings $referral_settings) {
+ return $partner->referral_system_commission >= 0 ? $partner->referral_system_commission . '%' : __('Default') . ' ('.$referral_settings->percentage . '%)';
})
+ ->orderColumn('user', 'user_id $1')
->rawColumns(['user', 'actions'])
->make();
}
diff --git a/app/Http/Controllers/Admin/PaymentController.php b/app/Http/Controllers/Admin/PaymentController.php
index 0cf2e3993..3d2da91e7 100644
--- a/app/Http/Controllers/Admin/PaymentController.php
+++ b/app/Http/Controllers/Admin/PaymentController.php
@@ -2,6 +2,8 @@
namespace App\Http\Controllers\Admin;
+use App\Enums\PaymentStatus;
+use App\Events\CouponUsedEvent;
use App\Events\PaymentEvent;
use App\Events\UserUpdateCreditsEvent;
use App\Http\Controllers\Controller;
@@ -9,6 +11,7 @@
use App\Models\Payment;
use App\Models\User;
use App\Models\ShopProduct;
+use App\Traits\Coupon as CouponTrait;
use Exception;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
@@ -18,17 +21,29 @@
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Helpers\ExtensionHelper;
-
+use App\Settings\CouponSettings;
+use App\Settings\GeneralSettings;
+use App\Settings\LocaleSettings;
+use Illuminate\Support\Facades\Log;
class PaymentController extends Controller
{
+ const BUY_PERMISSION = 'user.shop.buy';
+ const VIEW_PERMISSION = "admin.payments.read";
+
+ use CouponTrait;
+
/**
* @return Application|Factory|View
*/
- public function index()
+ public function index(LocaleSettings $locale_settings)
{
+ $this->checkPermission(self::VIEW_PERMISSION);
+
+
return view('admin.payments.index')->with([
'payments' => Payment::paginate(15),
+ 'locale_datatables' => $locale_settings->datatables
]);
}
@@ -37,8 +52,10 @@ public function index()
* @param ShopProduct $shopProduct
* @return Application|Factory|View
*/
- public function checkOut(ShopProduct $shopProduct)
+ public function checkOut(ShopProduct $shopProduct, GeneralSettings $general_settings, CouponSettings $coupon_settings)
{
+ $this->checkPermission(self::BUY_PERMISSION);
+
$discount = PartnerDiscount::getDiscount();
$price = $shopProduct->price - ($shopProduct->price * $discount / 100);
@@ -49,7 +66,10 @@ public function checkOut(ShopProduct $shopProduct)
// build a paymentgateways array that contains the routes for the payment gateways and the image path for the payment gateway which lays in public/images/Extensions/PaymentGateways with the extensionname in lowercase
foreach ($extensions as $extension) {
$extensionName = basename($extension);
- if (!ExtensionHelper::getExtensionConfig($extensionName, 'enabled')) continue; // skip if not enabled
+
+ $extensionSettings = ExtensionHelper::getExtensionSettings($extensionName);
+ if ($extensionSettings->enabled == false) continue;
+
$payment = new \stdClass();
$payment->name = ExtensionHelper::getExtensionConfig($extensionName, 'name');
@@ -58,11 +78,6 @@ public function checkOut(ShopProduct $shopProduct)
}
}
-
-
-
-
-
return view('store.checkout')->with([
'product' => $shopProduct,
'discountpercent' => $discount,
@@ -73,6 +88,8 @@ public function checkOut(ShopProduct $shopProduct)
'total' => $shopProduct->getTotalPrice(),
'paymentGateways' => $paymentGateways,
'productIsFree' => $price <= 0,
+ 'credits_display_name' => $general_settings->credits_display_name,
+ 'isCouponsEnabled' => $coupon_settings->enabled,
]);
}
@@ -92,7 +109,7 @@ public function handleFreeProduct(ShopProduct $shopProduct)
'payment_id' => uniqid(),
'payment_method' => 'free',
'type' => $shopProduct->type,
- 'status' => 'paid',
+ 'status' => PaymentStatus::PAID,
'amount' => $shopProduct->quantity,
'price' => $shopProduct->price - ($shopProduct->price * PartnerDiscount::getDiscount() / 100),
'tax_value' => $shopProduct->getTaxValue(),
@@ -113,16 +130,68 @@ public function handleFreeProduct(ShopProduct $shopProduct)
public function pay(Request $request)
{
- $product = ShopProduct::find($request->product_id);
- $paymentGateway = $request->payment_method;
+ try {
+ $user = Auth::user();
+ $user = User::findOrFail($user->id);
+ $productId = $request->product_id;
+ $shopProduct = ShopProduct::findOrFail($productId);
+ $discount = PartnerDiscount::getDiscount();
+
+
+ $paymentGateway = $request->payment_method;
+ $couponCode = $request->coupon_code;
+
+ $subtotal = $shopProduct->getTotalPrice();
+
+ // Apply Coupon
+ if ($couponCode) {
+ if ($this->isCouponValid($couponCode, $user, $shopProduct->id)) {
+ $subtotal = $this->applyCoupon($couponCode, $subtotal);
+ event(new CouponUsedEvent($couponCode));
- // on free products, we don't need to use a payment gateway
- $realPrice = $product->price - ($product->price * PartnerDiscount::getDiscount() / 100);
- if ($realPrice <= 0) {
- return $this->handleFreeProduct($product);
+ }
+ }
+
+ // Apply Partner Discount
+ $subtotal = $subtotal - ($subtotal * $discount / 100);
+ if ($subtotal <= 0) {
+ if ($couponCode) {
+ event(new CouponUsedEvent($couponCode));
+
+ }
+
+ return $this->handleFreeProduct($shopProduct);
+ }
+ // Format the total price to a readable string
+ $totalPriceString = number_format($subtotal, 2, '.', '');
+ //reset the price after coupon use
+ $shopProduct->price = $totalPriceString;
+
+ // create a new payment
+ $payment = Payment::create([
+ 'user_id' => $user->id,
+ 'payment_id' => null,
+ 'payment_method' => $paymentGateway,
+ 'type' => $shopProduct->type,
+ 'status' => 'open',
+ 'amount' => $shopProduct->quantity,
+ 'price' => $shopProduct->price,
+ 'tax_value' => $shopProduct->getTaxValue(),
+ 'tax_percent' => $shopProduct->getTaxPercent(),
+ 'total_price' => $totalPriceString,
+ 'currency_code' => $shopProduct->currency_code,
+ 'shop_item_product_id' => $shopProduct->id,
+ ]);
+
+ $paymentGatewayExtension = ExtensionHelper::getExtensionClass($paymentGateway);
+ $redirectUrl = $paymentGatewayExtension::getRedirectUrl($payment, $shopProduct, $totalPriceString);
+
+ } catch (Exception $e) {
+ Log::error($e->getMessage());
+ return redirect()->route('store.index')->with('error', __('Oops, something went wrong! Please try again later.'));
}
- return redirect()->route('payment.' . $paymentGateway . 'Pay', ['shopProduct' => $product->id]);
+ return redirect()->away($redirectUrl);
}
/**
diff --git a/app/Http/Controllers/Admin/ProductController.php b/app/Http/Controllers/Admin/ProductController.php
index 5e9157d9f..2778dd6f5 100644
--- a/app/Http/Controllers/Admin/ProductController.php
+++ b/app/Http/Controllers/Admin/ProductController.php
@@ -3,9 +3,12 @@
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
-use App\Models\Location;
-use App\Models\Nest;
+use App\Models\Pterodactyl\Location;
+use App\Models\Pterodactyl\Nest;
use App\Models\Product;
+use App\Settings\GeneralSettings;
+use App\Settings\LocaleSettings;
+use App\Settings\UserSettings;
use Exception;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
@@ -16,14 +19,24 @@
class ProductController extends Controller
{
+ const READ_PERMISSION = "admin.products.read";
+
+ const WRITE_PERMISSION = "admin.products.create";
+ const EDIT_PERMISSION = "admin.products.edit";
+ const DELETE_PERMISSION = "admin.products.delete";
/**
* Display a listing of the resource.
*
* @return Application|Factory|View
*/
- public function index()
+ public function index(LocaleSettings $locale_settings)
{
- return view('admin.products.index');
+ $allConstants = (new \ReflectionClass(__CLASS__))->getConstants();
+ $this->checkAnyPermission($allConstants);
+
+ return view('admin.products.index', [
+ 'locale_datatables' => $locale_settings->datatables
+ ]);
}
/**
@@ -31,18 +44,23 @@ public function index()
*
* @return Application|Factory|View
*/
- public function create()
+ public function create(GeneralSettings $general_settings)
{
+ $this->checkPermission(self::WRITE_PERMISSION);
return view('admin.products.create', [
'locations' => Location::with('nodes')->get(),
'nests' => Nest::with('eggs')->get(),
+ 'credits_display_name' => $general_settings->credits_display_name
]);
}
- public function clone(Request $request, Product $product)
+ public function clone(Product $product, GeneralSettings $general_settings)
{
+ $this->checkPermission(self::WRITE_PERMISSION);
+
return view('admin.products.create', [
'product' => $product,
+ 'credits_display_name' => $general_settings->credits_display_name,
'locations' => Location::with('nodes')->get(),
'nests' => Nest::with('eggs')->get(),
]);
@@ -72,10 +90,14 @@ public function store(Request $request)
'nodes.*' => 'required|exists:nodes,id',
'eggs.*' => 'required|exists:eggs,id',
'disabled' => 'nullable',
+ 'oom_killer' => 'nullable',
+ 'billing_period' => 'required|in:hourly,daily,weekly,monthly,quarterly,half-annually,annually',
]);
+
$disabled = ! is_null($request->input('disabled'));
- $product = Product::create(array_merge($request->all(), ['disabled' => $disabled]));
+ $oomkiller = ! is_null($request->input('oom_killer'));
+ $product = Product::create(array_merge($request->all(), ['disabled' => $disabled, 'oom_killer' => $oomkiller]));
//link nodes and eggs
$product->eggs()->attach($request->input('eggs'));
@@ -90,11 +112,14 @@ public function store(Request $request)
* @param Product $product
* @return Application|Factory|View
*/
- public function show(Product $product)
+ public function show(Product $product, UserSettings $user_settings, GeneralSettings $general_settings)
{
+ $this->checkAnyPermission([self::READ_PERMISSION,self::WRITE_PERMISSION]);
+
return view('admin.products.show', [
'product' => $product,
- 'minimum_credits' => config('SETTINGS::USER:MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER'),
+ 'minimum_credits' => $user_settings->min_credits_to_make_server,
+ 'credits_display_name' => $general_settings->credits_display_name
]);
}
@@ -104,12 +129,15 @@ public function show(Product $product)
* @param Product $product
* @return Application|Factory|View
*/
- public function edit(Product $product)
+ public function edit(Product $product, GeneralSettings $general_settings)
{
+ $this->checkPermission(self::EDIT_PERMISSION);
+
return view('admin.products.edit', [
'product' => $product,
'locations' => Location::with('nodes')->get(),
'nests' => Nest::with('eggs')->get(),
+ 'credits_display_name' => $general_settings->credits_display_name
]);
}
@@ -138,10 +166,13 @@ public function update(Request $request, Product $product): RedirectResponse
'nodes.*' => 'required|exists:nodes,id',
'eggs.*' => 'required|exists:eggs,id',
'disabled' => 'nullable',
+ 'oom_killer' => 'nullable',
+ 'billing_period' => 'required|in:hourly,daily,weekly,monthly,quarterly,half-annually,annually',
]);
$disabled = ! is_null($request->input('disabled'));
- $product->update(array_merge($request->all(), ['disabled' => $disabled]));
+ $oomkiller = ! is_null($request->input('oom_killer'));
+ $product->update(array_merge($request->all(), ['disabled' => $disabled, 'oom_killer' => $oomkiller]));
//link nodes and eggs
$product->eggs()->detach();
@@ -157,8 +188,10 @@ public function update(Request $request, Product $product): RedirectResponse
* @param Product $product
* @return RedirectResponse
*/
- public function disable(Request $request, Product $product)
+ public function disable(Product $product)
{
+ $this->checkPermission(self::WRITE_PERMISSION);
+
$product->update(['disabled' => ! $product->disabled]);
return redirect()->route('admin.products.index')->with('success', 'Product has been updated!');
@@ -172,6 +205,8 @@ public function disable(Request $request, Product $product)
*/
public function destroy(Product $product)
{
+ $this->checkPermission(self::DELETE_PERMISSION);
+
$servers = $product->servers()->count();
if ($servers > 0) {
return redirect()->back()->with('error', "Product cannot be removed while it's linked to {$servers} servers");
@@ -194,14 +229,14 @@ public function dataTable()
return datatables($query)
->addColumn('actions', function (Product $product) {
return '
-
-
-
+
+
+
';
})
@@ -215,22 +250,25 @@ public function dataTable()
->addColumn('eggs', function (Product $product) {
return $product->eggs()->count();
})
- ->addColumn('disabled', function (Product $product) {
+ ->editColumn('disabled', function (Product $product) {
$checked = $product->disabled == false ? 'checked' : '';
return '
-
+
';
})
- ->editColumn('minimum_credits', function (Product $product) {
- return $product->minimum_credits==-1 ? config('SETTINGS::USER:MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER') : $product->minimum_credits;
+ ->editColumn('minimum_credits', function (Product $product, UserSettings $user_settings) {
+ return $product->minimum_credits==-1 ? $user_settings->min_credits_to_make_server : $product->minimum_credits;
+ })
+ ->editColumn('oom_killer', function (Product $product) {
+ return $product->oom_killer ? __("enabled") : __("disabled");
})
->editColumn('created_at', function (Product $product) {
return $product->created_at ? $product->created_at->diffForHumans() : '';
diff --git a/app/Http/Controllers/Admin/RoleController.php b/app/Http/Controllers/Admin/RoleController.php
new file mode 100644
index 000000000..0d09c5d5f
--- /dev/null
+++ b/app/Http/Controllers/Admin/RoleController.php
@@ -0,0 +1,223 @@
+getConstants();
+ $this->checkAnyPermission($allConstants);
+
+ //datatables
+ if ($request->ajax()) {
+ return $this->dataTableQuery();
+ }
+
+ $html = $this->dataTable();
+ return view('admin.roles.index', compact('html'));
+ }
+
+ /**
+ * Show the form for creating a new resource.
+ *
+ * @return Application|Factory|View
+ */
+ public function create()
+ {
+ $this->checkPermission(self::CREATE_PERMISSION);
+
+ $permissions = Permission::all();
+
+ return view('admin.roles.edit', compact('permissions'));
+ }
+
+ /**
+ * Store a newly created resource in storage.
+ *
+ * @return RedirectResponse
+ */
+ public function store(Request $request): RedirectResponse
+ {
+ $this->checkPermission(self::CREATE_PERMISSION);
+
+ $role = Role::create([
+ 'name' => $request->name,
+ 'color' => $request->color,
+ 'power' => $request->power
+ ]);
+
+ if ($request->permissions) {
+ $collectedPermissions = collect($request->permissions)->map(fn($val)=>(int)$val);
+ $role->givePermissionTo($collectedPermissions);
+ }
+
+ return redirect()
+ ->route('admin.roles.index')
+ ->with('success', __('Role saved'));
+ }
+
+ /**
+ * Display the specified resource.
+ */
+ public function show()
+ {
+ abort(404);
+ }
+
+ /**
+ * Show the form for editing the specified resource.
+ *
+ * @param Role $role
+ * @return Application|Factory|View
+ */
+ public function edit(Role $role)
+ {
+ $this->checkPermission(self::EDIT_PERMISSION);
+
+ if(Auth::user()->roles[0]->power < $role->power){
+ return back()->with("error","You dont have enough Power to edit that Role");
+ }
+
+ $permissions = Permission::all();
+
+ return view('admin.roles.edit', compact('role', 'permissions'));
+ }
+
+ /**
+ * Update the specified resource in storage.
+ *
+ * @param Role $role
+ * @return RedirectResponse
+ */
+ public function update(Request $request, Role $role)
+ {
+ $this->checkPermission(self::EDIT_PERMISSION);
+
+ if(Auth::user()->roles[0]->power < $role->power){
+ return back()->with("error","You dont have enough Power to edit that Role");
+ }
+
+ if ($request->permissions) {
+ if($role->id != 1){ //disable admin permissions change
+ $collectedPermissions = collect($request->permissions)->map(fn($val)=>(int)$val);
+ $role->syncPermissions($collectedPermissions);
+ }
+ }
+
+ //if($role->id == 1 || $role->id == 3 || $role->id == 4){ //dont let the user change the names of these roles
+ // $role->update([
+ // 'color' => $request->color
+ // ]);
+ //}else{
+ $role->update([
+ 'name' => $request->name,
+ 'color' => $request->color,
+ 'power' => $request->power
+ ]);
+ //}
+
+ //if($role->id == 1){
+ // return redirect()->route('admin.roles.index')->with('success', __('Role updated. Name and Permissions of this Role cannot be changed'));
+ //}elseif($role->id == 4 || $role->id == 3){
+ // return redirect()->route('admin.roles.index')->with('success', __('Role updated. Name of this Role cannot be changed'));
+ // }else{
+ return redirect()
+ ->route('admin.roles.index')
+ ->with('success', __('Role saved'));
+ //}
+ }
+
+ /**
+ * Remove the specified resource from storage.
+ *
+ * @return RedirectResponse
+ */
+ public function destroy(Role $role)
+ {
+ $this->checkPermission(self::DELETE_PERMISSION);
+
+ if($role->id == 1 || $role->id == 3 || $role->id == 4){ //cannot delete the hard coded roles
+ return back()->with("error","You cannot delete that role");
+ }
+
+ $users = User::role($role)->get();
+
+ foreach($users as $user){
+ //$user->syncRoles(['Member']);
+ $user->syncRoles(4);
+ }
+
+ $role->delete();
+
+ return redirect()
+ ->route('admin.roles.index')
+ ->with('success', __('Role removed'));
+ }
+
+ /**
+ * @return mixed
+ * @throws Exception
+ */
+ public function dataTable()
+ {
+ $query = Role::query()->withCount(['users', 'permissions'])->get();
+
+ return datatables($query)
+ ->editColumn('id', function (Role $role) {
+ return $role->id;
+ })
+ ->addColumn('actions', function (Role $role) {
+ return '
+
+
+ ';
+ })
+
+ ->editColumn('name', function (Role $role) {
+ return "$role->name";
+ })
+ ->editColumn('users_count', function ($query) {
+ return $query->users_count;
+ })
+ ->editColumn('permissions_count', function ($query){
+ return $query->permissions_count;
+ })
+ ->editColumn('power', function (Role $role){
+ return $role->power;
+ })
+ ->rawColumns(['actions', 'name'])
+ ->make(true);
+ }
+}
diff --git a/app/Http/Controllers/Admin/ServerController.php b/app/Http/Controllers/Admin/ServerController.php
index c10634711..4d83d39c8 100644
--- a/app/Http/Controllers/Admin/ServerController.php
+++ b/app/Http/Controllers/Admin/ServerController.php
@@ -2,10 +2,13 @@
namespace App\Http\Controllers\Admin;
-use App\Classes\Pterodactyl;
use App\Http\Controllers\Controller;
use App\Models\Server;
use App\Models\User;
+use App\Settings\DiscordSettings;
+use App\Settings\LocaleSettings;
+use App\Settings\PterodactylSettings;
+use App\Classes\PterodactylClient;
use Exception;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
@@ -18,14 +21,33 @@
class ServerController extends Controller
{
+
+ const READ_PERMISSION = "admin.servers.read";
+ const WRITE_PERMISSION = "admin.servers.write";
+ const SUSPEND_PERMISSION = "admin.servers.suspend";
+ const CHANGEOWNER_PERMISSION = "admin.servers.write.owner";
+ const CHANGE_IDENTIFIER_PERMISSION = "admin.servers.write.identifier";
+ const DELETE_PERMISSION = "admin.servers.delete";
+ private $pterodactyl;
+
+ public function __construct(PterodactylSettings $ptero_settings)
+ {
+ $this->pterodactyl = new PterodactylClient($ptero_settings);
+ }
+
/**
* Display a listing of the resource.
*
* @return Application|Factory|View|Response
*/
- public function index()
+ public function index(LocaleSettings $locale_settings)
{
- return view('admin.servers.index');
+ $allConstants = (new \ReflectionClass(__CLASS__))->getConstants();
+ $this->checkAnyPermission($allConstants);
+
+ return view('admin.servers.index', [
+ 'locale_datatables' => $locale_settings->datatables
+ ]);
}
/**
@@ -36,6 +58,10 @@ public function index()
*/
public function edit(Server $server)
{
+ $allConstants = (new \ReflectionClass(__CLASS__))->getConstants();
+ $permissions = array_filter($allConstants, fn($key) => str_starts_with($key, 'admin.servers.write'));
+ $this->checkAnyPermission($permissions);
+
// get all users from the database
$users = User::all();
@@ -51,7 +77,7 @@ public function edit(Server $server)
* @param Request $request
* @param Server $server
*/
- public function update(Request $request, Server $server)
+ public function update(Request $request, Server $server, DiscordSettings $discord_settings)
{
$request->validate([
'identifier' => 'required|string',
@@ -59,26 +85,50 @@ public function update(Request $request, Server $server)
]);
- if ($request->get('user_id') != $server->user_id) {
+ if ($request->get('user_id') != $server->user_id && $this->can(self::CHANGEOWNER_PERMISSION)) {
// find the user
$user = User::findOrFail($request->get('user_id'));
// try to update the owner on pterodactyl
try {
- $response = Pterodactyl::updateServerOwner($server, $user->pterodactyl_id);
+ $response = $this->pterodactyl->updateServerOwner($server, $user->pterodactyl_id);
if ($response->getStatusCode() != 200) {
return redirect()->back()->with('error', 'Failed to update server owner on pterodactyl');
}
+ // Attempt to remove/add roles respectively
+ try {
+ if($discord_settings->role_on_purchase) {
+ // remove the role from the old owner
+ $oldOwner = User::findOrFail($server->user_id);
+ $discordUser = $oldOwner->discordUser;
+ if ($discordUser && $oldOwner->servers->count() <= 1) {
+ $discordUser->addOrRemoveRole('remove', $discord_settings->role_id_on_purchase);
+ }
+
+ // add the role to the new owner
+ $discordUser = $user->discordUser;
+ if ($discordUser && $user->servers->count() >= 1) {
+ $discordUser->addOrRemoveRole('add', $discord_settings->role_id_on_purchase);
+ }
+ }
+ } catch (Exception $e) {
+ log::debug('Failed to update discord roles' . $e->getMessage());
+ }
+
// update the owner on the database
$server->user_id = $user->id;
+
} catch (Exception $e) {
return redirect()->back()->with('error', 'Internal Server Error');
}
}
// update the identifier
- $server->identifier = $request->get('identifier');
+ if ($this->can(self::CHANGE_IDENTIFIER_PERMISSION)) {
+
+ $server->identifier = $request->get('identifier');
+ }
$server->save();
return redirect()->route('admin.servers.index')->with('success', 'Server updated!');
@@ -90,9 +140,24 @@ public function update(Request $request, Server $server)
* @param Server $server
* @return RedirectResponse|Response
*/
- public function destroy(Server $server)
+ public function destroy(Server $server, DiscordSettings $discord_settings)
{
+ $this->checkPermission(self::DELETE_PERMISSION);
try {
+ // Remove role from discord
+ try {
+ if($discord_settings->role_on_purchase) {
+ $user = User::findOrFail($server->user_id);
+ $discordUser = $user->discordUser;
+ if($discordUser && $user->servers->count() <= 1) {
+ $discordUser->addOrRemoveRole('remove', $discord_settings->role_id_on_purchase);
+ }
+ }
+ } catch (Exception $e) {
+ log::debug('Failed to update discord roles' . $e->getMessage());
+ }
+
+ // Attempt to remove the server from pterodactyl
$server->delete();
return redirect()->route('admin.servers.index')->with('success', __('Server removed'));
@@ -102,11 +167,31 @@ public function destroy(Server $server)
}
/**
- * @param Server $server
+ * Cancel the Server billing cycle.
+ *
+ * @param Server $server
+ * @return RedirectResponse|Response
+ */
+ public function cancel(Server $server)
+ {
+ try {
+ $server->update([
+ 'canceled' => now(),
+ ]);
+ return redirect()->route('servers.index')->with('success', __('Server canceled'));
+ } catch (Exception $e) {
+ return redirect()->route('servers.index')->with('error', __('An exception has occurred while trying to cancel the server"') . $e->getMessage() . '"');
+ }
+ }
+
+ /**
+ * @param Server $server
* @return RedirectResponse
*/
public function toggleSuspended(Server $server)
{
+ $this->checkPermission(self::SUSPEND_PERMISSION);
+
try {
$server->isSuspended() ? $server->unSuspend() : $server->suspend();
} catch (Exception $exception) {
@@ -118,7 +203,6 @@ public function toggleSuspended(Server $server)
public function syncServers()
{
- $pteroServers = Pterodactyl::getServers();
$CPServers = Server::get();
$CPIDArray = [];
@@ -129,7 +213,7 @@ public function syncServers()
}
}
- foreach ($pteroServers as $server) { //go thru all ptero servers, if server exists, change value to true in array.
+ foreach ($this->pterodactyl->getServers() as $server) { //go thru all ptero servers, if server exists, change value to true in array.
if (isset($CPIDArray[$server['attributes']['id']])) {
$CPIDArray[$server['attributes']['id']] = true;
@@ -149,7 +233,7 @@ public function syncServers()
}, ARRAY_FILTER_USE_BOTH); //Array of servers, that dont exist on ptero (value == false)
$deleteCount = 0;
foreach ($filteredArray as $key => $CPID) { //delete servers that dont exist on ptero anymore
- if (!Pterodactyl::getServerAttributes($key, true)) {
+ if (!$this->pterodactyl->getServerAttributes($key, true)) {
$deleteCount++;
}
}
@@ -183,7 +267,7 @@ public function dataTable(Request $request)
return '' . $server->user->name . '';
})
->addColumn('resources', function (Server $server) {
- return $server->product->description;
+ return $server->product->name;
})
->addColumn('actions', function (Server $server) {
$suspendColor = $server->isSuspended() ? 'btn-success' : 'btn-warning';
@@ -216,8 +300,8 @@ public function dataTable(Request $request)
->editColumn('suspended', function (Server $server) {
return $server->suspended ? $server->suspended->diffForHumans() : '';
})
- ->editColumn('name', function (Server $server) {
- return '' . strip_tags($server->name) . '';
+ ->editColumn('name', function (Server $server, PterodactylSettings $ptero_settings) {
+ return '' . strip_tags($server->name) . '';
})
->rawColumns(['user', 'actions', 'status', 'name'])
->make();
diff --git a/app/Http/Controllers/Admin/SettingsController.php b/app/Http/Controllers/Admin/SettingsController.php
index d0f6d6cd8..3725801ff 100644
--- a/app/Http/Controllers/Admin/SettingsController.php
+++ b/app/Http/Controllers/Admin/SettingsController.php
@@ -2,15 +2,23 @@
namespace App\Http\Controllers\Admin;
+use App\Helpers\ExtensionHelper;
use App\Http\Controllers\Controller;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Http\Response;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Redirect;
+use Illuminate\Support\Facades\Validator;
use Qirolab\Theme\Theme;
class SettingsController extends Controller
{
+ const ICON_PERMISSION = "admin.icons.edit";
+
+
+
/**
* Display a listing of the resource.
*
@@ -20,36 +28,139 @@ public function index()
{
- //Get all tabs as laravel view paths
- $tabs = [];
- if(file_exists(Theme::getViewPaths()[0] . '/admin/settings/tabs/')){
- $tabspath = glob(Theme::getViewPaths()[0] . '/admin/settings/tabs/*.blade.php');
- }else{
- $tabspath = glob(Theme::path($path = 'views', $themeName = 'default').'/admin/settings/tabs/*.blade.php');
- }
+ // get all other settings in app/Settings directory
+ // group items by file name like $categories
+ $settings = collect();
+ $settings_classes = [];
- foreach ($tabspath as $filename) {
- $tabs[] = 'admin.settings.tabs.'.basename($filename, '.blade.php');
+ // get all app settings
+ $app_settings = scandir(app_path('Settings'));
+ $app_settings = array_diff($app_settings, ['.', '..']);
+ // append App\Settings to class name
+ foreach ($app_settings as $app_setting) {
+ $settings_classes[] = 'App\\Settings\\' . str_replace('.php', '', $app_setting);
}
+ // get all extension settings
+ $settings_files = array_merge($settings_classes, ExtensionHelper::getAllExtensionSettingsClasses());
+
+
+ foreach ($settings_files as $file) {
+ $className = $file;
+ // instantiate the class and call toArray method to get all options
+ $options = (new $className())->toArray();
- //Generate a html list item for each tab based on tabs file basename, set first tab as active
- $tabListItems = [];
- foreach ($tabs as $tab) {
- $tabName = str_replace('admin.settings.tabs.', '', $tab);
- $tabListItems[] = '{$voucher->code}
";
})
+ ->orderColumn('status', 'derived_status $1')
->rawColumns(['actions', 'code', 'status'])
->make();
}
diff --git a/app/Http/Controllers/Api/RoleController.php b/app/Http/Controllers/Api/RoleController.php
new file mode 100644
index 000000000..1deca23fe
--- /dev/null
+++ b/app/Http/Controllers/Api/RoleController.php
@@ -0,0 +1,162 @@
+allowedIncludes(self::ALLOWED_INCLUDES)
+ ->allowedFilters(self::ALLOWED_FILTERS);
+
+ return $query->paginate($request->input('per_page') ?? 50);
+ }
+
+ /**
+ * Show the form for creating a new resource.
+ *
+ * @return Response
+ */
+ public function create()
+ {
+ //
+ }
+
+ /**
+ * Store a newly created resource in storage.
+ *
+ * @param Request $request
+ * @return Response
+ */
+ public function store(Request $request)
+ {
+ $request->validate([
+ 'name' => 'required|string|max:191',
+ 'color' => [
+ 'required',
+ 'regex:/^#([a-f0-9]{6}|[a-f0-9]{3})$/i'
+ ],
+ 'power' => 'required',
+ ]);
+
+ $role = Role::create([
+ 'name' => $request->name,
+ 'color' => $request->color,
+ 'power' => $request->power,
+ ]);
+
+ if ($request->permissions) {
+ $permissions = explode(",",$request->permissions);
+ $collectedPermissions = collect($permissions)->map(fn($val)=>(int)$val);
+ foreach($collectedPermissions as $permission){
+ $role->givePermissionTo($permission);
+ }
+ }
+
+ return $role;
+ }
+
+ /**
+ * Display the specified resource.
+ *
+ * @param int $id
+ * @return Role|Collection|Model
+ */
+ public function show(int $id)
+ {
+ $query = QueryBuilder::for(Role::class)
+ ->where('id', '=', $id)
+ ->allowedIncludes(self::ALLOWED_INCLUDES);
+
+ return $query->firstOrFail();
+ }
+
+ /**
+ * Show the form for editing the specified resource.
+ *
+ * @param int $id
+ * @return Response
+ */
+ public function edit($id)
+ {
+ //
+ }
+
+ /**
+ * Update the specified resource in storage.
+ *
+ * @param Request $request
+ * @param int $id
+ * @return Response
+ */
+ public function update(Request $request, int $id)
+ {
+ $role = Role::findOrFail($id);
+
+ $request->validate([
+ 'name' => 'sometimes|string|max:191',
+ 'color' => [
+ 'sometimes',
+ 'regex:/^#([a-f0-9]{6}|[a-f0-9]{3})$/i'
+ ],
+ 'power' => 'sometimes',
+ ]);
+
+ if ($request->permissions) {
+ $permissions = explode(",",$request->permissions);
+ $collectedPermissions = collect($permissions)->map(fn($val)=>(int)$val);
+ $role->syncPermissions($collectedPermissions);
+ }
+
+
+ $role->update($request->except('permissions'));
+
+ return $role;
+ }
+
+ /**
+ * Remove the specified resource from storage.
+ *
+ * @param int $id
+ * @return Response
+ */
+ public function destroy(int $id)
+ {
+ $role = Role::findOrFail($id);
+
+ if($role->id == 1 || $role->id == 3|| $role->id == 4){ //cannot delete admin and User role
+ return response()->json([
+ 'error' => 'Not allowed to delete Admin, Client or Member'], 400);
+ }
+
+ $users = User::role($role)->get();
+
+ foreach($users as $user){
+ $user->syncRoles([4]);
+ }
+ $role->delete();
+
+ return $role;
+ }
+}
diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php
index 68b0f948d..3f2a281f7 100644
--- a/app/Http/Controllers/Api/UserController.php
+++ b/app/Http/Controllers/Api/UserController.php
@@ -8,7 +8,7 @@
use App\Models\DiscordUser;
use App\Models\User;
use App\Notifications\ReferralNotification;
-use App\Traits\Referral;
+use App\Settings\UserSettings;
use Carbon\Carbon;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
@@ -28,11 +28,9 @@
class UserController extends Controller
{
- use Referral;
+ const ALLOWED_INCLUDES = ['servers', 'notifications', 'payments', 'vouchers', 'roles', 'discordUser'];
- const ALLOWED_INCLUDES = ['servers', 'notifications', 'payments', 'vouchers', 'discordUser'];
-
- const ALLOWED_FILTERS = ['name', 'server_limit', 'email', 'pterodactyl_id', 'role', 'suspended'];
+ const ALLOWED_FILTERS = ['name', 'server_limit', 'email', 'pterodactyl_id', 'suspended'];
/**
* Display a listing of the resource.
@@ -88,14 +86,13 @@ public function update(Request $request, int $id)
'email' => 'sometimes|string|email',
'credits' => 'sometimes|numeric|min:0|max:1000000',
'server_limit' => 'sometimes|numeric|min:0|max:1000000',
- 'role' => ['sometimes', Rule::in(['admin', 'moderator', 'client', 'member'])],
]);
event(new UserUpdateCreditsEvent($user));
//Update Users Password on Pterodactyl
//Username,Mail,First and Lastname are required aswell
- $response = Pterodactyl::client()->patch('/application/users/' . $user->pterodactyl_id, [
+ $response = Pterodactyl::client()->patch('/application/users/'.$user->pterodactyl_id, [
'username' => $request->name,
'first_name' => $request->name,
'last_name' => $request->name,
@@ -108,7 +105,11 @@ public function update(Request $request, int $id)
'pterodactyl_error_status' => $response->toException()->getCode(),
]);
}
- $user->update($request->all());
+ if($request->has("role")){
+ $collectedRoles = collect($request->role)->map(fn($val)=>(int)$val);
+ $user->syncRoles($collectedRoles);
+ }
+ $user->update($request->except('role'));
return $user;
}
@@ -232,7 +233,7 @@ public function unsuspend(Request $request, int $id)
$discordUser = DiscordUser::find($id);
$user = $discordUser ? $discordUser->user : User::findOrFail($id);
- if (!$user->isSuspended()) {
+ if (! $user->isSuspended()) {
throw ValidationException::withMessages([
'error' => 'You cannot unsuspend an User who is not suspended.',
]);
@@ -243,10 +244,25 @@ public function unsuspend(Request $request, int $id)
return $user;
}
+ /**
+ * Create a unique Referral Code for User
+ *
+ * @return string
+ */
+ protected function createReferralCode()
+ {
+ $referralcode = STR::random(8);
+ if (User::where('referral_code', '=', $referralcode)->exists()) {
+ $this->createReferralCode();
+ }
+
+ return $referralcode;
+ }
+
/**
* @throws ValidationException
*/
- public function store(Request $request)
+ public function store(Request $request, UserSettings $userSettings)
{
$request->validate([
'name' => ['required', 'string', 'max:30', 'min:4', 'alpha_num', 'unique:users'],
@@ -255,7 +271,7 @@ public function store(Request $request)
]);
// Prevent the creation of new users via API if this is enabled.
- if (!config('SETTINGS::SYSTEM:CREATION_OF_NEW_USERS', 'true')) {
+ if (! $userSettings->creation_enabled) {
throw ValidationException::withMessages([
'error' => 'The creation of new users has been blocked by the system administrator.',
]);
@@ -293,7 +309,7 @@ public function store(Request $request)
'pterodactyl_id' => $response->json()['attributes']['id'],
]);
//INCREMENT REFERRAL-USER CREDITS
- if (!empty($request->input('referral_code'))) {
+ if (! empty($request->input('referral_code'))) {
$ref_code = $request->input('referral_code');
$new_user = $user->id;
if ($ref_user = User::query()->where('referral_code', '=', $ref_code)->first()) {
diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/Auth/ForgotPasswordController.php
index bd9df2d89..6c3f34aef 100644
--- a/app/Http/Controllers/Auth/ForgotPasswordController.php
+++ b/app/Http/Controllers/Auth/ForgotPasswordController.php
@@ -3,6 +3,7 @@
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
+use App\Settings\GeneralSettings;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
use Illuminate\Http\Request;
@@ -37,7 +38,9 @@ protected function validateEmail(Request $request)
'email' => ['required', 'string', 'email', 'max:255'],
]);
- if (config('SETTINGS::RECAPTCHA:ENABLED') == 'true') {
+ $recaptcha_enabled = app(GeneralSettings::class)->recaptcha_enabled;
+
+ if ($recaptcha_enabled) {
$this->validate($request, [
'g-recaptcha-response' => 'required|recaptcha',
]);
diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php
index ec678ace8..b315f8d77 100644
--- a/app/Http/Controllers/Auth/RegisterController.php
+++ b/app/Http/Controllers/Auth/RegisterController.php
@@ -2,13 +2,18 @@
namespace App\Http\Controllers\Auth;
-use App\Classes\Pterodactyl;
use App\Http\Controllers\Controller;
use App\Models\User;
use App\Notifications\ReferralNotification;
use App\Providers\RouteServiceProvider;
use App\Traits\Referral;
use Carbon\Carbon;
+use App\Settings\PterodactylSettings;
+use App\Classes\PterodactylClient;
+use App\Settings\GeneralSettings;
+use App\Settings\ReferralSettings;
+use App\Settings\UserSettings;
+use App\Settings\WebsiteSettings;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\DB;
@@ -17,9 +22,28 @@
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Str;
use Illuminate\Validation\ValidationException;
+use Spatie\Permission\Models\Role;
class RegisterController extends Controller
{
+ private $pterodactyl;
+
+ private $credits_display_name;
+
+ private $recaptcha_enabled;
+
+ private $website_show_tos;
+
+ private $register_ip_check;
+
+ private $initial_credits;
+
+ private $initial_server_limit;
+
+ private $referral_mode;
+
+ private $referral_reward;
+
/*
|--------------------------------------------------------------------------
| Register Controller
@@ -45,9 +69,18 @@ class RegisterController extends Controller
*
* @return void
*/
- public function __construct()
+ public function __construct(PterodactylSettings $ptero_settings, GeneralSettings $general_settings, WebsiteSettings $website_settings, UserSettings $user_settings, ReferralSettings $referral_settings)
{
$this->middleware('guest');
+ $this->pterodactyl = new PterodactylClient($ptero_settings);
+ $this->credits_display_name = $general_settings->credits_display_name;
+ $this->recaptcha_enabled = $general_settings->recaptcha_enabled;
+ $this->website_show_tos = $website_settings->show_tos;
+ $this->register_ip_check = $user_settings->register_ip_check;
+ $this->initial_credits = $user_settings->initial_credits;
+ $this->initial_server_limit = $user_settings->initial_server_limit;
+ $this->referral_mode = $referral_settings->mode;
+ $this->referral_reward = $referral_settings->reward;
}
/**
@@ -63,14 +96,14 @@ protected function validator(array $data)
'email' => ['required', 'string', 'email', 'max:64', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
];
- if (config('SETTINGS::RECAPTCHA:ENABLED') == 'true') {
+ if ($this->recaptcha_enabled) {
$validationRules['g-recaptcha-response'] = ['required', 'recaptcha'];
}
- if (config('SETTINGS::SYSTEM:SHOW_TOS') == 'true') {
+ if ($this->website_show_tos) {
$validationRules['terms'] = ['required'];
}
- if (config('SETTINGS::SYSTEM:REGISTER_IP_CHECK', 'true') == 'true') {
+ if ($this->register_ip_check) {
//check if ip has already made an account
$data['ip'] = session()->get('ip') ?? request()->ip();
@@ -99,15 +132,18 @@ protected function create(array $data)
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
- 'credits' => config('SETTINGS::USER:INITIAL_CREDITS', 150),
- 'server_limit' => config('SETTINGS::USER:INITIAL_SERVER_LIMIT', 1),
+ 'credits' => $this->initial_credits,
+ 'server_limit' => $this->initial_server_limit,
'password' => Hash::make($data['password']),
'referral_code' => $this->createReferralCode(),
+ 'pterodactyl_id' => Str::uuid(),
]);
- $response = Pterodactyl::client()->post('/application/users', [
- 'external_id' => App::environment('local') ? Str::random(16) : (string) $user->id,
+ $user->syncRoles(Role::findByName('User'));
+
+ $response = $this->pterodactyl->application->post('/application/users', [
+ 'external_id' => null,
'username' => $user->name,
'email' => $user->email,
'first_name' => $user->name,
@@ -117,6 +153,10 @@ protected function create(array $data)
'language' => 'en',
]);
+ $user->update([
+ 'pterodactyl_id' => $response->json()['attributes']['id'],
+ ]);
+
if ($response->failed()) {
$user->delete();
Log::error('Pterodactyl Registration Error: ' . $response->json()['errors'][0]['detail']);
@@ -125,24 +165,23 @@ protected function create(array $data)
]);
}
- $user->update([
- 'pterodactyl_id' => $response->json()['attributes']['id'],
- ]);
+ // delete activity log for user creation where description = 'created' or 'deleted' and subject_id = user_id
+ DB::table('activity_log')->where('description', 'created')->orWhere('description', 'deleted')->where('subject_id', $user->id)->delete();
//INCREMENT REFERRAL-USER CREDITS
if (!empty($data['referral_code'])) {
$ref_code = $data['referral_code'];
$new_user = $user->id;
if ($ref_user = User::query()->where('referral_code', '=', $ref_code)->first()) {
- if (config('SETTINGS::REFERRAL:MODE') == 'sign-up' || config('SETTINGS::REFERRAL:MODE') == 'both') {
- $ref_user->increment('credits', config('SETTINGS::REFERRAL::REWARD'));
+ if ($this->referral_mode === 'sign-up' || $this->referral_mode === 'both') {
+ $ref_user->increment('credits', $this->referral_reward);
$ref_user->notify(new ReferralNotification($ref_user->id, $new_user));
//LOGS REFERRALS IN THE ACTIVITY LOG
activity()
->performedOn($user)
->causedBy($ref_user)
- ->log('gained ' . config('SETTINGS::REFERRAL::REWARD') . ' ' . config('SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME') . ' for sign-up-referral of ' . $user->name . ' (ID:' . $user->id . ')');
+ ->log('gained ' . $this->referral_reward . ' ' . $this->credits_display_name . ' for sign-up-referral of ' . $user->name . ' (ID:' . $user->id . ')');
}
//INSERT INTO USER_REFERRALS TABLE
DB::table('user_referrals')->insert([
diff --git a/app/Http/Controllers/Auth/SocialiteController.php b/app/Http/Controllers/Auth/SocialiteController.php
index 101a367a2..66cc001b7 100644
--- a/app/Http/Controllers/Auth/SocialiteController.php
+++ b/app/Http/Controllers/Auth/SocialiteController.php
@@ -15,9 +15,9 @@ public function redirect()
{
$scopes = ! empty(config('SETTINGS::DISCORD:BOT_TOKEN')) && ! empty(config('SETTINGS::DISCORD:GUILD_ID')) ? ['guilds.join'] : [];
- return Socialite::driver('discord')
+ return ( Socialite::driver('discord')
->scopes($scopes)
- ->redirect();
+ ->redirect());
}
public function callback()
@@ -68,18 +68,11 @@ public function callback()
"https://discord.com/api/guilds/{$guildId}/members/{$discord->id}",
['access_token' => $discord->token]
);
-
+ $discordUser = $user->discordUser;
//give user a role in the discord server
if (! empty($roleId)) {
- $response = Http::withHeaders(
- [
- 'Authorization' => 'Bot '.$botToken,
- 'Content-Type' => 'application/json',
- ]
- )->put(
- "https://discord.com/api/guilds/{$guildId}/members/{$discord->id}/roles/{$roleId}",
- ['access_token' => $discord->token]
- );
+ // Function addOrRemoveRole is defined in app/Models/DiscordUser.php
+ $discordUser->addOrRemoveRole('add', $roleId);
}
}
diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php
index a0a2a8a34..b6060d827 100644
--- a/app/Http/Controllers/Controller.php
+++ b/app/Http/Controllers/Controller.php
@@ -2,12 +2,61 @@
namespace App\Http\Controllers;
+use App\Models\User;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
+use Illuminate\Support\Facades\Auth;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
+ /**
+ * Check if user has permissions
+ * Abort 403 if the user doesn't have the required permission
+ *
+ * @param string $permission
+ * @return void
+ */
+ public function checkPermission(string $permission)
+ {
+ /** @var User $user */
+ $user = Auth::user();
+
+ if (!$user->can($permission)) {
+ abort(403, __('User does not have the right permissions.'));
+ }
+ }
+
+ public function checkAnyPermission(iterable $permission)
+ {
+ /** @var User $user */
+ $user = Auth::user();
+
+ if (!$user->canAny($permission)) {
+ abort(403, __('User does not have the right permissions.'));
+ }
+ }
+
+ /**
+ * Check if user has permissions
+ *
+ * @param string $permission
+ * @return bool
+ */
+ public function can(string $permission): bool
+ {
+ /** @var User $user */
+ $user = Auth::user();
+
+ return $user->can($permission);
+ }
+ public function canAny(iterable $permission): bool
+ {
+ /** @var User $user */
+ $user = Auth::user();
+
+ return $user->canAny($permission);
+ }
}
diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php
index 9dbe62be9..9b53dd000 100644
--- a/app/Http/Controllers/HomeController.php
+++ b/app/Http/Controllers/HomeController.php
@@ -4,7 +4,9 @@
use App\Models\PartnerDiscount;
use App\Models\UsefulLink;
-use Illuminate\Http\Request;
+use App\Settings\GeneralSettings;
+use App\Settings\WebsiteSettings;
+use App\Settings\ReferralSettings;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
@@ -32,7 +34,7 @@ public function callHome()
if (Storage::exists('callHome')) {
return;
}
- Http::asForm()->post('https://market.ctrlpanel.gg/callhome.php', [
+ Http::asForm()->post('https://market.CtrlPanel.gg/callhome.php', [
'id' => Hash::make(URL::current()),
]);
Storage::put('callHome', 'This is only used to count the installations of cpgg.');
@@ -89,7 +91,7 @@ public function getTimeLeftBoxText(float $daysLeft, float $hoursLeft)
}
/** Show the application dashboard. */
- public function index(Request $request)
+ public function index(GeneralSettings $general_settings, WebsiteSettings $website_settings, ReferralSettings $referral_settings)
{
$usage = Auth::user()->creditUsage();
$credits = Auth::user()->Credits();
@@ -99,7 +101,7 @@ public function index(Request $request)
/** Build our Time-Left-Box */
if ($credits > 0.01 and $usage > 0) {
- $daysLeft = number_format(($credits * 30) / $usage, 2, '.', '');
+ $daysLeft = number_format($credits / ($usage / 30), 2, '.', '');
$hoursLeft = number_format($credits / ($usage / 30 / 24), 2, '.', '');
$bg = $this->getTimeLeftBoxBackground($daysLeft);
@@ -120,6 +122,9 @@ public function index(Request $request)
'numberOfReferrals' => DB::table('user_referrals')->where('referral_id', '=', Auth::user()->id)->count(),
'partnerDiscount' => PartnerDiscount::where('user_id', Auth::user()->id)->first(),
'myDiscount' => PartnerDiscount::getDiscount(),
+ 'general_settings' => $general_settings,
+ 'website_settings' => $website_settings,
+ 'referral_settings' => $referral_settings
]);
}
}
diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php
index 117ac33e1..4e7e09e56 100644
--- a/app/Http/Controllers/ProductController.php
+++ b/app/Http/Controllers/ProductController.php
@@ -2,18 +2,31 @@
namespace App\Http\Controllers;
-use App\Classes\Pterodactyl;
-use App\Models\Egg;
-use App\Models\Location;
-use App\Models\Node;
+use App\Classes\PterodactylClient;
+use App\Models\Pterodactyl\Egg;
+use App\Models\Pterodactyl\Location;
+use App\Models\Pterodactyl\Node;
use App\Models\Product;
+use App\Models\User;
+use App\Notifications\DynamicNotification;
+use App\Settings\PterodactylSettings;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
+use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Support\Collection;
+use Illuminate\Support\Facades\Notification;
+use Illuminate\Support\Facades\RateLimiter;
class ProductController extends Controller
{
+ private $pterodactyl;
+
+ public function __construct(PterodactylSettings $ptero_settings)
+ {
+ $this->pterodactyl = new PterodactylClient($ptero_settings);
+ }
+
/**
* @description get product locations based on selected egg
*
@@ -60,7 +73,7 @@ public function getLocationsBasedOnEgg(Request $request, Egg $egg)
{
$nodes = $this->getNodesBasedOnEgg($request, $egg);
foreach ($nodes as $key => $node) {
- $pteroNode = Pterodactyl::getNode($node->id);
+ $pteroNode = $this->pterodactyl->getNode($node->id);
if ($pteroNode['allocated_resources']['memory'] >= ($pteroNode['memory'] * ($pteroNode['memory_overallocate'] + 100) / 100) || $pteroNode['allocated_resources']['disk'] >= ($pteroNode['disk'] * ($pteroNode['disk_overallocate'] + 100) / 100)) {
$nodes->forget($key);
}
@@ -85,34 +98,60 @@ public function getLocationsBasedOnEgg(Request $request, Egg $egg)
}
});
+ if($locations->isEmpty()){
+ // Rate limit the node full notification to 1 attempt per 30 minutes
+ RateLimiter::attempt(
+ key: 'nodes-full-warning',
+ maxAttempts: 1,
+ callback: function() {
+ // get admin role and check users
+ $users = User::query()->where('role', '=', '1')->get();
+ Notification::send($users,new DynamicNotification(['mail'],[],
+ mail: (new MailMessage)->subject('Attention! All of the nodes are full!')->greeting('Attention!')->line('All nodes are full, please add more nodes')));
+ },
+ decaySeconds: 5
+ );
+ }
+
return $locations;
}
/**
- * @param Node $node
+ * @param Int $location
* @param Egg $egg
* @return Collection|JsonResponse
*/
- public function getProductsBasedOnNode(Egg $egg, Node $node)
+ public function getProductsBasedOnLocation(Egg $egg, Int $location)
{
- if (is_null($egg->id) || is_null($node->id)) {
- return response()->json('node and egg id is required', '400');
+ if (is_null($egg->id) || is_null($location)) {
+ return response()->json('location and egg id is required', '400');
}
+ // Get all nodes in this location
+ $nodes = Node::query()
+ ->where('location_id', '=', $location)
+ ->get();
+
$products = Product::query()
->where('disabled', '=', false)
- ->whereHas('nodes', function (Builder $builder) use ($node) {
- $builder->where('id', '=', $node->id);
+ ->whereHas('nodes', function (Builder $builder) use ($nodes) {
+ $builder->whereIn('id', $nodes->map(function ($node) {
+ return $node->id;
+ }));
})
->whereHas('eggs', function (Builder $builder) use ($egg) {
$builder->where('id', '=', $egg->id);
})
->get();
- $pteroNode = Pterodactyl::getNode($node->id);
+ // Instead of the old node check, we will check if the product fits in any given node in the location
foreach ($products as $key => $product) {
- if ($product->memory > ($pteroNode['memory'] * ($pteroNode['memory_overallocate'] + 100) / 100) - $pteroNode['allocated_resources']['memory'] || $product->disk > ($pteroNode['disk'] * ($pteroNode['disk_overallocate'] + 100) / 100) - $pteroNode['allocated_resources']['disk']) {
- $product->doesNotFit = true;
+ $product->doesNotFit = false;
+ foreach ($nodes as $node) {
+ $pteroNode = $this->pterodactyl->getNode($node->id);
+ if ($product->memory > ($pteroNode['memory'] * ($pteroNode['memory_overallocate'] + 100) / 100) - $pteroNode['allocated_resources']['memory'] || $product->disk > ($pteroNode['disk'] * ($pteroNode['disk_overallocate'] + 100) / 100) - $pteroNode['allocated_resources']['disk']) {
+ $product->doesNotFit = true;
+ }
}
}
diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php
index bffbc9638..52cb0bffe 100644
--- a/app/Http/Controllers/ProfileController.php
+++ b/app/Http/Controllers/ProfileController.php
@@ -2,8 +2,12 @@
namespace App\Http\Controllers;
-use App\Classes\Pterodactyl;
use App\Models\User;
+use App\Settings\UserSettings;
+use App\Settings\PterodactylSettings;
+use App\Classes\PterodactylClient;
+use App\Settings\DiscordSettings;
+use App\Settings\ReferralSettings;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
@@ -12,37 +16,32 @@
class ProfileController extends Controller
{
+ private $pterodactyl;
+
+ public function __construct(PterodactylSettings $ptero_settings)
+ {
+ $this->pterodactyl = new PterodactylClient($ptero_settings);
+ }
+
/** Display a listing of the resource. */
- public function index()
+ public function index(UserSettings $user_settings, DiscordSettings $discord_settings, ReferralSettings $referral_settings)
{
- switch (Auth::user()->role) {
- case 'admin':
- $badgeColor = 'badge-danger';
- break;
- case 'mod':
- $badgeColor = 'badge-info';
- break;
- case 'client':
- $badgeColor = 'badge-success';
- break;
- default:
- $badgeColor = 'badge-secondary';
- break;
- }
return view('profile.index')->with([
'user' => Auth::user(),
- 'credits_reward_after_verify_discord' => config('SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_DISCORD'),
- 'force_email_verification' => config('SETTINGS::USER:FORCE_EMAIL_VERIFICATION'),
- 'force_discord_verification' => config('SETTINGS::USER:FORCE_DISCORD_VERIFICATION'),
- 'badgeColor' => $badgeColor,
+ 'credits_reward_after_verify_discord' => $user_settings->credits_reward_after_verify_discord,
+ 'force_email_verification' => $user_settings->force_email_verification,
+ 'force_discord_verification' => $user_settings->force_discord_verification,
+ 'discord_client_id' => $discord_settings->client_id,
+ 'discord_client_secret' => $discord_settings->client_secret,
+ 'referral_enabled' => $referral_settings->enabled
]);
}
public function selfDestroyUser()
{
$user = Auth::user();
- if ($user->role == "admin") return back()->with("error", "You cannot delete yourself as an admin!");
+ if ($user->hasRole("Admin")) return back()->with("error", "You cannot delete yourself as an admin!");
$user->delete();
@@ -63,15 +62,15 @@ public function update(Request $request, int $id)
$user = User::findOrFail($id);
//update password if necessary
- if (! is_null($request->input('new_password'))) {
+ if (!is_null($request->input('new_password'))) {
//validate password request
$request->validate([
'current_password' => [
'required',
function ($attribute, $value, $fail) use ($user) {
- if (! Hash::check($value, $user->password)) {
- $fail('The '.$attribute.' is invalid.');
+ if (!Hash::check($value, $user->password)) {
+ $fail('The ' . $attribute . ' is invalid.');
}
},
],
@@ -81,7 +80,7 @@ function ($attribute, $value, $fail) use ($user) {
//Update Users Password on Pterodactyl
//Username,Mail,First and Lastname are required aswell
- $response = Pterodactyl::client()->patch('/application/users/'.$user->pterodactyl_id, [
+ $response = $this->pterodactyl->application->patch('/application/users/' . $user->pterodactyl_id, [
'password' => $request->input('new_password'),
'username' => $request->input('name'),
'first_name' => $request->input('name'),
@@ -103,13 +102,13 @@ function ($attribute, $value, $fail) use ($user) {
//validate request
$request->validate([
- 'name' => 'required|min:4|max:30|alpha_num|unique:users,name,'.$id.',id',
- 'email' => 'required|email|max:64|unique:users,email,'.$id.',id',
+ 'name' => 'required|min:4|max:30|alpha_num|unique:users,name,' . $id . ',id',
+ 'email' => 'required|email|max:64|unique:users,email,' . $id . ',id',
'avatar' => 'nullable',
]);
//update avatar
- if (! is_null($request->input('avatar'))) {
+ if (!is_null($request->input('avatar'))) {
$avatar = json_decode($request->input('avatar'));
if ($avatar->input->size > 3000000) {
abort(500);
@@ -125,7 +124,7 @@ function ($attribute, $value, $fail) use ($user) {
}
//update name and email on Pterodactyl
- $response = Pterodactyl::client()->patch('/application/users/'.$user->pterodactyl_id, [
+ $response = $this->pterodactyl->application->patch('/application/users/' . $user->pterodactyl_id, [
'username' => $request->input('name'),
'first_name' => $request->input('name'),
'last_name' => $request->input('name'),
diff --git a/app/Http/Controllers/ServerController.php b/app/Http/Controllers/ServerController.php
index 656064c39..d7b1c833c 100644
--- a/app/Http/Controllers/ServerController.php
+++ b/app/Http/Controllers/ServerController.php
@@ -2,26 +2,44 @@
namespace App\Http\Controllers;
-use App\Classes\Pterodactyl;
-use App\Models\Egg;
-use App\Models\Location;
-use App\Models\Nest;
-use App\Models\Node;
+use App\Models\Pterodactyl\Egg;
+use App\Models\Pterodactyl\Location;
+use App\Models\Pterodactyl\Nest;
+use App\Models\Pterodactyl\Node;
use App\Models\Product;
use App\Models\Server;
+use App\Models\User;
use App\Notifications\ServerCreationError;
+use App\Settings\DiscordSettings;
+use Carbon\Carbon;
+use App\Settings\UserSettings;
+use App\Settings\ServerSettings;
+use App\Settings\PterodactylSettings;
+use App\Classes\PterodactylClient;
+use App\Settings\GeneralSettings;
use Exception;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Client\Response;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Request as FacadesRequest;
class ServerController extends Controller
{
+ const CREATE_PERMISSION = 'user.server.create';
+ const UPGRADE_PERMISSION = 'user.server.upgrade';
+
+ private $pterodactyl;
+
+ public function __construct(PterodactylSettings $ptero_settings)
+ {
+ $this->pterodactyl = new PterodactylClient($ptero_settings);
+ }
+
/** Display a listing of the resource. */
- public function index()
+ public function index(GeneralSettings $general_settings, PterodactylSettings $ptero_settings)
{
$servers = Auth::user()->servers;
@@ -29,8 +47,8 @@ public function index()
foreach ($servers as $server) {
//Get server infos from ptero
- $serverAttributes = Pterodactyl::getServerAttributes($server->pterodactyl_id, true);
- if (! $serverAttributes) {
+ $serverAttributes = $this->pterodactyl->getServerAttributes($server->pterodactyl_id);
+ if (!$serverAttributes) {
continue;
}
$serverRelationships = $serverAttributes['relationships'];
@@ -61,14 +79,21 @@ public function index()
return view('servers.index')->with([
'servers' => $servers,
+ 'credits_display_name' => $general_settings->credits_display_name,
+ 'pterodactyl_url' => $ptero_settings->panel_url,
+ 'phpmyadmin_url' => $general_settings->phpmyadmin_url
]);
}
/** Show the form for creating a new resource. */
- public function create()
+ public function create(UserSettings $user_settings, ServerSettings $server_settings, GeneralSettings $general_settings)
{
- if (! is_null($this->validateConfigurationRules())) {
- return $this->validateConfigurationRules();
+ $this->checkPermission(self::CREATE_PERMISSION);
+
+ $validate_configuration = $this->validateConfigurationRules($user_settings, $server_settings, $general_settings);
+
+ if (!is_null($validate_configuration)) {
+ return $validate_configuration;
}
$productCount = Product::query()->where('disabled', '=', false)->count();
@@ -98,13 +123,18 @@ public function create()
'locations' => $locations,
'eggs' => $eggs,
'user' => Auth::user(),
+ 'server_creation_enabled' => $server_settings->creation_enabled,
+ 'min_credits_to_make_server' => $user_settings->min_credits_to_make_server,
+ 'credits_display_name' => $general_settings->credits_display_name,
+ 'location_description_enabled' => $server_settings->location_description_enabled,
+ 'store_enabled' => $general_settings->store_enabled
]);
}
/**
* @return null|RedirectResponse
*/
- private function validateConfigurationRules()
+ private function validateConfigurationRules(UserSettings $user_settings, ServerSettings $server_settings, GeneralSettings $generalSettings)
{
//limit validation
if (Auth::user()->servers()->count() >= Auth::user()->server_limit) {
@@ -116,39 +146,32 @@ private function validateConfigurationRules()
$product = Product::findOrFail(FacadesRequest::input('product'));
// Get node resource allocation info
- $node = $product->nodes()->findOrFail(FacadesRequest::input('node'));
- $nodeName = $node->name;
-
- // Check if node has enough memory and disk space
- $checkResponse = Pterodactyl::checkNodeResources($node, $product->memory, $product->disk);
- if ($checkResponse == false) {
- return redirect()->route('servers.index')->with('error', __("The node '".$nodeName."' doesn't have the required memory or disk left to allocate this product."));
+ $location = FacadesRequest::input('location');
+ $availableNode = $this->getAvailableNode($location, $product);
+ if (!$availableNode) {
+ return redirect()->route('servers.index')->with('error', __("The chosen location doesn't have the required memory or disk left to allocate this product."));
}
// Min. Credits
- if (
- Auth::user()->credits <
- ($product->minimum_credits == -1
- ? config('SETTINGS::USER:MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER', 50)
- : $product->minimum_credits)
- ) {
- return redirect()->route('servers.index')->with('error', 'You do not have the required amount of '.CREDITS_DISPLAY_NAME.' to use this product!');
+ if (Auth::user()->credits < ($product->minimum_credits == -1
+ ? $user_settings->min_credits_to_make_server
+ : $product->minimum_credits)) {
+ return redirect()->route('servers.index')->with('error', 'You do not have the required amount of ' . $generalSettings->credits_display_name . ' to use this product!');
}
}
//Required Verification for creating an server
- if (config('SETTINGS::USER:FORCE_EMAIL_VERIFICATION', 'false') === 'true' && ! Auth::user()->hasVerifiedEmail()) {
+ if ($user_settings->force_email_verification && !Auth::user()->hasVerifiedEmail()) {
return redirect()->route('profile.index')->with('error', __('You are required to verify your email address before you can create a server.'));
}
//Required Verification for creating an server
-
- if (! config('SETTINGS::SYSTEM:CREATION_OF_NEW_SERVERS', 'true') && Auth::user()->role != 'admin') {
+ if (!$server_settings->creation_enabled && Auth::user()->cannot("admin.servers.bypass_creation_enabled")) {
return redirect()->route('servers.index')->with('error', __('The system administrator has blocked the creation of new servers.'));
}
//Required Verification for creating an server
- if (config('SETTINGS::USER:FORCE_DISCORD_VERIFICATION', 'false') === 'true' && ! Auth::user()->discordUser) {
+ if ($user_settings->force_discord_verification && !Auth::user()->discordUser) {
return redirect()->route('profile.index')->with('error', __('You are required to link your discord account before you can create a server.'));
}
@@ -156,40 +179,51 @@ private function validateConfigurationRules()
}
/** Store a newly created resource in storage. */
- public function store(Request $request)
+ public function store(Request $request, UserSettings $user_settings, ServerSettings $server_settings, GeneralSettings $generalSettings, DiscordSettings $discord_settings)
{
- /** @var Node $node */
+ /** @var Location $location */
/** @var Egg $egg */
/** @var Product $product */
- if (! is_null($this->validateConfigurationRules())) {
- return $this->validateConfigurationRules();
+ $validate_configuration = $this->validateConfigurationRules($user_settings, $server_settings, $generalSettings);
+
+ if (!is_null($validate_configuration)) {
+ return $validate_configuration;
}
$request->validate([
'name' => 'required|max:191',
- 'node' => 'required|exists:nodes,id',
+ 'location' => 'required|exists:locations,id',
'egg' => 'required|exists:eggs,id',
'product' => 'required|exists:products,id',
]);
- //get required resources
+ // Get the product and egg
$product = Product::query()->findOrFail($request->input('product'));
$egg = $product->eggs()->findOrFail($request->input('egg'));
- $node = $product->nodes()->findOrFail($request->input('node'));
+
+ // Get an available node
+ $location = $request->input('location');
+ $availableNode = $this->getAvailableNode($location, $product);
+ $node = Node::query()->find($availableNode);
+
+ if(!$node) {
+ return redirect()->route('servers.index')->with('error', __("No nodes satisfying the requirements for automatic deployment on this location were found."));
+ }
$server = $request->user()->servers()->create([
'name' => $request->input('name'),
'product_id' => $request->input('product'),
+ 'last_billed' => Carbon::now()->toDateTimeString(),
]);
//get free allocation ID
- $allocationId = Pterodactyl::getFreeAllocationId($node);
- if (! $allocationId) {
+ $allocationId = $this->pterodactyl->getFreeAllocationId($node);
+ if (!$allocationId) {
return $this->noAllocationsError($server);
}
//create server on pterodactyl
- $response = Pterodactyl::createServer($server, $egg, $allocationId);
+ $response = $this->pterodactyl->createServer($server, $egg, $allocationId);
if ($response->failed()) {
return $this->serverCreationFailed($response, $server);
}
@@ -201,12 +235,23 @@ public function store(Request $request)
'identifier' => $serverAttributes['identifier'],
]);
- if (config('SETTINGS::SYSTEM:SERVER_CREATE_CHARGE_FIRST_HOUR', 'true') == 'true') {
- if ($request->user()->credits >= $server->product->getHourlyPrice()) {
- $request->user()->decrement('credits', $server->product->getHourlyPrice());
+ // Charge first billing cycle
+ $request->user()->decrement('credits', $server->product->price);
+
+ // Add role from discord
+ try {
+ if($discord_settings->role_on_purchase) {
+ $user = $request->user();
+ $discordUser = $user->discordUser;
+ if($discordUser && $user->servers->count() >= 1) {
+ $discordUser->addOrRemoveRole('add', $discord_settings->role_id_on_purchase);
+ }
}
+ } catch (Exception $e) {
+ log::debug('Failed to update discord roles' . $e->getMessage());
}
+
return redirect()->route('servers.index')->with('success', __('Server created'));
}
@@ -234,30 +279,60 @@ private function noAllocationsError(Server $server)
*/
private function serverCreationFailed(Response $response, Server $server)
{
- $server->delete();
-
return redirect()->route('servers.index')->with('error', json_encode($response->json()));
}
/** Remove the specified resource from storage. */
- public function destroy(Server $server)
+ public function destroy(Server $server, DiscordSettings $discord_settings)
{
+ if ($server->user_id != Auth::user()->id) {
+ return back()->with('error', __('This is not your Server!'));
+ }
try {
+ // Remove role from discord
+ try {
+ if($discord_settings->role_on_purchase) {
+ $user = User::findOrFail($server->user_id);
+ $discordUser = $user->discordUser;
+ if($discordUser && $user->servers->count() <= 1) {
+ $discordUser->addOrRemoveRole('remove', $discord_settings->role_id_on_purchase);
+ }
+ }
+ } catch (Exception $e) {
+ log::debug('Failed to update discord roles' . $e->getMessage());
+ }
+
$server->delete();
return redirect()->route('servers.index')->with('success', __('Server removed'));
} catch (Exception $e) {
- return redirect()->route('servers.index')->with('error', __('An exception has occurred while trying to remove a resource "').$e->getMessage().'"');
+ return redirect()->route('servers.index')->with('error', __('An exception has occurred while trying to remove a resource"') . $e->getMessage() . '"');
+ }
+ }
+
+ /** Cancel Server */
+ public function cancel(Server $server)
+ {
+ if ($server->user_id != Auth::user()->id) {
+ return back()->with('error', __('This is not your Server!'));
+ }
+ try {
+ $server->update([
+ 'canceled' => now(),
+ ]);
+ return redirect()->route('servers.index')->with('success', __('Server canceled'));
+ } catch (Exception $e) {
+ return redirect()->route('servers.index')->with('error', __('An exception has occurred while trying to cancel the server"') . $e->getMessage() . '"');
}
}
/** Show Server Settings */
- public function show(Server $server)
+ public function show(Server $server, ServerSettings $server_settings, GeneralSettings $general_settings)
{
if ($server->user_id != Auth::user()->id) {
- return back()->with('error', __('´This is not your Server!'));
+ return back()->with('error', __('This is not your Server!'));
}
- $serverAttributes = Pterodactyl::getServerAttributes($server->pterodactyl_id);
+ $serverAttributes = $this->pterodactyl->getServerAttributes($server->pterodactyl_id);
$serverRelationships = $serverAttributes['relationships'];
$serverLocationAttributes = $serverRelationships['location']['attributes'];
@@ -273,15 +348,15 @@ public function show(Server $server)
$server->name = $serverAttributes['name'];
$server->egg = $serverRelationships['egg']['attributes']['name'];
- $pteroNode = Pterodactyl::getNode($serverRelationships['node']['attributes']['id']);
+ $pteroNode = $this->pterodactyl->getNode($serverRelationships['node']['attributes']['id']);
$products = Product::orderBy('created_at')
- ->whereHas('nodes', function (Builder $builder) use ($serverRelationships) { //Only show products for that node
- $builder->where('id', '=', $serverRelationships['node']['attributes']['id']);
- })
- ->get();
+ ->whereHas('nodes', function (Builder $builder) use ($serverRelationships) { //Only show products for that node
+ $builder->where('id', '=', $serverRelationships['node']['attributes']['id']);
+ })
+ ->get();
- // Set the each product eggs array to just contain the eggs name
+ // Set each product eggs array to just contain the eggs name
foreach ($products as $product) {
$product->eggs = $product->eggs->pluck('name')->toArray();
if ($product->memory - $currentProduct->memory > ($pteroNode['memory'] * ($pteroNode['memory_overallocate'] + 100) / 100) - $pteroNode['allocated_resources']['memory'] || $product->disk - $currentProduct->disk > ($pteroNode['disk'] * ($pteroNode['disk_overallocate'] + 100) / 100) - $pteroNode['allocated_resources']['disk']) {
@@ -292,21 +367,26 @@ public function show(Server $server)
return view('servers.settings')->with([
'server' => $server,
'products' => $products,
+ 'server_enable_upgrade' => $server_settings->enable_upgrade,
+ 'credits_display_name' => $general_settings->credits_display_name,
+ 'location_description_enabled' => $server_settings->location_description_enabled,
]);
}
public function upgrade(Server $server, Request $request)
{
+ $this->checkPermission(self::UPGRADE_PERMISSION);
+
if ($server->user_id != Auth::user()->id) {
return redirect()->route('servers.index');
}
- if (! isset($request->product_upgrade)) {
+ if (!isset($request->product_upgrade)) {
return redirect()->route('servers.show', ['server' => $server->id])->with('error', __('this product is the only one'));
}
$user = Auth::user();
$oldProduct = Product::where('id', $server->product->id)->first();
$newProduct = Product::where('id', $request->product_upgrade)->first();
- $serverAttributes = Pterodactyl::getServerAttributes($server->pterodactyl_id);
+ $serverAttributes = $this->pterodactyl->getServerAttributes($server->pterodactyl_id);
$serverRelationships = $serverAttributes['relationships'];
// Get node resource allocation info
@@ -317,35 +397,86 @@ public function upgrade(Server $server, Request $request)
// Check if node has enough memory and disk space
$requireMemory = $newProduct->memory - $oldProduct->memory;
$requiredisk = $newProduct->disk - $oldProduct->disk;
- $checkResponse = Pterodactyl::checkNodeResources($node, $requireMemory, $requiredisk);
- if ($checkResponse == false) {
- return redirect()->route('servers.index')->with('error', __("The node '".$nodeName."' doesn't have the required memory or disk left to upgrade the server."));
+ $nodeFree = $this->pterodactyl->checkNodeResources($node, $requireMemory, $requiredisk);
+ if (!$nodeFree) {
+ return redirect()->route('servers.index')->with('error', __("The node '" . $nodeName . "' doesn't have the required memory or disk left to upgrade the server."));
}
- $priceupgrade = $newProduct->getHourlyPrice();
-
- if ($priceupgrade < $oldProduct->getHourlyPrice()) {
- $priceupgrade = 0;
- }
- if ($user->credits >= $priceupgrade && $user->credits >= $newProduct->minimum_credits) {
- $server->product_id = $request->product_upgrade;
- $server->update();
+ // calculate the amount of credits that the user overpayed for the old product when canceling the server right now
+ // billing periods are hourly, daily, weekly, monthly, quarterly, half-annually, annually
+ $billingPeriod = $oldProduct->billing_period;
+ // seconds
+ $billingPeriods = [
+ 'hourly' => 3600,
+ 'daily' => 86400,
+ 'weekly' => 604800,
+ 'monthly' => 2592000,
+ 'quarterly' => 7776000,
+ 'half-annually' => 15552000,
+ 'annually' => 31104000
+ ];
+ // Get the amount of hours the user has been using the server
+ $billingPeriodMultiplier = $billingPeriods[$billingPeriod];
+ $timeDifference = now()->diffInSeconds($server->last_billed);
+
+ // Calculate the price for the time the user has been using the server
+ $overpayedCredits = $oldProduct->price - $oldProduct->price * ($timeDifference / $billingPeriodMultiplier);
+
+
+ if ($user->credits >= $newProduct->price && $user->credits >= $newProduct->minimum_credits) {
$server->allocation = $serverAttributes['allocation'];
- $response = Pterodactyl::updateServer($server, $newProduct);
- if ($response->failed()) {
- return $this->serverCreationFailed($response, $server);
- }
- //update user balance
- $user->decrement('credits', $priceupgrade);
+ $response = $this->pterodactyl->updateServer($server, $newProduct);
+ if ($response->failed()) return redirect()->route('servers.index')->with('error', __("The system was unable to update your server product. Please try again later or contact support."));
//restart the server
- $response = Pterodactyl::powerAction($server, 'restart');
- if ($response->failed()) {
- return redirect()->route('servers.index')->with('error', $response->json()['errors'][0]['detail']);
- }
+ $response = $this->pterodactyl->powerAction($server, 'restart');
+ if ($response->failed()) return redirect()->route('servers.index')->with('error', 'Upgrade Failed! Could not restart the server: ' . $response->json()['errors'][0]['detail']);
+
+
+ // Remove the allocation property from the server object as it is not a column in the database
+ unset($server->allocation);
+ // Update the server on CtrlPanel
+ $server->update([
+ 'product_id' => $newProduct->id,
+ 'updated_at' => now(),
+ 'last_billed' => now(),
+ 'canceled' => null,
+ ]);
+
+ // Refund the user the overpayed credits
+ if ($overpayedCredits > 0) $user->increment('credits', $overpayedCredits);
+
+ // Withdraw the credits for the new product
+ $user->decrement('credits', $newProduct->price);
return redirect()->route('servers.show', ['server' => $server->id])->with('success', __('Server Successfully Upgraded'));
} else {
return redirect()->route('servers.show', ['server' => $server->id])->with('error', __('Not Enough Balance for Upgrade'));
}
}
+
+ /**
+ * @param string $location
+ * @param Product $product
+ * @return int | null Node ID
+ */
+ private function getAvailableNode(string $location, Product $product)
+ {
+ $collection = Node::query()->where('location_id', $location)->get();
+
+ // loop through nodes and check if the node has enough resources
+ foreach ($collection as $node) {
+ // Check if the node has enough memory and disk space
+ $freeNode = $this->pterodactyl->checkNodeResources($node, $product->memory, $product->disk);
+ // Remove the node from the collection if it doesn't have enough resources
+ if (!$freeNode) {
+ $collection->forget($node['id']);
+ }
+ }
+
+ if($collection->isEmpty()) {
+ return null;
+ }
+
+ return $collection->first()['id'];
+ }
}
diff --git a/app/Http/Controllers/TicketsController.php b/app/Http/Controllers/TicketsController.php
index 3b2571c02..447e0cc8d 100644
--- a/app/Http/Controllers/TicketsController.php
+++ b/app/Http/Controllers/TicketsController.php
@@ -11,30 +11,53 @@
use App\Notifications\Ticket\Admin\AdminCreateNotification;
use App\Notifications\Ticket\Admin\AdminReplyNotification;
use App\Notifications\Ticket\User\CreateNotification;
+use App\Settings\GeneralSettings;
+use App\Settings\LocaleSettings;
+use App\Settings\PterodactylSettings;
+use App\Settings\TicketSettings;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Notification;
+use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Str;
+
class TicketsController extends Controller
{
- public function index()
+ const READ_PERMISSION = 'user.ticket.read';
+ const WRITE_PERMISSION = 'user.ticket.write';
+ public function index(LocaleSettings $locale_settings, TicketSettings $ticketSettings)
{
- $tickets = Ticket::where('user_id', Auth::user()->id)->paginate(10);
- $ticketcategories = TicketCategory::all();
-
- return view('ticket.index', compact('tickets', 'ticketcategories'));
+ return view('ticket.index', [
+ 'ticketsettings' => $ticketSettings,
+ 'tickets' => Ticket::where('user_id', Auth::user()->id)->paginate(10),
+ 'ticketcategories' => TicketCategory::all(),
+ 'locale_datatables' => $locale_settings->datatables
+ ]);
}
- public function store(Request $request)
+
+ public function store(Request $request, GeneralSettings $generalSettings)
{
- $this->validate($request, [
- 'title' => 'required',
- 'ticketcategory' => 'required',
- 'priority' => 'required',
- 'message' => 'required',]
- );
- $ticket = new Ticket([
+ if (RateLimiter::tooManyAttempts('ticket-send:'.Auth::user()->id, $perMinute = 1)) {
+ return redirect()->back()->with('error', __('Please wait before creating a new Ticket'));
+ }
+
+ $validateData = [
+ 'title' => 'required|string|max:255',
+ 'ticketcategory' => 'required|numeric',
+ 'priority' => ['required', 'in:Low,Medium,High'],
+ 'message' => 'required|string|min:10|max:2000',
+ ];
+
+ if ($generalSettings->recaptcha_enabled) {
+ $validateData['g-recaptcha-response'] = ['required', 'recaptcha'];
+ }
+
+ $this->validate($request, $validateData);
+
+ $ticket = new Ticket(
+ [
'title' => $request->input('title'),
'user_id' => Auth::user()->id,
'ticket_id' => strtoupper(Str::random(8)),
@@ -42,29 +65,27 @@ public function store(Request $request)
'priority' => $request->input('priority'),
'message' => $request->input('message'),
'status' => 'Open',
- 'server' => $request->input('server'),]
+ 'server' => $request->input('server'),
+ ]
);
$ticket->save();
$user = Auth::user();
- if (config('SETTINGS::TICKET:NOTIFY') == "all") {
- $admin = User::where('role', 'admin')->orWhere('role', 'mod')->get();
- }
- if (config('SETTINGS::TICKET:NOTIFY') == "admin") {
- $admin = User::where('role', 'admin')->get();
- }
- if (config('SETTINGS::TICKET:NOTIFY') == "moderator") {
- $admin = User::where('role', 'mod')->get();
+
+ $staffNotify = User::permission('admin.tickets.get_notification')->get();
+ foreach($staffNotify as $staff){
+ Notification::send($staff, new AdminCreateNotification($ticket, $user));
}
+
+
$user->notify(new CreateNotification($ticket));
- if (config('SETTINGS::TICKET:NOTIFY') != "none") {
- Notification::send($admin, new AdminCreateNotification($ticket, $user));
- }
+ RateLimiter::hit('ticket-send:'.Auth::user()->id);
return redirect()->route('ticket.index')->with('success', __('A ticket has been opened, ID: #') . $ticket->ticket_id);
}
- public function show($ticket_id)
+ public function show($ticket_id, PterodactylSettings $ptero_settings)
{
+ $this->checkPermission(self::READ_PERMISSION);
try {
$ticket = Ticket::where('ticket_id', $ticket_id)->firstOrFail();
} catch (Exception $e) {
@@ -73,12 +94,16 @@ public function show($ticket_id)
$ticketcomments = $ticket->ticketcomments;
$ticketcategory = $ticket->ticketcategory;
$server = Server::where('id', $ticket->server)->first();
+ $pterodactyl_url = $ptero_settings->panel_url;
- return view('ticket.show', compact('ticket', 'ticketcategory', 'ticketcomments', 'server'));
+ return view('ticket.show', compact('ticket', 'ticketcategory', 'ticketcomments', 'server', 'pterodactyl_url'));
}
public function reply(Request $request)
{
+ if (RateLimiter::tooManyAttempts('ticket-reply:'.Auth::user()->id, $perMinute = 1)) {
+ return redirect()->back()->with('error', __('Please wait before answering a Ticket'));
+ }
//check in blacklist
$check = TicketBlacklist::where('user_id', Auth::user()->id)->first();
if ($check && $check->status == 'True') {
@@ -91,6 +116,7 @@ public function reply(Request $request)
return redirect()->back()->with('warning', __('Ticket not found on the server. It potentially got deleted earlier'));
}
$ticket->status = 'Client Reply';
+ $ticket->updated_at = now();
$ticket->update();
$ticketcomment = TicketComment::create([
'ticket_id' => $request->input('ticket_id'),
@@ -99,15 +125,19 @@ public function reply(Request $request)
'message' => $request->input('message'),
]);
$user = Auth::user();
- $admin = User::where('role', 'admin')->orWhere('role', 'mod')->get();
$newmessage = $request->input('ticketcomment');
- Notification::send($admin, new AdminReplyNotification($ticket, $user, $newmessage));
+ $staffNotify = User::permission('admin.tickets.get_notification')->get();
+ foreach($staffNotify as $staff){
+ Notification::send($staff, new AdminReplyNotification($ticket, $user, $newmessage));
+ }
+ RateLimiter::hit('ticket-reply:'.Auth::user()->id);
return redirect()->back()->with('success', __('Your comment has been submitted'));
}
public function create()
{
+ $this->checkPermission(self::WRITE_PERMISSION);
//check in blacklist
$check = TicketBlacklist::where('user_id', Auth::user()->id)->first();
if ($check && $check->status == 'True') {
@@ -170,8 +200,10 @@ public function dataTable()
return __($tickets->priority);
})
->editColumn('updated_at', function (Ticket $tickets) {
- return ['display' => $tickets->updated_at ? $tickets->updated_at->diffForHumans() : '',
- 'raw' => $tickets->updated_at ? strtotime($tickets->updated_at) : ''];
+ return [
+ 'display' => $tickets->updated_at ? $tickets->updated_at->diffForHumans() : '',
+ 'raw' => $tickets->updated_at ? strtotime($tickets->updated_at) : ''
+ ];
})
->addColumn('actions', function (Ticket $tickets) {
$statusButtonColor = ($tickets->status == "Closed") ? 'btn-success' : 'btn-warning';
diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php
index 3e372e091..c334a067b 100644
--- a/app/Http/Kernel.php
+++ b/app/Http/Kernel.php
@@ -4,9 +4,7 @@
use App\Http\Middleware\ApiAuthToken;
use App\Http\Middleware\CheckSuspended;
-use App\Http\Middleware\GlobalNames;
-use App\Http\Middleware\isAdmin;
-use App\Http\Middleware\isMod;
+use App\Http\Middleware\InstallerLock;
use App\Http\Middleware\LastSeen;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
@@ -27,6 +25,7 @@ class Kernel extends HttpKernel
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
+
];
/**
@@ -36,6 +35,7 @@ class Kernel extends HttpKernel
*/
protected $middlewareGroups = [
'web' => [
+ InstallerLock::class,
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
@@ -43,14 +43,12 @@ class Kernel extends HttpKernel
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
LastSeen::class,
- GlobalNames::class,
\App\Http\Middleware\SetLocale::class,
],
'api' => [
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
- GlobalNames::class,
],
];
@@ -72,9 +70,11 @@ class Kernel extends HttpKernel
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
- 'admin' => isAdmin::class,
- 'moderator' => isMod::class,
'api.token' => ApiAuthToken::class,
'checkSuspended' => CheckSuspended::class,
+ 'role' => \Spatie\Permission\Middleware\RoleMiddleware::class,
+ 'permission' => \Spatie\Permission\Middleware\PermissionMiddleware::class,
+ 'role_or_permission' => \Spatie\Permission\Middleware\RoleOrPermissionMiddleware::class,
];
+
}
diff --git a/app/Http/Middleware/GlobalNames.php b/app/Http/Middleware/GlobalNames.php
deleted file mode 100644
index 4874a2f61..000000000
--- a/app/Http/Middleware/GlobalNames.php
+++ /dev/null
@@ -1,27 +0,0 @@
-role == 'admin') {
- return $next($request);
- }
-
- return redirect(RouteServiceProvider::HOME);
- }
-}
diff --git a/app/Http/Middleware/isMod.php b/app/Http/Middleware/isMod.php
deleted file mode 100644
index c9120719c..000000000
--- a/app/Http/Middleware/isMod.php
+++ /dev/null
@@ -1,27 +0,0 @@
-role == 'moderator' || Auth::user() && Auth::user()->role == 'admin') {
- return $next($request);
- }
-
- return redirect(RouteServiceProvider::HOME);
- }
-}
diff --git a/app/Listeners/CouponUsed.php b/app/Listeners/CouponUsed.php
new file mode 100644
index 000000000..c9abb42bc
--- /dev/null
+++ b/app/Listeners/CouponUsed.php
@@ -0,0 +1,61 @@
+delete_coupon_on_expires = $couponSettings->delete_coupon_on_expires;
+ $this->delete_coupon_on_uses_reached = $couponSettings->delete_coupon_on_uses_reached;
+ }
+
+ /**
+ * Handle the event.
+ *
+ * @param \App\Events\CouponUsedEvent $event
+ * @return void
+ */
+ public function handle(CouponUsedEvent $event)
+ {
+ // Automatically increments the coupon usage.
+ $this->incrementUses($event);
+
+ if ($this->delete_coupon_on_expires) {
+ if (!is_null($event->coupon->expired_at)) {
+ if ($event->coupon->expires_at <= Carbon::now()->timestamp) {
+ $event->coupon->delete();
+ }
+ }
+ }
+
+ if ($this->delete_coupon_on_uses_reached) {
+ if ($event->coupon->uses >= $event->coupon->max_uses) {
+ $event->coupon->delete();
+ }
+ }
+ }
+
+ /**
+ * Increments the use of a coupon.
+ *
+ * @param \App\Events\CouponUsedEvent $event
+ */
+ private function incrementUses(CouponUsedEvent $event)
+ {
+ $event->coupon->increment('uses');
+ $event->coupon->save();
+ }
+}
diff --git a/app/Listeners/UserPayment.php b/app/Listeners/UserPayment.php
index be9470874..cb75f589f 100644
--- a/app/Listeners/UserPayment.php
+++ b/app/Listeners/UserPayment.php
@@ -2,15 +2,52 @@
namespace App\Listeners;
+use App\Enums\PaymentStatus;
use App\Events\PaymentEvent;
use App\Models\User;
+use App\Settings\DiscordSettings;
use Illuminate\Support\Facades\DB;
use App\Models\PartnerDiscount;
-use Illuminate\Contracts\Queue\ShouldQueue;
-use Illuminate\Queue\InteractsWithQueue;
+use App\Settings\GeneralSettings;
+use App\Settings\ReferralSettings;
+use App\Settings\UserSettings;
class UserPayment
{
+ private $server_limit_after_irl_purchase;
+
+ private $referral_mode;
+
+ private $referral_percentage;
+
+ private $referral_always_give_commission;
+
+ private $credits_display_name;
+
+ private $role_id_on_purchase;
+
+ private $role_on_purchase;
+
+ private $bot_token;
+
+ /**
+ * Create the event listener.
+ *
+ * @return void
+ */
+ public function __construct(UserSettings $user_settings, ReferralSettings $referral_settings, GeneralSettings $general_settings, DiscordSettings $discord_settings)
+ {
+ $this->server_limit_after_irl_purchase = $user_settings->server_limit_after_irl_purchase;
+ $this->referral_mode = $referral_settings->mode;
+ $this->referral_percentage = $referral_settings->percentage;
+ $this->referral_always_give_commission = $referral_settings->always_give_commission;
+ $this->credits_display_name = $general_settings->credits_display_name;
+ $this->role_id_on_purchase = $discord_settings->role_id_on_purchase;
+ $this->role_on_purchase = $discord_settings->role_on_purchase;
+ $this->bot_token = $discord_settings->bot_token;
+
+ }
+
/**
* Handle the event.
*
@@ -23,15 +60,16 @@ public function handle(PaymentEvent $event)
$shopProduct = $event->shopProduct;
// only update user if payment is paid
- if ($event->payment->status != "paid") {
+ if ($event->payment->status != PaymentStatus::PAID) {
return;
}
//update server limit
- if (config('SETTINGS::USER:SERVER_LIMIT_AFTER_IRL_PURCHASE') !== 0 && $user->server_limit < config('SETTINGS::USER:SERVER_LIMIT_AFTER_IRL_PURCHASE')) {
- $user->update(['server_limit' => config('SETTINGS::USER:SERVER_LIMIT_AFTER_IRL_PURCHASE')]);
+ if ($this->server_limit_after_irl_purchase !== 0 && $user->server_limit < $this->server_limit_after_irl_purchase) {
+ $user->update(['server_limit' => $this->server_limit_after_irl_purchase]);
}
+
//update User with bought item
if ($shopProduct->type == "Credits") {
$user->increment('credits', $shopProduct->quantity);
@@ -40,39 +78,51 @@ public function handle(PaymentEvent $event)
}
//give referral commission always
- if ((config("SETTINGS::REFERRAL:MODE") == "commission" || config("SETTINGS::REFERRAL:MODE") == "both") && $shopProduct->type == "Credits" && config("SETTINGS::REFERRAL::ALWAYS_GIVE_COMMISSION") == "true") {
+ if (($this->referral_mode === "commission" || $this->referral_mode === "both") && $shopProduct->type == "Credits" && $this->referral_always_give_commission) {
if ($ref_user = DB::table("user_referrals")->where('registered_user_id', '=', $user->id)->first()) {
$ref_user = User::findOrFail($ref_user->referral_id);
- $increment = number_format($shopProduct->quantity * (PartnerDiscount::getCommission($ref_user->id)) / 100, 0, "", "");
+ $increment = number_format($shopProduct->quantity * (PartnerDiscount::getCommission($ref_user->id, $this->referral_percentage)) / 100, 0, "", "");
$ref_user->increment('credits', $increment);
//LOGS REFERRALS IN THE ACTIVITY LOG
activity()
->performedOn($user)
->causedBy($ref_user)
- ->log('gained ' . $increment . ' ' . config("SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME") . ' for commission-referral of ' . $user->name . ' (ID:' . $user->id . ')');
+ ->log('gained ' . $increment . ' ' . $this->credits_display_name . ' for commission-referral of ' . $user->name . ' (ID:' . $user->id . ')');
}
}
//update role give Referral-reward
- if ($user->role == 'member') {
- $user->update(['role' => 'client']);
+ if ($user->hasRole(4)) {
+ $user->syncRoles(3);
//give referral commission only on first purchase
- if ((config("SETTINGS::REFERRAL:MODE") == "commission" || config("SETTINGS::REFERRAL:MODE") == "both") && $shopProduct->type == "Credits" && config("SETTINGS::REFERRAL::ALWAYS_GIVE_COMMISSION") == "false") {
+ if (($this->referral_mode === "commission" || $this->referral_mode === "both") && $shopProduct->type == "Credits" && !$this->referral_always_give_commission) {
if ($ref_user = DB::table("user_referrals")->where('registered_user_id', '=', $user->id)->first()) {
$ref_user = User::findOrFail($ref_user->referral_id);
- $increment = number_format($shopProduct->quantity * (PartnerDiscount::getCommission($ref_user->id)) / 100, 0, "", "");
+ $increment = number_format($shopProduct->quantity * (PartnerDiscount::getCommission($ref_user->id, $this->referral_percentage)) / 100, 0, "", "");
$ref_user->increment('credits', $increment);
//LOGS REFERRALS IN THE ACTIVITY LOG
activity()
->performedOn($user)
->causedBy($ref_user)
- ->log('gained ' . $increment . ' ' . config("SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME") . ' for commission-referral of ' . $user->name . ' (ID:' . $user->id . ')');
+ ->log('gained ' . $increment . ' ' . $this->credits_display_name . ' for commission-referral of ' . $user->name . ' (ID:' . $user->id . ')');
}
}
}
+ //set discord role
+ if(!empty($this->bot_token) && $this->role_on_purchase && !empty($this->role_id_on_purchase)) {
+ $discordUser = $user->discordUser;
+ $discordUser->addOrRemoveRole('add', $this->role_id_on_purchase);
+
+ activity()
+ ->performedOn($user)
+ ->causedBy($user)
+ ->log('was added to role ' . $this->role_id_on_purchase . " on Discord");
+ }
+
+
// LOGS PAYMENT IN THE ACTIVITY LOG
activity()
->performedOn($user)
diff --git a/app/Listeners/Verified.php b/app/Listeners/Verified.php
index d0afa9b94..c6e759127 100644
--- a/app/Listeners/Verified.php
+++ b/app/Listeners/Verified.php
@@ -2,16 +2,22 @@
namespace App\Listeners;
+use App\Settings\UserSettings;
+
class Verified
{
+ private $server_limit_after_verify_email;
+ private $credits_reward_after_verify_email;
+
/**
* Create the event listener.
*
* @return void
*/
- public function __construct()
+ public function __construct(UserSettings $user_settings)
{
- //
+ $this->server_limit_after_verify_email = $user_settings->server_limit_after_verify_email;
+ $this->credits_reward_after_verify_email = $user_settings->credits_reward_after_verify_email;
}
/**
@@ -23,8 +29,8 @@ public function __construct()
public function handle($event)
{
if (!$event->user->email_verified_reward) {
- $event->user->increment('server_limit', config('SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_EMAIL'));
- $event->user->increment('credits', config('SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_EMAIL'));
+ $event->user->increment('server_limit', $this->server_limit_after_verify_email);
+ $event->user->increment('credits', $this->credits_reward_after_verify_email);
$event->user->update(['email_verified_reward' => true]);
}
}
diff --git a/app/Models/Coupon.php b/app/Models/Coupon.php
new file mode 100644
index 000000000..8cd02621c
--- /dev/null
+++ b/app/Models/Coupon.php
@@ -0,0 +1,119 @@
+logOnlyDirty()
+ ->logOnly(['*'])
+ ->dontSubmitEmptyLogs();
+ }
+
+ /**
+ * @var string[]
+ */
+ protected $fillable = [
+ 'code',
+ 'type',
+ 'value',
+ 'uses',
+ 'max_uses',
+ 'expires_at'
+ ];
+
+ /**
+ * @var string[]
+ */
+ protected $casts = [
+ 'value' => 'float',
+ 'uses' => 'integer',
+ 'max_uses' => 'integer',
+ 'expires_at' => 'timestamp'
+ ];
+
+ /**
+ * Returns the date format used by the coupons.
+ *
+ * @return string
+ */
+ public static function formatDate(): string
+ {
+ return 'Y-MM-DD HH:mm:ss';
+ }
+
+ /**
+ * Returns the current state of the coupon.
+ *
+ * @return string
+ */
+ public function getStatus()
+ {
+ if ($this->uses >= $this->max_uses) {
+ return 'USES_LIMIT_REACHED';
+ }
+
+ if (!is_null($this->expires_at)) {
+ if ($this->expires_at <= Carbon::now(config('app.timezone'))->timestamp) {
+ return __('EXPIRED');
+ }
+ }
+
+ return __('VALID');
+ }
+
+ /**
+ * Check if a user has already exceeded the uses of a coupon.
+ *
+ * @param User $user The request being made.
+ *
+ * @return bool
+ */
+ public function isMaxUsesReached($user): bool
+ {
+ $coupon_settings = new CouponSettings;
+ $coupon_uses = $user->coupons()->where('id', $this->id)->count();
+
+ return $coupon_uses >= $coupon_settings->max_uses_per_user;
+ }
+
+ /**
+ * Generate a specified quantity of coupon codes.
+ *
+ * @param int $amount Amount of coupons to be generated.
+ *
+ * @return array
+ */
+ public static function generateRandomCoupon(int $amount = 10): array
+ {
+ $coupons = [];
+
+ for ($i = 0; $i < $amount; $i++) {
+ $random_coupon = strtoupper(bin2hex(random_bytes(3)));
+
+ $coupons[] = $random_coupon;
+ }
+
+ return $coupons;
+ }
+
+ /**
+ * @return BelongsToMany
+ */
+ public function users()
+ {
+ return $this->belongsToMany(User::class, 'user_coupons');
+ }
+}
diff --git a/app/Models/DiscordUser.php b/app/Models/DiscordUser.php
index 03051ea32..fd2940c1d 100644
--- a/app/Models/DiscordUser.php
+++ b/app/Models/DiscordUser.php
@@ -2,9 +2,11 @@
namespace App\Models;
+use App\Settings\DiscordSettings;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
+use Illuminate\Support\Facades\Http;
class DiscordUser extends Model
{
@@ -42,4 +44,39 @@ public function getAvatar()
{
return 'https://cdn.discordapp.com/avatars/'.$this->id.'/'.$this->avatar.'.png';
}
+
+
+ /**
+ * Add or remove role on discord server
+ * @param string $action The action to perform (add or remove)
+ * @param string $role_id The Role ID to add or remove
+ * @return mixed
+ */
+ public function addOrRemoveRole(string $action, string $role_id): mixed
+ {
+ $discordSettings = app(DiscordSettings::class);
+ return match ($action) {
+ 'add' => Http::withHeaders(
+ [
+ 'Authorization' => 'Bot ' . $discordSettings->bot_token,
+ 'Content-Type' => 'application/json',
+ 'X-Audit-Log-Reason' => 'Role added by panel'
+ ]
+ )->put(
+ "https://discord.com/api/guilds/{$discordSettings->guild_id}/members/{$this->id}/roles/{$discordSettings->role_id}",
+ ['access_token' => $discordSettings->bot_token]
+ ),
+ 'remove' => Http::withHeaders(
+ [
+ 'Authorization' => 'Bot ' . $discordSettings->bot_token,
+ 'Content-Type' => 'application/json',
+ 'X-Audit-Log-Reason' => 'Role removed by panel'
+ ]
+ )->remove(
+ "https://discord.com/api/guilds/{$discordSettings->guild_id}/members/{$this->id}/roles/{$discordSettings->role_id}",
+ ['access_token' => $discordSettings->bot_token]
+ ),
+ default => null,
+ };
+ }
}
diff --git a/app/Models/Location.php b/app/Models/Location.php
index a020c73f5..1447c6b20 100644
--- a/app/Models/Location.php
+++ b/app/Models/Location.php
@@ -52,7 +52,7 @@ public static function syncLocations()
],
[
'name' => $location['name'],
- 'description' => $location['name'],
+ 'description' => $location['description'],
]
);
}
diff --git a/app/Models/Permission.php b/app/Models/Permission.php
new file mode 100644
index 000000000..38ed7d427
--- /dev/null
+++ b/app/Models/Permission.php
@@ -0,0 +1,22 @@
+
+ */
+ protected $fillable = [
+ 'name',
+ 'guard_name',
+ 'readable_name'
+ ];
+}
diff --git a/app/Models/Product.php b/app/Models/Product.php
index a31ebf50a..195eccaa0 100644
--- a/app/Models/Product.php
+++ b/app/Models/Product.php
@@ -43,12 +43,46 @@ public static function boot()
public function getHourlyPrice()
{
- return ($this->price / 30) / 24;
+ // calculate the hourly price with the billing period
+ switch($this->billing_period) {
+ case 'daily':
+ return $this->price / 24;
+ case 'weekly':
+ return $this->price / 24 / 7;
+ case 'monthly':
+ return $this->price / 24 / 30;
+ case 'quarterly':
+ return $this->price / 24 / 30 / 3;
+ case 'half-annually':
+ return $this->price / 24 / 30 / 6;
+ case 'annually':
+ return $this->price / 24 / 365;
+ default:
+ return $this->price;
+ }
}
- public function getDailyPrice()
+ public function getMonthlyPrice()
{
- return $this->price / 30;
+ // calculate the hourly price with the billing period
+ switch($this->billing_period) {
+ case 'hourly':
+ return $this->price * 24 * 30;
+ case 'daily':
+ return $this->price * 30;
+ case 'weekly':
+ return $this->price * 4;
+ case 'monthly':
+ return $this->price;
+ case 'quarterly':
+ return $this->price / 3;
+ case 'half-annually':
+ return $this->price / 6;
+ case 'annually':
+ return $this->price / 12;
+ default:
+ return $this->price;
+ }
}
public function getWeeklyPrice()
diff --git a/app/Models/Role.php b/app/Models/Role.php
new file mode 100644
index 000000000..a3b7e6e10
--- /dev/null
+++ b/app/Models/Role.php
@@ -0,0 +1,23 @@
+
+ */
+ protected $fillable = [
+ 'name',
+ 'guard_name',
+ 'power',
+ 'color'
+ ];
+}
diff --git a/app/Models/Server.php b/app/Models/Server.php
index 94365dd47..bd70c5367 100644
--- a/app/Models/Server.php
+++ b/app/Models/Server.php
@@ -2,7 +2,9 @@
namespace App\Models;
-use App\Classes\Pterodactyl;
+use Carbon\Carbon;
+use App\Classes\PterodactylClient;
+use App\Settings\PterodactylSettings;
use Exception;
use GuzzleHttp\Promise\PromiseInterface;
use Hidehalo\Nanoid\Client;
@@ -21,13 +23,17 @@ class Server extends Model
{
use HasFactory;
use LogsActivity;
+
+ private PterodactylClient $pterodactyl;
+
public function getActivitylogOptions(): LogOptions
{
return LogOptions::defaults()
- -> logOnlyDirty()
- -> logOnly(['*'])
- -> dontSubmitEmptyLogs();
+ ->logOnlyDirty()
+ ->logOnly(['*'])
+ ->dontSubmitEmptyLogs();
}
+
/**
* @var bool
*/
@@ -47,12 +53,14 @@ public function getActivitylogOptions(): LogOptions
* @var string[]
*/
protected $fillable = [
- 'name',
- 'description',
- 'suspended',
- 'identifier',
- 'product_id',
- 'pterodactyl_id',
+ "name",
+ "description",
+ "suspended",
+ "identifier",
+ "product_id",
+ "pterodactyl_id",
+ "last_billed",
+ "canceled"
];
/**
@@ -62,6 +70,14 @@ public function getActivitylogOptions(): LogOptions
'suspended' => 'datetime',
];
+ public function __construct()
+ {
+ parent::__construct();
+
+ $ptero_settings = new PterodactylSettings();
+ $this->pterodactyl = new PterodactylClient($ptero_settings);
+ }
+
public static function boot()
{
parent::boot();
@@ -73,8 +89,8 @@ public static function boot()
});
static::deleting(function (Server $server) {
- $response = Pterodactyl::client()->delete("/application/servers/{$server->pterodactyl_id}");
- if ($response->failed() && ! is_null($server->pterodactyl_id)) {
+ $response = $server->pterodactyl->application->delete("/application/servers/{$server->pterodactyl_id}");
+ if ($response->failed() && !is_null($server->pterodactyl_id)) {
//only return error when it's not a 404 error
if ($response['errors'][0]['status'] != '404') {
throw new Exception($response['errors'][0]['code']);
@@ -88,7 +104,7 @@ public static function boot()
*/
public function isSuspended()
{
- return ! is_null($this->suspended);
+ return !is_null($this->suspended);
}
/**
@@ -96,7 +112,7 @@ public function isSuspended()
*/
public function getPterodactylServer()
{
- return Pterodactyl::client()->get("/application/servers/{$this->pterodactyl_id}");
+ return $this->pterodactyl->application->get("/application/servers/{$this->pterodactyl_id}");
}
/**
@@ -104,7 +120,7 @@ public function getPterodactylServer()
*/
public function suspend()
{
- $response = Pterodactyl::suspendServer($this);
+ $response = $this->pterodactyl->suspendServer($this);
if ($response->successful()) {
$this->update([
@@ -120,14 +136,16 @@ public function suspend()
*/
public function unSuspend()
{
- $response = Pterodactyl::unSuspendServer($this);
+ $response = $this->pterodactyl->unSuspendServer($this);
if ($response->successful()) {
$this->update([
'suspended' => null,
+ 'last_billed' => Carbon::now()->toDateTimeString(),
]);
}
+
return $this;
}
diff --git a/app/Models/ShopProduct.php b/app/Models/ShopProduct.php
index cfe3f7838..278183dc8 100644
--- a/app/Models/ShopProduct.php
+++ b/app/Models/ShopProduct.php
@@ -2,6 +2,7 @@
namespace App\Models;
+use App\Settings\GeneralSettings;
use Hidehalo\Nanoid\Client;
use Illuminate\Database\Eloquent\Model;
use NumberFormatter;
@@ -36,6 +37,13 @@ public function getActivitylogOptions(): LogOptions
'disabled',
];
+ /**
+ * @var string[]
+ */
+ protected $casts = [
+ 'price' => 'float'
+ ];
+
public static function boot()
{
parent::boot();
@@ -66,14 +74,17 @@ public function formatToCurrency($value, $locale = 'en_US')
*/
public function getTaxPercent()
{
- $tax = config('SETTINGS::PAYMENTS:SALES_TAX');
+ $generalSettings = new GeneralSettings();
+ $tax = intval($generalSettings->sales_tax);
return $tax < 0 ? 0 : $tax;
}
public function getPriceAfterDiscount()
{
- return number_format($this->price - ($this->price * PartnerDiscount::getDiscount() / 100), 2);
+ $discountRate = PartnerDiscount::getDiscount() / 100;
+ $discountedPrice = $this->price * (1 - $discountRate);
+ return round($discountedPrice, 2);
}
/**
@@ -83,7 +94,8 @@ public function getPriceAfterDiscount()
*/
public function getTaxValue()
{
- return number_format($this->getPriceAfterDiscount() * $this->getTaxPercent() / 100, 2);
+ $taxValue = $this->getPriceAfterDiscount() * $this->getTaxPercent() / 100;
+ return round($taxValue, 2);
}
/**
@@ -93,6 +105,7 @@ public function getTaxValue()
*/
public function getTotalPrice()
{
- return number_format($this->getPriceAfterDiscount() + $this->getTaxValue(), 2);
+ $total = $this->getPriceAfterDiscount() + $this->getTaxValue();
+ return round($total, 2);
}
}
diff --git a/app/Models/User.php b/app/Models/User.php
index c20c50baa..350e73bd0 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -2,9 +2,10 @@
namespace App\Models;
-use App\Classes\Pterodactyl;
use App\Notifications\Auth\QueuedVerifyEmail;
use App\Notifications\WelcomeMessage;
+use App\Classes\PterodactylClient;
+use App\Settings\PterodactylSettings;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
@@ -12,16 +13,22 @@
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Log;
+use Illuminate\Support\Facades\RateLimiter;
use Spatie\Activitylog\LogOptions;
use Spatie\Activitylog\Traits\CausesActivity;
use Spatie\Activitylog\Traits\LogsActivity;
+use Spatie\Permission\Traits\HasRoles;
/**
* Class User
*/
class User extends Authenticatable implements MustVerifyEmail
{
- use HasFactory, Notifiable, LogsActivity, CausesActivity;
+ use HasFactory, Notifiable, LogsActivity, CausesActivity, HasRoles;
+
+ private PterodactylClient $pterodactyl;
/**
* @var string[]
@@ -61,7 +68,7 @@ class User extends Authenticatable implements MustVerifyEmail
'avatar',
'suspended',
'referral_code',
- 'email_verified_reward'
+ 'email_verified_reward',
];
/**
@@ -87,6 +94,14 @@ class User extends Authenticatable implements MustVerifyEmail
'email_verified_reward' => 'boolean'
];
+ public function __construct()
+ {
+ parent::__construct();
+
+ $ptero_settings = new PterodactylSettings();
+ $this->pterodactyl = new PterodactylClient($ptero_settings);
+ }
+
public static function boot()
{
parent::boot();
@@ -113,7 +128,7 @@ public static function boot()
$user->discordUser()->delete();
- Pterodactyl::client()->delete("/application/users/{$user->pterodactyl_id}");
+ $user->pterodactyl->application->delete("/application/users/{$user->pterodactyl_id}");
});
}
@@ -157,6 +172,14 @@ public function vouchers()
return $this->belongsToMany(Voucher::class);
}
+ /**
+ * @return BelongsToMany
+ */
+ public function coupons()
+ {
+ return $this->belongsToMany(Coupon::class, 'user_coupons');
+ }
+
/**
* @return HasOne
*/
@@ -167,7 +190,24 @@ public function discordUser()
public function sendEmailVerificationNotification()
{
- $this->notify(new QueuedVerifyEmail);
+ try {
+ // Rate limit the email verification notification to 5 attempt per 30 minutes
+ $executed = RateLimiter::attempt(
+ key: 'verify-mail' . $this->id,
+ maxAttempts: 5,
+ callback: function () {
+ $this->notify(new QueuedVerifyEmail);
+ },
+ decaySeconds: 1800
+ );
+
+ if (!$executed) {
+ return redirect()->back()->with('error', 'Too many requests. Try again in ' . RateLimiter::availableIn('verify-mail:' . $this->id) . ' seconds.');
+ }
+ }catch (\Exception $exception){
+ Log::error($exception->getMessage());
+ return redirect()->back()->with('error', __("Something went wrong. Please try again later!"));
+ }
}
/**
@@ -186,9 +226,6 @@ public function isSuspended()
return $this->suspended;
}
- /**
- * @throws Exception
- */
public function suspend()
{
foreach ($this->servers as $server) {
@@ -202,9 +239,6 @@ public function suspend()
return $this;
}
- /**
- * @throws Exception
- */
public function unSuspend()
{
foreach ($this->getServersWithProduct() as $server) {
@@ -220,45 +254,34 @@ public function unSuspend()
return $this;
}
- private function getServersWithProduct()
- {
- return $this->servers()
- ->with('product')
- ->get();
- }
/**
* @return string
*/
public function getAvatar()
{
- //TODO loading the images to confirm they exist is causing to much load time. alternative has to be found :) maybe onerror tag on the
- // if ($this->discordUser()->exists()) {
- // if(@getimagesize($this->discordUser->getAvatar())) {
- // $avatar = $this->discordUser->getAvatar();
- // } else {
- // $avatar = "https://www.gravatar.com/avatar/" . md5(strtolower(trim($this->email)));
- // }
- // } else {
- // $avatar = "https://www.gravatar.com/avatar/" . md5(strtolower(trim($this->email)));
- // }
-
return 'https://www.gravatar.com/avatar/' . md5(strtolower(trim($this->email)));
}
- /**
- * @return string
- */
public function creditUsage()
{
$usage = 0;
foreach ($this->getServersWithProduct() as $server) {
- $usage += $server->product->price;
+ $usage += $server->product->getHourlyPrice() * 24 * 30;
}
return number_format($usage, 2, '.', '');
}
+ private function getServersWithProduct()
+ {
+ return $this->servers()
+ ->whereNull('suspended')
+ ->whereNull('canceled')
+ ->with('product')
+ ->get();
+ }
+
/**
* @return array|string|string[]
*/
@@ -279,7 +302,7 @@ public function getVerifiedStatus()
public function verifyEmail()
{
$this->forceFill([
- 'email_verified_at' => now(),
+ 'email_verified_at' => now()
])->save();
}
@@ -290,6 +313,17 @@ public function reVerifyEmail()
])->save();
}
+ public function referredBy()
+ {
+ $referee = DB::table('user_referrals')->where("registered_user_id", $this->id)->first();
+
+ if ($referee) {
+ $referee = User::where("id", $referee->referral_id)->firstOrFail();
+ return $referee;
+ }
+ return Null;
+ }
+
public function getActivitylogOptions(): LogOptions
{
return LogOptions::defaults()
diff --git a/app/Notifications/ReferralNotification.php b/app/Notifications/ReferralNotification.php
index dec1ea0e7..f8acbcf52 100644
--- a/app/Notifications/ReferralNotification.php
+++ b/app/Notifications/ReferralNotification.php
@@ -3,6 +3,8 @@
namespace App\Notifications;
use App\Models\User;
+use App\Settings\GeneralSettings;
+use App\Settings\ReferralSettings;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
@@ -15,6 +17,12 @@ class ReferralNotification extends Notification
*/
private $user;
+ private $ref_user;
+
+ private $reward;
+
+ private $credits_display_name;
+
/**
* Create a new notification instance.
*
@@ -22,6 +30,11 @@ class ReferralNotification extends Notification
*/
public function __construct(int $user, int $ref_user)
{
+ $general_settings= new GeneralSettings();
+ $referral_settings = new ReferralSettings();
+
+ $this->credits_display_name = $general_settings->credits_display_name;
+ $this->reward = $referral_settings->reward;
$this->user = User::findOrFail($user);
$this->ref_user = User::findOrFail($ref_user);
}
@@ -48,8 +61,8 @@ public function toArray($notifiable)
return [
'title' => __('Someone registered using your Code!'),
'content' => '
-
Example: en-gb, fr_fr, de_de
More Information: https://datatables.net/plug-ins/i18n/',
+ ],
+ 'default' => [
+ 'label' => 'Default Locale',
+ 'type' => 'select',
+ 'description' => 'The default locale to use.',
+ 'options' => config('app.available_locales'),
+ 'identifier' => 'display'
+ ],
+ 'dynamic' => [
+ 'label' => 'Dynamic Locale',
+ 'type' => 'boolean',
+ 'description' => 'Whether to choose the language automatically based on the Geolocation of the client.',
+ ],
+ ];
+ }
+}
diff --git a/app/Settings/MailSettings.php b/app/Settings/MailSettings.php
new file mode 100644
index 000000000..75bc106ff
--- /dev/null
+++ b/app/Settings/MailSettings.php
@@ -0,0 +1,119 @@
+set('mail.mailers.smtp.host', $this->mail_host);
+ config()->set('mail.mailers.smtp.port', $this->mail_port);
+ config()->set('mail.mailers.smtp.encryption', $this->mail_encryption);
+ config()->set('mail.mailers.smtp.username', $this->mail_username);
+ config()->set('mail.mailers.smtp.password', $this->mail_password);
+ config()->set('mail.from.address', $this->mail_from_address);
+ config()->set('mail.from.name', $this->mail_from_name);
+ } catch (\Exception) {
+ }
+ }
+
+ /**
+ * Summary of validations array
+ * @return array
", $notes);
- $invoice = Invoice::make()
- ->template('controlpanel')
+ $invoice = DailyInvoice::make()
+ ->template('ctrlpanel')
->name(__("Invoice"))
->buyer($customer)
->seller($seller)
@@ -64,7 +66,7 @@ public function createInvoice(Payment $payment, ShopProduct $shopProduct)
->series(now()->format('mY'))
->delimiter("-")
->sequence($newInvoiceID)
- ->serialNumberFormat(config("SETTINGS::INVOICE:PREFIX") . '{DELIMITER}{SERIES}{SEQUENCE}')
+ ->serialNumberFormat($invoice_settings->prefix . '{DELIMITER}{SERIES}{SEQUENCE}')
->currencyCode(strtoupper($payment->currency_code))
->currencySymbol(Currencies::getSymbol(strtoupper($payment->currency_code)))
->notes($notes);
@@ -78,7 +80,7 @@ public function createInvoice(Payment $payment, ShopProduct $shopProduct)
$invoice->render();
Storage::disk("local")->put("invoice/" . $user->id . "/" . now()->format('Y') . "/" . $invoice->filename, $invoice->output);
- \App\Models\Invoice::create([
+ Invoice::create([
'invoice_user' => $user->id,
'invoice_name' => $invoice->getSerialNumber(),
'payment_id' => $payment->payment_id,
diff --git a/bin/rebuild.sh b/bin/rebuild.sh
deleted file mode 100644
index 7aba0c5cc..000000000
--- a/bin/rebuild.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-docker-compose -f docker/docker-compose.yml down
-docker-compose -f docker/docker-compose.yml build --no-cache
diff --git a/bin/startdocker.sh b/bin/startdocker.sh
deleted file mode 100644
index 57a6c5154..000000000
--- a/bin/startdocker.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-docker-compose -f docker/docker-compose.yml down
-docker-compose -f docker/docker-compose.yml up -d --force-recreate --remove-orphans
diff --git a/bin/stopdocker.sh b/bin/stopdocker.sh
deleted file mode 100644
index f0bed643b..000000000
--- a/bin/stopdocker.sh
+++ /dev/null
@@ -1 +0,0 @@
-docker-compose -f docker/docker-compose.yml down
diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore
old mode 100644
new mode 100755
diff --git a/composer.json b/composer.json
index 6dfc73bbe..231988a4e 100644
--- a/composer.json
+++ b/composer.json
@@ -8,46 +8,50 @@
],
"license": "MIT",
"require": {
- "php": "^8.1",
+ "php": "^8.2",
"ext-intl": "*",
- "biscolab/laravel-recaptcha": "^5.4",
- "doctrine/dbal": "^3.1",
- "guzzlehttp/guzzle": "^7.2",
- "hidehalo/nanoid-php": "^1.1",
- "kkomelin/laravel-translatable-string-exporter": "^1.18",
- "laravel/framework": "^9.46",
- "laravel/tinker": "^2.7",
- "laravel/ui": "^3.3",
- "laraveldaily/laravel-invoices": "^3.0",
- "league/flysystem-aws-s3-v3": "^3.0",
- "paypal/paypal-checkout-sdk": "^1.0",
- "paypal/rest-api-sdk-php": "^1.14",
- "qirolab/laravel-themer": "^2.0",
- "socialiteproviders/discord": "^4.1",
- "spatie/laravel-activitylog": "^4.4",
- "spatie/laravel-query-builder": "^5.0",
- "spatie/laravel-validation-rules": "^3.2",
- "stripe/stripe-php": "^7.107",
- "symfony/http-client": "^6.2",
- "symfony/intl": "^6.0",
- "symfony/mailgun-mailer": "^6.2",
- "yajra/laravel-datatables-oracle": "^9.19"
+ "ext-mysqli": "*",
+ "ext-curl": "*",
+ "biscolab/laravel-recaptcha": "^6.1",
+ "doctrine/dbal": "^4.0.4",
+ "guzzlehttp/guzzle": "^7.5",
+ "hidehalo/nanoid-php": "^1.1.12",
+ "kkomelin/laravel-translatable-string-exporter": "^1.22",
+ "laravel/framework": "^11.17",
+ "laravel/tinker": "^2.9",
+ "laravel/ui": "^4.5.2",
+ "laraveldaily/laravel-invoices": "^4.0.0",
+ "league/flysystem-aws-s3-v3": "^3.28.0",
+ "paypal/paypal-checkout-sdk": "^1.0.2",
+ "predis/predis": "*",
+ "qirolab/laravel-themer": "^2.3.3",
+ "socialiteproviders/discord": "^4.1.2",
+ "spatie/laravel-activitylog": "^4.8.0",
+ "spatie/laravel-permission": "^6.9",
+ "spatie/laravel-query-builder": "^6.0.1",
+ "spatie/laravel-settings": "^3.3",
+ "spatie/laravel-validation-rules": "^3.4.0",
+ "stripe/stripe-php": "^7.128",
+ "symfony/http-client": "^7.1.2",
+ "symfony/intl": "^7.1.1",
+ "symfony/mailgun-mailer": "^7.1.2",
+ "yajra/laravel-datatables-oracle": "^11.1.3"
},
"require-dev": {
- "barryvdh/laravel-debugbar": "^3.6",
- "fakerphp/faker": "^1.9.1",
- "laravel/sail": "^1.15",
- "mockery/mockery": "^1.4.4",
- "nunomaduro/collision": "^6.3",
- "phpunit/phpunit": "^9.5.10",
- "spatie/laravel-ignition": "^1.4"
+ "barryvdh/laravel-debugbar": "^3.13",
+ "fakerphp/faker": "^1.21",
+ "laravel/sail": "^1.31",
+ "mockery/mockery": "^1.5.1",
+ "nunomaduro/collision": "^8.3",
+ "phpunit/phpunit": "^11.2",
+ "spatie/laravel-ignition": "^2.8"
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true,
"platform": {
- "php": "8.1"
+ "php": "8.2"
}
},
"extra": {
diff --git a/composer.lock b/composer.lock
index 587a39b8e..c8907a7ff 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,27 +4,31 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "d98e4be75e05c71049fe452b69b54901",
+ "content-hash": "6284e796f9bb6fd440148a123c7a77e3",
"packages": [
{
"name": "aws/aws-crt-php",
- "version": "v1.0.2",
+ "version": "v1.2.7",
"source": {
"type": "git",
"url": "https://github.com/awslabs/aws-crt-php.git",
- "reference": "3942776a8c99209908ee0b287746263725685732"
+ "reference": "d71d9906c7bb63a28295447ba12e74723bd3730e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/3942776a8c99209908ee0b287746263725685732",
- "reference": "3942776a8c99209908ee0b287746263725685732",
+ "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/d71d9906c7bb63a28295447ba12e74723bd3730e",
+ "reference": "d71d9906c7bb63a28295447ba12e74723bd3730e",
"shasum": ""
},
"require": {
"php": ">=5.5"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.35|^5.4.3"
+ "phpunit/phpunit": "^4.8.35||^5.6.3||^9.5",
+ "yoast/phpunit-polyfills": "^1.0"
+ },
+ "suggest": {
+ "ext-awscrt": "Make sure you install awscrt native extension to use any of the functionality."
},
"type": "library",
"autoload": {
@@ -43,7 +47,7 @@
}
],
"description": "AWS Common Runtime for PHP",
- "homepage": "http://aws.amazon.com/sdkforphp",
+ "homepage": "https://github.com/awslabs/aws-crt-php",
"keywords": [
"amazon",
"aws",
@@ -52,34 +56,35 @@
],
"support": {
"issues": "https://github.com/awslabs/aws-crt-php/issues",
- "source": "https://github.com/awslabs/aws-crt-php/tree/v1.0.2"
+ "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.7"
},
- "time": "2021-09-03T22:57:30+00:00"
+ "time": "2024-10-18T22:15:13+00:00"
},
{
"name": "aws/aws-sdk-php",
- "version": "3.257.5",
+ "version": "3.328.0",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
- "reference": "c600a07da531d6c29af791b9d2e8b6df796aa14b"
+ "reference": "a99b58e166ae367f2b067937afb04e843e900745"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/c600a07da531d6c29af791b9d2e8b6df796aa14b",
- "reference": "c600a07da531d6c29af791b9d2e8b6df796aa14b",
+ "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/a99b58e166ae367f2b067937afb04e843e900745",
+ "reference": "a99b58e166ae367f2b067937afb04e843e900745",
"shasum": ""
},
"require": {
- "aws/aws-crt-php": "^1.0.2",
+ "aws/aws-crt-php": "^1.2.3",
"ext-json": "*",
"ext-pcre": "*",
"ext-simplexml": "*",
"guzzlehttp/guzzle": "^6.5.8 || ^7.4.5",
- "guzzlehttp/promises": "^1.4.0",
- "guzzlehttp/psr7": "^1.8.5 || ^2.3",
+ "guzzlehttp/promises": "^1.4.0 || ^2.0",
+ "guzzlehttp/psr7": "^1.9.1 || ^2.4.5",
"mtdowling/jmespath.php": "^2.6",
- "php": ">=5.5"
+ "php": ">=7.2.5",
+ "psr/http-message": "^1.0 || ^2.0"
},
"require-dev": {
"andrewsville/php-token-reflection": "^1.4",
@@ -94,7 +99,7 @@
"ext-sockets": "*",
"nette/neon": "^2.3",
"paragonie/random_compat": ">= 2",
- "phpunit/phpunit": "^4.8.35 || ^5.6.3 || ^9.5",
+ "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5",
"psr/cache": "^1.0",
"psr/simple-cache": "^1.0",
"sebastian/comparator": "^1.2.3 || ^4.0",
@@ -119,7 +124,10 @@
],
"psr-4": {
"Aws\\": "src/"
- }
+ },
+ "exclude-from-classmap": [
+ "src/data/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -146,33 +154,33 @@
"support": {
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
"issues": "https://github.com/aws/aws-sdk-php/issues",
- "source": "https://github.com/aws/aws-sdk-php/tree/3.257.5"
+ "source": "https://github.com/aws/aws-sdk-php/tree/3.328.0"
},
- "time": "2023-01-20T19:34:14+00:00"
+ "time": "2024-11-15T19:06:57+00:00"
},
{
"name": "barryvdh/laravel-dompdf",
- "version": "v2.0.0",
+ "version": "v2.2.0",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-dompdf.git",
- "reference": "1d47648c6cef37f715ecb8bcc5f5a656ad372e27"
+ "reference": "c96f90c97666cebec154ca1ffb67afed372114d8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/1d47648c6cef37f715ecb8bcc5f5a656ad372e27",
- "reference": "1d47648c6cef37f715ecb8bcc5f5a656ad372e27",
+ "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/c96f90c97666cebec154ca1ffb67afed372114d8",
+ "reference": "c96f90c97666cebec154ca1ffb67afed372114d8",
"shasum": ""
},
"require": {
- "dompdf/dompdf": "^2",
- "illuminate/support": "^6|^7|^8|^9",
+ "dompdf/dompdf": "^2.0.7",
+ "illuminate/support": "^6|^7|^8|^9|^10|^11",
"php": "^7.2 || ^8.0"
},
"require-dev": {
- "nunomaduro/larastan": "^1|^2",
- "orchestra/testbench": "^4|^5|^6|^7",
- "phpro/grumphp": "^1",
+ "larastan/larastan": "^1.0|^2.7.0",
+ "orchestra/testbench": "^4|^5|^6|^7|^8|^9",
+ "phpro/grumphp": "^1 || ^2.5",
"squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
@@ -213,7 +221,7 @@
],
"support": {
"issues": "https://github.com/barryvdh/laravel-dompdf/issues",
- "source": "https://github.com/barryvdh/laravel-dompdf/tree/v2.0.0"
+ "source": "https://github.com/barryvdh/laravel-dompdf/tree/v2.2.0"
},
"funding": [
{
@@ -225,30 +233,30 @@
"type": "github"
}
],
- "time": "2022-07-06T11:12:10+00:00"
+ "time": "2024-04-25T13:16:04+00:00"
},
{
"name": "biscolab/laravel-recaptcha",
- "version": "v5.4.0",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/biscolab/laravel-recaptcha.git",
- "reference": "1bab726402d5376553a439b88a0faa07e84488fd"
+ "reference": "440fc617cba9f39aab7fda5d7697b76a55286e31"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/biscolab/laravel-recaptcha/zipball/1bab726402d5376553a439b88a0faa07e84488fd",
- "reference": "1bab726402d5376553a439b88a0faa07e84488fd",
+ "url": "https://api.github.com/repos/biscolab/laravel-recaptcha/zipball/440fc617cba9f39aab7fda5d7697b76a55286e31",
+ "reference": "440fc617cba9f39aab7fda5d7697b76a55286e31",
"shasum": ""
},
"require": {
- "illuminate/routing": "^7.0|^8.0|^9.0",
- "illuminate/support": "^7.0|^8.0|^9.0",
+ "illuminate/routing": "^7.0|^8.0|^9.0|^10.0|^11.0",
+ "illuminate/support": "^7.0|^8.0|^9.0|^10.0|^11.0",
"php": "^7.3|^8.0"
},
"require-dev": {
- "orchestra/testbench": "5.*|6.*|^7.0",
- "phpunit/phpunit": "^9.1"
+ "orchestra/testbench": "5.*|6.*|^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^9.1|^10.5"
},
"suggest": {
"biscolab/laravel-authlog": "It allows to handle logged-in users and force log-out if needed"
@@ -294,32 +302,32 @@
],
"support": {
"issues": "https://github.com/biscolab/laravel-recaptcha/issues",
- "source": "https://github.com/biscolab/laravel-recaptcha/tree/v5.4.0"
+ "source": "https://github.com/biscolab/laravel-recaptcha/tree/v6.1.0"
},
- "time": "2022-05-07T12:52:46+00:00"
+ "abandoned": true,
+ "time": "2024-03-27T11:06:21+00:00"
},
{
"name": "brick/math",
- "version": "0.10.2",
+ "version": "0.12.1",
"source": {
"type": "git",
"url": "https://github.com/brick/math.git",
- "reference": "459f2781e1a08d52ee56b0b1444086e038561e3f"
+ "reference": "f510c0a40911935b77b86859eb5223d58d660df1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/brick/math/zipball/459f2781e1a08d52ee56b0b1444086e038561e3f",
- "reference": "459f2781e1a08d52ee56b0b1444086e038561e3f",
+ "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1",
+ "reference": "f510c0a40911935b77b86859eb5223d58d660df1",
"shasum": ""
},
"require": {
- "ext-json": "*",
- "php": "^7.4 || ^8.0"
+ "php": "^8.1"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.2",
- "phpunit/phpunit": "^9.0",
- "vimeo/psalm": "4.25.0"
+ "phpunit/phpunit": "^10.1",
+ "vimeo/psalm": "5.16.0"
},
"type": "library",
"autoload": {
@@ -339,12 +347,17 @@
"arithmetic",
"bigdecimal",
"bignum",
+ "bignumber",
"brick",
- "math"
+ "decimal",
+ "integer",
+ "math",
+ "mathematics",
+ "rational"
],
"support": {
"issues": "https://github.com/brick/math/issues",
- "source": "https://github.com/brick/math/tree/0.10.2"
+ "source": "https://github.com/brick/math/tree/0.12.1"
},
"funding": [
{
@@ -352,20 +365,89 @@
"type": "github"
}
],
- "time": "2022-08-10T22:54:19+00:00"
+ "time": "2023-11-29T23:19:16+00:00"
+ },
+ {
+ "name": "carbonphp/carbon-doctrine-types",
+ "version": "3.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git",
+ "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d",
+ "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "conflict": {
+ "doctrine/dbal": "<4.0.0 || >=5.0.0"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^4.0.0",
+ "nesbot/carbon": "^2.71.0 || ^3.0.0",
+ "phpunit/phpunit": "^10.3"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Carbon\\Doctrine\\": "src/Carbon/Doctrine/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "KyleKatarn",
+ "email": "kylekatarnls@gmail.com"
+ }
+ ],
+ "description": "Types to use Carbon in Doctrine",
+ "keywords": [
+ "carbon",
+ "date",
+ "datetime",
+ "doctrine",
+ "time"
+ ],
+ "support": {
+ "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues",
+ "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/kylekatarnls",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/Carbon",
+ "type": "open_collective"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-02-09T16:56:22+00:00"
},
{
"name": "dflydev/dot-access-data",
- "version": "v3.0.2",
+ "version": "v3.0.3",
"source": {
"type": "git",
"url": "https://github.com/dflydev/dflydev-dot-access-data.git",
- "reference": "f41715465d65213d644d3141a6a93081be5d3549"
+ "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549",
- "reference": "f41715465d65213d644d3141a6a93081be5d3549",
+ "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f",
+ "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f",
"shasum": ""
},
"require": {
@@ -425,144 +507,48 @@
],
"support": {
"issues": "https://github.com/dflydev/dflydev-dot-access-data/issues",
- "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2"
- },
- "time": "2022-10-27T11:44:00+00:00"
- },
- {
- "name": "doctrine/cache",
- "version": "2.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/cache.git",
- "reference": "1ca8f21980e770095a31456042471a57bc4c68fb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb",
- "reference": "1ca8f21980e770095a31456042471a57bc4c68fb",
- "shasum": ""
- },
- "require": {
- "php": "~7.1 || ^8.0"
- },
- "conflict": {
- "doctrine/common": ">2.2,<2.4"
- },
- "require-dev": {
- "cache/integration-tests": "dev-master",
- "doctrine/coding-standard": "^9",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
- "psr/cache": "^1.0 || ^2.0 || ^3.0",
- "symfony/cache": "^4.4 || ^5.4 || ^6",
- "symfony/var-exporter": "^4.4 || ^5.4 || ^6"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
- "homepage": "https://www.doctrine-project.org/projects/cache.html",
- "keywords": [
- "abstraction",
- "apcu",
- "cache",
- "caching",
- "couchdb",
- "memcached",
- "php",
- "redis",
- "xcache"
- ],
- "support": {
- "issues": "https://github.com/doctrine/cache/issues",
- "source": "https://github.com/doctrine/cache/tree/2.2.0"
+ "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3"
},
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache",
- "type": "tidelift"
- }
- ],
- "time": "2022-05-20T20:07:39+00:00"
+ "time": "2024-07-08T12:26:09+00:00"
},
{
"name": "doctrine/dbal",
- "version": "3.5.3",
+ "version": "4.2.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
- "reference": "88fa7e5189fd5ec6682477044264dc0ed4e3aa1e"
+ "reference": "dadd35300837a3a2184bd47d403333b15d0a9bd0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/88fa7e5189fd5ec6682477044264dc0ed4e3aa1e",
- "reference": "88fa7e5189fd5ec6682477044264dc0ed4e3aa1e",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/dadd35300837a3a2184bd47d403333b15d0a9bd0",
+ "reference": "dadd35300837a3a2184bd47d403333b15d0a9bd0",
"shasum": ""
},
"require": {
- "composer-runtime-api": "^2",
- "doctrine/cache": "^1.11|^2.0",
"doctrine/deprecations": "^0.5.3|^1",
- "doctrine/event-manager": "^1|^2",
- "php": "^7.4 || ^8.0",
+ "php": "^8.1",
"psr/cache": "^1|^2|^3",
"psr/log": "^1|^2|^3"
},
"require-dev": {
- "doctrine/coding-standard": "11.0.0",
- "jetbrains/phpstorm-stubs": "2022.3",
- "phpstan/phpstan": "1.9.4",
- "phpstan/phpstan-strict-rules": "^1.4",
- "phpunit/phpunit": "9.5.27",
- "psalm/plugin-phpunit": "0.18.4",
- "squizlabs/php_codesniffer": "3.7.1",
- "symfony/cache": "^5.4|^6.0",
- "symfony/console": "^4.4|^5.4|^6.0",
- "vimeo/psalm": "4.30.0"
+ "doctrine/coding-standard": "12.0.0",
+ "fig/log-test": "^1",
+ "jetbrains/phpstorm-stubs": "2023.2",
+ "phpstan/phpstan": "1.12.6",
+ "phpstan/phpstan-phpunit": "1.4.0",
+ "phpstan/phpstan-strict-rules": "^1.6",
+ "phpunit/phpunit": "10.5.30",
+ "psalm/plugin-phpunit": "0.19.0",
+ "slevomat/coding-standard": "8.13.1",
+ "squizlabs/php_codesniffer": "3.10.2",
+ "symfony/cache": "^6.3.8|^7.0",
+ "symfony/console": "^5.4|^6.3|^7.0",
+ "vimeo/psalm": "5.25.0"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
},
- "bin": [
- "bin/doctrine-dbal"
- ],
"type": "library",
"autoload": {
"psr-4": {
@@ -615,7 +601,7 @@
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
- "source": "https://github.com/doctrine/dbal/tree/3.5.3"
+ "source": "https://github.com/doctrine/dbal/tree/4.2.1"
},
"funding": [
{
@@ -631,29 +617,33 @@
"type": "tidelift"
}
],
- "time": "2023-01-12T10:21:44+00:00"
+ "time": "2024-10-10T18:01:27+00:00"
},
{
"name": "doctrine/deprecations",
- "version": "v1.0.0",
+ "version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/deprecations.git",
- "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de"
+ "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de",
- "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de",
+ "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
+ "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
"shasum": ""
},
"require": {
- "php": "^7.1|^8.0"
+ "php": "^7.1 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^9",
- "phpunit/phpunit": "^7.5|^8.5|^9.5",
- "psr/log": "^1|^2|^3"
+ "phpstan/phpstan": "1.4.10 || 1.10.15",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "psalm/plugin-phpunit": "0.18.4",
+ "psr/log": "^1 || ^2 || ^3",
+ "vimeo/psalm": "4.30.0 || 5.12.0"
},
"suggest": {
"psr/log": "Allows logging deprecations via PSR-3 logger implementation"
@@ -672,125 +662,34 @@
"homepage": "https://www.doctrine-project.org/",
"support": {
"issues": "https://github.com/doctrine/deprecations/issues",
- "source": "https://github.com/doctrine/deprecations/tree/v1.0.0"
- },
- "time": "2022-05-02T15:47:09+00:00"
- },
- {
- "name": "doctrine/event-manager",
- "version": "2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/event-manager.git",
- "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32",
- "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32",
- "shasum": ""
- },
- "require": {
- "php": "^8.1"
- },
- "conflict": {
- "doctrine/common": "<2.9"
- },
- "require-dev": {
- "doctrine/coding-standard": "^10",
- "phpstan/phpstan": "^1.8.8",
- "phpunit/phpunit": "^9.5",
- "vimeo/psalm": "^4.28"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- },
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com"
- }
- ],
- "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
- "homepage": "https://www.doctrine-project.org/projects/event-manager.html",
- "keywords": [
- "event",
- "event dispatcher",
- "event manager",
- "event system",
- "events"
- ],
- "support": {
- "issues": "https://github.com/doctrine/event-manager/issues",
- "source": "https://github.com/doctrine/event-manager/tree/2.0.0"
+ "source": "https://github.com/doctrine/deprecations/tree/1.1.3"
},
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager",
- "type": "tidelift"
- }
- ],
- "time": "2022-10-12T20:59:15+00:00"
+ "time": "2024-01-30T19:34:25+00:00"
},
{
"name": "doctrine/inflector",
- "version": "2.0.6",
+ "version": "2.0.10",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
- "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024"
+ "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024",
- "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc",
+ "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^10",
+ "doctrine/coding-standard": "^11.0",
"phpstan/phpstan": "^1.8",
"phpstan/phpstan-phpunit": "^1.1",
"phpstan/phpstan-strict-rules": "^1.3",
"phpunit/phpunit": "^8.5 || ^9.5",
- "vimeo/psalm": "^4.25"
+ "vimeo/psalm": "^4.25 || ^5.4"
},
"type": "library",
"autoload": {
@@ -840,7 +739,7 @@
],
"support": {
"issues": "https://github.com/doctrine/inflector/issues",
- "source": "https://github.com/doctrine/inflector/tree/2.0.6"
+ "source": "https://github.com/doctrine/inflector/tree/2.0.10"
},
"funding": [
{
@@ -856,31 +755,31 @@
"type": "tidelift"
}
],
- "time": "2022-10-20T09:10:12+00:00"
+ "time": "2024-02-18T20:23:39+00:00"
},
{
"name": "doctrine/lexer",
- "version": "3.0.0",
+ "version": "3.0.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/lexer.git",
- "reference": "84a527db05647743d50373e0ec53a152f2cde568"
+ "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568",
- "reference": "84a527db05647743d50373e0ec53a152f2cde568",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd",
+ "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd",
"shasum": ""
},
"require": {
"php": "^8.1"
},
"require-dev": {
- "doctrine/coding-standard": "^10",
- "phpstan/phpstan": "^1.9",
- "phpunit/phpunit": "^9.5",
+ "doctrine/coding-standard": "^12",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^10.5",
"psalm/plugin-phpunit": "^0.18.3",
- "vimeo/psalm": "^5.0"
+ "vimeo/psalm": "^5.21"
},
"type": "library",
"autoload": {
@@ -917,7 +816,7 @@
],
"support": {
"issues": "https://github.com/doctrine/lexer/issues",
- "source": "https://github.com/doctrine/lexer/tree/3.0.0"
+ "source": "https://github.com/doctrine/lexer/tree/3.0.1"
},
"funding": [
{
@@ -933,20 +832,20 @@
"type": "tidelift"
}
],
- "time": "2022-12-15T16:57:16+00:00"
+ "time": "2024-02-05T11:56:58+00:00"
},
{
"name": "dompdf/dompdf",
- "version": "v2.0.1",
+ "version": "v2.0.8",
"source": {
"type": "git",
"url": "https://github.com/dompdf/dompdf.git",
- "reference": "c5310df0e22c758c85ea5288175fc6cd777bc085"
+ "reference": "c20247574601700e1f7c8dab39310fca1964dc52"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/dompdf/dompdf/zipball/c5310df0e22c758c85ea5288175fc6cd777bc085",
- "reference": "c5310df0e22c758c85ea5288175fc6cd777bc085",
+ "url": "https://api.github.com/repos/dompdf/dompdf/zipball/c20247574601700e1f7c8dab39310fca1964dc52",
+ "reference": "c20247574601700e1f7c8dab39310fca1964dc52",
"shasum": ""
},
"require": {
@@ -954,7 +853,7 @@
"ext-mbstring": "*",
"masterminds/html5": "^2.0",
"phenx/php-font-lib": ">=0.5.4 <1.0.0",
- "phenx/php-svg-lib": ">=0.3.3 <1.0.0",
+ "phenx/php-svg-lib": ">=0.5.2 <1.0.0",
"php": "^7.1 || ^8.0"
},
"require-dev": {
@@ -993,22 +892,22 @@
"homepage": "https://github.com/dompdf/dompdf",
"support": {
"issues": "https://github.com/dompdf/dompdf/issues",
- "source": "https://github.com/dompdf/dompdf/tree/v2.0.1"
+ "source": "https://github.com/dompdf/dompdf/tree/v2.0.8"
},
- "time": "2022-09-22T13:43:41+00:00"
+ "time": "2024-04-29T13:06:17+00:00"
},
{
"name": "dragonmantank/cron-expression",
- "version": "v3.3.2",
+ "version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/dragonmantank/cron-expression.git",
- "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8"
+ "reference": "8c784d071debd117328803d86b2097615b457500"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/782ca5968ab8b954773518e9e49a6f892a34b2a8",
- "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8",
+ "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500",
+ "reference": "8c784d071debd117328803d86b2097615b457500",
"shasum": ""
},
"require": {
@@ -1021,10 +920,14 @@
"require-dev": {
"phpstan/extension-installer": "^1.0",
"phpstan/phpstan": "^1.0",
- "phpstan/phpstan-webmozart-assert": "^1.0",
"phpunit/phpunit": "^7.0|^8.0|^9.0"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
"Cron\\": "src/Cron/"
@@ -1048,7 +951,7 @@
],
"support": {
"issues": "https://github.com/dragonmantank/cron-expression/issues",
- "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.2"
+ "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0"
},
"funding": [
{
@@ -1056,20 +959,20 @@
"type": "github"
}
],
- "time": "2022-09-10T18:51:20+00:00"
+ "time": "2024-10-09T13:47:03+00:00"
},
{
"name": "egulias/email-validator",
- "version": "4.0.1",
+ "version": "4.0.2",
"source": {
"type": "git",
"url": "https://github.com/egulias/EmailValidator.git",
- "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff"
+ "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/3a85486b709bc384dae8eb78fb2eec649bdb64ff",
- "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff",
+ "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e",
+ "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e",
"shasum": ""
},
"require": {
@@ -1078,8 +981,8 @@
"symfony/polyfill-intl-idn": "^1.26"
},
"require-dev": {
- "phpunit/phpunit": "^9.5.27",
- "vimeo/psalm": "^4.30"
+ "phpunit/phpunit": "^10.2",
+ "vimeo/psalm": "^5.12"
},
"suggest": {
"ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation"
@@ -1115,7 +1018,7 @@
],
"support": {
"issues": "https://github.com/egulias/EmailValidator/issues",
- "source": "https://github.com/egulias/EmailValidator/tree/4.0.1"
+ "source": "https://github.com/egulias/EmailValidator/tree/4.0.2"
},
"funding": [
{
@@ -1123,7 +1026,7 @@
"type": "github"
}
],
- "time": "2023-01-14T14:17:03+00:00"
+ "time": "2023-10-06T06:47:41+00:00"
},
{
"name": "facade/ignition-contracts",
@@ -1179,66 +1082,129 @@
"time": "2020-10-16T08:27:54+00:00"
},
{
- "name": "fruitcake/php-cors",
- "version": "v1.2.0",
+ "name": "firebase/php-jwt",
+ "version": "v6.10.1",
"source": {
"type": "git",
- "url": "https://github.com/fruitcake/php-cors.git",
- "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e"
+ "url": "https://github.com/firebase/php-jwt.git",
+ "reference": "500501c2ce893c824c801da135d02661199f60c5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e",
- "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e",
+ "url": "https://api.github.com/repos/firebase/php-jwt/zipball/500501c2ce893c824c801da135d02661199f60c5",
+ "reference": "500501c2ce893c824c801da135d02661199f60c5",
"shasum": ""
},
"require": {
- "php": "^7.4|^8.0",
- "symfony/http-foundation": "^4.4|^5.4|^6"
+ "php": "^8.0"
},
"require-dev": {
- "phpstan/phpstan": "^1.4",
- "phpunit/phpunit": "^9",
- "squizlabs/php_codesniffer": "^3.5"
+ "guzzlehttp/guzzle": "^7.4",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpunit/phpunit": "^9.5",
+ "psr/cache": "^2.0||^3.0",
+ "psr/http-client": "^1.0",
+ "psr/http-factory": "^1.0"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.1-dev"
- }
+ "suggest": {
+ "ext-sodium": "Support EdDSA (Ed25519) signatures",
+ "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present"
},
+ "type": "library",
"autoload": {
"psr-4": {
- "Fruitcake\\Cors\\": "src/"
+ "Firebase\\JWT\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Fruitcake",
- "homepage": "https://fruitcake.nl"
+ "name": "Neuman Vong",
+ "email": "neuman+pear@twilio.com",
+ "role": "Developer"
},
{
- "name": "Barryvdh",
- "email": "barryvdh@gmail.com"
+ "name": "Anant Narayanan",
+ "email": "anant@php.net",
+ "role": "Developer"
}
],
- "description": "Cross-origin resource sharing library for the Symfony HttpFoundation",
- "homepage": "https://github.com/fruitcake/php-cors",
+ "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",
"keywords": [
- "cors",
- "laravel",
- "symfony"
+ "jwt",
+ "php"
],
"support": {
- "issues": "https://github.com/fruitcake/php-cors/issues",
- "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0"
+ "issues": "https://github.com/firebase/php-jwt/issues",
+ "source": "https://github.com/firebase/php-jwt/tree/v6.10.1"
},
- "funding": [
- {
+ "time": "2024-05-18T18:05:11+00:00"
+ },
+ {
+ "name": "fruitcake/php-cors",
+ "version": "v1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fruitcake/php-cors.git",
+ "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b",
+ "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4|^8.0",
+ "symfony/http-foundation": "^4.4|^5.4|^6|^7"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.4",
+ "phpunit/phpunit": "^9",
+ "squizlabs/php_codesniffer": "^3.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Fruitcake\\Cors\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fruitcake",
+ "homepage": "https://fruitcake.nl"
+ },
+ {
+ "name": "Barryvdh",
+ "email": "barryvdh@gmail.com"
+ }
+ ],
+ "description": "Cross-origin resource sharing library for the Symfony HttpFoundation",
+ "homepage": "https://github.com/fruitcake/php-cors",
+ "keywords": [
+ "cors",
+ "laravel",
+ "symfony"
+ ],
+ "support": {
+ "issues": "https://github.com/fruitcake/php-cors/issues",
+ "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0"
+ },
+ "funding": [
+ {
"url": "https://fruitcake.nl",
"type": "custom"
},
@@ -1247,28 +1213,28 @@
"type": "github"
}
],
- "time": "2022-02-20T15:07:15+00:00"
+ "time": "2023-10-12T05:21:21+00:00"
},
{
"name": "graham-campbell/result-type",
- "version": "v1.1.0",
+ "version": "v1.1.3",
"source": {
"type": "git",
"url": "https://github.com/GrahamCampbell/Result-Type.git",
- "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8"
+ "reference": "3ba905c11371512af9d9bdd27d99b782216b6945"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/a878d45c1914464426dc94da61c9e1d36ae262a8",
- "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8",
+ "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945",
+ "reference": "3ba905c11371512af9d9bdd27d99b782216b6945",
"shasum": ""
},
"require": {
"php": "^7.2.5 || ^8.0",
- "phpoption/phpoption": "^1.9"
+ "phpoption/phpoption": "^1.9.3"
},
"require-dev": {
- "phpunit/phpunit": "^8.5.28 || ^9.5.21"
+ "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28"
},
"type": "library",
"autoload": {
@@ -1297,7 +1263,7 @@
],
"support": {
"issues": "https://github.com/GrahamCampbell/Result-Type/issues",
- "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.0"
+ "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3"
},
"funding": [
{
@@ -1309,26 +1275,26 @@
"type": "tidelift"
}
],
- "time": "2022-07-30T15:56:11+00:00"
+ "time": "2024-07-20T21:45:45+00:00"
},
{
"name": "guzzlehttp/guzzle",
- "version": "7.5.0",
+ "version": "7.9.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
- "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba"
+ "reference": "d281ed313b989f213357e3be1a179f02196ac99b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba",
- "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b",
+ "reference": "d281ed313b989f213357e3be1a179f02196ac99b",
"shasum": ""
},
"require": {
"ext-json": "*",
- "guzzlehttp/promises": "^1.5",
- "guzzlehttp/psr7": "^1.9 || ^2.4",
+ "guzzlehttp/promises": "^1.5.3 || ^2.0.3",
+ "guzzlehttp/psr7": "^2.7.0",
"php": "^7.2.5 || ^8.0",
"psr/http-client": "^1.0",
"symfony/deprecation-contracts": "^2.2 || ^3.0"
@@ -1337,10 +1303,11 @@
"psr/http-client-implementation": "1.0"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.1",
+ "bamarni/composer-bin-plugin": "^1.8.2",
"ext-curl": "*",
- "php-http/client-integration-tests": "^3.0",
- "phpunit/phpunit": "^8.5.29 || ^9.5.23",
+ "guzzle/client-integration-tests": "3.0.2",
+ "php-http/message-factory": "^1.1",
+ "phpunit/phpunit": "^8.5.39 || ^9.6.20",
"psr/log": "^1.1 || ^2.0 || ^3.0"
},
"suggest": {
@@ -1353,9 +1320,6 @@
"bamarni-bin": {
"bin-links": true,
"forward-command": false
- },
- "branch-alias": {
- "dev-master": "7.5-dev"
}
},
"autoload": {
@@ -1421,7 +1385,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
- "source": "https://github.com/guzzle/guzzle/tree/7.5.0"
+ "source": "https://github.com/guzzle/guzzle/tree/7.9.2"
},
"funding": [
{
@@ -1437,38 +1401,37 @@
"type": "tidelift"
}
],
- "time": "2022-08-28T15:39:27+00:00"
+ "time": "2024-07-24T11:22:20+00:00"
},
{
"name": "guzzlehttp/promises",
- "version": "1.5.2",
+ "version": "2.0.4",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
- "reference": "b94b2807d85443f9719887892882d0329d1e2598"
+ "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598",
- "reference": "b94b2807d85443f9719887892882d0329d1e2598",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455",
+ "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455",
"shasum": ""
},
"require": {
- "php": ">=5.5"
+ "php": "^7.2.5 || ^8.0"
},
"require-dev": {
- "symfony/phpunit-bridge": "^4.4 || ^5.1"
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "phpunit/phpunit": "^8.5.39 || ^9.6.20"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "1.5-dev"
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
}
},
"autoload": {
- "files": [
- "src/functions_include.php"
- ],
"psr-4": {
"GuzzleHttp\\Promise\\": "src/"
}
@@ -1505,7 +1468,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/1.5.2"
+ "source": "https://github.com/guzzle/promises/tree/2.0.4"
},
"funding": [
{
@@ -1521,26 +1484,26 @@
"type": "tidelift"
}
],
- "time": "2022-08-28T14:55:35+00:00"
+ "time": "2024-10-17T10:06:22+00:00"
},
{
"name": "guzzlehttp/psr7",
- "version": "2.4.3",
+ "version": "2.7.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "67c26b443f348a51926030c83481b85718457d3d"
+ "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d",
- "reference": "67c26b443f348a51926030c83481b85718457d3d",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
+ "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
"shasum": ""
},
"require": {
"php": "^7.2.5 || ^8.0",
"psr/http-factory": "^1.0",
- "psr/http-message": "^1.0",
+ "psr/http-message": "^1.1 || ^2.0",
"ralouphie/getallheaders": "^3.0"
},
"provide": {
@@ -1548,9 +1511,9 @@
"psr/http-message-implementation": "1.0"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.1",
- "http-interop/http-factory-tests": "^0.9",
- "phpunit/phpunit": "^8.5.29 || ^9.5.23"
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "http-interop/http-factory-tests": "0.9.0",
+ "phpunit/phpunit": "^8.5.39 || ^9.6.20"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
@@ -1560,9 +1523,6 @@
"bamarni-bin": {
"bin-links": true,
"forward-command": false
- },
- "branch-alias": {
- "dev-master": "2.4-dev"
}
},
"autoload": {
@@ -1624,7 +1584,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/2.4.3"
+ "source": "https://github.com/guzzle/psr7/tree/2.7.0"
},
"funding": [
{
@@ -1640,20 +1600,106 @@
"type": "tidelift"
}
],
- "time": "2022-10-26T14:07:24+00:00"
+ "time": "2024-07-18T11:15:46+00:00"
+ },
+ {
+ "name": "guzzlehttp/uri-template",
+ "version": "v1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/uri-template.git",
+ "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c",
+ "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0",
+ "symfony/polyfill-php80": "^1.24"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "phpunit/phpunit": "^8.5.36 || ^9.6.15",
+ "uri-template/tests": "1.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\UriTemplate\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ }
+ ],
+ "description": "A polyfill class for uri_template of PHP",
+ "keywords": [
+ "guzzlehttp",
+ "uri-template"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/uri-template/issues",
+ "source": "https://github.com/guzzle/uri-template/tree/v1.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-12-03T19:50:20+00:00"
},
{
"name": "hidehalo/nanoid-php",
- "version": "1.1.12",
+ "version": "1.1.13",
"source": {
"type": "git",
"url": "https://github.com/hidehalo/nanoid-php.git",
- "reference": "3229400d7e69b127a9e4f8fdad2e498e64cdaae4"
+ "reference": "3fc7c949f4e655939cc30e7110d658af3dbb0e30"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/hidehalo/nanoid-php/zipball/3229400d7e69b127a9e4f8fdad2e498e64cdaae4",
- "reference": "3229400d7e69b127a9e4f8fdad2e498e64cdaae4",
+ "url": "https://api.github.com/repos/hidehalo/nanoid-php/zipball/3fc7c949f4e655939cc30e7110d658af3dbb0e30",
+ "reference": "3fc7c949f4e655939cc30e7110d658af3dbb0e30",
"shasum": ""
},
"require": {
@@ -1695,35 +1741,35 @@
],
"support": {
"issues": "https://github.com/hidehalo/nanoid-php/issues",
- "source": "https://github.com/hidehalo/nanoid-php/tree/1.1.12"
+ "source": "https://github.com/hidehalo/nanoid-php/tree/1.1.13"
},
- "time": "2021-12-30T07:27:43+00:00"
+ "time": "2022-08-04T12:07:12+00:00"
},
{
"name": "kkomelin/laravel-translatable-string-exporter",
- "version": "1.18.0",
+ "version": "1.22.0",
"source": {
"type": "git",
"url": "https://github.com/kkomelin/laravel-translatable-string-exporter.git",
- "reference": "c8b3364816d9f0ad2865c7538d8eb29ed8319136"
+ "reference": "0c6dbec4694a7e702830ecfc005d131cd5ffe402"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/kkomelin/laravel-translatable-string-exporter/zipball/c8b3364816d9f0ad2865c7538d8eb29ed8319136",
- "reference": "c8b3364816d9f0ad2865c7538d8eb29ed8319136",
+ "url": "https://api.github.com/repos/kkomelin/laravel-translatable-string-exporter/zipball/0c6dbec4694a7e702830ecfc005d131cd5ffe402",
+ "reference": "0c6dbec4694a7e702830ecfc005d131cd5ffe402",
"shasum": ""
},
"require": {
"ext-json": "*",
- "illuminate/support": "^8|^9",
- "illuminate/translation": "^8|^9",
+ "illuminate/support": "^8|^9|^10.0|^11.0",
+ "illuminate/translation": "^8|^9|^10.0|^11.0",
"php": "^8.0",
- "symfony/finder": "^5|^6"
+ "symfony/finder": "^5|^6|^7.0"
},
"require-dev": {
"nunomaduro/larastan": "^1.0|^2.0",
- "orchestra/testbench": "^6.0|^7.0",
- "phpunit/phpunit": "^9.0"
+ "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^9.0|^10.5"
},
"type": "library",
"extra": {
@@ -1760,63 +1806,75 @@
],
"support": {
"issues": "https://github.com/kkomelin/laravel-translatable-string-exporter/issues",
- "source": "https://github.com/kkomelin/laravel-translatable-string-exporter/tree/1.18.0"
+ "source": "https://github.com/kkomelin/laravel-translatable-string-exporter/tree/1.22.0"
},
- "time": "2023-01-12T15:11:42+00:00"
+ "time": "2024-03-13T13:44:41+00:00"
},
{
"name": "laravel/framework",
- "version": "v9.48.0",
+ "version": "v11.32.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "c78ae7aeb0cbcb1a205050d3592247ba07f5b711"
+ "reference": "bc2aad63f83ee5089be7b21cf29d645ccf31e927"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/c78ae7aeb0cbcb1a205050d3592247ba07f5b711",
- "reference": "c78ae7aeb0cbcb1a205050d3592247ba07f5b711",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/bc2aad63f83ee5089be7b21cf29d645ccf31e927",
+ "reference": "bc2aad63f83ee5089be7b21cf29d645ccf31e927",
"shasum": ""
},
"require": {
- "brick/math": "^0.10.2",
- "doctrine/inflector": "^2.0",
+ "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12",
+ "composer-runtime-api": "^2.2",
+ "doctrine/inflector": "^2.0.5",
"dragonmantank/cron-expression": "^3.3.2",
"egulias/email-validator": "^3.2.1|^4.0",
+ "ext-ctype": "*",
+ "ext-filter": "*",
+ "ext-hash": "*",
"ext-mbstring": "*",
"ext-openssl": "*",
- "fruitcake/php-cors": "^1.2",
- "laravel/serializable-closure": "^1.2.2",
+ "ext-session": "*",
+ "ext-tokenizer": "*",
+ "fruitcake/php-cors": "^1.3",
+ "guzzlehttp/guzzle": "^7.8",
+ "guzzlehttp/uri-template": "^1.0",
+ "laravel/prompts": "^0.1.18|^0.2.0|^0.3.0",
+ "laravel/serializable-closure": "^1.3",
"league/commonmark": "^2.2.1",
"league/flysystem": "^3.8.0",
- "monolog/monolog": "^2.0",
- "nesbot/carbon": "^2.62.1",
- "nunomaduro/termwind": "^1.13",
- "php": "^8.0.2",
+ "monolog/monolog": "^3.0",
+ "nesbot/carbon": "^2.72.2|^3.0",
+ "nunomaduro/termwind": "^2.0",
+ "php": "^8.2",
"psr/container": "^1.1.1|^2.0.1",
"psr/log": "^1.0|^2.0|^3.0",
"psr/simple-cache": "^1.0|^2.0|^3.0",
"ramsey/uuid": "^4.7",
- "symfony/console": "^6.0.9",
- "symfony/error-handler": "^6.0",
- "symfony/finder": "^6.0",
- "symfony/http-foundation": "^6.0",
- "symfony/http-kernel": "^6.0",
- "symfony/mailer": "^6.0",
- "symfony/mime": "^6.0",
- "symfony/process": "^6.0",
- "symfony/routing": "^6.0",
- "symfony/uid": "^6.0",
- "symfony/var-dumper": "^6.0",
+ "symfony/console": "^7.0",
+ "symfony/error-handler": "^7.0",
+ "symfony/finder": "^7.0",
+ "symfony/http-foundation": "^7.0",
+ "symfony/http-kernel": "^7.0",
+ "symfony/mailer": "^7.0",
+ "symfony/mime": "^7.0",
+ "symfony/polyfill-php83": "^1.28",
+ "symfony/process": "^7.0",
+ "symfony/routing": "^7.0",
+ "symfony/uid": "^7.0",
+ "symfony/var-dumper": "^7.0",
"tijsverkoyen/css-to-inline-styles": "^2.2.5",
"vlucas/phpdotenv": "^5.4.1",
"voku/portable-ascii": "^2.0"
},
"conflict": {
+ "mockery/mockery": "1.6.8",
"tightenco/collect": "<5.5.33"
},
"provide": {
"psr/container-implementation": "1.1|2.0",
+ "psr/log-implementation": "1.0|2.0|3.0",
"psr/simple-cache-implementation": "1.0|2.0|3.0"
},
"replace": {
@@ -1825,6 +1883,7 @@
"illuminate/bus": "self.version",
"illuminate/cache": "self.version",
"illuminate/collections": "self.version",
+ "illuminate/concurrency": "self.version",
"illuminate/conditionable": "self.version",
"illuminate/config": "self.version",
"illuminate/console": "self.version",
@@ -1843,6 +1902,7 @@
"illuminate/notifications": "self.version",
"illuminate/pagination": "self.version",
"illuminate/pipeline": "self.version",
+ "illuminate/process": "self.version",
"illuminate/queue": "self.version",
"illuminate/redis": "self.version",
"illuminate/routing": "self.version",
@@ -1851,75 +1911,81 @@
"illuminate/testing": "self.version",
"illuminate/translation": "self.version",
"illuminate/validation": "self.version",
- "illuminate/view": "self.version"
+ "illuminate/view": "self.version",
+ "spatie/once": "*"
},
"require-dev": {
"ably/ably-php": "^1.0",
"aws/aws-sdk-php": "^3.235.5",
- "doctrine/dbal": "^2.13.3|^3.1.4",
- "fakerphp/faker": "^1.21",
- "guzzlehttp/guzzle": "^7.5",
+ "ext-gmp": "*",
+ "fakerphp/faker": "^1.23",
"league/flysystem-aws-s3-v3": "^3.0",
"league/flysystem-ftp": "^3.0",
"league/flysystem-path-prefixing": "^3.3",
"league/flysystem-read-only": "^3.3",
"league/flysystem-sftp-v3": "^3.0",
- "mockery/mockery": "^1.5.1",
- "orchestra/testbench-core": "^7.16",
- "pda/pheanstalk": "^4.0",
- "phpstan/phpdoc-parser": "^1.15",
- "phpstan/phpstan": "^1.4.7",
- "phpunit/phpunit": "^9.5.8",
- "predis/predis": "^1.1.9|^2.0.2",
- "symfony/cache": "^6.0",
- "symfony/http-client": "^6.0"
+ "mockery/mockery": "^1.6",
+ "nyholm/psr7": "^1.2",
+ "orchestra/testbench-core": "^9.5",
+ "pda/pheanstalk": "^5.0",
+ "phpstan/phpstan": "^1.11.5",
+ "phpunit/phpunit": "^10.5|^11.0",
+ "predis/predis": "^2.0.2",
+ "resend/resend-php": "^0.10.0",
+ "symfony/cache": "^7.0",
+ "symfony/http-client": "^7.0",
+ "symfony/psr-http-message-bridge": "^7.0"
},
"suggest": {
"ably/ably-php": "Required to use the Ably broadcast driver (^1.0).",
"aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).",
- "brianium/paratest": "Required to run tests in parallel (^6.0).",
- "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).",
- "ext-bcmath": "Required to use the multiple_of validation rule.",
+ "brianium/paratest": "Required to run tests in parallel (^7.0|^8.0).",
+ "ext-apcu": "Required to use the APC cache driver.",
+ "ext-fileinfo": "Required to use the Filesystem class.",
"ext-ftp": "Required to use the Flysystem FTP driver.",
"ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().",
"ext-memcached": "Required to use the memcache cache driver.",
- "ext-pcntl": "Required to use all features of the queue worker.",
+ "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.",
+ "ext-pdo": "Required to use all database features.",
"ext-posix": "Required to use all features of the queue worker.",
- "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).",
+ "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0|^6.0).",
"fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).",
"filp/whoops": "Required for friendly error pages in development (^2.14.3).",
- "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).",
"laravel/tinker": "Required to use the tinker console command (^2.0).",
"league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).",
"league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).",
"league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).",
"league/flysystem-read-only": "Required to use read-only disks (^3.3)",
"league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).",
- "mockery/mockery": "Required to use mocking (^1.5.1).",
+ "mockery/mockery": "Required to use mocking (^1.6).",
"nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).",
- "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).",
- "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8).",
- "predis/predis": "Required to use the predis connector (^1.1.9|^2.0.2).",
+ "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).",
+ "phpunit/phpunit": "Required to use assertions and run tests (^10.5|^11.0).",
+ "predis/predis": "Required to use the predis connector (^2.0.2).",
"psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).",
"pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).",
- "symfony/cache": "Required to PSR-6 cache bridge (^6.0).",
- "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).",
- "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).",
- "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).",
- "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).",
- "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)."
+ "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0).",
+ "symfony/cache": "Required to PSR-6 cache bridge (^7.0).",
+ "symfony/filesystem": "Required to enable support for relative symbolic links (^7.0).",
+ "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.0).",
+ "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.0).",
+ "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.0).",
+ "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.0)."
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "9.x-dev"
+ "dev-master": "11.x-dev"
}
},
"autoload": {
"files": [
"src/Illuminate/Collections/helpers.php",
"src/Illuminate/Events/functions.php",
+ "src/Illuminate/Filesystem/functions.php",
"src/Illuminate/Foundation/helpers.php",
+ "src/Illuminate/Log/functions.php",
+ "src/Illuminate/Support/functions.php",
"src/Illuminate/Support/helpers.php"
],
"psr-4": {
@@ -1951,30 +2017,90 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
- "time": "2023-01-17T15:06:19+00:00"
+ "time": "2024-11-15T17:04:33+00:00"
+ },
+ {
+ "name": "laravel/prompts",
+ "version": "v0.3.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/prompts.git",
+ "reference": "0e0535747c6b8d6d10adca8b68293cf4517abb0f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/prompts/zipball/0e0535747c6b8d6d10adca8b68293cf4517abb0f",
+ "reference": "0e0535747c6b8d6d10adca8b68293cf4517abb0f",
+ "shasum": ""
+ },
+ "require": {
+ "composer-runtime-api": "^2.2",
+ "ext-mbstring": "*",
+ "php": "^8.1",
+ "symfony/console": "^6.2|^7.0"
+ },
+ "conflict": {
+ "illuminate/console": ">=10.17.0 <10.25.0",
+ "laravel/framework": ">=10.17.0 <10.25.0"
+ },
+ "require-dev": {
+ "illuminate/collections": "^10.0|^11.0",
+ "mockery/mockery": "^1.5",
+ "pestphp/pest": "^2.3|^3.4",
+ "phpstan/phpstan": "^1.11",
+ "phpstan/phpstan-mockery": "^1.1"
+ },
+ "suggest": {
+ "ext-pcntl": "Required for the spinner to be animated."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "0.3.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "Laravel\\Prompts\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Add beautiful and user-friendly forms to your command-line applications.",
+ "support": {
+ "issues": "https://github.com/laravel/prompts/issues",
+ "source": "https://github.com/laravel/prompts/tree/v0.3.2"
+ },
+ "time": "2024-11-12T14:59:47+00:00"
},
{
"name": "laravel/serializable-closure",
- "version": "v1.2.2",
+ "version": "v1.3.6",
"source": {
"type": "git",
"url": "https://github.com/laravel/serializable-closure.git",
- "reference": "47afb7fae28ed29057fdca37e16a84f90cc62fae"
+ "reference": "f865a58ea3a0107c336b7045104c75243fa59d96"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/47afb7fae28ed29057fdca37e16a84f90cc62fae",
- "reference": "47afb7fae28ed29057fdca37e16a84f90cc62fae",
+ "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f865a58ea3a0107c336b7045104c75243fa59d96",
+ "reference": "f865a58ea3a0107c336b7045104c75243fa59d96",
"shasum": ""
},
"require": {
"php": "^7.3|^8.0"
},
"require-dev": {
- "nesbot/carbon": "^2.61",
+ "illuminate/support": "^8.0|^9.0|^10.0|^11.0",
+ "nesbot/carbon": "^2.61|^3.0",
"pestphp/pest": "^1.21.3",
"phpstan/phpstan": "^1.8.2",
- "symfony/var-dumper": "^5.4.11"
+ "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0"
},
"type": "library",
"extra": {
@@ -2011,35 +2137,38 @@
"issues": "https://github.com/laravel/serializable-closure/issues",
"source": "https://github.com/laravel/serializable-closure"
},
- "time": "2022-09-08T13:45:54+00:00"
+ "time": "2024-11-11T17:06:04+00:00"
},
{
"name": "laravel/socialite",
- "version": "v5.6.1",
+ "version": "v5.16.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/socialite.git",
- "reference": "a14a177f2cc71d8add71e2b19e00800e83bdda09"
+ "reference": "40a2dc98c53d9dc6d55eadb0d490d3d72b73f1bf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/socialite/zipball/a14a177f2cc71d8add71e2b19e00800e83bdda09",
- "reference": "a14a177f2cc71d8add71e2b19e00800e83bdda09",
+ "url": "https://api.github.com/repos/laravel/socialite/zipball/40a2dc98c53d9dc6d55eadb0d490d3d72b73f1bf",
+ "reference": "40a2dc98c53d9dc6d55eadb0d490d3d72b73f1bf",
"shasum": ""
},
"require": {
"ext-json": "*",
+ "firebase/php-jwt": "^6.4",
"guzzlehttp/guzzle": "^6.0|^7.0",
- "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0",
- "illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0",
- "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0",
+ "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0",
+ "illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0",
+ "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0",
"league/oauth1-client": "^1.10.1",
- "php": "^7.2|^8.0"
+ "php": "^7.2|^8.0",
+ "phpseclib/phpseclib": "^3.0"
},
"require-dev": {
"mockery/mockery": "^1.0",
- "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0",
- "phpunit/phpunit": "^8.0|^9.3"
+ "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0|^9.0",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^8.0|^9.3|^10.4"
},
"type": "library",
"extra": {
@@ -2080,42 +2209,40 @@
"issues": "https://github.com/laravel/socialite/issues",
"source": "https://github.com/laravel/socialite"
},
- "time": "2023-01-20T15:42:35+00:00"
+ "time": "2024-09-03T09:46:57+00:00"
},
{
"name": "laravel/tinker",
- "version": "v2.8.0",
+ "version": "v2.10.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/tinker.git",
- "reference": "74d0b287cc4ae65d15c368dd697aae71d62a73ad"
+ "reference": "ba4d51eb56de7711b3a37d63aa0643e99a339ae5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/tinker/zipball/74d0b287cc4ae65d15c368dd697aae71d62a73ad",
- "reference": "74d0b287cc4ae65d15c368dd697aae71d62a73ad",
+ "url": "https://api.github.com/repos/laravel/tinker/zipball/ba4d51eb56de7711b3a37d63aa0643e99a339ae5",
+ "reference": "ba4d51eb56de7711b3a37d63aa0643e99a339ae5",
"shasum": ""
},
"require": {
- "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0",
- "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0",
- "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0",
+ "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0",
+ "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0",
+ "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0",
"php": "^7.2.5|^8.0",
- "psy/psysh": "^0.10.4|^0.11.1",
- "symfony/var-dumper": "^4.3.4|^5.0|^6.0"
+ "psy/psysh": "^0.11.1|^0.12.0",
+ "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0"
},
"require-dev": {
"mockery/mockery": "~1.3.3|^1.4.2",
+ "phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^8.5.8|^9.3.3"
},
"suggest": {
- "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0)."
+ "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0)."
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- },
"laravel": {
"providers": [
"Laravel\\Tinker\\TinkerServiceProvider"
@@ -2146,38 +2273,40 @@
],
"support": {
"issues": "https://github.com/laravel/tinker/issues",
- "source": "https://github.com/laravel/tinker/tree/v2.8.0"
+ "source": "https://github.com/laravel/tinker/tree/v2.10.0"
},
- "time": "2023-01-10T18:03:30+00:00"
+ "time": "2024-09-23T13:32:56+00:00"
},
{
"name": "laravel/ui",
- "version": "v3.4.6",
+ "version": "v4.5.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/ui.git",
- "reference": "65ec5c03f7fee2c8ecae785795b829a15be48c2c"
+ "reference": "c75396f63268c95b053c8e4814eb70e0875e9628"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/ui/zipball/65ec5c03f7fee2c8ecae785795b829a15be48c2c",
- "reference": "65ec5c03f7fee2c8ecae785795b829a15be48c2c",
+ "url": "https://api.github.com/repos/laravel/ui/zipball/c75396f63268c95b053c8e4814eb70e0875e9628",
+ "reference": "c75396f63268c95b053c8e4814eb70e0875e9628",
"shasum": ""
},
"require": {
- "illuminate/console": "^8.42|^9.0",
- "illuminate/filesystem": "^8.42|^9.0",
- "illuminate/support": "^8.82|^9.0",
- "illuminate/validation": "^8.42|^9.0",
- "php": "^7.3|^8.0"
+ "illuminate/console": "^9.21|^10.0|^11.0",
+ "illuminate/filesystem": "^9.21|^10.0|^11.0",
+ "illuminate/support": "^9.21|^10.0|^11.0",
+ "illuminate/validation": "^9.21|^10.0|^11.0",
+ "php": "^8.0",
+ "symfony/console": "^6.0|^7.0"
},
"require-dev": {
- "orchestra/testbench": "^6.23|^7.0"
+ "orchestra/testbench": "^7.35|^8.15|^9.0",
+ "phpunit/phpunit": "^9.3|^10.4|^11.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.x-dev"
+ "dev-master": "4.x-dev"
},
"laravel": {
"providers": [
@@ -2207,33 +2336,33 @@
"ui"
],
"support": {
- "source": "https://github.com/laravel/ui/tree/v3.4.6"
+ "source": "https://github.com/laravel/ui/tree/v4.5.2"
},
- "time": "2022-05-20T13:38:08+00:00"
+ "time": "2024-05-08T18:07:10+00:00"
},
{
"name": "laraveldaily/laravel-invoices",
- "version": "3.0.2",
+ "version": "4.0.0",
"source": {
"type": "git",
"url": "https://github.com/LaravelDaily/laravel-invoices.git",
- "reference": "6dabfd95ef9819b80182ebea8267b64f77c89326"
+ "reference": "d9fa7eca22a7836fb9b09ee7fc2a97b4dfd7b228"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/LaravelDaily/laravel-invoices/zipball/6dabfd95ef9819b80182ebea8267b64f77c89326",
- "reference": "6dabfd95ef9819b80182ebea8267b64f77c89326",
+ "url": "https://api.github.com/repos/LaravelDaily/laravel-invoices/zipball/d9fa7eca22a7836fb9b09ee7fc2a97b4dfd7b228",
+ "reference": "d9fa7eca22a7836fb9b09ee7fc2a97b4dfd7b228",
"shasum": ""
},
"require": {
"barryvdh/laravel-dompdf": "^v2.0",
- "illuminate/http": "^5.5|^6|^7|^8|^9",
- "illuminate/support": "^5.5|^6|^7|^8|^9",
- "php": "^7.3|^8.0"
+ "illuminate/http": "^10|^11",
+ "illuminate/support": "^10|^11",
+ "php": ">=8.2",
+ "symfony/http-foundation": "^6|^7"
},
"require-dev": {
- "phpunit/phpunit": "^9.3",
- "symfony/var-dumper": "^5.0"
+ "phpunit/phpunit": "^10.1"
},
"type": "library",
"extra": {
@@ -2259,7 +2388,7 @@
{
"name": "David Lun",
"email": "mysticcode@gmail.com",
- "homepage": "https://lun.lt",
+ "homepage": "https://davidlun.com",
"role": "Developer"
}
],
@@ -2273,22 +2402,22 @@
],
"support": {
"issues": "https://github.com/LaravelDaily/laravel-invoices/issues",
- "source": "https://github.com/LaravelDaily/laravel-invoices/tree/3.0.2"
+ "source": "https://github.com/LaravelDaily/laravel-invoices/tree/4.0.0"
},
- "time": "2022-08-05T06:57:45+00:00"
+ "time": "2024-03-14T08:31:01+00:00"
},
{
"name": "league/commonmark",
- "version": "2.3.8",
+ "version": "2.5.3",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
- "reference": "c493585c130544c4e91d2e0e131e6d35cb0cbc47"
+ "reference": "b650144166dfa7703e62a22e493b853b58d874b0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/c493585c130544c4e91d2e0e131e6d35cb0cbc47",
- "reference": "c493585c130544c4e91d2e0e131e6d35cb0cbc47",
+ "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/b650144166dfa7703e62a22e493b853b58d874b0",
+ "reference": "b650144166dfa7703e62a22e493b853b58d874b0",
"shasum": ""
},
"require": {
@@ -2301,8 +2430,8 @@
},
"require-dev": {
"cebe/markdown": "^1.0",
- "commonmark/cmark": "0.30.0",
- "commonmark/commonmark.js": "0.30.0",
+ "commonmark/cmark": "0.31.1",
+ "commonmark/commonmark.js": "0.31.1",
"composer/package-versions-deprecated": "^1.8",
"embed/embed": "^4.4",
"erusev/parsedown": "^1.0",
@@ -2311,10 +2440,10 @@
"michelf/php-markdown": "^1.4 || ^2.0",
"nyholm/psr7": "^1.5",
"phpstan/phpstan": "^1.8.2",
- "phpunit/phpunit": "^9.5.21",
+ "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0",
"scrutinizer/ocular": "^1.8.1",
- "symfony/finder": "^5.3 | ^6.0",
- "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0",
+ "symfony/finder": "^5.3 | ^6.0 || ^7.0",
+ "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0",
"unleashedtech/php-coding-standard": "^3.1.1",
"vimeo/psalm": "^4.24.0 || ^5.0.0"
},
@@ -2324,7 +2453,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.4-dev"
+ "dev-main": "2.6-dev"
}
},
"autoload": {
@@ -2381,7 +2510,7 @@
"type": "tidelift"
}
],
- "time": "2022-12-10T16:02:17+00:00"
+ "time": "2024-08-16T11:46:16+00:00"
},
{
"name": "league/config",
@@ -2467,23 +2596,26 @@
},
{
"name": "league/flysystem",
- "version": "3.12.2",
+ "version": "3.29.1",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
- "reference": "f6377c709d2275ed6feaf63e44be7a7162b0e77f"
+ "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f6377c709d2275ed6feaf63e44be7a7162b0e77f",
- "reference": "f6377c709d2275ed6feaf63e44be7a7162b0e77f",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/edc1bb7c86fab0776c3287dbd19b5fa278347319",
+ "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319",
"shasum": ""
},
"require": {
+ "league/flysystem-local": "^3.0.0",
"league/mime-type-detection": "^1.0.0",
"php": "^8.0.2"
},
"conflict": {
+ "async-aws/core": "<1.19.0",
+ "async-aws/s3": "<1.14.0",
"aws/aws-sdk-php": "3.209.31 || 3.210.0",
"guzzlehttp/guzzle": "<7.0",
"guzzlehttp/ringphp": "<1.1.1",
@@ -2491,20 +2623,23 @@
"symfony/http-client": "<5.2"
},
"require-dev": {
- "async-aws/s3": "^1.5",
- "async-aws/simple-s3": "^1.1",
- "aws/aws-sdk-php": "^3.220.0",
+ "async-aws/s3": "^1.5 || ^2.0",
+ "async-aws/simple-s3": "^1.1 || ^2.0",
+ "aws/aws-sdk-php": "^3.295.10",
"composer/semver": "^3.0",
"ext-fileinfo": "*",
"ext-ftp": "*",
+ "ext-mongodb": "^1.3",
"ext-zip": "*",
"friendsofphp/php-cs-fixer": "^3.5",
"google/cloud-storage": "^1.23",
+ "guzzlehttp/psr7": "^2.6",
"microsoft/azure-storage-blob": "^1.1",
- "phpseclib/phpseclib": "^3.0.14",
- "phpstan/phpstan": "^0.12.26",
- "phpunit/phpunit": "^9.5.11",
- "sabre/dav": "^4.3.1"
+ "mongodb/mongodb": "^1.2",
+ "phpseclib/phpseclib": "^3.0.36",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^9.5.11|^10.0",
+ "sabre/dav": "^4.6.0"
},
"type": "library",
"autoload": {
@@ -2538,40 +2673,26 @@
],
"support": {
"issues": "https://github.com/thephpleague/flysystem/issues",
- "source": "https://github.com/thephpleague/flysystem/tree/3.12.2"
+ "source": "https://github.com/thephpleague/flysystem/tree/3.29.1"
},
- "funding": [
- {
- "url": "https://ecologi.com/frankdejonge",
- "type": "custom"
- },
- {
- "url": "https://github.com/frankdejonge",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/league/flysystem",
- "type": "tidelift"
- }
- ],
- "time": "2023-01-19T12:02:19+00:00"
+ "time": "2024-10-08T08:58:34+00:00"
},
{
"name": "league/flysystem-aws-s3-v3",
- "version": "3.12.2",
+ "version": "3.29.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git",
- "reference": "645e14e4a80bd2da8b01e57388e7296a695a80c2"
+ "reference": "c6ff6d4606e48249b63f269eba7fabdb584e76a9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/645e14e4a80bd2da8b01e57388e7296a695a80c2",
- "reference": "645e14e4a80bd2da8b01e57388e7296a695a80c2",
+ "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/c6ff6d4606e48249b63f269eba7fabdb584e76a9",
+ "reference": "c6ff6d4606e48249b63f269eba7fabdb584e76a9",
"shasum": ""
},
"require": {
- "aws/aws-sdk-php": "^3.220.0",
+ "aws/aws-sdk-php": "^3.295.10",
"league/flysystem": "^3.10.0",
"league/mime-type-detection": "^1.0.0",
"php": "^8.0.2"
@@ -2607,47 +2728,81 @@
"storage"
],
"support": {
- "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues",
- "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.12.2"
+ "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.29.0"
},
- "funding": [
- {
- "url": "https://ecologi.com/frankdejonge",
- "type": "custom"
- },
- {
- "url": "https://github.com/frankdejonge",
- "type": "github"
- },
+ "time": "2024-08-17T13:10:48+00:00"
+ },
+ {
+ "name": "league/flysystem-local",
+ "version": "3.29.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/flysystem-local.git",
+ "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/e0e8d52ce4b2ed154148453d321e97c8e931bd27",
+ "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27",
+ "shasum": ""
+ },
+ "require": {
+ "ext-fileinfo": "*",
+ "league/flysystem": "^3.0.0",
+ "league/mime-type-detection": "^1.0.0",
+ "php": "^8.0.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "League\\Flysystem\\Local\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
{
- "url": "https://tidelift.com/funding/github/packagist/league/flysystem",
- "type": "tidelift"
+ "name": "Frank de Jonge",
+ "email": "info@frankdejonge.nl"
}
],
- "time": "2023-01-17T14:15:08+00:00"
+ "description": "Local filesystem adapter for Flysystem.",
+ "keywords": [
+ "Flysystem",
+ "file",
+ "files",
+ "filesystem",
+ "local"
+ ],
+ "support": {
+ "source": "https://github.com/thephpleague/flysystem-local/tree/3.29.0"
+ },
+ "time": "2024-08-09T21:24:39+00:00"
},
{
"name": "league/mime-type-detection",
- "version": "1.11.0",
+ "version": "1.16.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/mime-type-detection.git",
- "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd"
+ "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd",
- "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd",
+ "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9",
+ "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9",
"shasum": ""
},
"require": {
"ext-fileinfo": "*",
- "php": "^7.2 || ^8.0"
+ "php": "^7.4 || ^8.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.2",
"phpstan/phpstan": "^0.12.68",
- "phpunit/phpunit": "^8.5.8 || ^9.3"
+ "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0"
},
"type": "library",
"autoload": {
@@ -2668,7 +2823,7 @@
"description": "Mime-type detection for Flysystem",
"support": {
"issues": "https://github.com/thephpleague/mime-type-detection/issues",
- "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0"
+ "source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0"
},
"funding": [
{
@@ -2680,7 +2835,7 @@
"type": "tidelift"
}
],
- "time": "2022-04-17T13:12:02+00:00"
+ "time": "2024-09-21T08:32:55+00:00"
},
{
"name": "league/oauth1-client",
@@ -2760,26 +2915,24 @@
},
{
"name": "masterminds/html5",
- "version": "2.7.6",
+ "version": "2.9.0",
"source": {
"type": "git",
"url": "https://github.com/Masterminds/html5-php.git",
- "reference": "897eb517a343a2281f11bc5556d6548db7d93947"
+ "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/897eb517a343a2281f11bc5556d6548db7d93947",
- "reference": "897eb517a343a2281f11bc5556d6548db7d93947",
+ "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f5ac2c0b0a2eefca70b2ce32a5809992227e75a6",
+ "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6",
"shasum": ""
},
"require": {
- "ext-ctype": "*",
"ext-dom": "*",
- "ext-libxml": "*",
"php": ">=5.3.0"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7"
+ "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9"
},
"type": "library",
"extra": {
@@ -2823,48 +2976,49 @@
],
"support": {
"issues": "https://github.com/Masterminds/html5-php/issues",
- "source": "https://github.com/Masterminds/html5-php/tree/2.7.6"
+ "source": "https://github.com/Masterminds/html5-php/tree/2.9.0"
},
- "time": "2022-08-18T16:18:26+00:00"
+ "time": "2024-03-31T07:05:07+00:00"
},
{
"name": "monolog/monolog",
- "version": "2.8.0",
+ "version": "3.8.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "720488632c590286b88b80e62aa3d3d551ad4a50"
+ "reference": "32e515fdc02cdafbe4593e30a9350d486b125b67"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50",
- "reference": "720488632c590286b88b80e62aa3d3d551ad4a50",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/32e515fdc02cdafbe4593e30a9350d486b125b67",
+ "reference": "32e515fdc02cdafbe4593e30a9350d486b125b67",
"shasum": ""
},
"require": {
- "php": ">=7.2",
- "psr/log": "^1.0.1 || ^2.0 || ^3.0"
+ "php": ">=8.1",
+ "psr/log": "^2.0 || ^3.0"
},
"provide": {
- "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0"
+ "psr/log-implementation": "3.0.0"
},
"require-dev": {
- "aws/aws-sdk-php": "^2.4.9 || ^3.0",
+ "aws/aws-sdk-php": "^3.0",
"doctrine/couchdb": "~1.0@dev",
"elasticsearch/elasticsearch": "^7 || ^8",
"ext-json": "*",
- "graylog2/gelf-php": "^1.4.2",
- "guzzlehttp/guzzle": "^7.4",
+ "graylog2/gelf-php": "^1.4.2 || ^2.0",
+ "guzzlehttp/guzzle": "^7.4.5",
"guzzlehttp/psr7": "^2.2",
"mongodb/mongodb": "^1.8",
"php-amqplib/php-amqplib": "~2.4 || ^3",
- "phpspec/prophecy": "^1.15",
- "phpstan/phpstan": "^0.12.91",
- "phpunit/phpunit": "^8.5.14",
- "predis/predis": "^1.1 || ^2.0",
- "rollbar/rollbar": "^1.3 || ^2 || ^3",
- "ruflin/elastica": "^7",
- "swiftmailer/swiftmailer": "^5.3|^6.0",
+ "php-console/php-console": "^3.1.8",
+ "phpstan/phpstan": "^2",
+ "phpstan/phpstan-deprecation-rules": "^2",
+ "phpstan/phpstan-strict-rules": "^2",
+ "phpunit/phpunit": "^10.5.17 || ^11.0.7",
+ "predis/predis": "^1.1 || ^2",
+ "rollbar/rollbar": "^4.0",
+ "ruflin/elastica": "^7 || ^8",
"symfony/mailer": "^5.4 || ^6",
"symfony/mime": "^5.4 || ^6"
},
@@ -2887,7 +3041,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.x-dev"
+ "dev-main": "3.x-dev"
}
},
"autoload": {
@@ -2915,7 +3069,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
- "source": "https://github.com/Seldaek/monolog/tree/2.8.0"
+ "source": "https://github.com/Seldaek/monolog/tree/3.8.0"
},
"funding": [
{
@@ -2927,29 +3081,29 @@
"type": "tidelift"
}
],
- "time": "2022-07-24T11:55:47+00:00"
+ "time": "2024-11-12T13:57:08+00:00"
},
{
"name": "mtdowling/jmespath.php",
- "version": "2.6.1",
+ "version": "2.8.0",
"source": {
"type": "git",
"url": "https://github.com/jmespath/jmespath.php.git",
- "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb"
+ "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/9b87907a81b87bc76d19a7fb2d61e61486ee9edb",
- "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb",
+ "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/a2a865e05d5f420b50cc2f85bb78d565db12a6bc",
+ "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc",
"shasum": ""
},
"require": {
- "php": "^5.4 || ^7.0 || ^8.0",
+ "php": "^7.2.5 || ^8.0",
"symfony/polyfill-mbstring": "^1.17"
},
"require-dev": {
- "composer/xdebug-handler": "^1.4 || ^2.0",
- "phpunit/phpunit": "^4.8.36 || ^7.5.15"
+ "composer/xdebug-handler": "^3.0.3",
+ "phpunit/phpunit": "^8.5.33"
},
"bin": [
"bin/jp.php"
@@ -2957,7 +3111,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.6-dev"
+ "dev-master": "2.8-dev"
}
},
"autoload": {
@@ -2973,6 +3127,11 @@
"MIT"
],
"authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
@@ -2986,43 +3145,47 @@
],
"support": {
"issues": "https://github.com/jmespath/jmespath.php/issues",
- "source": "https://github.com/jmespath/jmespath.php/tree/2.6.1"
+ "source": "https://github.com/jmespath/jmespath.php/tree/2.8.0"
},
- "time": "2021-06-14T00:11:39+00:00"
+ "time": "2024-09-04T18:46:31+00:00"
},
{
"name": "nesbot/carbon",
- "version": "2.65.0",
+ "version": "3.8.2",
"source": {
"type": "git",
"url": "https://github.com/briannesbitt/Carbon.git",
- "reference": "09acf64155c16dc6f580f36569ae89344e9734a3"
+ "reference": "e1268cdbc486d97ce23fef2c666dc3c6b6de9947"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/09acf64155c16dc6f580f36569ae89344e9734a3",
- "reference": "09acf64155c16dc6f580f36569ae89344e9734a3",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e1268cdbc486d97ce23fef2c666dc3c6b6de9947",
+ "reference": "e1268cdbc486d97ce23fef2c666dc3c6b6de9947",
"shasum": ""
},
"require": {
+ "carbonphp/carbon-doctrine-types": "<100.0",
"ext-json": "*",
- "php": "^7.1.8 || ^8.0",
+ "php": "^8.1",
+ "psr/clock": "^1.0",
+ "symfony/clock": "^6.3 || ^7.0",
"symfony/polyfill-mbstring": "^1.0",
- "symfony/polyfill-php80": "^1.16",
- "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0"
+ "symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0 || ^7.0"
+ },
+ "provide": {
+ "psr/clock-implementation": "1.0"
},
"require-dev": {
- "doctrine/dbal": "^2.0 || ^3.1.4",
- "doctrine/orm": "^2.7",
- "friendsofphp/php-cs-fixer": "^3.0",
- "kylekatarnls/multi-tester": "^2.0",
- "ondrejmirtes/better-reflection": "*",
- "phpmd/phpmd": "^2.9",
- "phpstan/extension-installer": "^1.0",
- "phpstan/phpstan": "^0.12.99 || ^1.7.14",
- "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6",
- "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20",
- "squizlabs/php_codesniffer": "^3.4"
+ "doctrine/dbal": "^3.6.3 || ^4.0",
+ "doctrine/orm": "^2.15.2 || ^3.0",
+ "friendsofphp/php-cs-fixer": "^3.57.2",
+ "kylekatarnls/multi-tester": "^2.5.3",
+ "ondrejmirtes/better-reflection": "^6.25.0.4",
+ "phpmd/phpmd": "^2.15.0",
+ "phpstan/extension-installer": "^1.3.1",
+ "phpstan/phpstan": "^1.11.2",
+ "phpunit/phpunit": "^10.5.20",
+ "squizlabs/php_codesniffer": "^3.9.0"
},
"bin": [
"bin/carbon"
@@ -3030,8 +3193,8 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-3.x": "3.x-dev",
- "dev-master": "2.x-dev"
+ "dev-master": "3.x-dev",
+ "dev-2.x": "2.x-dev"
},
"laravel": {
"providers": [
@@ -3090,35 +3253,35 @@
"type": "tidelift"
}
],
- "time": "2023-01-06T15:55:01+00:00"
+ "time": "2024-11-07T17:46:48+00:00"
},
{
"name": "nette/schema",
- "version": "v1.2.3",
+ "version": "v1.3.2",
"source": {
"type": "git",
"url": "https://github.com/nette/schema.git",
- "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f"
+ "reference": "da801d52f0354f70a638673c4a0f04e16529431d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nette/schema/zipball/abbdbb70e0245d5f3bf77874cea1dfb0c930d06f",
- "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f",
+ "url": "https://api.github.com/repos/nette/schema/zipball/da801d52f0354f70a638673c4a0f04e16529431d",
+ "reference": "da801d52f0354f70a638673c4a0f04e16529431d",
"shasum": ""
},
"require": {
- "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0",
- "php": ">=7.1 <8.3"
+ "nette/utils": "^4.0",
+ "php": "8.1 - 8.4"
},
"require-dev": {
- "nette/tester": "^2.3 || ^2.4",
+ "nette/tester": "^2.5.2",
"phpstan/phpstan-nette": "^1.0",
- "tracy/tracy": "^2.7"
+ "tracy/tracy": "^2.8"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.2-dev"
+ "dev-master": "1.3-dev"
}
},
"autoload": {
@@ -3150,35 +3313,36 @@
],
"support": {
"issues": "https://github.com/nette/schema/issues",
- "source": "https://github.com/nette/schema/tree/v1.2.3"
+ "source": "https://github.com/nette/schema/tree/v1.3.2"
},
- "time": "2022-10-13T01:24:26+00:00"
+ "time": "2024-10-06T23:10:23+00:00"
},
{
"name": "nette/utils",
- "version": "v3.2.9",
+ "version": "v4.0.5",
"source": {
"type": "git",
"url": "https://github.com/nette/utils.git",
- "reference": "c91bac3470c34b2ecd5400f6e6fdf0b64a836a5c"
+ "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nette/utils/zipball/c91bac3470c34b2ecd5400f6e6fdf0b64a836a5c",
- "reference": "c91bac3470c34b2ecd5400f6e6fdf0b64a836a5c",
+ "url": "https://api.github.com/repos/nette/utils/zipball/736c567e257dbe0fcf6ce81b4d6dbe05c6899f96",
+ "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96",
"shasum": ""
},
"require": {
- "php": ">=7.2 <8.3"
+ "php": "8.0 - 8.4"
},
"conflict": {
- "nette/di": "<3.0.6"
+ "nette/finder": "<3",
+ "nette/schema": "<1.2.2"
},
"require-dev": {
"jetbrains/phpstorm-attributes": "dev-master",
- "nette/tester": "~2.0",
+ "nette/tester": "^2.5",
"phpstan/phpstan": "^1.0",
- "tracy/tracy": "^2.3"
+ "tracy/tracy": "^2.9"
},
"suggest": {
"ext-gd": "to use Image",
@@ -3186,13 +3350,12 @@
"ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()",
"ext-json": "to use Nette\\Utils\\Json",
"ext-mbstring": "to use Strings::lower() etc...",
- "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()",
- "ext-xml": "to use Strings::length() etc. when mbstring is not available"
+ "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.2-dev"
+ "dev-master": "4.0-dev"
}
},
"autoload": {
@@ -3236,31 +3399,33 @@
],
"support": {
"issues": "https://github.com/nette/utils/issues",
- "source": "https://github.com/nette/utils/tree/v3.2.9"
+ "source": "https://github.com/nette/utils/tree/v4.0.5"
},
- "time": "2023-01-18T03:26:20+00:00"
+ "time": "2024-08-07T15:39:19+00:00"
},
{
"name": "nikic/php-parser",
- "version": "v4.15.3",
+ "version": "v5.3.1",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039"
+ "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/570e980a201d8ed0236b0a62ddf2c9cbb2034039",
- "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b",
+ "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b",
"shasum": ""
},
"require": {
+ "ext-ctype": "*",
+ "ext-json": "*",
"ext-tokenizer": "*",
- "php": ">=7.0"
+ "php": ">=7.4"
},
"require-dev": {
"ircmaxell/php-yacc": "^0.0.7",
- "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ "phpunit/phpunit": "^9.0"
},
"bin": [
"bin/php-parse"
@@ -3268,7 +3433,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.9-dev"
+ "dev-master": "5.0-dev"
}
},
"autoload": {
@@ -3292,39 +3457,37 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.3"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1"
},
- "time": "2023-01-16T22:05:37+00:00"
+ "time": "2024-10-08T18:51:32+00:00"
},
{
"name": "nunomaduro/termwind",
- "version": "v1.15.0",
+ "version": "v2.2.0",
"source": {
"type": "git",
"url": "https://github.com/nunomaduro/termwind.git",
- "reference": "594ab862396c16ead000de0c3c38f4a5cbe1938d"
+ "reference": "42c84e4e8090766bbd6445d06cd6e57650626ea3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/594ab862396c16ead000de0c3c38f4a5cbe1938d",
- "reference": "594ab862396c16ead000de0c3c38f4a5cbe1938d",
+ "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/42c84e4e8090766bbd6445d06cd6e57650626ea3",
+ "reference": "42c84e4e8090766bbd6445d06cd6e57650626ea3",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
- "php": "^8.0",
- "symfony/console": "^5.3.0|^6.0.0"
+ "php": "^8.2",
+ "symfony/console": "^7.1.5"
},
"require-dev": {
- "ergebnis/phpstan-rules": "^1.0.",
- "illuminate/console": "^8.0|^9.0",
- "illuminate/support": "^8.0|^9.0",
- "laravel/pint": "^1.0.0",
- "pestphp/pest": "^1.21.0",
- "pestphp/pest-plugin-mock": "^1.0",
- "phpstan/phpstan": "^1.4.6",
- "phpstan/phpstan-strict-rules": "^1.1.0",
- "symfony/var-dumper": "^5.2.7|^6.0.0",
+ "illuminate/console": "^11.28.0",
+ "laravel/pint": "^1.18.1",
+ "mockery/mockery": "^1.6.12",
+ "pestphp/pest": "^2.36.0",
+ "phpstan/phpstan": "^1.12.6",
+ "phpstan/phpstan-strict-rules": "^1.6.1",
+ "symfony/var-dumper": "^7.1.5",
"thecodingmachine/phpstan-strict-rules": "^1.0.0"
},
"type": "library",
@@ -3333,6 +3496,9 @@
"providers": [
"Termwind\\Laravel\\TermwindServiceProvider"
]
+ },
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
}
},
"autoload": {
@@ -3364,7 +3530,7 @@
],
"support": {
"issues": "https://github.com/nunomaduro/termwind/issues",
- "source": "https://github.com/nunomaduro/termwind/tree/v1.15.0"
+ "source": "https://github.com/nunomaduro/termwind/tree/v2.2.0"
},
"funding": [
{
@@ -3380,7 +3546,74 @@
"type": "github"
}
],
- "time": "2022-12-20T19:00:15+00:00"
+ "time": "2024-10-15T16:15:16+00:00"
+ },
+ {
+ "name": "paragonie/constant_time_encoding",
+ "version": "v3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paragonie/constant_time_encoding.git",
+ "reference": "df1e7fde177501eee2037dd159cf04f5f301a512"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/df1e7fde177501eee2037dd159cf04f5f301a512",
+ "reference": "df1e7fde177501eee2037dd159cf04f5f301a512",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9",
+ "vimeo/psalm": "^4|^5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "ParagonIE\\ConstantTime\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paragon Initiative Enterprises",
+ "email": "security@paragonie.com",
+ "homepage": "https://paragonie.com",
+ "role": "Maintainer"
+ },
+ {
+ "name": "Steve 'Sc00bz' Thomas",
+ "email": "steve@tobtu.com",
+ "homepage": "https://www.tobtu.com",
+ "role": "Original Developer"
+ }
+ ],
+ "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)",
+ "keywords": [
+ "base16",
+ "base32",
+ "base32_decode",
+ "base32_encode",
+ "base64",
+ "base64_decode",
+ "base64_encode",
+ "bin2hex",
+ "encoding",
+ "hex",
+ "hex2bin",
+ "rfc4648"
+ ],
+ "support": {
+ "email": "info@paragonie.com",
+ "issues": "https://github.com/paragonie/constant_time_encoding/issues",
+ "source": "https://github.com/paragonie/constant_time_encoding"
+ },
+ "time": "2024-05-08T12:36:18+00:00"
},
{
"name": "paragonie/random_compat",
@@ -3482,7 +3715,7 @@
"support": {
"source": "https://github.com/paypal/Checkout-PHP-SDK/tree/1.0.2"
},
- "abandoned": true,
+ "abandoned": "paypal/paypal-server-sdk",
"time": "2021-09-21T20:57:38+00:00"
},
{
@@ -3529,88 +3762,80 @@
"time": "2021-09-14T21:35:26+00:00"
},
{
- "name": "paypal/rest-api-sdk-php",
- "version": "1.14.0",
+ "name": "phenx/php-font-lib",
+ "version": "0.5.6",
"source": {
"type": "git",
- "url": "https://github.com/paypal/PayPal-PHP-SDK.git",
- "reference": "72e2f2466975bf128a31e02b15110180f059fc04"
+ "url": "https://github.com/dompdf/php-font-lib.git",
+ "reference": "a1681e9793040740a405ac5b189275059e2a9863"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/paypal/PayPal-PHP-SDK/zipball/72e2f2466975bf128a31e02b15110180f059fc04",
- "reference": "72e2f2466975bf128a31e02b15110180f059fc04",
+ "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/a1681e9793040740a405ac5b189275059e2a9863",
+ "reference": "a1681e9793040740a405ac5b189275059e2a9863",
"shasum": ""
},
"require": {
- "ext-curl": "*",
- "ext-json": "*",
- "php": ">=5.3.0",
- "psr/log": "^1.0.0"
+ "ext-mbstring": "*"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.35"
+ "symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6"
},
"type": "library",
"autoload": {
- "psr-0": {
- "PayPal": "lib/"
+ "psr-4": {
+ "FontLib\\": "src/FontLib"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "Apache-2.0"
+ "LGPL-2.1-or-later"
],
"authors": [
{
- "name": "PayPal",
- "homepage": "https://github.com/paypal/rest-api-sdk-php/contributors"
+ "name": "Fabien Ménager",
+ "email": "fabien.menager@gmail.com"
}
],
- "description": "PayPal's PHP SDK for REST APIs",
- "homepage": "http://paypal.github.io/PayPal-PHP-SDK/",
- "keywords": [
- "payments",
- "paypal",
- "rest",
- "sdk"
- ],
+ "description": "A library to read, parse, export and make subsets of different types of font files.",
+ "homepage": "https://github.com/PhenX/php-font-lib",
"support": {
- "issues": "https://github.com/paypal/PayPal-PHP-SDK/issues",
- "source": "https://github.com/paypal/PayPal-PHP-SDK/tree/master"
+ "issues": "https://github.com/dompdf/php-font-lib/issues",
+ "source": "https://github.com/dompdf/php-font-lib/tree/0.5.6"
},
- "abandoned": true,
- "time": "2019-01-04T20:04:25+00:00"
+ "time": "2024-01-29T14:45:26+00:00"
},
{
- "name": "phenx/php-font-lib",
+ "name": "phenx/php-svg-lib",
"version": "0.5.4",
"source": {
"type": "git",
- "url": "https://github.com/dompdf/php-font-lib.git",
- "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4"
+ "url": "https://github.com/dompdf/php-svg-lib.git",
+ "reference": "46b25da81613a9cf43c83b2a8c2c1bdab27df691"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/dd448ad1ce34c63d09baccd05415e361300c35b4",
- "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4",
+ "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/46b25da81613a9cf43c83b2a8c2c1bdab27df691",
+ "reference": "46b25da81613a9cf43c83b2a8c2c1bdab27df691",
"shasum": ""
},
"require": {
- "ext-mbstring": "*"
+ "ext-mbstring": "*",
+ "php": "^7.1 || ^8.0",
+ "sabberworm/php-css-parser": "^8.4"
},
"require-dev": {
- "symfony/phpunit-bridge": "^3 || ^4 || ^5"
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5"
},
"type": "library",
"autoload": {
"psr-4": {
- "FontLib\\": "src/FontLib"
+ "Svg\\": "src/Svg"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "LGPL-3.0"
+ "LGPL-3.0-or-later"
],
"authors": [
{
@@ -3618,86 +3843,151 @@
"email": "fabien.menager@gmail.com"
}
],
- "description": "A library to read, parse, export and make subsets of different types of font files.",
- "homepage": "https://github.com/PhenX/php-font-lib",
+ "description": "A library to read, parse and export to PDF SVG files.",
+ "homepage": "https://github.com/PhenX/php-svg-lib",
"support": {
- "issues": "https://github.com/dompdf/php-font-lib/issues",
- "source": "https://github.com/dompdf/php-font-lib/tree/0.5.4"
+ "issues": "https://github.com/dompdf/php-svg-lib/issues",
+ "source": "https://github.com/dompdf/php-svg-lib/tree/0.5.4"
},
- "time": "2021-12-17T19:44:54+00:00"
+ "time": "2024-04-08T12:52:34+00:00"
},
{
- "name": "phenx/php-svg-lib",
- "version": "0.5.0",
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
"source": {
"type": "git",
- "url": "https://github.com/dompdf/php-svg-lib.git",
- "reference": "76876c6cf3080bcb6f249d7d59705108166a6685"
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/76876c6cf3080bcb6f249d7d59705108166a6685",
- "reference": "76876c6cf3080bcb6f249d7d59705108166a6685",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
"shasum": ""
},
"require": {
- "ext-mbstring": "*",
- "php": "^7.1 || ^8.0",
- "sabberworm/php-css-parser": "^8.4"
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ },
+ "time": "2020-06-27T09:03:43+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a",
+ "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/deprecations": "^1.0",
+ "php": "^7.3 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0",
+ "phpstan/phpdoc-parser": "^1.18|^2.0"
},
"require-dev": {
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5"
+ "ext-tokenizer": "*",
+ "phpbench/phpbench": "^1.2",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpunit/phpunit": "^9.5",
+ "rector/rector": "^0.13.9",
+ "vimeo/psalm": "^4.25"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
- "Svg\\": "src/Svg"
+ "phpDocumentor\\Reflection\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "LGPL-3.0"
+ "MIT"
],
"authors": [
{
- "name": "Fabien Ménager",
- "email": "fabien.menager@gmail.com"
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
}
],
- "description": "A library to read, parse and export to PDF SVG files.",
- "homepage": "https://github.com/PhenX/php-svg-lib",
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"support": {
- "issues": "https://github.com/dompdf/php-svg-lib/issues",
- "source": "https://github.com/dompdf/php-svg-lib/tree/0.5.0"
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.10.0"
},
- "time": "2022-09-06T12:16:56+00:00"
+ "time": "2024-11-09T15:12:26+00:00"
},
{
"name": "phpoption/phpoption",
- "version": "1.9.0",
+ "version": "1.9.3",
"source": {
"type": "git",
"url": "https://github.com/schmittjoh/php-option.git",
- "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab"
+ "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dc5ff11e274a90cc1c743f66c9ad700ce50db9ab",
- "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab",
+ "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54",
+ "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54",
"shasum": ""
},
"require": {
"php": "^7.2.5 || ^8.0"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.8",
- "phpunit/phpunit": "^8.5.28 || ^9.5.21"
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28"
},
"type": "library",
"extra": {
"bamarni-bin": {
"bin-links": true,
- "forward-command": true
+ "forward-command": false
},
"branch-alias": {
"dev-master": "1.9-dev"
@@ -3732,20 +4022,238 @@
"type"
],
"support": {
- "issues": "https://github.com/schmittjoh/php-option/issues",
- "source": "https://github.com/schmittjoh/php-option/tree/1.9.0"
+ "issues": "https://github.com/schmittjoh/php-option/issues",
+ "source": "https://github.com/schmittjoh/php-option/tree/1.9.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-07-20T21:41:07+00:00"
+ },
+ {
+ "name": "phpseclib/phpseclib",
+ "version": "3.0.42",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpseclib/phpseclib.git",
+ "reference": "db92f1b1987b12b13f248fe76c3a52cadb67bb98"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/db92f1b1987b12b13f248fe76c3a52cadb67bb98",
+ "reference": "db92f1b1987b12b13f248fe76c3a52cadb67bb98",
+ "shasum": ""
+ },
+ "require": {
+ "paragonie/constant_time_encoding": "^1|^2|^3",
+ "paragonie/random_compat": "^1.4|^2.0|^9.99.99",
+ "php": ">=5.6.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "*"
+ },
+ "suggest": {
+ "ext-dom": "Install the DOM extension to load XML formatted public keys.",
+ "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.",
+ "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.",
+ "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
+ "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "phpseclib/bootstrap.php"
+ ],
+ "psr-4": {
+ "phpseclib3\\": "phpseclib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jim Wigginton",
+ "email": "terrafrost@php.net",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Patrick Monnerat",
+ "email": "pm@datasphere.ch",
+ "role": "Developer"
+ },
+ {
+ "name": "Andreas Fischer",
+ "email": "bantu@phpbb.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Hans-Jürgen Petrich",
+ "email": "petrich@tronic-media.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Graham Campbell",
+ "email": "graham@alt-three.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.",
+ "homepage": "http://phpseclib.sourceforge.net",
+ "keywords": [
+ "BigInteger",
+ "aes",
+ "asn.1",
+ "asn1",
+ "blowfish",
+ "crypto",
+ "cryptography",
+ "encryption",
+ "rsa",
+ "security",
+ "sftp",
+ "signature",
+ "signing",
+ "ssh",
+ "twofish",
+ "x.509",
+ "x509"
+ ],
+ "support": {
+ "issues": "https://github.com/phpseclib/phpseclib/issues",
+ "source": "https://github.com/phpseclib/phpseclib/tree/3.0.42"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/terrafrost",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/phpseclib",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-16T03:06:04+00:00"
+ },
+ {
+ "name": "phpstan/phpdoc-parser",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpdoc-parser.git",
+ "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/c00d78fb6b29658347f9d37ebe104bffadf36299",
+ "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^2.0",
+ "nikic/php-parser": "^5.3.0",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^2.0",
+ "phpstan/phpstan-phpunit": "^2.0",
+ "phpstan/phpstan-strict-rules": "^2.0",
+ "phpunit/phpunit": "^9.6",
+ "symfony/process": "^5.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "PHPStan\\PhpDocParser\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPDoc parser with support for nullable, intersection and generic types",
+ "support": {
+ "issues": "https://github.com/phpstan/phpdoc-parser/issues",
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.0"
+ },
+ "time": "2024-10-13T11:29:49+00:00"
+ },
+ {
+ "name": "predis/predis",
+ "version": "v2.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/predis/predis.git",
+ "reference": "b1d3255ed9ad4d7254f9f9bba386c99f4bb983d1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/predis/predis/zipball/b1d3255ed9ad4d7254f9f9bba386c99f4bb983d1",
+ "reference": "b1d3255ed9ad4d7254f9f9bba386c99f4bb983d1",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.3",
+ "phpstan/phpstan": "^1.9",
+ "phpunit/phpunit": "^8.0 || ~9.4.4"
+ },
+ "suggest": {
+ "ext-relay": "Faster connection with in-memory caching (>=0.6.2)"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Predis\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Till Krüss",
+ "homepage": "https://till.im",
+ "role": "Maintainer"
+ }
+ ],
+ "description": "A flexible and feature-complete Redis client for PHP.",
+ "homepage": "http://github.com/predis/predis",
+ "keywords": [
+ "nosql",
+ "predis",
+ "redis"
+ ],
+ "support": {
+ "issues": "https://github.com/predis/predis/issues",
+ "source": "https://github.com/predis/predis/tree/v2.2.2"
},
"funding": [
{
- "url": "https://github.com/GrahamCampbell",
+ "url": "https://github.com/sponsors/tillkruss",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption",
- "type": "tidelift"
}
],
- "time": "2022-07-30T15:51:26+00:00"
+ "time": "2023-09-13T16:42:03+00:00"
},
{
"name": "psr/cache",
@@ -3796,6 +4304,54 @@
},
"time": "2021-02-03T23:26:27+00:00"
},
+ {
+ "name": "psr/clock",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/clock.git",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Clock\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for reading the clock.",
+ "homepage": "https://github.com/php-fig/clock",
+ "keywords": [
+ "clock",
+ "now",
+ "psr",
+ "psr-20",
+ "time"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/clock/issues",
+ "source": "https://github.com/php-fig/clock/tree/1.0.0"
+ },
+ "time": "2022-11-25T14:36:26+00:00"
+ },
{
"name": "psr/container",
"version": "2.0.2",
@@ -3901,21 +4457,21 @@
},
{
"name": "psr/http-client",
- "version": "1.0.1",
+ "version": "1.0.3",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-client.git",
- "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
+ "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
- "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
+ "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
+ "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
"shasum": ""
},
"require": {
"php": "^7.0 || ^8.0",
- "psr/http-message": "^1.0"
+ "psr/http-message": "^1.0 || ^2.0"
},
"type": "library",
"extra": {
@@ -3935,7 +4491,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for HTTP clients",
@@ -3947,27 +4503,27 @@
"psr-18"
],
"support": {
- "source": "https://github.com/php-fig/http-client/tree/master"
+ "source": "https://github.com/php-fig/http-client"
},
- "time": "2020-06-29T06:28:15+00:00"
+ "time": "2023-09-23T14:17:50+00:00"
},
{
"name": "psr/http-factory",
- "version": "1.0.1",
+ "version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-factory.git",
- "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be"
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
- "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
"shasum": ""
},
"require": {
- "php": ">=7.0.0",
- "psr/http-message": "^1.0"
+ "php": ">=7.1",
+ "psr/http-message": "^1.0 || ^2.0"
},
"type": "library",
"extra": {
@@ -3987,10 +4543,10 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
- "description": "Common interfaces for PSR-7 HTTP message factories",
+ "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
"keywords": [
"factory",
"http",
@@ -4002,31 +4558,31 @@
"response"
],
"support": {
- "source": "https://github.com/php-fig/http-factory/tree/master"
+ "source": "https://github.com/php-fig/http-factory"
},
- "time": "2019-04-30T12:38:16+00:00"
+ "time": "2024-04-15T12:06:14+00:00"
},
{
"name": "psr/http-message",
- "version": "1.0.1",
+ "version": "2.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-message.git",
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": "^7.2 || ^8.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "2.0.x-dev"
}
},
"autoload": {
@@ -4041,7 +4597,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for HTTP messages",
@@ -4055,36 +4611,36 @@
"response"
],
"support": {
- "source": "https://github.com/php-fig/http-message/tree/master"
+ "source": "https://github.com/php-fig/http-message/tree/2.0"
},
- "time": "2016-08-06T14:39:51+00:00"
+ "time": "2023-04-04T09:54:51+00:00"
},
{
"name": "psr/log",
- "version": "1.1.4",
+ "version": "3.0.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
- "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": ">=8.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.1.x-dev"
+ "dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
- "Psr\\Log\\": "Psr/Log/"
+ "Psr\\Log\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -4105,9 +4661,9 @@
"psr-3"
],
"support": {
- "source": "https://github.com/php-fig/log/tree/1.1.4"
+ "source": "https://github.com/php-fig/log/tree/3.0.2"
},
- "time": "2021-05-03T11:20:27+00:00"
+ "time": "2024-09-11T13:17:53+00:00"
},
{
"name": "psr/simple-cache",
@@ -4162,25 +4718,25 @@
},
{
"name": "psy/psysh",
- "version": "v0.11.10",
+ "version": "v0.12.4",
"source": {
"type": "git",
"url": "https://github.com/bobthecow/psysh.git",
- "reference": "e9eadffbed9c9deb5426fd107faae0452bf20a36"
+ "reference": "2fd717afa05341b4f8152547f142cd2f130f6818"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bobthecow/psysh/zipball/e9eadffbed9c9deb5426fd107faae0452bf20a36",
- "reference": "e9eadffbed9c9deb5426fd107faae0452bf20a36",
+ "url": "https://api.github.com/repos/bobthecow/psysh/zipball/2fd717afa05341b4f8152547f142cd2f130f6818",
+ "reference": "2fd717afa05341b4f8152547f142cd2f130f6818",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-tokenizer": "*",
- "nikic/php-parser": "^4.0 || ^3.1",
- "php": "^8.0 || ^7.0.8",
- "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4",
- "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4"
+ "nikic/php-parser": "^5.0 || ^4.0",
+ "php": "^8.0 || ^7.4",
+ "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4",
+ "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4"
},
"conflict": {
"symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4"
@@ -4191,8 +4747,7 @@
"suggest": {
"ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)",
"ext-pdo-sqlite": "The doc command requires SQLite to work.",
- "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.",
- "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history."
+ "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well."
},
"bin": [
"bin/psysh"
@@ -4200,7 +4755,11 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "0.11.x-dev"
+ "dev-main": "0.12.x-dev"
+ },
+ "bamarni-bin": {
+ "bin-links": false,
+ "forward-command": false
}
},
"autoload": {
@@ -4232,33 +4791,33 @@
],
"support": {
"issues": "https://github.com/bobthecow/psysh/issues",
- "source": "https://github.com/bobthecow/psysh/tree/v0.11.10"
+ "source": "https://github.com/bobthecow/psysh/tree/v0.12.4"
},
- "time": "2022-12-23T17:47:18+00:00"
+ "time": "2024-06-10T01:18:23+00:00"
},
{
"name": "qirolab/laravel-themer",
- "version": "2.0.2",
+ "version": "2.3.3",
"source": {
"type": "git",
"url": "https://github.com/qirolab/laravel-themer.git",
- "reference": "9c4e17fe7334c921bf5c57395d926154cc25a1e8"
+ "reference": "d1ad2eae0068c026fcb5ebfe5391c280f5ace361"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/qirolab/laravel-themer/zipball/9c4e17fe7334c921bf5c57395d926154cc25a1e8",
- "reference": "9c4e17fe7334c921bf5c57395d926154cc25a1e8",
+ "url": "https://api.github.com/repos/qirolab/laravel-themer/zipball/d1ad2eae0068c026fcb5ebfe5391c280f5ace361",
+ "reference": "d1ad2eae0068c026fcb5ebfe5391c280f5ace361",
"shasum": ""
},
"require": {
"facade/ignition-contracts": "^1.0",
- "illuminate/support": "^9.19",
+ "illuminate/support": "^9.19|^10.0|^11.0",
"php": ">=7.1.0"
},
"require-dev": {
- "orchestra/testbench": "^7.0",
- "phpunit/phpunit": "^8.3|^9.0",
- "vimeo/psalm": "^4.0"
+ "orchestra/testbench": "^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^8.3|^9.0|^10.5",
+ "vimeo/psalm": "^4.0|^5.22"
},
"type": "library",
"extra": {
@@ -4296,7 +4855,7 @@
],
"support": {
"issues": "https://github.com/qirolab/laravel-themer/issues",
- "source": "https://github.com/qirolab/laravel-themer/tree/2.0.2"
+ "source": "https://github.com/qirolab/laravel-themer/tree/2.3.3"
},
"funding": [
{
@@ -4304,7 +4863,7 @@
"type": "other"
}
],
- "time": "2022-09-03T21:30:32+00:00"
+ "time": "2024-05-15T15:29:58+00:00"
},
{
"name": "ralouphie/getallheaders",
@@ -4441,20 +5000,20 @@
},
{
"name": "ramsey/uuid",
- "version": "4.7.3",
+ "version": "4.7.6",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "433b2014e3979047db08a17a205f410ba3869cf2"
+ "reference": "91039bc1faa45ba123c4328958e620d382ec7088"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/433b2014e3979047db08a17a205f410ba3869cf2",
- "reference": "433b2014e3979047db08a17a205f410ba3869cf2",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088",
+ "reference": "91039bc1faa45ba123c4328958e620d382ec7088",
"shasum": ""
},
"require": {
- "brick/math": "^0.8.8 || ^0.9 || ^0.10",
+ "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12",
"ext-json": "*",
"php": "^8.0",
"ramsey/collection": "^1.2 || ^2.0"
@@ -4517,7 +5076,7 @@
],
"support": {
"issues": "https://github.com/ramsey/uuid/issues",
- "source": "https://github.com/ramsey/uuid/tree/4.7.3"
+ "source": "https://github.com/ramsey/uuid/tree/4.7.6"
},
"funding": [
{
@@ -4529,34 +5088,38 @@
"type": "tidelift"
}
],
- "time": "2023-01-12T18:13:24+00:00"
+ "time": "2024-04-27T21:32:50+00:00"
},
{
"name": "sabberworm/php-css-parser",
- "version": "8.4.0",
+ "version": "v8.7.0",
"source": {
"type": "git",
- "url": "https://github.com/sabberworm/PHP-CSS-Parser.git",
- "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30"
+ "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git",
+ "reference": "f414ff953002a9b18e3a116f5e462c56f21237cf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30",
- "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30",
+ "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/f414ff953002a9b18e3a116f5e462c56f21237cf",
+ "reference": "f414ff953002a9b18e3a116f5e462c56f21237cf",
"shasum": ""
},
"require": {
"ext-iconv": "*",
- "php": ">=5.6.20"
+ "php": "^5.6.20 || ^7.0.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
},
"require-dev": {
- "codacy/coverage": "^1.4",
- "phpunit/phpunit": "^4.8.36"
+ "phpunit/phpunit": "5.7.27 || 6.5.14 || 7.5.20 || 8.5.40"
},
"suggest": {
"ext-mbstring": "for parsing UTF-8 CSS"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "9.0.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
"Sabberworm\\CSS\\": "src/"
@@ -4569,6 +5132,14 @@
"authors": [
{
"name": "Raphael Schweikert"
+ },
+ {
+ "name": "Oliver Klee",
+ "email": "github@oliverklee.de"
+ },
+ {
+ "name": "Jake Hotson",
+ "email": "jake.github@qzdesign.co.uk"
}
],
"description": "Parser for CSS Files written in PHP",
@@ -4579,28 +5150,28 @@
"stylesheet"
],
"support": {
- "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues",
- "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0"
+ "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues",
+ "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.7.0"
},
- "time": "2021-12-11T13:40:54+00:00"
+ "time": "2024-10-27T17:38:32+00:00"
},
{
"name": "socialiteproviders/discord",
- "version": "4.1.1",
+ "version": "4.2.0",
"source": {
"type": "git",
"url": "https://github.com/SocialiteProviders/Discord.git",
- "reference": "c6eddeb07ace7473e82d02d4db852dfacf5ef574"
+ "reference": "c71c379acfdca5ba4aa65a3db5ae5222852a919c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/SocialiteProviders/Discord/zipball/c6eddeb07ace7473e82d02d4db852dfacf5ef574",
- "reference": "c6eddeb07ace7473e82d02d4db852dfacf5ef574",
+ "url": "https://api.github.com/repos/SocialiteProviders/Discord/zipball/c71c379acfdca5ba4aa65a3db5ae5222852a919c",
+ "reference": "c71c379acfdca5ba4aa65a3db5ae5222852a919c",
"shasum": ""
},
"require": {
"ext-json": "*",
- "php": "^7.2 || ^8.0",
+ "php": "^7.4 || ^8.0",
"socialiteproviders/manager": "~4.0"
},
"type": "library",
@@ -4620,33 +5191,42 @@
}
],
"description": "Discord OAuth2 Provider for Laravel Socialite",
+ "keywords": [
+ "discord",
+ "laravel",
+ "oauth",
+ "provider",
+ "socialite"
+ ],
"support": {
- "source": "https://github.com/SocialiteProviders/Discord/tree/4.1.1"
+ "docs": "https://socialiteproviders.com/discord",
+ "issues": "https://github.com/socialiteproviders/providers/issues",
+ "source": "https://github.com/socialiteproviders/providers"
},
- "time": "2021-01-05T22:03:58+00:00"
+ "time": "2023-07-24T23:28:47+00:00"
},
{
"name": "socialiteproviders/manager",
- "version": "v4.2.0",
+ "version": "v4.7.0",
"source": {
"type": "git",
"url": "https://github.com/SocialiteProviders/Manager.git",
- "reference": "738276dfbc2b68a9145db7b3df1588d53db528a1"
+ "reference": "ab0691b82cec77efd90154c78f1854903455c82f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/738276dfbc2b68a9145db7b3df1588d53db528a1",
- "reference": "738276dfbc2b68a9145db7b3df1588d53db528a1",
+ "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/ab0691b82cec77efd90154c78f1854903455c82f",
+ "reference": "ab0691b82cec77efd90154c78f1854903455c82f",
"shasum": ""
},
"require": {
- "illuminate/support": "^6.0 || ^7.0 || ^8.0 || ^9.0",
- "laravel/socialite": "~5.0",
- "php": "^7.4 || ^8.0"
+ "illuminate/support": "^8.0 || ^9.0 || ^10.0 || ^11.0",
+ "laravel/socialite": "^5.5",
+ "php": "^8.0"
},
"require-dev": {
"mockery/mockery": "^1.2",
- "phpunit/phpunit": "^6.0 || ^9.0"
+ "phpunit/phpunit": "^9.0"
},
"type": "library",
"extra": {
@@ -4697,33 +5277,33 @@
"issues": "https://github.com/socialiteproviders/manager/issues",
"source": "https://github.com/socialiteproviders/manager"
},
- "time": "2022-09-02T10:20:10+00:00"
+ "time": "2024-11-10T01:56:18+00:00"
},
{
"name": "spatie/laravel-activitylog",
- "version": "4.7.2",
+ "version": "4.9.0",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-activitylog.git",
- "reference": "eee61436e2984119fd71fc338a45ec7d68e3b548"
+ "reference": "e0fc28178515a5396f48e107ed697719189bbe02"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/laravel-activitylog/zipball/eee61436e2984119fd71fc338a45ec7d68e3b548",
- "reference": "eee61436e2984119fd71fc338a45ec7d68e3b548",
+ "url": "https://api.github.com/repos/spatie/laravel-activitylog/zipball/e0fc28178515a5396f48e107ed697719189bbe02",
+ "reference": "e0fc28178515a5396f48e107ed697719189bbe02",
"shasum": ""
},
"require": {
- "illuminate/config": "^8.0 || ^9.0",
- "illuminate/database": "^8.69 || ^9.27",
- "illuminate/support": "^8.0 || ^9.0",
- "php": "^8.0",
+ "illuminate/config": "^8.0 || ^9.0 || ^10.0 || ^11.0",
+ "illuminate/database": "^8.69 || ^9.27 || ^10.0 || ^11.0",
+ "illuminate/support": "^8.0 || ^9.0 || ^10.0 || ^11.0",
+ "php": "^8.1",
"spatie/laravel-package-tools": "^1.6.3"
},
"require-dev": {
"ext-json": "*",
- "orchestra/testbench": "^6.23 || ^7.0",
- "pestphp/pest": "^1.20"
+ "orchestra/testbench": "^6.23 || ^7.0 || ^8.0 || ^9.0",
+ "pestphp/pest": "^1.20 || ^2.0"
},
"type": "library",
"extra": {
@@ -4776,7 +5356,7 @@
],
"support": {
"issues": "https://github.com/spatie/laravel-activitylog/issues",
- "source": "https://github.com/spatie/laravel-activitylog/tree/4.7.2"
+ "source": "https://github.com/spatie/laravel-activitylog/tree/4.9.0"
},
"funding": [
{
@@ -4788,24 +5368,24 @@
"type": "github"
}
],
- "time": "2022-11-14T12:16:46+00:00"
+ "time": "2024-10-18T13:38:47+00:00"
},
{
"name": "spatie/laravel-package-tools",
- "version": "1.14.0",
+ "version": "1.16.5",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-package-tools.git",
- "reference": "9964e65c318c30577ca1b91469f739d2b381359b"
+ "reference": "c7413972cf22ffdff97b68499c22baa04eddb6a2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/9964e65c318c30577ca1b91469f739d2b381359b",
- "reference": "9964e65c318c30577ca1b91469f739d2b381359b",
+ "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/c7413972cf22ffdff97b68499c22baa04eddb6a2",
+ "reference": "c7413972cf22ffdff97b68499c22baa04eddb6a2",
"shasum": ""
},
"require": {
- "illuminate/contracts": "^9.28|^10.0",
+ "illuminate/contracts": "^9.28|^10.0|^11.0",
"php": "^8.0"
},
"require-dev": {
@@ -4840,7 +5420,90 @@
],
"support": {
"issues": "https://github.com/spatie/laravel-package-tools/issues",
- "source": "https://github.com/spatie/laravel-package-tools/tree/1.14.0"
+ "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "time": "2024-08-27T18:56:10+00:00"
+ },
+ {
+ "name": "spatie/laravel-permission",
+ "version": "6.10.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/laravel-permission.git",
+ "reference": "8bb69d6d67387f7a00d93a2f5fab98860f06e704"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/8bb69d6d67387f7a00d93a2f5fab98860f06e704",
+ "reference": "8bb69d6d67387f7a00d93a2f5fab98860f06e704",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/auth": "^8.12|^9.0|^10.0|^11.0",
+ "illuminate/container": "^8.12|^9.0|^10.0|^11.0",
+ "illuminate/contracts": "^8.12|^9.0|^10.0|^11.0",
+ "illuminate/database": "^8.12|^9.0|^10.0|^11.0",
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "larastan/larastan": "^1.0|^2.0",
+ "laravel/passport": "^11.0|^12.0",
+ "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^9.4|^10.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "6.x-dev",
+ "dev-master": "6.x-dev"
+ },
+ "laravel": {
+ "providers": [
+ "Spatie\\Permission\\PermissionServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "Spatie\\Permission\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Freek Van der Herten",
+ "email": "freek@spatie.be",
+ "homepage": "https://spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "Permission handling for Laravel 8.0 and up",
+ "homepage": "https://github.com/spatie/laravel-permission",
+ "keywords": [
+ "acl",
+ "laravel",
+ "permission",
+ "permissions",
+ "rbac",
+ "roles",
+ "security",
+ "spatie"
+ ],
+ "support": {
+ "issues": "https://github.com/spatie/laravel-permission/issues",
+ "source": "https://github.com/spatie/laravel-permission/tree/6.10.1"
},
"funding": [
{
@@ -4848,35 +5511,37 @@
"type": "github"
}
],
- "time": "2023-01-10T14:09:55+00:00"
+ "time": "2024-11-08T18:45:41+00:00"
},
{
"name": "spatie/laravel-query-builder",
- "version": "5.1.1",
+ "version": "6.2.1",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-query-builder.git",
- "reference": "14a6802cd513cfd2abf68044cca5fd7391eb543d"
+ "reference": "64f0453f4dea6a6fabf1ce4ddbb553e14da67bb6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/laravel-query-builder/zipball/14a6802cd513cfd2abf68044cca5fd7391eb543d",
- "reference": "14a6802cd513cfd2abf68044cca5fd7391eb543d",
+ "url": "https://api.github.com/repos/spatie/laravel-query-builder/zipball/64f0453f4dea6a6fabf1ce4ddbb553e14da67bb6",
+ "reference": "64f0453f4dea6a6fabf1ce4ddbb553e14da67bb6",
"shasum": ""
},
"require": {
- "illuminate/database": "^9.0",
- "illuminate/http": "^9.0",
- "illuminate/support": "^9.0",
- "php": "^8.0",
+ "illuminate/database": "^10.0|^11.0",
+ "illuminate/http": "^10.0|^11.0",
+ "illuminate/support": "^10.0|^11.0",
+ "php": "^8.2",
"spatie/laravel-package-tools": "^1.11"
},
"require-dev": {
"ext-json": "*",
"mockery/mockery": "^1.4",
- "orchestra/testbench": "^7.0",
- "pestphp/pest": "^1.20",
- "spatie/laravel-ray": "^1.28"
+ "nunomaduro/larastan": "^2.0",
+ "orchestra/testbench": "^7.0|^8.0",
+ "pestphp/pest": "^2.0",
+ "phpunit/phpunit": "^10.0",
+ "spatie/invade": "^2.0"
},
"type": "library",
"extra": {
@@ -4907,61 +5572,205 @@
"description": "Easily build Eloquent queries from API requests",
"homepage": "https://github.com/spatie/laravel-query-builder",
"keywords": [
- "laravel-query-builder",
+ "laravel-query-builder",
+ "spatie"
+ ],
+ "support": {
+ "issues": "https://github.com/spatie/laravel-query-builder/issues",
+ "source": "https://github.com/spatie/laravel-query-builder"
+ },
+ "funding": [
+ {
+ "url": "https://spatie.be/open-source/support-us",
+ "type": "custom"
+ }
+ ],
+ "time": "2024-10-03T11:10:10+00:00"
+ },
+ {
+ "name": "spatie/laravel-settings",
+ "version": "3.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/laravel-settings.git",
+ "reference": "2da8cb5b051678725476b299ef8e13b2e5015260"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/laravel-settings/zipball/2da8cb5b051678725476b299ef8e13b2e5015260",
+ "reference": "2da8cb5b051678725476b299ef8e13b2e5015260",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "illuminate/database": "^8.73|^9.0|^10.0|^11.0",
+ "php": "^7.4|^8.0",
+ "phpdocumentor/type-resolver": "^1.5",
+ "spatie/temporary-directory": "^1.3|^2.0"
+ },
+ "require-dev": {
+ "ext-redis": "*",
+ "larastan/larastan": "^2.0",
+ "mockery/mockery": "^1.4",
+ "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0",
+ "pestphp/pest": "^1.21|^2.0",
+ "pestphp/pest-plugin-laravel": "^1.2|^2.0",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan-deprecation-rules": "^1.0",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpunit/phpunit": "^9.5|^10.0",
+ "spatie/laravel-data": "^1.0.0|^2.0.0|^4.0.0",
+ "spatie/pest-plugin-snapshots": "^1.1|^2.0",
+ "spatie/phpunit-snapshot-assertions": "^4.2|^5.0",
+ "spatie/ray": "^1.36"
+ },
+ "suggest": {
+ "spatie/data-transfer-object": "Allows for DTO casting to settings. (deprecated)"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Spatie\\LaravelSettings\\LaravelSettingsServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Spatie\\LaravelSettings\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ruben Van Assche",
+ "email": "ruben@spatie.be",
+ "homepage": "https://spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "Store your application settings",
+ "homepage": "https://github.com/spatie/laravel-settings",
+ "keywords": [
+ "laravel-settings",
+ "spatie"
+ ],
+ "support": {
+ "issues": "https://github.com/spatie/laravel-settings/issues",
+ "source": "https://github.com/spatie/laravel-settings/tree/3.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://spatie.be/open-source/support-us",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "time": "2024-09-20T13:48:17+00:00"
+ },
+ {
+ "name": "spatie/laravel-validation-rules",
+ "version": "3.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/laravel-validation-rules.git",
+ "reference": "b629b0a1049ddfe18e5534717b1627bacfaef208"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/laravel-validation-rules/zipball/b629b0a1049ddfe18e5534717b1627bacfaef208",
+ "reference": "b629b0a1049ddfe18e5534717b1627bacfaef208",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/support": "^8.0|^9.0|^10.0|^11.0",
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "laravel/pint": "^1.3",
+ "league/iso3166": "^3.0|^4.3",
+ "myclabs/php-enum": "^1.6",
+ "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0",
+ "pestphp/pest": "^1.23|^2.6",
+ "spatie/enum": "^2.2|^3.0"
+ },
+ "suggest": {
+ "league/iso3166": "Needed for the CountryCode rule and Currency rule"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Spatie\\ValidationRules\\ValidationRulesServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Spatie\\ValidationRules\\": "src",
+ "Spatie\\ValidationRules\\Database\\Factories\\": "database/factories"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Freek Van der Herten",
+ "email": "freek@spatie.be",
+ "homepage": "https://spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "A set of useful Laravel validation rules",
+ "homepage": "https://github.com/spatie/laravel-validation-rules",
+ "keywords": [
+ "laravel-validation-rules",
"spatie"
],
"support": {
- "issues": "https://github.com/spatie/laravel-query-builder/issues",
- "source": "https://github.com/spatie/laravel-query-builder"
+ "issues": "https://github.com/spatie/laravel-validation-rules/issues",
+ "source": "https://github.com/spatie/laravel-validation-rules/tree/3.4.0"
},
"funding": [
{
- "url": "https://spatie.be/open-source/support-us",
- "type": "custom"
+ "url": "https://github.com/spatie",
+ "type": "github"
}
],
- "time": "2022-12-02T21:28:40+00:00"
+ "time": "2024-03-02T05:57:47+00:00"
},
{
- "name": "spatie/laravel-validation-rules",
- "version": "3.2.1",
+ "name": "spatie/temporary-directory",
+ "version": "2.2.1",
"source": {
"type": "git",
- "url": "https://github.com/spatie/laravel-validation-rules.git",
- "reference": "47a63a724e10d72432d0dcdf438d1fecbc963bae"
+ "url": "https://github.com/spatie/temporary-directory.git",
+ "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/laravel-validation-rules/zipball/47a63a724e10d72432d0dcdf438d1fecbc963bae",
- "reference": "47a63a724e10d72432d0dcdf438d1fecbc963bae",
+ "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a",
+ "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a",
"shasum": ""
},
"require": {
- "illuminate/support": "^8.0|^9.0",
- "php": "^7.4|^8.0"
+ "php": "^8.0"
},
"require-dev": {
- "league/iso3166": "^3.0",
- "myclabs/php-enum": "^1.6",
- "orchestra/testbench": "^6.23|^7.0",
- "phpunit/phpunit": "^9.4",
- "spatie/enum": "^2.2|^3.0"
- },
- "suggest": {
- "league/iso3166": "Needed for the CountryCode rule and Currency rule"
+ "phpunit/phpunit": "^9.5"
},
"type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Spatie\\ValidationRules\\ValidationRulesServiceProvider"
- ]
- }
- },
"autoload": {
"psr-4": {
- "Spatie\\ValidationRules\\": "src",
- "Spatie\\ValidationRules\\Database\\Factories\\": "database/factories"
+ "Spatie\\TemporaryDirectory\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -4970,29 +5779,34 @@
],
"authors": [
{
- "name": "Freek Van der Herten",
- "email": "freek@spatie.be",
+ "name": "Alex Vanderbist",
+ "email": "alex@spatie.be",
"homepage": "https://spatie.be",
"role": "Developer"
}
],
- "description": "A set of useful Laravel validation rules",
- "homepage": "https://github.com/spatie/laravel-validation-rules",
+ "description": "Easily create, use and destroy temporary directories",
+ "homepage": "https://github.com/spatie/temporary-directory",
"keywords": [
- "laravel-validation-rules",
- "spatie"
+ "php",
+ "spatie",
+ "temporary-directory"
],
"support": {
- "issues": "https://github.com/spatie/laravel-validation-rules/issues",
- "source": "https://github.com/spatie/laravel-validation-rules/tree/3.2.1"
+ "issues": "https://github.com/spatie/temporary-directory/issues",
+ "source": "https://github.com/spatie/temporary-directory/tree/2.2.1"
},
"funding": [
+ {
+ "url": "https://spatie.be/open-source/support-us",
+ "type": "custom"
+ },
{
"url": "https://github.com/spatie",
"type": "github"
}
],
- "time": "2022-08-01T11:52:01+00:00"
+ "time": "2023-12-25T11:46:58+00:00"
},
{
"name": "stripe/stripe-php",
@@ -5054,51 +5868,122 @@
},
"time": "2022-05-05T17:18:02+00:00"
},
+ {
+ "name": "symfony/clock",
+ "version": "v7.1.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/clock.git",
+ "reference": "97bebc53548684c17ed696bc8af016880f0f098d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/clock/zipball/97bebc53548684c17ed696bc8af016880f0f098d",
+ "reference": "97bebc53548684c17ed696bc8af016880f0f098d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "psr/clock": "^1.0",
+ "symfony/polyfill-php83": "^1.28"
+ },
+ "provide": {
+ "psr/clock-implementation": "1.0"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/now.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\Clock\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Decouples applications from the system clock",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "clock",
+ "psr20",
+ "time"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/clock/tree/v7.1.6"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-25T14:20:29+00:00"
+ },
{
"name": "symfony/console",
- "version": "v6.2.3",
+ "version": "v7.1.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "0f579613e771dba2dbb8211c382342a641f5da06"
+ "reference": "ff04e5b5ba043d2badfb308197b9e6b42883fcd5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/0f579613e771dba2dbb8211c382342a641f5da06",
- "reference": "0f579613e771dba2dbb8211c382342a641f5da06",
+ "url": "https://api.github.com/repos/symfony/console/zipball/ff04e5b5ba043d2badfb308197b9e6b42883fcd5",
+ "reference": "ff04e5b5ba043d2badfb308197b9e6b42883fcd5",
"shasum": ""
},
"require": {
- "php": ">=8.1",
- "symfony/deprecation-contracts": "^2.1|^3",
+ "php": ">=8.2",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/service-contracts": "^1.1|^2|^3",
- "symfony/string": "^5.4|^6.0"
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/string": "^6.4|^7.0"
},
"conflict": {
- "symfony/dependency-injection": "<5.4",
- "symfony/dotenv": "<5.4",
- "symfony/event-dispatcher": "<5.4",
- "symfony/lock": "<5.4",
- "symfony/process": "<5.4"
+ "symfony/dependency-injection": "<6.4",
+ "symfony/dotenv": "<6.4",
+ "symfony/event-dispatcher": "<6.4",
+ "symfony/lock": "<6.4",
+ "symfony/process": "<6.4"
},
"provide": {
"psr/log-implementation": "1.0|2.0|3.0"
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^5.4|^6.0",
- "symfony/dependency-injection": "^5.4|^6.0",
- "symfony/event-dispatcher": "^5.4|^6.0",
- "symfony/lock": "^5.4|^6.0",
- "symfony/process": "^5.4|^6.0",
- "symfony/var-dumper": "^5.4|^6.0"
- },
- "suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": "",
- "symfony/lock": "",
- "symfony/process": ""
+ "symfony/config": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/event-dispatcher": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/lock": "^6.4|^7.0",
+ "symfony/messenger": "^6.4|^7.0",
+ "symfony/process": "^6.4|^7.0",
+ "symfony/stopwatch": "^6.4|^7.0",
+ "symfony/var-dumper": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -5127,12 +6012,12 @@
"homepage": "https://symfony.com",
"keywords": [
"cli",
- "command line",
+ "command-line",
"console",
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v6.2.3"
+ "source": "https://github.com/symfony/console/tree/v7.1.8"
},
"funding": [
{
@@ -5148,24 +6033,24 @@
"type": "tidelift"
}
],
- "time": "2022-12-28T14:26:22+00:00"
+ "time": "2024-11-06T14:23:19+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v6.2.3",
+ "version": "v7.1.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "ab1df4ba3ded7b724766ba3a6e0eca0418e74f80"
+ "reference": "4aa4f6b3d6749c14d3aa815eef8226632e7bbc66"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/ab1df4ba3ded7b724766ba3a6e0eca0418e74f80",
- "reference": "ab1df4ba3ded7b724766ba3a6e0eca0418e74f80",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/4aa4f6b3d6749c14d3aa815eef8226632e7bbc66",
+ "reference": "4aa4f6b3d6749c14d3aa815eef8226632e7bbc66",
"shasum": ""
},
"require": {
- "php": ">=8.1"
+ "php": ">=8.2"
},
"type": "library",
"autoload": {
@@ -5197,7 +6082,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v6.2.3"
+ "source": "https://github.com/symfony/css-selector/tree/v7.1.6"
},
"funding": [
{
@@ -5213,20 +6098,20 @@
"type": "tidelift"
}
],
- "time": "2022-12-28T14:26:22+00:00"
+ "time": "2024-09-25T14:20:29+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "v3.2.0",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3"
+ "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/1ee04c65529dea5d8744774d474e7cbd2f1206d3",
- "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
+ "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
"shasum": ""
},
"require": {
@@ -5235,7 +6120,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.3-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -5264,7 +6149,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.0"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -5280,31 +6165,35 @@
"type": "tidelift"
}
],
- "time": "2022-11-25T10:21:52+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/error-handler",
- "version": "v6.2.3",
+ "version": "v7.1.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "0926124c95d220499e2baf0fb465772af3a4eddb"
+ "reference": "010e44661f4c6babaf8c4862fe68c24a53903342"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/0926124c95d220499e2baf0fb465772af3a4eddb",
- "reference": "0926124c95d220499e2baf0fb465772af3a4eddb",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/010e44661f4c6babaf8c4862fe68c24a53903342",
+ "reference": "010e44661f4c6babaf8c4862fe68c24a53903342",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"psr/log": "^1|^2|^3",
- "symfony/var-dumper": "^5.4|^6.0"
+ "symfony/var-dumper": "^6.4|^7.0"
+ },
+ "conflict": {
+ "symfony/deprecation-contracts": "<2.5",
+ "symfony/http-kernel": "<6.4"
},
"require-dev": {
- "symfony/deprecation-contracts": "^2.1|^3",
- "symfony/http-kernel": "^5.4|^6.0",
- "symfony/serializer": "^5.4|^6.0"
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/serializer": "^6.4|^7.0"
},
"bin": [
"Resources/bin/patch-type-declarations"
@@ -5335,7 +6224,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/error-handler/tree/v6.2.3"
+ "source": "https://github.com/symfony/error-handler/tree/v7.1.7"
},
"funding": [
{
@@ -5351,28 +6240,29 @@
"type": "tidelift"
}
],
- "time": "2022-12-19T14:33:49+00:00"
+ "time": "2024-11-05T15:34:55+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v6.2.2",
+ "version": "v7.1.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "3ffeb31139b49bf6ef0bc09d1db95eac053388d1"
+ "reference": "87254c78dd50721cfd015b62277a8281c5589702"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3ffeb31139b49bf6ef0bc09d1db95eac053388d1",
- "reference": "3ffeb31139b49bf6ef0bc09d1db95eac053388d1",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/87254c78dd50721cfd015b62277a8281c5589702",
+ "reference": "87254c78dd50721cfd015b62277a8281c5589702",
"shasum": ""
},
"require": {
- "php": ">=8.1",
- "symfony/event-dispatcher-contracts": "^2|^3"
+ "php": ">=8.2",
+ "symfony/event-dispatcher-contracts": "^2.5|^3"
},
"conflict": {
- "symfony/dependency-injection": "<5.4"
+ "symfony/dependency-injection": "<6.4",
+ "symfony/service-contracts": "<2.5"
},
"provide": {
"psr/event-dispatcher-implementation": "1.0",
@@ -5380,17 +6270,13 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^5.4|^6.0",
- "symfony/dependency-injection": "^5.4|^6.0",
- "symfony/error-handler": "^5.4|^6.0",
- "symfony/expression-language": "^5.4|^6.0",
- "symfony/http-foundation": "^5.4|^6.0",
- "symfony/service-contracts": "^1.1|^2|^3",
- "symfony/stopwatch": "^5.4|^6.0"
- },
- "suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
+ "symfony/config": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/error-handler": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/stopwatch": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -5418,7 +6304,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.2"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.6"
},
"funding": [
{
@@ -5434,33 +6320,30 @@
"type": "tidelift"
}
],
- "time": "2022-12-14T16:11:27+00:00"
+ "time": "2024-09-25T14:20:29+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
- "version": "v3.2.0",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "0782b0b52a737a05b4383d0df35a474303cabdae"
+ "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0782b0b52a737a05b4383d0df35a474303cabdae",
- "reference": "0782b0b52a737a05b4383d0df35a474303cabdae",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50",
+ "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50",
"shasum": ""
},
"require": {
"php": ">=8.1",
"psr/event-dispatcher": "^1"
},
- "suggest": {
- "symfony/event-dispatcher-implementation": ""
- },
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.3-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -5497,7 +6380,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.0"
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -5513,27 +6396,27 @@
"type": "tidelift"
}
],
- "time": "2022-11-25T10:21:52+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/finder",
- "version": "v6.2.3",
+ "version": "v7.1.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "81eefbddfde282ee33b437ba5e13d7753211ae8e"
+ "reference": "2cb89664897be33f78c65d3d2845954c8d7a43b8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/81eefbddfde282ee33b437ba5e13d7753211ae8e",
- "reference": "81eefbddfde282ee33b437ba5e13d7753211ae8e",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/2cb89664897be33f78c65d3d2845954c8d7a43b8",
+ "reference": "2cb89664897be33f78c65d3d2845954c8d7a43b8",
"shasum": ""
},
"require": {
- "php": ">=8.1"
+ "php": ">=8.2"
},
"require-dev": {
- "symfony/filesystem": "^6.0"
+ "symfony/filesystem": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -5561,7 +6444,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v6.2.3"
+ "source": "https://github.com/symfony/finder/tree/v7.1.6"
},
"funding": [
{
@@ -5577,28 +6460,32 @@
"type": "tidelift"
}
],
- "time": "2022-12-22T17:55:15+00:00"
+ "time": "2024-10-01T08:31:23+00:00"
},
{
"name": "symfony/http-client",
- "version": "v6.2.2",
+ "version": "v7.1.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client.git",
- "reference": "7054ad466f836309aef511789b9c697bc986d8ce"
+ "reference": "c30d91a1deac0dc3ed5e604683cf2e1dfc635b8a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client/zipball/7054ad466f836309aef511789b9c697bc986d8ce",
- "reference": "7054ad466f836309aef511789b9c697bc986d8ce",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/c30d91a1deac0dc3ed5e604683cf2e1dfc635b8a",
+ "reference": "c30d91a1deac0dc3ed5e604683cf2e1dfc635b8a",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"psr/log": "^1|^2|^3",
- "symfony/deprecation-contracts": "^2.1|^3",
- "symfony/http-client-contracts": "^3",
- "symfony/service-contracts": "^1.0|^2|^3"
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/http-client-contracts": "^3.4.1",
+ "symfony/service-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "php-http/discovery": "<1.15",
+ "symfony/http-foundation": "<6.4"
},
"provide": {
"php-http/async-client-implementation": "*",
@@ -5611,14 +6498,16 @@
"amphp/http-client": "^4.2.1",
"amphp/http-tunnel": "^1.0",
"amphp/socket": "^1.1",
- "guzzlehttp/promises": "^1.4",
+ "guzzlehttp/promises": "^1.4|^2.0",
"nyholm/psr7": "^1.0",
"php-http/httplug": "^1.0|^2.0",
"psr/http-client": "^1.0",
- "symfony/dependency-injection": "^5.4|^6.0",
- "symfony/http-kernel": "^5.4|^6.0",
- "symfony/process": "^5.4|^6.0",
- "symfony/stopwatch": "^5.4|^6.0"
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/messenger": "^6.4|^7.0",
+ "symfony/process": "^6.4|^7.0",
+ "symfony/rate-limiter": "^6.4|^7.0",
+ "symfony/stopwatch": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -5645,8 +6534,11 @@
],
"description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously",
"homepage": "https://symfony.com",
+ "keywords": [
+ "http"
+ ],
"support": {
- "source": "https://github.com/symfony/http-client/tree/v6.2.2"
+ "source": "https://github.com/symfony/http-client/tree/v7.1.8"
},
"funding": [
{
@@ -5662,32 +6554,29 @@
"type": "tidelift"
}
],
- "time": "2022-12-14T16:11:27+00:00"
+ "time": "2024-11-13T13:40:27+00:00"
},
{
"name": "symfony/http-client-contracts",
- "version": "v3.2.0",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client-contracts.git",
- "reference": "c5f587eb445224ddfeb05b5ee703476742d730bf"
+ "reference": "20414d96f391677bf80078aa55baece78b82647d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/c5f587eb445224ddfeb05b5ee703476742d730bf",
- "reference": "c5f587eb445224ddfeb05b5ee703476742d730bf",
+ "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/20414d96f391677bf80078aa55baece78b82647d",
+ "reference": "20414d96f391677bf80078aa55baece78b82647d",
"shasum": ""
},
"require": {
"php": ">=8.1"
},
- "suggest": {
- "symfony/http-client-implementation": ""
- },
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.3-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -5727,7 +6616,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/http-client-contracts/tree/v3.2.0"
+ "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -5743,41 +6632,40 @@
"type": "tidelift"
}
],
- "time": "2022-11-25T10:21:52+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/http-foundation",
- "version": "v6.2.2",
+ "version": "v7.1.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "ddf4dd35de1623e7c02013523e6c2137b67b636f"
+ "reference": "f4419ec69ccfc3f725a4de7c20e4e57626d10112"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ddf4dd35de1623e7c02013523e6c2137b67b636f",
- "reference": "ddf4dd35de1623e7c02013523e6c2137b67b636f",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f4419ec69ccfc3f725a4de7c20e4e57626d10112",
+ "reference": "f4419ec69ccfc3f725a4de7c20e4e57626d10112",
"shasum": ""
},
"require": {
- "php": ">=8.1",
- "symfony/deprecation-contracts": "^2.1|^3",
- "symfony/polyfill-mbstring": "~1.1"
+ "php": ">=8.2",
+ "symfony/polyfill-mbstring": "~1.1",
+ "symfony/polyfill-php83": "^1.27"
},
"conflict": {
- "symfony/cache": "<6.2"
+ "doctrine/dbal": "<3.6",
+ "symfony/cache": "<6.4.12|>=7.0,<7.1.5"
},
"require-dev": {
- "predis/predis": "~1.0",
- "symfony/cache": "^5.4|^6.0",
- "symfony/dependency-injection": "^5.4|^6.0",
- "symfony/expression-language": "^5.4|^6.0",
- "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4",
- "symfony/mime": "^5.4|^6.0",
- "symfony/rate-limiter": "^5.2|^6.0"
- },
- "suggest": {
- "symfony/mime": "To use the file extension guesser"
+ "doctrine/dbal": "^3.6|^4",
+ "predis/predis": "^1.1|^2.0",
+ "symfony/cache": "^6.4.12|^7.1.5",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/mime": "^6.4|^7.0",
+ "symfony/rate-limiter": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -5805,7 +6693,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v6.2.2"
+ "source": "https://github.com/symfony/http-foundation/tree/v7.1.8"
},
"funding": [
{
@@ -5821,74 +6709,77 @@
"type": "tidelift"
}
],
- "time": "2022-12-14T16:11:27+00:00"
+ "time": "2024-11-09T09:16:45+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v6.2.4",
+ "version": "v7.1.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "74f2e638ec3fa0315443bd85fab7fc8066b77f83"
+ "reference": "33fef24e3dc79d6d30bf4936531f2f4bd2ca189e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/74f2e638ec3fa0315443bd85fab7fc8066b77f83",
- "reference": "74f2e638ec3fa0315443bd85fab7fc8066b77f83",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/33fef24e3dc79d6d30bf4936531f2f4bd2ca189e",
+ "reference": "33fef24e3dc79d6d30bf4936531f2f4bd2ca189e",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"psr/log": "^1|^2|^3",
- "symfony/deprecation-contracts": "^2.1|^3",
- "symfony/error-handler": "^6.1",
- "symfony/event-dispatcher": "^5.4|^6.0",
- "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/error-handler": "^6.4|^7.0",
+ "symfony/event-dispatcher": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
- "symfony/browser-kit": "<5.4",
- "symfony/cache": "<5.4",
- "symfony/config": "<6.1",
- "symfony/console": "<5.4",
- "symfony/dependency-injection": "<6.2",
- "symfony/doctrine-bridge": "<5.4",
- "symfony/form": "<5.4",
- "symfony/http-client": "<5.4",
- "symfony/mailer": "<5.4",
- "symfony/messenger": "<5.4",
- "symfony/translation": "<5.4",
- "symfony/twig-bridge": "<5.4",
- "symfony/validator": "<5.4",
- "twig/twig": "<2.13"
+ "symfony/browser-kit": "<6.4",
+ "symfony/cache": "<6.4",
+ "symfony/config": "<6.4",
+ "symfony/console": "<6.4",
+ "symfony/dependency-injection": "<6.4",
+ "symfony/doctrine-bridge": "<6.4",
+ "symfony/form": "<6.4",
+ "symfony/http-client": "<6.4",
+ "symfony/http-client-contracts": "<2.5",
+ "symfony/mailer": "<6.4",
+ "symfony/messenger": "<6.4",
+ "symfony/translation": "<6.4",
+ "symfony/translation-contracts": "<2.5",
+ "symfony/twig-bridge": "<6.4",
+ "symfony/validator": "<6.4",
+ "symfony/var-dumper": "<6.4",
+ "twig/twig": "<3.0.4"
},
"provide": {
"psr/log-implementation": "1.0|2.0|3.0"
},
"require-dev": {
"psr/cache": "^1.0|^2.0|^3.0",
- "symfony/browser-kit": "^5.4|^6.0",
- "symfony/config": "^6.1",
- "symfony/console": "^5.4|^6.0",
- "symfony/css-selector": "^5.4|^6.0",
- "symfony/dependency-injection": "^6.2",
- "symfony/dom-crawler": "^5.4|^6.0",
- "symfony/expression-language": "^5.4|^6.0",
- "symfony/finder": "^5.4|^6.0",
- "symfony/http-client-contracts": "^1.1|^2|^3",
- "symfony/process": "^5.4|^6.0",
- "symfony/routing": "^5.4|^6.0",
- "symfony/stopwatch": "^5.4|^6.0",
- "symfony/translation": "^5.4|^6.0",
- "symfony/translation-contracts": "^1.1|^2|^3",
- "symfony/uid": "^5.4|^6.0",
- "twig/twig": "^2.13|^3.0.4"
- },
- "suggest": {
- "symfony/browser-kit": "",
- "symfony/config": "",
- "symfony/console": "",
- "symfony/dependency-injection": ""
+ "symfony/browser-kit": "^6.4|^7.0",
+ "symfony/clock": "^6.4|^7.0",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0",
+ "symfony/css-selector": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/dom-crawler": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/finder": "^6.4|^7.0",
+ "symfony/http-client-contracts": "^2.5|^3",
+ "symfony/process": "^6.4|^7.0",
+ "symfony/property-access": "^7.1",
+ "symfony/routing": "^6.4|^7.0",
+ "symfony/serializer": "^7.1",
+ "symfony/stopwatch": "^6.4|^7.0",
+ "symfony/translation": "^6.4|^7.0",
+ "symfony/translation-contracts": "^2.5|^3",
+ "symfony/uid": "^6.4|^7.0",
+ "symfony/validator": "^6.4|^7.0",
+ "symfony/var-dumper": "^6.4|^7.0",
+ "symfony/var-exporter": "^6.4|^7.0",
+ "twig/twig": "^3.0.4"
},
"type": "library",
"autoload": {
@@ -5916,7 +6807,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-kernel/tree/v6.2.4"
+ "source": "https://github.com/symfony/http-kernel/tree/v7.1.8"
},
"funding": [
{
@@ -5932,28 +6823,32 @@
"type": "tidelift"
}
],
- "time": "2022-12-29T19:05:08+00:00"
+ "time": "2024-11-13T14:25:32+00:00"
},
{
"name": "symfony/intl",
- "version": "v6.2.0",
+ "version": "v7.1.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/intl.git",
- "reference": "04726ae6cec43582f7dfbfc67a313d1ecdd81c0f"
+ "reference": "e56b243fc0afa5a12bd11dace4002ada5a7d99f8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/intl/zipball/04726ae6cec43582f7dfbfc67a313d1ecdd81c0f",
- "reference": "04726ae6cec43582f7dfbfc67a313d1ecdd81c0f",
+ "url": "https://api.github.com/repos/symfony/intl/zipball/e56b243fc0afa5a12bd11dace4002ada5a7d99f8",
+ "reference": "e56b243fc0afa5a12bd11dace4002ada5a7d99f8",
"shasum": ""
},
"require": {
- "php": ">=8.1"
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "symfony/string": "<7.1"
},
"require-dev": {
- "symfony/filesystem": "^5.4|^6.0",
- "symfony/finder": "^5.4|^6.0"
+ "symfony/filesystem": "^6.4|^7.0",
+ "symfony/var-exporter": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -5961,7 +6856,8 @@
"Symfony\\Component\\Intl\\": ""
},
"exclude-from-classmap": [
- "/Tests/"
+ "/Tests/",
+ "/Resources/data/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -5986,7 +6882,7 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Provides a PHP replacement layer for the C intl extension that includes additional data from the ICU library",
+ "description": "Provides access to the localization data of the ICU library",
"homepage": "https://symfony.com",
"keywords": [
"i18n",
@@ -5997,7 +6893,7 @@
"localization"
],
"support": {
- "source": "https://github.com/symfony/intl/tree/v6.2.0"
+ "source": "https://github.com/symfony/intl/tree/v7.1.8"
},
"funding": [
{
@@ -6013,43 +6909,43 @@
"type": "tidelift"
}
],
- "time": "2022-11-02T09:08:04+00:00"
+ "time": "2024-11-08T15:46:42+00:00"
},
{
"name": "symfony/mailer",
- "version": "6.3.x-dev",
+ "version": "v7.1.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/mailer.git",
- "reference": "de3acc2fbc81d26957b551aabeea8b6cb0dc1f72"
+ "reference": "69c9948451fb3a6a4d47dc8261d1794734e76cdd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mailer/zipball/de3acc2fbc81d26957b551aabeea8b6cb0dc1f72",
- "reference": "de3acc2fbc81d26957b551aabeea8b6cb0dc1f72",
+ "url": "https://api.github.com/repos/symfony/mailer/zipball/69c9948451fb3a6a4d47dc8261d1794734e76cdd",
+ "reference": "69c9948451fb3a6a4d47dc8261d1794734e76cdd",
"shasum": ""
},
"require": {
"egulias/email-validator": "^2.1.10|^3|^4",
- "php": ">=8.1",
+ "php": ">=8.2",
"psr/event-dispatcher": "^1",
"psr/log": "^1|^2|^3",
- "symfony/event-dispatcher": "^5.4|^6.0",
- "symfony/mime": "^6.2",
+ "symfony/event-dispatcher": "^6.4|^7.0",
+ "symfony/mime": "^6.4|^7.0",
"symfony/service-contracts": "^2.5|^3"
},
"conflict": {
"symfony/http-client-contracts": "<2.5",
- "symfony/http-kernel": "<5.4",
- "symfony/messenger": "<6.2",
- "symfony/mime": "<6.2",
- "symfony/twig-bridge": "<6.2.1"
+ "symfony/http-kernel": "<6.4",
+ "symfony/messenger": "<6.4",
+ "symfony/mime": "<6.4",
+ "symfony/twig-bridge": "<6.4"
},
"require-dev": {
- "symfony/console": "^5.4|^6.0",
- "symfony/http-client-contracts": "^2.5|^3",
- "symfony/messenger": "^6.2",
- "symfony/twig-bridge": "^6.2"
+ "symfony/console": "^6.4|^7.0",
+ "symfony/http-client": "^6.4|^7.0",
+ "symfony/messenger": "^6.4|^7.0",
+ "symfony/twig-bridge": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -6077,7 +6973,7 @@
"description": "Helps sending emails",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/mailer/tree/6.3"
+ "source": "https://github.com/symfony/mailer/tree/v7.1.6"
},
"funding": [
{
@@ -6093,28 +6989,32 @@
"type": "tidelift"
}
],
- "time": "2023-01-23T14:48:49+00:00"
+ "time": "2024-09-25T14:20:29+00:00"
},
{
"name": "symfony/mailgun-mailer",
- "version": "v6.2.0",
+ "version": "v7.1.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/mailgun-mailer.git",
- "reference": "c5364fbcf5581ba9eae569db12b380b9255ce238"
+ "reference": "b0117bf42b6dd8dfcfcab2a7e18508b594520b5a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/c5364fbcf5581ba9eae569db12b380b9255ce238",
- "reference": "c5364fbcf5581ba9eae569db12b380b9255ce238",
+ "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/b0117bf42b6dd8dfcfcab2a7e18508b594520b5a",
+ "reference": "b0117bf42b6dd8dfcfcab2a7e18508b594520b5a",
"shasum": ""
},
"require": {
- "php": ">=8.1",
- "symfony/mailer": "^5.4|^6.0"
+ "php": ">=8.2",
+ "symfony/mailer": "^6.4|^7.0"
+ },
+ "conflict": {
+ "symfony/http-foundation": "<6.4"
},
"require-dev": {
- "symfony/http-client": "^5.4|^6.0"
+ "symfony/http-client": "^6.4|^7.0",
+ "symfony/webhook": "^6.4|^7.0"
},
"type": "symfony-mailer-bridge",
"autoload": {
@@ -6142,7 +7042,7 @@
"description": "Symfony Mailgun Mailer Bridge",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/mailgun-mailer/tree/v6.2.0"
+ "source": "https://github.com/symfony/mailgun-mailer/tree/v7.1.6"
},
"funding": [
{
@@ -6158,24 +7058,24 @@
"type": "tidelift"
}
],
- "time": "2022-10-09T08:55:40+00:00"
+ "time": "2024-09-25T14:20:29+00:00"
},
{
"name": "symfony/mime",
- "version": "v6.2.2",
+ "version": "v7.1.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
- "reference": "8c98bf40406e791043890a163f6f6599b9cfa1ed"
+ "reference": "caa1e521edb2650b8470918dfe51708c237f0598"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/8c98bf40406e791043890a163f6f6599b9cfa1ed",
- "reference": "8c98bf40406e791043890a163f6f6599b9cfa1ed",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/caa1e521edb2650b8470918dfe51708c237f0598",
+ "reference": "caa1e521edb2650b8470918dfe51708c237f0598",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/polyfill-intl-idn": "^1.10",
"symfony/polyfill-mbstring": "^1.0"
},
@@ -6183,17 +7083,18 @@
"egulias/email-validator": "~3.0.0",
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
- "symfony/mailer": "<5.4",
- "symfony/serializer": "<6.2"
+ "symfony/mailer": "<6.4",
+ "symfony/serializer": "<6.4.3|>7.0,<7.0.3"
},
"require-dev": {
- "egulias/email-validator": "^2.1.10|^3.1",
+ "egulias/email-validator": "^2.1.10|^3.1|^4",
"league/html-to-markdown": "^5.0",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
- "symfony/dependency-injection": "^5.4|^6.0",
- "symfony/property-access": "^5.4|^6.0",
- "symfony/property-info": "^5.4|^6.0",
- "symfony/serializer": "^6.2"
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/process": "^6.4|^7.0",
+ "symfony/property-access": "^6.4|^7.0",
+ "symfony/property-info": "^6.4|^7.0",
+ "symfony/serializer": "^6.4.3|^7.0.3"
},
"type": "library",
"autoload": {
@@ -6225,7 +7126,7 @@
"mime-type"
],
"support": {
- "source": "https://github.com/symfony/mime/tree/v6.2.2"
+ "source": "https://github.com/symfony/mime/tree/v7.1.6"
},
"funding": [
{
@@ -6241,24 +7142,24 @@
"type": "tidelift"
}
],
- "time": "2022-12-14T16:38:10+00:00"
+ "time": "2024-10-25T15:11:02+00:00"
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.27.0",
+ "version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
+ "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
- "reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
+ "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"provide": {
"ext-ctype": "*"
@@ -6268,9 +7169,6 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.27-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -6307,7 +7205,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0"
},
"funding": [
{
@@ -6323,33 +7221,30 @@
"type": "tidelift"
}
],
- "time": "2022-11-03T14:55:06+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.27.0",
+ "version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "511a08c03c1960e08a883f4cffcacd219b758354"
+ "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354",
- "reference": "511a08c03c1960e08a883f4cffcacd219b758354",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
+ "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.27-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -6388,7 +7283,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0"
},
"funding": [
{
@@ -6404,35 +7299,31 @@
"type": "tidelift"
}
],
- "time": "2022-11-03T14:55:06+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
- "version": "v1.27.0",
+ "version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "639084e360537a19f9ee352433b84ce831f3d2da"
+ "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da",
- "reference": "639084e360537a19f9ee352433b84ce831f3d2da",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773",
+ "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773",
"shasum": ""
},
"require": {
- "php": ">=7.1",
- "symfony/polyfill-intl-normalizer": "^1.10",
- "symfony/polyfill-php72": "^1.10"
+ "php": ">=7.2",
+ "symfony/polyfill-intl-normalizer": "^1.10"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.27-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -6475,7 +7366,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0"
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0"
},
"funding": [
{
@@ -6491,33 +7382,30 @@
"type": "tidelift"
}
],
- "time": "2022-11-03T14:55:06+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.27.0",
+ "version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6"
+ "reference": "3833d7255cc303546435cb650316bff708a1c75c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6",
- "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c",
+ "reference": "3833d7255cc303546435cb650316bff708a1c75c",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.27-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -6559,7 +7447,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0"
},
"funding": [
{
@@ -6575,24 +7463,24 @@
"type": "tidelift"
}
],
- "time": "2022-11-03T14:55:06+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.27.0",
+ "version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
- "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"provide": {
"ext-mbstring": "*"
@@ -6602,9 +7490,6 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.27-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -6642,7 +7527,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0"
},
"funding": [
{
@@ -6658,30 +7543,27 @@
"type": "tidelift"
}
],
- "time": "2022-11-03T14:55:06+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
- "name": "symfony/polyfill-php72",
- "version": "v1.27.0",
+ "name": "symfony/polyfill-php80",
+ "version": "v1.31.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "869329b1e9894268a8a61dabb69153029b7a8c97"
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97",
- "reference": "869329b1e9894268a8a61dabb69153029b7a8c97",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
+ "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.27-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -6692,14 +7574,21 @@
"bootstrap.php"
],
"psr-4": {
- "Symfony\\Polyfill\\Php72\\": ""
- }
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
@@ -6709,7 +7598,7 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
@@ -6718,7 +7607,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0"
},
"funding": [
{
@@ -6734,30 +7623,27 @@
"type": "tidelift"
}
],
- "time": "2022-11-03T14:55:06+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
- "name": "symfony/polyfill-php80",
- "version": "v1.27.0",
+ "name": "symfony/polyfill-php83",
+ "version": "v1.31.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
+ "url": "https://github.com/symfony/polyfill-php83.git",
+ "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
- "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
+ "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491",
+ "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.27-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -6768,7 +7654,7 @@
"bootstrap.php"
],
"psr-4": {
- "Symfony\\Polyfill\\Php80\\": ""
+ "Symfony\\Polyfill\\Php83\\": ""
},
"classmap": [
"Resources/stubs"
@@ -6779,10 +7665,6 @@
"MIT"
],
"authors": [
- {
- "name": "Ion Bazan",
- "email": "ion.bazan@gmail.com"
- },
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
@@ -6792,7 +7674,7 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
@@ -6801,7 +7683,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
+ "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0"
},
"funding": [
{
@@ -6817,24 +7699,24 @@
"type": "tidelift"
}
],
- "time": "2022-11-03T14:55:06+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-uuid",
- "version": "v1.27.0",
+ "version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-uuid.git",
- "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166"
+ "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/f3cf1a645c2734236ed1e2e671e273eeb3586166",
- "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166",
+ "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2",
+ "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"provide": {
"ext-uuid": "*"
@@ -6844,9 +7726,6 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.27-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -6883,7 +7762,7 @@
"uuid"
],
"support": {
- "source": "https://github.com/symfony/polyfill-uuid/tree/v1.27.0"
+ "source": "https://github.com/symfony/polyfill-uuid/tree/v1.31.0"
},
"funding": [
{
@@ -6899,24 +7778,24 @@
"type": "tidelift"
}
],
- "time": "2022-11-03T14:55:06+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/process",
- "version": "v6.2.0",
+ "version": "v7.1.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "ba6e55359f8f755fe996c58a81e00eaa67a35877"
+ "reference": "42783370fda6e538771f7c7a36e9fa2ee3a84892"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/ba6e55359f8f755fe996c58a81e00eaa67a35877",
- "reference": "ba6e55359f8f755fe996c58a81e00eaa67a35877",
+ "url": "https://api.github.com/repos/symfony/process/zipball/42783370fda6e538771f7c7a36e9fa2ee3a84892",
+ "reference": "42783370fda6e538771f7c7a36e9fa2ee3a84892",
"shasum": ""
},
"require": {
- "php": ">=8.1"
+ "php": ">=8.2"
},
"type": "library",
"autoload": {
@@ -6944,7 +7823,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v6.2.0"
+ "source": "https://github.com/symfony/process/tree/v7.1.8"
},
"funding": [
{
@@ -6960,45 +7839,38 @@
"type": "tidelift"
}
],
- "time": "2022-11-02T09:08:04+00:00"
+ "time": "2024-11-06T14:23:19+00:00"
},
{
"name": "symfony/routing",
- "version": "v6.2.3",
+ "version": "v7.1.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "35fec764f3e2c8c08fb340d275c84bc78ca7e0c9"
+ "reference": "66a2c469f6c22d08603235c46a20007c0701ea0a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/35fec764f3e2c8c08fb340d275c84bc78ca7e0c9",
- "reference": "35fec764f3e2c8c08fb340d275c84bc78ca7e0c9",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/66a2c469f6c22d08603235c46a20007c0701ea0a",
+ "reference": "66a2c469f6c22d08603235c46a20007c0701ea0a",
"shasum": ""
},
"require": {
- "php": ">=8.1"
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3"
},
"conflict": {
- "doctrine/annotations": "<1.12",
- "symfony/config": "<6.2",
- "symfony/dependency-injection": "<5.4",
- "symfony/yaml": "<5.4"
+ "symfony/config": "<6.4",
+ "symfony/dependency-injection": "<6.4",
+ "symfony/yaml": "<6.4"
},
"require-dev": {
- "doctrine/annotations": "^1.12|^2",
"psr/log": "^1|^2|^3",
- "symfony/config": "^6.2",
- "symfony/dependency-injection": "^5.4|^6.0",
- "symfony/expression-language": "^5.4|^6.0",
- "symfony/http-foundation": "^5.4|^6.0",
- "symfony/yaml": "^5.4|^6.0"
- },
- "suggest": {
- "symfony/config": "For using the all-in-one router or any loader",
- "symfony/expression-language": "For using expression matching",
- "symfony/http-foundation": "For using a Symfony Request object",
- "symfony/yaml": "For using the YAML loader"
+ "symfony/config": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/yaml": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -7032,7 +7904,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v6.2.3"
+ "source": "https://github.com/symfony/routing/tree/v7.1.6"
},
"funding": [
{
@@ -7048,36 +7920,34 @@
"type": "tidelift"
}
],
- "time": "2022-12-20T16:41:15+00:00"
+ "time": "2024-10-01T08:31:23+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v3.2.0",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75"
+ "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/aac98028c69df04ee77eb69b96b86ee51fbf4b75",
- "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f",
+ "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f",
"shasum": ""
},
"require": {
"php": ">=8.1",
- "psr/container": "^2.0"
+ "psr/container": "^1.1|^2.0",
+ "symfony/deprecation-contracts": "^2.5|^3"
},
"conflict": {
"ext-psr": "<1.1|>=2"
},
- "suggest": {
- "symfony/service-implementation": ""
- },
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.3-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -7117,7 +7987,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v3.2.0"
+ "source": "https://github.com/symfony/service-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -7133,38 +8003,39 @@
"type": "tidelift"
}
],
- "time": "2022-11-25T10:21:52+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/string",
- "version": "v6.2.2",
+ "version": "v7.1.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "863219fd713fa41cbcd285a79723f94672faff4d"
+ "reference": "591ebd41565f356fcd8b090fe64dbb5878f50281"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/863219fd713fa41cbcd285a79723f94672faff4d",
- "reference": "863219fd713fa41cbcd285a79723f94672faff4d",
+ "url": "https://api.github.com/repos/symfony/string/zipball/591ebd41565f356fcd8b090fe64dbb5878f50281",
+ "reference": "591ebd41565f356fcd8b090fe64dbb5878f50281",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-grapheme": "~1.0",
"symfony/polyfill-intl-normalizer": "~1.0",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
- "symfony/translation-contracts": "<2.0"
+ "symfony/translation-contracts": "<2.5"
},
"require-dev": {
- "symfony/error-handler": "^5.4|^6.0",
- "symfony/http-client": "^5.4|^6.0",
- "symfony/intl": "^6.2",
- "symfony/translation-contracts": "^2.0|^3.0",
- "symfony/var-exporter": "^5.4|^6.0"
+ "symfony/emoji": "^7.1",
+ "symfony/error-handler": "^6.4|^7.0",
+ "symfony/http-client": "^6.4|^7.0",
+ "symfony/intl": "^6.4|^7.0",
+ "symfony/translation-contracts": "^2.5|^3.0",
+ "symfony/var-exporter": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -7203,7 +8074,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v6.2.2"
+ "source": "https://github.com/symfony/string/tree/v7.1.8"
},
"funding": [
{
@@ -7219,58 +8090,54 @@
"type": "tidelift"
}
],
- "time": "2022-12-14T16:11:27+00:00"
+ "time": "2024-11-13T13:31:21+00:00"
},
{
"name": "symfony/translation",
- "version": "v6.2.3",
+ "version": "v7.1.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "a2a15404ef4c15d92c205718eb828b225a144379"
+ "reference": "b9f72ab14efdb6b772f85041fa12f820dee8d55f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/a2a15404ef4c15d92c205718eb828b225a144379",
- "reference": "a2a15404ef4c15d92c205718eb828b225a144379",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/b9f72ab14efdb6b772f85041fa12f820dee8d55f",
+ "reference": "b9f72ab14efdb6b772f85041fa12f820dee8d55f",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/translation-contracts": "^2.3|^3.0"
+ "symfony/translation-contracts": "^2.5|^3.0"
},
"conflict": {
- "symfony/config": "<5.4",
- "symfony/console": "<5.4",
- "symfony/dependency-injection": "<5.4",
- "symfony/http-kernel": "<5.4",
- "symfony/twig-bundle": "<5.4",
- "symfony/yaml": "<5.4"
+ "symfony/config": "<6.4",
+ "symfony/console": "<6.4",
+ "symfony/dependency-injection": "<6.4",
+ "symfony/http-client-contracts": "<2.5",
+ "symfony/http-kernel": "<6.4",
+ "symfony/service-contracts": "<2.5",
+ "symfony/twig-bundle": "<6.4",
+ "symfony/yaml": "<6.4"
},
"provide": {
"symfony/translation-implementation": "2.3|3.0"
},
"require-dev": {
- "nikic/php-parser": "^4.13",
+ "nikic/php-parser": "^4.18|^5.0",
"psr/log": "^1|^2|^3",
- "symfony/config": "^5.4|^6.0",
- "symfony/console": "^5.4|^6.0",
- "symfony/dependency-injection": "^5.4|^6.0",
- "symfony/finder": "^5.4|^6.0",
- "symfony/http-client-contracts": "^1.1|^2.0|^3.0",
- "symfony/http-kernel": "^5.4|^6.0",
- "symfony/intl": "^5.4|^6.0",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/finder": "^6.4|^7.0",
+ "symfony/http-client-contracts": "^2.5|^3.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/intl": "^6.4|^7.0",
"symfony/polyfill-intl-icu": "^1.21",
- "symfony/routing": "^5.4|^6.0",
- "symfony/service-contracts": "^1.1.2|^2|^3",
- "symfony/yaml": "^5.4|^6.0"
- },
- "suggest": {
- "nikic/php-parser": "To use PhpAstExtractor",
- "psr/log-implementation": "To use logging capability in translator",
- "symfony/config": "",
- "symfony/yaml": ""
+ "symfony/routing": "^6.4|^7.0",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/yaml": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -7301,7 +8168,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v6.2.3"
+ "source": "https://github.com/symfony/translation/tree/v7.1.6"
},
"funding": [
{
@@ -7317,32 +8184,29 @@
"type": "tidelift"
}
],
- "time": "2022-12-23T14:11:11+00:00"
+ "time": "2024-09-28T12:35:13+00:00"
},
{
"name": "symfony/translation-contracts",
- "version": "v3.2.0",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "68cce71402305a015f8c1589bfada1280dc64fe7"
+ "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/68cce71402305a015f8c1589bfada1280dc64fe7",
- "reference": "68cce71402305a015f8c1589bfada1280dc64fe7",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a",
+ "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a",
"shasum": ""
},
"require": {
"php": ">=8.1"
},
- "suggest": {
- "symfony/translation-implementation": ""
- },
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.3-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -7382,7 +8246,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v3.2.0"
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -7398,28 +8262,28 @@
"type": "tidelift"
}
],
- "time": "2022-11-25T10:21:52+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/uid",
- "version": "v6.2.0",
+ "version": "v7.1.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/uid.git",
- "reference": "4f9f537e57261519808a7ce1d941490736522bbc"
+ "reference": "65befb3bb2d503bbffbd08c815aa38b472999917"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/uid/zipball/4f9f537e57261519808a7ce1d941490736522bbc",
- "reference": "4f9f537e57261519808a7ce1d941490736522bbc",
+ "url": "https://api.github.com/repos/symfony/uid/zipball/65befb3bb2d503bbffbd08c815aa38b472999917",
+ "reference": "65befb3bb2d503bbffbd08c815aa38b472999917",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/polyfill-uuid": "^1.15"
},
"require-dev": {
- "symfony/console": "^5.4|^6.0"
+ "symfony/console": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -7456,7 +8320,7 @@
"uuid"
],
"support": {
- "source": "https://github.com/symfony/uid/tree/v6.2.0"
+ "source": "https://github.com/symfony/uid/tree/v7.1.6"
},
"funding": [
{
@@ -7472,41 +8336,36 @@
"type": "tidelift"
}
],
- "time": "2022-10-09T08:55:40+00:00"
+ "time": "2024-09-25T14:20:29+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v6.2.3",
+ "version": "v7.1.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "fdbadd4803bc3c96ef89238c9c9e2ebe424ec2e0"
+ "reference": "7bb01a47b1b00428d32b5e7b4d3b2d1aa58d3db8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/fdbadd4803bc3c96ef89238c9c9e2ebe424ec2e0",
- "reference": "fdbadd4803bc3c96ef89238c9c9e2ebe424ec2e0",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7bb01a47b1b00428d32b5e7b4d3b2d1aa58d3db8",
+ "reference": "7bb01a47b1b00428d32b5e7b4d3b2d1aa58d3db8",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
- "phpunit/phpunit": "<5.4.3",
- "symfony/console": "<5.4"
+ "symfony/console": "<6.4"
},
"require-dev": {
"ext-iconv": "*",
- "symfony/console": "^5.4|^6.0",
- "symfony/process": "^5.4|^6.0",
- "symfony/uid": "^5.4|^6.0",
- "twig/twig": "^2.13|^3.0.4"
- },
- "suggest": {
- "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
- "ext-intl": "To show region name in time zone dump",
- "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
+ "symfony/console": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/process": "^6.4|^7.0",
+ "symfony/uid": "^6.4|^7.0",
+ "twig/twig": "^3.0.4"
},
"bin": [
"Resources/bin/var-dump-server"
@@ -7544,7 +8403,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v6.2.3"
+ "source": "https://github.com/symfony/var-dumper/tree/v7.1.8"
},
"funding": [
{
@@ -7560,27 +8419,27 @@
"type": "tidelift"
}
],
- "time": "2022-12-22T17:55:15+00:00"
+ "time": "2024-11-08T15:46:42+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
- "version": "2.2.6",
+ "version": "v2.2.7",
"source": {
"type": "git",
"url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
- "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c"
+ "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c",
- "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c",
+ "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb",
+ "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"php": "^5.5 || ^7.0 || ^8.0",
- "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0"
+ "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10"
@@ -7611,37 +8470,37 @@
"homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
"support": {
"issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues",
- "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6"
+ "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7"
},
- "time": "2023-01-03T09:29:04+00:00"
+ "time": "2023-12-08T13:03:43+00:00"
},
{
"name": "vlucas/phpdotenv",
- "version": "v5.5.0",
+ "version": "v5.6.1",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
- "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7"
+ "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7",
- "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/a59a13791077fe3d44f90e7133eb68e7d22eaff2",
+ "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2",
"shasum": ""
},
"require": {
"ext-pcre": "*",
- "graham-campbell/result-type": "^1.0.2",
- "php": "^7.1.3 || ^8.0",
- "phpoption/phpoption": "^1.8",
- "symfony/polyfill-ctype": "^1.23",
- "symfony/polyfill-mbstring": "^1.23.1",
- "symfony/polyfill-php80": "^1.23.1"
+ "graham-campbell/result-type": "^1.1.3",
+ "php": "^7.2.5 || ^8.0",
+ "phpoption/phpoption": "^1.9.3",
+ "symfony/polyfill-ctype": "^1.24",
+ "symfony/polyfill-mbstring": "^1.24",
+ "symfony/polyfill-php80": "^1.24"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.4.1",
+ "bamarni/composer-bin-plugin": "^1.8.2",
"ext-filter": "*",
- "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25"
+ "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
},
"suggest": {
"ext-filter": "Required to use the boolean validator."
@@ -7650,10 +8509,10 @@
"extra": {
"bamarni-bin": {
"bin-links": true,
- "forward-command": true
+ "forward-command": false
},
"branch-alias": {
- "dev-master": "5.5-dev"
+ "dev-master": "5.6-dev"
}
},
"autoload": {
@@ -7685,7 +8544,7 @@
],
"support": {
"issues": "https://github.com/vlucas/phpdotenv/issues",
- "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0"
+ "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.1"
},
"funding": [
{
@@ -7697,7 +8556,7 @@
"type": "tidelift"
}
],
- "time": "2022-10-16T01:01:54+00:00"
+ "time": "2024-07-20T21:52:34+00:00"
},
{
"name": "voku/portable-ascii",
@@ -7833,39 +8692,46 @@
},
{
"name": "yajra/laravel-datatables-oracle",
- "version": "v9.21.2",
+ "version": "v11.1.5",
"source": {
"type": "git",
"url": "https://github.com/yajra/laravel-datatables.git",
- "reference": "a7fd01f06282923e9c63fa27fe6b391e21dc321a"
+ "reference": "158f2e9cf76d500c707a0ebd6cd2079cd87b8d4a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/yajra/laravel-datatables/zipball/a7fd01f06282923e9c63fa27fe6b391e21dc321a",
- "reference": "a7fd01f06282923e9c63fa27fe6b391e21dc321a",
+ "url": "https://api.github.com/repos/yajra/laravel-datatables/zipball/158f2e9cf76d500c707a0ebd6cd2079cd87b8d4a",
+ "reference": "158f2e9cf76d500c707a0ebd6cd2079cd87b8d4a",
"shasum": ""
},
"require": {
- "illuminate/database": "5.8.*|^6|^7|^8|^9",
- "illuminate/filesystem": "5.8.*|^6|^7|^8|^9",
- "illuminate/http": "5.8.*|^6|^7|^8|^9",
- "illuminate/support": "5.8.*|^6|^7|^8|^9",
- "illuminate/view": "5.8.*|^6|^7|^8|^9",
- "php": "^7.1.3|^8"
+ "illuminate/database": "^11",
+ "illuminate/filesystem": "^11",
+ "illuminate/http": "^11",
+ "illuminate/support": "^11",
+ "illuminate/view": "^11",
+ "php": "^8.2"
},
"require-dev": {
- "orchestra/testbench": "^3.8|^4.0|^5.0|^6.0|^7.0"
+ "algolia/algoliasearch-client-php": "^3.4.1",
+ "larastan/larastan": "^2.9.1",
+ "laravel/pint": "^1.14",
+ "laravel/scout": "^10.8.3",
+ "meilisearch/meilisearch-php": "^1.6.1",
+ "orchestra/testbench": "^9",
+ "rector/rector": "^1.0"
},
"suggest": {
"yajra/laravel-datatables-buttons": "Plugin for server-side exporting of dataTables.",
"yajra/laravel-datatables-editor": "Plugin to use DataTables Editor (requires a license).",
+ "yajra/laravel-datatables-export": "Plugin for server-side exporting using livewire and queue worker.",
"yajra/laravel-datatables-fractal": "Plugin for server-side response using Fractal.",
"yajra/laravel-datatables-html": "Plugin for server-side HTML builder of dataTables."
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "9.0-dev"
+ "dev-master": "11.x-dev"
},
"laravel": {
"providers": [
@@ -7894,62 +8760,59 @@
"email": "aqangeles@gmail.com"
}
],
- "description": "jQuery DataTables API for Laravel 5|6|7|8|9",
+ "description": "jQuery DataTables API for Laravel",
"keywords": [
"datatables",
"jquery",
- "laravel"
+ "laravel",
+ "yajra"
],
"support": {
"issues": "https://github.com/yajra/laravel-datatables/issues",
- "source": "https://github.com/yajra/laravel-datatables/tree/v9.21.2"
+ "source": "https://github.com/yajra/laravel-datatables/tree/v11.1.5"
},
"funding": [
{
- "url": "https://www.paypal.me/yajra",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/yajra",
- "type": "patreon"
+ "url": "https://github.com/sponsors/yajra",
+ "type": "github"
}
],
- "time": "2022-07-12T04:48:03+00:00"
+ "time": "2024-08-26T01:43:52+00:00"
}
],
"packages-dev": [
{
"name": "barryvdh/laravel-debugbar",
- "version": "v3.7.0",
+ "version": "v3.14.7",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-debugbar.git",
- "reference": "3372ed65e6d2039d663ed19aa699956f9d346271"
+ "reference": "f484b8c9124de0b163da39958331098ffcd4a65e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/3372ed65e6d2039d663ed19aa699956f9d346271",
- "reference": "3372ed65e6d2039d663ed19aa699956f9d346271",
+ "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/f484b8c9124de0b163da39958331098ffcd4a65e",
+ "reference": "f484b8c9124de0b163da39958331098ffcd4a65e",
"shasum": ""
},
"require": {
- "illuminate/routing": "^7|^8|^9",
- "illuminate/session": "^7|^8|^9",
- "illuminate/support": "^7|^8|^9",
- "maximebf/debugbar": "^1.17.2",
- "php": ">=7.2.5",
- "symfony/finder": "^5|^6"
+ "illuminate/routing": "^9|^10|^11",
+ "illuminate/session": "^9|^10|^11",
+ "illuminate/support": "^9|^10|^11",
+ "maximebf/debugbar": "~1.23.0",
+ "php": "^8.0",
+ "symfony/finder": "^6|^7"
},
"require-dev": {
"mockery/mockery": "^1.3.3",
- "orchestra/testbench-dusk": "^5|^6|^7",
- "phpunit/phpunit": "^8.5|^9.0",
+ "orchestra/testbench-dusk": "^5|^6|^7|^8|^9",
+ "phpunit/phpunit": "^9.6|^10.5",
"squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.6-dev"
+ "dev-master": "3.14-dev"
},
"laravel": {
"providers": [
@@ -7987,103 +8850,33 @@
"webprofiler"
],
"support": {
- "issues": "https://github.com/barryvdh/laravel-debugbar/issues",
- "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.7.0"
- },
- "funding": [
- {
- "url": "https://fruitcake.nl",
- "type": "custom"
- },
- {
- "url": "https://github.com/barryvdh",
- "type": "github"
- }
- ],
- "time": "2022-07-11T09:26:42+00:00"
- },
- {
- "name": "doctrine/instantiator",
- "version": "2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/instantiator.git",
- "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0",
- "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0",
- "shasum": ""
- },
- "require": {
- "php": "^8.1"
- },
- "require-dev": {
- "doctrine/coding-standard": "^11",
- "ext-pdo": "*",
- "ext-phar": "*",
- "phpbench/phpbench": "^1.2",
- "phpstan/phpstan": "^1.9.4",
- "phpstan/phpstan-phpunit": "^1.3",
- "phpunit/phpunit": "^9.5.27",
- "vimeo/psalm": "^5.4"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com",
- "homepage": "https://ocramius.github.io/"
- }
- ],
- "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
- "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
- "keywords": [
- "constructor",
- "instantiate"
- ],
- "support": {
- "issues": "https://github.com/doctrine/instantiator/issues",
- "source": "https://github.com/doctrine/instantiator/tree/2.0.0"
+ "issues": "https://github.com/barryvdh/laravel-debugbar/issues",
+ "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.14.7"
},
"funding": [
{
- "url": "https://www.doctrine-project.org/sponsorship.html",
+ "url": "https://fruitcake.nl",
"type": "custom"
},
{
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
- "type": "tidelift"
+ "url": "https://github.com/barryvdh",
+ "type": "github"
}
],
- "time": "2022-12-30T00:23:10+00:00"
+ "time": "2024-11-14T09:12:35+00:00"
},
{
"name": "fakerphp/faker",
- "version": "v1.21.0",
+ "version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/FakerPHP/Faker.git",
- "reference": "92efad6a967f0b79c499705c69b662f738cc9e4d"
+ "reference": "a136842a532bac9ecd8a1c723852b09915d7db50"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/92efad6a967f0b79c499705c69b662f738cc9e4d",
- "reference": "92efad6a967f0b79c499705c69b662f738cc9e4d",
+ "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/a136842a532bac9ecd8a1c723852b09915d7db50",
+ "reference": "a136842a532bac9ecd8a1c723852b09915d7db50",
"shasum": ""
},
"require": {
@@ -8109,11 +8902,6 @@
"ext-mbstring": "Required for multibyte Unicode string functionality."
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "v1.21-dev"
- }
- },
"autoload": {
"psr-4": {
"Faker\\": "src/Faker/"
@@ -8136,32 +8924,32 @@
],
"support": {
"issues": "https://github.com/FakerPHP/Faker/issues",
- "source": "https://github.com/FakerPHP/Faker/tree/v1.21.0"
+ "source": "https://github.com/FakerPHP/Faker/tree/v1.24.0"
},
- "time": "2022-12-13T13:54:32+00:00"
+ "time": "2024-11-07T15:11:20+00:00"
},
{
"name": "filp/whoops",
- "version": "2.14.6",
+ "version": "2.16.0",
"source": {
"type": "git",
"url": "https://github.com/filp/whoops.git",
- "reference": "f7948baaa0330277c729714910336383286305da"
+ "reference": "befcdc0e5dce67252aa6322d82424be928214fa2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filp/whoops/zipball/f7948baaa0330277c729714910336383286305da",
- "reference": "f7948baaa0330277c729714910336383286305da",
+ "url": "https://api.github.com/repos/filp/whoops/zipball/befcdc0e5dce67252aa6322d82424be928214fa2",
+ "reference": "befcdc0e5dce67252aa6322d82424be928214fa2",
"shasum": ""
},
"require": {
- "php": "^5.5.9 || ^7.0 || ^8.0",
+ "php": "^7.1 || ^8.0",
"psr/log": "^1.0.1 || ^2.0 || ^3.0"
},
"require-dev": {
- "mockery/mockery": "^0.9 || ^1.0",
- "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3",
- "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0"
+ "mockery/mockery": "^1.0",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3",
+ "symfony/var-dumper": "^4.0 || ^5.0"
},
"suggest": {
"symfony/var-dumper": "Pretty print complex values better with var-dumper available",
@@ -8201,7 +8989,7 @@
],
"support": {
"issues": "https://github.com/filp/whoops/issues",
- "source": "https://github.com/filp/whoops/tree/2.14.6"
+ "source": "https://github.com/filp/whoops/tree/2.16.0"
},
"funding": [
{
@@ -8209,7 +8997,7 @@
"type": "github"
}
],
- "time": "2022-11-02T16:23:29+00:00"
+ "time": "2024-09-25T12:00:00+00:00"
},
{
"name": "hamcrest/hamcrest-php",
@@ -8264,32 +9052,35 @@
},
{
"name": "laravel/sail",
- "version": "v1.18.1",
+ "version": "v1.38.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/sail.git",
- "reference": "a64f78a4ab86c04a4c5de39bea20a8d36ad48a22"
+ "reference": "d17abae06661dd6c46d13627b1683a2924259145"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/sail/zipball/a64f78a4ab86c04a4c5de39bea20a8d36ad48a22",
- "reference": "a64f78a4ab86c04a4c5de39bea20a8d36ad48a22",
+ "url": "https://api.github.com/repos/laravel/sail/zipball/d17abae06661dd6c46d13627b1683a2924259145",
+ "reference": "d17abae06661dd6c46d13627b1683a2924259145",
"shasum": ""
},
"require": {
- "illuminate/console": "^8.0|^9.0|^10.0",
- "illuminate/contracts": "^8.0|^9.0|^10.0",
- "illuminate/support": "^8.0|^9.0|^10.0",
- "php": "^7.3|^8.0"
+ "illuminate/console": "^9.52.16|^10.0|^11.0",
+ "illuminate/contracts": "^9.52.16|^10.0|^11.0",
+ "illuminate/support": "^9.52.16|^10.0|^11.0",
+ "php": "^8.0",
+ "symfony/console": "^6.0|^7.0",
+ "symfony/yaml": "^6.0|^7.0"
+ },
+ "require-dev": {
+ "orchestra/testbench": "^7.0|^8.0|^9.0",
+ "phpstan/phpstan": "^1.10"
},
"bin": [
"bin/sail"
],
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- },
"laravel": {
"providers": [
"Laravel\\Sail\\SailServiceProvider"
@@ -8320,29 +9111,31 @@
"issues": "https://github.com/laravel/sail/issues",
"source": "https://github.com/laravel/sail"
},
- "time": "2023-01-11T14:35:04+00:00"
+ "time": "2024-11-11T20:16:51+00:00"
},
{
"name": "maximebf/debugbar",
- "version": "v1.18.1",
+ "version": "v1.23.3",
"source": {
"type": "git",
"url": "https://github.com/maximebf/php-debugbar.git",
- "reference": "ba0af68dd4316834701ecb30a00ce9604ced3ee9"
+ "reference": "687400043d77943ef95e8417cb44e1673ee57844"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/ba0af68dd4316834701ecb30a00ce9604ced3ee9",
- "reference": "ba0af68dd4316834701ecb30a00ce9604ced3ee9",
+ "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/687400043d77943ef95e8417cb44e1673ee57844",
+ "reference": "687400043d77943ef95e8417cb44e1673ee57844",
"shasum": ""
},
"require": {
- "php": "^7.1|^8",
+ "php": "^7.2|^8",
"psr/log": "^1|^2|^3",
- "symfony/var-dumper": "^2.6|^3|^4|^5|^6"
+ "symfony/var-dumper": "^4|^5|^6|^7"
},
"require-dev": {
- "phpunit/phpunit": "^7.5.20 || ^9.4.2",
+ "dbrekelmans/bdi": "^1",
+ "phpunit/phpunit": "^8|^9",
+ "symfony/panther": "^1|^2.1",
"twig/twig": "^1.38|^2.7|^3.0"
},
"suggest": {
@@ -8353,7 +9146,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.18-dev"
+ "dev-master": "1.23-dev"
}
},
"autoload": {
@@ -8384,44 +9177,44 @@
],
"support": {
"issues": "https://github.com/maximebf/php-debugbar/issues",
- "source": "https://github.com/maximebf/php-debugbar/tree/v1.18.1"
+ "source": "https://github.com/maximebf/php-debugbar/tree/v1.23.3"
},
- "time": "2022-03-31T14:55:54+00:00"
+ "time": "2024-10-29T12:24:25+00:00"
},
{
"name": "mockery/mockery",
- "version": "1.5.1",
+ "version": "1.6.12",
"source": {
"type": "git",
"url": "https://github.com/mockery/mockery.git",
- "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e"
+ "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mockery/mockery/zipball/e92dcc83d5a51851baf5f5591d32cb2b16e3684e",
- "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e",
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699",
+ "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699",
"shasum": ""
},
"require": {
"hamcrest/hamcrest-php": "^2.0.1",
"lib-pcre": ">=7.0",
- "php": "^7.3 || ^8.0"
+ "php": ">=7.3"
},
"conflict": {
"phpunit/phpunit": "<8.0"
},
"require-dev": {
- "phpunit/phpunit": "^8.5 || ^9.3"
+ "phpunit/phpunit": "^8.5 || ^9.6.17",
+ "symplify/easy-coding-standard": "^12.1.14"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4.x-dev"
- }
- },
"autoload": {
- "psr-0": {
- "Mockery": "library/"
+ "files": [
+ "library/helpers.php",
+ "library/Mockery.php"
+ ],
+ "psr-4": {
+ "Mockery\\": "library/Mockery"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -8432,12 +9225,20 @@
{
"name": "Pádraic Brady",
"email": "padraic.brady@gmail.com",
- "homepage": "http://blog.astrumfutura.com"
+ "homepage": "https://github.com/padraic",
+ "role": "Author"
},
{
"name": "Dave Marshall",
"email": "dave.marshall@atstsolutions.co.uk",
- "homepage": "http://davedevelopment.co.uk"
+ "homepage": "https://davedevelopment.co.uk",
+ "role": "Developer"
+ },
+ {
+ "name": "Nathanael Esayeas",
+ "email": "nathanael.esayeas@protonmail.com",
+ "homepage": "https://github.com/ghostwriter",
+ "role": "Lead Developer"
}
],
"description": "Mockery is a simple yet flexible PHP mock object framework",
@@ -8455,23 +9256,26 @@
"testing"
],
"support": {
+ "docs": "https://docs.mockery.io/",
"issues": "https://github.com/mockery/mockery/issues",
- "source": "https://github.com/mockery/mockery/tree/1.5.1"
+ "rss": "https://github.com/mockery/mockery/releases.atom",
+ "security": "https://github.com/mockery/mockery/security/advisories",
+ "source": "https://github.com/mockery/mockery"
},
- "time": "2022-09-07T15:32:08+00:00"
+ "time": "2024-05-16T03:13:13+00:00"
},
{
"name": "myclabs/deep-copy",
- "version": "1.11.0",
+ "version": "1.12.1",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614"
+ "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614",
- "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845",
+ "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845",
"shasum": ""
},
"require": {
@@ -8479,11 +9283,12 @@
},
"conflict": {
"doctrine/collections": "<1.6.8",
- "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+ "doctrine/common": "<2.13.3 || >=3 <3.2.2"
},
"require-dev": {
"doctrine/collections": "^1.6.8",
"doctrine/common": "^2.13.3 || ^3.2.2",
+ "phpspec/prophecy": "^1.10",
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
},
"type": "library",
@@ -8509,7 +9314,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1"
},
"funding": [
{
@@ -8517,49 +9322,58 @@
"type": "tidelift"
}
],
- "time": "2022-03-03T13:19:32+00:00"
+ "time": "2024-11-08T17:47:46+00:00"
},
{
"name": "nunomaduro/collision",
- "version": "v6.4.0",
+ "version": "v8.5.0",
"source": {
"type": "git",
"url": "https://github.com/nunomaduro/collision.git",
- "reference": "f05978827b9343cba381ca05b8c7deee346b6015"
+ "reference": "f5c101b929c958e849a633283adff296ed5f38f5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f05978827b9343cba381ca05b8c7deee346b6015",
- "reference": "f05978827b9343cba381ca05b8c7deee346b6015",
+ "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f5c101b929c958e849a633283adff296ed5f38f5",
+ "reference": "f5c101b929c958e849a633283adff296ed5f38f5",
"shasum": ""
},
"require": {
- "filp/whoops": "^2.14.5",
- "php": "^8.0.0",
- "symfony/console": "^6.0.2"
+ "filp/whoops": "^2.16.0",
+ "nunomaduro/termwind": "^2.1.0",
+ "php": "^8.2.0",
+ "symfony/console": "^7.1.5"
+ },
+ "conflict": {
+ "laravel/framework": "<11.0.0 || >=12.0.0",
+ "phpunit/phpunit": "<10.5.1 || >=12.0.0"
},
"require-dev": {
- "brianium/paratest": "^6.4.1",
- "laravel/framework": "^9.26.1",
- "laravel/pint": "^1.1.1",
- "nunomaduro/larastan": "^1.0.3",
- "nunomaduro/mock-final-classes": "^1.1.0",
- "orchestra/testbench": "^7.7",
- "phpunit/phpunit": "^9.5.23",
- "spatie/ignition": "^1.4.1"
+ "larastan/larastan": "^2.9.8",
+ "laravel/framework": "^11.28.0",
+ "laravel/pint": "^1.18.1",
+ "laravel/sail": "^1.36.0",
+ "laravel/sanctum": "^4.0.3",
+ "laravel/tinker": "^2.10.0",
+ "orchestra/testbench-core": "^9.5.3",
+ "pestphp/pest": "^2.36.0 || ^3.4.0",
+ "sebastian/environment": "^6.1.0 || ^7.2.0"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-develop": "6.x-dev"
- },
"laravel": {
"providers": [
"NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider"
]
+ },
+ "branch-alias": {
+ "dev-8.x": "8.x-dev"
}
},
"autoload": {
+ "files": [
+ "./src/Adapters/Phpunit/Autoload.php"
+ ],
"psr-4": {
"NunoMaduro\\Collision\\": "src/"
}
@@ -8605,24 +9419,25 @@
"type": "patreon"
}
],
- "time": "2023-01-03T12:54:54+00:00"
+ "time": "2024-10-15T16:06:32+00:00"
},
{
"name": "phar-io/manifest",
- "version": "2.0.3",
+ "version": "2.0.4",
"source": {
"type": "git",
"url": "https://github.com/phar-io/manifest.git",
- "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
+ "reference": "54750ef60c58e43759730615a392c31c80e23176"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
- "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176",
+ "reference": "54750ef60c58e43759730615a392c31c80e23176",
"shasum": ""
},
"require": {
"ext-dom": "*",
+ "ext-libxml": "*",
"ext-phar": "*",
"ext-xmlwriter": "*",
"phar-io/version": "^3.0.1",
@@ -8663,9 +9478,15 @@
"description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
"support": {
"issues": "https://github.com/phar-io/manifest/issues",
- "source": "https://github.com/phar-io/manifest/tree/2.0.3"
+ "source": "https://github.com/phar-io/manifest/tree/2.0.4"
},
- "time": "2021-07-20T11:28:43+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-03T12:33:53+00:00"
},
{
"name": "phar-io/version",
@@ -8720,44 +9541,44 @@
},
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.23",
+ "version": "11.0.7",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c"
+ "reference": "f7f08030e8811582cc459871d28d6f5a1a4d35ca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c",
- "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f7f08030e8811582cc459871d28d6f5a1a4d35ca",
+ "reference": "f7f08030e8811582cc459871d28d6f5a1a4d35ca",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"ext-xmlwriter": "*",
- "nikic/php-parser": "^4.14",
- "php": ">=7.3",
- "phpunit/php-file-iterator": "^3.0.3",
- "phpunit/php-text-template": "^2.0.2",
- "sebastian/code-unit-reverse-lookup": "^2.0.2",
- "sebastian/complexity": "^2.0",
- "sebastian/environment": "^5.1.2",
- "sebastian/lines-of-code": "^1.0.3",
- "sebastian/version": "^3.0.1",
- "theseer/tokenizer": "^1.2.0"
+ "nikic/php-parser": "^5.3.1",
+ "php": ">=8.2",
+ "phpunit/php-file-iterator": "^5.1.0",
+ "phpunit/php-text-template": "^4.0.1",
+ "sebastian/code-unit-reverse-lookup": "^4.0.1",
+ "sebastian/complexity": "^4.0.1",
+ "sebastian/environment": "^7.2.0",
+ "sebastian/lines-of-code": "^3.0.1",
+ "sebastian/version": "^5.0.2",
+ "theseer/tokenizer": "^1.2.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^11.4.1"
},
"suggest": {
- "ext-pcov": "*",
- "ext-xdebug": "*"
+ "ext-pcov": "PHP extension that provides line coverage",
+ "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "9.2-dev"
+ "dev-main": "11.0.x-dev"
}
},
"autoload": {
@@ -8785,7 +9606,8 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.23"
+ "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.7"
},
"funding": [
{
@@ -8793,32 +9615,32 @@
"type": "github"
}
],
- "time": "2022-12-28T12:41:10+00:00"
+ "time": "2024-10-09T06:21:38+00:00"
},
{
"name": "phpunit/php-file-iterator",
- "version": "3.0.6",
+ "version": "5.1.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
+ "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
- "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/118cfaaa8bc5aef3287bf315b6060b1174754af6",
+ "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.2"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^11.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-main": "5.0-dev"
}
},
"autoload": {
@@ -8845,7 +9667,8 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
- "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6"
+ "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy",
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.0"
},
"funding": [
{
@@ -8853,28 +9676,28 @@
"type": "github"
}
],
- "time": "2021-12-02T12:48:52+00:00"
+ "time": "2024-08-27T05:02:59+00:00"
},
{
"name": "phpunit/php-invoker",
- "version": "3.1.1",
+ "version": "5.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-invoker.git",
- "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
+ "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
- "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2",
+ "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.2"
},
"require-dev": {
"ext-pcntl": "*",
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^11.0"
},
"suggest": {
"ext-pcntl": "*"
@@ -8882,7 +9705,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.1-dev"
+ "dev-main": "5.0-dev"
}
},
"autoload": {
@@ -8908,7 +9731,8 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-invoker/issues",
- "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
+ "security": "https://github.com/sebastianbergmann/php-invoker/security/policy",
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.1"
},
"funding": [
{
@@ -8916,32 +9740,32 @@
"type": "github"
}
],
- "time": "2020-09-28T05:58:55+00:00"
+ "time": "2024-07-03T05:07:44+00:00"
},
{
"name": "phpunit/php-text-template",
- "version": "2.0.4",
+ "version": "4.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
+ "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
- "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964",
+ "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.2"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^11.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-main": "4.0-dev"
}
},
"autoload": {
@@ -8967,7 +9791,8 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-text-template/issues",
- "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
+ "security": "https://github.com/sebastianbergmann/php-text-template/security/policy",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.1"
},
"funding": [
{
@@ -8975,32 +9800,32 @@
"type": "github"
}
],
- "time": "2020-10-26T05:33:50+00:00"
+ "time": "2024-07-03T05:08:43+00:00"
},
{
"name": "phpunit/php-timer",
- "version": "5.0.3",
+ "version": "7.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
+ "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
- "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3",
+ "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.2"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^11.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-main": "7.0-dev"
}
},
"autoload": {
@@ -9026,7 +9851,8 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-timer/issues",
- "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
+ "security": "https://github.com/sebastianbergmann/php-timer/security/policy",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.1"
},
"funding": [
{
@@ -9034,54 +9860,51 @@
"type": "github"
}
],
- "time": "2020-10-26T13:16:10+00:00"
+ "time": "2024-07-03T05:09:35+00:00"
},
{
"name": "phpunit/phpunit",
- "version": "9.5.28",
+ "version": "11.4.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "954ca3113a03bf780d22f07bf055d883ee04b65e"
+ "reference": "e8e8ed1854de5d36c088ec1833beae40d2dedd76"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/954ca3113a03bf780d22f07bf055d883ee04b65e",
- "reference": "954ca3113a03bf780d22f07bf055d883ee04b65e",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e8e8ed1854de5d36c088ec1833beae40d2dedd76",
+ "reference": "e8e8ed1854de5d36c088ec1833beae40d2dedd76",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.3.1 || ^2",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-xml": "*",
"ext-xmlwriter": "*",
- "myclabs/deep-copy": "^1.10.1",
- "phar-io/manifest": "^2.0.3",
- "phar-io/version": "^3.0.2",
- "php": ">=7.3",
- "phpunit/php-code-coverage": "^9.2.13",
- "phpunit/php-file-iterator": "^3.0.5",
- "phpunit/php-invoker": "^3.1.1",
- "phpunit/php-text-template": "^2.0.3",
- "phpunit/php-timer": "^5.0.2",
- "sebastian/cli-parser": "^1.0.1",
- "sebastian/code-unit": "^1.0.6",
- "sebastian/comparator": "^4.0.8",
- "sebastian/diff": "^4.0.3",
- "sebastian/environment": "^5.1.3",
- "sebastian/exporter": "^4.0.5",
- "sebastian/global-state": "^5.0.1",
- "sebastian/object-enumerator": "^4.0.3",
- "sebastian/resource-operations": "^3.0.3",
- "sebastian/type": "^3.2",
- "sebastian/version": "^3.0.2"
+ "myclabs/deep-copy": "^1.12.0",
+ "phar-io/manifest": "^2.0.4",
+ "phar-io/version": "^3.2.1",
+ "php": ">=8.2",
+ "phpunit/php-code-coverage": "^11.0.7",
+ "phpunit/php-file-iterator": "^5.1.0",
+ "phpunit/php-invoker": "^5.0.1",
+ "phpunit/php-text-template": "^4.0.1",
+ "phpunit/php-timer": "^7.0.1",
+ "sebastian/cli-parser": "^3.0.2",
+ "sebastian/code-unit": "^3.0.1",
+ "sebastian/comparator": "^6.1.1",
+ "sebastian/diff": "^6.0.2",
+ "sebastian/environment": "^7.2.0",
+ "sebastian/exporter": "^6.1.3",
+ "sebastian/global-state": "^7.0.2",
+ "sebastian/object-enumerator": "^6.0.1",
+ "sebastian/type": "^5.1.0",
+ "sebastian/version": "^5.0.2"
},
"suggest": {
- "ext-soap": "*",
- "ext-xdebug": "*"
+ "ext-soap": "To be able to generate mocks based on WSDL files"
},
"bin": [
"phpunit"
@@ -9089,7 +9912,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "9.5-dev"
+ "dev-main": "11.4-dev"
}
},
"autoload": {
@@ -9120,7 +9943,8 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.28"
+ "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/11.4.3"
},
"funding": [
{
@@ -9136,32 +9960,32 @@
"type": "tidelift"
}
],
- "time": "2023-01-14T12:32:24+00:00"
+ "time": "2024-10-28T13:07:50+00:00"
},
{
"name": "sebastian/cli-parser",
- "version": "1.0.1",
+ "version": "3.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/cli-parser.git",
- "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+ "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
- "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180",
+ "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.2"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^11.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-main": "3.0-dev"
}
},
"autoload": {
@@ -9184,7 +10008,8 @@
"homepage": "https://github.com/sebastianbergmann/cli-parser",
"support": {
"issues": "https://github.com/sebastianbergmann/cli-parser/issues",
- "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
+ "security": "https://github.com/sebastianbergmann/cli-parser/security/policy",
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.2"
},
"funding": [
{
@@ -9192,32 +10017,32 @@
"type": "github"
}
],
- "time": "2020-09-28T06:08:49+00:00"
+ "time": "2024-07-03T04:41:36+00:00"
},
{
"name": "sebastian/code-unit",
- "version": "1.0.8",
+ "version": "3.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/code-unit.git",
- "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
+ "reference": "6bb7d09d6623567178cf54126afa9c2310114268"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
- "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/6bb7d09d6623567178cf54126afa9c2310114268",
+ "reference": "6bb7d09d6623567178cf54126afa9c2310114268",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.2"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^11.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-main": "3.0-dev"
}
},
"autoload": {
@@ -9240,7 +10065,8 @@
"homepage": "https://github.com/sebastianbergmann/code-unit",
"support": {
"issues": "https://github.com/sebastianbergmann/code-unit/issues",
- "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
+ "security": "https://github.com/sebastianbergmann/code-unit/security/policy",
+ "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.1"
},
"funding": [
{
@@ -9248,32 +10074,32 @@
"type": "github"
}
],
- "time": "2020-10-26T13:08:54+00:00"
+ "time": "2024-07-03T04:44:28+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
- "version": "2.0.3",
+ "version": "4.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
- "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
+ "reference": "183a9b2632194febd219bb9246eee421dad8d45e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
- "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e",
+ "reference": "183a9b2632194febd219bb9246eee421dad8d45e",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.2"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^11.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-main": "4.0-dev"
}
},
"autoload": {
@@ -9295,7 +10121,8 @@
"homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
"support": {
"issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
- "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
+ "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy",
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.1"
},
"funding": [
{
@@ -9303,34 +10130,36 @@
"type": "github"
}
],
- "time": "2020-09-28T05:30:19+00:00"
+ "time": "2024-07-03T04:45:54+00:00"
},
{
"name": "sebastian/comparator",
- "version": "4.0.8",
+ "version": "6.2.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "fa0f136dd2334583309d32b62544682ee972b51a"
+ "reference": "43d129d6a0f81c78bee378b46688293eb7ea3739"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a",
- "reference": "fa0f136dd2334583309d32b62544682ee972b51a",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/43d129d6a0f81c78bee378b46688293eb7ea3739",
+ "reference": "43d129d6a0f81c78bee378b46688293eb7ea3739",
"shasum": ""
},
"require": {
- "php": ">=7.3",
- "sebastian/diff": "^4.0",
- "sebastian/exporter": "^4.0"
+ "ext-dom": "*",
+ "ext-mbstring": "*",
+ "php": ">=8.2",
+ "sebastian/diff": "^6.0",
+ "sebastian/exporter": "^6.0"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^11.4"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-main": "6.2-dev"
}
},
"autoload": {
@@ -9369,7 +10198,8 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/comparator/issues",
- "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8"
+ "security": "https://github.com/sebastianbergmann/comparator/security/policy",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/6.2.1"
},
"funding": [
{
@@ -9377,33 +10207,33 @@
"type": "github"
}
],
- "time": "2022-09-14T12:41:17+00:00"
+ "time": "2024-10-31T05:30:08+00:00"
},
{
"name": "sebastian/complexity",
- "version": "2.0.2",
+ "version": "4.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/complexity.git",
- "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
+ "reference": "ee41d384ab1906c68852636b6de493846e13e5a0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
- "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0",
+ "reference": "ee41d384ab1906c68852636b6de493846e13e5a0",
"shasum": ""
},
"require": {
- "nikic/php-parser": "^4.7",
- "php": ">=7.3"
+ "nikic/php-parser": "^5.0",
+ "php": ">=8.2"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^11.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-main": "4.0-dev"
}
},
"autoload": {
@@ -9426,7 +10256,8 @@
"homepage": "https://github.com/sebastianbergmann/complexity",
"support": {
"issues": "https://github.com/sebastianbergmann/complexity/issues",
- "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
+ "security": "https://github.com/sebastianbergmann/complexity/security/policy",
+ "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.1"
},
"funding": [
{
@@ -9434,33 +10265,33 @@
"type": "github"
}
],
- "time": "2020-10-26T15:52:27+00:00"
+ "time": "2024-07-03T04:49:50+00:00"
},
{
"name": "sebastian/diff",
- "version": "4.0.4",
+ "version": "6.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
+ "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
- "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544",
+ "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.2"
},
"require-dev": {
- "phpunit/phpunit": "^9.3",
+ "phpunit/phpunit": "^11.0",
"symfony/process": "^4.2 || ^5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-main": "6.0-dev"
}
},
"autoload": {
@@ -9492,7 +10323,8 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
- "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
+ "security": "https://github.com/sebastianbergmann/diff/security/policy",
+ "source": "https://github.com/sebastianbergmann/diff/tree/6.0.2"
},
"funding": [
{
@@ -9500,27 +10332,27 @@
"type": "github"
}
],
- "time": "2020-10-26T13:10:38+00:00"
+ "time": "2024-07-03T04:53:05+00:00"
},
{
"name": "sebastian/environment",
- "version": "5.1.4",
+ "version": "7.2.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7"
+ "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7",
- "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5",
+ "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.2"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^11.0"
},
"suggest": {
"ext-posix": "*"
@@ -9528,7 +10360,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.1-dev"
+ "dev-main": "7.2-dev"
}
},
"autoload": {
@@ -9547,7 +10379,7 @@
}
],
"description": "Provides functionality to handle HHVM/PHP environments",
- "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "homepage": "https://github.com/sebastianbergmann/environment",
"keywords": [
"Xdebug",
"environment",
@@ -9555,7 +10387,8 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/environment/issues",
- "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4"
+ "security": "https://github.com/sebastianbergmann/environment/security/policy",
+ "source": "https://github.com/sebastianbergmann/environment/tree/7.2.0"
},
"funding": [
{
@@ -9563,34 +10396,34 @@
"type": "github"
}
],
- "time": "2022-04-03T09:37:03+00:00"
+ "time": "2024-07-03T04:54:44+00:00"
},
{
"name": "sebastian/exporter",
- "version": "4.0.5",
+ "version": "6.1.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d"
+ "reference": "c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
- "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e",
+ "reference": "c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e",
"shasum": ""
},
"require": {
- "php": ">=7.3",
- "sebastian/recursion-context": "^4.0"
+ "ext-mbstring": "*",
+ "php": ">=8.2",
+ "sebastian/recursion-context": "^6.0"
},
"require-dev": {
- "ext-mbstring": "*",
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^11.2"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-main": "6.1-dev"
}
},
"autoload": {
@@ -9632,7 +10465,8 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
- "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5"
+ "security": "https://github.com/sebastianbergmann/exporter/security/policy",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/6.1.3"
},
"funding": [
{
@@ -9640,38 +10474,35 @@
"type": "github"
}
],
- "time": "2022-09-14T06:03:37+00:00"
+ "time": "2024-07-03T04:56:19+00:00"
},
{
"name": "sebastian/global-state",
- "version": "5.0.5",
+ "version": "7.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2"
+ "reference": "3be331570a721f9a4b5917f4209773de17f747d7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2",
- "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7",
+ "reference": "3be331570a721f9a4b5917f4209773de17f747d7",
"shasum": ""
},
"require": {
- "php": ">=7.3",
- "sebastian/object-reflector": "^2.0",
- "sebastian/recursion-context": "^4.0"
+ "php": ">=8.2",
+ "sebastian/object-reflector": "^4.0",
+ "sebastian/recursion-context": "^6.0"
},
"require-dev": {
"ext-dom": "*",
- "phpunit/phpunit": "^9.3"
- },
- "suggest": {
- "ext-uopz": "*"
+ "phpunit/phpunit": "^11.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-main": "7.0-dev"
}
},
"autoload": {
@@ -9690,13 +10521,14 @@
}
],
"description": "Snapshotting of global state",
- "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "homepage": "https://www.github.com/sebastianbergmann/global-state",
"keywords": [
"global state"
],
"support": {
"issues": "https://github.com/sebastianbergmann/global-state/issues",
- "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5"
+ "security": "https://github.com/sebastianbergmann/global-state/security/policy",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.2"
},
"funding": [
{
@@ -9704,33 +10536,33 @@
"type": "github"
}
],
- "time": "2022-02-14T08:28:10+00:00"
+ "time": "2024-07-03T04:57:36+00:00"
},
{
"name": "sebastian/lines-of-code",
- "version": "1.0.3",
+ "version": "3.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/lines-of-code.git",
- "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
+ "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
- "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a",
+ "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a",
"shasum": ""
},
"require": {
- "nikic/php-parser": "^4.6",
- "php": ">=7.3"
+ "nikic/php-parser": "^5.0",
+ "php": ">=8.2"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^11.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-main": "3.0-dev"
}
},
"autoload": {
@@ -9753,7 +10585,8 @@
"homepage": "https://github.com/sebastianbergmann/lines-of-code",
"support": {
"issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
- "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
+ "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy",
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.1"
},
"funding": [
{
@@ -9761,34 +10594,34 @@
"type": "github"
}
],
- "time": "2020-11-28T06:42:11+00:00"
+ "time": "2024-07-03T04:58:38+00:00"
},
{
"name": "sebastian/object-enumerator",
- "version": "4.0.4",
+ "version": "6.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
+ "reference": "f5b498e631a74204185071eb41f33f38d64608aa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
- "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa",
+ "reference": "f5b498e631a74204185071eb41f33f38d64608aa",
"shasum": ""
},
"require": {
- "php": ">=7.3",
- "sebastian/object-reflector": "^2.0",
- "sebastian/recursion-context": "^4.0"
+ "php": ">=8.2",
+ "sebastian/object-reflector": "^4.0",
+ "sebastian/recursion-context": "^6.0"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^11.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-main": "6.0-dev"
}
},
"autoload": {
@@ -9810,7 +10643,8 @@
"homepage": "https://github.com/sebastianbergmann/object-enumerator/",
"support": {
"issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
- "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
+ "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy",
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.1"
},
"funding": [
{
@@ -9818,32 +10652,32 @@
"type": "github"
}
],
- "time": "2020-10-26T13:12:34+00:00"
+ "time": "2024-07-03T05:00:13+00:00"
},
{
"name": "sebastian/object-reflector",
- "version": "2.0.4",
+ "version": "4.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
+ "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
- "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9",
+ "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.2"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^11.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-main": "4.0-dev"
}
},
"autoload": {
@@ -9865,7 +10699,8 @@
"homepage": "https://github.com/sebastianbergmann/object-reflector/",
"support": {
"issues": "https://github.com/sebastianbergmann/object-reflector/issues",
- "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
+ "security": "https://github.com/sebastianbergmann/object-reflector/security/policy",
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.1"
},
"funding": [
{
@@ -9873,32 +10708,32 @@
"type": "github"
}
],
- "time": "2020-10-26T13:14:26+00:00"
+ "time": "2024-07-03T05:01:32+00:00"
},
{
"name": "sebastian/recursion-context",
- "version": "4.0.4",
+ "version": "6.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
+ "reference": "694d156164372abbd149a4b85ccda2e4670c0e16"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
- "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/694d156164372abbd149a4b85ccda2e4670c0e16",
+ "reference": "694d156164372abbd149a4b85ccda2e4670c0e16",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.2"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^11.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-main": "6.0-dev"
}
},
"autoload": {
@@ -9925,65 +10760,11 @@
}
],
"description": "Provides functionality to recursively process PHP variables",
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "homepage": "https://github.com/sebastianbergmann/recursion-context",
"support": {
"issues": "https://github.com/sebastianbergmann/recursion-context/issues",
- "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2020-10-26T13:17:30+00:00"
- },
- {
- "name": "sebastian/resource-operations",
- "version": "3.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/resource-operations.git",
- "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
- "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides a list of PHP built-in functions that operate on resources",
- "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
- "support": {
- "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
- "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+ "security": "https://github.com/sebastianbergmann/recursion-context/security/policy",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.2"
},
"funding": [
{
@@ -9991,32 +10772,32 @@
"type": "github"
}
],
- "time": "2020-09-28T06:45:17+00:00"
+ "time": "2024-07-03T05:10:34+00:00"
},
{
"name": "sebastian/type",
- "version": "3.2.0",
+ "version": "5.1.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/type.git",
- "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e"
+ "reference": "461b9c5da241511a2a0e8f240814fb23ce5c0aac"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
- "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/461b9c5da241511a2a0e8f240814fb23ce5c0aac",
+ "reference": "461b9c5da241511a2a0e8f240814fb23ce5c0aac",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.2"
},
"require-dev": {
- "phpunit/phpunit": "^9.5"
+ "phpunit/phpunit": "^11.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.2-dev"
+ "dev-main": "5.1-dev"
}
},
"autoload": {
@@ -10039,7 +10820,8 @@
"homepage": "https://github.com/sebastianbergmann/type",
"support": {
"issues": "https://github.com/sebastianbergmann/type/issues",
- "source": "https://github.com/sebastianbergmann/type/tree/3.2.0"
+ "security": "https://github.com/sebastianbergmann/type/security/policy",
+ "source": "https://github.com/sebastianbergmann/type/tree/5.1.0"
},
"funding": [
{
@@ -10047,29 +10829,29 @@
"type": "github"
}
],
- "time": "2022-09-12T14:47:03+00:00"
+ "time": "2024-09-17T13:12:04+00:00"
},
{
"name": "sebastian/version",
- "version": "3.0.2",
+ "version": "5.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/version.git",
- "reference": "c6c1022351a901512170118436c764e473f6de8c"
+ "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
- "reference": "c6c1022351a901512170118436c764e473f6de8c",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c687e3387b99f5b03b6caa64c74b63e2936ff874",
+ "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.2"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-main": "5.0-dev"
}
},
"autoload": {
@@ -10092,7 +10874,8 @@
"homepage": "https://github.com/sebastianbergmann/version",
"support": {
"issues": "https://github.com/sebastianbergmann/version/issues",
- "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
+ "security": "https://github.com/sebastianbergmann/version/security/policy",
+ "source": "https://github.com/sebastianbergmann/version/tree/5.0.2"
},
"funding": [
{
@@ -10100,20 +10883,20 @@
"type": "github"
}
],
- "time": "2020-09-28T06:39:44+00:00"
+ "time": "2024-10-09T05:16:32+00:00"
},
{
"name": "spatie/backtrace",
- "version": "1.2.1",
+ "version": "1.6.2",
"source": {
"type": "git",
"url": "https://github.com/spatie/backtrace.git",
- "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b"
+ "reference": "1a9a145b044677ae3424693f7b06479fc8c137a9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b",
- "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b",
+ "url": "https://api.github.com/repos/spatie/backtrace/zipball/1a9a145b044677ae3424693f7b06479fc8c137a9",
+ "reference": "1a9a145b044677ae3424693f7b06479fc8c137a9",
"shasum": ""
},
"require": {
@@ -10121,7 +10904,9 @@
},
"require-dev": {
"ext-json": "*",
+ "laravel/serializable-closure": "^1.3",
"phpunit/phpunit": "^9.3",
+ "spatie/phpunit-snapshot-assertions": "^4.2",
"symfony/var-dumper": "^5.1"
},
"type": "library",
@@ -10149,8 +10934,7 @@
"spatie"
],
"support": {
- "issues": "https://github.com/spatie/backtrace/issues",
- "source": "https://github.com/spatie/backtrace/tree/1.2.1"
+ "source": "https://github.com/spatie/backtrace/tree/1.6.2"
},
"funding": [
{
@@ -10162,43 +10946,117 @@
"type": "other"
}
],
- "time": "2021-11-09T10:57:15+00:00"
+ "time": "2024-07-22T08:21:24+00:00"
+ },
+ {
+ "name": "spatie/error-solutions",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/error-solutions.git",
+ "reference": "ae7393122eda72eed7cc4f176d1e96ea444f2d67"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/error-solutions/zipball/ae7393122eda72eed7cc4f176d1e96ea444f2d67",
+ "reference": "ae7393122eda72eed7cc4f176d1e96ea444f2d67",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "illuminate/broadcasting": "^10.0|^11.0",
+ "illuminate/cache": "^10.0|^11.0",
+ "illuminate/support": "^10.0|^11.0",
+ "livewire/livewire": "^2.11|^3.3.5",
+ "openai-php/client": "^0.10.1",
+ "orchestra/testbench": "^7.0|8.22.3|^9.0",
+ "pestphp/pest": "^2.20",
+ "phpstan/phpstan": "^1.11",
+ "psr/simple-cache": "^3.0",
+ "psr/simple-cache-implementation": "^3.0",
+ "spatie/ray": "^1.28",
+ "symfony/cache": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.0|^7.0",
+ "vlucas/phpdotenv": "^5.5"
+ },
+ "suggest": {
+ "openai-php/client": "Require get solutions from OpenAI",
+ "simple-cache-implementation": "To cache solutions from OpenAI"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Spatie\\Ignition\\": "legacy/ignition",
+ "Spatie\\ErrorSolutions\\": "src",
+ "Spatie\\LaravelIgnition\\": "legacy/laravel-ignition"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ruben Van Assche",
+ "email": "ruben@spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "This is my package error-solutions",
+ "homepage": "https://github.com/spatie/error-solutions",
+ "keywords": [
+ "error-solutions",
+ "spatie"
+ ],
+ "support": {
+ "issues": "https://github.com/spatie/error-solutions/issues",
+ "source": "https://github.com/spatie/error-solutions/tree/1.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Spatie",
+ "type": "github"
+ }
+ ],
+ "time": "2024-07-25T11:06:04+00:00"
},
{
"name": "spatie/flare-client-php",
- "version": "1.3.3",
+ "version": "1.8.0",
"source": {
"type": "git",
"url": "https://github.com/spatie/flare-client-php.git",
- "reference": "f5aea0629d1fff794b2aabbcd483bd83824b112f"
+ "reference": "180f8ca4c0d0d6fc51477bd8c53ce37ab5a96122"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/f5aea0629d1fff794b2aabbcd483bd83824b112f",
- "reference": "f5aea0629d1fff794b2aabbcd483bd83824b112f",
+ "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/180f8ca4c0d0d6fc51477bd8c53ce37ab5a96122",
+ "reference": "180f8ca4c0d0d6fc51477bd8c53ce37ab5a96122",
"shasum": ""
},
"require": {
- "illuminate/pipeline": "^8.0|^9.0",
+ "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0",
"php": "^8.0",
- "spatie/backtrace": "^1.2",
- "symfony/http-foundation": "^5.0|^6.0",
- "symfony/mime": "^5.2|^6.0",
- "symfony/process": "^5.2|^6.0",
- "symfony/var-dumper": "^5.2|^6.0"
+ "spatie/backtrace": "^1.6.1",
+ "symfony/http-foundation": "^5.2|^6.0|^7.0",
+ "symfony/mime": "^5.2|^6.0|^7.0",
+ "symfony/process": "^5.2|^6.0|^7.0",
+ "symfony/var-dumper": "^5.2|^6.0|^7.0"
},
"require-dev": {
- "dms/phpunit-arraysubset-asserts": "^0.3.0",
- "pestphp/pest": "^1.20",
+ "dms/phpunit-arraysubset-asserts": "^0.5.0",
+ "pestphp/pest": "^1.20|^2.0",
"phpstan/extension-installer": "^1.1",
"phpstan/phpstan-deprecation-rules": "^1.0",
"phpstan/phpstan-phpunit": "^1.0",
- "spatie/phpunit-snapshot-assertions": "^4.0"
+ "spatie/pest-plugin-snapshots": "^1.0|^2.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.1.x-dev"
+ "dev-main": "1.3.x-dev"
}
},
"autoload": {
@@ -10223,7 +11081,7 @@
],
"support": {
"issues": "https://github.com/spatie/flare-client-php/issues",
- "source": "https://github.com/spatie/flare-client-php/tree/1.3.3"
+ "source": "https://github.com/spatie/flare-client-php/tree/1.8.0"
},
"funding": [
{
@@ -10231,43 +11089,51 @@
"type": "github"
}
],
- "time": "2022-12-26T14:37:55+00:00"
+ "time": "2024-08-01T08:27:26+00:00"
},
{
"name": "spatie/ignition",
- "version": "1.4.2",
+ "version": "1.15.0",
"source": {
"type": "git",
"url": "https://github.com/spatie/ignition.git",
- "reference": "79a2eedbfa88955bb41411e61f7db9134c9a6a82"
+ "reference": "e3a68e137371e1eb9edc7f78ffa733f3b98991d2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/ignition/zipball/79a2eedbfa88955bb41411e61f7db9134c9a6a82",
- "reference": "79a2eedbfa88955bb41411e61f7db9134c9a6a82",
+ "url": "https://api.github.com/repos/spatie/ignition/zipball/e3a68e137371e1eb9edc7f78ffa733f3b98991d2",
+ "reference": "e3a68e137371e1eb9edc7f78ffa733f3b98991d2",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-mbstring": "*",
- "monolog/monolog": "^2.0",
"php": "^8.0",
- "spatie/flare-client-php": "^1.1",
- "symfony/console": "^5.4|^6.0",
- "symfony/var-dumper": "^5.4|^6.0"
+ "spatie/error-solutions": "^1.0",
+ "spatie/flare-client-php": "^1.7",
+ "symfony/console": "^5.4|^6.0|^7.0",
+ "symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"require-dev": {
+ "illuminate/cache": "^9.52|^10.0|^11.0",
"mockery/mockery": "^1.4",
- "pestphp/pest": "^1.20",
+ "pestphp/pest": "^1.20|^2.0",
"phpstan/extension-installer": "^1.1",
"phpstan/phpstan-deprecation-rules": "^1.0",
"phpstan/phpstan-phpunit": "^1.0",
- "symfony/process": "^5.4|^6.0"
+ "psr/simple-cache-implementation": "*",
+ "symfony/cache": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.0|^7.0",
+ "vlucas/phpdotenv": "^5.5"
+ },
+ "suggest": {
+ "openai-php/client": "Require get solutions from OpenAI",
+ "simple-cache-implementation": "To cache solutions from OpenAI"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.2.x-dev"
+ "dev-main": "1.5.x-dev"
}
},
"autoload": {
@@ -10306,45 +11172,46 @@
"type": "github"
}
],
- "time": "2023-01-23T15:14:00+00:00"
+ "time": "2024-06-12T14:55:22+00:00"
},
{
"name": "spatie/laravel-ignition",
- "version": "1.6.4",
+ "version": "2.8.0",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-ignition.git",
- "reference": "1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc"
+ "reference": "3c067b75bfb50574db8f7e2c3978c65eed71126c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc",
- "reference": "1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc",
+ "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/3c067b75bfb50574db8f7e2c3978c65eed71126c",
+ "reference": "3c067b75bfb50574db8f7e2c3978c65eed71126c",
"shasum": ""
},
"require": {
"ext-curl": "*",
"ext-json": "*",
"ext-mbstring": "*",
- "illuminate/support": "^8.77|^9.27",
- "monolog/monolog": "^2.3",
- "php": "^8.0",
- "spatie/flare-client-php": "^1.0.1",
- "spatie/ignition": "^1.4.1",
- "symfony/console": "^5.0|^6.0",
- "symfony/var-dumper": "^5.0|^6.0"
+ "illuminate/support": "^10.0|^11.0",
+ "php": "^8.1",
+ "spatie/ignition": "^1.15",
+ "symfony/console": "^6.2.3|^7.0",
+ "symfony/var-dumper": "^6.2.3|^7.0"
},
"require-dev": {
- "filp/whoops": "^2.14",
- "livewire/livewire": "^2.8|dev-develop",
- "mockery/mockery": "^1.4",
- "nunomaduro/larastan": "^1.0",
- "orchestra/testbench": "^6.23|^7.0",
- "pestphp/pest": "^1.20",
- "phpstan/extension-installer": "^1.1",
- "phpstan/phpstan-deprecation-rules": "^1.0",
- "phpstan/phpstan-phpunit": "^1.0",
- "spatie/laravel-ray": "^1.27"
+ "livewire/livewire": "^2.11|^3.3.5",
+ "mockery/mockery": "^1.5.1",
+ "openai-php/client": "^0.8.1",
+ "orchestra/testbench": "8.22.3|^9.0",
+ "pestphp/pest": "^2.34",
+ "phpstan/extension-installer": "^1.3.1",
+ "phpstan/phpstan-deprecation-rules": "^1.1.1",
+ "phpstan/phpstan-phpunit": "^1.3.16",
+ "vlucas/phpdotenv": "^5.5"
+ },
+ "suggest": {
+ "openai-php/client": "Require get solutions from OpenAI",
+ "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI"
},
"type": "library",
"extra": {
@@ -10396,20 +11263,91 @@
"type": "github"
}
],
- "time": "2023-01-03T19:28:04+00:00"
+ "time": "2024-06-12T15:01:18+00:00"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v7.1.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "3ced3f29e4f0d6bce2170ff26719f1fe9aacc671"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/3ced3f29e4f0d6bce2170ff26719f1fe9aacc671",
+ "reference": "3ced3f29e4f0d6bce2170ff26719f1fe9aacc671",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "symfony/console": "<6.4"
+ },
+ "require-dev": {
+ "symfony/console": "^6.4|^7.0"
+ },
+ "bin": [
+ "Resources/bin/yaml-lint"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Yaml\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Loads and dumps YAML files",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/yaml/tree/v7.1.6"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-25T14:20:29+00:00"
},
{
"name": "theseer/tokenizer",
- "version": "1.2.1",
+ "version": "1.2.3",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
+ "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
- "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
+ "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
"shasum": ""
},
"require": {
@@ -10438,7 +11376,7 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
"issues": "https://github.com/theseer/tokenizer/issues",
- "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.3"
},
"funding": [
{
@@ -10446,7 +11384,7 @@
"type": "github"
}
],
- "time": "2021-07-28T10:34:58+00:00"
+ "time": "2024-03-03T12:36:25+00:00"
}
],
"aliases": [],
@@ -10455,12 +11393,14 @@
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
- "php": "^8.1",
- "ext-intl": "*"
+ "php": "^8.2",
+ "ext-intl": "*",
+ "ext-mysqli": "*",
+ "ext-curl": "*"
},
"platform-dev": [],
"platform-overrides": {
- "php": "8.1"
+ "php": "8.2"
},
- "plugin-api-version": "2.1.0"
+ "plugin-api-version": "2.3.0"
}
diff --git a/config/app.php b/config/app.php
index c5956ed69..7c7b09a3d 100644
--- a/config/app.php
+++ b/config/app.php
@@ -4,7 +4,7 @@
return [
- 'version' => '0.9.8',
+ 'version' => '1.0.0',
/*
|--------------------------------------------------------------------------
@@ -17,7 +17,7 @@
|
*/
- 'name' => env('APP_NAME', 'Ctrlpanel.gg'),
+ 'name' => env('APP_NAME', 'CtrlPanel.gg'),
/*
|--------------------------------------------------------------------------
@@ -210,9 +210,9 @@
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
Yajra\DataTables\DataTablesServiceProvider::class,
-
KKomelin\TranslatableStringExporter\Providers\ExporterServiceProvider::class,
-
+ Biscolab\ReCaptcha\ReCaptchaServiceProvider::class,
+ App\Providers\DiscordServiceProvider::class,
],
/*
diff --git a/config/logging.php b/config/logging.php
index 5aa1dbb78..5d4134ffa 100644
--- a/config/logging.php
+++ b/config/logging.php
@@ -61,6 +61,7 @@
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
+ 'permission' => 0664,
],
'daily' => [
@@ -68,6 +69,7 @@
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
'days' => 14,
+ 'permission' => 0664,
],
'slack' => [
@@ -116,6 +118,7 @@
'emergency' => [
'path' => storage_path('logs/laravel.log'),
+ 'permission' => 0664,
],
],
diff --git a/config/mail.php b/config/mail.php
index 534395a36..867155b50 100644
--- a/config/mail.php
+++ b/config/mail.php
@@ -93,7 +93,7 @@
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
- 'name' => env('MAIL_FROM_NAME', 'Example'),
+ 'name' => env('MAIL_FROM_NAME', 'CtrlPanel'),
],
/*
diff --git a/config/permission.php b/config/permission.php
new file mode 100644
index 000000000..f06debdc4
--- /dev/null
+++ b/config/permission.php
@@ -0,0 +1,161 @@
+ [
+
+ /*
+ * When using the "HasPermissions" trait from this package, we need to know which
+ * Eloquent model should be used to retrieve your permissions. Of course, it
+ * is often just the "Permission" model but you may use whatever you like.
+ *
+ * The model you want to use as a Permission model needs to implement the
+ * `Spatie\Permission\Contracts\Permission` contract.
+ */
+
+ 'permission' => App\Models\Permission::class,
+
+ /*
+ * When using the "HasRoles" trait from this package, we need to know which
+ * Eloquent model should be used to retrieve your roles. Of course, it
+ * is often just the "Role" model but you may use whatever you like.
+ *
+ * The model you want to use as a Role model needs to implement the
+ * `Spatie\Permission\Contracts\Role` contract.
+ */
+
+ 'role' => App\Models\Role::class,
+
+ ],
+
+ 'table_names' => [
+
+ /*
+ * When using the "HasRoles" trait from this package, we need to know which
+ * table should be used to retrieve your roles. We have chosen a basic
+ * default value but you may easily change it to any table you like.
+ */
+
+ 'roles' => 'roles',
+
+ /*
+ * When using the "HasPermissions" trait from this package, we need to know which
+ * table should be used to retrieve your permissions. We have chosen a basic
+ * default value but you may easily change it to any table you like.
+ */
+
+ 'permissions' => 'permissions',
+
+ /*
+ * When using the "HasPermissions" trait from this package, we need to know which
+ * table should be used to retrieve your models permissions. We have chosen a
+ * basic default value but you may easily change it to any table you like.
+ */
+
+ 'model_has_permissions' => 'model_has_permissions',
+
+ /*
+ * When using the "HasRoles" trait from this package, we need to know which
+ * table should be used to retrieve your models roles. We have chosen a
+ * basic default value but you may easily change it to any table you like.
+ */
+
+ 'model_has_roles' => 'model_has_roles',
+
+ /*
+ * When using the "HasRoles" trait from this package, we need to know which
+ * table should be used to retrieve your roles permissions. We have chosen a
+ * basic default value but you may easily change it to any table you like.
+ */
+
+ 'role_has_permissions' => 'role_has_permissions',
+ ],
+
+ 'column_names' => [
+ /*
+ * Change this if you want to name the related pivots other than defaults
+ */
+ 'role_pivot_key' => null, //default 'role_id',
+ 'permission_pivot_key' => null, //default 'permission_id',
+
+ /*
+ * Change this if you want to name the related model primary key other than
+ * `model_id`.
+ *
+ * For example, this would be nice if your primary keys are all UUIDs. In
+ * that case, name this `model_uuid`.
+ */
+
+ 'model_morph_key' => 'model_id',
+
+ /*
+ * Change this if you want to use the teams feature and your related model's
+ * foreign key is other than `team_id`.
+ */
+
+ 'team_foreign_key' => 'team_id',
+ ],
+
+ /*
+ * When set to true, the method for checking permissions will be registered on the gate.
+ * Set this to false, if you want to implement custom logic for checking permissions.
+ */
+
+ 'register_permission_check_method' => true,
+
+ /*
+ * When set to true the package implements teams using the 'team_foreign_key'. If you want
+ * the migrations to register the 'team_foreign_key', you must set this to true
+ * before doing the migration. If you already did the migration then you must make a new
+ * migration to also add 'team_foreign_key' to 'roles', 'model_has_roles', and
+ * 'model_has_permissions'(view the latest version of package's migration file)
+ */
+
+ 'teams' => false,
+
+ /*
+ * When set to true, the required permission names are added to the exception
+ * message. This could be considered an information leak in some contexts, so
+ * the default setting is false here for optimum safety.
+ */
+
+ 'display_permission_in_exception' => false,
+
+ /*
+ * When set to true, the required role names are added to the exception
+ * message. This could be considered an information leak in some contexts, so
+ * the default setting is false here for optimum safety.
+ */
+
+ 'display_role_in_exception' => false,
+
+ /*
+ * By default wildcard permission lookups are disabled.
+ */
+
+ 'enable_wildcard_permission' => true,
+
+ 'cache' => [
+
+ /*
+ * By default all permissions are cached for 24 hours to speed up performance.
+ * When permissions or roles are updated the cache is flushed automatically.
+ */
+
+ 'expiration_time' => \DateInterval::createFromDateString('24 hours'),
+
+ /*
+ * The cache key used to store all permissions.
+ */
+
+ 'key' => 'spatie.permission.cache',
+
+ /*
+ * You may optionally indicate a specific cache driver to use for permission and
+ * role caching using any of the `store` drivers listed in the cache.php config
+ * file. Using 'default' here means to use the `default` set in cache.php.
+ */
+
+ 'store' => 'default',
+ ],
+];
diff --git a/config/permissions_web.php b/config/permissions_web.php
new file mode 100644
index 000000000..38033129d
--- /dev/null
+++ b/config/permissions_web.php
@@ -0,0 +1,143 @@
+ '*',
+
+ 'View Roles Backend' => 'admin.roles.read',
+ 'Create Role' => 'admin.roles.create',
+ 'Edit Role' => 'admin.roles.edit',
+ 'Delete Role' => 'admin.roles.delete',
+
+
+ 'View Tickets Backend' => 'admin.tickets.read',
+ 'Manage Ticket Backend' => 'admin.tickets.write',
+ 'Receive new Ticket Notifications' => 'admin.tickets.get_notification',
+
+ 'Create Ticket Category' => 'admin.tickets.category.read',
+ 'Manage Ticket Category Backend' => 'admin.tickets.category.write',
+
+ 'View Ticket-Blacklist' => 'admin.ticket_blacklist.read',
+ 'Manage Ticket-Blacklist' => 'admin.ticket_blacklist.write',
+
+ 'View Overview' => 'admin.overview.read',
+ 'Overview Sync' => 'admin.overview.sync',
+
+ 'View Api Keys' => 'admin.api.read',
+ 'Manage Api Keys' => 'admin.api.write',
+
+ 'View User List' => 'admin.users.read',
+ 'Edit anything on User' => 'admin.users.write',
+ 'Suspend Users' => 'admin.users.suspend',
+ 'Edit User Credits' => 'admin.users.write.credits',
+ 'Edit User Name' => 'admin.users.write.username',
+ 'Edit User Email' => 'admin.users.write.email',
+ 'Edit User Password' => 'admin.users.write.password',
+ 'Edit User Role' => 'admin.users.write.role',
+ 'Edit User Referral' => 'admin.users.write.referral',
+ 'Edit User Pterodactyl' => 'admin.users.write.pterodactyl',
+ 'Edit User Serverlimit' => 'admin.users.write.serverlimit',
+
+ "Manage Icons" => "admin.icons.edit",
+
+ 'Notify Users' => 'admin.users.notify',
+ 'Login As User' => 'admin.users.login_as',
+ 'Delete User' => 'admin.users.delete',
+
+ 'View Server List' => 'admin.servers.read',
+ 'Manage all Servers' => 'admin.servers.write',
+ 'Suspend any Server' => 'admin.servers.suspend',
+ 'Change any Servers Owner' => 'admin.servers.write.owner',
+ 'Manage any Servers Identifier' => 'admin.servers.write.identifier',
+ 'Bypass Server-creation restriction ' => 'admin.servers.bypass_creation_enabled',
+ 'Delete any Servers' => 'admin.servers.delete',
+
+ 'View Product List' => 'admin.products.read',
+ 'Create Product' => 'admin.products.create',
+ 'Edit Product' => 'admin.products.edit',
+ 'Delete Product' => 'admin.products.delete',
+
+ 'View Store Backend' => 'admin.store.read',
+ 'Manage Store Backend' => 'admin.store.write',
+ 'Disable Store' => 'admin.store.disable',
+
+ 'View Vouchers Backend' => 'admin.voucher.read',
+ 'Manage Voucher Backend' => 'admin.voucher.write',
+
+ 'View Useful Links Backend' => 'admin.useful_links.read',
+ 'Manage Useful Links Backend' => 'admin.useful_links.write',
+
+ 'View Legal Backend' => 'admin.legal.read',
+ 'Manage Legal Backend' => 'admin.legal.write',
+
+ 'View Payments Backend' => 'admin.payments.read',
+
+ 'View Partners Backend' => 'admin.partners.read',
+ 'Manage Partners Backend' => 'admin.partners.write',
+
+ 'View Coupons Backend' => 'admin.coupons.read',
+ 'Manage Coupons Backend' => 'admin.coupons.write',
+
+ 'View Logs' => 'admin.logs.read',
+
+ /*
+ * Settings Permissions
+ */
+ 'View Discord Settings' => 'settings.discord.read',
+ 'Manage Discord Settings' => 'settings.discord.write',
+
+ 'View General Settings' => 'settings.general.read',
+ 'Manage General Settings' => 'settings.general.write',
+
+ 'View Invoice Settings' => 'settings.invoice.read',
+ 'Manage Invoice Settings' => 'settings.invoice.write',
+
+ 'View Locale Settings' => 'settings.locale.read',
+ 'Manage Locale Settings' => 'settings.locale.write',
+
+ 'View Mail Settings' => 'settings.mail.read',
+ 'Manage Mail Settings' => 'settings.mail.write',
+
+ 'View Pterodactyl Settings' => 'settings.pterodactyl.read',
+ 'Manage Pterodactyl Settings' => 'settings.pterodactyl.write',
+
+ 'View Referral Settings' => 'settings.referral.read',
+ 'Manage Referral Settings' => 'settings.referral.write',
+
+ 'View Server Settings' => 'settings.server.read',
+ 'Manage Server Settings' => 'settings.server.write',
+
+ 'View Ticket Settings' => 'settings.ticket.read',
+ 'Manage Ticket Settings' => 'settings.ticket.write',
+
+ 'View User Settings' => 'settings.user.read',
+ 'Manage User Settings' => 'settings.user.write',
+
+ 'View Website Settings' => 'settings.website.read',
+ 'Manage Website Settings' => 'settings.website.write',
+
+ 'View Paypal Settings' => 'settings.paypal.read',
+ 'Manage Paypal Settings' => 'settings.paypal.write',
+
+ 'View Mercado Pago Settings' => 'settings.mercadopago.read',
+ 'Manage Mercado Pago Settings' => 'settings.mercadopago.write',
+
+ 'View Stripe Settings' => 'settings.stripe.read',
+ 'Manage Stripe Settings' => 'settings.stripe.write',
+
+ 'View Mollie Settings' => 'settings.mollie.read',
+ 'Manage Mollie Settings' => 'settings.mollie.write',
+
+ /*
+ * Permissions for users
+ */
+ 'Customer Create Server' => 'user.server.create',
+ 'Customer Upgrade Server' => 'user.server.upgrade',
+ 'Customer Shop Buy' => 'user.shop.buy',
+ 'Customer View Supportticket' => 'user.ticket.read',
+ 'Customer Write Supportticket' => 'user.ticket.write',
+ 'Customer View Referral' => 'user.referral',
+];
diff --git a/config/services.php b/config/services.php
index aedb7007c..4ca9034f5 100644
--- a/config/services.php
+++ b/config/services.php
@@ -1,5 +1,6 @@
env('AWS_DEFAULT_REGION', 'us-east-1'),
],
- 'discord' => [
- 'client_id' => env('DISCORD_CLIENT_ID'),
- 'client_secret' => env('DISCORD_CLIENT_SECRET'),
- 'redirect' => env('APP_URL', 'http://localhost').'/auth/callback',
-
- // optional
- 'allow_gif_avatars' => (bool) env('DISCORD_AVATAR_GIF', true),
- 'avatar_default_extension' => env('DISCORD_EXTENSION_DEFAULT', 'jpg'), // only pick from jpg, png, webp
- ],
];
diff --git a/config/settings.php b/config/settings.php
new file mode 100644
index 000000000..e9a3a4b10
--- /dev/null
+++ b/config/settings.php
@@ -0,0 +1,113 @@
+ [
+ GeneralSettings::class,
+ DiscordSettings::class,
+ InvoiceSettings::class,
+ LocaleSettings::class,
+ MailSettings::class,
+ PterodactylSettings::class,
+ ReferralSettings::class,
+ ServerSettings::class,
+ UserSettings::class,
+ WebsiteSettings::class,
+ TicketSettings::class,
+ CouponSettings::class,
+ ],
+
+ /*
+ * The path where the settings classes will be created.
+ */
+ 'setting_class_path' => app_path('Settings'),
+
+ /*
+ * In these directories settings migrations will be stored and ran when migrating. A settings
+ * migration created via the make:settings-migration command will be stored in the first path or
+ * a custom defined path when running the command.
+ */
+ 'migrations_paths' => [
+ database_path('settings'),
+ ...ExtensionHelper::getAllExtensionMigrations()
+
+ ],
+
+ /*
+ * When no repository was set for a settings class the following repository
+ * will be used for loading and saving settings.
+ */
+ 'default_repository' => 'database',
+
+ /*
+ * Settings will be stored and loaded from these repositories.
+ */
+ 'repositories' => [
+ 'database' => [
+ 'type' => Spatie\LaravelSettings\SettingsRepositories\DatabaseSettingsRepository::class,
+ 'model' => null,
+ 'table' => null,
+ 'connection' => null,
+ ],
+ 'redis' => [
+ 'type' => Spatie\LaravelSettings\SettingsRepositories\RedisSettingsRepository::class,
+ 'connection' => null,
+ 'prefix' => null,
+ ],
+ ],
+
+ /*
+ * The contents of settings classes can be cached through your application,
+ * settings will be stored within a provided Laravel store and can have an
+ * additional prefix.
+ */
+ 'cache' => [
+ 'enabled' => env('SETTINGS_CACHE_ENABLED', true),
+ 'store' => 'redis',
+ 'prefix' => 'setting',
+ 'ttl' => null,
+ ],
+
+ /*
+ * These global casts will be automatically used whenever a property within
+ * your settings class isn't a default PHP type.
+ */
+ 'global_casts' => [
+ DateTimeInterface::class => Spatie\LaravelSettings\SettingsCasts\DateTimeInterfaceCast::class,
+ DateTimeZone::class => Spatie\LaravelSettings\SettingsCasts\DateTimeZoneCast::class,
+ // Spatie\DataTransferObject\DataTransferObject::class => Spatie\LaravelSettings\SettingsCasts\DtoCast::class,
+ Spatie\LaravelData\Data::class => Spatie\LaravelSettings\SettingsCasts\DataCast::class,
+ ],
+
+ /*
+ * The package will look for settings in these paths and automatically
+ * register them.
+ */
+ 'auto_discover_settings' => [
+ app()->path(),
+ ],
+
+ /*
+ * Automatically discovered settings classes can be cached so they don't
+ * need to be searched each time the application boots up.
+ */
+ 'discovered_settings_cache_path' => storage_path('app/laravel-settings'),
+];
diff --git a/config/trustedproxy.php b/config/trustedproxy.php
index dc46c31ba..f3b88cd52 100644
--- a/config/trustedproxy.php
+++ b/config/trustedproxy.php
@@ -26,7 +26,7 @@
* subsequently passed through.
*/
'proxies' => in_array(env('TRUSTED_PROXIES', []), ['*', '**']) ?
- env('TRUSTED_PROXIES') : explode(',', env('TRUSTED_PROXIES', null)),
+ env('TRUSTED_PROXIES') : explode(',', env('TRUSTED_PROXIES', '')),
/*
* Or, to trust all proxies that connect
diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php
index c28f40d8e..b619113e6 100644
--- a/database/migrations/2014_10_12_000000_create_users_table.php
+++ b/database/migrations/2014_10_12_000000_create_users_table.php
@@ -19,7 +19,7 @@ public function up()
$table->id();
$table->string('name');
$table->string('role')->default('member');
- $table->unsignedFloat('credits')->default(250);
+ $table->float('credits')->default(250)->unsigned();
$table->unsignedInteger('server_limit')->default(1);
$table->unsignedInteger('pterodactyl_id')->nullable();
$table->longText('avatar')->nullable();
diff --git a/database/migrations/2021_07_09_190453_create_vouchers_table.php b/database/migrations/2021_07_09_190453_create_vouchers_table.php
index 481674b38..5be8937e4 100644
--- a/database/migrations/2021_07_09_190453_create_vouchers_table.php
+++ b/database/migrations/2021_07_09_190453_create_vouchers_table.php
@@ -17,7 +17,7 @@ public function up()
$table->id();
$table->string('code', 36)->unique();
$table->string('memo')->nullable();
- $table->unsignedFloat('credits', 10);
+ $table->float('credits', 10)->unsigned();
$table->unsignedInteger('uses')->default(1);
$table->timestamp('expires_at')->nullable();
$table->timestamps();
diff --git a/database/migrations/2021_07_10_062140_update_credits_to_users_table.php b/database/migrations/2021_07_10_062140_update_credits_to_users_table.php
index ef4e069d7..bf106b371 100644
--- a/database/migrations/2021_07_10_062140_update_credits_to_users_table.php
+++ b/database/migrations/2021_07_10_062140_update_credits_to_users_table.php
@@ -14,7 +14,7 @@
public function up()
{
Schema::table('users', function (Blueprint $table) {
- $table->unsignedFloat('credits', 10)->change();
+ $table->float('credits', 10)->change()->unsigned();
});
}
@@ -26,7 +26,7 @@ public function up()
public function down()
{
Schema::table('users', function (Blueprint $table) {
- $table->unsignedFloat('credits')->change();
+ $table->float('credits')->change()->unsigned();
});
}
};
diff --git a/database/migrations/2022_01_05_144858_rename_configurations_table.php b/database/migrations/2022_01_05_144858_rename_configurations_table.php
index 4785ed01e..1090a0223 100644
--- a/database/migrations/2022_01_05_144858_rename_configurations_table.php
+++ b/database/migrations/2022_01_05_144858_rename_configurations_table.php
@@ -28,7 +28,6 @@ public function up()
DB::table('settings')->where('key', 'REGISTER_IP_CHECK')->update(['key' => 'SETTINGS::SYSTEM:REGISTER_IP_CHECK']);
DB::table('settings')->where('key', 'CREDITS_DISPLAY_NAME')->update(['key' => 'SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME']);
DB::table('settings')->where('key', 'ALLOCATION_LIMIT')->update(['key' => 'SETTINGS::SERVER:ALLOCATION_LIMIT']);
- DB::table('settings')->where('key', 'SERVER_CREATE_CHARGE_FIRST_HOUR')->update(['key' => 'SETTINGS::SYSTEM:SERVER_CREATE_CHARGE_FIRST_HOUR']);
DB::table('settings')->where('key', 'SALES_TAX')->update(['key' => 'SETTINGS::PAYMENTS:SALES_TAX']);
}
@@ -52,7 +51,6 @@ public function down()
DB::table('configurations')->where('key', 'SETTINGS::USER:FORCE_EMAIL_VERIFICATION')->update(['key' => 'FORCE_EMAIL_VERIFICATION']);
DB::table('configurations')->where('key', 'SETTINGS::USER:FORCE_DISCORD_VERIFICATION')->update(['key' => 'FORCE_DISCORD_VERIFICATION']);
DB::table('configurations')->where('key', 'SETTINGS::SYSTEM:REGISTER_IP_CHECK')->update(['key' => 'REGISTER_IP_CHECK']);
- DB::table('configurations')->where('key', 'SETTINGS::SYSTEM:SERVER_CREATE_CHARGE_FIRST_HOUR')->update(['key' => 'SERVER_CREATE_CHARGE_FIRST_HOUR']);
DB::table('configurations')->where('key', 'SETTINGS::SERVER:ALLOCATION_LIMIT')->update(['key' => 'ALLOCATION_LIMIT']);
DB::table('configurations')->where('key', 'SETTINGS::SERVER:CREDITS_DISPLAY_NAME')->update(['key' => 'SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME']);
DB::table('configurations')->where('key', 'SETTINGS::PAYMENTS:SALES_TAX')->update(['key' => 'SALES_TAX']);
diff --git a/database/migrations/2022_07_12_051152_decimals-in-price.php b/database/migrations/2022_07_12_051152_decimals-in-price.php
index cf1a35b4c..da5c6582d 100644
--- a/database/migrations/2022_07_12_051152_decimals-in-price.php
+++ b/database/migrations/2022_07_12_051152_decimals-in-price.php
@@ -14,7 +14,7 @@
public function up()
{
Schema::table('products', function (Blueprint $table) {
- $table->decimal('price', ['11', '2'])->change();
+ $table->decimal('price', 11, 2)->change();
});
}
diff --git a/database/migrations/2023_04_03_231829_update_users_table.php b/database/migrations/2023_04_03_231829_update_users_table.php
new file mode 100644
index 000000000..df2497417
--- /dev/null
+++ b/database/migrations/2023_04_03_231829_update_users_table.php
@@ -0,0 +1,32 @@
+string('pterodactyl_id')->change();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('users', function (Blueprint $table) {
+ $table->integer('pterodactyl_id')->nullable()->change();
+ });
+ }
+};
diff --git a/database/migrations/2023_04_29_232942_create_permission_tables.php b/database/migrations/2023_04_29_232942_create_permission_tables.php
new file mode 100644
index 000000000..ef728fec0
--- /dev/null
+++ b/database/migrations/2023_04_29_232942_create_permission_tables.php
@@ -0,0 +1,142 @@
+bigIncrements('id'); // permission id
+ $table->string('name'); // For MySQL 8.0 use string('name', 125);
+ $table->string('guard_name'); // For MySQL 8.0 use string('guard_name', 125);
+ $table->timestamps();
+
+ $table->unique(['name', 'guard_name']);
+ });
+
+ Schema::create($tableNames['roles'], function (Blueprint $table) use ($teams, $columnNames) {
+ $table->bigIncrements('id'); // role id
+ if ($teams || config('permission.testing')) { // permission.testing is a fix for sqlite testing
+ $table->unsignedBigInteger($columnNames['team_foreign_key'])->nullable();
+ $table->index($columnNames['team_foreign_key'], 'roles_team_foreign_key_index');
+ }
+ $table->string('name'); // For MySQL 8.0 use string('name', 125);
+ $table->string('color')->nullable()->default('#485460'); // For MySQL 8.0 use string('name', 125);
+ $table->string('guard_name'); // For MySQL 8.0 use string('guard_name', 125);
+ $table->timestamps();
+ if ($teams || config('permission.testing')) {
+ $table->unique([$columnNames['team_foreign_key'], 'name', 'guard_name']);
+ } else {
+ $table->unique(['name', 'guard_name']);
+ }
+ });
+
+ Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $columnNames, $teams) {
+ $table->unsignedBigInteger(app(PermissionRegistrar::class)->pivotPermission);
+
+ $table->string('model_type');
+ $table->unsignedBigInteger($columnNames['model_morph_key']);
+ $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_permissions_model_id_model_type_index');
+
+ $table->foreign(app(PermissionRegistrar::class)->pivotPermission)
+ ->references('id') // permission id
+ ->on($tableNames['permissions'])
+ ->onDelete('cascade');
+ if ($teams) {
+ $table->unsignedBigInteger($columnNames['team_foreign_key']);
+ $table->index($columnNames['team_foreign_key'], 'model_has_permissions_team_foreign_key_index');
+
+ $table->primary([$columnNames['team_foreign_key'], app(PermissionRegistrar::class)->pivotPermission, $columnNames['model_morph_key'], 'model_type'],
+ 'model_has_permissions_permission_model_type_primary');
+ } else {
+ $table->primary([app(PermissionRegistrar::class)->pivotPermission, $columnNames['model_morph_key'], 'model_type'],
+ 'model_has_permissions_permission_model_type_primary');
+ }
+
+ });
+
+ Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames, $teams) {
+ $table->unsignedBigInteger(app(PermissionRegistrar::class)->pivotRole);
+
+ $table->string('model_type');
+ $table->unsignedBigInteger($columnNames['model_morph_key']);
+ $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_roles_model_id_model_type_index');
+
+ $table->foreign(app(PermissionRegistrar::class)->pivotRole)
+ ->references('id') // role id
+ ->on($tableNames['roles'])
+ ->onDelete('cascade');
+ if ($teams) {
+ $table->unsignedBigInteger($columnNames['team_foreign_key']);
+ $table->index($columnNames['team_foreign_key'], 'model_has_roles_team_foreign_key_index');
+
+ $table->primary([$columnNames['team_foreign_key'], app(PermissionRegistrar::class)->pivotRole, $columnNames['model_morph_key'], 'model_type'],
+ 'model_has_roles_role_model_type_primary');
+ } else {
+ $table->primary([app(PermissionRegistrar::class)->pivotRole, $columnNames['model_morph_key'], 'model_type'],
+ 'model_has_roles_role_model_type_primary');
+ }
+ });
+
+ Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) {
+ $table->unsignedBigInteger(app(PermissionRegistrar::class)->pivotPermission);
+ $table->unsignedBigInteger(app(PermissionRegistrar::class)->pivotRole);
+
+ $table->foreign(app(PermissionRegistrar::class)->pivotPermission)
+ ->references('id') // permission id
+ ->on($tableNames['permissions'])
+ ->onDelete('cascade');
+
+ $table->foreign(app(PermissionRegistrar::class)->pivotRole)
+ ->references('id') // role id
+ ->on($tableNames['roles'])
+ ->onDelete('cascade');
+
+ $table->primary([app(PermissionRegistrar::class)->pivotPermission, app(PermissionRegistrar::class)->pivotRole], 'role_has_permissions_permission_id_role_id_primary');
+ });
+
+ app('cache')
+ ->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null)
+ ->forget(config('permission.cache.key'));
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ $tableNames = config('permission.table_names');
+
+ if (empty($tableNames)) {
+ throw new \Exception('Error: config/permission.php not found and defaults could not be merged. Please publish the package configuration before proceeding, or drop the tables manually.');
+ }
+
+ Schema::drop($tableNames['role_has_permissions']);
+ Schema::drop($tableNames['model_has_roles']);
+ Schema::drop($tableNames['model_has_permissions']);
+ Schema::drop($tableNames['roles']);
+ Schema::drop($tableNames['permissions']);
+ }
+}
diff --git a/database/migrations/2023_05_05_090127_role_power.php b/database/migrations/2023_05_05_090127_role_power.php
new file mode 100644
index 000000000..9c8da51d0
--- /dev/null
+++ b/database/migrations/2023_05_05_090127_role_power.php
@@ -0,0 +1,32 @@
+integer('power')->after("color")->default(50);
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('roles', function (Blueprint $table) {
+ $table->dropColumn('power');
+ });
+ }
+};
diff --git a/database/migrations/2023_05_05_103834_oom_killer.php b/database/migrations/2023_05_05_103834_oom_killer.php
new file mode 100644
index 000000000..3fecb34ef
--- /dev/null
+++ b/database/migrations/2023_05_05_103834_oom_killer.php
@@ -0,0 +1,32 @@
+boolean('oom_killer')->after("allocations")->default(false);
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('products', function (Blueprint $table) {
+ $table->dropColumn('oom_killer');
+ });
+ }
+};
diff --git a/database/migrations/2023_05_08_092704_add_billing_period_to_products.php b/database/migrations/2023_05_08_092704_add_billing_period_to_products.php
new file mode 100644
index 000000000..7936e7fda
--- /dev/null
+++ b/database/migrations/2023_05_08_092704_add_billing_period_to_products.php
@@ -0,0 +1,52 @@
+string('billing_period')->default("hourly");
+ $table->decimal('price', 15, 4)->change();
+ $table->decimal('minimum_credits', 15, 4)->default(-1)->change();
+ });
+
+ DB::statement('UPDATE products SET billing_period="hourly"');
+
+ $products = DB::table('products')->get();
+ foreach ($products as $product) {
+ $price = $product->price;
+ $price = $price / 30 / 24;
+ DB::table('products')->where('id', $product->id)->update(['price' => $price]);
+ }
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('products', function (Blueprint $table) {
+ $table->dropColumn('billing_period');
+ $table->decimal('price', 10, 0)->change();
+ $table->float('minimum_credits')->change();
+ });
+ }
+}
diff --git a/database/migrations/2023_05_08_094402_update_user_credits_datatype.php b/database/migrations/2023_05_08_094402_update_user_credits_datatype.php
new file mode 100644
index 000000000..57a350377
--- /dev/null
+++ b/database/migrations/2023_05_08_094402_update_user_credits_datatype.php
@@ -0,0 +1,32 @@
+decimal('credits', 15, 4)->default(0)->change();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('users', function (Blueprint $table) {
+ $table->decimal('credits', 11, 2)->change();
+ });
+ }
+}
diff --git a/database/migrations/2023_05_08_095818_add_last_billed_field_to_servers.php b/database/migrations/2023_05_08_095818_add_last_billed_field_to_servers.php
new file mode 100644
index 000000000..9d43ae96d
--- /dev/null
+++ b/database/migrations/2023_05_08_095818_add_last_billed_field_to_servers.php
@@ -0,0 +1,38 @@
+dateTime('last_billed')->default(DB::raw('CURRENT_TIMESTAMP'))->nullable();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('servers', function (Blueprint $table) {
+ $table->dropColumn('last_billed');
+ });
+ }
+}
diff --git a/database/migrations/2023_05_08_234527_add_cancelation_to_servers_table.php b/database/migrations/2023_05_08_234527_add_cancelation_to_servers_table.php
new file mode 100644
index 000000000..94efae378
--- /dev/null
+++ b/database/migrations/2023_05_08_234527_add_cancelation_to_servers_table.php
@@ -0,0 +1,40 @@
+renameColumn('cancelled', 'canceled');
+ });
+ return;
+ }
+
+ Schema::table('servers', function (Blueprint $table) {
+ $table->dateTime('canceled')->nullable();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('servers', function (Blueprint $table) {
+ $table->dropColumn('canceled');
+ });
+ }
+}
diff --git a/database/migrations/2023_05_11_153719_create_coupons_table.php b/database/migrations/2023_05_11_153719_create_coupons_table.php
new file mode 100644
index 000000000..db26a65b5
--- /dev/null
+++ b/database/migrations/2023_05_11_153719_create_coupons_table.php
@@ -0,0 +1,37 @@
+id();
+ $table->string('code')->unique();
+ $table->enum('type', ['percentage', 'amount']);
+ $table->decimal('value', 10);
+ $table->integer('uses')->default(0);
+ $table->integer('max_uses');
+ $table->timestamp('expires_at')->nullable();
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('coupons');
+ }
+};
diff --git a/database/migrations/2023_05_14_152604_create_user_coupons_table.php b/database/migrations/2023_05_14_152604_create_user_coupons_table.php
new file mode 100644
index 000000000..10f584aec
--- /dev/null
+++ b/database/migrations/2023_05_14_152604_create_user_coupons_table.php
@@ -0,0 +1,32 @@
+foreignId('user_id')->constrained();
+ $table->foreignId('coupon_id')->constrained();
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('user_coupons');
+ }
+};
diff --git a/database/migrations/2023_09_15_142409_add_readable_name_to_permissions_table.php b/database/migrations/2023_09_15_142409_add_readable_name_to_permissions_table.php
new file mode 100644
index 000000000..473db247e
--- /dev/null
+++ b/database/migrations/2023_09_15_142409_add_readable_name_to_permissions_table.php
@@ -0,0 +1,32 @@
+string('readable_name')->after('name');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('permissions', function (Blueprint $table) {
+ $table->removeColumn('readable_name');
+ });
+ }
+};
diff --git a/database/migrations/2024_05_22_141233_update_description_servers_table.php b/database/migrations/2024_05_22_141233_update_description_servers_table.php
new file mode 100644
index 000000000..e0964c529
--- /dev/null
+++ b/database/migrations/2024_05_22_141233_update_description_servers_table.php
@@ -0,0 +1,32 @@
+text('description')->nullable()->change();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('servers', function (Blueprint $table) {
+ $table->string('description')->nullable()->change();
+ });
+ }
+};
diff --git a/database/migrations/2024_05_22_143551_update_description_locations_table.php b/database/migrations/2024_05_22_143551_update_description_locations_table.php
new file mode 100644
index 000000000..e2b70688b
--- /dev/null
+++ b/database/migrations/2024_05_22_143551_update_description_locations_table.php
@@ -0,0 +1,32 @@
+text('description')->change();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('locations', function (Blueprint $table) {
+ $table->string('description')->change();
+ });
+ }
+};
diff --git a/database/migrations/2024_07_24_175733_add_required_nullable_and_text_columns.php b/database/migrations/2024_07_24_175733_add_required_nullable_and_text_columns.php
new file mode 100644
index 000000000..a28f51083
--- /dev/null
+++ b/database/migrations/2024_07_24_175733_add_required_nullable_and_text_columns.php
@@ -0,0 +1,32 @@
+text('description')->nullable()->change();
+ });
+ Schema::table('nodes', function (Blueprint $table) {
+ $table->text('description')->nullable()->change();
+ });
+ Schema::table('nests', function (Blueprint $table) {
+ $table->text('description')->nullable()->change();
+ });
+ Schema::table('eggs', function (Blueprint $table) {
+ $table->text('description')->nullable()->change();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void {}
+};
diff --git a/database/migrations/2024_07_25_083712_update_settings_default_and_unique.php b/database/migrations/2024_07_25_083712_update_settings_default_and_unique.php
new file mode 100644
index 000000000..ad81ce1ee
--- /dev/null
+++ b/database/migrations/2024_07_25_083712_update_settings_default_and_unique.php
@@ -0,0 +1,32 @@
+boolean('locked')->default(false)->change();
+ $table->unique(['group', 'name']);
+ $table->dropIndex(['group']);
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::table('settings', function (Blueprint $table) {
+ $table->boolean('locked')->default(null)->change();
+ $table->dropUnique(['group', 'name']);
+ $table->index('group');
+ });
+ }
+};
diff --git a/database/seeders/PermissionsSeeder.php b/database/seeders/PermissionsSeeder.php
new file mode 100644
index 000000000..5ddef8f4d
--- /dev/null
+++ b/database/seeders/PermissionsSeeder.php
@@ -0,0 +1,77 @@
+forgetCachedPermissions();
+
+ $this->createPermissions();
+ $this->createRoles();
+
+
+ $users = User::all();
+ foreach($users as $user){
+ $user->assignRole(Role::findByName('user'));
+ }
+
+ $admins = User::where("role","admin")->get();
+ foreach($admins as $admin) {
+ $admin->syncRoles(Role::findByName('Admin'));
+ }
+
+ $mods = User::where("role","moderator")->get();
+ foreach($mods as $mod) {
+ $mod->syncRoles(Role::findByName('Support-Team'));
+ }
+
+ $clients = User::where("role","client")->get();
+ foreach($clients as $client) {
+ $client->syncRoles(Role::findByName('Client'));
+ }
+ }
+
+ public function createPermissions()
+ {
+ foreach(config('permissions_web') as $permission_name => $permission_value) {
+ Permission::create(['name' => $permission_value, 'readable_name' => $permission_name]);
+ }
+ }
+
+ //TODO run only once
+ public function createRoles()
+ {
+ $userPermissions=[
+ 'user.server.create',
+ 'user.server.upgrade',
+ 'user.shop.buy',
+ 'user.ticket.read',
+ 'user.ticket.write',
+ 'user.referral',
+ ];
+ /** @var Role $adminRole */
+ $adminRole = Role::create(["name"=>"Admin","color"=>"#fa0000", "power"=>100]);
+ $supportRole = Role::create(["name"=>"Support-Team","color"=>"#00b0b3","power"=>50]);
+ $clientRole = Role::create(["name"=>"Client","color"=>"#008009","power"=>10]);
+ $userRole = Role::create(["name"=>"User","color"=>"#0052a3","power"=>10]);
+
+ $adminRole->givePermissionTo(Permission::findByName('*'));
+
+ $userRole->syncPermissions($userPermissions);
+ $clientRole->syncPermissions($userPermissions);
+ }
+}
diff --git a/database/seeders/Seeds/ProductSeeder.php b/database/seeders/Seeds/ProductSeeder.php
index 4f5e43754..a6035c009 100644
--- a/database/seeders/Seeds/ProductSeeder.php
+++ b/database/seeders/Seeds/ProductSeeder.php
@@ -16,29 +16,32 @@ public function run()
{
Product::create([
'name' => 'Starter',
- 'description' => '64MB Ram, 1GB Disk, 1 Database, 140 credits monthly',
+ 'description' => '64MB Ram, 1GB Disk, 1 Database, 140 credits hourly',
'price' => 140,
'memory' => 64,
'disk' => 1000,
'databases' => 1,
+ 'billing_period' => 'hourly'
]);
Product::create([
'name' => 'Standard',
- 'description' => '128MB Ram, 2GB Disk, 2 Database, 210 credits monthly',
+ 'description' => '128MB Ram, 2GB Disk, 2 Database, 210 credits hourly',
'price' => 210,
'memory' => 128,
'disk' => 2000,
'databases' => 2,
+ 'billing_period' => 'hourly'
]);
Product::create([
'name' => 'Advanced',
- 'description' => '256MB Ram, 5GB Disk, 5 Database, 280 credits monthly',
+ 'description' => '256MB Ram, 5GB Disk, 5 Database, 280 credits hourly',
'price' => 280,
'memory' => 256,
'disk' => 5000,
'databases' => 5,
+ 'billing_period' => 'hourly'
]);
}
}
diff --git a/database/seeders/Seeds/UsefulLinksSeeder.php b/database/seeders/Seeds/UsefulLinksSeeder.php
index 03a8ce9dd..0d5f2b188 100644
--- a/database/seeders/Seeds/UsefulLinksSeeder.php
+++ b/database/seeders/Seeds/UsefulLinksSeeder.php
@@ -28,12 +28,5 @@ public function run()
'description' => 'View your database online using phpMyAdmin',
'position' => 'dashboard,topbar',
]);
- UsefulLink::create([
- 'icon' => 'fab fa-discord',
- 'title' => 'Discord',
- 'link' => env('DISCORD_INVITE_URL', 'https://discord.gg/4Y6HjD2uyU'),
- 'description' => 'Need a helping hand? Want to chat? Got any questions? Join our discord!',
- 'position' => 'dashboard',
- ]);
}
}
diff --git a/database/settings/2023_02_01_164731_create_general_settings.php b/database/settings/2023_02_01_164731_create_general_settings.php
new file mode 100644
index 000000000..e799e4406
--- /dev/null
+++ b/database/settings/2023_02_01_164731_create_general_settings.php
@@ -0,0 +1,107 @@
+exists();
+
+ // Get the user-set configuration values from the old table.
+ $this->migrator->add('general.store_enabled', true);
+ $this->migrator->add('general.sales_tax', $table_exists ? $this->getOldValue('SETTINGS::PAYMENTS:SALES_TAX', '0') : '0');
+ $this->migrator->add('general.credits_display_name', $table_exists ? $this->getOldValue('SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME', 'Credits') : 'Credits');
+ $this->migrator->add('general.recaptcha_site_key', $table_exists ? $this->getOldValue("SETTINGS::RECAPTCHA:SITE_KEY") : env('RECAPTCHA_SITE_KEY', '6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI'));
+ $this->migrator->add('general.recaptcha_secret_key', $table_exists ? $this->getOldValue("SETTINGS::RECAPTCHA:SECRET_KEY") : env('RECAPTCHA_SECRET_KEY', '6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe'));
+ $this->migrator->add('general.recaptcha_enabled', $table_exists ? $this->getOldValue("SETTINGS::RECAPTCHA:ENABLED", false) : false);
+ $this->migrator->add('general.phpmyadmin_url', $table_exists ? $this->getOldValue("SETTINGS::MISC:PHPMYADMIN:URL") : env('PHPMYADMIN_URL'));
+ $this->migrator->add('general.alert_enabled', $table_exists ? $this->getOldValue("SETTINGS::SYSTEM:ALERT_ENABLED", false) : false);
+ $this->migrator->add('general.alert_type', $table_exists ? $this->getOldValue("SETTINGS::SYSTEM:ALERT_TYPE", 'dark') : 'dark');
+ $this->migrator->add('general.alert_message', $table_exists ? $this->getOldValue("SETTINGS::SYSTEM:ALERT_MESSAGE") : null);
+ $this->migrator->add('general.theme', $table_exists ? $this->getOldValue("SETTINGS::SYSTEM:THEME", 'default') : 'default');
+ }
+
+ public function down(): void
+ {
+ DB::table('settings_old')->insert([
+ [
+ 'key' => 'SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME',
+ 'value' => $this->getNewValue('credits_display_name', 'general'),
+ 'type' => 'string',
+ 'description' => 'The name of the credits on the panel.'
+ ],
+ [
+ 'key' => 'SETTINGS::PAYMENTS:SALES_TAX',
+ 'value' => $this->getNewValue('sales_tax', 'general'),
+ 'type' => 'string',
+ 'description' => 'Sales tax in %.'
+ ],
+ [
+ 'key' => 'SETTINGS::SYSTEM:ALERT_ENABLED',
+ 'value' => $this->getNewValue('alert_enabled', 'general'),
+ 'type' => 'boolean',
+ 'description' => 'Enable the alert at the top of the panel.'
+ ],
+ [
+ 'key' => 'SETTINGS::SYSTEM:ALERT_TYPE',
+ 'value' => $this->getNewValue('alert_type', 'general'),
+ 'type' => 'string',
+ 'description' => 'The type of alert to display.'
+ ],
+ [
+ 'key' => 'SETTINGS::SYSTEM:ALERT_MESSAGE',
+ 'value' => $this->getNewValue('alert_message', 'general'),
+ 'type' => 'text',
+ 'description' => 'The message to display in the alert.'
+ ],
+ [
+ 'key' => 'SETTINGS::SYSTEM:THEME',
+ 'value' => $this->getNewValue('theme', 'general'),
+ 'type' => 'string',
+ 'description' => 'The theme to use for the panel.'
+
+ ],
+ [
+ 'key' => 'SETTINGS::RECAPTCHA:SITE_KEY',
+ 'value' => $this->getNewValue('recaptcha_site_key', 'general'),
+ 'type' => 'string',
+ 'description' => 'The site key for reCAPTCHA.'
+ ],
+ [
+ 'key' => 'SETTINGS::RECAPTCHA:SECRET_KEY',
+ 'value' => $this->getNewValue('recaptcha_secret_key', 'general'),
+ 'type' => 'string',
+ 'description' => 'The secret key for reCAPTCHA.'
+ ],
+ [
+ 'key' => 'SETTINGS::RECAPTCHA:ENABLED',
+ 'value' => $this->getNewValue('recaptcha_enabled', 'general'),
+ 'type' => 'boolean',
+ 'description' => 'Enable reCAPTCHA on the panel.'
+ ],
+ [
+ 'key' => 'SETTINGS::MISC:PHPMYADMIN:URL',
+ 'value' => $this->getNewValue('phpmyadmin_url', 'general'),
+ 'type' => 'string',
+ 'description' => 'The URL to your phpMyAdmin installation.'
+ ],
+ ]);
+ try {
+ $this->migrator->delete('general.store_enabled');
+ $this->migrator->delete('general.sales_tax');
+ $this->migrator->delete('general.credits_display_name');
+ $this->migrator->delete('general.recaptcha_site_key');
+ $this->migrator->delete('general.recaptcha_secret_key');
+ $this->migrator->delete('general.recaptcha_enabled');
+ $this->migrator->delete('general.phpmyadmin_url');
+ $this->migrator->delete('general.alert_enabled');
+ $this->migrator->delete('general.alert_type');
+ $this->migrator->delete('general.alert_message');
+ $this->migrator->delete('general.theme');
+ } catch (Exception $e) {
+ // Do nothing
+ }
+ }
+}
diff --git a/database/settings/2023_02_01_181334_create_pterodactyl_settings.php b/database/settings/2023_02_01_181334_create_pterodactyl_settings.php
new file mode 100644
index 000000000..f2ed645a5
--- /dev/null
+++ b/database/settings/2023_02_01_181334_create_pterodactyl_settings.php
@@ -0,0 +1,58 @@
+exists();
+
+ $this->migrator->add('pterodactyl.admin_token', $table_exists ? $this->getOldValue('SETTINGS::SYSTEM:PTERODACTYL:TOKEN', '') : env('PTERODACTYL_TOKEN', ''));
+ $this->migrator->add('pterodactyl.user_token', $table_exists ? $this->getOldValue('SETTINGS::SYSTEM:PTERODACTYL:ADMIN_USER_TOKEN', '') : '');
+ $this->migrator->add('pterodactyl.panel_url', $table_exists ? $this->getOldValue('SETTINGS::SYSTEM:PTERODACTYL:URL', '') : env('PTERODACTYL_URL', ''));
+ $this->migrator->add('pterodactyl.per_page_limit', $table_exists ? $this->getOldValue('SETTINGS::SYSTEM:PTERODACTYL:PER_PAGE_LIMIT', 200) : 200);
+ }
+
+ public function down(): void
+ {
+
+
+ DB::table('settings_old')->insert([
+ [
+ 'key' => 'SETTINGS::SYSTEM:PTERODACTYL:TOKEN',
+ 'value' => $this->getNewValue('admin_token', 'pterodactyl'),
+ 'type' => 'string',
+ 'description' => 'The admin token for the Pterodactyl panel.',
+ ],
+ [
+ 'key' => 'SETTINGS::SYSTEM:PTERODACTYL:ADMIN_USER_TOKEN',
+ 'value' => $this->getNewValue('user_token', 'pterodactyl'),
+ 'type' => 'string',
+ 'description' => 'The user token for the Pterodactyl panel.',
+ ],
+ [
+ 'key' => 'SETTINGS::SYSTEM:PTERODACTYL:URL',
+ 'value' => $this->getNewValue('panel_url', 'pterodactyl'),
+ 'type' => 'string',
+ 'description' => 'The URL for the Pterodactyl panel.',
+ ],
+ [
+ 'key' => 'SETTINGS::SYSTEM:PTERODACTYL:PER_PAGE_LIMIT',
+ 'value' => $this->getNewValue('per_page_limit', 'pterodactyl'),
+ 'type' => 'integer',
+ 'description' => 'The number of servers to show per page.',
+ ],
+ ]);
+
+ try {
+ $this->migrator->delete('pterodactyl.admin_token');
+ $this->migrator->delete('pterodactyl.user_token');
+ $this->migrator->delete('pterodactyl.panel_url');
+ $this->migrator->delete('pterodactyl.per_page_limit');
+ } catch (Exception $e) {
+ echo 'Caught exception: ', $e->getMessage(), "\n";
+ }
+ }
+}
diff --git a/database/settings/2023_02_01_181453_create_mail_settings.php b/database/settings/2023_02_01_181453_create_mail_settings.php
new file mode 100644
index 000000000..5dd15cab4
--- /dev/null
+++ b/database/settings/2023_02_01_181453_create_mail_settings.php
@@ -0,0 +1,90 @@
+exists();
+
+ // Get the user-set configuration values from the old table.
+ $this->migrator->add('mail.mail_host', $table_exists ? $this->getOldValue('SETTINGS::MAIL:HOST') : env('MAIL_HOST', 'localhost'));
+ $this->migrator->add('mail.mail_port', $table_exists ? $this->getOldValue('SETTINGS::MAIL:PORT') : env('MAIL_PORT', 25));
+ $this->migrator->add('mail.mail_username', $table_exists ? $this->getOldValue('SETTINGS::MAIL:USERNAME') : env('MAIL_USERNAME', ''));
+ $this->migrator->add('mail.mail_password', $table_exists ? $this->getOldValue('SETTINGS::MAIL:PASSWORD') : env('MAIL_PASSWORD', ''));
+ $this->migrator->add('mail.mail_encryption', $table_exists ? $this->getOldValue('SETTINGS::MAIL:ENCRYPTION') : env('MAIL_ENCRYPTION', 'tls'));
+ $this->migrator->add('mail.mail_from_address', $table_exists ? $this->getOldValue('SETTINGS::MAIL:FROM_ADDRESS') : env('MAIL_FROM_ADDRESS', 'example@example.com'));
+ $this->migrator->add('mail.mail_from_name', $table_exists ? $this->getOldValue('SETTINGS::MAIL:FROM_NAME') : env('APP_NAME', 'CtrlPanel.gg'));
+ $this->migrator->add('mail.mail_mailer', $table_exists ? $this->getOldValue('SETTINGS::MAIL:MAILER') : env('MAIL_MAILER', 'smtp'));
+ }
+
+ public function down(): void
+ {
+ DB::table('settings_old')->insert([
+ [
+ 'key' => 'SETTINGS::MAIL:HOST',
+ 'value' => $this->getNewValue('mail_host', 'mail'),
+ 'type' => 'string',
+ 'description' => 'The host of the mail server.',
+ ],
+ [
+ 'key' => 'SETTINGS::MAIL:PORT',
+ 'value' => $this->getNewValue('mail_port', 'mail'),
+ 'type' => 'integer',
+ 'description' => 'The port of the mail server.',
+ ],
+ [
+ 'key' => 'SETTINGS::MAIL:USERNAME',
+ 'value' => $this->getNewValue('mail_username', 'mail'),
+ 'type' => 'string',
+ 'description' => 'The username of the mail server.',
+ ],
+ [
+ 'key' => 'SETTINGS::MAIL:PASSWORD',
+ 'value' => $this->getNewValue('mail_password', 'mail'),
+ 'type' => 'string',
+ 'description' => 'The password of the mail server.',
+ ],
+ [
+ 'key' => 'SETTINGS::MAIL:ENCRYPTION',
+ 'value' => $this->getNewValue('mail_encryption', 'mail'),
+ 'type' => 'string',
+ 'description' => 'The encryption of the mail server.',
+ ],
+ [
+ 'key' => 'SETTINGS::MAIL:FROM_ADDRESS',
+ 'value' => $this->getNewValue('mail_from_address', 'mail'),
+ 'type' => 'string',
+ 'description' => 'The from address of the mail server.',
+ ],
+ [
+ 'key' => 'SETTINGS::MAIL:FROM_NAME',
+ 'value' => $this->getNewValue('mail_from_name', 'mail'),
+ 'type' => 'string',
+ 'description' => 'The from name of the mail server.',
+ ],
+ [
+ 'key' => 'SETTINGS::MAIL:MAILER',
+ 'value' => $this->getNewValue('mail_mailer', 'mail'),
+ 'type' => 'string',
+ 'description' => 'The mailer of the mail server.',
+ ],
+
+ ]);
+
+ try {
+ $this->migrator->delete('mail.mail_host');
+ $this->migrator->delete('mail.mail_port');
+ $this->migrator->delete('mail.mail_username');
+ $this->migrator->delete('mail.mail_password');
+ $this->migrator->delete('mail.mail_encryption');
+ $this->migrator->delete('mail.mail_from_address');
+ $this->migrator->delete('mail.mail_from_name');
+ $this->migrator->delete('mail.mail_mailer');
+ } catch (Exception $e) {
+ //
+ }
+ }
+}
diff --git a/database/settings/2023_02_01_181925_create_user_settings.php b/database/settings/2023_02_01_181925_create_user_settings.php
new file mode 100644
index 000000000..683c998b0
--- /dev/null
+++ b/database/settings/2023_02_01_181925_create_user_settings.php
@@ -0,0 +1,124 @@
+exists();
+
+ // Get the user-set configuration values from the old table.
+ $this->migrator->add('user.credits_reward_after_verify_discord', $table_exists ? $this->getOldValue('SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_DISCORD', 250) : 250);
+ $this->migrator->add('user.credits_reward_after_verify_email', $table_exists ? $this->getOldValue('SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_EMAIL', 250) : 250);
+ $this->migrator->add('user.force_discord_verification', $table_exists ? $this->getOldValue('SETTINGS::USER:FORCE_DISCORD_VERIFICATION', false) : false);
+ $this->migrator->add('user.force_email_verification', $table_exists ? $this->getOldValue('SETTINGS::USER:FORCE_EMAIL_VERIFICATION', false) : false);
+ $this->migrator->add('user.initial_credits', $table_exists ? $this->getOldValue('SETTINGS::USER:INITIAL_CREDITS', 250) : 250);
+ $this->migrator->add('user.initial_server_limit', $table_exists ? $this->getOldValue('SETTINGS::USER:INITIAL_SERVER_LIMIT', 1) : 1);
+ $this->migrator->add('user.min_credits_to_make_server', $table_exists ? $this->getOldValue('SETTINGS::USER:MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER', 50) : 50);
+ $this->migrator->add('user.server_limit_after_irl_purchase', $table_exists ? $this->getOldValue('SETTINGS::USER:SERVER_LIMIT_AFTER_IRL_PURCHASE', 10) : 10);
+ $this->migrator->add('user.server_limit_after_verify_discord', $table_exists ? $this->getOldValue('SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_DISCORD', 2) : 2);
+ $this->migrator->add('user.server_limit_after_verify_email', $table_exists ? $this->getOldValue('SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_EMAIL', 2) : 2);
+ $this->migrator->add('user.register_ip_check', $table_exists ? $this->getOldValue("SETTINGS::SYSTEM:REGISTER_IP_CHECK", true) : true);
+ $this->migrator->add('user.creation_enabled', $table_exists ? $this->getOldValue("SETTINGS::SYSTEM:CREATION_OF_NEW_USERS", true) : true);
+ }
+
+ public function down(): void
+ {
+ DB::table('settings_old')->insert([
+ [
+ 'key' => 'SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_DISCORD',
+ 'value' => $this->getNewValue('credits_reward_after_verify_discord', 'user'),
+ 'type' => 'integer',
+ 'description' => 'The amount of credits that the user will receive after verifying their Discord account.',
+ ],
+ [
+ 'key' => 'SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_EMAIL',
+ 'value' => $this->getNewValue('credits_reward_after_verify_email', 'user'),
+ 'type' => 'integer',
+ 'description' => 'The amount of credits that the user will receive after verifying their email.',
+
+ ],
+ [
+ 'key' => 'SETTINGS::USER:FORCE_DISCORD_VERIFICATION',
+ 'value' => $this->getNewValue('force_discord_verification', 'user'),
+ 'type' => 'boolean',
+ 'description' => 'If the user must verify their Discord account to use the panel.',
+ ],
+ [
+ 'key' => 'SETTINGS::USER:FORCE_EMAIL_VERIFICATION',
+ 'value' => $this->getNewValue('force_email_verification', 'user'),
+ 'type' => 'boolean',
+ 'description' => 'If the user must verify their email to use the panel.',
+
+ ],
+ [
+ 'key' => 'SETTINGS::USER:INITIAL_CREDITS',
+ 'value' => $this->getNewValue('initial_credits', 'user'),
+ 'type' => 'integer',
+ 'description' => 'The amount of credits that the user will receive when they register.',
+ ],
+ [
+ 'key' => 'SETTINGS::USER:INITIAL_SERVER_LIMIT',
+ 'value' => $this->getNewValue('initial_server_limit', 'user'),
+ 'type' => 'integer',
+ 'description' => 'The amount of servers that the user will be able to create when they register.',
+ ],
+ [
+ 'key' => 'SETTINGS::USER:MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER',
+ 'value' => $this->getNewValue('min_credits_to_make_server', 'user'),
+ 'type' => 'integer',
+ 'description' => 'The minimum amount of credits that the user must have to create a server.',
+ ],
+ [
+ 'key' => 'SETTINGS::USER:SERVER_LIMIT_AFTER_IRL_PURCHASE',
+ 'value' => $this->getNewValue('server_limit_after_irl_purchase', 'user'),
+ 'type' => 'integer',
+ 'description' => 'The amount of servers that the user will be able to create after making a real purchase.',
+ ],
+ [
+ 'key' => 'SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_DISCORD',
+ 'value' => $this->getNewValue('server_limit_after_verify_discord', 'user'),
+ 'type' => 'integer',
+ 'description' => 'The amount of servers that the user will be able to create after verifying their Discord account.',
+
+ ],
+ [
+ 'key' => 'SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_EMAIL',
+ 'value' => $this->getNewValue('server_limit_after_verify_email', 'user'),
+ 'type' => 'integer',
+ 'description' => 'The amount of servers that the user will be able to create after verifying their email.',
+ ],
+ [
+ 'key' => 'SETTINGS::SYSTEM:REGISTER_IP_CHECK',
+ 'value' => $this->getNewValue('register_ip_check', 'user'),
+ 'type' => 'boolean',
+ 'description' => 'If the user must verify their IP address to register.',
+ ],
+ [
+ 'key' => 'SETTINGS::SYSTEM:CREATION_OF_NEW_USERS',
+ 'value' => $this->getNewValue('creation_enabled', 'user'),
+ 'type' => 'boolean',
+ 'description' => 'If the user can register.',
+ ],
+ ]);
+
+ try {
+ $this->migrator->delete('user.credits_reward_after_verify_discord');
+ $this->migrator->delete('user.credits_reward_after_verify_email');
+ $this->migrator->delete('user.force_discord_verification');
+ $this->migrator->delete('user.force_email_verification');
+ $this->migrator->delete('user.initial_credits');
+ $this->migrator->delete('user.initial_server_limit');
+ $this->migrator->delete('user.min_credits_to_make_server');
+ $this->migrator->delete('user.server_limit_after_irl_purchase');
+ $this->migrator->delete('user.server_limit_after_verify_discord');
+ $this->migrator->delete('user.server_limit_after_verify_email');
+ $this->migrator->delete('user.register_ip_check');
+ $this->migrator->delete('user.creation_enabled');
+ } catch (Exception $e) {
+ // Do nothing
+ }
+ }
+}
diff --git a/database/settings/2023_02_01_181950_create_server_settings.php b/database/settings/2023_02_01_181950_create_server_settings.php
new file mode 100644
index 000000000..bd63d8e71
--- /dev/null
+++ b/database/settings/2023_02_01_181950_create_server_settings.php
@@ -0,0 +1,49 @@
+exists();
+
+ // Get the user-set configuration values from the old table.
+ $this->migrator->add('server.allocation_limit', $table_exists ? $this->getOldValue('SETTINGS::SERVER:ALLOCATION_LIMIT', 200) : 200);
+ $this->migrator->add('server.creation_enabled', $table_exists ? $this->getOldValue('SETTINGS::SYSTEM:CREATION_OF_NEW_SERVERS', true) : true);
+ $this->migrator->add('server.enable_upgrade', $table_exists ? $this->getOldValue('SETTINGS::SYSTEM:ENABLE_UPGRADE', false) : false);
+ }
+
+ public function down(): void
+ {
+ DB::table('settings_old')->insert([
+ [
+ 'key' => 'SETTINGS::SERVER:ALLOCATION_LIMIT',
+ 'value' => $this->getNewValue('allocation_limit', 'server'),
+ 'type' => 'integer',
+ 'description' => 'The number of servers to show per page.',
+ ],
+ [
+ 'key' => 'SETTINGS::SYSTEM:CREATION_OF_NEW_SERVERS',
+ 'value' => $this->getNewValue('creation_enabled', 'server'),
+ 'type' => 'boolean',
+ 'description' => 'Whether or not users can create new servers.',
+ ],
+ [
+ 'key' => 'SETTINGS::SYSTEM:ENABLE_UPGRADE',
+ 'value' => $this->getNewValue('enable_upgrade', 'server'),
+ 'type' => 'boolean',
+ 'description' => 'Whether or not users can upgrade their servers.',
+ ],
+ ]);
+
+ try {
+ $this->migrator->delete('server.allocation_limit');
+ $this->migrator->delete('server.creation_enabled');
+ $this->migrator->delete('server.enable_upgrade');
+ } catch (Exception $e) {
+ // Do nothing
+ }
+ }
+}
diff --git a/database/settings/2023_02_01_182021_create_invoice_settings.php b/database/settings/2023_02_01_182021_create_invoice_settings.php
new file mode 100644
index 000000000..d3ac8f637
--- /dev/null
+++ b/database/settings/2023_02_01_182021_create_invoice_settings.php
@@ -0,0 +1,89 @@
+exists();
+
+ // Get the user-set configuration values from the old table.
+ $this->migrator->add('invoice.company_address', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_ADDRESS') : null);
+ $this->migrator->add('invoice.company_mail', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_MAIL') : null);
+ $this->migrator->add('invoice.company_name', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_NAME') : null);
+ $this->migrator->add('invoice.company_phone', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_PHONE') : null);
+ $this->migrator->add('invoice.company_vat', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_VAT') : null);
+ $this->migrator->add('invoice.company_website', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:COMPANY_WEBSITE') : null);
+ $this->migrator->add('invoice.enabled', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:ENABLED', false) : false);
+ $this->migrator->add('invoice.prefix', $table_exists ? $this->getOldValue('SETTINGS::INVOICE:PREFIX') : null);
+ }
+
+ public function down(): void
+ {
+ DB::table('settings_old')->insert([
+ [
+ 'key' => 'SETTINGS::INVOICE:COMPANY_ADDRESS',
+ 'value' => $this->getNewValue('company_address', 'invoice'),
+ 'type' => 'string',
+ 'description' => 'The address of the company.',
+ ],
+ [
+ 'key' => 'SETTINGS::INVOICE:COMPANY_MAIL',
+ 'value' => $this->getNewValue('company_mail', 'invoice'),
+ 'type' => 'string',
+ 'description' => 'The email address of the company.',
+ ],
+ [
+ 'key' => 'SETTINGS::INVOICE:COMPANY_NAME',
+ 'value' => $this->getNewValue('company_name', 'invoice'),
+ 'type' => 'string',
+ 'description' => 'The name of the company.',
+ ],
+ [
+ 'key' => 'SETTINGS::INVOICE:COMPANY_PHONE',
+ 'value' => $this->getNewValue('company_phone', 'invoice'),
+ 'type' => 'string',
+ 'description' => 'The phone number of the company.',
+ ],
+ [
+ 'key' => 'SETTINGS::INVOICE:COMPANY_VAT',
+ 'value' => $this->getNewValue('company_vat', 'invoice'),
+ 'type' => 'string',
+ 'description' => 'The VAT number of the company.',
+ ],
+ [
+ 'key' => 'SETTINGS::INVOICE:COMPANY_WEBSITE',
+ 'value' => $this->getNewValue('company_website', 'invoice'),
+ 'type' => 'string',
+ 'description' => 'The website of the company.',
+ ],
+ [
+ 'key' => 'SETTINGS::INVOICE:ENABLED',
+ 'value' => $this->getNewValue('enabled', 'invoice'),
+ 'type' => 'boolean',
+ 'description' => 'Enable or disable the invoice system.',
+ ],
+ [
+ 'key' => 'SETTINGS::INVOICE:PREFIX',
+ 'value' => $this->getNewValue('prefix', 'invoice'),
+ 'type' => 'string',
+ 'description' => 'The prefix of the invoice.',
+ ],
+ ]);
+
+ try {
+ $this->migrator->delete('invoice.company_address');
+ $this->migrator->delete('invoice.company_mail');
+ $this->migrator->delete('invoice.company_name');
+ $this->migrator->delete('invoice.company_phone');
+ $this->migrator->delete('invoice.company_vat');
+ $this->migrator->delete('invoice.company_website');
+ $this->migrator->delete('invoice.enabled');
+ $this->migrator->delete('invoice.prefix');
+ } catch (Exception $e) {
+ // Do nothing
+ }
+ }
+}
diff --git a/database/settings/2023_02_01_182043_create_discord_settings.php b/database/settings/2023_02_01_182043_create_discord_settings.php
new file mode 100644
index 000000000..c8216c495
--- /dev/null
+++ b/database/settings/2023_02_01_182043_create_discord_settings.php
@@ -0,0 +1,74 @@
+exists();
+
+ // Get the user-set configuration values from the old table.
+ $this->migrator->add('discord.bot_token', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:BOT_TOKEN') : null);
+ $this->migrator->add('discord.client_id', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:CLIENT_ID') : null);
+ $this->migrator->add('discord.client_secret', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:CLIENT_SECRET') : null);
+ $this->migrator->add('discord.guild_id', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:GUILD_ID') : null);
+ $this->migrator->add('discord.invite_url', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:INVITE_URL') : null);
+ $this->migrator->add('discord.role_id', $table_exists ? $this->getOldValue('SETTINGS::DISCORD:ROLE_ID') : null);
+ }
+
+ public function down(): void
+ {
+ DB::table('settings_old')->insert([
+ [
+ 'key' => 'SETTINGS::DISCORD:BOT_TOKEN',
+ 'value' => $this->getNewValue('bot_token', 'discord'),
+ 'type' => 'string',
+ 'description' => 'The bot token for the Discord bot.',
+ ],
+ [
+ 'key' => 'SETTINGS::DISCORD:CLIENT_ID',
+ 'value' => $this->getNewValue('client_id', 'discord'),
+ 'type' => 'string',
+ 'description' => 'The client ID for the Discord bot.',
+
+ ],
+ [
+ 'key' => 'SETTINGS::DISCORD:CLIENT_SECRET',
+ 'value' => $this->getNewValue('client_secret', 'discord'),
+ 'type' => 'string',
+ 'description' => 'The client secret for the Discord bot.',
+ ],
+ [
+ 'key' => 'SETTINGS::DISCORD:GUILD_ID',
+ 'value' => $this->getNewValue('guild_id', 'discord'),
+ 'type' => 'string',
+ 'description' => 'The guild ID for the Discord bot.',
+ ],
+ [
+ 'key' => 'SETTINGS::DISCORD:INVITE_URL',
+ 'value' => $this->getNewValue('invite_url', 'discord'),
+ 'type' => 'string',
+ 'description' => 'The invite URL for the Discord bot.',
+ ],
+ [
+ 'key' => 'SETTINGS::DISCORD:ROLE_ID',
+ 'value' => $this->getNewValue('role_id', 'discord'),
+ 'type' => 'string',
+ 'description' => 'The role ID for the Discord bot.',
+ ]
+ ]);
+
+ try {
+ $this->migrator->delete('discord.bot_token');
+ $this->migrator->delete('discord.client_id');
+ $this->migrator->delete('discord.client_secret');
+ $this->migrator->delete('discord.guild_id');
+ $this->migrator->delete('discord.invite_url');
+ $this->migrator->delete('discord.role_id');
+ } catch (Exception $e) {
+ // Do nothing.
+ }
+ }
+}
diff --git a/database/settings/2023_02_01_182108_create_locale_settings.php b/database/settings/2023_02_01_182108_create_locale_settings.php
new file mode 100644
index 000000000..86f3d6e42
--- /dev/null
+++ b/database/settings/2023_02_01_182108_create_locale_settings.php
@@ -0,0 +1,65 @@
+exists();
+
+ // Get the user-set configuration values from the old table.
+ $this->migrator->add('locale.available', $table_exists ? $this->getOldValue('SETTINGS::LOCALE:AVAILABLE') : '');
+ $this->migrator->add('locale.clients_can_change', $table_exists ? $this->getOldValue('SETTINGS::LOCALE:CLIENTS_CAN_CHANGE', true) : true);
+ $this->migrator->add('locale.datatables', $table_exists ? $this->getOldValue('SETTINGS::LOCALE:DATATABLES') : 'en-gb');
+ $this->migrator->add('locale.default', $table_exists ? $this->getOldValue('SETTINGS::LOCALE:DEFAULT', 'en') : 'en');
+ $this->migrator->add('locale.dynamic', $table_exists ? $this->getOldValue('SETTINGS::LOCALE:DYNAMIC', false) : false);
+ }
+
+ public function down(): void
+ {
+ DB::table('settings_old')->insert([
+ [
+ 'key' => 'SETTINGS::LOCALE:AVAILABLE',
+ 'value' => $this->getNewValue('available', 'locale'),
+ 'type' => 'string',
+ 'description' => 'The available locales.',
+ ],
+ [
+ 'key' => 'SETTINGS::LOCALE:CLIENTS_CAN_CHANGE',
+ 'value' => $this->getNewValue('clients_can_change', 'locale'),
+ 'type' => 'boolean',
+ 'description' => 'If clients can change their locale.',
+ ],
+ [
+ 'key' => 'SETTINGS::LOCALE:DATATABLES',
+ 'value' => $this->getNewValue('datatables', 'locale'),
+ 'type' => 'string',
+ 'description' => 'The locale for datatables.',
+ ],
+ [
+ 'key' => 'SETTINGS::LOCALE:DEFAULT',
+ 'value' => $this->getNewValue('default', 'locale'),
+ 'type' => 'string',
+ 'description' => 'The default locale.',
+ ],
+ [
+ 'key' => 'SETTINGS::LOCALE:DYNAMIC',
+ 'value' => $this->getNewValue('dynamic', 'locale'),
+ 'type' => 'boolean',
+ 'description' => 'If the locale should be dynamic.',
+ ],
+ ]);
+
+ try {
+ $this->migrator->delete('locale.available');
+ $this->migrator->delete('locale.clients_can_change');
+ $this->migrator->delete('locale.datatables');
+ $this->migrator->delete('locale.default');
+ $this->migrator->delete('locale.dynamic');
+ } catch (Exception $e) {
+ // Do nothing
+ }
+ }
+}
diff --git a/database/settings/2023_02_01_182135_create_referral_settings.php b/database/settings/2023_02_01_182135_create_referral_settings.php
new file mode 100644
index 000000000..ed7ff3fd4
--- /dev/null
+++ b/database/settings/2023_02_01_182135_create_referral_settings.php
@@ -0,0 +1,72 @@
+exists();
+
+ // Get the user-set configuration values from the old table.
+ $this->migrator->add('referral.always_give_commission', $table_exists ? $this->getOldValue('SETTINGS::REFERRAL::ALWAYS_GIVE_COMMISSION', false) : false);
+ $this->migrator->add('referral.enabled', $table_exists ? $this->getOldValue('SETTINGS::REFERRAL::ENABLED', false) : false);
+ $this->migrator->add('referral.reward', $table_exists ? $this->getOldValue('SETTINGS::REFERRAL::REWARD') : 100);
+ $this->migrator->add('referral.mode', $table_exists ? $this->getOldValue('SETTINGS::REFERRAL:MODE', 'sign-up') : 'sign-up');
+ $this->migrator->add('referral.percentage', $table_exists ? $this->getOldValue('SETTINGS::REFERRAL:PERCENTAGE', 100) : 100);
+ }
+
+ public function down(): void
+ {
+ DB::table('settings_old')->insert([
+ [
+ 'key' => 'SETTINGS::REFERRAL::ALLOWED',
+ 'value' => $this->getNewValue('allowed', 'referral'),
+ 'type' => 'string',
+ 'description' => 'The allowed referral types.',
+ ],
+ [
+ 'key' => 'SETTINGS::REFERRAL::ALWAYS_GIVE_COMMISSION',
+ 'value' => $this->getNewValue('always_give_commission', 'referral'),
+ 'type' => 'boolean',
+ 'description' => 'Whether to always give commission to the referrer.',
+ ],
+ [
+ 'key' => 'SETTINGS::REFERRAL::ENABLED',
+ 'value' => $this->getNewValue('enabled', 'referral'),
+ 'type' => 'boolean',
+ 'description' => 'Whether to enable the referral system.',
+ ],
+ [
+ 'key' => 'SETTINGS::REFERRAL::REWARD',
+ 'value' => $this->getNewValue('reward', 'referral'),
+ 'type' => 'integer',
+ 'description' => 'The reward for the referral.',
+ ],
+ [
+ 'key' => 'SETTINGS::REFERRAL:MODE',
+ 'value' => $this->getNewValue('mode', 'referral'),
+ 'type' => 'string',
+ 'description' => 'The referral mode.',
+ ],
+ [
+ 'key' => 'SETTINGS::REFERRAL:PERCENTAGE',
+ 'value' => $this->getNewValue('percentage', 'referral'),
+ 'type' => 'integer',
+ 'description' => 'The referral percentage.',
+ ],
+ ]);
+
+ try {
+ $this->migrator->delete('referral.allowed');
+ $this->migrator->delete('referral.always_give_commission');
+ $this->migrator->delete('referral.enabled');
+ $this->migrator->delete('referral.reward');
+ $this->migrator->delete('referral.mode');
+ $this->migrator->delete('referral.percentage');
+ } catch (Exception $e) {
+ //
+ }
+ }
+}
diff --git a/database/settings/2023_02_01_182158_create_website_settings.php b/database/settings/2023_02_01_182158_create_website_settings.php
new file mode 100644
index 000000000..eb8f3295d
--- /dev/null
+++ b/database/settings/2023_02_01_182158_create_website_settings.php
@@ -0,0 +1,104 @@
+exists();
+
+ // Get the user-set configuration values from the old table.
+ $this->migrator->add('website.motd_enabled', $table_exists ? $this->getOldValue("SETTINGS::SYSTEM:MOTD_ENABLED", true) : true);
+ $this->migrator->add(
+ 'website.motd_message',
+ $table_exists ? $this->getOldValue("SETTINGS::SYSTEM:MOTD_MESSAGE") :
+ "CtrlPanel.gg
+
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "Езиков код на таблиците с данни.
Пример:<\/strong> en-gb, fr_fr, de_de
Повече информация: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "Езиков код на таблиците с данни.
Пример: en-gb, fr_fr, de_de
Повече информация: ",
"Auto-translate": "Автоматичен превод",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "Ако това е отметнато, таблото за управление ще се преведе на езика на клиентите, ако е наличен",
"Client Language-Switch": "Превключване на клиентски език",
@@ -243,9 +243,9 @@
"Charges the first hour worth of credits upon creating a server.": "Таксува кредити за първия час при създаване на сървър.",
"Credits Display Name": "Credits Display Name",
"PHPMyAdmin URL": "PHPMyAdmin URL",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "Въведете URL адреса на вашата инсталация на PHPMyAdmin. Без крайна наклонена черта!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "Въведете URL адреса на вашата инсталация на PHPMyAdmin. Без крайна наклонена черта!",
"Pterodactyl URL": "Pterodactyl URL",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Въведете URL адреса на вашата инсталация на Pterodactyl.Без крайна наклонена черта!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Въведете URL адреса на вашата инсталация на Pterodactyl.Без крайна наклонена черта!",
"Pterodactyl API Key": "Pterodactyl API Kлюч",
"Enter the API Key to your Pterodactyl installation.": "Въведете API ключа към вашата инсталация на Pterodactyl.",
"Force Discord verification": "Принудително потвърждаване на Discord",
@@ -316,7 +316,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "Ваучер може да се използва само веднъж на потребител. Uses определя броя на различните потребители, които могат да използват този ваучер.",
"Max": "Макс",
"Expires at": "Изтича на",
- "Used \/ Uses": "Използван \/ Използвания",
+ "Used / Uses": "Използван / Използвания",
"Expires": "Изтича",
"Sign in to start your session": "Влезте, за да започнете сесията си",
"Password": "Парола",
@@ -388,7 +388,7 @@
"No nodes have been linked!": "Няма свързани Node-ове!",
"No nests available!": "Няма налични Nest-ове!",
"No eggs have been linked!": "Няма свързани Egg-ове!",
- "Software \/ Games": "Софтуер \/ Игри",
+ "Software / Games": "Софтуер / Игри",
"Please select software ...": "Моля, изберете софтуер...",
"---": "---",
"Specification ": "Спецификация ",
@@ -447,18 +447,25 @@
"Notes": "Бележки",
"Amount in words": "Сума с думи",
"Please pay until": "Моля, платете до",
- "cs": "Чешки",
- "de": "Немски",
- "en": "Английски",
- "es": "Испански",
- "fr": "Френски",
- "hi": "Хинди",
- "it": "Италиански",
- "nl": "Холандски",
- "pl": "Полски",
- "zh": "Китайски",
- "tr": "Турски",
- "ru": "Руски",
+ "cs": "Czech",
+ "de": "German",
+ "en": "English",
+ "es": "Spanish",
+ "fr": "French",
+ "hi": "Hindi",
+ "it": "Italian",
+ "nl": "Dutch",
+ "pl": "Polish",
+ "zh": "Chinese",
+ "tr": "Turkish",
+ "ru": "Russian",
"sv": "Swedish",
- "sk": "Slovakish"
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "Актуализирането / надграждането на сървъра ви ще нулира вашата билнгова цикъл до сега. Вашите превишени кредити ще бъдат възстановени. Цената за новия билнгов цикъл ще бъде извлечена",
+ "Caution": "Внимание",
+ "You can not see your Referral Code": "Не можете да видите вашия код за препращане",
+ "SERVER NAME": "ИМЕ НА СЪРВЪР",
+ "STORAGE": "Съхранение",
+ "Cancel": "Отказ"
}
diff --git a/lang/bs.json b/lang/bs.json
index 8a84b67a3..79615b407 100644
--- a/lang/bs.json
+++ b/lang/bs.json
@@ -80,7 +80,7 @@
"User ID": "User ID",
"Server Creation Error": "Server Creation Error",
"Your servers have been suspended!": "Your servers have been suspended!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "To automatically re-enable your server\/s, you need to purchase more credits.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "To automatically re-enable your server/s, you need to purchase more credits.",
"Purchase credits": "Purchase credits",
"If you have any questions please let us know.": "If you have any questions please let us know.",
"Regards": "Regards",
@@ -112,7 +112,7 @@
"Support server": "Support server",
"Documentation": "Documentation",
"Github": "Github",
- "Support ControlPanel": "Support ControlPanel",
+ "Support CtrlPanel": "Support CtrlPanel",
"Servers": "Servers",
"Total": "Total",
"Payments": "Payments",
@@ -173,7 +173,7 @@
"Default language": "Default language",
"The fallback Language, if something goes wrong": "The fallback Language, if something goes wrong",
"Datable language": "Datable language",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ",
"Auto-translate": "Auto-translate",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "If this is checked, the Dashboard will translate itself to the Clients language, if available",
"Client Language-Switch": "Client Language-Switch",
@@ -214,9 +214,9 @@
"Charges the first hour worth of credits upon creating a server.": "Charges the first hour worth of credits upon creating a server.",
"Credits Display Name": "Credits Display Name",
"PHPMyAdmin URL": "PHPMyAdmin URL",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!",
"Pterodactyl URL": "Pterodactyl URL",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Enter the URL to your Pterodactyl installation. Without a trailing slash!",
"Pterodactyl API Key": "Pterodactyl API Key",
"Enter the API Key to your Pterodactyl installation.": "Enter the API Key to your Pterodactyl installation.",
"Force Discord verification": "Force Discord verification",
@@ -284,7 +284,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.",
"Max": "Max",
"Expires at": "Expires at",
- "Used \/ Uses": "Used \/ Uses",
+ "Used / Uses": "Used / Uses",
"Expires": "Expires",
"Sign in to start your session": "Sign in to start your session",
"Password": "Password",
@@ -354,7 +354,7 @@
"No nodes have been linked!": "No nodes have been linked!",
"No nests available!": "No nests available!",
"No eggs have been linked!": "No eggs have been linked!",
- "Software \/ Games": "Software \/ Games",
+ "Software / Games": "Software / Games",
"Please select software ...": "Please select software ...",
"---": "---",
"Specification ": "Specification ",
@@ -417,7 +417,6 @@
"Value": "Value",
"Edit Configuration": "Edit Configuration",
"Text Field": "Text Field",
- "Cancel": "Cancel",
"Save": "Save",
"Images and Icons may be cached, reload without cache to see your changes appear": "Images and Icons may be cached, reload without cache to see your changes appear",
"Enter your companys name": "Enter your companys name",
@@ -441,5 +440,14 @@
"pl": "Polish",
"zh": "Chinese",
"tr": "Turkish",
- "ru": "Russian"
+ "ru": "Russian",
+ "sv": "Swedish",
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed",
+ "Caution": "Caution",
+ "You can not see your Referral Code": "You can not see your Referral Code",
+ "SERVER NAME": "SERVER NAME",
+ "STORAGE": "STORAGE",
+ "Cancel": "Cancel"
}
diff --git a/lang/cs.json b/lang/cs.json
index 7f7235420..146670294 100644
--- a/lang/cs.json
+++ b/lang/cs.json
@@ -81,7 +81,7 @@
"Someone registered using your Code!": "Někdo se zaregistroval pomocí vašeho kódu!",
"Server Creation Error": "Chyba při vytváření serveru",
"Your servers have been suspended!": "Vaše servery byly pozastaveny!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "Pro opětovné spuštění vašich serverů dobijte prosím kredity.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "Pro opětovné spuštění vašich serverů dobijte prosím kredity.",
"Purchase credits": "Zakoupit kredity",
"If you have any questions please let us know.": "Máte-li jakékoli dotazy, dejte nám vědět.",
"Regards": "S pozdravem",
@@ -93,7 +93,7 @@
"Getting started!": "Začínáme!",
"Welcome to our dashboard": "Vítejte v našem ovládacím panelu",
"Verification": "Ověření",
- "You can verify your e-mail address and link\/verify your Discord account.": "Můžete ověřit svojí e-mail adresu a přiojit váš Discord účet.",
+ "You can verify your e-mail address and link/verify your Discord account.": "Můžete ověřit svojí e-mail adresu a přiojit váš Discord účet.",
"Information": "Informace",
"This dashboard can be used to create and delete servers": "Tento panel může použít pro vytvoření a mazání serverů",
"These servers can be used and managed on our pterodactyl panel": "Tyto servery můžete používat a spravovat v našem pterodactyl panelu",
@@ -114,7 +114,7 @@
"Token": "Token",
"Last used": "Naposledy použito",
"Are you sure you wish to delete?": "Opravdu si přejete odstranit?",
- "Nests": "Software\/hra",
+ "Nests": "Software/hra",
"Sync": "Synchronizovat",
"Active": "Aktivní",
"ID": "ID",
@@ -126,7 +126,7 @@
"Support server": "Server podpory",
"Documentation": "Dokumentace",
"Github": "GitHub",
- "Support ControlPanel": "Podpořit ControlPanel",
+ "Support CtrlPanel": "Podpořit CtrlPanel",
"Servers": "Servery",
"Total": "Celkem",
"Payments": "Platby",
@@ -174,10 +174,10 @@
"please create a file called \"install.lock\" in your dashboard Root directory. Otherwise no settings will be loaded!": "prosím vytvoř soubor který bude pojmenován install.lock v Kontrolním panelu (hlavní složka)\nPokud tak neuděláš, žádné změny nebudou načteny!",
"or click here": "nebo klikněte sem",
"Company Name": "Název společnosti",
- "Company Address": "Adresa Firmy",
+ "Company Adress": "Adresa Firmy",
"Company Phonenumber": "Telefon společnosti",
"VAT ID": "DIČ",
- "Company E-Mail Address": "E-mailová adresa společnosti",
+ "Company E-Mail Adress": "E-mailová adresa společnosti",
"Company Website": "Web společnosti",
"Invoice Prefix": "Prefix pro faktury",
"Enable Invoices": "Povolit faktury",
@@ -187,7 +187,7 @@
"Default language": "Výchozí jazyk",
"The fallback Language, if something goes wrong": "Záložní jazyk, kdyby se něco pokazilo",
"Datable language": "Jazyk tabulek",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "Kód jazyka datových tabulek.
Příklad:<\/strong> en-gb, fr_fr, de_de
Více informací: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "Kód jazyka datových tabulek.
Příklad: en-gb, fr_fr, de_de
Více informací: ",
"Auto-translate": "Automatický překlad",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "Pokud je tohle zaškrtlé, Panel bude přeložen do Jazyka klienta (pokud to je možné)",
"Client Language-Switch": "Povolit uživatelům změnu jazyka",
@@ -199,7 +199,7 @@
"Mail Username": "Uživatelské jméno pro e-mail",
"Mail Password": "E-mailové heslo",
"Mail Encryption": "Šifrování e-mailu",
- "Mail From Address": "E-mail odesílatele",
+ "Mail From Adress": "E-mail odesílatele",
"Mail From Name": "Název odešílatele",
"Discord Client-ID": "Discord Client-ID",
"Discord Client-Secret": "Discord Client-Secret",
@@ -243,9 +243,9 @@
"Charges the first hour worth of credits upon creating a server.": "Po vytvoření služby náčtuje ihned první hodinu.",
"Credits Display Name": "Název kreditů",
"PHPMyAdmin URL": "PHPMyAdmin URL",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "Vložte URL vaší instalace PHPmyAdmin. Bez koncového lomítka!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "Vložte URL vaší instalace PHPmyAdmin. Bez koncového lomítka!",
"Pterodactyl URL": "Pterodactyl URL",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Vložte URL vaší instalace Pterodactyl. Bez koncového lomítka!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Vložte URL vaší instalace Pterodactyl. Bez koncového lomítka!",
"Pterodactyl API Key": "Pterodactyl API klíč",
"Enter the API Key to your Pterodactyl installation.": "Zadejte API klíč Vaší Pterodactyl instalace.",
"Force Discord verification": "Vynutit ověření skrz Discord",
@@ -316,7 +316,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "Poukaz může být použit pouze jednou na uživatele. Počet použití upravuje počet různých uživatelů, kteří můžou poukaz použít.",
"Max": "Maximum",
"Expires at": "Vyprší",
- "Used \/ Uses": "Použito",
+ "Used / Uses": "Použito",
"Expires": "Vyprší",
"Sign in to start your session": "Pro pokračování se prosím přihlašte",
"Password": "Heslo",
@@ -386,9 +386,9 @@
"Sync now": "Synchronizovat nyní",
"No products available!": "Žádné dostupné balíčky!",
"No nodes have been linked!": "Nebyly propojeny žádné uzly!",
- "No nests available!": "Žádný dostupný software\/hry!",
+ "No nests available!": "Žádný dostupný software/hry!",
"No eggs have been linked!": "Nebyly nastaveny žádné distribuce!",
- "Software \/ Games": "Software\/hry",
+ "Software / Games": "Software/hry",
"Please select software ...": "Prosím zvolte software ...",
"---": "----",
"Specification ": "Specifikace ",
@@ -447,18 +447,26 @@
"Notes": "Poznámky",
"Amount in words": "Celkem slovy",
"Please pay until": "Splatné do",
- "cs": "Čeština",
- "de": "Němčina",
- "en": "Angličtina",
- "es": "Španělština",
- "fr": "Francouzština",
- "hi": "Hindština",
- "it": "Italština",
- "nl": "Holandština",
- "pl": "Polština",
- "zh": "Čínština",
- "tr": "Turečtina",
- "ru": "Ruština",
- "sv": "Švédština",
- "sk": "Slovensky"
+ "cs": "Czech",
+ "de": "German",
+ "en": "English",
+ "es": "Spanish",
+ "fr": "French",
+ "hi": "Hindi",
+ "it": "Italian",
+ "nl": "Dutch",
+ "pl": "Polish",
+ "zh": "Chinese",
+ "tr": "Turkish",
+ "ru": "Russian",
+ "sv": "Swedish",
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "The system was unable to update your server product. Please try again later or contact support.": "Systém nebyl schopen změnit Váš balíček serveru. Prosím zkuste to znovu nebo kontaktujte podporu.",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "Aktualizace/snížení vašeho serveru resetuje váš fakturační cyklus na aktuální. Vaše přeplacené kredity budou vráceny. Cena za nový fakturační cyklus bude odečtena",
+ "Caution": "Upozornění",
+ "You can not see your Referral Code": "Nemůžete vidět váš doporučující kód",
+ "SERVER NAME": "NÁZEV SERVERU",
+ "STORAGE": "ZAVAZADLO",
+ "Cancel": "Zrušit"
}
diff --git a/lang/de.json b/lang/de.json
index 9107634ba..2460899a3 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -126,7 +126,7 @@
"Support server": "Discord Server",
"Documentation": "Dokumentation",
"Github": "Github",
- "Support ControlPanel": "Unterstütze Controlpanel.gg",
+ "Support CtrlPanel": "Unterstütze CtrlPanel.gg",
"Servers": "Server",
"Total": "Gesamt",
"Payments": "Zahlungen",
@@ -174,10 +174,10 @@
"please create a file called \"install.lock\" in your dashboard Root directory. Otherwise no settings will be loaded!": "Bitte erstellen Sie eine Datei mit dem Namen \"install.lock\" in Ihrem Dashboard-Root-Verzeichnis. Sonst werden keine Einstellungen geladen!",
"or click here": "oder klicke hier",
"Company Name": "Firmenname",
- "Company Address": "Firmenadresse",
+ "Company Adress": "Firmenadresse",
"Company Phonenumber": "Firmen Telefonnummer",
"VAT ID": "Umsatzsteuer-ID",
- "Company E-Mail Address": "Firmen E-Mail Adresse",
+ "Company E-Mail Adress": "Firmen E-Mail Adresse",
"Company Website": "Firmenwebseite",
"Invoice Prefix": "Rechnungspräfix",
"Enable Invoices": "Rechnungen aktivieren",
@@ -199,7 +199,7 @@
"Mail Username": "E-Mail Nutzername",
"Mail Password": "E-Mail Passwort",
"Mail Encryption": "E-Mail Verschlüsselungsart",
- "Mail From Address": "Absender E-Mailadresse",
+ "Mail From Adress": "Absender E-Mailadresse",
"Mail From Name": "Absender E-Mailname",
"Discord Client-ID": "Discord Client-ID",
"Discord Client-Secret": "DIscord Client-Secret",
@@ -447,21 +447,48 @@
"Notes": "Notizen",
"Amount in words": "Betrag in Worten",
"Please pay until": "Zahlbar bis",
- "cs": "Tschechisch",
- "de": "Deutsch",
- "en": "Englisch",
- "es": "Spanisch",
- "fr": "Französisch",
- "hi": "Indisch",
- "it": "Italienisch",
- "nl": "Niederländisch",
- "pl": "Polnisch",
- "zh": "Chinesisch",
- "tr": "Türkisch",
- "ru": "Russisch",
- "sv": "Schwedisch",
- "sk": "Slowakisch",
- "Imprint": "Impressum",
- "Privacy": "Datenschutz",
- "Privacy Policy": "Datenschutzerklärung"
+ "cs": "Czech",
+ "de": "German",
+ "en": "English",
+ "es": "Spanish",
+ "fr": "French",
+ "hi": "Hindi",
+ "it": "Italian",
+ "nl": "Dutch",
+ "pl": "Polish",
+ "zh": "Chinese",
+ "tr": "Turkish",
+ "ru": "Russian",
+ "sv": "Swedish",
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "hourly": "Stündlich",
+ "monthly": "Monatlich",
+ "yearly": "Jährlich",
+ "daily": "Täglich",
+ "weekly": "Wöchentlich",
+ "quarterly": "Vierteljährlich",
+ "half-annually": "Halbjährlich",
+ "annually": "Jährlich",
+ "Suspended": "Gesperrt",
+ "Cancelled": "Gekündigt",
+ "An exception has occurred while trying to cancel the server": "Ein Fehler ist aufgetreten beim Versuch, den Server zu kündigen",
+ "This will cancel your current server to the next billing period. It will get suspended when the current period runs out.": "Dies wird Ihren aktuellen Server zur nächsten Abrechnungsperiode kündigen. Er wird beim Ablauf der aktuellen Periode gesperrt.",
+ "This is an irreversible action, all files of this server will be removed. No funds will get refunded. We recommend deleting the server when server is suspended.": "Dies ist eine irreversiblen Aktion, alle Dateien dieses Servers werden gelöscht. Keine Rückerstattung!. Wir empfehlen, den Server zu löschen, wenn er gesperrt ist.",
+ "Cancel Server?": "Server kündigen?",
+ "Delete Server?": "Server löschen?",
+ "Billing Period": "Abrechnungsperiode",
+ "Next Billing Cycle": "Nächste Abrechnungsperiode",
+ "Manage Server": "Server verwalten",
+ "Delete Server": "Server löschen",
+ "Cancel Server": "Server kündigen",
+ "Yes, cancel it!": "Ja, löschen!",
+ "No, abort!": "Abbrechen",
+ "Billing period": "Abrechnungsperiode",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "Das Upgrade/Downgrade Ihres Servers wird Ihre Abrechnungsperiode auf \"jetzt\" zurücksetzen. Ihre überzahlten Credits werden erstattet. Der Preis für die neue Abrechnungsperiode wird abgebucht.",
+ "Caution": "Achtung",
+ "You can not see your Referral Code": "Sie können Ihren Empfehlungscode nicht sehen",
+ "SERVER NAME": "SERVERNAMEN",
+ "STORAGE": "STORAGE",
+ "Cancel": "Stornieren"
}
diff --git a/lang/en.json b/lang/en.json
index bbdabf014..b468f14f7 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -10,10 +10,6 @@
"Everything is good!": "Everything is good!",
"System settings have not been updated!": "System settings have not been updated!",
"System settings updated!": "System settings updated!",
- "Discount": "Discount",
- "The product you chose can't be purchased with this payment method. The total amount is too small. Please buy a bigger amount or try a different payment method.": "The product you chose can't be purchased with this payment method. The total amount is too small. Please buy a bigger amount or try a different payment method.",
- "Tax": "Tax",
- "Your payment has been canceled!": "Your payment has been canceled!",
"api key created!": "api key created!",
"api key updated!": "api key updated!",
"api key has been removed!": "api key has been removed!",
@@ -24,9 +20,11 @@
"Invoice does not exist on filesystem!": "Invoice does not exist on filesystem!",
"unknown": "unknown",
"Pterodactyl synced": "Pterodactyl synced",
- "An error ocured. Please try again.": "An error ocured. Please try again.",
"Your credit balance has been increased!": "Your credit balance has been increased!",
- "Unknown user": "Unknown user",
+ "Your payment is being processed!": "Your payment is being processed!",
+ "Your payment has been canceled!": "Your payment has been canceled!",
+ "Payment method": "Payment method",
+ "Invoice": "Invoice",
"Download": "Download",
"Product has been created!": "Product has been created!",
"Product has been updated!": "Product has been updated!",
@@ -36,10 +34,6 @@
"Server removed": "Server removed",
"An exception has occurred while trying to remove a resource \"": "An exception has occurred while trying to remove a resource \"",
"Server has been updated!": "Server has been updated!",
- "renamed": "renamed",
- "servers": "servers",
- "deleted": "deleted",
- "old servers": "old servers",
"Unsuspend": "Unsuspend",
"Suspend": "Suspend",
"Store item has been created!": "Store item has been created!",
@@ -75,15 +69,10 @@
"Close": "Close",
"Target User already in blacklist. Reason updated": "Target User already in blacklist. Reason updated",
"Change Status": "Change Status",
- "partner has been created!": "partner has been created!",
- "partner has been updated!": "partner has been updated!",
- "partner has been removed!": "partner has been removed!",
- "Default": "Default",
- "Account permanently deleted!": "Account permanently deleted!",
"Profile updated": "Profile updated",
"Server limit reached!": "Server limit reached!",
+ "The chosen location doesn't have the required memory or disk left to allocate this product.": "The chosen location doesn't have the required memory or disk left to allocate this product.",
"You are required to verify your email address before you can create a server.": "You are required to verify your email address before you can create a server.",
- "The system administrator has blocked the creation of new servers.": "The system administrator has blocked the creation of new servers.",
"You are required to link your discord account before you can create a server.": "You are required to link your discord account before you can create a server.",
"Server created": "Server created",
"No allocations satisfying the requirements for automatic deployment on this node were found.": "No allocations satisfying the requirements for automatic deployment on this node were found.",
@@ -93,7 +82,9 @@
"Not Enough Balance for Upgrade": "Not Enough Balance for Upgrade",
"You are required to verify your email address before you can purchase credits.": "You are required to verify your email address before you can purchase credits.",
"You are required to link your discord account before you can purchase Credits": "You are required to link your discord account before you can purchase Credits",
+ "You can't make a ticket because you're on the blacklist for a reason: '\" . $check->reason . \"": "You can't make a ticket because you're on the blacklist for a reason: '\" . $check->reason . \"",
"A ticket has been opened, ID: #": "A ticket has been opened, ID: #",
+ "You can't reply a ticket because you're on the blacklist for a reason: '\" . $check->reason . \"": "You can't reply a ticket because you're on the blacklist for a reason: '\" . $check->reason . \"",
"EXPIRED": "EXPIRED",
"Payment Confirmation": "Payment Confirmation",
"Payment Confirmed!": "Payment Confirmed!",
@@ -109,7 +100,7 @@
"Someone registered using your Code!": "Someone registered using your Code!",
"Server Creation Error": "Server Creation Error",
"Your servers have been suspended!": "Your servers have been suspended!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "To automatically re-enable your server\/s, you need to purchase more credits.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "To automatically re-enable your server/s, you need to purchase more credits.",
"Purchase credits": "Purchase credits",
"If you have any questions please let us know.": "If you have any questions please let us know.",
"Regards": "Regards",
@@ -121,14 +112,12 @@
"Getting started!": "Getting started!",
"Welcome to our dashboard": "Welcome to our dashboard",
"Verification": "Verification",
- "You can verify your e-mail address and link\/verify your Discord account.": "You can verify your e-mail address and link\/verify your Discord account.",
+ "You can verify your e-mail address and link/verify your Discord account.": "You can verify your e-mail address and link/verify your Discord account.",
"Information": "Information",
"This dashboard can be used to create and delete servers": "This dashboard can be used to create and delete servers",
"These servers can be used and managed on our pterodactyl panel": "These servers can be used and managed on our pterodactyl panel",
"If you have any questions, please join our Discord server and #create-a-ticket": "If you have any questions, please join our Discord server and #create-a-ticket",
"We hope you can enjoy this hosting experience and if you have any suggestions please let us know": "We hope you can enjoy this hosting experience and if you have any suggestions please let us know",
- "Payment method": "Payment method",
- "Invoice": "Invoice",
"Activity Logs": "Activity Logs",
"Dashboard": "Dashboard",
"No recent activity from cronjobs": "No recent activity from cronjobs",
@@ -153,10 +142,6 @@
"Nodes": "Nodes",
"Location": "Location",
"Admin Overview": "Admin Overview",
- "Version Outdated:": "Version Outdated:",
- "You are running on": "You are running on",
- "The latest Version is": "The latest Version is",
- "Consider updating now": "Consider updating now",
"Support server": "Support server",
"Documentation": "Documentation",
"Github": "Github",
@@ -165,8 +150,6 @@
"Total": "Total",
"Payments": "Payments",
"Pterodactyl": "Pterodactyl",
- "Warning!": "Warning!",
- "Some nodes got deleted on pterodactyl only. Please click the sync button above.": "Some nodes got deleted on pterodactyl only. Please click the sync button above.",
"Resources": "Resources",
"Count": "Count",
"Locations": "Locations",
@@ -177,7 +160,7 @@
"Title": "Title",
"User": "User",
"Last updated": "Last updated",
- "Ctrlpanel.gg": "Ctrlpanel.gg",
+ "CtrlPanel.gg": "CtrlPanel.gg",
"Version": "Version",
"Individual nodes": "Individual nodes",
"You reached the Pterodactyl perPage limit. Please make sure to set it higher than your server count.": "You reached the Pterodactyl perPage limit. Please make sure to set it higher than your server count.",
@@ -245,9 +228,6 @@
"Link your products to nodes and eggs to create dynamic pricing for each option": "Link your products to nodes and eggs to create dynamic pricing for each option",
"This product will only be available for these nodes": "This product will only be available for these nodes",
"This product will only be available for these eggs": "This product will only be available for these eggs",
- "No Eggs or Nodes shown?": "No Eggs or Nodes shown?",
- "Sync now": "Sync now",
- "Min Credits": "Min Credits",
"Product": "Product",
"CPU": "CPU",
"Updated at": "Updated at",
@@ -256,9 +236,6 @@
"You usually do not need to change anything here": "You usually do not need to change anything here",
"Edit Server": "Edit Server",
"Server identifier": "Server identifier",
- "Change the server identifier on ctrlpanel to match a pterodactyl server.": "Change the server identifier on ctrlpanel to match a pterodactyl server.",
- "Server owner": "Server owner",
- "Change the current server owner on ctrlpanel and pterodactyl.": "Change the current server owner on ctrlpanel and pterodactyl.",
"Server id": "Server id",
"Config": "Config",
"Suspended at": "Suspended at",
@@ -267,10 +244,10 @@
"please create a file called \"install.lock\" in your dashboard Root directory. Otherwise no settings will be loaded!": "please create a file called \"install.lock\" in your dashboard Root directory. Otherwise no settings will be loaded!",
"or click here": "or click here",
"Company Name": "Company Name",
- "Company Address": "Company Address",
+ "Company Adress": "Company Adress",
"Company Phonenumber": "Company Phonenumber",
"VAT ID": "VAT ID",
- "Company E-Mail Address": "Company E-Mail Address",
+ "Company E-Mail Adress": "Company E-Mail Adress",
"Company Website": "Company Website",
"Invoice Prefix": "Invoice Prefix",
"Enable Invoices": "Enable Invoices",
@@ -280,7 +257,7 @@
"Default language": "Default language",
"The fallback Language, if something goes wrong": "The fallback Language, if something goes wrong",
"Datable language": "Datable language",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ",
"Auto-translate": "Auto-translate",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "If this is checked, the Dashboard will translate itself to the Clients language, if available",
"Client Language-Switch": "Client Language-Switch",
@@ -292,7 +269,7 @@
"Mail Username": "Mail Username",
"Mail Password": "Mail Password",
"Mail Encryption": "Mail Encryption",
- "Mail From Address": "Mail From Address",
+ "Mail From Adress": "Mail From Adress",
"Mail From Name": "Mail From Name",
"Discord Client-ID": "Discord Client-ID",
"Discord Client-Secret": "Discord Client-Secret",
@@ -303,11 +280,7 @@
"Enable ReCaptcha": "Enable ReCaptcha",
"ReCaptcha Site-Key": "ReCaptcha Site-Key",
"ReCaptcha Secret-Key": "ReCaptcha Secret-Key",
- "Your Recaptcha": "Your Recaptcha",
- "Referral System": "Referral System",
"Enable Referral": "Enable Referral",
- "Always give commission": "Always give commission",
- "Should users recieve the commission only for the first payment, or for every payment?": "Should users recieve the commission only for the first payment, or for every payment?",
"Mode": "Mode",
"Should a reward be given if a new User registers or if a new user buys credits": "Should a reward be given if a new User registers or if a new user buys credits",
"Commission": "Commission",
@@ -323,10 +296,7 @@
"Everyone": "Everyone",
"Clients": "Clients",
"Enable Ticketsystem": "Enable Ticketsystem",
- "Notify on Ticket creation": "Notify on Ticket creation",
- "Who will receive an E-Mail when a new Ticket is created": "Who will receive an E-Mail when a new Ticket is created",
- "Admins": "Admins",
- "Moderators": "Moderators",
+ "It is not possible to purchase via MercadoPago: APP_URL does not have HTTPS, required by Mercado Pago":"It is not possible to purchase via MercadoPago: APP_URL does not have HTTPS, required by Mercado Pago",
"PayPal Client-ID": "PayPal Client-ID",
"PayPal Secret-Key": "PayPal Secret-Key",
"PayPal Sandbox Client-ID": "PayPal Sandbox Client-ID",
@@ -339,20 +309,15 @@
"Payment Methods": "Payment Methods",
"Tax Value in %": "Tax Value in %",
"System": "System",
- "Show Terms of Service": "Show Terms of Service",
- "Show Imprint": "Show Imprint",
- "Show Privacy Policy": "Show Privacy Policy",
"Register IP Check": "Register IP Check",
"Prevent users from making multiple accounts using the same IP address.": "Prevent users from making multiple accounts using the same IP address.",
"Charge first hour at creation": "Charge first hour at creation",
"Charges the first hour worth of credits upon creating a server.": "Charges the first hour worth of credits upon creating a server.",
"Credits Display Name": "Credits Display Name",
"PHPMyAdmin URL": "PHPMyAdmin URL",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!",
"Pterodactyl URL": "Pterodactyl URL",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>",
- "Pterodactyl API perPage limit": "Pterodactyl API perPage limit",
- "The Pterodactyl API perPage limit. It is necessary to set it higher than your server count.": "The Pterodactyl API perPage limit. It is necessary to set it higher than your server count.",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Enter the URL to your Pterodactyl installation. Without a trailing slash!",
"Pterodactyl API Key": "Pterodactyl API Key",
"Enter the API Key to your Pterodactyl installation.": "Enter the API Key to your Pterodactyl installation.",
"Pterodactyl Admin-Account API Key": "Pterodactyl Admin-Account API Key",
@@ -360,8 +325,6 @@
"Test API": "Test API",
"Force Discord verification": "Force Discord verification",
"Force E-Mail verification": "Force E-Mail verification",
- "Creation of new users": "Creation of new users",
- "If unchecked, it will disable the registration of new users in the system, and this will also apply to the API.": "If unchecked, it will disable the registration of new users in the system, and this will also apply to the API.",
"Initial Credits": "Initial Credits",
"Initial Server Limit": "Initial Server Limit",
"Credits Reward Amount - Discord": "Credits Reward Amount - Discord",
@@ -370,38 +333,13 @@
"Server Limit Increase - E-Mail": "Server Limit Increase - E-Mail",
"Server Limit after Credits Purchase": "Server Limit after Credits Purchase",
"Server": "Server",
- "Enable upgrade\/downgrade of servers": "Enable upgrade\/downgrade of servers",
- "Allow upgrade\/downgrade to a new product for the given server": "Allow upgrade\/downgrade to a new product for the given server",
- "Creation of new servers": "Creation of new servers",
- "If unchecked, it will disable the creation of new servers for regular users and system moderators, this has no effect for administrators.": "If unchecked, it will disable the creation of new servers for regular users and system moderators, this has no effect for administrators.",
"Server Allocation Limit": "Server Allocation Limit",
"The maximum amount of allocations to pull per node for automatic deployment, if more allocations are being used than this limit is set to, no new servers can be created!": "The maximum amount of allocations to pull per node for automatic deployment, if more allocations are being used than this limit is set to, no new servers can be created!",
- "Minimum credits": "Minimum credits",
- "The minimum amount of credits user has to have to create a server. Can be overridden by package limits.": "The minimum amount of credits user has to have to create a server. Can be overridden by package limits.",
- "SEO": "SEO",
- "SEO Title": "SEO Title",
- "An SEO title tag must contain your target keyword. This tells both Google and searchers that your web page is relevant to this search query!": "An SEO title tag must contain your target keyword. This tells both Google and searchers that your web page is relevant to this search query!",
- "SEO Description": "SEO Description",
- "The SEO site description represents your homepage. Search engines show this description in search results for your homepage if they dont find content more relevant to a visitors search terms.": "The SEO site description represents your homepage. Search engines show this description in search results for your homepage if they dont find content more relevant to a visitors search terms.",
"Design": "Design",
- "Theme": "Theme",
"Enable Logo on Loginpage": "Enable Logo on Loginpage",
"Select panel icon": "Select panel icon",
"Select Login-page Logo": "Select Login-page Logo",
"Select panel favicon": "Select panel favicon",
- "Enable the Alert Message on Homepage": "Enable the Alert Message on Homepage",
- "Alert Color": "Alert Color",
- "Blue": "Blue",
- "Grey": "Grey",
- "Green": "Green",
- "Red": "Red",
- "Orange": "Orange",
- "Cyan": "Cyan",
- "Alert Message (HTML might be used)": "Alert Message (HTML might be used)",
- "Message of the day": "Message of the day",
- "Enable the MOTD on the Homepage": "Enable the MOTD on the Homepage",
- "Enable the Useful-Links section": "Enable the Useful-Links section",
- "MOTD-Text": "MOTD-Text",
"Store": "Store",
"Server Slots": "Server Slots",
"Currency code": "Currency code",
@@ -457,18 +395,14 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.",
"Max": "Max",
"Expires at": "Expires at",
- "Used \/ Uses": "Used \/ Uses",
+ "Used / Uses": "Used / Uses",
"Expires": "Expires",
"Sign in to start your session": "Sign in to start your session",
- "Email or Username": "Email or Username",
"Password": "Password",
"Remember Me": "Remember Me",
"Sign In": "Sign In",
"Forgot Your Password?": "Forgot Your Password?",
"Register a new membership": "Register a new membership",
- "Imprint": "Imprint",
- "Privacy": "Privacy",
- "Terms of Service": "Terms of Service",
"Please confirm your password before continuing.": "Please confirm your password before continuing.",
"You forgot your password? Here you can easily retrieve a new password.": "You forgot your password? Here you can easily retrieve a new password.",
"Request new password": "Request new password",
@@ -476,10 +410,7 @@
"You are only one step a way from your new password, recover your password now.": "You are only one step a way from your new password, recover your password now.",
"Retype password": "Retype password",
"Change password": "Change password",
- "The system administrator has blocked the registration of new users": "The system administrator has blocked the registration of new users",
- "Back": "Back",
"Referral code": "Referral code",
- "I agree to the": "I agree to the",
"Register": "Register",
"I already have a membership": "I already have a membership",
"Verify Your Email Address": "Verify Your Email Address",
@@ -489,17 +420,6 @@
"click here to request another": "click here to request another",
"per month": "per month",
"Out of Credits in": "Out of Credits in",
- "Partner program": "Partner program",
- "Your referral URL": "Your referral URL",
- "Click to copy": "Click to copy",
- "Number of referred users:": "Number of referred users:",
- "Your discount": "Your discount",
- "Discount for your new users": "Discount for your new users",
- "Reward per registered user": "Reward per registered user",
- "New user payment commision": "New user payment commision",
- "Make a purchase to reveal your referral-URL": "Make a purchase to reveal your referral-URL",
- "URL copied to clipboard": "URL copied to clipboard",
- "Privacy Policy": "Privacy Policy",
"Home": "Home",
"Language": "Language",
"See all Notifications": "See all Notifications",
@@ -517,6 +437,7 @@
"Management": "Management",
"Other": "Other",
"Logs": "Logs",
+ "Warning!": "Warning!",
"You have not yet verified your email address": "You have not yet verified your email address",
"Click here to resend verification email": "Click here to resend verification email",
"Please contact support If you didnt receive your verification email.": "Please contact support If you didnt receive your verification email.",
@@ -530,10 +451,9 @@
"Created At": "Created At",
"Add To Blacklist": "Add To Blacklist",
"please make the best of it": "please make the best of it",
- "Please note, the blacklist will make the user unable to make a ticket\/reply again": "Please note, the blacklist will make the user unable to make a ticket\/reply again",
+ "Please note, the blacklist will make the user unable to make a ticket/reply again": "Please note, the blacklist will make the user unable to make a ticket/reply again",
"Ticket": "Ticket",
"Category": "Category",
- "Priority": "Priority",
"Last Updated": "Last Updated",
"Comment": "Comment",
"All notifications": "All notifications",
@@ -544,7 +464,6 @@
"Please contact support If you face any issues.": "Please contact support If you face any issues.",
"Due to system settings you are required to verify your discord account!": "Due to system settings you are required to verify your discord account!",
"It looks like this hasnt been set-up correctly! Please contact support.": "It looks like this hasnt been set-up correctly! Please contact support.",
- "Permanently delete my account": "Permanently delete my account",
"Change Password": "Change Password",
"Current Password": "Current Password",
"Link your discord account!": "Link your discord account!",
@@ -553,19 +472,16 @@
"You are verified!": "You are verified!",
"Re-Sync Discord": "Re-Sync Discord",
"Save Changes": "Save Changes",
- "Are you sure you want to permanently delete your account and all of your servers?": "Are you sure you want to permanently delete your account and all of your servers?",
- "Delete my account": "Delete my account",
- "Account has been destroyed": "Account has been destroyed",
- "Account was NOT deleted.": "Account was NOT deleted.",
+ "URL copied to clipboard": "URL copied to clipboard",
"Server configuration": "Server configuration",
- "here": "here",
"Make sure to link your products to nodes and eggs.": "Make sure to link your products to nodes and eggs.",
"There has to be at least 1 valid product for server creation": "There has to be at least 1 valid product for server creation",
+ "Sync now": "Sync now",
"No products available!": "No products available!",
"No nodes have been linked!": "No nodes have been linked!",
"No nests available!": "No nests available!",
"No eggs have been linked!": "No eggs have been linked!",
- "Software \/ Games": "Software \/ Games",
+ "Software / Games": "Software / Games",
"Please select software ...": "Please select software ...",
"---": "---",
"Specification ": "Specification ",
@@ -574,9 +490,6 @@
"MB": "MB",
"MySQL": "MySQL",
"ports": "ports",
- "Required": "Required",
- "to create this server": "to create this server",
- "Server cant fit on this Node": "Server cant fit on this Node",
"Not enough": "Not enough",
"Create server": "Create server",
"Please select a node ...": "Please select a node ...",
@@ -600,20 +513,20 @@
"Hourly Price": "Hourly Price",
"Monthly Price": "Monthly Price",
"MySQL Database": "MySQL Database",
- "Upgrade \/ Downgrade": "Upgrade \/ Downgrade",
- "Upgrade\/Downgrade Server": "Upgrade\/Downgrade Server",
+ "To enable the upgrade/downgrade system, please set your Ptero Admin-User API Key in the Settings!": "To enable the upgrade/downgrade system, please set your Ptero Admin-User API Key in the Settings!",
+ "Upgrade / Downgrade": "Upgrade / Downgrade",
+ "Upgrade/Downgrade Server": "Upgrade/Downgrade Server",
"FOR DOWNGRADE PLEASE CHOOSE A PLAN BELOW YOUR PLAN": "FOR DOWNGRADE PLEASE CHOOSE A PLAN BELOW YOUR PLAN",
"YOUR PRODUCT": "YOUR PRODUCT",
"Select the product": "Select the product",
- "Server can´t fit on this node": "Server can´t fit on this node",
"Once the Upgrade button is pressed, we will automatically deduct the amount for the first hour according to the new product from your credits": "Once the Upgrade button is pressed, we will automatically deduct the amount for the first hour according to the new product from your credits",
- "Server will be automatically restarted once upgraded": "Server will be automatically restarted once upgraded",
"Change Product": "Change Product",
"Delete Server": "Delete Server",
"This is an irreversible action, all files of this server will be removed!": "This is an irreversible action, all files of this server will be removed!",
"Date": "Date",
"Subtotal": "Subtotal",
"Amount Due": "Amount Due",
+ "Tax": "Tax",
"Submit Payment": "Submit Payment",
"Purchase": "Purchase",
"There are no store products!": "There are no store products!",
@@ -632,6 +545,7 @@
"VAT Code": "VAT Code",
"Phone": "Phone",
"Units": "Units",
+ "Discount": "Discount",
"Total discount": "Total discount",
"Taxable amount": "Taxable amount",
"Tax rate": "Tax rate",
@@ -653,5 +567,95 @@
"ru": "Russian",
"sv": "Swedish",
"sk": "Slovakish",
- "hu": "Hungarian"
-}
\ No newline at end of file
+ "hu": "Hungarian",
+ "hourly": "Hourly",
+ "monthly": "Monthly",
+ "yearly": "Yearly",
+ "daily": "Daily",
+ "weekly": "Weekly",
+ "quarterly": "Quarterly",
+ "half-annually": "Half-annually",
+ "annually": "Annually",
+ "Suspended": "Suspended",
+ "Cancelled": "Cancelled",
+ "An exception has occurred while trying to cancel the server": "An exception has occurred while trying to cancel the server",
+ "This will cancel your current server to the next billing period. It will get suspended when the current period runs out.": "This will cancel your current server to the next billing period. It will get suspended when the current period runs out.",
+ "Cancel Server?": "Cancel Server?",
+ "Delete Server?": "Delete Server?",
+ "This is an irreversible action, all files of this server will be removed. No funds will get refunded. We recommend deleting the server when server is suspended.": "This is an irreversible action, all files of this server will be removed. No funds will get refunded. We recommend deleting the server when server is suspended.",
+ "Billing Period": "Billing Period",
+ "Next Billing Cycle": "Next Billing Cycle",
+ "Manage Server": "Manage Server",
+ "Cancel Server": "Cancel Server",
+ "Yes, cancel it!": "Yes, cancel it!",
+ "No, abort!": "No, abort!",
+ "Billing period": "Billing period",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed",
+ "Caution": "Caution",
+ "Only one of the two code inputs must be provided.": "Only one of the two code inputs must be provided.",
+ "At least one of the two code inputs must be provided.": "At least one of the two code inputs must be provided.",
+ "The coupon's was registered successfully.": "The coupon's was registered successfully.",
+ "coupon has been updated!": "coupon has been updated!",
+ "coupon has been removed!": "coupon has been removed!",
+ "Never": "Never",
+ "Legal pages updated": "Legal pages updated",
+ "Partner already exists": "Partner already exists",
+ "partner has been created!": "partner has been created!",
+ "partner has been updated!": "partner has been updated!",
+ "partner has been removed!": "partner has been removed!",
+ "Unknown user": "Unknown user",
+ "Default": "Default",
+ "Oops, something went wrong! Please try again later.": "Oops, something went wrong! Please try again later.",
+ "enabled": "enabled",
+ "disabled": "disabled",
+ "Role saved": "Role saved",
+ "Role updated. Name and Permissions of this Role cannot be changed": "Role updated. Name and Permissions of this Role cannot be changed",
+ "Role updated. Name of this Role cannot be changed": "Role updated. Name of this Role cannot be changed",
+ "Role removed": "Role removed",
+ "Server cancelled": "Server cancelled",
+ "An exception has occurred while trying to cancel the server\"": "An exception has occurred while trying to cancel the server\"",
+ "renamed": "renamed",
+ "servers": "servers",
+ "deleted": "deleted",
+ "old servers": "old servers",
+ "Category created": "Category created",
+ "Category name updated": "Category name updated",
+ "Category removed": "Category removed",
+ "Ticket not found on the server. It potentially got deleted earlier": "Ticket not found on the server. It potentially got deleted earlier",
+ "A ticket has been reopened, ID: #": "A ticket has been reopened, ID: #",
+ "User not found on the server. Check on the admin database or try again later.": "User not found on the server. Check on the admin database or try again later.",
+ "Reopen": "Reopen",
+ "User not found on the server. Check the admin database or try again later.": "User not found on the server. Check the admin database or try again later.",
+ "You can not delete the last admin!": "You can not delete the last admin!",
+ "User does not have the right permissions.": "User does not have the right permissions.",
+ "Account permanently deleted!": "Account permanently deleted!",
+ "The system administrator has blocked the creation of new servers.": "The system administrator has blocked the creation of new servers.",
+ "An exception has occurred while trying to remove a resource\"": "An exception has occurred while trying to remove a resource\"",
+ "This is not your Server!": "This is not your Server!",
+ "The system was unable to update your server product. Please try again later or contact support.": "The system was unable to update your server product. Please try again later or contact support.",
+ "This coupon does not exist.": "This coupon does not exist.",
+ "This coupon has reached the maximum amount of uses.": "This coupon has reached the maximum amount of uses.",
+ "This coupon has expired.": "This coupon has expired.",
+ "You have reached the maximum uses of this coupon.": "You have reached the maximum uses of this coupon.",
+ "The coupon you are trying to use would give you 100% off, so it cannot be used for this product, sorry.": "The coupon you are trying to use would give you 100% off, so it cannot be used for this product, sorry.",
+ "Select": "Select",
+ "Selected": "Selected",
+ "Pricing": "Pricing",
+ "Product details": "Product details",
+ "Total Amount": "Total Amount",
+ "Partner Discount": "Partner Discount",
+ "Coupon Discount": "Coupon Discount",
+ "Enter your coupon here...": "Enter your coupon here...",
+ "Coupon": "Coupon",
+ "Checkout details": "Checkout details",
+ "per 6 Months": "per 6 Months",
+ "per 3 Months": "per 3 Months",
+ "per Year": "per Year",
+ "per Week": "per Week",
+ "per Day": "per Day",
+ "You can not see your Referral Code": "You can not see your Referral Code",
+ "SERVER NAME": "SERVER NAME",
+ "STORAGE": "STORAGE",
+ "Cancel": "Cancel",
+ "Buy more": "Buy more"
+}
diff --git a/lang/es.json b/lang/es.json
index 400a46f49..f4c3121a0 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -81,7 +81,7 @@
"Someone registered using your Code!": "Someone registered using your Code!",
"Server Creation Error": "Error de creación del servidor",
"Your servers have been suspended!": "¡Sus servidores han sido suspendidos!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "Para volver a habilitar automáticamente sus servidores, debe comprar más créditos.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "Para volver a habilitar automáticamente sus servidores, debe comprar más créditos.",
"Purchase credits": "Comprar Créditos",
"If you have any questions please let us know.": "Si tienes más preguntas, por favor háznoslas saber.",
"Regards": "Atentamente",
@@ -93,7 +93,7 @@
"Getting started!": "¡Empezando!",
"Welcome to our dashboard": "Welcome to our dashboard",
"Verification": "Verification",
- "You can verify your e-mail address and link\/verify your Discord account.": "You can verify your e-mail address and link\/verify your Discord account.",
+ "You can verify your e-mail address and link/verify your Discord account.": "You can verify your e-mail address and link/verify your Discord account.",
"Information": "Information",
"This dashboard can be used to create and delete servers": "This dashboard can be used to create and delete servers",
"These servers can be used and managed on our pterodactyl panel": "These servers can be used and managed on our pterodactyl panel",
@@ -126,7 +126,7 @@
"Support server": "Servidor de Ayuda",
"Documentation": "Documentación",
"Github": "GitHub",
- "Support ControlPanel": "Apoya ControlPanel",
+ "Support CtrlPanel": "Apoya CtrlPanel",
"Servers": "Servidores",
"Total": "Total",
"Payments": "Pagos",
@@ -174,10 +174,10 @@
"please create a file called \"install.lock\" in your dashboard Root directory. Otherwise no settings will be loaded!": "cree un archivo llamado \"install.lock\" en el directorio Raíz de su tablero. ¡De lo contrario, no se cargará ninguna configuración!",
"or click here": "o haga clic aquí",
"Company Name": "Nombre Empresa",
- "Company Address": "Dirección de la Empresa",
+ "Company Adress": "Dirección de la Empresa",
"Company Phonenumber": "Número de teléfono de la empresa",
"VAT ID": "ID de IVA",
- "Company E-Mail Address": "Dirección de correo electrónico de la empresa",
+ "Company E-Mail Adress": "Dirección de correo electrónico de la empresa",
"Company Website": "Página Web de la empresa",
"Invoice Prefix": "Prefijo de factura",
"Enable Invoices": "Habilitar facturas",
@@ -187,7 +187,7 @@
"Default language": "Idioma predeterminado",
"The fallback Language, if something goes wrong": "El lenguaje alternativo, si algo sale mal",
"Datable language": "Lenguaje de tabla de datos",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "El código de idioma de las tablas de datos.
Ejemplo:<\/strong> en-gb, fr_fr, de_de
Más información: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "El código de idioma de las tablas de datos.
Ejemplo: en-gb, fr_fr, de_de
Más información: ",
"Auto-translate": "Traducir automáticamente",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "Si está marcado, el Tablero se traducirá solo al idioma del Cliente, si está disponible",
"Client Language-Switch": "Cambio de idioma del cliente",
@@ -199,7 +199,7 @@
"Mail Username": "Nombre de usuario del correo",
"Mail Password": "Contraseña de correo",
"Mail Encryption": "Cifrado de correo",
- "Mail From Address": "Dirección del correo",
+ "Mail From Adress": "Dirección del correo",
"Mail From Name": "Nombre del correo",
"Discord Client-ID": "Discord ID-Cliente",
"Discord Client-Secret": "Discord Secreto-Cliente",
@@ -243,9 +243,9 @@
"Charges the first hour worth of credits upon creating a server.": "Carga la primera hora de créditos al crear un servidor.",
"Credits Display Name": "Nombre de los Créditos para mostrar",
"PHPMyAdmin URL": "PHPMyAdmin URL",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "Ingrese la URL de su instalación de PHPMyAdmin. ¡Sin una barra diagonal final!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "Ingrese la URL de su instalación de PHPMyAdmin. ¡Sin una barra diagonal final!",
"Pterodactyl URL": "Pterodactyl URL",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Introduzca la URL de su instalación de Pterodactyl. ¡Sin una barra diagonal final!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Introduzca la URL de su instalación de Pterodactyl. ¡Sin una barra diagonal final!",
"Pterodactyl API Key": "Pterodactyl API Key",
"Enter the API Key to your Pterodactyl installation.": "Ingrese la API Key para su instalación de Pterodactyl.",
"Force Discord verification": "Forzar verificación de Discord",
@@ -263,7 +263,7 @@
"Select panel favicon": "Seleccionar favicon del panel",
"Store": "Tienda",
"Server Slots": "Server Slots",
- "Currency code": "Código de divisa\/moneda",
+ "Currency code": "Código de divisa/moneda",
"Checkout the paypal docs to select the appropriate code": "Consulte los documentos de PayPal para seleccionar el código apropiado",
"Quantity": "Cantidad",
"Amount given to the user after purchasing": "Importe dado al usuario después de la compra",
@@ -316,7 +316,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "El descuento solo se puede utilizar una vez por usuario. Los usos especifica el número de usuarios diferentes que pueden utilizar este cupón.",
"Max": "Máx",
"Expires at": "Expira el",
- "Used \/ Uses": "Uso \/ Usos",
+ "Used / Uses": "Uso / Usos",
"Expires": "Expira",
"Sign in to start your session": "Iniciar sesión para comenzar",
"Password": "Contraseña",
@@ -388,7 +388,7 @@
"No nodes have been linked!": "¡No se han vinculado nodos!",
"No nests available!": "¡No hay nidos disponibles!",
"No eggs have been linked!": "¡No se han vinculado huevos!",
- "Software \/ Games": "Software \/ Juegos",
+ "Software / Games": "Software / Juegos",
"Please select software ...": "Seleccione el software...",
"---": "---",
"Specification ": "Especificación ",
@@ -447,18 +447,25 @@
"Notes": "Notas",
"Amount in words": "Cantidad en palabras",
"Please pay until": "Por favor pague hasta",
- "cs": "Checo",
- "de": "Alemán",
- "en": "Inglés",
- "es": "Español",
- "fr": "Francés",
+ "cs": "Czech",
+ "de": "German",
+ "en": "English",
+ "es": "Spanish",
+ "fr": "French",
"hi": "Hindi",
- "it": "Italiano",
- "nl": "Holandés",
- "pl": "Polaco",
- "zh": "Chino",
- "tr": "Turco",
- "ru": "Ruso",
- "sv": "Sueco",
- "sk": "Eslovaco"
+ "it": "Italian",
+ "nl": "Dutch",
+ "pl": "Polish",
+ "zh": "Chinese",
+ "tr": "Turkish",
+ "ru": "Russian",
+ "sv": "Swedish",
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "Actualizar/Reducir el servidor restablecerá su ciclo de facturación a ahora. Se reembolsarán los créditos sobrepagados. El precio del nuevo ciclo de facturación se retirará",
+ "Caution": "Cuidado",
+ "You can not see your Referral Code": "Не puedes ver tu Código de Referencia",
+ "SERVER NAME": "NOMBRE DEL SERVIDOR",
+ "STORAGE": "ALMACENAMIENTO",
+ "Cancel": "Cancelar"
}
diff --git a/lang/fr.json b/lang/fr.json
index f415e5c62..8811187d7 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -81,7 +81,7 @@
"Someone registered using your Code!": "Someone registered using your Code!",
"Server Creation Error": "Erreur lors de la création de votre serveur",
"Your servers have been suspended!": "Votre serveur à été suspendu !",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "Pour réactiver automatiquement votre ou vos serveurs, vous devez racheter des crédits.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "Pour réactiver automatiquement votre ou vos serveurs, vous devez racheter des crédits.",
"Purchase credits": "Acheter des crédits",
"If you have any questions please let us know.": "N'hésitez pas à nous contacter si vous avez des questions.",
"Regards": "Cordialement",
@@ -93,7 +93,7 @@
"Getting started!": "Commencer !",
"Welcome to our dashboard": "Welcome to our dashboard",
"Verification": "Verification",
- "You can verify your e-mail address and link\/verify your Discord account.": "You can verify your e-mail address and link\/verify your Discord account.",
+ "You can verify your e-mail address and link/verify your Discord account.": "You can verify your e-mail address and link/verify your Discord account.",
"Information": "Information",
"This dashboard can be used to create and delete servers": "This dashboard can be used to create and delete servers",
"These servers can be used and managed on our pterodactyl panel": "These servers can be used and managed on our pterodactyl panel",
@@ -126,7 +126,7 @@
"Support server": "Serveur de support",
"Documentation": "Documentation",
"Github": "Github",
- "Support ControlPanel": "ControlPanel Support",
+ "Support CtrlPanel": "CtrlPanel Support",
"Servers": "Serveurs",
"Total": "Total",
"Payments": "Paiments",
@@ -187,7 +187,7 @@
"Default language": "Langue par défaut",
"The fallback Language, if something goes wrong": "La langue de repli, si quelque chose ne va pas",
"Datable language": "Datable language",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ",
"Auto-translate": "Auto-translate",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "If this is checked, the Dashboard will translate itself to the Clients language, if available",
"Client Language-Switch": "Client Language-Switch",
@@ -243,9 +243,9 @@
"Charges the first hour worth of credits upon creating a server.": "Charges the first hour worth of credits upon creating a server.",
"Credits Display Name": "Credits Display Name",
"PHPMyAdmin URL": "PHPMyAdmin URL",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!",
"Pterodactyl URL": "Pterodactyl URL",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Enter the URL to your Pterodactyl installation. Without a trailing slash!",
"Pterodactyl API Key": "Pterodactyl API Key",
"Enter the API Key to your Pterodactyl installation.": "Enter the API Key to your Pterodactyl installation.",
"Force Discord verification": "Force Discord verification",
@@ -316,7 +316,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "Le code ne peut être utilisé qu'une seule fois. L'utilisation spécifie le nombre d'utilisateurs différents qui peuvent utiliser ce code.",
"Max": "Max",
"Expires at": "Expire à",
- "Used \/ Uses": "Utilisé \/ Utilisations",
+ "Used / Uses": "Utilisé / Utilisations",
"Expires": "Expire",
"Sign in to start your session": "Identifiez-vous pour commencer votre session",
"Password": "Mot de passe",
@@ -388,7 +388,7 @@
"No nodes have been linked!": "Aucune node n'a été lié !",
"No nests available!": "Aucun nests disponible !",
"No eggs have been linked!": "Aucun eggs n'a été lié !",
- "Software \/ Games": "Logiciels \/ Jeux",
+ "Software / Games": "Logiciels / Jeux",
"Please select software ...": "Veuillez sélectionner...",
"---": "---",
"Specification ": "Spécification ",
@@ -447,6 +447,8 @@
"Notes": "Notes",
"Amount in words": "Montant en toutes lettres",
"Please pay until": "Veuillez payer avant",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "Mettre à niveau / Réduire votre serveur réinitialisera votre cycle de facturation à maintenant. Vos crédits surpayés seront remboursés. Le prix du nouveau cycle de facturation sera débité",
+ "Caution": "Attention",
"cs": "Czech",
"de": "German",
"en": "English",
@@ -460,5 +462,10 @@
"tr": "Turkish",
"ru": "Russian",
"sv": "Swedish",
- "sk": "Slovakish"
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "You can not see your Referral Code": "Vous ne pouvez pas voir votre Code de parrainage",
+ "SERVER NAME": "NOM DU SERVEUR",
+ "STORAGE": "STOCKAGE",
+ "Cancel": "Annuler"
}
diff --git a/lang/he.json b/lang/he.json
index a1524d6fb..04af79956 100644
--- a/lang/he.json
+++ b/lang/he.json
@@ -60,8 +60,8 @@
"You ran out of Credits": "נגמר לך המטבעות",
"Profile updated": "הפרופיל עודכן",
"Server limit reached!": "הגעת להגבלת השרתים!",
- "You are required to verify your email address before you can create a server.": "אתה מדרש לאמת את כתובת המייל שלך לפני שתוכל\/י ליצור שרת",
- "You are required to link your discord account before you can create a server.": "אתה חייב לקשר את החשבון דיסקורד שלך לפני שתוכל\/י ליצור שרת",
+ "You are required to verify your email address before you can create a server.": "אתה מדרש לאמת את כתובת המייל שלך לפני שתוכל/י ליצור שרת",
+ "You are required to link your discord account before you can create a server.": "אתה חייב לקשר את החשבון דיסקורד שלך לפני שתוכל/י ליצור שרת",
"Server created": "השרת נוצר",
"No allocations satisfying the requirements for automatic deployment on this node were found.": "לא נמצאו הקצאות העומדות בדרישות לפריסה אוטומטית בשרת זה.",
"You are required to verify your email address before you can purchase credits.": "אתה נדרש לאמת את כתובת המייל שלך לפני רכישת מטבעות",
@@ -81,7 +81,7 @@
"Someone registered using your Code!": "Someone registered using your Code!",
"Server Creation Error": "שגיאה ביצירת שרת",
"Your servers have been suspended!": "השרת שלך מושעה!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "כדי להפעיל מחדש את השרתים שלך באופן אוטומטי, עליך לרכוש מטבעות נוספות.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "כדי להפעיל מחדש את השרתים שלך באופן אוטומטי, עליך לרכוש מטבעות נוספות.",
"Purchase credits": "לרכישת מטבעות",
"If you have any questions please let us know.": "אם יש לכם כל שאלה תיידעו אותנו",
"Regards": "בברכה",
@@ -93,7 +93,7 @@
"Getting started!": "מתחילים!",
"Welcome to our dashboard": "Welcome to our dashboard",
"Verification": "Verification",
- "You can verify your e-mail address and link\/verify your Discord account.": "You can verify your e-mail address and link\/verify your Discord account.",
+ "You can verify your e-mail address and link/verify your Discord account.": "You can verify your e-mail address and link/verify your Discord account.",
"Information": "Information",
"This dashboard can be used to create and delete servers": "This dashboard can be used to create and delete servers",
"These servers can be used and managed on our pterodactyl panel": "These servers can be used and managed on our pterodactyl panel",
@@ -125,8 +125,8 @@
"Admin Overview": "סקירת מנהל",
"Support server": "שרת תמיכה",
"Documentation": "מדריך",
- "Github": "Github\/גיטאהב",
- "Support ControlPanel": "תמיכת ControlPanel",
+ "Github": "Github/גיטאהב",
+ "Support CtrlPanel": "תמיכת CtrlPanel",
"Servers": "שרתים",
"Total": "בסך הכל",
"Payments": "תשלומים",
@@ -156,7 +156,7 @@
"Minimum": "מינימום",
"Setting to -1 will use the value from configuration.": "הגדרות ל -1 ישתמש בערך מ configuration.",
"IO": "IO",
- "Databases": "Databases\/ממסד נתונים",
+ "Databases": "Databases/ממסד נתונים",
"Backups": "גיבויים",
"Allocations": "הקצאות",
"Product Linking": "מוצרים מקושרים",
@@ -174,10 +174,10 @@
"please create a file called \"install.lock\" in your dashboard Root directory. Otherwise no settings will be loaded!": "אנא צור קובץ בשם \"install.lock\" בספריית השורש של dashboard שלך. אחרת לא ייטענו הגדרות!",
"or click here": "או לחץ כאן",
"Company Name": "שם החברה",
- "Company Address": "כתובת החברה",
+ "Company Adress": "כתובת החברה",
"Company Phonenumber": "מספר טלפון של החברה",
"VAT ID": "מזהה מעמ",
- "Company E-Mail Address": "כתובת מייל של החברה",
+ "Company E-Mail Adress": "כתובת מייל של החברה",
"Company Website": "אתר החברה",
"Invoice Prefix": "קידומת החשבונים",
"Enable Invoices": "אפשר חשבוניות",
@@ -187,7 +187,7 @@
"Default language": "שפת ברירת מחדל",
"The fallback Language, if something goes wrong": "אם משהו משתבש",
"Datable language": "שפה ניתנת לנתונים",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "טבלת הנתונים של השפות.
לדוגמא:<\/strong> en-gb, fr_fr, de_de
למידע נוסף: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "טבלת הנתונים של השפות.
לדוגמא: en-gb, fr_fr, de_de
למידע נוסף: ",
"Auto-translate": "תרגום אוטומטי",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "אם זה מסומן, Dashboard יתרגם את עצמו לשפת הלקוח, אם זמין",
"Client Language-Switch": "החלפת שפת לקוח",
@@ -199,7 +199,7 @@
"Mail Username": "שם המייל",
"Mail Password": "סיסמת המייל",
"Mail Encryption": "הצפנת המייל",
- "Mail From Address": "מייל מכתובת",
+ "Mail From Adress": "מייל מכתובת",
"Mail From Name": "מייל משם",
"Discord Client-ID": "מזהה של בוט דיסקורד",
"Discord Client-Secret": "מזהה סודי של בוט דיסקורד",
@@ -243,9 +243,9 @@
"Charges the first hour worth of credits upon creating a server.": "Cגובה מטבעות בשווי השעה הראשונה בעת יצירת שרת.",
"Credits Display Name": "שם המטבעות",
"PHPMyAdmin URL": "קישור PHPMyAdmin",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "הכנס את הקישור to פיחפי. בלי צלייה נגררת!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "הכנס את הקישור to פיחפי. בלי צלייה נגררת!",
"Pterodactyl URL": "קישור Pterodactyl",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Enter the URL to your Pterodactyl installation. Without a trailing slash!",
"Pterodactyl API Key": "Pterodactyl API מפתח",
"Enter the API Key to your Pterodactyl installation.": "הכנס את מפתח ה API Pterodactyl installation.",
"Force Discord verification": "אימות דיסקורד חובה",
@@ -300,12 +300,12 @@
"Notifications": "התראות",
"All": "הכל",
"Send via": "שליחה באמצאות",
- "Database": "Database\/מאגר נתונים",
+ "Database": "Database/מאגר נתונים",
"Content": "קשר",
"Server limit": "הגבלת שרת",
- "Discord": "Discord\/דיסקורד",
+ "Discord": "Discord/דיסקורד",
"Usage": "נוהג",
- "IP": "IP\/אייפי",
+ "IP": "IP/אייפי",
"Referals": "Referals",
"Vouchers": "קופונים",
"Voucher details": "פרטי קופון",
@@ -316,7 +316,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "ניתן להשתמש בשובר פעם אחת בלבד לכל משתמש. שימושים מציינים את מספר המשתמשים השונים שיכולים להשתמש בשובר זה.",
"Max": "מקסימום",
"Expires at": "יפוג ב",
- "Used \/ Uses": "משומש \/ שימושים",
+ "Used / Uses": "משומש / שימושים",
"Expires": "פגי תוקף",
"Sign in to start your session": "התחבר על מנת להתחיל",
"Password": "סיסמה",
@@ -339,7 +339,7 @@
"Before proceeding, please check your email for a verification link.": "לפני שתמשיך, אנא בדוק באימייל שלך קישור לאימות.",
"If you did not receive the email": "אם לא קיבלת את המייל",
"click here to request another": "לחץ כאן כדי לבקש אחר",
- "per month": "\/חודש",
+ "per month": "/חודש",
"Out of Credits in": "נגמרו המטבעות ב",
"Home": "בית",
"Language": "שפה",
@@ -388,7 +388,7 @@
"No nodes have been linked!": "שרתים לא מקושרים!",
"No nests available!": "No nests available!",
"No eggs have been linked!": "אין eggs מקושרים",
- "Software \/ Games": "תוכנה \/ משחקים",
+ "Software / Games": "תוכנה / משחקים",
"Please select software ...": "בבקשה תחבר תוכנה ...",
"---": "---",
"Specification ": "ציין ",
@@ -411,9 +411,9 @@
"Specification": "לציין",
"Resource plan": "תוכנית משאבים",
"RAM": "RAM",
- "MySQL Databases": "בסיס הנתונים MySQL<\/bdi>",
- "per Hour": "\/שעה",
- "per Month": "\/חודש",
+ "MySQL Databases": "בסיס הנתונים MySQL",
+ "per Hour": "/שעה",
+ "per Month": "/חודש",
"Manage": "לנהל",
"Are you sure?": "האם אתה בטוח?",
"This is an irreversible action, all files of this server will be removed.": "זוהי פעולה בלתי הפיכה, כל הקבצים של שרת זה יוסרו.",
@@ -447,18 +447,25 @@
"Notes": "הערות",
"Amount in words": "כמות במילים",
"Please pay until": "בבקשה שלם עד",
- "cs": "צכית",
- "de": "גרמנית",
- "en": "אנגלית",
- "es": "ספרדית",
- "fr": "צרפתית",
- "hi": "הודית",
- "it": "אטלקית",
- "nl": "הולנדית",
- "pl": "פולנית",
- "zh": "סִינִית",
- "tr": "טורקית",
- "ru": "רוסית",
- "sv": "שוודית",
- "sk": "סלובקית"
+ "cs": "Czech",
+ "de": "German",
+ "en": "English",
+ "es": "Spanish",
+ "fr": "French",
+ "hi": "Hindi",
+ "it": "Italian",
+ "nl": "Dutch",
+ "pl": "Polish",
+ "zh": "Chinese",
+ "tr": "Turkish",
+ "ru": "Russian",
+ "sv": "Swedish",
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "שדרוג / הורדת שרת יאפס את מחזור החיוב שלך לעכשיו. הקרדיטים ששילמת יוחזרו. המחיר למחזור החיוב החדש יוחסם",
+ "Caution": "אזהרה",
+ "You can not see your Referral Code": "You can not see your Referral Code",
+ "SERVER NAME": "SERVER NAME",
+ "STORAGE": "STORAGE",
+ "Cancel": "Cancel"
}
diff --git a/lang/hi.json b/lang/hi.json
index e7b950b14..5b310de06 100644
--- a/lang/hi.json
+++ b/lang/hi.json
@@ -81,7 +81,7 @@
"Someone registered using your Code!": "Someone registered using your Code!",
"Server Creation Error": "सर्वर निर्माण त्रुटि",
"Your servers have been suspended!": "आपके सर्वर निलंबित कर दिए गए हैं!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "अपने सर्वर\/सर्वर को स्वचालित रूप से पुन: सक्षम करने के लिए, आपको अधिक क्रेडिट खरीदने की आवश्यकता है।",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "अपने सर्वर/सर्वर को स्वचालित रूप से पुन: सक्षम करने के लिए, आपको अधिक क्रेडिट खरीदने की आवश्यकता है।",
"Purchase credits": "क्रेडिट खरीदें",
"If you have any questions please let us know.": "यदि आपके पास कोई प्रश्न है, तो हमें बताएं।",
"Regards": "सादर",
@@ -93,7 +93,7 @@
"Getting started!": "शुरू करना!",
"Welcome to our dashboard": "Welcome to our dashboard",
"Verification": "Verification",
- "You can verify your e-mail address and link\/verify your Discord account.": "You can verify your e-mail address and link\/verify your Discord account.",
+ "You can verify your e-mail address and link/verify your Discord account.": "You can verify your e-mail address and link/verify your Discord account.",
"Information": "Information",
"This dashboard can be used to create and delete servers": "This dashboard can be used to create and delete servers",
"These servers can be used and managed on our pterodactyl panel": "These servers can be used and managed on our pterodactyl panel",
@@ -126,7 +126,7 @@
"Support server": "समर्थन सर्वर",
"Documentation": "प्रलेखन",
"Github": "गिटहब",
- "Support ControlPanel": "समर्थन नियंत्रण पैनल",
+ "Support CtrlPanel": "CtrlPanel का समर्थन करें",
"Servers": "सर्वरस",
"Total": "कुल",
"Payments": "भुगतान",
@@ -187,7 +187,7 @@
"Default language": "डिफ़ॉल्ट भाषा",
"The fallback Language, if something goes wrong": "फ़ॉलबैक भाषा, अगर कुछ गलत हो जाता है",
"Datable language": "डेटा योग्य भाषा",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "डेटाटेबल्स लैंग-कोड।
उदाहरण:<\/strong> en-gb, fr_fr, de_de
अधिक जानकारी: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "डेटाटेबल्स लैंग-कोड।
उदाहरण: en-gb, fr_fr, de_de
अधिक जानकारी: ",
"Auto-translate": "ऑटो का अनुवाद",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "यदि यह चेक किया जाता है, तो डैशबोर्ड स्वयं को क्लाइंट भाषा में अनुवाद करेगा, यदि उपलब्ध हो",
"Client Language-Switch": "क्लाइंट भाषा-स्विच",
@@ -243,9 +243,9 @@
"Charges the first hour worth of credits upon creating a server.": "सर्वर बनाने पर पहले घंटे के क्रेडिट का शुल्क लेता है।",
"Credits Display Name": "क्रेडिट प्रदर्शन नाम",
"PHPMyAdmin URL": "PhpMyAdmin URL",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "अपने PHPMyAdmin इंस्टॉलेशन का URL दर्ज करें। पिछली स्लैश के बिना!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "अपने PHPMyAdmin इंस्टॉलेशन का URL दर्ज करें। पिछली स्लैश के बिना!",
"Pterodactyl URL": "पटरोडैक्टाइल यूआरएल",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "अपने Pterodactyl संस्थापन का URL दर्ज करें। पिछली स्लैश के बिना!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "अपने Pterodactyl संस्थापन का URL दर्ज करें। पिछली स्लैश के बिना!",
"Pterodactyl API Key": "पटरोडैक्टाइल एपीआई कुंजी",
"Enter the API Key to your Pterodactyl installation.": "अपने Pterodactyl स्थापना के लिए API कुंजी दर्ज करें।",
"Force Discord verification": "बल विवाद सत्यापन",
@@ -316,7 +316,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "वाउचर प्रति उपयोगकर्ता केवल एक बार उपयोग किया जा सकता है। उपयोग इस वाउचर का उपयोग करने वाले विभिन्न उपयोगकर्ताओं की संख्या को निर्दिष्ट करता है।",
"Max": "मैक्स",
"Expires at": "पर समाप्त हो रहा है",
- "Used \/ Uses": "प्रयुक्त \/ उपयोग",
+ "Used / Uses": "प्रयुक्त / उपयोग",
"Expires": "समय-सीमा समाप्त",
"Sign in to start your session": "अपना सत्र शुरू करने के लिए साइन इन करें",
"Password": "पासवर्ड",
@@ -388,7 +388,7 @@
"No nodes have been linked!": "कोई नोड लिंक नहीं किया गया है!",
"No nests available!": "कोई घोंसला उपलब्ध नहीं है!",
"No eggs have been linked!": "कोई अंडे नहीं जोड़े गए हैं!",
- "Software \/ Games": "सॉफ्टवेयर \/ खेल",
+ "Software / Games": "सॉफ्टवेयर / खेल",
"Please select software ...": "कृपया सॉफ्टवेयर चुनें...",
"---": "---",
"Specification ": "विनिर्देश",
@@ -447,18 +447,25 @@
"Notes": "टिप्पणियाँ",
"Amount in words": "राशि शब्दों में",
"Please pay until": "कृपया भुगतान करें",
- "cs": "चेक",
- "de": "जर्मन",
- "en": "अंग्रेज़ी",
- "es": "स्पेनिश",
- "fr": "फ्रांसीसी",
- "hi": "हिंदी",
- "it": "इटॅलियन",
- "nl": "डच",
- "pl": "पोलिश",
- "zh": "चीनी",
- "tr": "तुर्क",
- "ru": "रूसी",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "अपने सर्वर को अपग्रेड / डाउनग्रेड करने से आपका बिलिंग साइकिल अब तक रीसेट हो जाएगा। आपके ओवरपेड क्रेडिट वापस किया जाएगा। नए बिलिंग साइकिल के लिए की गई मूल्य निकाला जाएगा",
+ "Caution": "सावधान",
+ "cs": "Czech",
+ "de": "German",
+ "en": "English",
+ "es": "Spanish",
+ "fr": "French",
+ "hi": "Hindi",
+ "it": "Italian",
+ "nl": "Dutch",
+ "pl": "Polish",
+ "zh": "Chinese",
+ "tr": "Turkish",
+ "ru": "Russian",
"sv": "Swedish",
- "sk": "Slovakish"
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "You can not see your Referral Code": "आप अपना रेफरल कोड नहीं देख सकते",
+ "SERVER NAME": "सर्वर का नाम",
+ "STORAGE": "स्टोरेज",
+ "Cancel": "रद्द करें"
}
diff --git a/lang/hu.json b/lang/hu.json
index 744fcf0c3..2479fdb5b 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -81,7 +81,7 @@
"Someone registered using your Code!": "Valaki regisztrált a te Kódoddal!",
"Server Creation Error": "Hiba a szerver készítése közben",
"Your servers have been suspended!": "A szervered fel lett függesztve!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "A szervered\/szervereid autómatikus újraengedélyezéséhez Kreditet kell vásárolnod.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "A szervered/szervereid autómatikus újraengedélyezéséhez Kreditet kell vásárolnod.",
"Purchase credits": "Kreditek vásárlása",
"If you have any questions please let us know.": "Ha kérdésed van, kérjük fordulj hozzánk.",
"Regards": "Üdvözlettel",
@@ -93,7 +93,7 @@
"Getting started!": "Kezdhetjük!",
"Welcome to our dashboard": "Üdvözlünk az Irányítópultban",
"Verification": "Hitelesítés",
- "You can verify your e-mail address and link\/verify your Discord account.": "Hitelesíteni tudod az email címedet és a Discord fiókodat.",
+ "You can verify your e-mail address and link/verify your Discord account.": "Hitelesíteni tudod az email címedet és a Discord fiókodat.",
"Information": "Információk",
"This dashboard can be used to create and delete servers": "Ebben az Irányítópultban szervereket tudsz létrehozni és törölni",
"These servers can be used and managed on our pterodactyl panel": "Ezeket a szervereket a Pterodactyl panelben tudod kezelni",
@@ -126,7 +126,7 @@
"Support server": "Szerver támogatása",
"Documentation": "Dokumentáció",
"Github": "Github",
- "Support ControlPanel": "ControlPanel támogatása",
+ "Support CtrlPanel": "CtrlPanel támogatása",
"Servers": "Szerverek",
"Total": "Összesen",
"Payments": "Fizetések",
@@ -187,7 +187,7 @@
"Default language": "Alapértelmezett nyelv",
"The fallback Language, if something goes wrong": "A tartalék nyelv, ha bármi rosszul működne",
"Datable language": "Keltezhető nyelv",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "Az adattáblák kódnyelve.
Például:<\/strong> en-gb, fr_fr, de_de
Több információ: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "Az adattáblák kódnyelve.
Például: en-gb, fr_fr, de_de
Több információ: ",
"Auto-translate": "Autómatikus fordítás",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "Ha be van kapcsolva, akkor az Irányítópult autómatikusan le lesz fordítva a Kliens által használt nyelvre, ha az elérhető",
"Client Language-Switch": "Kliens nyelv váltás",
@@ -243,9 +243,9 @@
"Charges the first hour worth of credits upon creating a server.": "Első óra kifizetése szerver létrehozásnál.",
"Credits Display Name": "Kredit megnevezése",
"PHPMyAdmin URL": "PHPMyAdmin Hivatkozás",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "Írd be a hivatkozást a PHPMyAdmin telepítéséhez. A zárjó perjel nélkül!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "Írd be a hivatkozást a PHPMyAdmin telepítéséhez. A zárjó perjel nélkül!",
"Pterodactyl URL": "Pterodactyl Hivatkozás",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Írd be a hivatkozást a Pterodactyl telepítéséhez. A zárjó perjel nélkül!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Írd be a hivatkozást a Pterodactyl telepítéséhez. A zárjó perjel nélkül!",
"Pterodactyl API Key": "Pterodactyl API Kulcs",
"Enter the API Key to your Pterodactyl installation.": "Írd be az API Kulcsot a Pterodactyl telepítéséhez.",
"Force Discord verification": "Discord hitelesítés kötelezése",
@@ -316,7 +316,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "Az utalványt egy felhasználó csak egyszer használhatja fel. Ezzel meg tudod adni, hogy hány felhasználó tudja felhasználni az utalványt.",
"Max": "Max",
"Expires at": "Lejárás ideje",
- "Used \/ Uses": "Felhasználva \/ Felhasználások száma",
+ "Used / Uses": "Felhasználva / Felhasználások száma",
"Expires": "Lejár",
"Sign in to start your session": "Jelentkezz be a munkamenet elindításához",
"Password": "Jelszó",
@@ -388,7 +388,7 @@
"No nodes have been linked!": "Nem lett csomópont hozzácsatolva!",
"No nests available!": "Nincs elérhető fészek!",
"No eggs have been linked!": "Nem lett tojás hozzácsatolva!",
- "Software \/ Games": "Szoftver \/ Játékok",
+ "Software / Games": "Szoftver / Játékok",
"Please select software ...": "Szoftver kiválasztása ...",
"---": "---",
"Specification ": "Specifikációk ",
@@ -447,18 +447,25 @@
"Notes": "Jegyzetek",
"Amount in words": "Mennyiség szavakban",
"Please pay until": "Fizetési határidő",
- "cs": "Cseh",
- "de": "Német",
- "en": "Angol",
- "es": "Spanyol",
- "fr": "Francia",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "A szerver frissítése / lefrissítése visszaállítja a számlázási ciklust az aktuálisra. A túlfizetett Kreditet visszatérítjük. A számlázási ciklus új ára lesz kivonva",
+ "Caution": "Figyelem",
+ "cs": "Czech",
+ "de": "German",
+ "en": "English",
+ "es": "Spanish",
+ "fr": "French",
"hi": "Hindi",
- "it": "Olasz",
- "nl": "Holland",
- "pl": "Lengyel",
- "zh": "Kínai",
- "tr": "Török",
- "ru": "Orosz",
- "sv": "Svéd",
- "sk": "Szlovák"
+ "it": "Italian",
+ "nl": "Dutch",
+ "pl": "Polish",
+ "zh": "Chinese",
+ "tr": "Turkish",
+ "ru": "Russian",
+ "sv": "Swedish",
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "You can not see your Referral Code": "Nem látod a hivatkozási kódodat",
+ "SERVER NAME": "SZERVERNEVE",
+ "STORAGE": "TÁROLÁS",
+ "Cancel": "Mégse"
}
diff --git a/lang/it.json b/lang/it.json
index 5bc51c875..12f1c29f1 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -81,7 +81,7 @@
"Someone registered using your Code!": "Someone registered using your Code!",
"Server Creation Error": "Errore di creazione del server",
"Your servers have been suspended!": "I tuoi server sono stati sospesi!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "Per ri-abilitare i tuoi server automaticamente, devi acquistare più crediti.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "Per ri-abilitare i tuoi server automaticamente, devi acquistare più crediti.",
"Purchase credits": "Acquista crediti",
"If you have any questions please let us know.": "Se hai una domanda faccelo sapere.",
"Regards": "Cordialmente",
@@ -93,7 +93,7 @@
"Getting started!": "Come iniziare!",
"Welcome to our dashboard": "Welcome to our dashboard",
"Verification": "Verification",
- "You can verify your e-mail address and link\/verify your Discord account.": "You can verify your e-mail address and link\/verify your Discord account.",
+ "You can verify your e-mail address and link/verify your Discord account.": "You can verify your e-mail address and link/verify your Discord account.",
"Information": "Information",
"This dashboard can be used to create and delete servers": "This dashboard can be used to create and delete servers",
"These servers can be used and managed on our pterodactyl panel": "These servers can be used and managed on our pterodactyl panel",
@@ -126,7 +126,7 @@
"Support server": "Server di supporto",
"Documentation": "Documentazione",
"Github": "GitHub",
- "Support ControlPanel": "Supporta ControlPanel",
+ "Support CtrlPanel": "Supporta CtrlPanel",
"Servers": "Servers",
"Total": "Totale",
"Payments": "Pagamenti",
@@ -187,7 +187,7 @@
"Default language": "Lingua predefinita",
"The fallback Language, if something goes wrong": "La lingua secondaria, se qualcosa va storto",
"Datable language": "Datable language",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "Il lang-code dei datatables.
Esempio:<\/strong> en-gb, fr_fr, de_de
Piu informazioni: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "Il lang-code dei datatables.
Esempio: en-gb, fr_fr, de_de
Piu informazioni: ",
"Auto-translate": "Traduzione-automatica",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "Se questo è abilitato la dashboard si traducerà automaticamente alla lingua dei clienti, se disponibile",
"Client Language-Switch": "Switch delle lingue dei clienti",
@@ -243,9 +243,9 @@
"Charges the first hour worth of credits upon creating a server.": "Addebita la prima ora in crediti alla creazione di un server.",
"Credits Display Name": "Nome di Visualizzazione dei Crediti",
"PHPMyAdmin URL": "URL PHPMyAdmin",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "Inserisci l'URL alla tua installazione di PHPMyAdmin. Senza lo slash finale!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "Inserisci l'URL alla tua installazione di PHPMyAdmin. Senza lo slash finale!",
"Pterodactyl URL": "URL di Pterodactyl",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Inserisci l'URL alla tua installazione di Pterodactyl. Senza un trailing slash!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Inserisci l'URL alla tua installazione di Pterodactyl. Senza un trailing slash!",
"Pterodactyl API Key": "Chiave API di Pterodactyl",
"Enter the API Key to your Pterodactyl installation.": "Inserisci la Chiave API alla tua installazione di Pterodactyl.",
"Force Discord verification": "Forza la verifica di Discord",
@@ -316,7 +316,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "Un voucher può essere utilizzato solo una volta per utente. Il numero di usi specifica il numero di utenti diversi che possono utilizzare questo voucher.",
"Max": "Massimo",
"Expires at": "Scade il",
- "Used \/ Uses": "Usato \/ Utilizzi",
+ "Used / Uses": "Usato / Utilizzi",
"Expires": "Scade",
"Sign in to start your session": "Accedi per iniziare la sessione",
"Password": "Password",
@@ -388,7 +388,7 @@
"No nodes have been linked!": "Nessun nodo è stato connesso!",
"No nests available!": "Nessun nido (nest) disponibile!",
"No eggs have been linked!": "Nessun uovo (egg) è stato connesso!",
- "Software \/ Games": "Software \/ Giochi",
+ "Software / Games": "Software / Giochi",
"Please select software ...": "Per favore selezione il software...",
"---": "---",
"Specification ": "Specifiche ",
@@ -447,18 +447,25 @@
"Notes": "Note",
"Amount in words": "Numero in parole",
"Please pay until": "Per favore paga fino",
- "cs": "Ceco",
- "de": "Tedesco",
- "en": "Inglese",
- "es": "Spagnolo",
- "fr": "Francese",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "L’aggiornamento / riduzione del tuo server reimposterà il tuo ciclo di fatturazione a ora. I tuoi crediti in eccesso saranno rimborsati. Il prezzo per il nuovo ciclo di fatturazione sarà prelevato",
+ "Caution": "Attenzione",
+ "cs": "Czech",
+ "de": "German",
+ "en": "English",
+ "es": "Spanish",
+ "fr": "French",
"hi": "Hindi",
- "it": "Italiano",
- "nl": "Olandese",
- "pl": "Polacco",
- "zh": "Cinese",
- "tr": "Turco",
- "ru": "Russo",
+ "it": "Italian",
+ "nl": "Dutch",
+ "pl": "Polish",
+ "zh": "Chinese",
+ "tr": "Turkish",
+ "ru": "Russian",
"sv": "Swedish",
- "sk": "Slovakish"
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "You can not see your Referral Code": "Non puoi vedere il tuo Codice di Riferimento",
+ "SERVER NAME": "NOME DEL SERVER",
+ "STORAGE": "ARCHIVIAZIONE",
+ "Cancel": "Annulla"
}
diff --git a/lang/nl.json b/lang/nl.json
index 5e72fc395..8b1add000 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -81,7 +81,7 @@
"Someone registered using your Code!": "Someone registered using your Code!",
"Server Creation Error": "Fout bij het maken van de server",
"Your servers have been suspended!": "Uw servers zijn opgeschort!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "Om uw server(s) automatisch opnieuw in te schakelen, moet u meer credits kopen.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "Om uw server(s) automatisch opnieuw in te schakelen, moet u meer credits kopen.",
"Purchase credits": "Credits kopen",
"If you have any questions please let us know.": "Als u vragen heeft, laat het ons dan weten.",
"Regards": "Met vriendelijke groet",
@@ -93,7 +93,7 @@
"Getting started!": "Aan de slag!",
"Welcome to our dashboard": "Welkom bij ons dashboard",
"Verification": "Verificatie",
- "You can verify your e-mail address and link\/verify your Discord account.": "You can verify your e-mail address and link\/verify your Discord account.",
+ "You can verify your e-mail address and link/verify your Discord account.": "You can verify your e-mail address and link/verify your Discord account.",
"Information": "Informatie",
"This dashboard can be used to create and delete servers": "This dashboard can be used to create and delete servers",
"These servers can be used and managed on our pterodactyl panel": "These servers can be used and managed on our pterodactyl panel",
@@ -126,7 +126,7 @@
"Support server": "Ondersteuningsserver",
"Documentation": "Documentatie",
"Github": "Github",
- "Support ControlPanel": "Ondersteuning ControlPanel",
+ "Support CtrlPanel": "Ondersteuning CtrlPanel",
"Servers": "Servers",
"Total": "Totaal",
"Payments": "Betalingen",
@@ -187,7 +187,7 @@
"Default language": "Standaard taal",
"The fallback Language, if something goes wrong": "De terugval-taal, als er iets misgaat",
"Datable language": "Dateerbare taal",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "De datatabellen lang-code.
Voorbeeld:<\/strong> nl-gb, fr_fr, de_de
Meer informatie: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "De datatabellen lang-code.
Voorbeeld: nl-gb, fr_fr, de_de
Meer informatie: ",
"Auto-translate": "Automatisch vertalen",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "Als dit is aangevinkt, zal het dashboard zichzelf vertalen naar de taal van de klant, indien beschikbaar",
"Client Language-Switch": "Klant Taal-Switch",
@@ -243,9 +243,9 @@
"Charges the first hour worth of credits upon creating a server.": "Brengt het eerste uur aan credits in rekening bij het maken van een server.",
"Credits Display Name": "Weergavenaam tegoed",
"PHPMyAdmin URL": "PHPMyAdmin-URL",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "Voer de URL naar uw PHPMyAdmin-installatie in. Zonder een slash!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "Voer de URL naar uw PHPMyAdmin-installatie in. Zonder een slash!",
"Pterodactyl URL": "Pterodactyl URL",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Voer de URL naar uw Pterodactyl-installatie in. Zonder een slash!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Voer de URL naar uw Pterodactyl-installatie in. Zonder een slash!",
"Pterodactyl API Key": "Pterodactyl API sleutel",
"Enter the API Key to your Pterodactyl installation.": "Voer de API-sleutel in voor uw Pterodactyl-installatie.",
"Force Discord verification": "Forceer Discord Verificatie",
@@ -316,7 +316,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "Een voucher kan slechts één keer per gebruiker worden gebruikt. Gebruik geeft het aantal verschillende gebruikers aan dat deze voucher kan gebruiken.",
"Max": "Maximum",
"Expires at": "Verloopt om",
- "Used \/ Uses": "Gebruikt \/ Toepassingen",
+ "Used / Uses": "Gebruikt / Toepassingen",
"Expires": "Verloopt",
"Sign in to start your session": "Login om te beginnen",
"Password": "Wachtwoord",
@@ -388,7 +388,7 @@
"No nodes have been linked!": "Er zijn geen nodes gekoppeld!",
"No nests available!": "Er zijn geen nesten beschikbaar!",
"No eggs have been linked!": "Geen eieren gekoppeld!",
- "Software \/ Games": "Software \/ Spellen",
+ "Software / Games": "Software / Spellen",
"Please select software ...": "Selecteer software...",
"---": "---",
"Specification ": "Specificatie ",
@@ -447,18 +447,25 @@
"Notes": "Notities",
"Amount in words": "Hoeveelheid in eenheden",
"Please pay until": "Gelieve te betalen tot",
- "cs": "Tsjechisch",
- "de": "Duits",
- "en": "Engels",
- "es": "Spaans",
- "fr": "Frans",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "Upgraden/downgraden van uw server zal uw facturatiecyclus resetten naar nu. Uw overbetalen krediet zal worden terugbetaald. De prijs voor de nieuwe facturatiecyclus zal worden afgeschreven",
+ "Caution": "Let op",
+ "cs": "Czech",
+ "de": "German",
+ "en": "English",
+ "es": "Spanish",
+ "fr": "French",
"hi": "Hindi",
- "it": "Italiaans",
- "nl": "Nederlands",
- "pl": "Pools",
- "zh": "Chinees",
- "tr": "Turks",
- "ru": "Russisch",
- "sv": "Zweeds",
- "sk": "Slovakish"
+ "it": "Italian",
+ "nl": "Dutch",
+ "pl": "Polish",
+ "zh": "Chinese",
+ "tr": "Turkish",
+ "ru": "Russian",
+ "sv": "Swedish",
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "You can not see your Referral Code": "Je kunt je Verwijzingscode niet zien",
+ "SERVER NAME": "SERVERNAAM",
+ "STORAGE": "OPSLAG",
+ "Cancel": "Annuleren"
}
diff --git a/lang/pl.json b/lang/pl.json
index 14bfaee38..05e68bac1 100644
--- a/lang/pl.json
+++ b/lang/pl.json
@@ -81,7 +81,7 @@
"Someone registered using your Code!": "Someone registered using your Code!",
"Server Creation Error": "Błąd podczas tworzenia serwera",
"Your servers have been suspended!": "Serwery zostały zawieszone!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "Aby reaktywować swoje serwery, musisz kupić więcej kredytów.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "Aby reaktywować swoje serwery, musisz kupić więcej kredytów.",
"Purchase credits": "Zakup kredyty",
"If you have any questions please let us know.": "W razie jakichkolwiek pytań prosimy o kontakt.",
"Regards": "Z poważaniem",
@@ -93,7 +93,7 @@
"Getting started!": "Zaczynajmy!",
"Welcome to our dashboard": "Welcome to our dashboard",
"Verification": "Verification",
- "You can verify your e-mail address and link\/verify your Discord account.": "You can verify your e-mail address and link\/verify your Discord account.",
+ "You can verify your e-mail address and link/verify your Discord account.": "You can verify your e-mail address and link/verify your Discord account.",
"Information": "Information",
"This dashboard can be used to create and delete servers": "This dashboard can be used to create and delete servers",
"These servers can be used and managed on our pterodactyl panel": "These servers can be used and managed on our pterodactyl panel",
@@ -126,7 +126,7 @@
"Support server": "Serwer pomocy",
"Documentation": "Dokumentacja",
"Github": "Github",
- "Support ControlPanel": "Wesprzyj ControlPanel",
+ "Support CtrlPanel": "Wesprzyj CtrlPanel",
"Servers": "Serwery",
"Total": "Razem",
"Payments": "Płatności",
@@ -187,7 +187,7 @@
"Default language": "Domyślny język",
"The fallback Language, if something goes wrong": "The fallback Language, if something goes wrong",
"Datable language": "Domyślny język",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ",
"Auto-translate": "Automatyczne tłumaczenie",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "If this is checked, the Dashboard will translate itself to the Clients language, if available",
"Client Language-Switch": "Client Language-Switch",
@@ -243,9 +243,9 @@
"Charges the first hour worth of credits upon creating a server.": "Charges the first hour worth of credits upon creating a server.",
"Credits Display Name": "Nazwa Waluty",
"PHPMyAdmin URL": "PHPMyAdmin URL",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!",
"Pterodactyl URL": "URL Pterodactyl Panelu",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Enter the URL to your Pterodactyl installation. Without a trailing slash!",
"Pterodactyl API Key": "Klucz API Pterodactyl panelu",
"Enter the API Key to your Pterodactyl installation.": "Enter the API Key to your Pterodactyl installation.",
"Force Discord verification": "Force Discord verification",
@@ -316,7 +316,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "Kupon może zostać zrealizowany tylko raz przez użytkownika. „Użycie” określa liczbę użytkowników, którzy mogą zrealizować ten kupon.",
"Max": "Max",
"Expires at": "Wygasa",
- "Used \/ Uses": "Użyto \/ Użyć",
+ "Used / Uses": "Użyto / Użyć",
"Expires": "Wygasa",
"Sign in to start your session": "Zaloguj się, aby rozpocząć sesję",
"Password": "Hasło",
@@ -388,7 +388,7 @@
"No nodes have been linked!": "Żaden węzeł nie został połączony!",
"No nests available!": "Brak dostępnych gniazd!",
"No eggs have been linked!": "Jajka nie zostały połaczone!",
- "Software \/ Games": "Oprogramowanie \/ gry",
+ "Software / Games": "Oprogramowanie / gry",
"Please select software ...": "Proszę wybrać oprogramowanie...",
"---": "---",
"Specification ": "Specyfikacja ",
@@ -447,18 +447,25 @@
"Notes": "Uwagi",
"Amount in words": "Wszystkie słowa",
"Please pay until": "Zapłać w ciągu:",
- "cs": "Czeski",
- "de": "Niemiecki",
- "en": "Angielski",
- "es": "Hiszpański",
- "fr": "Francuski",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "Aktualizacja / degradacja twojego serwera spowoduje zresetowanie cyklu rozliczeniowego do teraz. Twoje nadpłacone kredyty zostaną zwrócone. Cena za nowy cykl rozliczeniowy zostanie pobrana",
+ "Caution": "Uwaga",
+ "cs": "Czech",
+ "de": "German",
+ "en": "English",
+ "es": "Spanish",
+ "fr": "French",
"hi": "Hindi",
- "it": "Włoski",
+ "it": "Italian",
"nl": "Dutch",
- "pl": "Polski",
- "zh": "Chiński",
- "tr": "Turecki",
- "ru": "Rosyjski",
+ "pl": "Polish",
+ "zh": "Chinese",
+ "tr": "Turkish",
+ "ru": "Russian",
"sv": "Swedish",
- "sk": "Slovakish"
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "You can not see your Referral Code": "Nie możesz zobaczyć swojego kodu polecającego",
+ "SERVER NAME": "NAZWA SERWERA",
+ "STORAGE": "PAMIĘĆ",
+ "Cancel": "Anuluj"
}
diff --git a/lang/pt.json b/lang/pt.json
index 1ce81866a..e07ec430b 100644
--- a/lang/pt.json
+++ b/lang/pt.json
@@ -81,7 +81,7 @@
"Someone registered using your Code!": "Alguém se registrou usando seu código!",
"Server Creation Error": "Erro de criação do servidor",
"Your servers have been suspended!": "Os seus servidores foram suspensos!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "Para reativar automaticamente o seu(s) servidor(es), é preciso comprar mais créditos.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "Para reativar automaticamente o seu(s) servidor(es), é preciso comprar mais créditos.",
"Purchase credits": "Compra de créditos",
"If you have any questions please let us know.": "Se tiver alguma dúvida, por favor, nos avise.",
"Regards": "Cumprimentos,",
@@ -93,7 +93,7 @@
"Getting started!": "Começar",
"Welcome to our dashboard": "Bem-vindo ao nosso painel",
"Verification": "Verificação",
- "You can verify your e-mail address and link\/verify your Discord account.": "Você pode verificar o seu endereço de e-mail e link",
+ "You can verify your e-mail address and link/verify your Discord account.": "Você pode verificar o seu endereço de e-mail e link",
"Information": "Informações",
"This dashboard can be used to create and delete servers": "Este painel pode ser usado para criar e excluir servidores",
"These servers can be used and managed on our pterodactyl panel": "Esses servidores podem ser usados e gerenciados no nosso painel pterodactyl ",
@@ -126,7 +126,7 @@
"Support server": "Servidor de suporte",
"Documentation": "Documentação",
"Github": "Github",
- "Support ControlPanel": "Suporte para ControlPanel",
+ "Support CtrlPanel": "Suporte para CtrlPanel",
"Servers": "Servidores",
"Total": "Total",
"Payments": "Pagamentos",
@@ -187,7 +187,7 @@
"Default language": "Idioma padrão",
"The fallback Language, if something goes wrong": "Um idioma padrão, se algo der errado",
"Datable language": "Idioma de dados",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "Os lang-codes disponíveis.
Exemplo:<\/strong> en-gb, fr_fr, de_de
Mais informações:",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "Os lang-codes disponíveis.
Exemplo: en-gb, fr_fr, de_de
Mais informações:",
"Auto-translate": "Traduzir Automaticamente",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "Se isto for ativado, o Painel se traduzirá para o idioma do cliente, se disponível.",
"Client Language-Switch": "Trocar Idioma do cliente",
@@ -243,9 +243,9 @@
"Charges the first hour worth of credits upon creating a server.": "Cobra a primeira hora de créditos ao criar um servidor.",
"Credits Display Name": "Nome de exibição dos créditos",
"PHPMyAdmin URL": "PHPMyAdmin URL",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "Insira o URL do seu PHPMyAdmin. Sem barra de arrasto!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "Insira o URL do seu PHPMyAdmin. Sem barra de arrasto!",
"Pterodactyl URL": "Pterodactyl URL",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Insira o URL do seu pterodactyl. Sem barra de arrasto!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Insira o URL do seu pterodactyl. Sem barra de arrasto!",
"Pterodactyl API Key": "Chave API pterodactyl",
"Enter the API Key to your Pterodactyl installation.": "Insira a chave API do seu painel pterodactyl.",
"Force Discord verification": "Forçar verificação do Discord",
@@ -316,7 +316,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "Um vale só pode ser usado uma vez por utilizador. Os usos especificam o número de diferentes utilizadores que podem usar este comprovante.",
"Max": "Máximo",
"Expires at": "Expira em",
- "Used \/ Uses": "Usados \/ Usos",
+ "Used / Uses": "Usados / Usos",
"Expires": "Expira",
"Sign in to start your session": "Entre para iniciar a sua sessão",
"Password": "Senha",
@@ -388,7 +388,7 @@
"No nodes have been linked!": "Nenhum nó foi ligado!",
"No nests available!": "Não há ninhos disponíveis!",
"No eggs have been linked!": "Nenhum ovo foi ligado!",
- "Software \/ Games": "“Software” \/ Jogos",
+ "Software / Games": "“Software” / Jogos",
"Please select software ...": "Por favor, selecione o “software”...",
"---": "—",
"Specification ": "Especificação",
@@ -447,18 +447,25 @@
"Notes": "Notas",
"Amount in words": "Quantia em palavras",
"Please pay until": "Favor pagar até",
- "cs": "Tcheco",
- "de": "Alemão",
- "en": "Inglês",
- "es": "Espanhol",
- "fr": "Francês",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "Atualizar / Reduzir o seu servidor irá redefinir o seu ciclo de faturação para agora. Os seus créditos pagos a mais serão reembolsados. O preço para o novo ciclo de faturação será debitado",
+ "Caution": "Cuidado",
+ "cs": "Czech",
+ "de": "German",
+ "en": "English",
+ "es": "Spanish",
+ "fr": "French",
"hi": "Hindi",
- "it": "Italiano",
- "nl": "Holandês",
- "pl": "Polonês",
- "zh": "Chinês",
- "tr": "Turco",
- "ru": "Russo",
- "sv": "Sueco",
- "sk": "Eslovaco"
+ "it": "Italian",
+ "nl": "Dutch",
+ "pl": "Polish",
+ "zh": "Chinese",
+ "tr": "Turkish",
+ "ru": "Russian",
+ "sv": "Swedish",
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "You can not see your Referral Code": "Você não pode ver o seu Código de Referência",
+ "SERVER NAME": "NOME DO SERVIDOR",
+ "STORAGE": "ARMAZENAMENTO",
+ "Cancel": "Cancelar"
}
diff --git a/lang/ro.json b/lang/ro.json
index f4c9004c1..9aeb0f05b 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -81,7 +81,7 @@
"Someone registered using your Code!": "Someone registered using your Code!",
"Server Creation Error": "Server Creation Error",
"Your servers have been suspended!": "Your servers have been suspended!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "To automatically re-enable your server\/s, you need to purchase more credits.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "To automatically re-enable your server/s, you need to purchase more credits.",
"Purchase credits": "Purchase credits",
"If you have any questions please let us know.": "If you have any questions please let us know.",
"Regards": "Regards",
@@ -93,7 +93,7 @@
"Getting started!": "Getting started!",
"Welcome to our dashboard": "Welcome to our dashboard",
"Verification": "Verification",
- "You can verify your e-mail address and link\/verify your Discord account.": "You can verify your e-mail address and link\/verify your Discord account.",
+ "You can verify your e-mail address and link/verify your Discord account.": "You can verify your e-mail address and link/verify your Discord account.",
"Information": "Information",
"This dashboard can be used to create and delete servers": "This dashboard can be used to create and delete servers",
"These servers can be used and managed on our pterodactyl panel": "These servers can be used and managed on our pterodactyl panel",
@@ -126,7 +126,7 @@
"Support server": "Support server",
"Documentation": "Documentation",
"Github": "Github",
- "Support ControlPanel": "Support ControlPanel",
+ "Support CtrlPanel": "Support CtrlPanel",
"Servers": "Servers",
"Total": "Total",
"Payments": "Payments",
@@ -187,7 +187,7 @@
"Default language": "Default language",
"The fallback Language, if something goes wrong": "The fallback Language, if something goes wrong",
"Datable language": "Datable language",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ",
"Auto-translate": "Auto-translate",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "If this is checked, the Dashboard will translate itself to the Clients language, if available",
"Client Language-Switch": "Client Language-Switch",
@@ -243,9 +243,9 @@
"Charges the first hour worth of credits upon creating a server.": "Charges the first hour worth of credits upon creating a server.",
"Credits Display Name": "Credits Display Name",
"PHPMyAdmin URL": "PHPMyAdmin URL",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!",
"Pterodactyl URL": "Pterodactyl URL",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Enter the URL to your Pterodactyl installation. Without a trailing slash!",
"Pterodactyl API Key": "Pterodactyl API Key",
"Enter the API Key to your Pterodactyl installation.": "Enter the API Key to your Pterodactyl installation.",
"Force Discord verification": "Force Discord verification",
@@ -316,7 +316,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.",
"Max": "Max",
"Expires at": "Expires at",
- "Used \/ Uses": "Used \/ Uses",
+ "Used / Uses": "Used / Uses",
"Expires": "Expires",
"Sign in to start your session": "Sign in to start your session",
"Password": "Password",
@@ -388,7 +388,7 @@
"No nodes have been linked!": "No nodes have been linked!",
"No nests available!": "No nests available!",
"No eggs have been linked!": "No eggs have been linked!",
- "Software \/ Games": "Software \/ Games",
+ "Software / Games": "Software / Games",
"Please select software ...": "Please select software ...",
"---": "---",
"Specification ": "Specification ",
@@ -447,6 +447,8 @@
"Notes": "Notes",
"Amount in words": "Amount in words",
"Please pay until": "Please pay until",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed",
+ "Caution": "Caution",
"cs": "Czech",
"de": "German",
"en": "English",
@@ -460,5 +462,10 @@
"tr": "Turkish",
"ru": "Russian",
"sv": "Swedish",
- "sk": "Slovakish"
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "You can not see your Referral Code": "Nu poți vedea codul tău de recomandare",
+ "SERVER NAME": "NUMELE SERVERULUI",
+ "STORAGE": "STOCARE",
+ "Cancel": "Anulare"
}
diff --git a/lang/ru.json b/lang/ru.json
index 68755fabd..a9bfeb9f5 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -39,7 +39,7 @@
"Store item has been removed!": "Товар в магазине был удален!",
"link has been created!": "Ссылка была создана!",
"link has been updated!": "Ссылка была обновлена!",
- "product has been removed!": "Продукт\/Товар был удалён!",
+ "product has been removed!": "Продукт/Товар был удалён!",
"User does not exists on pterodactyl's panel": "Пользователь не был найден в панеле птеродактиль",
"user has been removed!": "Пользователь был удален!",
"Notification sent!": "Оповещение отправлено!",
@@ -81,7 +81,7 @@
"Someone registered using your Code!": "Someone registered using your Code!",
"Server Creation Error": "Ошибка создание сервера",
"Your servers have been suspended!": "Ваши сервера были заблокированы!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "Чтобы автоматически повторно включить ваш сервер \/ серверы, вам необходимо приобрести больше кредитов.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "Чтобы автоматически повторно включить ваш сервер / серверы, вам необходимо приобрести больше кредитов.",
"Purchase credits": "Приобрести кредиты",
"If you have any questions please let us know.": "Пожалуйста, сообщите нам, если у Вас есть какие-либо вопросы.",
"Regards": "С уважением,",
@@ -93,7 +93,7 @@
"Getting started!": "Начало работы!",
"Welcome to our dashboard": "Welcome to our dashboard",
"Verification": "Verification",
- "You can verify your e-mail address and link\/verify your Discord account.": "You can verify your e-mail address and link\/verify your Discord account.",
+ "You can verify your e-mail address and link/verify your Discord account.": "You can verify your e-mail address and link/verify your Discord account.",
"Information": "Information",
"This dashboard can be used to create and delete servers": "This dashboard can be used to create and delete servers",
"These servers can be used and managed on our pterodactyl panel": "These servers can be used and managed on our pterodactyl panel",
@@ -126,7 +126,7 @@
"Support server": "Сервер поддержки",
"Documentation": "Документация",
"Github": "GitHub",
- "Support ControlPanel": "Поддержка панели управления",
+ "Support CtrlPanel": "Поддержка CtrlPanel",
"Servers": "Серверы",
"Total": "Всего",
"Payments": "Оплаты",
@@ -149,7 +149,6 @@
"Will hide this option from being selected": "Скрывает эту опцию от выбора",
"Price in": "Цена в",
"Memory": "Оперативная память",
- "Cpu": "Процессор",
"Swap": "Файл подкачки",
"This is what the users sees": "Вот что видят пользователи",
"Disk": "Диск",
@@ -164,7 +163,6 @@
"This product will only be available for these nodes": "Данный продукт будет доступен только для этих узлов",
"This product will only be available for these eggs": "Этот продукт будет доступен только для этих яиц",
"Product": "Продукт",
- "CPU": "Процессор",
"Updated at": "Обновлено",
"User": "Пользователь",
"Config": "Конфигурация",
@@ -187,7 +185,7 @@
"Default language": "Язык по умолчанию",
"The fallback Language, if something goes wrong": "Резервный язык, если что-то пойдет не так",
"Datable language": "Датадатируемый язык",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "Языковой код таблицы данных.
Пример:<\/strong> en-gb, fr_fr, de_de
Дополнительная информация:",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "Языковой код таблицы данных.
Пример: en-gb, fr_fr, de_de
Дополнительная информация:",
"Auto-translate": "Автоперевод",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "Если этот флажок установлен, информационная панель будет переводиться на язык клиентов, если он доступен",
"Client Language-Switch": "Переключение языка клиента",
@@ -243,9 +241,9 @@
"Charges the first hour worth of credits upon creating a server.": "Взимает кредиты за первый час при создании сервера.",
"Credits Display Name": "Отображаемое имя кредитов",
"PHPMyAdmin URL": "URL-адрес PHPMyAdmin",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "Введите URL-адрес вашей установки PHPMyAdmin. Без косой черты в конце!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "Введите URL-адрес вашей установки PHPMyAdmin. Без косой черты в конце!",
"Pterodactyl URL": "URL-адрес птеродактиля",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Введите URL-адрес вашей установки Pterodactyl. Без косой черты в конце!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Введите URL-адрес вашей установки Pterodactyl. Без косой черты в конце!",
"Pterodactyl API Key": "API-ключ птеродактиля",
"Enter the API Key to your Pterodactyl installation.": "Введите ключ API для установки Pterodactyl.",
"Force Discord verification": "Требуется верификация в Discord",
@@ -316,7 +314,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "Промокод можно использовать только один раз для каждого пользователя. Пользователь указывает количество различных пользователей, которые могут использовать этот промокод.",
"Max": "Макс.",
"Expires at": "Срок действия до",
- "Used \/ Uses": "Используется \/ Использует",
+ "Used / Uses": "Используется / Использует",
"Expires": "Истекает",
"Sign in to start your session": "Войдите, чтобы начать сессию",
"Password": "Пароль",
@@ -388,7 +386,7 @@
"No nodes have been linked!": "Ни один узел не был связан!",
"No nests available!": "Гнезда в наличии нет!",
"No eggs have been linked!": "Группы были связаны!",
- "Software \/ Games": "Программное обеспечение \/ Игры",
+ "Software / Games": "Программное обеспечение / Игры",
"Please select software ...": "Пожалуйста, выберите программное обеспечение...",
"---": "---",
"Specification ": "Характеристики ",
@@ -447,6 +445,8 @@
"Notes": "Примечания",
"Amount in words": "Сумма прописью",
"Please pay until": "Пожалуйста, платите до",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "Обновление/Уменьшение вашего сервера сбросит ваш цикл оплаты на текущий. Ваши переплаты будут возвращены. Цена за новый цикл оплаты будет списана",
+ "Caution": "Внимание",
"cs": "Czech",
"de": "German",
"en": "English",
@@ -458,7 +458,14 @@
"pl": "Polish",
"zh": "Chinese",
"tr": "Turkish",
- "ru": "Русский",
+ "ru": "Russian",
"sv": "Swedish",
- "sk": "Slovakish"
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "You can not see your Referral Code": "Вы не можете видеть свой реферельный код",
+ "SERVER NAME": "НАЗВАНИЕ СЕРВЕРА",
+ "CPU": "ЦПУ",
+ "MEMORY": "ОЗУ",
+ "STORAGE": "ХРАНИЛИЩЕ",
+ "Cancel": "Отменить"
}
diff --git a/lang/sh.json b/lang/sh.json
index 2755ad282..1809b0c01 100644
--- a/lang/sh.json
+++ b/lang/sh.json
@@ -80,7 +80,7 @@
"User ID": "User ID",
"Server Creation Error": "Server Creation Error",
"Your servers have been suspended!": "Your servers have been suspended!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "To automatically re-enable your server\/s, you need to purchase more credits.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "To automatically re-enable your server/s, you need to purchase more credits.",
"Purchase credits": "Purchase credits",
"If you have any questions please let us know.": "If you have any questions please let us know.",
"Regards": "Regards",
@@ -112,7 +112,7 @@
"Support server": "Support server",
"Documentation": "Documentation",
"Github": "Github",
- "Support ControlPanel": "Support ControlPanel",
+ "Support CtrlPanel": "Support CtrlPanel",
"Servers": "Servers",
"Total": "Total",
"Payments": "Payments",
@@ -160,10 +160,10 @@
"please create a file called \"install.lock\" in your dashboard Root directory. Otherwise no settings will be loaded!": "please create a file called \"install.lock\" in your dashboard Root directory. Otherwise no settings will be loaded!",
"or click here": "or click here",
"Company Name": "Company Name",
- "Company Address": "Company Address",
+ "Company Adress": "Company Adress",
"Company Phonenumber": "Company Phonenumber",
"VAT ID": "VAT ID",
- "Company E-Mail Address": "Company E-Mail Address",
+ "Company E-Mail Adress": "Company E-Mail Adress",
"Company Website": "Company Website",
"Invoice Prefix": "Invoice Prefix",
"Enable Invoices": "Enable Invoices",
@@ -173,7 +173,7 @@
"Default language": "Default language",
"The fallback Language, if something goes wrong": "The fallback Language, if something goes wrong",
"Datable language": "Datable language",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ",
"Auto-translate": "Auto-translate",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "If this is checked, the Dashboard will translate itself to the Clients language, if available",
"Client Language-Switch": "Client Language-Switch",
@@ -185,7 +185,7 @@
"Mail Username": "Mail Username",
"Mail Password": "Mail Password",
"Mail Encryption": "Mail Encryption",
- "Mail From Address": "Mail From Address",
+ "Mail From Adress": "Mail From Adress",
"Mail From Name": "Mail From Name",
"Discord Client-ID": "Discord Client-ID",
"Discord Client-Secret": "Discord Client-Secret",
@@ -214,9 +214,9 @@
"Charges the first hour worth of credits upon creating a server.": "Charges the first hour worth of credits upon creating a server.",
"Credits Display Name": "Credits Display Name",
"PHPMyAdmin URL": "PHPMyAdmin URL",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!",
"Pterodactyl URL": "Pterodactyl URL",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Enter the URL to your Pterodactyl installation. Without a trailing slash!",
"Pterodactyl API Key": "Pterodactyl API Key",
"Enter the API Key to your Pterodactyl installation.": "Enter the API Key to your Pterodactyl installation.",
"Force Discord verification": "Force Discord verification",
@@ -284,7 +284,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.",
"Max": "Max",
"Expires at": "Expires at",
- "Used \/ Uses": "Used \/ Uses",
+ "Used / Uses": "Used / Uses",
"Expires": "Expires",
"Sign in to start your session": "Sign in to start your session",
"Password": "Password",
@@ -354,7 +354,7 @@
"No nodes have been linked!": "No nodes have been linked!",
"No nests available!": "No nests available!",
"No eggs have been linked!": "No eggs have been linked!",
- "Software \/ Games": "Software \/ Games",
+ "Software / Games": "Software / Games",
"Please select software ...": "Please select software ...",
"---": "---",
"Specification ": "Specification ",
@@ -417,7 +417,6 @@
"Value": "Value",
"Edit Configuration": "Edit Configuration",
"Text Field": "Text Field",
- "Cancel": "Cancel",
"Save": "Save",
"Images and Icons may be cached, reload without cache to see your changes appear": "Images and Icons may be cached, reload without cache to see your changes appear",
"Enter your companys name": "Enter your companys name",
@@ -430,6 +429,8 @@
"The Language of the Datatables. Grab the Language-Codes from here": "The Language of the Datatables. Grab the Language-Codes from here",
"Let the Client change the Language": "Let the Client change the Language",
"Icons updated!": "Icons updated!",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed",
+ "Caution": "Caution",
"cs": "Czech",
"de": "German",
"en": "English",
@@ -441,5 +442,12 @@
"pl": "Polish",
"zh": "Chinese",
"tr": "Turkish",
- "ru": "Russian"
+ "ru": "Russian",
+ "sv": "Swedish",
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "You can not see your Referral Code": "You can not see your Referral Code",
+ "SERVER NAME": "SERVER NAME",
+ "STORAGE": "STORAGE",
+ "Cancel": "Cancel"
}
diff --git a/lang/sk.json b/lang/sk.json
index 136d498de..99fa908e3 100644
--- a/lang/sk.json
+++ b/lang/sk.json
@@ -81,7 +81,7 @@
"Someone registered using your Code!": "Someone registered using your Code!",
"Server Creation Error": "Server Creation Error",
"Your servers have been suspended!": "Your servers have been suspended!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "To automatically re-enable your server\/s, you need to purchase more credits.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "To automatically re-enable your server/s, you need to purchase more credits.",
"Purchase credits": "Purchase credits",
"If you have any questions please let us know.": "If you have any questions please let us know.",
"Regards": "Regards",
@@ -93,7 +93,7 @@
"Getting started!": "Getting started!",
"Welcome to our dashboard": "Welcome to our dashboard",
"Verification": "Verification",
- "You can verify your e-mail address and link\/verify your Discord account.": "You can verify your e-mail address and link\/verify your Discord account.",
+ "You can verify your e-mail address and link/verify your Discord account.": "You can verify your e-mail address and link/verify your Discord account.",
"Information": "Information",
"This dashboard can be used to create and delete servers": "This dashboard can be used to create and delete servers",
"These servers can be used and managed on our pterodactyl panel": "These servers can be used and managed on our pterodactyl panel",
@@ -126,7 +126,7 @@
"Support server": "Server podpory",
"Documentation": "Dokumentácia",
"Github": "Github",
- "Support ControlPanel": "Podporiť ControlPanel",
+ "Support CtrlPanel": "Podporiť CtrlPanel",
"Servers": "Servery",
"Total": "Celkom",
"Payments": "Platby",
@@ -187,7 +187,7 @@
"Default language": "Default language",
"The fallback Language, if something goes wrong": "The fallback Language, if something goes wrong",
"Datable language": "Datable language",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ",
"Auto-translate": "Auto-translate",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "If this is checked, the Dashboard will translate itself to the Clients language, if available",
"Client Language-Switch": "Client Language-Switch",
@@ -243,9 +243,9 @@
"Charges the first hour worth of credits upon creating a server.": "Charges the first hour worth of credits upon creating a server.",
"Credits Display Name": "Credits Display Name",
"PHPMyAdmin URL": "PHPMyAdmin URL",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!",
"Pterodactyl URL": "Pterodactyl URL",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Enter the URL to your Pterodactyl installation. Without a trailing slash!",
"Pterodactyl API Key": "Pterodactyl API Key",
"Enter the API Key to your Pterodactyl installation.": "Enter the API Key to your Pterodactyl installation.",
"Force Discord verification": "Force Discord verification",
@@ -316,7 +316,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.",
"Max": "Max",
"Expires at": "Expires at",
- "Used \/ Uses": "Used \/ Uses",
+ "Used / Uses": "Used / Uses",
"Expires": "Expires",
"Sign in to start your session": "Sign in to start your session",
"Password": "Password",
@@ -388,7 +388,7 @@
"No nodes have been linked!": "No nodes have been linked!",
"No nests available!": "No nests available!",
"No eggs have been linked!": "No eggs have been linked!",
- "Software \/ Games": "Software \/ Games",
+ "Software / Games": "Software / Games",
"Please select software ...": "Please select software ...",
"---": "---",
"Specification ": "Specification ",
@@ -447,6 +447,8 @@
"Notes": "Notes",
"Amount in words": "Amount in words",
"Please pay until": "Please pay until",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "Aktualizácia alebo deaktualizácia servera resetuje Vašu fakturačnú dobu na aktuálny čas. Vaše nadbytočné kredity budú vrátené. Cena za novú fakturačnú dobu bude odobraná.",
+ "Caution": "Upozornenie",
"cs": "Czech",
"de": "German",
"en": "English",
@@ -460,5 +462,10 @@
"tr": "Turkish",
"ru": "Russian",
"sv": "Swedish",
- "sk": "Slovakish"
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "You can not see your Referral Code": "Nemôžete vidieť váš Referral Code",
+ "SERVER NAME": "MENO SERVERA",
+ "STORAGE": "ÚLOŽISKO",
+ "Cancel": "Zrušiť"
}
diff --git a/lang/sr.json b/lang/sr.json
index 6e23c5260..65ecd37cc 100644
--- a/lang/sr.json
+++ b/lang/sr.json
@@ -81,7 +81,7 @@
"Someone registered using your Code!": "Someone registered using your Code!",
"Server Creation Error": "Greška pri kreiranju servera",
"Your servers have been suspended!": "Vaši serveri su suspendovani!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "Da biste automatski ponovo omogućili svoje servere, potrebno je da kupite još kredita.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "Da biste automatski ponovo omogućili svoje servere, potrebno je da kupite još kredita.",
"Purchase credits": "Kupite kredite",
"If you have any questions please let us know.": "Ako imate bilo kakvih pitanja, molimo vas da nas obavestite.",
"Regards": "Pozdravi",
@@ -93,7 +93,7 @@
"Getting started!": "Početak!",
"Welcome to our dashboard": "Welcome to our dashboard",
"Verification": "Verification",
- "You can verify your e-mail address and link\/verify your Discord account.": "You can verify your e-mail address and link\/verify your Discord account.",
+ "You can verify your e-mail address and link/verify your Discord account.": "You can verify your e-mail address and link/verify your Discord account.",
"Information": "Information",
"This dashboard can be used to create and delete servers": "This dashboard can be used to create and delete servers",
"These servers can be used and managed on our pterodactyl panel": "These servers can be used and managed on our pterodactyl panel",
@@ -126,7 +126,7 @@
"Support server": "Server za podršku",
"Documentation": "Dokumentacija",
"Github": "GitHub",
- "Support ControlPanel": "Podrži ControlPanel",
+ "Support CtrlPanel": "Podrži CtrlPanel",
"Servers": "Serveri",
"Total": "Ukupno",
"Payments": "Plaćanja",
@@ -187,7 +187,7 @@
"Default language": "Podrazumevani jezik",
"The fallback Language, if something goes wrong": "Sekundarni jezik, u slučaju da bude problema",
"Datable language": "Datable language",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ",
"Auto-translate": "Automatski prevod",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "If this is checked, the Dashboard will translate itself to the Clients language, if available",
"Client Language-Switch": "Korisnički izbor za jezik",
@@ -243,9 +243,9 @@
"Charges the first hour worth of credits upon creating a server.": "Naplaćuje kredite u vrednosti od prvog sata prilikom kreiranja servera.",
"Credits Display Name": "Ime prikaza kredita",
"PHPMyAdmin URL": "PHPMyAdmin Link",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "Unesite URL adresu instalacije PHPMyAdmin. Bez kose crte!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "Unesite URL adresu instalacije PHPMyAdmin. Bez kose crte!",
"Pterodactyl URL": "Pterodactyl URL",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Enter the URL to your Pterodactyl installation. Without a trailing slash!",
"Pterodactyl API Key": "Pterodactyl API Key",
"Enter the API Key to your Pterodactyl installation.": "Enter the API Key to your Pterodactyl installation.",
"Force Discord verification": "Force Discord verification",
@@ -316,7 +316,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.",
"Max": "Maksimalno",
"Expires at": "Ističe",
- "Used \/ Uses": "Upotrebljeno \/ Upotrebe",
+ "Used / Uses": "Upotrebljeno / Upotrebe",
"Expires": "Ističe",
"Sign in to start your session": "Prijavite se da biste započeli sesiju",
"Password": "Lozinka",
@@ -388,7 +388,7 @@
"No nodes have been linked!": "Node-ovi nisu povezani!",
"No nests available!": "Nema dostupnih gnezda!",
"No eggs have been linked!": "Jaja nisu povezana!",
- "Software \/ Games": "Softver \/ Igrice",
+ "Software / Games": "Softver / Igrice",
"Please select software ...": "Molimo izaberite softver ...",
"---": "---",
"Specification ": "Specification ",
@@ -447,6 +447,8 @@
"Notes": "Napomena",
"Amount in words": "Iznos u rečima",
"Please pay until": "Molimo platite do",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed",
+ "Caution": "Caution",
"cs": "Czech",
"de": "German",
"en": "English",
@@ -460,5 +462,10 @@
"tr": "Turkish",
"ru": "Russian",
"sv": "Swedish",
- "sk": "Slovakish"
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "You can not see your Referral Code": "Не можете видети свој код за препоруку",
+ "SERVER NAME": "ИМЕ СЕРВЕРА",
+ "STORAGE": "СКЛАДИШТЕ",
+ "Cancel": "Откажи"
}
diff --git a/lang/sv.json b/lang/sv.json
index 805887ef8..d26a47107 100644
--- a/lang/sv.json
+++ b/lang/sv.json
@@ -81,7 +81,7 @@
"Someone registered using your Code!": "Someone registered using your Code!",
"Server Creation Error": "Serverskapande fel",
"Your servers have been suspended!": "Ditt konto har blivit avstängt!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "För att automatiskt återaktivera din server\/s, så måste du köpa mer krediter.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "För att automatiskt återaktivera din server/s, så måste du köpa mer krediter.",
"Purchase credits": "Köp krediter",
"If you have any questions please let us know.": "Kontakta oss gärna om du har några eventuella frågor.",
"Regards": "Hälsningar",
@@ -93,7 +93,7 @@
"Getting started!": "Kom igång!",
"Welcome to our dashboard": "Welcome to our dashboard",
"Verification": "Verification",
- "You can verify your e-mail address and link\/verify your Discord account.": "You can verify your e-mail address and link\/verify your Discord account.",
+ "You can verify your e-mail address and link/verify your Discord account.": "You can verify your e-mail address and link/verify your Discord account.",
"Information": "Information",
"This dashboard can be used to create and delete servers": "This dashboard can be used to create and delete servers",
"These servers can be used and managed on our pterodactyl panel": "These servers can be used and managed on our pterodactyl panel",
@@ -126,7 +126,7 @@
"Support server": "Stödservern",
"Documentation": "Dokumentation",
"Github": "Github",
- "Support ControlPanel": "Support ControlPanel",
+ "Support CtrlPanel": "Support CtrlPanel",
"Servers": "Servers",
"Total": "Total",
"Payments": "Payments",
@@ -187,7 +187,7 @@
"Default language": "Förvalt språk",
"The fallback Language, if something goes wrong": "Reservspråket, om något går fel",
"Datable language": "Daterbart språk",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "Datatabellernas språkkod.
Exempel:<\/strong> en-gb, fr_fr, de_de
Mer information: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "Datatabellernas språkkod.
Exempel: en-gb, fr_fr, de_de
Mer information: ",
"Auto-translate": "Auto-översätt",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "If this is checked, the Dashboard will translate itself to the Clients language, if available",
"Client Language-Switch": "Client Language-Switch",
@@ -243,9 +243,9 @@
"Charges the first hour worth of credits upon creating a server.": "Charges the first hour worth of credits upon creating a server.",
"Credits Display Name": "Credits Display Name",
"PHPMyAdmin URL": "PHPMyAdmin URL",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!",
"Pterodactyl URL": "Pterodactyl URL",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Enter the URL to your Pterodactyl installation. Without a trailing slash!",
"Pterodactyl API Key": "Pterodactyl API Key",
"Enter the API Key to your Pterodactyl installation.": "Enter the API Key to your Pterodactyl installation.",
"Force Discord verification": "Force Discord verification",
@@ -316,7 +316,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.",
"Max": "Max",
"Expires at": "Expires at",
- "Used \/ Uses": "Used \/ Uses",
+ "Used / Uses": "Used / Uses",
"Expires": "Expires",
"Sign in to start your session": "Sign in to start your session",
"Password": "Password",
@@ -388,7 +388,7 @@
"No nodes have been linked!": "No nodes have been linked!",
"No nests available!": "No nests available!",
"No eggs have been linked!": "No eggs have been linked!",
- "Software \/ Games": "Software \/ Games",
+ "Software / Games": "Software / Games",
"Please select software ...": "Please select software ...",
"---": "---",
"Specification ": "Specification ",
@@ -447,6 +447,8 @@
"Notes": "Notes",
"Amount in words": "Amount in words",
"Please pay until": "Please pay until",
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed",
+ "Caution": "Caution",
"cs": "Czech",
"de": "German",
"en": "English",
@@ -460,5 +462,10 @@
"tr": "Turkish",
"ru": "Russian",
"sv": "Swedish",
- "sk": "Slovakish"
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "You can not see your Referral Code": "Du kan inte se din hänvisningskod",
+ "SERVER NAME": "SERVERNAMN",
+ "STORAGE": "LAGRING",
+ "Cancel": "Avbryt"
}
diff --git a/lang/tr.json b/lang/tr.json
index f712fd680..1a31d925a 100644
--- a/lang/tr.json
+++ b/lang/tr.json
@@ -81,7 +81,7 @@
"Someone registered using your Code!": "Birileri senin kodunu kullanarak kayıt oldu!",
"Server Creation Error": "Sunucu Oluşturma Hatası",
"Your servers have been suspended!": "Sunucularınız askıya alındı!",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "Sunucularınızı\/sunucularınızı otomatik olarak yeniden etkinleştirmek için daha fazla kredi satın almanız gerekir.",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "Sunucularınızı/sunucularınızı otomatik olarak yeniden etkinleştirmek için daha fazla kredi satın almanız gerekir.",
"Purchase credits": "Satın alma kredisi",
"If you have any questions please let us know.": "Herhangi bir sorunuz varsa lütfen bize bildirin.",
"Regards": "Saygılarımızla",
@@ -93,7 +93,7 @@
"Getting started!": "Başlarken!",
"Welcome to our dashboard": "Kontrol panelimize hoş geldiniz",
"Verification": "Doğrulama",
- "You can verify your e-mail address and link\/verify your Discord account.": "E-posta adresinizi doğrulayabilir ve Discord hesabınızı bağlayabilir\/doğrulayabilirsiniz.",
+ "You can verify your e-mail address and link/verify your Discord account.": "E-posta adresinizi doğrulayabilir ve Discord hesabınızı bağlayabilir/doğrulayabilirsiniz.",
"Information": "Bilgi",
"This dashboard can be used to create and delete servers": "Bu gösterge panosu, sunucular oluşturmak ve silmek için kullanılabilir",
"These servers can be used and managed on our pterodactyl panel": "Bu sunucular pterodactyl panelimizde kullanılabilir ve yönetilebilir",
@@ -126,7 +126,7 @@
"Support server": "Destek sunucusu",
"Documentation": "Dökümantasyon",
"Github": "GitHub",
- "Support ControlPanel": "ContrılPanel'i destekle",
+ "Support CtrlPanel": "CtrlPanel'i destekle",
"Servers": "Sunucular",
"Total": "Toplam",
"Payments": "Ödemeler",
@@ -187,7 +187,7 @@
"Default language": "Varsayılan Dil",
"The fallback Language, if something goes wrong": "Yedek dil, eğer bir şeyler yanlış giderse",
"Datable language": "Tarih Dili",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "Tarihlerde kullanılacak dil kodu.
Örnek:<\/strong> en-gb, fr_fr, de_de
Daha fazla bilgi: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "Tarihlerde kullanılacak dil kodu.
Örnek: en-gb, fr_fr, de_de
Daha fazla bilgi: ",
"Auto-translate": "Otomatik çeviri",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "Eğer bu seçili ise Yönetim paneli kendisini kullanıcının diline çevirecek, eğer kullanılabiliyorsa",
"Client Language-Switch": "Müşteri Dil Değiştiricisi",
@@ -243,9 +243,9 @@
"Charges the first hour worth of credits upon creating a server.": "Kullanıcı sunucu oluşturduğumda ilk saatin ödemesini direkt olarak alır.",
"Credits Display Name": "Kredi ismi",
"PHPMyAdmin URL": "PHPMyAdmin linki",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "PHPMyAdmin kurulumunuzun linkini girin Sonda eğik çizgi olmadan<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "PHPMyAdmin kurulumunuzun linkini girin Sonda eğik çizgi olmadan",
"Pterodactyl URL": "Pterodactyl Linki",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "Pterodactyl kurulumunuzun linkini girin Sonda eğik çizgi olmadan!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "Pterodactyl kurulumunuzun linkini girin Sonda eğik çizgi olmadan!",
"Pterodactyl API Key": "Pterodactyl API Anahtarı",
"Enter the API Key to your Pterodactyl installation.": "Pterodactyl kurulumunuzun API anahtarını girin.",
"Force Discord verification": "Discord Doğrulamasını zorunlu yap",
@@ -316,7 +316,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "Bir kupon, kullanıcı başına yalnızca bir kez kullanılabilir. Kullanımlar, bu kuponu kullanabilecek farklı kullanıcıların sayısını belirtir.",
"Max": "Maks",
"Expires at": "Sona eriyor",
- "Used \/ Uses": "Kullanılmış \/ Kullanım Alanları",
+ "Used / Uses": "Kullanılmış / Kullanım Alanları",
"Expires": "Sona eriyor",
"Sign in to start your session": "Oturumunuzu başlatmak için oturum açın",
"Password": "Parola",
@@ -388,7 +388,7 @@
"No nodes have been linked!": "Hiçbir makine bağlanmamış!",
"No nests available!": "Hiçbir nest bulunamadı!",
"No eggs have been linked!": "Hiçbir egg bağlanmamış!",
- "Software \/ Games": "Yazılımlar \/ Oyunlar",
+ "Software / Games": "Yazılımlar / Oyunlar",
"Please select software ...": "Lütfen bir yazılım seçin ...",
"---": "---",
"Specification ": "Özellikler ",
@@ -447,18 +447,25 @@
"Notes": "Notlar",
"Amount in words": "Yazı ile Tutar",
"Please pay until": "Lütfen şu tarihe kadar ödeyin",
- "cs": "Çekçe",
- "de": "Almanca",
- "en": "İngilizce",
- "es": "İspanyolca",
- "fr": "Fransızca",
- "hi": "Hintçe",
- "it": "İtalyanca",
- "nl": "Flemenkçe",
- "pl": "Polonya",
- "zh": "Çince",
- "tr": "Türkçe",
- "ru": "Rusça",
- "sv": "İsveççe",
- "sk": "Slovakça"
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "Sunucunuzu yükseltmek / düşürmek faturalandırma döngünüzü şimdiye sıfırlayacaktır. Aşırı ödenen kredileriniz iade edilecektir. Yeni faturalandırma döngüsü için ödenen tutar çekilecektir",
+ "Caution": "Dikkat",
+ "cs": "Czech",
+ "de": "German",
+ "en": "English",
+ "es": "Spanish",
+ "fr": "French",
+ "hi": "Hindi",
+ "it": "Italian",
+ "nl": "Dutch",
+ "pl": "Polish",
+ "zh": "Chinese",
+ "tr": "Turkish",
+ "ru": "Russian",
+ "sv": "Swedish",
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "You can not see your Referral Code": "Yönlendirme Kodunuzu göremezsiniz",
+ "SERVER NAME": "SUNUCU ADI",
+ "STORAGE": "DEPOLAMA",
+ "Cancel": "Iptal"
}
diff --git a/lang/zh.json b/lang/zh.json
index 0e665123e..c18dad757 100644
--- a/lang/zh.json
+++ b/lang/zh.json
@@ -81,7 +81,7 @@
"Someone registered using your Code!": "已经有人使用您的代码注册了",
"Server Creation Error": "服务器创建错误",
"Your servers have been suspended!": "您的服务器已被暂停",
- "To automatically re-enable your server\/s, you need to purchase more credits.": "如需重新启用你的服务器,您需要购买更多的余额",
+ "To automatically re-enable your server/s, you need to purchase more credits.": "如需重新启用你的服务器,您需要购买更多的余额",
"Purchase credits": "购买余额",
"If you have any questions please let us know.": "如果您有其他任何问题,欢迎联系我们。",
"Regards": "此致",
@@ -93,7 +93,7 @@
"Getting started!": "开始吧!",
"Welcome to our dashboard": "欢迎访问 dashboard",
"Verification": "验证",
- "You can verify your e-mail address and link\/verify your Discord account.": "你可以验证你的邮箱地址或者连接到你的Discord账户",
+ "You can verify your e-mail address and link/verify your Discord account.": "你可以验证你的邮箱地址或者连接到你的Discord账户",
"Information": "相关信息",
"This dashboard can be used to create and delete servers": "此仪表板可用于创建和删除服务器",
"These servers can be used and managed on our pterodactyl panel": "这些服务器可以在我们的pterodactyl面板上使用和管理",
@@ -126,7 +126,7 @@
"Support server": "支持服务器",
"Documentation": "文档",
"Github": "Github",
- "Support ControlPanel": "支持我们",
+ "Support CtrlPanel": "支持我们",
"Servers": "服务器",
"Total": "总数",
"Payments": "支付费用",
@@ -187,7 +187,7 @@
"Default language": "默认语言",
"The fallback Language, if something goes wrong": "备用语言",
"Datable language": "可用语言",
- "The datatables lang-code.
Example:<\/strong> en-gb, fr_fr, de_de
More Information: ": "数据表语言代码
示例:<\/strong> en-gb、fr_fr、de_de
更多信息: ",
+ "The datatables lang-code.
Example: en-gb, fr_fr, de_de
More Information: ": "数据表语言代码
示例: en-gb、fr_fr、de_de
更多信息: ",
"Auto-translate": "自动翻译",
"If this is checked, the Dashboard will translate itself to the Clients language, if available": "如果勾选此项,系统将把自己翻译成客户语言(如果有)",
"Client Language-Switch": "客户语言切换",
@@ -243,9 +243,9 @@
"Charges the first hour worth of credits upon creating a server.": "在创建服务器时收取第一个小时的费用",
"Credits Display Name": "积分显示名称",
"PHPMyAdmin URL": "PHPMyAdmin地址",
- "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!<\/strong>": "输入你PHPMyAdmin的URL。不要有尾部斜线!<\/strong>",
+ "Enter the URL to your PHPMyAdmin installation. Without a trailing slash!": "输入你PHPMyAdmin的URL。不要有尾部斜线!",
"Pterodactyl URL": "Pterodactyl地址",
- "Enter the URL to your Pterodactyl installation. Without a trailing slash!<\/strong>": "输入你Pterodactyl的URL。不要有尾部斜线!<\/strong>",
+ "Enter the URL to your Pterodactyl installation. Without a trailing slash!": "输入你Pterodactyl的URL。不要有尾部斜线!",
"Pterodactyl API Key": "Pterodactyl API密钥",
"Enter the API Key to your Pterodactyl installation.": "输入Pterodactyl API密钥",
"Force Discord verification": "强制Discord验证",
@@ -316,7 +316,7 @@
"A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.": "每个用户只能使用一次代金券。使用次数指定了可以使用此代金券的不同用户的数量。",
"Max": "最大",
"Expires at": "过期时间",
- "Used \/ Uses": "已使用\/使用情况",
+ "Used / Uses": "已使用/使用情况",
"Expires": "过期",
"Sign in to start your session": "登录以开始您的会议",
"Password": "密码",
@@ -388,7 +388,7 @@
"No nodes have been linked!": "没有节点被链接!",
"No nests available!": "没有可用的巢穴!",
"No eggs have been linked!": "没有蛋被链接!",
- "Software \/ Games": "软件\/游戏",
+ "Software / Games": "软件/游戏",
"Please select software ...": "请选择软件...",
"---": "---",
"Specification ": "规格 ",
@@ -447,18 +447,25 @@
"Notes": "笔记",
"Amount in words": "税额的字数",
"Please pay until": "请支付至",
- "cs": "捷克语",
- "de": "德语",
- "en": "英语",
- "es": "西班牙语",
- "fr": "法语",
- "hi": "印度语",
- "it": "意大利语",
- "nl": "荷兰语",
- "pl": "波兰语",
- "zh": "中文(简体)",
- "tr": "土耳其语",
- "ru": "俄语",
- "sv": "乌克兰语",
- "sk": "斯洛伐克语"
+ "Upgrading/Downgrading your server will reset your billing cycle to now. Your overpayed Credits will be refunded. The price for the new billing cycle will be withdrawed": "升级/降级你的服务器将重置你的账单周期。你的多余的点数将被退还。新的账单周期的价格将被扣除",
+ "Caution": "警告",
+ "cs": "Czech",
+ "de": "German",
+ "en": "English",
+ "es": "Spanish",
+ "fr": "French",
+ "hi": "Hindi",
+ "it": "Italian",
+ "nl": "Dutch",
+ "pl": "Polish",
+ "zh": "Chinese",
+ "tr": "Turkish",
+ "ru": "Russian",
+ "sv": "Swedish",
+ "sk": "Slovakish",
+ "hu": "Hungarian",
+ "You can not see your Referral Code": "您无法查看您的推荐码",
+ "SERVER NAME": "服务器名称",
+ "STORAGE": "存储",
+ "Cancel": "取消"
}
diff --git a/package-lock.json b/package-lock.json
index 98052340c..95a8ff2b6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,5 +1,5 @@
{
- "name": "dashboard",
+ "name": "CtrlPanel",
"lockfileVersion": 2,
"requires": true,
"packages": {
@@ -416,9 +416,9 @@
}
},
"node_modules/@types/eslint": {
- "version": "8.4.10",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz",
- "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==",
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.0.tgz",
+ "integrity": "sha512-35EhHNOXgxnUgh4XCJsGhE7zdlDhYDN/aMG6UbkByCFFNgQ7b3U+uVoqBpicFydR8JEfgdjCF7SJ7MiJfzuiTA==",
"dev": true,
"peer": true,
"dependencies": {
@@ -822,9 +822,9 @@
}
},
"node_modules/browserslist": {
- "version": "4.21.4",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
- "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
+ "version": "4.21.5",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
+ "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
"dev": true,
"funding": [
{
@@ -838,10 +838,10 @@
],
"peer": true,
"dependencies": {
- "caniuse-lite": "^1.0.30001400",
- "electron-to-chromium": "^1.4.251",
- "node-releases": "^2.0.6",
- "update-browserslist-db": "^1.0.9"
+ "caniuse-lite": "^1.0.30001449",
+ "electron-to-chromium": "^1.4.284",
+ "node-releases": "^2.0.8",
+ "update-browserslist-db": "^1.0.10"
},
"bin": {
"browserslist": "cli.js"
@@ -867,9 +867,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001449",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001449.tgz",
- "integrity": "sha512-CPB+UL9XMT/Av+pJxCKGhdx+yg1hzplvFJQlJ2n68PyQGMz9L/E2zCyLdOL8uasbouTUgnPl+y0tccI/se+BEw==",
+ "version": "1.0.30001450",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001450.tgz",
+ "integrity": "sha512-qMBmvmQmFXaSxexkjjfMvD5rnDL0+m+dUMZKoDYsGG8iZN29RuYh9eRoMvKsT6uMAWlyUUGDEQGJJYjzCIO9ew==",
"dev": true,
"funding": [
{
@@ -1027,9 +1027,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.4.284",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
- "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
+ "version": "1.4.285",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.285.tgz",
+ "integrity": "sha512-47o4PPgxfU1KMNejz+Dgaodf7YTcg48uOfV1oM6cs3adrl2+7R+dHkt3Jpxqo0LRCbGJEzTKMUt0RdvByb/leg==",
"dev": true,
"peer": true
},
@@ -1336,9 +1336,9 @@
}
},
"node_modules/immutable": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.2.tgz",
- "integrity": "sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.3.tgz",
+ "integrity": "sha512-IHpmvaOIX4VLJwPOuQr1NpeBr2ZG6vpIj3blsLVxXRWJscLioaJRStqC+NcBsLeCDsnGlPpXd5/WZmnE7MbsKA==",
"devOptional": true
},
"node_modules/inherits": {
@@ -1575,9 +1575,9 @@
"dev": true
},
"node_modules/node-releases": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz",
- "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==",
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.9.tgz",
+ "integrity": "sha512-2xfmOrRkGogbTK9R6Leda0DGiXeY3p2NJpy4+gNCffdUvV6mdEJnaDEic1i3Ec2djAo8jWYoJMR5PB0MSMpxUA==",
"dev": true,
"peer": true
},
@@ -1788,9 +1788,9 @@
"dev": true
},
"node_modules/rollup": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.12.0.tgz",
- "integrity": "sha512-4MZ8kA2HNYahIjz63rzrMMRvDqQDeS9LoriJvMuV0V6zIGysP36e9t4yObUfwdT9h/szXoHQideICftcdZklWg==",
+ "version": "3.13.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.13.0.tgz",
+ "integrity": "sha512-HJwQtrXAc0AmyDohTJ/2c+Bx/sWPScJLlAUJ1kuD7rAkCro8Cr2SnVB2gVYBiSLxpgD2kZ24jbyXtG++GumrYQ==",
"bin": {
"rollup": "dist/bin/rollup"
},
@@ -1809,9 +1809,9 @@
"dev": true
},
"node_modules/sass": {
- "version": "1.57.1",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.57.1.tgz",
- "integrity": "sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==",
+ "version": "1.58.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.58.0.tgz",
+ "integrity": "sha512-PiMJcP33DdKtZ/1jSjjqVIKihoDc6yWmYr9K/4r3fVVIEDAluD0q7XZiRKrNJcPK3qkLRF/79DND1H5q1LBjgg==",
"devOptional": true,
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
@@ -2018,9 +2018,9 @@
}
},
"node_modules/terser": {
- "version": "5.16.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz",
- "integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==",
+ "version": "5.16.3",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.3.tgz",
+ "integrity": "sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==",
"devOptional": true,
"peer": true,
"dependencies": {
@@ -2138,14 +2138,14 @@
"dev": true
},
"node_modules/vite": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz",
- "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.1.tgz",
+ "integrity": "sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==",
"dependencies": {
- "esbuild": "^0.16.3",
- "postcss": "^8.4.20",
+ "esbuild": "^0.16.14",
+ "postcss": "^8.4.21",
"resolve": "^1.22.1",
- "rollup": "^3.7.0"
+ "rollup": "^3.10.0"
},
"bin": {
"vite": "bin/vite.js"
@@ -2465,9 +2465,9 @@
}
},
"@types/eslint": {
- "version": "8.4.10",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz",
- "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==",
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.0.tgz",
+ "integrity": "sha512-35EhHNOXgxnUgh4XCJsGhE7zdlDhYDN/aMG6UbkByCFFNgQ7b3U+uVoqBpicFydR8JEfgdjCF7SJ7MiJfzuiTA==",
"dev": true,
"peer": true,
"requires": {
@@ -2813,16 +2813,16 @@
}
},
"browserslist": {
- "version": "4.21.4",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
- "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
+ "version": "4.21.5",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
+ "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
"dev": true,
"peer": true,
"requires": {
- "caniuse-lite": "^1.0.30001400",
- "electron-to-chromium": "^1.4.251",
- "node-releases": "^2.0.6",
- "update-browserslist-db": "^1.0.9"
+ "caniuse-lite": "^1.0.30001449",
+ "electron-to-chromium": "^1.4.284",
+ "node-releases": "^2.0.8",
+ "update-browserslist-db": "^1.0.10"
}
},
"buffer-from": {
@@ -2839,9 +2839,9 @@
"dev": true
},
"caniuse-lite": {
- "version": "1.0.30001449",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001449.tgz",
- "integrity": "sha512-CPB+UL9XMT/Av+pJxCKGhdx+yg1hzplvFJQlJ2n68PyQGMz9L/E2zCyLdOL8uasbouTUgnPl+y0tccI/se+BEw==",
+ "version": "1.0.30001450",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001450.tgz",
+ "integrity": "sha512-qMBmvmQmFXaSxexkjjfMvD5rnDL0+m+dUMZKoDYsGG8iZN29RuYh9eRoMvKsT6uMAWlyUUGDEQGJJYjzCIO9ew==",
"dev": true,
"peer": true
},
@@ -2965,9 +2965,9 @@
"dev": true
},
"electron-to-chromium": {
- "version": "1.4.284",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
- "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
+ "version": "1.4.285",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.285.tgz",
+ "integrity": "sha512-47o4PPgxfU1KMNejz+Dgaodf7YTcg48uOfV1oM6cs3adrl2+7R+dHkt3Jpxqo0LRCbGJEzTKMUt0RdvByb/leg==",
"dev": true,
"peer": true
},
@@ -3207,9 +3207,9 @@
"peer": true
},
"immutable": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.2.tgz",
- "integrity": "sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.3.tgz",
+ "integrity": "sha512-IHpmvaOIX4VLJwPOuQr1NpeBr2ZG6vpIj3blsLVxXRWJscLioaJRStqC+NcBsLeCDsnGlPpXd5/WZmnE7MbsKA==",
"devOptional": true
},
"inherits": {
@@ -3392,9 +3392,9 @@
"dev": true
},
"node-releases": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz",
- "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==",
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.9.tgz",
+ "integrity": "sha512-2xfmOrRkGogbTK9R6Leda0DGiXeY3p2NJpy4+gNCffdUvV6mdEJnaDEic1i3Ec2djAo8jWYoJMR5PB0MSMpxUA==",
"dev": true,
"peer": true
},
@@ -3553,9 +3553,9 @@
"dev": true
},
"rollup": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.12.0.tgz",
- "integrity": "sha512-4MZ8kA2HNYahIjz63rzrMMRvDqQDeS9LoriJvMuV0V6zIGysP36e9t4yObUfwdT9h/szXoHQideICftcdZklWg==",
+ "version": "3.13.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.13.0.tgz",
+ "integrity": "sha512-HJwQtrXAc0AmyDohTJ/2c+Bx/sWPScJLlAUJ1kuD7rAkCro8Cr2SnVB2gVYBiSLxpgD2kZ24jbyXtG++GumrYQ==",
"requires": {
"fsevents": "~2.3.2"
}
@@ -3567,9 +3567,9 @@
"dev": true
},
"sass": {
- "version": "1.57.1",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.57.1.tgz",
- "integrity": "sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==",
+ "version": "1.58.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.58.0.tgz",
+ "integrity": "sha512-PiMJcP33DdKtZ/1jSjjqVIKihoDc6yWmYr9K/4r3fVVIEDAluD0q7XZiRKrNJcPK3qkLRF/79DND1H5q1LBjgg==",
"devOptional": true,
"requires": {
"chokidar": ">=3.0.0 <4.0.0",
@@ -3703,9 +3703,9 @@
"peer": true
},
"terser": {
- "version": "5.16.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz",
- "integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==",
+ "version": "5.16.3",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.3.tgz",
+ "integrity": "sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==",
"devOptional": true,
"peer": true,
"requires": {
@@ -3776,15 +3776,15 @@
"dev": true
},
"vite": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz",
- "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.1.tgz",
+ "integrity": "sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==",
"requires": {
- "esbuild": "^0.16.3",
+ "esbuild": "^0.16.14",
"fsevents": "~2.3.2",
- "postcss": "^8.4.20",
+ "postcss": "^8.4.21",
"resolve": "^1.22.1",
- "rollup": "^3.7.0"
+ "rollup": "^3.10.0"
}
},
"vite-plugin-full-reload": {
diff --git a/phpunit.xml b/phpunit.xml
index fc15f97bc..1c2c01844 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -22,7 +22,7 @@
Lets feed your Database and generate some security keys!
-This process might take a while. Please do not refresh or close this page!
- ".$_GET['message'].''; - } ?> - - - - - - - - -Lets get your E-Mails going!
-This might take a few seconds when submitted!
- - ".$_GET['message'].''; - } ?> - - - - - - - - -Lets create yourself!
-We're making the first Admin user
- ".$_GET['message'].''; - } ?> - - - - - - - - -All done!
-You may navigate to your Dashboard now and log in!
- - - - - - - - - - - - - diff --git a/public/install/dotenv.php b/public/installer/dotenv.php similarity index 100% rename from public/install/dotenv.php rename to public/installer/dotenv.php diff --git a/public/installer/index.php b/public/installer/index.php new file mode 100644 index 000000000..600a3297e --- /dev/null +++ b/public/installer/index.php @@ -0,0 +1,103 @@ +load(); + +$stepConfig = [ + 1 => ['view' => 'mandatory-checks', 'is_revertable' => false], + 2 => ['view' => 'timezone-configuration', 'is_revertable' => true], + 3 => ['view' => 'database-configuration', 'is_revertable' => true], + 4 => ['view' => 'database-migration', 'is_revertable' => false], + 5 => ['view' => 'redis-configuration', 'is_revertable' => true], + 6 => ['view' => 'dashboard-configuration', 'is_revertable' => true], + 7 => ['view' => 'email-configuration', 'is_revertable' => true], + 8 => ['view' => 'pterodactyl-configuration', 'is_revertable' => false], + 9 => ['view' => 'admin-creation', 'is_revertable' => false], + 10 => ['view' => 'installation-complete', 'is_revertable' => false], +]; + +$_SESSION['last_installation_step'] = count($stepConfig); + +// Initialize or get the current step: +if (!isset($_SESSION['current_installation_step'])) { + // Session variable is not set, initialize it in the SESSION + $_SESSION['current_installation_step'] = 1; +} + +if (isset($_GET['step'])) { + $stepValue = $_GET['step']; + $currentStep = $_SESSION['current_installation_step']; + + if (strtolower($stepValue) === 'next' && $currentStep < $_SESSION['last_installation_step']) { + $_SESSION['current_installation_step']++; + // Redirect to clean URL after processing + header('Location: index.php'); + exit; + } + elseif (strtolower($stepValue) === 'previous' && $currentStep > 1) { + if ($stepConfig[$currentStep - 1]['is_revertable']) { + $_SESSION['current_installation_step']--; + header('Location: index.php'); + exit; + } + } + elseif (is_numeric($stepValue)) { + // Only allow accessing previous or current steps + if ($stepValue <= $currentStep && $stepValue >= 1 && $stepValue <= $_SESSION['last_installation_step']) { + $_SESSION['current_installation_step'] = $stepValue; + } + header('Location: index.php'); + exit; + } +} + +$viewName = $stepConfig[$_SESSION['current_installation_step']]['view']; + +// Set previous button availability based on step reversibility +$_SESSION['is_previous_button_available'] = $_SESSION['current_installation_step'] > 1 && $stepConfig[$_SESSION['current_installation_step'] - 1]['is_revertable']; + +// Load the layout and the specific view file +include './views/layout-top.php'; +include "./views/{$viewName}.php"; +include './views/layout-bottom.php'; + +// setting / reseting the error message +$_SESSION['error-message'] = null; + +?> \ No newline at end of file diff --git a/public/installer/src/forms/admin.php b/public/installer/src/forms/admin.php new file mode 100644 index 000000000..5626e5dc3 --- /dev/null +++ b/public/installer/src/forms/admin.php @@ -0,0 +1,101 @@ +load(); + +if (isset($_POST['createUser'])) { + wh_log('Getting Pterodactyl User', 'debug'); + + try { + $db = new mysqli(getenv('DB_HOST'), getenv('DB_USERNAME'), getenv('DB_PASSWORD'), getenv('DB_DATABASE'), getenv('DB_PORT')); + } catch (Throwable $th) { + wh_log($th->getMessage(), 'error'); + send_error_message("Could not connect to the Database"); + exit(); + } + + $pteroID = $_POST['pteroID']; + $pass = $_POST['pass']; + $repass = $_POST['repass']; + + try { + $panelUrl = run_console("php artisan settings:get 'PterodactylSettings' 'panel_url' --sameline"); + $adminToken = run_console("php artisan settings:get 'PterodactylSettings' 'admin_token' --sameline"); + } catch (Throwable $th) { + wh_log("Getting Pterodactyl information failed.", 'error'); + send_error_message($th->getMessage() . "+ * The initial working dir for the command. This must be an + * absolute directory path, or null + * if you want to use the default value (the working dir of the current + * PHP process) + *
+ * @param array|null $options [optional]+ * Allows you to specify additional options. + * @link https://www.php.net/manual/en/function.proc-open.php proc_open + *
+ * @return false|string|null Returns the result from the command. + */ +function run_console(string $command, array $descriptors = null, string $cwd = null, array $options = null) +{ + wh_log('running command: ' . $command, 'debug'); + + $path = dirname(__DIR__, 4); + $descriptors = $descriptors ?? [0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => ['pipe', 'w']]; + $handle = proc_open("cd '$path' && bash -c 'exec -a ServerCPP $command'", $descriptors, $pipes, $cwd, null, $options); + $output = stream_get_contents($pipes[1]); + $exit_code = proc_close($handle); + + if ($exit_code > 0) { + wh_log('command result: ' . $output, 'error'); + throw new Exception("There was an error after running command `$command`", $exit_code); + return $output; + } else { + return $output; + } +} + +?> diff --git a/public/installer/src/functions/utils.php b/public/installer/src/functions/utils.php new file mode 100644 index 000000000..5c13ec524 --- /dev/null +++ b/public/installer/src/functions/utils.php @@ -0,0 +1,46 @@ +load(); + +/** + * Encrypt the given value + * @param mixed $value The variable to be encrypted + * @param bool $serialize If the encryption should be serialized + * @return string Returns the encrypted variable. + */ +function encryptSettingsValue(mixed $value, $serialize = true): string +{ + $appKey = getenv('APP_KEY'); + $appKey = base64_decode(Str::after($appKey, 'base64:')); + $encrypter = new Encrypter($appKey, 'AES-256-CBC'); + $encryptedKey = $encrypter->encrypt($value, $serialize); + + return $encryptedKey; +} + +/** + * Decrypt the given value + * @param mixed $payload The payload to be decrypted + * @param bool $unserialize If the encryption should be unserialized + * @return mixed Returns the decrypted variable on success, throws otherwise. + */ + +function decryptSettingsValue(mixed $payload, $unserialize = true) +{ + $appKey = getenv('APP_KEY'); + $appKey = base64_decode(Str::after($appKey, 'base64:')); + $encrypter = new Encrypter($appKey, 'AES-256-CBC'); + $decryptedKey = $encrypter->decrypt($payload, $unserialize); + + return $decryptedKey; +} + +function determineIfRunningInDocker(): bool +{ + return file_exists('/.dockerenv'); +} + +?> diff --git a/public/install/phpmailer/Exception.php b/public/installer/src/phpmailer/Exception.php similarity index 100% rename from public/install/phpmailer/Exception.php rename to public/installer/src/phpmailer/Exception.php diff --git a/public/install/phpmailer/PHPMailer.php b/public/installer/src/phpmailer/PHPMailer.php similarity index 100% rename from public/install/phpmailer/PHPMailer.php rename to public/installer/src/phpmailer/PHPMailer.php diff --git a/public/install/phpmailer/SMTP.php b/public/installer/src/phpmailer/SMTP.php similarity index 100% rename from public/install/phpmailer/SMTP.php rename to public/installer/src/phpmailer/SMTP.php diff --git a/public/installer/styles.css b/public/installer/styles.css new file mode 100644 index 000000000..c9ed45534 --- /dev/null +++ b/public/installer/styles.css @@ -0,0 +1,983 @@ +/* + * You need to have `tailwindcss` packages installed for these commands to work. + * + * Build: `tailwindcss -i tailwind_styles.css -o styles.css -m` + * Dev: `tailwindcss -i tailwind_styles.css -o styles.css --watch` + */ + +/* + ! tailwindcss v3.4.4 | MIT License | https://tailwindcss.com + */ + +/* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ + +*, +::before, +::after { + box-sizing: border-box; + /* 1 */ + border-width: 0; + /* 2 */ + border-style: solid; + /* 2 */ + border-color: #e2e8f0; + /* 2 */ +} + +::before, +::after { + --tw-content: ''; +} + +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +5. Use the user's configured `sans` font-feature-settings by default. +6. Use the user's configured `sans` font-variation-settings by default. +7. Disable tap highlights on iOS +*/ + +html, +:host { + line-height: 1.5; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ + -moz-tab-size: 4; + /* 3 */ + -o-tab-size: 4; + tab-size: 4; + /* 3 */ + font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + /* 4 */ + font-feature-settings: normal; + /* 5 */ + font-variation-settings: normal; + /* 6 */ + -webkit-tap-highlight-color: transparent; + /* 7 */ +} + +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ + +body { + margin: 0; + /* 1 */ + line-height: inherit; + /* 2 */ +} + +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ + +hr { + height: 0; + /* 1 */ + color: inherit; + /* 2 */ + border-top-width: 1px; + /* 3 */ +} + +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/* +Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + text-decoration: inherit; +} + +/* +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* +1. Use the user's configured `mono` font-family by default. +2. Use the user's configured `mono` font-feature-settings by default. +3. Use the user's configured `mono` font-variation-settings by default. +4. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + /* 1 */ + font-feature-settings: normal; + /* 2 */ + font-variation-settings: normal; + /* 3 */ + font-size: 1em; + /* 4 */ +} + +/* +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; + /* 1 */ + border-color: inherit; + /* 2 */ + border-collapse: collapse; + /* 3 */ +} + +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-feature-settings: inherit; + /* 1 */ + font-variation-settings: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + font-weight: inherit; + /* 1 */ + line-height: inherit; + /* 1 */ + letter-spacing: inherit; + /* 1 */ + color: inherit; + /* 1 */ + margin: 0; + /* 2 */ + padding: 0; + /* 3 */ +} + +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ + +button, +select { + text-transform: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ + +button, +input:where([type='button']), +input:where([type='reset']), +input:where([type='submit']) { + -webkit-appearance: button; + /* 1 */ + background-color: transparent; + /* 2 */ + background-image: none; + /* 2 */ +} + +/* +Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type='search'] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} + +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* +Removes the default spacing and border for appropriate elements. +*/ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +fieldset { + margin: 0; + padding: 0; +} + +legend { + padding: 0; +} + +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +} + +/* +Reset default styling for dialogs. +*/ + +dialog { + padding: 0; +} + +/* +Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ + +input::-moz-placeholder, textarea::-moz-placeholder { + opacity: 1; + /* 1 */ + color: #94a3b8; + /* 2 */ +} + +input::placeholder, +textarea::placeholder { + opacity: 1; + /* 1 */ + color: #94a3b8; + /* 2 */ +} + +/* +Set the default cursor for buttons. +*/ + +button, +[role="button"] { + cursor: pointer; +} + +/* +Make sure disabled buttons don't get the pointer cursor. +*/ + +:disabled { + cursor: default; +} + +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; + /* 1 */ + vertical-align: middle; + /* 2 */ +} + +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +img, +video { + max-width: 100%; + height: auto; +} + +/* Make elements with the HTML hidden attribute stay hidden by default */ + +[hidden] { + display: none; +} + +*, ::before, ::after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +::backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +.container { + width: 100%; +} + +@media (min-width: 640px) { + .container { + max-width: 640px; + } +} + +@media (min-width: 768px) { + .container { + max-width: 768px; + } +} + +@media (min-width: 1024px) { + .container { + max-width: 1024px; + } +} + +@media (min-width: 1280px) { + .container { + max-width: 1280px; + } +} + +@media (min-width: 1536px) { + .container { + max-width: 1536px; + } +} + +.static { + position: static; +} + +.fixed { + position: fixed; +} + +.absolute { + position: absolute; +} + +.relative { + position: relative; +} + +.bottom-0 { + bottom: 0px; +} + +.m-0 { + margin: 0px; +} + +.mx-2 { + margin-left: 0.5rem; + margin-right: 0.5rem; +} + +.my-6 { + margin-top: 1.5rem; + margin-bottom: 1.5rem; +} + +.mb-1 { + margin-bottom: 0.25rem; +} + +.mb-2 { + margin-bottom: 0.5rem; +} + +.mb-3 { + margin-bottom: 0.75rem; +} + +.mt-2 { + margin-top: 0.5rem; +} + +.mt-4 { + margin-top: 1rem; +} + +.mr-1 { + margin-right: 0.25rem; +} + +.ml-1 { + margin-left: 0.25rem; +} + +.box-border { + box-sizing: border-box; +} + +.block { + display: block; +} + +.inline { + display: inline; +} + +.flex { + display: flex; +} + +.hidden { + display: none; +} + +.w-full { + width: 100%; +} + +.cursor-not-allowed { + cursor: not-allowed; +} + +.list-none { + list-style-type: none; +} + +.flex-col { + flex-direction: column; +} + +.items-center { + align-items: center; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.gap-4 { + gap: 1rem; +} + +.rounded-2xl { + border-radius: 1rem; +} + +.rounded-full { + border-radius: 9999px; +} + +.rounded-md { + border-radius: 0.375rem; +} + +.border { + border-width: 1px; +} + +.border-2 { + border-width: 2px; +} + +.border-4 { + border-width: 4px; +} + +.border-\[\#2E373B\] { + --tw-border-opacity: 1; + border-color: rgb(46 55 59 / var(--tw-border-opacity)); +} + +.border-transparent { + border-color: transparent; +} + +.bg-\[\#1D2125\] { + --tw-bg-opacity: 1; + background-color: rgb(29 33 37 / var(--tw-bg-opacity)); +} + +.bg-\[\#242A2E\] { + --tw-bg-opacity: 1; + background-color: rgb(36 42 46 / var(--tw-bg-opacity)); +} + +.bg-gray-200 { + --tw-bg-opacity: 1; + background-color: rgb(226 232 240 / var(--tw-bg-opacity)); +} + +.bg-gray-800 { + --tw-bg-opacity: 1; + background-color: rgb(30 41 59 / var(--tw-bg-opacity)); +} + +.bg-green-500\/90 { + background-color: rgb(34 197 94 / 0.9); +} + +.bg-red-500 { + --tw-bg-opacity: 1; + background-color: rgb(239 68 68 / var(--tw-bg-opacity)); +} + +.bg-sky-500 { + --tw-bg-opacity: 1; + background-color: rgb(14 165 233 / var(--tw-bg-opacity)); +} + +.bg-sky-600 { + --tw-bg-opacity: 1; + background-color: rgb(2 132 199 / var(--tw-bg-opacity)); +} + +.bg-yellow-500\/90 { + background-color: rgb(234 179 8 / 0.9); +} + +.bg-opacity-20 { + --tw-bg-opacity: 0.2; +} + +.p-0 { + padding: 0px; +} + +.p-0\.5 { + padding: 0.125rem; +} + +.p-6 { + padding: 1.5rem; +} + +.px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; +} + +.px-4 { + padding-left: 1rem; + padding-right: 1rem; +} + +.py-1 { + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} + +.py-2 { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.pt-3 { + padding-top: 0.75rem; +} + +.text-center { + text-align: center; +} + +.text-3xl { + font-size: 1.875rem; + line-height: 2.25rem; +} + +.text-xl { + font-size: 1.25rem; + line-height: 1.75rem; +} + +.text-xs { + font-size: 0.75rem; + line-height: 1rem; +} + +.font-bold { + font-weight: 700; +} + +.font-medium { + font-weight: 500; +} + +.leading-none { + line-height: 1; +} + +.text-gray-500 { + --tw-text-opacity: 1; + color: rgb(100 116 139 / var(--tw-text-opacity)); +} + +.text-neutral-400 { + --tw-text-opacity: 1; + color: rgb(163 163 163 / var(--tw-text-opacity)); +} + +.text-sky-100 { + --tw-text-opacity: 1; + color: rgb(224 242 254 / var(--tw-text-opacity)); +} + +.text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} + +.shadow-inner { + --tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.shadow-green-400 { + --tw-shadow-color: #4ade80; + --tw-shadow: var(--tw-shadow-colored); +} + +.shadow-red-200 { + --tw-shadow-color: #fecaca; + --tw-shadow: var(--tw-shadow-colored); +} + +.shadow-sky-400 { + --tw-shadow-color: #38bdf8; + --tw-shadow: var(--tw-shadow-colored); +} + +.shadow-yellow-400 { + --tw-shadow-color: #facc15; + --tw-shadow: var(--tw-shadow-colored); +} + +.outline-none { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.\[hostname\:port\] { + hostname: port; +} + +.hover\:bg-green-600:hover { + --tw-bg-opacity: 1; + background-color: rgb(22 163 74 / var(--tw-bg-opacity)); +} + +.hover\:bg-red-400:hover { + --tw-bg-opacity: 1; + background-color: rgb(248 113 113 / var(--tw-bg-opacity)); +} + +.hover\:bg-sky-600:hover { + --tw-bg-opacity: 1; + background-color: rgb(2 132 199 / var(--tw-bg-opacity)); +} + +.hover\:bg-yellow-600:hover { + --tw-bg-opacity: 1; + background-color: rgb(202 138 4 / var(--tw-bg-opacity)); +} + +.focus\:border-sky-500:focus { + --tw-border-opacity: 1; + border-color: rgb(14 165 233 / var(--tw-border-opacity)); +} + +.focus\:outline:focus { + outline-style: solid; +} + +.focus\:outline-2:focus { + outline-width: 2px; +} + +.focus\:outline-offset-2:focus { + outline-offset: 2px; +} + +.focus\:outline-green-500:focus { + outline-color: #22c55e; +} + +.focus\:outline-red-500:focus { + outline-color: #ef4444; +} + +.focus\:outline-sky-500:focus { + outline-color: #0ea5e9; +} + +.focus\:outline-yellow-600:focus { + outline-color: #ca8a04; +} + +.left-0 { + left: 0px; +} + +.right-0 { + right: 0px; +} + +@media (min-width: 640px) { + .sm\:w-auto { + width: auto; + } + + .sm\:min-w-\[550px\] { + min-width: 550px; + } +} \ No newline at end of file diff --git a/public/installer/tailwind.config.js b/public/installer/tailwind.config.js new file mode 100644 index 000000000..5fc499bb2 --- /dev/null +++ b/public/installer/tailwind.config.js @@ -0,0 +1,24 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ["./**/*.{html,php}"], + theme: { + extend: { + colors: { + gray: { + '50': "#f8fafc", + '100': "#f1f5f9", + '200': "#e2e8f0", + '300': "#cbd5e1", + '400': "#94a3b8", + '500': "#64748b", + '600': "#475569", + '700': "#334155", + '800': "#1e293b", + '900': "#0f172a", + '950': "#020617", + } + } + }, + }, + plugins: [], +} \ No newline at end of file diff --git a/public/installer/tailwind_styles.css b/public/installer/tailwind_styles.css new file mode 100644 index 000000000..13de0f344 --- /dev/null +++ b/public/installer/tailwind_styles.css @@ -0,0 +1,10 @@ +/* + * You need to have `tailwindcss` packages installed for these commands to work. + * + * Build: `tailwindcss -i tailwind_styles.css -o styles.css -m` + * Dev: `tailwindcss -i tailwind_styles.css -o styles.css --watch` + */ + +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/public/installer/views/admin-creation.php b/public/installer/views/admin-creation.php new file mode 100644 index 000000000..96705f831 --- /dev/null +++ b/public/installer/views/admin-creation.php @@ -0,0 +1,70 @@ + + + + + + + + diff --git a/public/installer/views/dashboard-configuration.php b/public/installer/views/dashboard-configuration.php new file mode 100644 index 000000000..f6368e63d --- /dev/null +++ b/public/installer/views/dashboard-configuration.php @@ -0,0 +1,64 @@ + + + + + + + + diff --git a/public/installer/views/database-configuration.php b/public/installer/views/database-configuration.php new file mode 100644 index 000000000..b0ba51ad7 --- /dev/null +++ b/public/installer/views/database-configuration.php @@ -0,0 +1,97 @@ + + + + + + + + diff --git a/public/installer/views/database-migration.php b/public/installer/views/database-migration.php new file mode 100644 index 000000000..adaf381d6 --- /dev/null +++ b/public/installer/views/database-migration.php @@ -0,0 +1,45 @@ + + + + This process might take a while. Please do not refresh or close this page!" +); ?> + + + + diff --git a/public/installer/views/email-configuration.php b/public/installer/views/email-configuration.php new file mode 100644 index 000000000..7afab1bad --- /dev/null +++ b/public/installer/views/email-configuration.php @@ -0,0 +1,102 @@ + + + +Please do not refresh or close this page!" +); ?> + + + + diff --git a/public/installer/views/installation-complete.php b/public/installer/views/installation-complete.php new file mode 100644 index 000000000..56b77fe4b --- /dev/null +++ b/public/installer/views/installation-complete.php @@ -0,0 +1,25 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/public/installer/views/layout-bottom.php b/public/installer/views/layout-bottom.php new file mode 100644 index 000000000..60e1efca0 --- /dev/null +++ b/public/installer/views/layout-bottom.php @@ -0,0 +1,12 @@ + + + + + + + + +