diff --git a/.github/dev_bug_report.md b/.github/dev_bug_report.md
new file mode 100755
index 0000000..ef93e56
--- /dev/null
+++ b/.github/dev_bug_report.md
@@ -0,0 +1,35 @@
+---
+name: Dev Bug Report
+about: Create a report to help us improve
+title: ''
+labels: stat_backlog, type_bug
+assignees: ''
+
+---
+
+# Bug Description
+A clear and concise description of what the bug is.
+
+# How to Reproduce
+
+Steps to reproduce the behavior:
+
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+## Minimal Code Example
+
+```
+// your code ...
+```
+
+# Expected Behavior
+A clear and concise description of what you expected to happen.
+
+# Screenshots
+If applicable, add screenshots to help explain your problem.
+
+# Additional Information
+Add any other context about the problem here.
diff --git a/.github/dev_feature_request.md b/.github/dev_feature_request.md
new file mode 100755
index 0000000..9573c35
--- /dev/null
+++ b/.github/dev_feature_request.md
@@ -0,0 +1,18 @@
+---
+name: Dev Feature Request
+about: Suggest an idea for this project
+title: ''
+labels: stat_backlog, type_feature
+assignees: ''
+
+---
+
+# What is the feature you request
+* A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+* A clear and concise description of what you want to happen.
+
+# Alternatives
+A clear and concise description of any alternative solutions or features you've considered.
+
+# Additional Information
+Add any other context or screenshots about the feature request here.
diff --git a/.github/user_bug_report.md b/.github/user_bug_report.md
new file mode 100755
index 0000000..9e5f2a5
--- /dev/null
+++ b/.github/user_bug_report.md
@@ -0,0 +1,34 @@
+---
+name: User Bug Report
+about: Create a report to help us improve
+title: ''
+labels: stat_backlog, type_bug
+assignees: ''
+
+---
+
+# Bug Description
+A clear and concise description of what the bug is.
+
+# How to Reproduce
+Steps to reproduce the behavior:
+
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+# Expected Behavior
+A clear and concise description of what you expected to happen.
+
+# Screenshots
+If applicable, add screenshots to help explain your problem.
+
+# System Information
+ - System: [e.g. PC or iPhone11, ...]
+ - OS: [e.g. iOS]
+ - Browser [e.g. chrome, safari]
+ - KarakaVersion [e.g. 22]
+
+# Additional Information
+Add any other context about the problem here.
diff --git a/.github/user_feature_request.md b/.github/user_feature_request.md
new file mode 100755
index 0000000..6eb8ddc
--- /dev/null
+++ b/.github/user_feature_request.md
@@ -0,0 +1,18 @@
+---
+name: User Feature Request
+about: Suggest an idea for this project
+title: ''
+labels: stat_backlog, type_feature
+assignees: ''
+
+---
+
+# What is the feature you request
+* A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+* A clear and concise description of what you want to happen.
+
+# Alternatives
+A clear and concise description of any alternative solutions or features you've considered.
+
+# Additional Information
+Add any other context or screenshots about the feature request here.
diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml
new file mode 100755
index 0000000..adb8716
--- /dev/null
+++ b/.github/workflows/greetings.yml
@@ -0,0 +1,13 @@
+name: Greetings
+
+on: [pull_request, issues]
+
+jobs:
+ greeting:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/first-interaction@v1
+ with:
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
+ issue-message: 'Thank you for createing this issue. We will check it as soon as possible.'
+ pr-message: 'Thank you for your pull request. We will check it as soon as possible.'
diff --git a/.github/workflows/image.yml b/.github/workflows/image.yml
new file mode 100755
index 0000000..d079329
--- /dev/null
+++ b/.github/workflows/image.yml
@@ -0,0 +1,24 @@
+name: Compress images
+on:
+ push:
+ paths:
+ - '**.jpg'
+ - '**.png'
+ - '**.webp'
+ pull_request:
+ paths:
+ - '**.jpg'
+ - '**.png'
+ - '**.webp'
+jobs:
+ build:
+ name: calibreapp/image-actions
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Repo
+ uses: actions/checkout@main
+
+ - name: Compress Images
+ uses: calibreapp/image-actions@main
+ with:
+ githubToken: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100755
index 0000000..6dcd721
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,281 @@
+name: CI
+
+on: [push, pull_request]
+
+jobs:
+ autoformat:
+ runs-on: ubuntu-latest
+ if: "!contains(github.event.head_commit.message, 'NO_CI')"
+ strategy:
+ fail-fast: false
+ max-parallel: 3
+ steps:
+ - name: Checkout Repository
+ uses: actions/checkout@main
+ with:
+ fetch-depth: 1
+ - name: Get Composer Cache Directory
+ id: composer-cache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+ - name: Cache dependencies
+ uses: actions/cache@v1
+ with:
+ path: ${{ steps.composer-cache.outputs.dir }}
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: ${{ runner.os }}-composer-
+ - name: Setup Composer
+ run: composer install
+ - name: Autoformat
+ run: 'vendor/bin/php-cs-fixer fix ./ --rules=''{"array_syntax": {"syntax": "short"}, "blank_line_after_namespace": true, "global_namespace_import": {"import_classes": false, "import_constants": false, "import_functions": false}, "binary_operator_spaces": {"operators": {"=": "align", ".=": "align", "+=": "align", "-=": "align", "*=": "align", "/=": "align", "|=": "align", "&=": "align", "=>": "align", "??=": "align"}}, "cast_spaces": {"space": "single"}, "class_attributes_separation": { "elements": {"const": "one", "method": "one", "property": "one"} }, "combine_consecutive_issets": true, "compact_nullable_typehint": true, "declare_strict_types": true, "declare_equal_normalize": {"space": "none"}, "elseif": true, "encoding": true, "explicit_indirect_variable": true, "explicit_string_variable": true, "function_to_constant": true, "implode_call": true, "increment_style": {"style": "pre"}, "is_null": true, "yoda_style": {"equal": false, "identical": false, "less_and_greater": false}, "line_ending": true, "logical_operators": true, "lowercase_cast": true, "constant_case": {"case": "lower"}, "lowercase_keywords": true, "modernize_types_casting": true, "native_constant_invocation": true, "native_function_casing": true, "native_function_invocation": {"include": ["@all"]}, "new_with_braces": true, "no_extra_blank_lines": {"tokens": ["break", "case", "continue", "curly_brace_block", "extra", "return", "switch", "throw", "use"]}, "no_spaces_after_function_name": true, "no_alias_functions": true, "no_closing_tag": true, "no_empty_comment": true, "no_empty_phpdoc": true, "no_empty_statement": true, "no_homoglyph_names": true, "no_mixed_echo_print": {"use": "echo"}, "no_php4_constructor": true, "no_singleline_whitespace_before_semicolons": true, "no_spaces_inside_parenthesis": true, "no_trailing_whitespace": true, "no_unneeded_final_method": true, "no_unused_imports": true, "no_useless_return": true, "no_whitespace_before_comma_in_array": true, "no_whitespace_in_blank_line": true, "non_printable_character": true, "normalize_index_brace": true, "ordered_imports": {"sort_algorithm": "alpha"}, "ordered_interfaces": {"order": "alpha"}, "php_unit_construct": true, "php_unit_internal_class": true, "php_unit_set_up_tear_down_visibility": true, "phpdoc_indent": true, "phpdoc_align": {"align": "vertical"}, "phpdoc_annotation_without_dot": true, "phpdoc_scalar": true, "phpdoc_return_self_reference": {"replacements": {"this": "self"}}, "phpdoc_trim": true, "phpdoc_trim_consecutive_blank_line_separation": true, "random_api_migration": true, "self_accessor": true, "return_type_declaration": {"space_before": "one"}, "semicolon_after_instruction": true, "set_type_to_cast": true, "short_scalar_cast": true, "single_blank_line_at_eof": true, "single_line_after_imports": true, "standardize_increment": true, "trailing_comma_in_multiline": true, "trim_array_spaces": true, "visibility_required": true, "void_return": true}'' --allow-risky=yes'
+ - name: Check for modified files
+ id: git-check
+ run: echo ::set-output name=modified::$(if git diff-index --quiet HEAD --; then echo "false"; else echo "true"; fi)
+ - name: Push changes
+ if: steps.git-check.outputs.modified == 'true'
+ run: |
+ git config --global user.name 'Formatter Bot'
+ git config --global user.email 'formatter.bot@karaka.app'
+ git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
+ git commit -am "Automated formatting changes"
+ git push
+ code-tests:
+ runs-on: ubuntu-latest
+ if: "!contains(github.event.head_commit.message, 'NO_CI')"
+ services:
+ mysql:
+ image: mysql:5.7
+ env:
+ MYSQL_ALLOW_EMPTY_PASSWORD: false
+ MYSQL_ROOT_PASSWORD: root
+ MYSQL_DATABASE: oms
+ ports:
+ - 3306:3306
+ options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
+ postgres:
+ image: postgres:10.8
+ env:
+ POSTGRES_USER: postgres
+ POSTGRES_PASSWORD: root
+ POSTGRES_DB: oms
+ ports:
+ - 5432:5432
+ options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
+ redis:
+ image: redis
+ ports:
+ - 6379:6379
+ options: --entrypoint redis-server
+ memcached:
+ image: memcached
+ ports:
+ - 11211:11211
+ strategy:
+ fail-fast: false
+ max-parallel: 3
+ matrix:
+ php-versions: ['8.1']
+ steps:
+ - name: Checkout Repository
+ uses: actions/checkout@main
+ with:
+ fetch-depth: 1
+ - name: Checkout Build Repository
+ uses: actions/checkout@main
+ with:
+ fetch-depth: 1
+ ref: develop
+ repository: Karaka-Management/Build
+ path: Build
+ - name: Checkout Resource Repository
+ uses: actions/checkout@main
+ with:
+ fetch-depth: 1
+ ref: develop
+ repository: Karaka-Management/Resources
+ path: Resources
+ - name: Checkout phpOMS Repository
+ uses: actions/checkout@main
+ with:
+ fetch-depth: 1
+ ref: develop
+ repository: Karaka-Management/phpOMS
+ path: phpOMS
+ token: ${{ secrets.GH_PAT }}
+ - name: Checkout Karaka Repository
+ uses: actions/checkout@main
+ with:
+ fetch-depth: 1
+ ref: develop
+ repository: Karaka-Management/Karaka
+ path: Karaka
+ - name: Setup PHP, with composer and extensions
+ uses: shivammathur/setup-php@master
+ with:
+ php-version: ${{ matrix.php-versions }}
+ extensions: mbstring, gd, zip, dom, mysql, pgsql, sqlite, imap, bcmath, redis, memcached
+ ini-values: opcache.jit_buffer_size=256M, opcache.jit=1235, pcre.jit=1
+ coverage: pcov
+ - name: Get Composer Cache Directory
+ id: composer-cache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+ - name: Cache dependencies
+ uses: actions/cache@v1
+ with:
+ path: ${{ steps.composer-cache.outputs.dir }}
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: ${{ runner.os }}-composer-
+ - name: Setup Composer
+ run: composer install
+ - name: phpunit
+ run: vendor/bin/phpunit --coverage-clover tests/coverage.xml --configuration tests/phpunit_default.xml
+ static-tests:
+ runs-on: ubuntu-latest
+ if: "!contains(github.event.head_commit.message, 'NO_CI')"
+ strategy:
+ fail-fast: false
+ max-parallel: 3
+ matrix:
+ php-versions: ['8.1']
+ steps:
+ - name: Checkout Repository
+ uses: actions/checkout@main
+ with:
+ fetch-depth: 1
+ submodules: recursive
+ token: ${{ secrets.GH_PAT }}
+ - name: Checkout Build Repository
+ uses: actions/checkout@main
+ with:
+ fetch-depth: 1
+ ref: develop
+ repository: Karaka-Management/Build
+ path: Build
+ - name: Checkout phpOMS Repository
+ uses: actions/checkout@main
+ with:
+ fetch-depth: 1
+ ref: develop
+ repository: Karaka-Management/phpOMS
+ path: phpOMS
+ token: ${{ secrets.GH_PAT }}
+ - name: Setup PHP, with composer and extensions
+ uses: shivammathur/setup-php@master
+ with:
+ php-version: ${{ matrix.php-versions }}
+ extensions: mbstring, gd, zip, dom, mysql, pgsql, sqlite, imap, bcmath, redis, memcached
+ ini-values: opcache.jit_buffer_size=256M, opcache.jit=1235, pcre.jit=1
+ - name: Get Composer Cache Directory
+ id: composer-cache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+ - name: Cache dependencies
+ uses: actions/cache@v1
+ with:
+ path: ${{ steps.composer-cache.outputs.dir }}
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: ${{ runner.os }}-composer-
+ - name: Setup Composer
+ run: composer install
+ - name: phpstan
+ run: vendor/bin/phpstan analyse -a phpOMS/Autoloader.php --no-progress -l 9 -c Build/Config/phpstan.neon ./
+ codestyle-tests:
+ runs-on: ubuntu-latest
+ if: "!contains(github.event.head_commit.message, 'NO_CI')"
+ strategy:
+ fail-fast: false
+ max-parallel: 3
+ matrix:
+ php-versions: ['8.1']
+ steps:
+ - name: Checkout Repository
+ uses: actions/checkout@main
+ with:
+ fetch-depth: 1
+ submodules: recursive
+ token: ${{ secrets.GH_PAT }}
+ - name: Checkout Build Repository
+ uses: actions/checkout@main
+ with:
+ fetch-depth: 1
+ ref: develop
+ repository: Karaka-Management/Build
+ path: Build
+ - name: Setup PHP, with composer and extensions
+ uses: shivammathur/setup-php@master
+ with:
+ php-version: ${{ matrix.php-versions }}
+ extensions: mbstring, gd, zip, dom, mysql, pgsql, sqlite, imap, bcmath, redis, memcached
+ ini-values: opcache.jit_buffer_size=256M, opcache.jit=1235, pcre.jit=1
+ - name: Get Composer Cache Directory
+ id: composer-cache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+ - name: Cache dependencies
+ uses: actions/cache@v1
+ with:
+ path: ${{ steps.composer-cache.outputs.dir }}
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: ${{ runner.os }}-composer-
+ - name: Setup Composer
+ run: composer install
+ - name: phpcs
+ run: vendor/bin/phpcs --severity=1 ./ --standard="Build/Config/phpcs.xml" -s --report=full
+ - name: Install NPM
+ uses: actions/setup-node@v3
+ with:
+ node-version: '14'
+ cache: 'npm'
+ - run: npm install
+ - name: eslint
+ run: npx eslint ./ -c Build/Config/.eslintrc.json
+# linting:
+# runs-on: ubuntu-latest
+# if: "!contains(github.event.head_commit.message, 'NO_CI')"
+# strategy:
+# fail-fast: false
+# max-parallel: 3
+# steps:
+# - name: Checkout Repository
+# uses: actions/checkout@main
+# with:
+# fetch-depth: 0
+# submodules: recursive
+# token: ${{ secrets.GH_TOKEN }}
+# - name: Lint Code Base
+# uses: github/super-linter/slim@v4
+# env:
+# VALIDATE_ALL_CODEBASE: false
+# VALIDATE_PHP: true
+# VALIDATE_PHP_BUILTIN: true
+# DEFAULT_BRANCH: develop
+# GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
+ custom:
+ runs-on: ubuntu-latest
+ if: "!contains(github.event.head_commit.message, 'NO_CI')"
+ strategy:
+ fail-fast: false
+ max-parallel: 3
+ matrix:
+ php-versions: ['8.1']
+ steps:
+ - name: Checkout Repository
+ uses: actions/checkout@main
+ with:
+ fetch-depth: 1
+ - name: Checkout Build Repository
+ uses: actions/checkout@main
+ with:
+ fetch-depth: 1
+ ref: develop
+ repository: Karaka-Management/Build
+ path: Build
+ - name: Setup PHP, with composer and extensions
+ uses: shivammathur/setup-php@master
+ with:
+ php-version: ${{ matrix.php-versions }}
+ extensions: mbstring, gd, zip, dom, mysql, pgsql, sqlite, bcmath, redis, memcached
+ ini-values: opcache.jit_buffer_size=256M, opcache.jit=1235, pcre.jit=1
+ - name: PHP linting
+ run: |
+ find ./ -type f \
+ -name '*.php' -print0 | xargs -0 -n1 -P4 php -l -n | (! grep -v "No syntax errors detected" )
+ - name: Php strict
+ run: if [[ $(grep -r -L "declare(strict_types=1);" --include=*.php --exclude={*.tpl.php,*Hooks.php,*Routes.php,*SearchCommands.php} ./) -ne "" ]]; then exit 1; fi
diff --git a/.gitignore b/.gitignore
new file mode 100755
index 0000000..22d0d82
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+vendor
diff --git a/Admin/Install/Navigation.install.json b/Admin/Install/Navigation.install.json
new file mode 100755
index 0000000..c7ec82c
--- /dev/null
+++ b/Admin/Install/Navigation.install.json
@@ -0,0 +1,49 @@
+[
+ {
+ "id": 1008101001,
+ "pid": "/",
+ "type": 2,
+ "subtype": 0,
+ "name": "Finance",
+ "uri": null,
+ "target": "self",
+ "icon": "fa fa-book",
+ "order": 50,
+ "from": "Finance",
+ "permission": { "permission": 2, "category": null, "element": null },
+ "parent": 0,
+ "children": [
+ {
+ "id": 1008102001,
+ "pid": "/",
+ "type": 2,
+ "subtype": 1,
+ "name": "Analysis",
+ "uri": "{/lang}/{/app}/sales/analysis?{?}",
+ "target": "self",
+ "icon": null,
+ "order": 15,
+ "from": "Finance",
+ "permission": { "permission": 2, "category": null, "element": null },
+ "parent": 1008101001,
+ "children": [
+ {
+ "id": 1008102002,
+ "pid": "/sales/analysis",
+ "type": 3,
+ "subtype": 1,
+ "name": "Dashboard",
+ "uri": "{/lang}/{/app}/sales/analysis?{?}",
+ "target": "self",
+ "icon": null,
+ "order": 1,
+ "from": "Finance",
+ "permission": { "permission": 2, "category": null, "element": null },
+ "parent": 1008102001,
+ "children": []
+ }
+ ]
+ }
+ ]
+ }
+]
diff --git a/Admin/Install/Navigation.php b/Admin/Install/Navigation.php
new file mode 100755
index 0000000..e272499
--- /dev/null
+++ b/Admin/Install/Navigation.php
@@ -0,0 +1,43 @@
+ __DIR__ . '/Navigation.install.json']);
+ }
+}
diff --git a/Admin/Installer.php b/Admin/Installer.php
new file mode 100755
index 0000000..40c9167
--- /dev/null
+++ b/Admin/Installer.php
@@ -0,0 +1,36 @@
+ [
+ [
+ 'dest' => '\Modules\Finance\Controller\BackendController:viewDashboard',
+ 'verb' => RouteVerb::GET,
+ 'permission' => [
+ 'module' => BackendController::NAME,
+ 'type' => PermissionType::CREATE,
+ 'state' => PermissionCategory::ANALYSIS,
+ ],
+ ],
+ ],
+];
diff --git a/Admin/Status.php b/Admin/Status.php
new file mode 100755
index 0000000..39be78e
--- /dev/null
+++ b/Admin/Status.php
@@ -0,0 +1,36 @@
+get('Content')->getData('head');
+ $head->addAsset(AssetType::CSS, 'Resources/chartjs/Chartjs/chart.css');
+ $head->addAsset(AssetType::JSLATE, 'Resources/chartjs/Chartjs/chart.js');
+ $head->addAsset(AssetType::JSLATE, 'Modules/ClientManagement/Controller.js', ['type' => 'module']);
+
+ $view = new View($this->app->l11nManager, $request, $response);
+ $view->setTemplate('/Modules/Sales/Theme/Backend/sales-analysis-dashboard');
+ $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001602001, $request, $response));
+
+ /////
+ $monthlySalesCustomer = [];
+ for ($i = 1; $i < 13; ++$i) {
+ $monthlySalesCustomer[] = [
+ 'net_sales' => $sales = \mt_rand(1200000000, 2000000000),
+ 'customers' => \mt_rand(200, 400),
+ 'year' => 2020,
+ 'month' => $i,
+ ];
+ }
+
+ $view->addData('monthlySalesCustomer', $monthlySalesCustomer);
+
+ $annualSalesCustomer = [];
+ for ($i = 1; $i < 11; ++$i) {
+ $annualSalesCustomer[] = [
+ 'net_sales' => $sales = \mt_rand(1200000000, 2000000000) * 12,
+ 'customers' => \mt_rand(200, 400) * 6,
+ 'year' => 2020 - 10 + $i,
+ ];
+ }
+
+ $view->addData('annualSalesCustomer', $annualSalesCustomer);
+
+ return $view;
+ }
+}
diff --git a/Controller/Controller.php b/Controller/Controller.php
new file mode 100755
index 0000000..00112cc
--- /dev/null
+++ b/Controller/Controller.php
@@ -0,0 +1,76 @@
+ [
+ 'Analysis' => 'التحليلات',
+ 'Articles' => 'مقالات',
+ 'Clients' => 'عملاء',
+ 'Create' => 'يخلق',
+ 'Invoice' => 'فاتورة',
+ 'Invoices' => 'الفواتير',
+ 'Profile' => 'الملف الشخصي',
+ 'Sales' => 'مبيعات',
+]];
diff --git a/Theme/Backend/Lang/Navigation.cs.lang.php b/Theme/Backend/Lang/Navigation.cs.lang.php
new file mode 100755
index 0000000..122765d
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.cs.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'Analýza',
+ 'Articles' => 'Články',
+ 'Clients' => 'Klienti',
+ 'Create' => 'Vytvořit',
+ 'Invoice' => 'Faktura',
+ 'Invoices' => 'Faktury',
+ 'Profile' => 'Profil',
+ 'Sales' => 'Odbyt',
+]];
diff --git a/Theme/Backend/Lang/Navigation.da.lang.php b/Theme/Backend/Lang/Navigation.da.lang.php
new file mode 100755
index 0000000..51be112
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.da.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'Analyse',
+ 'Articles' => 'Artikler',
+ 'Clients' => 'Klienter.',
+ 'Create' => 'skab',
+ 'Invoice' => 'Faktura',
+ 'Invoices' => 'Fakturaer.',
+ 'Profile' => 'Profil',
+ 'Sales' => 'SALG',
+]];
diff --git a/Theme/Backend/Lang/Navigation.de.lang.php b/Theme/Backend/Lang/Navigation.de.lang.php
new file mode 100755
index 0000000..36660ad
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.de.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'Analyse',
+ 'Articles' => 'Artikel',
+ 'Clients' => 'Kunden',
+ 'Create' => 'Erstellen',
+ 'Invoice' => 'Rechnung',
+ 'Invoices' => 'Rechnungen',
+ 'Profile' => 'Profil',
+ 'Sales' => 'Der Umsatz',
+]];
diff --git a/Theme/Backend/Lang/Navigation.el.lang.php b/Theme/Backend/Lang/Navigation.el.lang.php
new file mode 100755
index 0000000..a56adac
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.el.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'Ανάλυση',
+ 'Articles' => 'Είδη',
+ 'Clients' => 'Πελάτες',
+ 'Create' => 'Δημιουργώ',
+ 'Invoice' => 'Τιμολόγιο',
+ 'Invoices' => 'Τιμολόγια',
+ 'Profile' => 'Προφίλ',
+ 'Sales' => 'Εκπτώσεις',
+]];
diff --git a/Theme/Backend/Lang/Navigation.en.lang.php b/Theme/Backend/Lang/Navigation.en.lang.php
new file mode 100755
index 0000000..870da4a
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.en.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'Analysis',
+ 'Articles' => 'Articles',
+ 'Clients' => 'Clients',
+ 'Create' => 'Create',
+ 'Invoice' => 'Invoice',
+ 'Invoices' => 'Invoices',
+ 'Profile' => 'Profile',
+ 'Sales' => 'Sales',
+]];
diff --git a/Theme/Backend/Lang/Navigation.es.lang.php b/Theme/Backend/Lang/Navigation.es.lang.php
new file mode 100755
index 0000000..52ea36d
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.es.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'Análisis',
+ 'Articles' => 'Artículos',
+ 'Clients' => 'Clientela',
+ 'Create' => 'Crear',
+ 'Invoice' => 'Factura',
+ 'Invoices' => 'Facturas',
+ 'Profile' => 'Perfil',
+ 'Sales' => 'Ventas',
+]];
diff --git a/Theme/Backend/Lang/Navigation.fi.lang.php b/Theme/Backend/Lang/Navigation.fi.lang.php
new file mode 100755
index 0000000..b539c16
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.fi.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'Analyysi',
+ 'Articles' => 'Artikkelit',
+ 'Clients' => 'Asiakkaat',
+ 'Create' => 'Luoda',
+ 'Invoice' => 'Lasku',
+ 'Invoices' => 'Laskut',
+ 'Profile' => 'Profiili',
+ 'Sales' => 'Myynti',
+]];
diff --git a/Theme/Backend/Lang/Navigation.fr.lang.php b/Theme/Backend/Lang/Navigation.fr.lang.php
new file mode 100755
index 0000000..0adcb23
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.fr.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'Analyse',
+ 'Articles' => 'Des articles',
+ 'Clients' => 'Clients',
+ 'Create' => 'Créer',
+ 'Invoice' => 'Facture d\'achat',
+ 'Invoices' => 'Factures',
+ 'Profile' => 'Profil',
+ 'Sales' => 'Ventes',
+]];
diff --git a/Theme/Backend/Lang/Navigation.hu.lang.php b/Theme/Backend/Lang/Navigation.hu.lang.php
new file mode 100755
index 0000000..397d1c7
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.hu.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'Elemzés',
+ 'Articles' => 'Árucikkek',
+ 'Clients' => 'Kliensek',
+ 'Create' => 'Teremt',
+ 'Invoice' => 'Számla',
+ 'Invoices' => 'Számlák',
+ 'Profile' => 'Profil',
+ 'Sales' => 'Értékesítés',
+]];
diff --git a/Theme/Backend/Lang/Navigation.it.lang.php b/Theme/Backend/Lang/Navigation.it.lang.php
new file mode 100755
index 0000000..91f7d1a
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.it.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'Analisi',
+ 'Articles' => 'Artificio',
+ 'Clients' => 'Clienti',
+ 'Create' => 'Creare',
+ 'Invoice' => 'Fattura',
+ 'Invoices' => 'Fatture',
+ 'Profile' => 'Profilo',
+ 'Sales' => 'Saldi',
+]];
diff --git a/Theme/Backend/Lang/Navigation.ja.lang.php b/Theme/Backend/Lang/Navigation.ja.lang.php
new file mode 100755
index 0000000..369910e
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.ja.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => '分析',
+ 'Articles' => 'articles',
+ 'Clients' => 'クライアント',
+ 'Create' => '作成',
+ 'Invoice' => '請求書',
+ 'Invoices' => '請求書',
+ 'Profile' => 'プロフィール',
+ 'Sales' => '売り返り',
+]];
diff --git a/Theme/Backend/Lang/Navigation.ko.lang.php b/Theme/Backend/Lang/Navigation.ko.lang.php
new file mode 100755
index 0000000..07bdb8b
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.ko.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => '분석',
+ 'Articles' => '조항',
+ 'Clients' => '클라이언트',
+ 'Create' => '만들다',
+ 'Invoice' => '송장',
+ 'Invoices' => '송장',
+ 'Profile' => '프로필',
+ 'Sales' => '매상',
+]];
diff --git a/Theme/Backend/Lang/Navigation.no.lang.php b/Theme/Backend/Lang/Navigation.no.lang.php
new file mode 100755
index 0000000..7fbeea3
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.no.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'Analyse',
+ 'Articles' => 'Artikler',
+ 'Clients' => 'Klienter',
+ 'Create' => 'Skape',
+ 'Invoice' => 'Faktura',
+ 'Invoices' => 'Fakturaer',
+ 'Profile' => 'Profil',
+ 'Sales' => 'Salg',
+]];
diff --git a/Theme/Backend/Lang/Navigation.pl.lang.php b/Theme/Backend/Lang/Navigation.pl.lang.php
new file mode 100755
index 0000000..9d0db24
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.pl.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'Analiza',
+ 'Articles' => 'Artykuły',
+ 'Clients' => 'Klienci.',
+ 'Create' => 'Tworzyć',
+ 'Invoice' => 'Faktura',
+ 'Invoices' => 'Faktury',
+ 'Profile' => 'Profil',
+ 'Sales' => 'Obroty',
+]];
diff --git a/Theme/Backend/Lang/Navigation.pt.lang.php b/Theme/Backend/Lang/Navigation.pt.lang.php
new file mode 100755
index 0000000..4501e84
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.pt.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'Análise',
+ 'Articles' => 'Artigos',
+ 'Clients' => 'Clientes',
+ 'Create' => 'Crio',
+ 'Invoice' => 'Fatura',
+ 'Invoices' => 'Faturas',
+ 'Profile' => 'Perfil',
+ 'Sales' => 'Vendas',
+]];
diff --git a/Theme/Backend/Lang/Navigation.ru.lang.php b/Theme/Backend/Lang/Navigation.ru.lang.php
new file mode 100755
index 0000000..5c370b9
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.ru.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'Анализ',
+ 'Articles' => 'Статьи',
+ 'Clients' => 'Клиенты',
+ 'Create' => 'Создавать',
+ 'Invoice' => 'Счет',
+ 'Invoices' => 'Счета',
+ 'Profile' => 'Профиль',
+ 'Sales' => 'Продажи',
+]];
diff --git a/Theme/Backend/Lang/Navigation.sv.lang.php b/Theme/Backend/Lang/Navigation.sv.lang.php
new file mode 100755
index 0000000..3bd9d37
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.sv.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'Analys',
+ 'Articles' => 'Artiklar',
+ 'Clients' => 'Klienter',
+ 'Create' => 'Skapa',
+ 'Invoice' => 'Faktura',
+ 'Invoices' => 'Fakturor',
+ 'Profile' => 'Profil',
+ 'Sales' => 'Försäljning',
+]];
diff --git a/Theme/Backend/Lang/Navigation.th.lang.php b/Theme/Backend/Lang/Navigation.th.lang.php
new file mode 100755
index 0000000..3cecbe9
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.th.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'การวิเคราะห์',
+ 'Articles' => 'บทความ',
+ 'Clients' => 'ลูกค้า',
+ 'Create' => 'สร้าง',
+ 'Invoice' => 'ใบแจ้งหนี้',
+ 'Invoices' => 'ใบแจ้งหนี้',
+ 'Profile' => 'ประวัติโดยย่อ',
+ 'Sales' => 'ฝ่ายขาย',
+]];
diff --git a/Theme/Backend/Lang/Navigation.tr.lang.php b/Theme/Backend/Lang/Navigation.tr.lang.php
new file mode 100755
index 0000000..0800030
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.tr.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'Analiz',
+ 'Articles' => 'Nesne',
+ 'Clients' => 'Müşteriler',
+ 'Create' => 'Yaratmak',
+ 'Invoice' => 'Fatura',
+ 'Invoices' => 'Faturalar',
+ 'Profile' => 'Profil',
+ 'Sales' => 'Satış',
+]];
diff --git a/Theme/Backend/Lang/Navigation.uk.lang.php b/Theme/Backend/Lang/Navigation.uk.lang.php
new file mode 100755
index 0000000..eb77b2d
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.uk.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => 'Аналіз',
+ 'Articles' => 'Статті',
+ 'Clients' => 'Клієнти',
+ 'Create' => 'Створювати',
+ 'Invoice' => 'Рахунок-фактура',
+ 'Invoices' => 'Рахунки-фактури',
+ 'Profile' => 'Профіль',
+ 'Sales' => 'Продаж',
+]];
diff --git a/Theme/Backend/Lang/Navigation.zh.lang.php b/Theme/Backend/Lang/Navigation.zh.lang.php
new file mode 100755
index 0000000..7c6ae75
--- /dev/null
+++ b/Theme/Backend/Lang/Navigation.zh.lang.php
@@ -0,0 +1,24 @@
+ [
+ 'Analysis' => '分析',
+ 'Articles' => '文章',
+ 'Clients' => '客户',
+ 'Create' => '创建',
+ 'Invoice' => '发票',
+ 'Invoices' => '发票',
+ 'Profile' => '轮廓',
+ 'Sales' => '销售量',
+]];
diff --git a/Theme/Backend/Lang/ar.lang.php b/Theme/Backend/Lang/ar.lang.php
new file mode 100755
index 0000000..619ce23
--- /dev/null
+++ b/Theme/Backend/Lang/ar.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'الحساب',
+ 'Active' => 'نشيط',
+ 'Activity' => 'نشاط',
+ 'Address' => 'تبوك',
+ 'All' => 'الجميع',
+ 'Amount' => 'مقدار',
+ 'Analysis' => 'التحليلات',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'مساحة',
+ 'Article' => 'مقالة - سلعة',
+ 'Articles' => 'مقالات',
+ 'Available' => 'متوفرة',
+ 'Calculate' => 'حساب',
+ 'City' => 'مدينة',
+ 'Class' => 'فصل',
+ 'Client' => 'عميل',
+ 'ClientID' => 'معرف العميل',
+ 'ClientName' => 'اسم العميل',
+ 'Clients' => 'عملاء',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'تأكيد',
+ 'CoreData' => 'البيانات الأساسية',
+ 'Country' => 'دولة',
+ 'Created' => 'خلقت',
+ 'Creator' => 'المنشئ',
+ 'CreditNote' => 'اشعار دائن',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'DSO.',
+ 'Date' => 'تاريخ',
+ 'DefaultInternational' => 'افتراضي الدولية',
+ 'DefaultNational' => 'الوضع الوطني الافتراضي',
+ 'Delivery' => 'توصيل',
+ 'DeliveryNote' => 'مذكرة تسليم',
+ 'Description' => 'وصف',
+ 'Discount' => 'خصم',
+ 'DiscountP' => 'خصم في٪',
+ 'Documentation' => 'توثيق',
+ 'Employee' => 'موظف',
+ 'End' => '#VALUE!',
+ 'FAO' => 'الفاو',
+ 'From' => 'من',
+ 'Group' => 'مجموعة',
+ 'Groups' => 'مجموعات',
+ 'Highest' => 'أعلى',
+ 'Inactive' => 'غير نشط',
+ 'Interval' => 'فترة',
+ 'Invoice' => 'فاتورة',
+ 'Invoices' => 'الفواتير',
+ 'IsDefault' => 'افتراضي؟',
+ 'Language' => 'لغة',
+ 'Last' => 'الاخير',
+ 'Localization' => 'الموقع',
+ 'Loginname' => 'اسم الدخول',
+ 'Matchcode' => 'رمز مطابق',
+ 'Media' => 'وسائط',
+ 'MinPrice' => 'سعر دقيقة',
+ 'Name' => 'اسم',
+ 'Name1' => 'الاسم 1.',
+ 'Name2' => 'الاسم 2.',
+ 'Name3' => 'الاسم 3.',
+ 'Offer' => 'عرض',
+ 'Order' => 'طلب',
+ 'Ordered' => 'أمر',
+ 'OrderedBy' => 'أمر من قبل',
+ 'Orders' => 'الطلب #٪ s',
+ 'Payment' => 'دفع',
+ 'Price' => 'السعر',
+ 'Priority' => 'أفضلية',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'كمية',
+ 'Receipt' => 'إيصال',
+ 'Reference' => 'المرجعي',
+ 'Sales' => 'مبيعات',
+ 'Settings' => 'إعدادات',
+ 'Single' => 'غير مرتبطة',
+ 'Start' => '#VALUE!',
+ 'State' => 'ولاية',
+ 'Statistics' => 'إحصائيات',
+ 'Status' => 'حالة',
+ 'Stock' => 'المخزون',
+ 'Street' => 'شارع',
+ 'Subgroup' => 'مجموعة فرعية',
+ 'Tax' => 'ضريبة',
+ 'Terms' => 'شروط',
+ 'To' => 'ل',
+ 'TopArticles' => 'أفضل المقالات',
+ 'Trend' => 'اتجاه',
+ 'Turnover' => 'دوران',
+ 'Type' => 'نوع',
+ 'ZipCode' => 'رمز بريدي',
+]];
diff --git a/Theme/Backend/Lang/cs.lang.php b/Theme/Backend/Lang/cs.lang.php
new file mode 100755
index 0000000..bf60de9
--- /dev/null
+++ b/Theme/Backend/Lang/cs.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'Účet',
+ 'Active' => 'Aktivní',
+ 'Activity' => 'Aktivita',
+ 'Address' => 'Adresa',
+ 'All' => 'Všechno',
+ 'Amount' => 'Množství',
+ 'Analysis' => 'Analýza',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'Plocha',
+ 'Article' => 'Článek',
+ 'Articles' => 'Články',
+ 'Available' => 'Dostupný',
+ 'Calculate' => 'Vypočítat',
+ 'City' => 'Město',
+ 'Class' => 'Třída',
+ 'Client' => 'Klienta',
+ 'ClientID' => 'ID klienta',
+ 'ClientName' => 'jméno klienta',
+ 'Clients' => 'Klienti',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'potvrzení',
+ 'CoreData' => 'Základní data',
+ 'Country' => 'Země',
+ 'Created' => 'Vytvořený',
+ 'Creator' => 'Tvůrce',
+ 'CreditNote' => 'Dobropis',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'DSO.',
+ 'Date' => 'datum',
+ 'DefaultInternational' => 'Výchozí mezinárodní',
+ 'DefaultNational' => 'Výchozí státní příslušník',
+ 'Delivery' => 'dodávka',
+ 'DeliveryNote' => 'Dodací list',
+ 'Description' => 'Popis',
+ 'Discount' => 'Sleva',
+ 'DiscountP' => 'Sleva v%',
+ 'Documentation' => 'Dokumentace',
+ 'Employee' => 'Zaměstnanec',
+ 'End' => '#VALUE!',
+ 'FAO' => 'Fao.',
+ 'From' => 'Z',
+ 'Group' => 'Skupina',
+ 'Groups' => 'Skupiny',
+ 'Highest' => 'Nejvyšší',
+ 'Inactive' => 'Neaktivní',
+ 'Interval' => 'Interval',
+ 'Invoice' => 'Faktura',
+ 'Invoices' => 'Faktury',
+ 'IsDefault' => 'Je výchozí?',
+ 'Language' => 'Jazyk',
+ 'Last' => 'Poslední',
+ 'Localization' => 'Lokalizace',
+ 'Loginname' => 'Přihlašovací jméno',
+ 'Matchcode' => 'MatchCode.',
+ 'Media' => 'Mediální',
+ 'MinPrice' => 'Min',
+ 'Name' => 'název',
+ 'Name1' => 'Jméno 1.',
+ 'Name2' => 'Jméno 2.',
+ 'Name3' => 'Jméno 3.',
+ 'Offer' => 'Nabídka',
+ 'Order' => 'Objednat',
+ 'Ordered' => 'Objednaný',
+ 'OrderedBy' => 'Objednáno někým',
+ 'Orders' => 'Objednávky',
+ 'Payment' => 'Způsob platby',
+ 'Price' => 'Cena',
+ 'Priority' => 'Přednost',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'Množství',
+ 'Receipt' => 'Účtenka',
+ 'Reference' => 'Odkaz',
+ 'Sales' => 'Odbyt',
+ 'Settings' => 'Nastavení',
+ 'Single' => 'Singl',
+ 'Start' => '#VALUE!',
+ 'State' => 'Stát',
+ 'Statistics' => 'Statistika',
+ 'Status' => 'Postavení',
+ 'Stock' => 'Skladem',
+ 'Street' => 'ulice',
+ 'Subgroup' => 'Podskupina',
+ 'Tax' => 'Daň',
+ 'Terms' => 'Podmínky',
+ 'To' => 'Na',
+ 'TopArticles' => 'Nejlepší články',
+ 'Trend' => 'Trend',
+ 'Turnover' => 'Obrat',
+ 'Type' => 'Typ',
+ 'ZipCode' => 'PSČ',
+]];
diff --git a/Theme/Backend/Lang/da.lang.php b/Theme/Backend/Lang/da.lang.php
new file mode 100755
index 0000000..7bb6583
--- /dev/null
+++ b/Theme/Backend/Lang/da.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'Konto',
+ 'Active' => 'Aktiv',
+ 'Activity' => 'Aktivitet',
+ 'Address' => 'Adresse',
+ 'All' => 'Alle',
+ 'Amount' => 'Beløb',
+ 'Analysis' => 'Analyse',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'Areal',
+ 'Article' => 'Artikel',
+ 'Articles' => 'Artikler',
+ 'Available' => 'Ledig',
+ 'Calculate' => 'Beregn',
+ 'City' => 'City.',
+ 'Class' => 'Klasse',
+ 'Client' => 'Klient',
+ 'ClientID' => 'Klient ID.',
+ 'ClientName' => 'Kundenavn',
+ 'Clients' => 'Klienter.',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'Bekræftelse',
+ 'CoreData' => 'Kernedata.',
+ 'Country' => 'Land',
+ 'Created' => 'Oprettet',
+ 'Creator' => 'Skaber.',
+ 'CreditNote' => 'Kreditnota',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'DSO.',
+ 'Date' => 'Dato',
+ 'DefaultInternational' => 'Standard International',
+ 'DefaultNational' => 'Standard National',
+ 'Delivery' => 'Levering',
+ 'DeliveryNote' => 'Levering note',
+ 'Description' => 'Beskrivelse',
+ 'Discount' => 'Rabat',
+ 'DiscountP' => 'Rabat i%',
+ 'Documentation' => 'Dokumentation',
+ 'Employee' => 'Medarbejder',
+ 'End' => '#VALUE!',
+ 'FAO' => 'FAO.',
+ 'From' => 'Fra',
+ 'Group' => 'Gruppe',
+ 'Groups' => 'Grupper.',
+ 'Highest' => 'Højeste',
+ 'Inactive' => 'Inaktiv.',
+ 'Interval' => 'Interval',
+ 'Invoice' => 'Faktura',
+ 'Invoices' => 'Fakturaer.',
+ 'IsDefault' => 'Er standard?',
+ 'Language' => 'Sprog',
+ 'Last' => 'Sidst',
+ 'Localization' => 'Lokalisering',
+ 'Loginname' => 'Login-navn',
+ 'Matchcode' => 'MatchCode.',
+ 'Media' => 'Medier',
+ 'MinPrice' => 'Min',
+ 'Name' => 'Navn',
+ 'Name1' => 'Navn 1',
+ 'Name2' => 'Navn 2.',
+ 'Name3' => 'Navn 3.',
+ 'Offer' => 'Tilbud',
+ 'Order' => 'Bestille',
+ 'Ordered' => 'Bestilt.',
+ 'OrderedBy' => 'Bestilt af',
+ 'Orders' => 'Ordre:% s',
+ 'Payment' => 'Betaling',
+ 'Price' => 'Pris',
+ 'Priority' => 'Prioritet',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'Antal',
+ 'Receipt' => 'Kvittering',
+ 'Reference' => 'Reference',
+ 'Sales' => 'SALG',
+ 'Settings' => 'Indstillinger.',
+ 'Single' => 'Enkelt',
+ 'Start' => '#VALUE!',
+ 'State' => 'Stat',
+ 'Statistics' => 'Statistikker',
+ 'Status' => 'Status.',
+ 'Stock' => 'Lager',
+ 'Street' => 'Gade',
+ 'Subgroup' => 'Undergruppe',
+ 'Tax' => 'Skat',
+ 'Terms' => 'Vilkår',
+ 'To' => 'Til',
+ 'TopArticles' => 'Top artikler',
+ 'Trend' => 'Trend.',
+ 'Turnover' => 'Omsætning',
+ 'Type' => 'Type',
+ 'ZipCode' => 'Postnummer',
+]];
diff --git a/Theme/Backend/Lang/de.lang.php b/Theme/Backend/Lang/de.lang.php
new file mode 100755
index 0000000..5d2728e
--- /dev/null
+++ b/Theme/Backend/Lang/de.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'Konto',
+ 'Active' => 'Aktiv',
+ 'Activity' => 'Aktivität',
+ 'Address' => 'Adresse',
+ 'All' => 'Alle',
+ 'Amount' => 'Höhe',
+ 'Analysis' => 'Analyse',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'Bereich',
+ 'Article' => 'Artikel',
+ 'Articles' => 'Artikel',
+ 'Available' => 'Erhältlich',
+ 'Calculate' => 'Berechnung',
+ 'City' => 'Stadt',
+ 'Class' => 'Klasse',
+ 'Client' => 'Klient',
+ 'ClientID' => 'Kunden ID',
+ 'ClientName' => 'Kundenname',
+ 'Clients' => 'Kunden',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'Bestätigung',
+ 'CoreData' => 'Kerndatei',
+ 'Country' => 'Land',
+ 'Created' => 'Erstellt',
+ 'Creator' => 'Schöpfer',
+ 'CreditNote' => 'Gutschrift',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'DSO.',
+ 'Date' => 'Datum',
+ 'DefaultInternational' => 'Standard-Internationale',
+ 'DefaultNational' => 'Standardnationalstaat',
+ 'Delivery' => 'Die Zustellung',
+ 'DeliveryNote' => 'Lieferschein',
+ 'Description' => 'Beschreibung',
+ 'Discount' => 'Rabatt',
+ 'DiscountP' => 'Rabatt in%',
+ 'Documentation' => 'Dokumentation',
+ 'Employee' => 'Mitarbeiter',
+ 'End' => '#VALUE!',
+ 'FAO' => 'Fao',
+ 'From' => 'Von',
+ 'Group' => 'Gruppe',
+ 'Groups' => 'Gruppen',
+ 'Highest' => 'Höchste',
+ 'Inactive' => 'Inaktiv',
+ 'Interval' => 'Intervall',
+ 'Invoice' => 'Rechnung',
+ 'Invoices' => 'Rechnungen',
+ 'IsDefault' => 'Ist standardmäßig?',
+ 'Language' => 'Sprache',
+ 'Last' => 'Zuletzt',
+ 'Localization' => 'Lokalisierung',
+ 'Loginname' => 'Benutzername',
+ 'Matchcode' => 'Matchcode',
+ 'Media' => 'Medien',
+ 'MinPrice' => 'Minster Preis',
+ 'Name' => 'Name',
+ 'Name1' => 'Name 1',
+ 'Name2' => 'Name 2',
+ 'Name3' => 'Name 3',
+ 'Offer' => 'Angebot',
+ 'Order' => 'Befehl',
+ 'Ordered' => 'Bestellt',
+ 'OrderedBy' => 'Bestellt durch',
+ 'Orders' => 'Aufträge',
+ 'Payment' => 'Zahlung',
+ 'Price' => 'Preis',
+ 'Priority' => 'Priorität',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'Menge',
+ 'Receipt' => 'Kassenbon',
+ 'Reference' => 'Bezug',
+ 'Sales' => 'Der Umsatz',
+ 'Settings' => 'Einstellungen',
+ 'Single' => 'Single',
+ 'Start' => '#VALUE!',
+ 'State' => 'Zustand',
+ 'Statistics' => 'Statistiken',
+ 'Status' => 'Status',
+ 'Stock' => 'Aktie',
+ 'Street' => 'Straße',
+ 'Subgroup' => 'Untergruppe',
+ 'Tax' => 'Steuer',
+ 'Terms' => 'Bedingungen',
+ 'To' => 'Zu',
+ 'TopArticles' => 'Top-Artikeln',
+ 'Trend' => 'Trend',
+ 'Turnover' => 'Umsatz',
+ 'Type' => 'Typ',
+ 'ZipCode' => 'Postleitzahl',
+]];
diff --git a/Theme/Backend/Lang/el.lang.php b/Theme/Backend/Lang/el.lang.php
new file mode 100755
index 0000000..d8079df
--- /dev/null
+++ b/Theme/Backend/Lang/el.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'λογαριασμός',
+ 'Active' => 'Ενεργός',
+ 'Activity' => 'Δραστηριότητα',
+ 'Address' => 'Διεύθυνση',
+ 'All' => 'Ολα',
+ 'Amount' => 'Ποσό',
+ 'Analysis' => 'Ανάλυση',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'Περιοχή',
+ 'Article' => 'Αρθρο',
+ 'Articles' => 'Είδη',
+ 'Available' => 'Διαθέσιμος',
+ 'Calculate' => 'Υπολογίζω',
+ 'City' => 'Πόλη',
+ 'Class' => 'Τάξη',
+ 'Client' => 'Πελάτης',
+ 'ClientID' => 'ταυτότητα πελάτη',
+ 'ClientName' => 'Όνομα Πελάτη',
+ 'Clients' => 'Πελάτες',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'Επιβεβαίωση',
+ 'CoreData' => 'Βασικά δεδομένα',
+ 'Country' => 'Χώρα',
+ 'Created' => 'Δημιουργήθηκε',
+ 'Creator' => 'Δημιουργός',
+ 'CreditNote' => 'Πιστωτικό σημείωμα',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'ΔΣΟ',
+ 'Date' => 'Ημερομηνία',
+ 'DefaultInternational' => 'Προεπιλογή Διεθνής',
+ 'DefaultNational' => 'Προεπιλεγμένος Εθνικός',
+ 'Delivery' => 'Διανομή',
+ 'DeliveryNote' => 'Δελτίο παράδοσης',
+ 'Description' => 'Περιγραφή',
+ 'Discount' => 'Εκπτωση',
+ 'DiscountP' => 'Έκπτωση σε%',
+ 'Documentation' => 'Τεκμηρίωση',
+ 'Employee' => 'Υπάλληλος',
+ 'End' => '#VALUE!',
+ 'FAO' => 'Φλυαρία',
+ 'From' => 'Από',
+ 'Group' => 'Ομάδα',
+ 'Groups' => 'Ομάδες',
+ 'Highest' => 'Υψιστος',
+ 'Inactive' => 'Αδρανής',
+ 'Interval' => 'Διάστημα',
+ 'Invoice' => 'Τιμολόγιο',
+ 'Invoices' => 'Τιμολόγια',
+ 'IsDefault' => 'Είναι προεπιλογή;',
+ 'Language' => 'Γλώσσα',
+ 'Last' => 'τελευταίος',
+ 'Localization' => 'Εντοπισμός',
+ 'Loginname' => 'Ονομα σύνδεσης',
+ 'Matchcode' => 'Matchcode',
+ 'Media' => 'Μεσο ΜΑΖΙΚΗΣ ΕΝΗΜΕΡΩΣΗΣ',
+ 'MinPrice' => 'Ελάχιστη τιμή',
+ 'Name' => 'Ονομα',
+ 'Name1' => 'Όνομα 1',
+ 'Name2' => 'Όνομα 2',
+ 'Name3' => 'Όνομα 3',
+ 'Offer' => 'Προσφορά',
+ 'Order' => 'Σειρά',
+ 'Ordered' => 'Διέταξε',
+ 'OrderedBy' => 'Παραγγέλθηκε από',
+ 'Orders' => 'Εντολές',
+ 'Payment' => 'Πληρωμή',
+ 'Price' => 'Τιμή',
+ 'Priority' => 'Προτεραιότητα',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'Ποσότητα',
+ 'Receipt' => 'Παραλαβή',
+ 'Reference' => 'Αναφορά',
+ 'Sales' => 'Εκπτώσεις',
+ 'Settings' => 'Ρυθμίσεις',
+ 'Single' => 'Μονόκλινο',
+ 'Start' => '#VALUE!',
+ 'State' => 'κατάσταση',
+ 'Statistics' => 'Στατιστική',
+ 'Status' => 'Κατάσταση',
+ 'Stock' => 'Στοκ',
+ 'Street' => 'Δρόμος',
+ 'Subgroup' => 'Υποομάδα',
+ 'Tax' => 'Φόρος',
+ 'Terms' => 'Οροι',
+ 'To' => 'Προς το',
+ 'TopArticles' => 'Κορυφαία άρθρα',
+ 'Trend' => 'Τάση',
+ 'Turnover' => 'Τζίρος',
+ 'Type' => 'Τύπος',
+ 'ZipCode' => 'Ταχυδρομικός κώδικας',
+]];
diff --git a/Theme/Backend/Lang/en.lang.php b/Theme/Backend/Lang/en.lang.php
new file mode 100755
index 0000000..0d3b729
--- /dev/null
+++ b/Theme/Backend/Lang/en.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'Account',
+ 'Active' => 'Active',
+ 'Activity' => 'Activity',
+ 'Address' => 'Address',
+ 'All' => 'All',
+ 'Amount' => 'Amount',
+ 'Analysis' => 'Analysis',
+ 'Analyze' => 'Analyze',
+ 'Area' => 'Area',
+ 'Article' => 'Article',
+ 'Articles' => 'Articles',
+ 'Available' => 'Available',
+ 'Calculate' => 'Calculate',
+ 'City' => 'City',
+ 'Class' => 'Class',
+ 'Client' => 'Client',
+ 'ClientID' => 'Client ID',
+ 'ClientName' => 'Client Name',
+ 'Clients' => 'Clients',
+ 'Comparison' => 'Comparison',
+ 'Confirmation' => 'Confirmation',
+ 'CoreData' => 'Core data',
+ 'Country' => 'Country',
+ 'Created' => 'Created',
+ 'Creator' => 'Creator',
+ 'CreditNote' => 'Credit Note',
+ 'Current' => 'Current',
+ 'DSO' => 'DSO',
+ 'Date' => 'Date',
+ 'DefaultInternational' => 'Default International',
+ 'DefaultNational' => 'Default National',
+ 'Delivery' => 'Delivery',
+ 'DeliveryNote' => 'Delivery Note',
+ 'Description' => 'Description',
+ 'Discount' => 'Discount',
+ 'DiscountP' => 'Discount in %',
+ 'Documentation' => 'Documentation',
+ 'Employee' => 'Employee',
+ 'End' => 'End',
+ 'FAO' => 'FAO',
+ 'From' => 'From',
+ 'Group' => 'Group',
+ 'Groups' => 'Groups',
+ 'Highest' => 'Highest',
+ 'Inactive' => 'Inactive',
+ 'Interval' => 'Interval',
+ 'Invoice' => 'Invoice',
+ 'Invoices' => 'Invoices',
+ 'IsDefault' => 'Is default?',
+ 'Language' => 'Language',
+ 'Last' => 'Last',
+ 'Localization' => 'Localization',
+ 'Loginname' => 'Loginname',
+ 'Matchcode' => 'Matchcode',
+ 'Media' => 'Media',
+ 'MinPrice' => 'Min Price',
+ 'Name' => 'Name',
+ 'Name1' => 'Name 1',
+ 'Name2' => 'Name 2',
+ 'Name3' => 'Name 3',
+ 'Offer' => 'Offer',
+ 'Order' => 'Order',
+ 'Ordered' => 'Ordered',
+ 'OrderedBy' => 'Ordered By',
+ 'Orders' => 'Orders',
+ 'Payment' => 'Payment',
+ 'Price' => 'Price',
+ 'Priority' => 'Priority',
+ 'Profit' => 'Profit',
+ 'Quantity' => 'Quantity',
+ 'Receipt' => 'Receipt',
+ 'Reference' => 'Reference',
+ 'Sales' => 'Sales',
+ 'Settings' => 'Settings',
+ 'Single' => 'Single',
+ 'Start' => 'Start',
+ 'State' => 'State',
+ 'Statistics' => 'Statistics',
+ 'Status' => 'Status',
+ 'Stock' => 'Stock',
+ 'Street' => 'Street',
+ 'Subgroup' => 'Subgroup',
+ 'Tax' => 'Tax',
+ 'Terms' => 'Terms',
+ 'To' => 'To',
+ 'TopArticles' => 'Top Articles',
+ 'Trend' => 'Trend',
+ 'Turnover' => 'Turnover',
+ 'Type' => 'Type',
+ 'ZipCode' => 'ZipCode',
+]];
diff --git a/Theme/Backend/Lang/es.lang.php b/Theme/Backend/Lang/es.lang.php
new file mode 100755
index 0000000..a0a1778
--- /dev/null
+++ b/Theme/Backend/Lang/es.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'Cuenta',
+ 'Active' => 'Activo',
+ 'Activity' => 'Actividad',
+ 'Address' => 'Habla a',
+ 'All' => 'Todo',
+ 'Amount' => 'Monto',
+ 'Analysis' => 'Análisis',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'Área',
+ 'Article' => 'Artículo',
+ 'Articles' => 'Artículos',
+ 'Available' => 'Disponible',
+ 'Calculate' => 'Calcular',
+ 'City' => 'Ciudad',
+ 'Class' => 'Clase',
+ 'Client' => 'Cliente',
+ 'ClientID' => 'Identificación del cliente',
+ 'ClientName' => 'nombre del cliente',
+ 'Clients' => 'Clientela',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'Confirmación',
+ 'CoreData' => 'Datos principales',
+ 'Country' => 'País',
+ 'Created' => 'Creado',
+ 'Creator' => 'Creador',
+ 'CreditNote' => 'Nota de crédito',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'DSO',
+ 'Date' => 'Fecha',
+ 'DefaultInternational' => 'Internacional predeterminado',
+ 'DefaultNational' => 'Nacional predeterminado',
+ 'Delivery' => 'Entrega',
+ 'DeliveryNote' => 'Nota de entrega',
+ 'Description' => 'Descripción',
+ 'Discount' => 'Descuento',
+ 'DiscountP' => 'Descuento en%',
+ 'Documentation' => 'Documentación',
+ 'Employee' => 'Empleado',
+ 'End' => '#VALUE!',
+ 'FAO' => 'Fao',
+ 'From' => 'Desde',
+ 'Group' => 'Grupo',
+ 'Groups' => 'Grupo',
+ 'Highest' => 'Más alto',
+ 'Inactive' => 'Inactivo',
+ 'Interval' => 'Intervalo',
+ 'Invoice' => 'Factura',
+ 'Invoices' => 'Facturas',
+ 'IsDefault' => 'Es por defecto?',
+ 'Language' => 'Idioma',
+ 'Last' => 'Ultimo',
+ 'Localization' => 'Localización',
+ 'Loginname' => 'Nombre de inicio de sesión',
+ 'Matchcode' => 'Código de asociación',
+ 'Media' => 'Medios de comunicación',
+ 'MinPrice' => 'Precio mínimo',
+ 'Name' => 'Nombre',
+ 'Name1' => 'Nombre 1',
+ 'Name2' => 'Nombre 2',
+ 'Name3' => 'Nombre 3',
+ 'Offer' => 'Oferta',
+ 'Order' => 'Pedido',
+ 'Ordered' => 'Ordenado',
+ 'OrderedBy' => 'Ordenado por',
+ 'Orders' => 'Pedidos',
+ 'Payment' => 'Pago',
+ 'Price' => 'Precio',
+ 'Priority' => 'Prioridad',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'Cantidad',
+ 'Receipt' => 'Recibo',
+ 'Reference' => 'Referencia',
+ 'Sales' => 'Ventas',
+ 'Settings' => 'Ajustes',
+ 'Single' => 'Único',
+ 'Start' => '#VALUE!',
+ 'State' => 'Expresar',
+ 'Statistics' => 'Estadísticas',
+ 'Status' => 'Estado',
+ 'Stock' => 'Valores',
+ 'Street' => 'calle',
+ 'Subgroup' => 'Subgrupo',
+ 'Tax' => 'Impuesto',
+ 'Terms' => 'Condiciones',
+ 'To' => 'A',
+ 'TopArticles' => 'Artículos principales',
+ 'Trend' => 'Tendencia',
+ 'Turnover' => 'Rotación',
+ 'Type' => 'Escribe',
+ 'ZipCode' => 'Código postal',
+]];
diff --git a/Theme/Backend/Lang/fi.lang.php b/Theme/Backend/Lang/fi.lang.php
new file mode 100755
index 0000000..1e2e0af
--- /dev/null
+++ b/Theme/Backend/Lang/fi.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'Tili',
+ 'Active' => 'Aktiivinen',
+ 'Activity' => 'Toiminta',
+ 'Address' => 'Osoite',
+ 'All' => 'Kaikki',
+ 'Amount' => 'Määrä',
+ 'Analysis' => 'Analyysi',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'Alue',
+ 'Article' => 'Artikla',
+ 'Articles' => 'Artikkelit',
+ 'Available' => 'Saatavilla',
+ 'Calculate' => 'Laskea',
+ 'City' => 'Kaupunki',
+ 'Class' => 'Luokka',
+ 'Client' => 'Asiakas',
+ 'ClientID' => 'Asiakastunnus',
+ 'ClientName' => 'Asiakkaan Nimi',
+ 'Clients' => 'Asiakkaat',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'Vahvistus',
+ 'CoreData' => 'Keskeiset tiedot',
+ 'Country' => 'Maa',
+ 'Created' => 'Luotu',
+ 'Creator' => 'Luoja',
+ 'CreditNote' => 'Luottoluotto',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'Dso',
+ 'Date' => 'Päivämäärä',
+ 'DefaultInternational' => 'Oletus kansainvälinen',
+ 'DefaultNational' => 'Oletusarvoinen kansallinen',
+ 'Delivery' => 'Toimitus',
+ 'DeliveryNote' => 'Saapumisilmoitus',
+ 'Description' => 'Kuvaus',
+ 'Discount' => 'Alennus',
+ 'DiscountP' => 'Alennus%',
+ 'Documentation' => 'Dokumentointi',
+ 'Employee' => 'Työntekijä',
+ 'End' => '#VALUE!',
+ 'FAO' => 'Fao',
+ 'From' => 'Peräkkäin',
+ 'Group' => 'Ryhmä',
+ 'Groups' => 'Ryhmät',
+ 'Highest' => 'Korkein',
+ 'Inactive' => 'Epäaktiivinen',
+ 'Interval' => 'Aikaväli',
+ 'Invoice' => 'Lasku',
+ 'Invoices' => 'Laskut',
+ 'IsDefault' => 'On oletusarvo?',
+ 'Language' => 'Kieli',
+ 'Last' => 'Kestää',
+ 'Localization' => 'Lokalisointi',
+ 'Loginname' => 'Kirjautumisnimi',
+ 'Matchcode' => 'Matchcode',
+ 'Media' => 'Media',
+ 'MinPrice' => 'Min hinta',
+ 'Name' => 'Nimi',
+ 'Name1' => 'Nimi 1',
+ 'Name2' => 'Nimi 2',
+ 'Name3' => 'Nimi 3',
+ 'Offer' => 'Tarjous',
+ 'Order' => 'Tilaus',
+ 'Ordered' => 'Tilattu',
+ 'OrderedBy' => 'Tilaama',
+ 'Orders' => 'Tilaus',
+ 'Payment' => 'Maksu',
+ 'Price' => 'Hinta',
+ 'Priority' => 'Etusija',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'Määrä',
+ 'Receipt' => 'Kuitti',
+ 'Reference' => 'Viite',
+ 'Sales' => 'Myynti',
+ 'Settings' => 'asetukset',
+ 'Single' => 'Yksittäinen',
+ 'Start' => '#VALUE!',
+ 'State' => 'Osavaltio',
+ 'Statistics' => 'Tilastot',
+ 'Status' => 'Tila',
+ 'Stock' => 'Varasto',
+ 'Street' => 'Katu',
+ 'Subgroup' => 'Alaryhmä',
+ 'Tax' => 'Verottaa',
+ 'Terms' => 'Ehdot',
+ 'To' => 'Jllek',
+ 'TopArticles' => 'Top artikkelit',
+ 'Trend' => 'Trendi',
+ 'Turnover' => 'Liikevaihto',
+ 'Type' => 'Tyyppi',
+ 'ZipCode' => 'Postinumero',
+]];
diff --git a/Theme/Backend/Lang/fr.lang.php b/Theme/Backend/Lang/fr.lang.php
new file mode 100755
index 0000000..dde03ef
--- /dev/null
+++ b/Theme/Backend/Lang/fr.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'Compte',
+ 'Active' => 'actif',
+ 'Activity' => 'Activité',
+ 'Address' => 'Adresse',
+ 'All' => 'Tout',
+ 'Amount' => 'Quantité',
+ 'Analysis' => 'Analyse',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'Zone',
+ 'Article' => 'Article',
+ 'Articles' => 'Des articles',
+ 'Available' => 'Disponible',
+ 'Calculate' => 'Calculer',
+ 'City' => 'Ville',
+ 'Class' => 'Classer',
+ 'Client' => 'Client',
+ 'ClientID' => 'identité du client',
+ 'ClientName' => 'Nom du client',
+ 'Clients' => 'Clients',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'Confirmation',
+ 'CoreData' => 'Données de base',
+ 'Country' => 'Pays',
+ 'Created' => 'Établi',
+ 'Creator' => 'Créateur',
+ 'CreditNote' => 'Note de crédit',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'Dso',
+ 'Date' => 'Date',
+ 'DefaultInternational' => 'International par défaut',
+ 'DefaultNational' => 'National par défaut',
+ 'Delivery' => 'Livraison',
+ 'DeliveryNote' => 'Bon de livraison',
+ 'Description' => 'La description',
+ 'Discount' => 'Remise',
+ 'DiscountP' => 'Rabais en%',
+ 'Documentation' => 'Documentation',
+ 'Employee' => 'Employé',
+ 'End' => '#VALUE!',
+ 'FAO' => 'Fao',
+ 'From' => 'À partir de',
+ 'Group' => 'Grouper',
+ 'Groups' => 'Groupes',
+ 'Highest' => 'Plus haut',
+ 'Inactive' => 'Inactif',
+ 'Interval' => 'Intervalle',
+ 'Invoice' => 'Facture d\'achat',
+ 'Invoices' => 'Factures',
+ 'IsDefault' => 'Est par défaut?',
+ 'Language' => 'Langue',
+ 'Last' => 'Dernier',
+ 'Localization' => 'Localisation',
+ 'Loginname' => 'Identifiant',
+ 'Matchcode' => 'Encadrement',
+ 'Media' => 'Médias',
+ 'MinPrice' => "Prix \u{200b}\u{200b}min",
+ 'Name' => 'Nom',
+ 'Name1' => 'Nom 1',
+ 'Name2' => 'Nom 2',
+ 'Name3' => 'Nom 3',
+ 'Offer' => 'Offrir',
+ 'Order' => 'Commander',
+ 'Ordered' => 'Commandé',
+ 'OrderedBy' => 'Commander par',
+ 'Orders' => 'Ordres',
+ 'Payment' => 'Paiement',
+ 'Price' => 'Prix',
+ 'Priority' => 'Priorité',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'Quantité',
+ 'Receipt' => 'Reçu',
+ 'Reference' => 'Référence',
+ 'Sales' => 'Ventes',
+ 'Settings' => 'Réglages',
+ 'Single' => 'Seul',
+ 'Start' => '#VALUE!',
+ 'State' => 'État',
+ 'Statistics' => 'Statistiques',
+ 'Status' => 'Statut',
+ 'Stock' => 'Stocker',
+ 'Street' => 'rue',
+ 'Subgroup' => 'Sous-groupe',
+ 'Tax' => 'Impôt',
+ 'Terms' => 'termes',
+ 'To' => 'À',
+ 'TopArticles' => 'Top articles',
+ 'Trend' => 'Tendance',
+ 'Turnover' => 'Chiffre d\'affaires',
+ 'Type' => 'Taper',
+ 'ZipCode' => 'Code postal',
+]];
diff --git a/Theme/Backend/Lang/hu.lang.php b/Theme/Backend/Lang/hu.lang.php
new file mode 100755
index 0000000..f1c0d74
--- /dev/null
+++ b/Theme/Backend/Lang/hu.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'Számla',
+ 'Active' => 'Aktív',
+ 'Activity' => 'Tevékenység',
+ 'Address' => 'Cím',
+ 'All' => 'Minden',
+ 'Amount' => 'Összeg',
+ 'Analysis' => 'Elemzés',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'Terület',
+ 'Article' => 'Cikk',
+ 'Articles' => 'Árucikkek',
+ 'Available' => 'Elérhető',
+ 'Calculate' => 'Kiszámítja',
+ 'City' => 'Város',
+ 'Class' => 'Osztály',
+ 'Client' => 'Ügyfél',
+ 'ClientID' => 'Ügyfélazonosító',
+ 'ClientName' => 'Ügyfél Neve',
+ 'Clients' => 'Kliensek',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'Megerősítés',
+ 'CoreData' => 'Alapvető adatok',
+ 'Country' => 'Ország',
+ 'Created' => 'Létrehozott',
+ 'Creator' => 'Teremtő',
+ 'CreditNote' => 'Jóváírás',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'DSO',
+ 'Date' => 'Dátum',
+ 'DefaultInternational' => 'Alapértelmezett nemzetközi',
+ 'DefaultNational' => 'Alapértelmezett nemzeti',
+ 'Delivery' => 'Szállítás',
+ 'DeliveryNote' => 'Fuvarlevél',
+ 'Description' => 'Leírás',
+ 'Discount' => 'Kedvezmény',
+ 'DiscountP' => 'Kedvezmény%',
+ 'Documentation' => 'Dokumentáció',
+ 'Employee' => 'Munkavállaló',
+ 'End' => '#VALUE!',
+ 'FAO' => 'FAO',
+ 'From' => 'Tól től',
+ 'Group' => 'Csoport',
+ 'Groups' => 'Csoportok',
+ 'Highest' => 'Legmagasabb',
+ 'Inactive' => 'Inaktív',
+ 'Interval' => 'Intervallum',
+ 'Invoice' => 'Számla',
+ 'Invoices' => 'Számlák',
+ 'IsDefault' => 'Alapértelmezett?',
+ 'Language' => 'Nyelv',
+ 'Last' => 'Utolsó',
+ 'Localization' => 'Lokalizáció',
+ 'Loginname' => 'Bejelentkezési név',
+ 'Matchcode' => 'Matchcode',
+ 'Media' => 'Média',
+ 'MinPrice' => 'Min Ár',
+ 'Name' => 'Név',
+ 'Name1' => 'NAME 1',
+ 'Name2' => 'NAME 2',
+ 'Name3' => 'Név 3',
+ 'Offer' => 'Ajánlat',
+ 'Order' => 'Rendelés',
+ 'Ordered' => 'Elrendelt',
+ 'OrderedBy' => 'Megrendelő',
+ 'Orders' => 'Megrendelések',
+ 'Payment' => 'Fizetés',
+ 'Price' => 'Ár',
+ 'Priority' => 'Kiemelten fontos',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'Mennyiség',
+ 'Receipt' => 'Nyugta',
+ 'Reference' => 'Referencia',
+ 'Sales' => 'Értékesítés',
+ 'Settings' => 'Beállítások',
+ 'Single' => 'Egyetlen',
+ 'Start' => '#VALUE!',
+ 'State' => 'Állapot',
+ 'Statistics' => 'Statisztika',
+ 'Status' => 'Állapot',
+ 'Stock' => 'Készlet',
+ 'Street' => 'utca',
+ 'Subgroup' => 'Alcsoport',
+ 'Tax' => 'Adó',
+ 'Terms' => 'Feltételek',
+ 'To' => 'Nak nek',
+ 'TopArticles' => 'Top cikkek',
+ 'Trend' => 'Irányzat',
+ 'Turnover' => 'Forgalom',
+ 'Type' => 'típus',
+ 'ZipCode' => 'Irányítószám',
+]];
diff --git a/Theme/Backend/Lang/it.lang.php b/Theme/Backend/Lang/it.lang.php
new file mode 100755
index 0000000..faedf61
--- /dev/null
+++ b/Theme/Backend/Lang/it.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'Account',
+ 'Active' => 'Attivo',
+ 'Activity' => 'Attività',
+ 'Address' => 'Indirizzo',
+ 'All' => 'Tutto',
+ 'Amount' => 'Quantità',
+ 'Analysis' => 'Analisi',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'La zona',
+ 'Article' => 'Articolo',
+ 'Articles' => 'Artificio',
+ 'Available' => 'A disposizione',
+ 'Calculate' => 'Calcolare',
+ 'City' => 'Città',
+ 'Class' => 'Classe',
+ 'Client' => 'Cliente',
+ 'ClientID' => 'Identificativo cliente',
+ 'ClientName' => 'nome del cliente',
+ 'Clients' => 'Clienti',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'Conferma',
+ 'CoreData' => 'Dati principali',
+ 'Country' => 'Nazione',
+ 'Created' => 'Creato',
+ 'Creator' => 'Creatore',
+ 'CreditNote' => 'Nota di credito',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'DSO.',
+ 'Date' => 'Data',
+ 'DefaultInternational' => 'Default International.',
+ 'DefaultNational' => 'National default.',
+ 'Delivery' => 'Consegna',
+ 'DeliveryNote' => 'Bolla d\'accompagnamento',
+ 'Description' => 'Descrizione',
+ 'Discount' => 'Sconto',
+ 'DiscountP' => 'Sconto in%',
+ 'Documentation' => 'Documentazione',
+ 'Employee' => 'Dipendente',
+ 'End' => '#VALUE!',
+ 'FAO' => 'FAO.',
+ 'From' => 'A partire dal',
+ 'Group' => 'Gruppo',
+ 'Groups' => 'Gruppi',
+ 'Highest' => 'Massimo',
+ 'Inactive' => 'Non attivo',
+ 'Interval' => 'Intervallo',
+ 'Invoice' => 'Fattura',
+ 'Invoices' => 'Fatture',
+ 'IsDefault' => 'È predefinito?',
+ 'Language' => 'Lingua',
+ 'Last' => 'Scorso',
+ 'Localization' => 'Localizzazione',
+ 'Loginname' => 'Nome di login',
+ 'Matchcode' => 'Matchcode.',
+ 'Media' => 'Media',
+ 'MinPrice' => 'Prezzo minimo',
+ 'Name' => 'Nome',
+ 'Name1' => 'Nome 1.',
+ 'Name2' => 'Nome 2.',
+ 'Name3' => 'Nome 3.',
+ 'Offer' => 'Offerta',
+ 'Order' => 'Ordine',
+ 'Ordered' => 'Ordinato',
+ 'OrderedBy' => 'Ordinato da',
+ 'Orders' => 'Ordini',
+ 'Payment' => 'Pagamento',
+ 'Price' => 'Prezzo',
+ 'Priority' => 'Priorità',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'Quantità',
+ 'Receipt' => 'Ricevuta',
+ 'Reference' => 'Riferimento',
+ 'Sales' => 'Saldi',
+ 'Settings' => 'Impostazioni',
+ 'Single' => 'Separare',
+ 'Start' => '#VALUE!',
+ 'State' => 'Stato',
+ 'Statistics' => 'Statistiche',
+ 'Status' => 'Stato',
+ 'Stock' => 'Azione',
+ 'Street' => 'strada',
+ 'Subgroup' => 'Sottogruppo',
+ 'Tax' => 'Imposta',
+ 'Terms' => 'Termini',
+ 'To' => 'a',
+ 'TopArticles' => 'Articoli migliori',
+ 'Trend' => 'Tendenza',
+ 'Turnover' => 'Turnover',
+ 'Type' => 'Tipo',
+ 'ZipCode' => 'Cap',
+]];
diff --git a/Theme/Backend/Lang/ja.lang.php b/Theme/Backend/Lang/ja.lang.php
new file mode 100755
index 0000000..f8a9b33
--- /dev/null
+++ b/Theme/Backend/Lang/ja.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'アカウント',
+ 'Active' => 'アクティブ',
+ 'Activity' => 'アクティビティ',
+ 'Address' => '住所',
+ 'All' => '全て',
+ 'Amount' => '額',
+ 'Analysis' => '分析',
+ 'Analyze' => '#VALUE!',
+ 'Area' => '領域',
+ 'Article' => '記事',
+ 'Articles' => 'articles',
+ 'Available' => '利用可能',
+ 'Calculate' => '計算する',
+ 'City' => '市',
+ 'Class' => 'クラス',
+ 'Client' => 'クライアント',
+ 'ClientID' => 'クライアントID',
+ 'ClientName' => 'クライアント名',
+ 'Clients' => 'クライアント',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => '確認',
+ 'CoreData' => 'コアデータ',
+ 'Country' => '国',
+ 'Created' => '作成した',
+ 'Creator' => 'クリエーター',
+ 'CreditNote' => 'クレジットノート',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'DSO',
+ 'Date' => '日にち',
+ 'DefaultInternational' => 'デフォルトの国際',
+ 'DefaultNational' => 'デフォルトの国',
+ 'Delivery' => '配達',
+ 'DeliveryNote' => '配達メモ',
+ 'Description' => '説明',
+ 'Discount' => '割引',
+ 'DiscountP' => '割引%',
+ 'Documentation' => 'ドキュメンテーション',
+ 'Employee' => '従業員',
+ 'End' => '#VALUE!',
+ 'FAO' => 'fa fa',
+ 'From' => 'から',
+ 'Group' => 'グループ',
+ 'Groups' => '団体',
+ 'Highest' => '最高',
+ 'Inactive' => '非活性',
+ 'Interval' => '間隔',
+ 'Invoice' => '請求書',
+ 'Invoices' => '請求書',
+ 'IsDefault' => 'デフォルトですか?',
+ 'Language' => '言語',
+ 'Last' => '最後',
+ 'Localization' => 'ローカライズ',
+ 'Loginname' => 'ログイン名',
+ 'Matchcode' => 'マッチコード',
+ 'Media' => 'メディア',
+ 'MinPrice' => '最小価格',
+ 'Name' => '名前',
+ 'Name1' => '名前1',
+ 'Name2' => '名前2',
+ 'Name3' => '名前3',
+ 'Offer' => 'オファー',
+ 'Order' => '注文',
+ 'Ordered' => '順序付けられました',
+ 'OrderedBy' => 'によって順序付け',
+ 'Orders' => '命令',
+ 'Payment' => '支払い',
+ 'Price' => '価格',
+ 'Priority' => '優先度',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => '量',
+ 'Receipt' => 'レシート',
+ 'Reference' => 'リファレンス',
+ 'Sales' => '売り返り',
+ 'Settings' => '設定',
+ 'Single' => '独身',
+ 'Start' => '#VALUE!',
+ 'State' => '州',
+ 'Statistics' => '統計学',
+ 'Status' => '状態',
+ 'Stock' => 'ストック',
+ 'Street' => '街',
+ 'Subgroup' => 'サブグループ',
+ 'Tax' => '税',
+ 'Terms' => '条項',
+ 'To' => 'に',
+ 'TopArticles' => 'トップ記事',
+ 'Trend' => '傾向',
+ 'Turnover' => 'ひっくり返す',
+ 'Type' => 'タイプ',
+ 'ZipCode' => '郵便番号',
+]];
diff --git a/Theme/Backend/Lang/ko.lang.php b/Theme/Backend/Lang/ko.lang.php
new file mode 100755
index 0000000..f7b7e8b
--- /dev/null
+++ b/Theme/Backend/Lang/ko.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => '계정',
+ 'Active' => '활동적인',
+ 'Activity' => '활동',
+ 'Address' => '주소',
+ 'All' => '모두',
+ 'Amount' => '양',
+ 'Analysis' => '분석',
+ 'Analyze' => '#VALUE!',
+ 'Area' => '지역',
+ 'Article' => '기사',
+ 'Articles' => '조항',
+ 'Available' => '사용 가능',
+ 'Calculate' => '계산하다',
+ 'City' => '도시',
+ 'Class' => '등급',
+ 'Client' => '고객',
+ 'ClientID' => '클라이언트 ID.',
+ 'ClientName' => '고객 이름',
+ 'Clients' => '클라이언트',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => '확인',
+ 'CoreData' => '핵심 데이터',
+ 'Country' => '국가',
+ 'Created' => '만들어진',
+ 'Creator' => '창조자',
+ 'CreditNote' => '신용 노트',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'DSO.',
+ 'Date' => '날짜',
+ 'DefaultInternational' => '기본 국제',
+ 'DefaultNational' => '기본 내셔널',
+ 'Delivery' => '배달',
+ 'DeliveryNote' => '배달 메모',
+ 'Description' => '설명',
+ 'Discount' => '할인',
+ 'DiscountP' => '할인 %',
+ 'Documentation' => '선적 서류 비치',
+ 'Employee' => '직원',
+ 'End' => '#VALUE!',
+ 'FAO' => '조금',
+ 'From' => '에서',
+ 'Group' => '그룹',
+ 'Groups' => '여러 떼',
+ 'Highest' => '제일 높은',
+ 'Inactive' => '비활성으로',
+ 'Interval' => '간격',
+ 'Invoice' => '송장',
+ 'Invoices' => '송장',
+ 'IsDefault' => '기본값은 무엇입니까?',
+ 'Language' => '언어',
+ 'Last' => '마지막',
+ 'Localization' => '현지화',
+ 'Loginname' => '로그인 이름',
+ 'Matchcode' => '매치 코드',
+ 'Media' => '미디어',
+ 'MinPrice' => '최소 가격',
+ 'Name' => '이름',
+ 'Name1' => '이름 1',
+ 'Name2' => '이름 2',
+ 'Name3' => '이름 3.',
+ 'Offer' => '권하다',
+ 'Order' => '주문하다',
+ 'Ordered' => '주문했다',
+ 'OrderedBy' => '명령을 받았다',
+ 'Orders' => '명령',
+ 'Payment' => '지불',
+ 'Price' => '가격',
+ 'Priority' => '우선 사항',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => '수량',
+ 'Receipt' => '영수증',
+ 'Reference' => '참조',
+ 'Sales' => '매상',
+ 'Settings' => '설정',
+ 'Single' => '하나의',
+ 'Start' => '#VALUE!',
+ 'State' => '상태',
+ 'Statistics' => '통계',
+ 'Status' => '상태',
+ 'Stock' => '재고',
+ 'Street' => '거리',
+ 'Subgroup' => '하급 집단',
+ 'Tax' => '세',
+ 'Terms' => '자귀',
+ 'To' => '에게',
+ 'TopArticles' => '최고 기사',
+ 'Trend' => '경향',
+ 'Turnover' => '회전율',
+ 'Type' => '유형',
+ 'ZipCode' => '우편 번호',
+]];
diff --git a/Theme/Backend/Lang/no.lang.php b/Theme/Backend/Lang/no.lang.php
new file mode 100755
index 0000000..f4e708c
--- /dev/null
+++ b/Theme/Backend/Lang/no.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'Regnskap',
+ 'Active' => 'Aktiv',
+ 'Activity' => 'Aktivitet',
+ 'Address' => 'Adresse',
+ 'All' => 'Alle',
+ 'Amount' => 'Beløp',
+ 'Analysis' => 'Analyse',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'Område',
+ 'Article' => 'Artikkel',
+ 'Articles' => 'Artikler',
+ 'Available' => 'Tilgjengelig',
+ 'Calculate' => 'Regne ut',
+ 'City' => 'By',
+ 'Class' => 'Klasse',
+ 'Client' => 'Klient',
+ 'ClientID' => 'klient-ID',
+ 'ClientName' => 'Klientens navn',
+ 'Clients' => 'Klienter',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'Bekreftelse',
+ 'CoreData' => 'Kjernedata',
+ 'Country' => 'Land',
+ 'Created' => 'Opprettet',
+ 'Creator' => 'Skaperen.',
+ 'CreditNote' => 'Kredittnota',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'DSO',
+ 'Date' => 'Dato',
+ 'DefaultInternational' => 'Standard internasjonal',
+ 'DefaultNational' => 'Standard nasjonal',
+ 'Delivery' => 'Leveranse',
+ 'DeliveryNote' => 'Leveringsnotat',
+ 'Description' => 'Beskrivelse',
+ 'Discount' => 'Rabatt',
+ 'DiscountP' => 'Rabatt i%',
+ 'Documentation' => 'Dokumentasjon',
+ 'Employee' => 'Ansatt',
+ 'End' => '#VALUE!',
+ 'FAO' => 'FAO.',
+ 'From' => 'Fra',
+ 'Group' => 'Gruppe',
+ 'Groups' => 'Grupper',
+ 'Highest' => 'Høyeste',
+ 'Inactive' => 'Inaktiv',
+ 'Interval' => 'Intervall',
+ 'Invoice' => 'Faktura',
+ 'Invoices' => 'Fakturaer',
+ 'IsDefault' => 'Er standard?',
+ 'Language' => 'Språk',
+ 'Last' => 'Siste',
+ 'Localization' => 'Lokalisering',
+ 'Loginname' => 'Påloggingsnavn',
+ 'Matchcode' => 'MatchCode.',
+ 'Media' => 'Media',
+ 'MinPrice' => 'Min pris',
+ 'Name' => 'Navn',
+ 'Name1' => 'Navn 1',
+ 'Name2' => 'Navn 2.',
+ 'Name3' => 'Navn 3.',
+ 'Offer' => 'By på',
+ 'Order' => 'Rekkefølge',
+ 'Ordered' => 'Bestilt',
+ 'OrderedBy' => 'Bestilt av.',
+ 'Orders' => 'Bestillinger',
+ 'Payment' => 'innbetaling',
+ 'Price' => 'Pris',
+ 'Priority' => 'Prioritet',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'Mengde',
+ 'Receipt' => 'Kvittering',
+ 'Reference' => 'Referanse',
+ 'Sales' => 'Salg',
+ 'Settings' => 'Innstillinger',
+ 'Single' => 'Enkelt',
+ 'Start' => '#VALUE!',
+ 'State' => 'Stat',
+ 'Statistics' => 'Statistikk',
+ 'Status' => 'Status',
+ 'Stock' => 'Lager',
+ 'Street' => 'gate',
+ 'Subgroup' => 'Undergruppe',
+ 'Tax' => 'Avgift',
+ 'Terms' => 'Vilkårene',
+ 'To' => 'Til',
+ 'TopArticles' => 'Toppartikler',
+ 'Trend' => 'Trend',
+ 'Turnover' => 'Omsetning',
+ 'Type' => 'Type',
+ 'ZipCode' => 'Post kode',
+]];
diff --git a/Theme/Backend/Lang/pl.lang.php b/Theme/Backend/Lang/pl.lang.php
new file mode 100755
index 0000000..f3eb54e
--- /dev/null
+++ b/Theme/Backend/Lang/pl.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'Rachunek',
+ 'Active' => 'Aktywny',
+ 'Activity' => 'Czynność',
+ 'Address' => 'Adres',
+ 'All' => 'Wszystkie',
+ 'Amount' => 'Kwota',
+ 'Analysis' => 'Analiza',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'Powierzchnia',
+ 'Article' => 'Artykuł',
+ 'Articles' => 'Artykuły',
+ 'Available' => 'Dostępny',
+ 'Calculate' => 'Oblicz',
+ 'City' => 'Miasto',
+ 'Class' => 'Klasa',
+ 'Client' => 'Klient',
+ 'ClientID' => 'Identyfikator klienta',
+ 'ClientName' => 'Nazwa klienta',
+ 'Clients' => 'Klienci.',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'Potwierdzenie',
+ 'CoreData' => 'Podstawowe dane',
+ 'Country' => 'Kraj',
+ 'Created' => 'Utworzony',
+ 'Creator' => 'Twórca',
+ 'CreditNote' => 'Uwaga kredytowa',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'DSO.',
+ 'Date' => 'Data',
+ 'DefaultInternational' => 'Domyślny międzynarodowy',
+ 'DefaultNational' => 'Domyślny National.',
+ 'Delivery' => 'Dostawa',
+ 'DeliveryNote' => 'Dowód dostawy',
+ 'Description' => 'Opis',
+ 'Discount' => 'Zniżka',
+ 'DiscountP' => 'Zniżka w%',
+ 'Documentation' => 'Dokumentacja',
+ 'Employee' => 'Pracownik',
+ 'End' => '#VALUE!',
+ 'FAO' => 'Fao.',
+ 'From' => 'Z',
+ 'Group' => 'Grupa',
+ 'Groups' => 'Grupy',
+ 'Highest' => 'Najwyższy',
+ 'Inactive' => 'Nieaktywny',
+ 'Interval' => 'Interwał',
+ 'Invoice' => 'Faktura',
+ 'Invoices' => 'Faktury',
+ 'IsDefault' => 'Jest domyślnie?',
+ 'Language' => 'Język',
+ 'Last' => 'Ostatni, ubiegły, zeszły',
+ 'Localization' => 'Lokalizacja',
+ 'Loginname' => 'Nazwa użytkownika',
+ 'Matchcode' => 'MatchCode.',
+ 'Media' => 'Głoska bezdźwięczna',
+ 'MinPrice' => 'Cena min',
+ 'Name' => 'Nazwa',
+ 'Name1' => 'Nazwa 1.',
+ 'Name2' => 'Nazwa 2.',
+ 'Name3' => 'Nazwa 3.',
+ 'Offer' => 'Oferta',
+ 'Order' => 'Zamówienie',
+ 'Ordered' => 'Uporządkowany',
+ 'OrderedBy' => 'Zamówiony przez',
+ 'Orders' => 'Zamówienia',
+ 'Payment' => 'Zapłata',
+ 'Price' => 'Cena £',
+ 'Priority' => 'Priorytet',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'Ilość',
+ 'Receipt' => 'Paragon fiskalny',
+ 'Reference' => 'Odniesienie',
+ 'Sales' => 'Obroty',
+ 'Settings' => 'Ustawienia',
+ 'Single' => 'Pojedynczy',
+ 'Start' => '#VALUE!',
+ 'State' => 'Państwo',
+ 'Statistics' => 'Statystyka',
+ 'Status' => 'Status',
+ 'Stock' => 'Magazyn',
+ 'Street' => 'Ulica',
+ 'Subgroup' => 'Podgrupa',
+ 'Tax' => 'Podatek',
+ 'Terms' => 'Semestry',
+ 'To' => 'Do',
+ 'TopArticles' => 'Najlepsze artykuły',
+ 'Trend' => 'Tendencja',
+ 'Turnover' => 'Obrót',
+ 'Type' => 'Rodzaj',
+ 'ZipCode' => 'Kod pocztowy',
+]];
diff --git a/Theme/Backend/Lang/pt.lang.php b/Theme/Backend/Lang/pt.lang.php
new file mode 100755
index 0000000..681f4bc
--- /dev/null
+++ b/Theme/Backend/Lang/pt.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'Conta',
+ 'Active' => 'Ativo',
+ 'Activity' => 'Atividade',
+ 'Address' => 'Endereço',
+ 'All' => 'Tudo',
+ 'Amount' => 'Montante',
+ 'Analysis' => 'Análise',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'Área',
+ 'Article' => 'Artigo',
+ 'Articles' => 'Artigos',
+ 'Available' => 'Disponível',
+ 'Calculate' => 'Calcular',
+ 'City' => 'Cidade',
+ 'Class' => 'Classe',
+ 'Client' => 'Cliente',
+ 'ClientID' => 'ID do Cliente',
+ 'ClientName' => 'Nome do cliente',
+ 'Clients' => 'Clientes',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'Confirmação',
+ 'CoreData' => 'Dados principais',
+ 'Country' => 'País',
+ 'Created' => 'Criado',
+ 'Creator' => 'O Criador',
+ 'CreditNote' => 'Nota de crédito',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'Dso.',
+ 'Date' => 'Encontro',
+ 'DefaultInternational' => 'Padrão Internacional',
+ 'DefaultNational' => 'Nacional padrão',
+ 'Delivery' => 'Entrega',
+ 'DeliveryNote' => 'Nota de entrega',
+ 'Description' => 'Descrição',
+ 'Discount' => 'Desconto',
+ 'DiscountP' => 'Desconto em%',
+ 'Documentation' => 'Documentação',
+ 'Employee' => 'Funcionário',
+ 'End' => '#VALUE!',
+ 'FAO' => 'FAO.',
+ 'From' => 'A partir de',
+ 'Group' => 'Grupo',
+ 'Groups' => 'Grupos',
+ 'Highest' => 'Altíssima',
+ 'Inactive' => 'Inativo',
+ 'Interval' => 'Intervalo',
+ 'Invoice' => 'Fatura',
+ 'Invoices' => 'Faturas',
+ 'IsDefault' => 'É padrão?',
+ 'Language' => 'Língua',
+ 'Last' => 'Durar',
+ 'Localization' => 'Localização',
+ 'Loginname' => 'Nome de acesso',
+ 'Matchcode' => 'Código de combinação',
+ 'Media' => 'meios de comunicação',
+ 'MinPrice' => 'Preço mínimo',
+ 'Name' => 'Nome',
+ 'Name1' => 'Nome 1.',
+ 'Name2' => 'Nome 2.',
+ 'Name3' => 'Nome 3.',
+ 'Offer' => 'Oferta',
+ 'Order' => 'Pedido',
+ 'Ordered' => 'Encomendado',
+ 'OrderedBy' => 'Ordenado por',
+ 'Orders' => 'Pedidos',
+ 'Payment' => 'Pagamento',
+ 'Price' => 'Preço',
+ 'Priority' => 'Prioridade',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'Quantidade',
+ 'Receipt' => 'Recibo',
+ 'Reference' => 'Referência',
+ 'Sales' => 'Vendas',
+ 'Settings' => 'Configurações',
+ 'Single' => 'Solteiro',
+ 'Start' => '#VALUE!',
+ 'State' => 'Estado',
+ 'Statistics' => 'Estatisticas',
+ 'Status' => 'Status',
+ 'Stock' => 'Estoque',
+ 'Street' => 'rua',
+ 'Subgroup' => 'Subgrupo',
+ 'Tax' => 'Imposto',
+ 'Terms' => 'Termos.',
+ 'To' => 'Para',
+ 'TopArticles' => 'Artigos de topo',
+ 'Trend' => 'Tendência',
+ 'Turnover' => 'Volume de negócios',
+ 'Type' => 'Modelo',
+ 'ZipCode' => 'CEP',
+]];
diff --git a/Theme/Backend/Lang/ru.lang.php b/Theme/Backend/Lang/ru.lang.php
new file mode 100755
index 0000000..e59979e
--- /dev/null
+++ b/Theme/Backend/Lang/ru.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'Счет',
+ 'Active' => 'Активный',
+ 'Activity' => 'Мероприятия',
+ 'Address' => 'Адрес',
+ 'All' => 'Все',
+ 'Amount' => 'Количество',
+ 'Analysis' => 'Анализ',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'Площадь',
+ 'Article' => 'Статья',
+ 'Articles' => 'Статьи',
+ 'Available' => 'Доступный',
+ 'Calculate' => 'Рассчитать',
+ 'City' => 'Город',
+ 'Class' => 'Класс',
+ 'Client' => 'Клиент',
+ 'ClientID' => 'ID клиента',
+ 'ClientName' => 'имя клиента',
+ 'Clients' => 'Клиенты',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'Подтверждение',
+ 'CoreData' => 'Основные данные',
+ 'Country' => 'Страна',
+ 'Created' => 'Созданный',
+ 'Creator' => 'Создатель',
+ 'CreditNote' => 'Кредитная нота',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'DSO',
+ 'Date' => 'Дата',
+ 'DefaultInternational' => 'Default International',
+ 'DefaultNational' => 'Национальный по умолчанию',
+ 'Delivery' => 'Доставка',
+ 'DeliveryNote' => 'Накладная',
+ 'Description' => 'Описание',
+ 'Discount' => 'Скидка',
+ 'DiscountP' => 'Скидка в%',
+ 'Documentation' => 'Документация',
+ 'Employee' => 'Наемный рабочий',
+ 'End' => '#VALUE!',
+ 'FAO' => 'ФАО',
+ 'From' => 'От',
+ 'Group' => 'Группа',
+ 'Groups' => 'Группы',
+ 'Highest' => 'Наибольший',
+ 'Inactive' => 'Неактивный',
+ 'Interval' => 'Интервал',
+ 'Invoice' => 'Счет',
+ 'Invoices' => 'Счета',
+ 'IsDefault' => 'По умолчанию?',
+ 'Language' => 'Язык',
+ 'Last' => 'Последний',
+ 'Localization' => 'Локализация',
+ 'Loginname' => 'Логин',
+ 'Matchcode' => 'MatchCode.',
+ 'Media' => 'Средства массовой информации',
+ 'MinPrice' => 'Мин цена',
+ 'Name' => 'Имя',
+ 'Name1' => 'Имя 1.',
+ 'Name2' => 'Имя 2.',
+ 'Name3' => 'Имя 3.',
+ 'Offer' => 'Предложение',
+ 'Order' => 'Заказ',
+ 'Ordered' => 'Заказал',
+ 'OrderedBy' => 'Заказан',
+ 'Orders' => 'Заказывает',
+ 'Payment' => 'Оплата',
+ 'Price' => 'Цена',
+ 'Priority' => 'Приоритет',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'Количество',
+ 'Receipt' => 'Квитанция',
+ 'Reference' => 'Ссылка',
+ 'Sales' => 'Продажи',
+ 'Settings' => 'Настройки',
+ 'Single' => 'Одинокий',
+ 'Start' => '#VALUE!',
+ 'State' => 'Состояние',
+ 'Statistics' => 'Статистика',
+ 'Status' => 'Статус',
+ 'Stock' => 'Склад',
+ 'Street' => 'улица',
+ 'Subgroup' => 'Подгруппа',
+ 'Tax' => 'Налог',
+ 'Terms' => 'Условия',
+ 'To' => 'К',
+ 'TopArticles' => 'Лучшие статьи',
+ 'Trend' => 'Тренд',
+ 'Turnover' => 'Оборот',
+ 'Type' => 'Тип',
+ 'ZipCode' => 'Почтовый Индекс',
+]];
diff --git a/Theme/Backend/Lang/sv.lang.php b/Theme/Backend/Lang/sv.lang.php
new file mode 100755
index 0000000..667efb9
--- /dev/null
+++ b/Theme/Backend/Lang/sv.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'konto',
+ 'Active' => 'Aktiva',
+ 'Activity' => 'Aktivitet',
+ 'Address' => 'Adress',
+ 'All' => 'Allt',
+ 'Amount' => 'Belopp',
+ 'Analysis' => 'Analys',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'Område',
+ 'Article' => 'Artikel',
+ 'Articles' => 'Artiklar',
+ 'Available' => 'Tillgängligt',
+ 'Calculate' => 'Beräkna',
+ 'City' => 'Stad',
+ 'Class' => 'Klass',
+ 'Client' => 'Klient',
+ 'ClientID' => 'Klient ID',
+ 'ClientName' => 'Kundnamn',
+ 'Clients' => 'Klienter',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'Bekräftelse',
+ 'CoreData' => 'Kärndata',
+ 'Country' => 'Land',
+ 'Created' => 'Skapad',
+ 'Creator' => 'Skapare',
+ 'CreditNote' => 'Kreditanteckning',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'Do',
+ 'Date' => 'Datum',
+ 'DefaultInternational' => 'Standard International',
+ 'DefaultNational' => 'Standard nationell',
+ 'Delivery' => 'Leverans',
+ 'DeliveryNote' => 'Leveransanteckning',
+ 'Description' => 'Beskrivning',
+ 'Discount' => 'Rabatt',
+ 'DiscountP' => 'Rabatt i%',
+ 'Documentation' => 'Dokumentation',
+ 'Employee' => 'Anställd',
+ 'End' => '#VALUE!',
+ 'FAO' => 'Fao',
+ 'From' => 'Från',
+ 'Group' => 'Grupp',
+ 'Groups' => 'Grupp',
+ 'Highest' => 'Högsta',
+ 'Inactive' => 'Inaktiv',
+ 'Interval' => 'Intervall',
+ 'Invoice' => 'Faktura',
+ 'Invoices' => 'Fakturor',
+ 'IsDefault' => 'Är standard?',
+ 'Language' => 'Språk',
+ 'Last' => 'Sista',
+ 'Localization' => 'Lokalisering',
+ 'Loginname' => 'Inloggningsnamn',
+ 'Matchcode' => 'Matchcode',
+ 'Media' => 'Media',
+ 'MinPrice' => 'Min pris',
+ 'Name' => 'namn',
+ 'Name1' => 'Namn 1',
+ 'Name2' => 'Namn 2',
+ 'Name3' => 'Namn 3',
+ 'Offer' => 'Erbjudande',
+ 'Order' => 'Beställa',
+ 'Ordered' => 'Beställde',
+ 'OrderedBy' => 'Beställd av',
+ 'Orders' => 'Order',
+ 'Payment' => 'Betalning',
+ 'Price' => 'Pris',
+ 'Priority' => 'Prioritet',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'Kvantitet',
+ 'Receipt' => 'Mottagande',
+ 'Reference' => 'Referens',
+ 'Sales' => 'Försäljning',
+ 'Settings' => 'inställningar',
+ 'Single' => 'Enda',
+ 'Start' => '#VALUE!',
+ 'State' => 'stat',
+ 'Statistics' => 'Statistik',
+ 'Status' => 'Status',
+ 'Stock' => 'Stock',
+ 'Street' => 'Gata',
+ 'Subgroup' => 'Undergrupp',
+ 'Tax' => 'Beskatta',
+ 'Terms' => 'Villkor',
+ 'To' => 'Till',
+ 'TopArticles' => 'Toppartiklar',
+ 'Trend' => 'Trend',
+ 'Turnover' => 'Omsättning',
+ 'Type' => 'Typ',
+ 'ZipCode' => 'Postnummer',
+]];
diff --git a/Theme/Backend/Lang/th.lang.php b/Theme/Backend/Lang/th.lang.php
new file mode 100755
index 0000000..d9474bb
--- /dev/null
+++ b/Theme/Backend/Lang/th.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'บัญชี',
+ 'Active' => 'คล่องแคล่ว',
+ 'Activity' => 'กิจกรรม',
+ 'Address' => 'ที่อยู่',
+ 'All' => 'ทั้งหมด',
+ 'Amount' => 'จำนวน',
+ 'Analysis' => 'การวิเคราะห์',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'พื้นที่',
+ 'Article' => 'บทความ',
+ 'Articles' => 'บทความ',
+ 'Available' => 'มีอยู่',
+ 'Calculate' => 'คำนวณ',
+ 'City' => 'เมือง',
+ 'Class' => 'ระดับ',
+ 'Client' => 'ลูกค้า',
+ 'ClientID' => 'รหัสลูกค้า',
+ 'ClientName' => 'ชื่อลูกค้า',
+ 'Clients' => 'ลูกค้า',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'การยืนยัน',
+ 'CoreData' => 'ข้อมูลหลัก',
+ 'Country' => 'ประเทศ',
+ 'Created' => 'สร้าง',
+ 'Creator' => 'ผู้สร้าง',
+ 'CreditNote' => 'ใบลดหนี้',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'DSO',
+ 'Date' => 'วันที่',
+ 'DefaultInternational' => 'เริ่มต้นระหว่างประเทศ',
+ 'DefaultNational' => 'เริ่มต้นชาติ',
+ 'Delivery' => 'จัดส่ง',
+ 'DeliveryNote' => 'บันทึกการส่งมอบ',
+ 'Description' => 'คำอธิบาย',
+ 'Discount' => 'การลดราคา',
+ 'DiscountP' => 'ส่วนลดใน%',
+ 'Documentation' => 'เอกสาร',
+ 'Employee' => 'พนักงาน',
+ 'End' => '#VALUE!',
+ 'FAO' => 'คน',
+ 'From' => 'จาก',
+ 'Group' => 'กลุ่ม',
+ 'Groups' => 'กลุ่ม',
+ 'Highest' => 'สูงที่สุด',
+ 'Inactive' => 'ไม่ใช้งาน',
+ 'Interval' => 'ช่วงเวลา',
+ 'Invoice' => 'ใบแจ้งหนี้',
+ 'Invoices' => 'ใบแจ้งหนี้',
+ 'IsDefault' => 'เป็นค่าเริ่มต้น?',
+ 'Language' => 'ภาษา',
+ 'Last' => 'ล่าสุด',
+ 'Localization' => 'การแปล',
+ 'Loginname' => 'ชื่อเข้าสู่ระบบ',
+ 'Matchcode' => 'การจับคู่',
+ 'Media' => 'สื่อ',
+ 'MinPrice' => 'นาทีราคา',
+ 'Name' => 'ชื่อ',
+ 'Name1' => 'ชื่อ 1',
+ 'Name2' => 'ชื่อ 2',
+ 'Name3' => 'ชื่อ 3',
+ 'Offer' => 'เสนอ',
+ 'Order' => 'คำสั่ง',
+ 'Ordered' => 'ที่ได้รับคำสั่ง',
+ 'OrderedBy' => 'ได้รับคำสั่งจาก',
+ 'Orders' => 'คำสั่งซื้อ',
+ 'Payment' => 'การชำระเงิน',
+ 'Price' => 'ราคา',
+ 'Priority' => 'ลำดับความสำคัญ',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'ปริมาณ',
+ 'Receipt' => 'ใบเสร็จ',
+ 'Reference' => 'อ้างอิง',
+ 'Sales' => 'ฝ่ายขาย',
+ 'Settings' => 'การตั้งค่า',
+ 'Single' => 'เดี่ยว',
+ 'Start' => '#VALUE!',
+ 'State' => 'สถานะ',
+ 'Statistics' => 'สถิติ',
+ 'Status' => 'สถานะ',
+ 'Stock' => 'คลังสินค้า',
+ 'Street' => 'ถนน',
+ 'Subgroup' => 'กลุ่มย่อย',
+ 'Tax' => 'ภาษี',
+ 'Terms' => 'เงื่อนไข',
+ 'To' => 'ถึง',
+ 'TopArticles' => 'บทความยอดนิยม',
+ 'Trend' => 'แนวโน้ม',
+ 'Turnover' => 'การหมุนเวียน',
+ 'Type' => 'พิมพ์',
+ 'ZipCode' => 'รหัสไปรษณีย์',
+]];
diff --git a/Theme/Backend/Lang/tr.lang.php b/Theme/Backend/Lang/tr.lang.php
new file mode 100755
index 0000000..9cbdcd9
--- /dev/null
+++ b/Theme/Backend/Lang/tr.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'Hesap',
+ 'Active' => 'Aktif',
+ 'Activity' => 'Aktivite',
+ 'Address' => 'Adres',
+ 'All' => 'Herşey',
+ 'Amount' => 'Miktar',
+ 'Analysis' => 'Analiz',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'Alan',
+ 'Article' => 'Madde',
+ 'Articles' => 'Nesne',
+ 'Available' => 'Mevcut',
+ 'Calculate' => 'Hesaplamak',
+ 'City' => 'Şehir',
+ 'Class' => 'Sınıf',
+ 'Client' => 'Müşteri',
+ 'ClientID' => 'Müşteri Kimliği',
+ 'ClientName' => 'Müşteri Adı',
+ 'Clients' => 'Müşteriler',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'Onayla',
+ 'CoreData' => 'Temel veri',
+ 'Country' => 'Ülke',
+ 'Created' => 'Yaratılmış',
+ 'Creator' => 'Yaratıcı',
+ 'CreditNote' => 'Kredi notu',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'Dso',
+ 'Date' => 'Tarih',
+ 'DefaultInternational' => 'Varsayılan Uluslararası',
+ 'DefaultNational' => 'Varsayılan ulusal',
+ 'Delivery' => 'Teslimat',
+ 'DeliveryNote' => 'Teslimat notu',
+ 'Description' => 'Açıklama',
+ 'Discount' => 'İndirim',
+ 'DiscountP' => '% İndirim',
+ 'Documentation' => 'Belgeler',
+ 'Employee' => 'Çalışan',
+ 'End' => '#VALUE!',
+ 'FAO' => 'FAO',
+ 'From' => 'İtibaren',
+ 'Group' => 'Grup',
+ 'Groups' => 'Gruplar',
+ 'Highest' => 'En yüksek',
+ 'Inactive' => 'Aktif olmayan',
+ 'Interval' => 'Aralık',
+ 'Invoice' => 'Fatura',
+ 'Invoices' => 'Faturalar',
+ 'IsDefault' => 'Varsayılan mı?',
+ 'Language' => 'Dilim',
+ 'Last' => 'Geçen',
+ 'Localization' => 'Yerelleştirme',
+ 'Loginname' => 'Kullanıcı adı',
+ 'Matchcode' => 'Maç Kodu',
+ 'Media' => 'Medya',
+ 'MinPrice' => 'Minik fiyat',
+ 'Name' => 'İsim',
+ 'Name1' => 'İsim 1',
+ 'Name2' => 'İsim 2',
+ 'Name3' => 'ADI 3',
+ 'Offer' => 'Teklif',
+ 'Order' => 'Emir',
+ 'Ordered' => 'Emir',
+ 'OrderedBy' => 'Tarafından sipariş edildi',
+ 'Orders' => 'Emirler',
+ 'Payment' => 'Ödeme',
+ 'Price' => 'Fiyat',
+ 'Priority' => 'Öncelik',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'Miktar',
+ 'Receipt' => 'Fiş',
+ 'Reference' => 'Referans',
+ 'Sales' => 'Satış',
+ 'Settings' => 'Ayarlar',
+ 'Single' => 'Bekar',
+ 'Start' => '#VALUE!',
+ 'State' => 'Belirtmek, bildirmek',
+ 'Statistics' => 'İstatistik',
+ 'Status' => 'Durum',
+ 'Stock' => 'Stoklamak',
+ 'Street' => 'sokak',
+ 'Subgroup' => 'Alt grup',
+ 'Tax' => 'Vergi',
+ 'Terms' => 'Terimler',
+ 'To' => 'İle',
+ 'TopArticles' => 'En iyi makaleler',
+ 'Trend' => 'Akım',
+ 'Turnover' => 'Devir',
+ 'Type' => 'Tip',
+ 'ZipCode' => 'Posta kodu',
+]];
diff --git a/Theme/Backend/Lang/uk.lang.php b/Theme/Backend/Lang/uk.lang.php
new file mode 100755
index 0000000..a3879cd
--- /dev/null
+++ b/Theme/Backend/Lang/uk.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => 'Обліковий запис',
+ 'Active' => 'Активний',
+ 'Activity' => 'Діяльність',
+ 'Address' => 'Адреса',
+ 'All' => 'Все',
+ 'Amount' => 'Сума',
+ 'Analysis' => 'Аналіз',
+ 'Analyze' => '#VALUE!',
+ 'Area' => 'Площа',
+ 'Article' => 'Стаття',
+ 'Articles' => 'Статті',
+ 'Available' => 'Доступний',
+ 'Calculate' => 'Розраховувати',
+ 'City' => 'Місто',
+ 'Class' => 'Клас',
+ 'Client' => 'Клієнт',
+ 'ClientID' => 'Ідентифікатор клієнта',
+ 'ClientName' => 'Назва клієнта',
+ 'Clients' => 'Клієнти',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => 'Підтвердження',
+ 'CoreData' => 'Основні дані',
+ 'Country' => 'Країна',
+ 'Created' => 'Створений',
+ 'Creator' => 'Творець',
+ 'CreditNote' => 'Кредитове авізо',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'Дз',
+ 'Date' => 'Дата',
+ 'DefaultInternational' => 'Міжнародний за замовчуванням',
+ 'DefaultNational' => 'Національний за замовчуванням',
+ 'Delivery' => 'Доставка',
+ 'DeliveryNote' => 'Накладна',
+ 'Description' => 'Опис',
+ 'Discount' => 'Знижка',
+ 'DiscountP' => 'Знижка у%',
+ 'Documentation' => 'Документація',
+ 'Employee' => 'Співробітник',
+ 'End' => '#VALUE!',
+ 'FAO' => 'Фах',
+ 'From' => 'Від',
+ 'Group' => 'Група',
+ 'Groups' => 'Групи',
+ 'Highest' => 'Найвищий',
+ 'Inactive' => 'Неактивний',
+ 'Interval' => 'Інтервал',
+ 'Invoice' => 'Рахунок-фактура',
+ 'Invoices' => 'Рахунки-фактури',
+ 'IsDefault' => 'Чи є за замовчуванням?',
+ 'Language' => 'Мову',
+ 'Last' => 'Остання',
+ 'Localization' => 'Локалізація',
+ 'Loginname' => 'Логін',
+ 'Matchcode' => 'Матч',
+ 'Media' => 'Медіа',
+ 'MinPrice' => 'Ціна',
+ 'Name' => 'Назва',
+ 'Name1' => 'Ім\'я 1',
+ 'Name2' => 'Ім\'я 2',
+ 'Name3' => 'Назва 3',
+ 'Offer' => 'Пропозиція',
+ 'Order' => 'Порядок',
+ 'Ordered' => 'Упорядкований',
+ 'OrderedBy' => 'Замовлений',
+ 'Orders' => 'Накази',
+ 'Payment' => 'Платіж',
+ 'Price' => 'Ціна',
+ 'Priority' => 'Пріоритет',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => 'Кількість',
+ 'Receipt' => 'Квитанція',
+ 'Reference' => 'Довідник',
+ 'Sales' => 'Продаж',
+ 'Settings' => 'Налаштування',
+ 'Single' => 'Одиночний',
+ 'Start' => '#VALUE!',
+ 'State' => 'Держава',
+ 'Statistics' => 'Статистика',
+ 'Status' => 'Статус',
+ 'Stock' => 'Запас',
+ 'Street' => 'Вулиця',
+ 'Subgroup' => 'Підгруп',
+ 'Tax' => 'Оподаткування',
+ 'Terms' => 'Умови',
+ 'To' => 'До',
+ 'TopArticles' => 'Топці',
+ 'Trend' => 'Тенденція',
+ 'Turnover' => 'Оборот',
+ 'Type' => 'Тип',
+ 'ZipCode' => 'ЗІП код',
+]];
diff --git a/Theme/Backend/Lang/zh.lang.php b/Theme/Backend/Lang/zh.lang.php
new file mode 100755
index 0000000..99f1248
--- /dev/null
+++ b/Theme/Backend/Lang/zh.lang.php
@@ -0,0 +1,106 @@
+ [
+ 'Account' => '帐户',
+ 'Active' => '积极的',
+ 'Activity' => '活动',
+ 'Address' => '地址',
+ 'All' => '全部',
+ 'Amount' => '数量',
+ 'Analysis' => '分析',
+ 'Analyze' => '#VALUE!',
+ 'Area' => '区域',
+ 'Article' => '文章',
+ 'Articles' => '文章',
+ 'Available' => '可用的',
+ 'Calculate' => '计算',
+ 'City' => '城市',
+ 'Class' => '班级',
+ 'Client' => '客户',
+ 'ClientID' => '客户ID',
+ 'ClientName' => '客户名称',
+ 'Clients' => '客户',
+ 'Comparison' => '#VALUE!',
+ 'Confirmation' => '确认',
+ 'CoreData' => '核心数据',
+ 'Country' => '国家',
+ 'Created' => '创造了',
+ 'Creator' => '创造者',
+ 'CreditNote' => '信用票据',
+ 'Current' => '#VALUE!',
+ 'DSO' => 'DSO',
+ 'Date' => '日期',
+ 'DefaultInternational' => '违约国际',
+ 'DefaultNational' => '违约国家',
+ 'Delivery' => '交货',
+ 'DeliveryNote' => '送货单',
+ 'Description' => '描述',
+ 'Discount' => '折扣',
+ 'DiscountP' => '折扣%%',
+ 'Documentation' => '文件',
+ 'Employee' => '员工',
+ 'End' => '#VALUE!',
+ 'FAO' => '粮农组织',
+ 'From' => '从',
+ 'Group' => '团体',
+ 'Groups' => '团体',
+ 'Highest' => '最高',
+ 'Inactive' => '不活跃',
+ 'Interval' => '间隔',
+ 'Invoice' => '发票',
+ 'Invoices' => '发票',
+ 'IsDefault' => '默认为默认情况下?',
+ 'Language' => '语',
+ 'Last' => '最后的',
+ 'Localization' => '本土化',
+ 'Loginname' => '登录名',
+ 'Matchcode' => '匹配码',
+ 'Media' => '媒体',
+ 'MinPrice' => '最终价格',
+ 'Name' => '名称',
+ 'Name1' => '名称1',
+ 'Name2' => '名称2',
+ 'Name3' => '名称3.',
+ 'Offer' => '提供',
+ 'Order' => '命令',
+ 'Ordered' => '订购',
+ 'OrderedBy' => '订购',
+ 'Orders' => '命令',
+ 'Payment' => '支付',
+ 'Price' => '价格',
+ 'Priority' => '优先事项',
+ 'Profit' => '#VALUE!',
+ 'Quantity' => '数量',
+ 'Receipt' => '收据',
+ 'Reference' => '参考',
+ 'Sales' => '销售量',
+ 'Settings' => '设置',
+ 'Single' => '单身的',
+ 'Start' => '#VALUE!',
+ 'State' => '状态',
+ 'Statistics' => '统计数据',
+ 'Status' => '地位',
+ 'Stock' => '库存',
+ 'Street' => '街道',
+ 'Subgroup' => '亚组',
+ 'Tax' => '税',
+ 'Terms' => '条款',
+ 'To' => '到',
+ 'TopArticles' => '顶级文章',
+ 'Trend' => '趋势',
+ 'Turnover' => '周转',
+ 'Type' => '类型',
+ 'ZipCode' => '邮政编码',
+]];
diff --git a/Theme/Backend/sales-analysis-dashboard.tpl.php b/Theme/Backend/sales-analysis-dashboard.tpl.php
new file mode 100755
index 0000000..d650dbb
--- /dev/null
+++ b/Theme/Backend/sales-analysis-dashboard.tpl.php
@@ -0,0 +1,399 @@
+getData('nav')->render();
+?>
+
+
+
+
+
+
= $this->getHtml('Current'); ?>
+
+
+
= $this->getHtml('Comparison'); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sales / Profit - Monthly
+
+
+ getData('monthlySalesCustomer'); ?>
+
+
+
+
+
+
+
+
+
+ | Month
+ | Sales
+ | Customer count
+ |
+
+
+ | = $values['month'] . '/' . \substr((string) $values['year'], -2); ?>
+ | = (new Money(((int) $values['net_sales']) / 1000))->getCurrency(); ?>
+ | = ((int) $values['customers']); ?>
+
+ |
+ | Total
+ | = (new Money($sum1))->getCurrency(); ?>
+ | = (int) ($sum2 / 12); ?>
+ |
+
+
+
+
+
+
+
+
+
+ Sales / Profit - Annual
+
+
+ getData('annualSalesCustomer'); ?>
+
+
+
+
+
+
+
+
+
+ | Year
+ | Sales
+ | Customer count
+ |
+
+
+ | = (string) $values['year']; ?>
+ | = (new Money(((int) $values['net_sales']) / 1000))->getCurrency(); ?>
+ | = ((int) $values['customers']); ?>
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+ Sales / Attribute
+
+
+
+
+
+ | Product
+ | Sales PY
+ | Sales B
+ | Sales A
+ | Diff PY
+ | Diff B
+ |
+
+
+
+
+
+
+
+
+
+ Sales / Region
+
+
+
+
+
+ | Country
+ | Sales PY
+ | Sales B
+ | Sales A
+ | Diff PY
+ | Diff B
+ |
+
+
+
+
\ No newline at end of file
diff --git a/composer.json b/composer.json
new file mode 100755
index 0000000..fcc0462
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,20 @@
+{
+ "name": "karaka/karaka",
+ "description": "PHP Framework for Karaka.",
+ "authors": [
+ {
+ "name": "Dennis Eichhorn",
+ "email": "spl1nes.com@googlemail.com"
+ }
+ ],
+ "require-dev": {
+ "phpunit/phpunit": ">=9.4",
+ "friendsofphp/php-cs-fixer": ">=3.8",
+ "squizlabs/php_codesniffer": ">=3.6",
+ "phpmd/phpmd": ">=2.9",
+ "phpstan/phpstan": ">=1.8.6",
+ "phan/phan": ">=3.2.6"
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true
+}
diff --git a/composer.lock b/composer.lock
new file mode 100755
index 0000000..708ea35
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,4802 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "a7d5793a0158a42dd8436aeac8fef6c1",
+ "packages": [],
+ "packages-dev": [
+ {
+ "name": "composer/pcre",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/pcre.git",
+ "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/e300eb6c535192decd27a85bc72a9290f0d6b3bd",
+ "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.3",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Pcre\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "PCRE wrapping library that offers type-safe preg_* replacements.",
+ "keywords": [
+ "PCRE",
+ "preg",
+ "regex",
+ "regular expression"
+ ],
+ "support": {
+ "issues": "https://github.com/composer/pcre/issues",
+ "source": "https://github.com/composer/pcre/tree/3.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-02-25T20:21:48+00:00"
+ },
+ {
+ "name": "composer/semver",
+ "version": "3.3.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/semver.git",
+ "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9",
+ "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.4",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Semver\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "keywords": [
+ "semantic",
+ "semver",
+ "validation",
+ "versioning"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/semver/issues",
+ "source": "https://github.com/composer/semver/tree/3.3.2"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-04-01T19:23:25+00:00"
+ },
+ {
+ "name": "composer/xdebug-handler",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/xdebug-handler.git",
+ "reference": "ced299686f41dce890debac69273b47ffe98a40c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c",
+ "reference": "ced299686f41dce890debac69273b47ffe98a40c",
+ "shasum": ""
+ },
+ "require": {
+ "composer/pcre": "^1 || ^2 || ^3",
+ "php": "^7.2.5 || ^8.0",
+ "psr/log": "^1 || ^2 || ^3"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.0",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Composer\\XdebugHandler\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "John Stevenson",
+ "email": "john-stevenson@blueyonder.co.uk"
+ }
+ ],
+ "description": "Restarts a process without Xdebug.",
+ "keywords": [
+ "Xdebug",
+ "performance"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/xdebug-handler/issues",
+ "source": "https://github.com/composer/xdebug-handler/tree/3.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-02-25T21:32:43+00:00"
+ },
+ {
+ "name": "doctrine/annotations",
+ "version": "1.13.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/annotations.git",
+ "reference": "5b668aef16090008790395c02c893b1ba13f7e08"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08",
+ "reference": "5b668aef16090008790395c02c893b1ba13f7e08",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/lexer": "1.*",
+ "ext-tokenizer": "*",
+ "php": "^7.1 || ^8.0",
+ "psr/cache": "^1 || ^2 || ^3"
+ },
+ "require-dev": {
+ "doctrine/cache": "^1.11 || ^2.0",
+ "doctrine/coding-standard": "^6.0 || ^8.1",
+ "phpstan/phpstan": "^0.12.20",
+ "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5",
+ "symfony/cache": "^4.4 || ^5.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
+ }
+ },
+ "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": "Docblock Annotations Parser",
+ "homepage": "https://www.doctrine-project.org/projects/annotations.html",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "parser"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/annotations/issues",
+ "source": "https://github.com/doctrine/annotations/tree/1.13.2"
+ },
+ "time": "2021-08-05T19:00:23+00:00"
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc",
+ "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^9",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^0.16 || ^1",
+ "phpstan/phpstan": "^1.4",
+ "phpstan/phpstan-phpunit": "^1",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "vimeo/psalm": "^4.22"
+ },
+ "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/1.4.1"
+ },
+ "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%2Finstantiator",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-03-03T08:28:38+00:00"
+ },
+ {
+ "name": "doctrine/lexer",
+ "version": "1.2.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/lexer.git",
+ "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229",
+ "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^9.0",
+ "phpstan/phpstan": "^1.3",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "vimeo/psalm": "^4.11"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
+ }
+ },
+ "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": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
+ "homepage": "https://www.doctrine-project.org/projects/lexer.html",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "lexer",
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/lexer/issues",
+ "source": "https://github.com/doctrine/lexer/tree/1.2.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%2Flexer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-02-28T11:07:21+00:00"
+ },
+ {
+ "name": "felixfbecker/advanced-json-rpc",
+ "version": "v3.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git",
+ "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447",
+ "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447",
+ "shasum": ""
+ },
+ "require": {
+ "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
+ "php": "^7.1 || ^8.0",
+ "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "AdvancedJsonRpc\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "ISC"
+ ],
+ "authors": [
+ {
+ "name": "Felix Becker",
+ "email": "felix.b@outlook.com"
+ }
+ ],
+ "description": "A more advanced JSONRPC implementation",
+ "support": {
+ "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues",
+ "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1"
+ },
+ "time": "2021-06-11T22:34:44+00:00"
+ },
+ {
+ "name": "friendsofphp/php-cs-fixer",
+ "version": "v3.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
+ "reference": "cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3",
+ "reference": "cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3",
+ "shasum": ""
+ },
+ "require": {
+ "composer/semver": "^3.2",
+ "composer/xdebug-handler": "^3.0.3",
+ "doctrine/annotations": "^1.13",
+ "ext-json": "*",
+ "ext-tokenizer": "*",
+ "php": "^7.4 || ^8.0",
+ "php-cs-fixer/diff": "^2.0",
+ "symfony/console": "^5.4 || ^6.0",
+ "symfony/event-dispatcher": "^5.4 || ^6.0",
+ "symfony/filesystem": "^5.4 || ^6.0",
+ "symfony/finder": "^5.4 || ^6.0",
+ "symfony/options-resolver": "^5.4 || ^6.0",
+ "symfony/polyfill-mbstring": "^1.23",
+ "symfony/polyfill-php80": "^1.25",
+ "symfony/polyfill-php81": "^1.25",
+ "symfony/process": "^5.4 || ^6.0",
+ "symfony/stopwatch": "^5.4 || ^6.0"
+ },
+ "require-dev": {
+ "justinrainbow/json-schema": "^5.2",
+ "keradus/cli-executor": "^1.5",
+ "mikey179/vfsstream": "^1.6.10",
+ "php-coveralls/php-coveralls": "^2.5.2",
+ "php-cs-fixer/accessible-object": "^1.1",
+ "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2",
+ "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1",
+ "phpspec/prophecy": "^1.15",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpunit/phpunit": "^9.5",
+ "phpunitgoodpractices/polyfill": "^1.5",
+ "phpunitgoodpractices/traits": "^1.9.1",
+ "symfony/phpunit-bridge": "^6.0",
+ "symfony/yaml": "^5.4 || ^6.0"
+ },
+ "suggest": {
+ "ext-dom": "For handling output formats in XML",
+ "ext-mbstring": "For handling non-UTF8 characters."
+ },
+ "bin": [
+ "php-cs-fixer"
+ ],
+ "type": "application",
+ "autoload": {
+ "psr-4": {
+ "PhpCsFixer\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Dariusz Rumiński",
+ "email": "dariusz.ruminski@gmail.com"
+ }
+ ],
+ "description": "A tool to automatically fix PHP code style",
+ "support": {
+ "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues",
+ "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.8.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/keradus",
+ "type": "github"
+ }
+ ],
+ "time": "2022-03-18T17:20:59+00:00"
+ },
+ {
+ "name": "microsoft/tolerant-php-parser",
+ "version": "v0.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/microsoft/tolerant-php-parser.git",
+ "reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/microsoft/tolerant-php-parser/zipball/6a965617cf484355048ac6d2d3de7b6ec93abb16",
+ "reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5.15"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Microsoft\\PhpParser\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Rob Lourens",
+ "email": "roblou@microsoft.com"
+ }
+ ],
+ "description": "Tolerant PHP-to-AST parser designed for IDE usage scenarios",
+ "support": {
+ "issues": "https://github.com/microsoft/tolerant-php-parser/issues",
+ "source": "https://github.com/microsoft/tolerant-php-parser/tree/v0.1.1"
+ },
+ "time": "2021-07-16T21:28:12+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614",
+ "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "conflict": {
+ "doctrine/collections": "<1.6.8",
+ "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.6.8",
+ "doctrine/common": "^2.13.3 || ^3.2.2",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ],
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0"
+ },
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-03-03T13:19:32+00:00"
+ },
+ {
+ "name": "netresearch/jsonmapper",
+ "version": "v4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cweiske/jsonmapper.git",
+ "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
+ "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-pcre": "*",
+ "ext-reflection": "*",
+ "ext-spl": "*",
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0",
+ "squizlabs/php_codesniffer": "~3.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "JsonMapper": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "OSL-3.0"
+ ],
+ "authors": [
+ {
+ "name": "Christian Weiske",
+ "email": "cweiske@cweiske.de",
+ "homepage": "http://github.com/cweiske/jsonmapper/",
+ "role": "Developer"
+ }
+ ],
+ "description": "Map nested JSON structures onto PHP classes",
+ "support": {
+ "email": "cweiske@cweiske.de",
+ "issues": "https://github.com/cweiske/jsonmapper/issues",
+ "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0"
+ },
+ "time": "2020-12-01T19:48:11+00:00"
+ },
+ {
+ "name": "nikic/php-parser",
+ "version": "v4.13.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2"
+ },
+ "time": "2021-11-30T19:35:32+00:00"
+ },
+ {
+ "name": "pdepend/pdepend",
+ "version": "2.10.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/pdepend/pdepend.git",
+ "reference": "da3166a06b4a89915920a42444f707122a1584c9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/pdepend/pdepend/zipball/da3166a06b4a89915920a42444f707122a1584c9",
+ "reference": "da3166a06b4a89915920a42444f707122a1584c9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.7",
+ "symfony/config": "^2.3.0|^3|^4|^5|^6.0",
+ "symfony/dependency-injection": "^2.3.0|^3|^4|^5|^6.0",
+ "symfony/filesystem": "^2.3.0|^3|^4|^5|^6.0"
+ },
+ "require-dev": {
+ "easy-doc/easy-doc": "0.0.0|^1.2.3",
+ "gregwar/rst": "^1.0",
+ "phpunit/phpunit": "^4.8.36|^5.7.27",
+ "squizlabs/php_codesniffer": "^2.0.0"
+ },
+ "bin": [
+ "src/bin/pdepend"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PDepend\\": "src/main/php/PDepend"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Official version of pdepend to be handled with Composer",
+ "support": {
+ "issues": "https://github.com/pdepend/pdepend/issues",
+ "source": "https://github.com/pdepend/pdepend/tree/2.10.3"
+ },
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/pdepend/pdepend",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-02-23T07:53:09+00:00"
+ },
+ {
+ "name": "phan/phan",
+ "version": "5.3.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phan/phan.git",
+ "reference": "b7697eb811e912c038f709f8e1c4911c7ada3edc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phan/phan/zipball/b7697eb811e912c038f709f8e1c4911c7ada3edc",
+ "reference": "b7697eb811e912c038f709f8e1c4911c7ada3edc",
+ "shasum": ""
+ },
+ "require": {
+ "composer/semver": "^1.4|^2.0|^3.0",
+ "composer/xdebug-handler": "^2.0|^3.0",
+ "ext-filter": "*",
+ "ext-json": "*",
+ "ext-tokenizer": "*",
+ "felixfbecker/advanced-json-rpc": "^3.0.4",
+ "microsoft/tolerant-php-parser": "^0.1.0",
+ "netresearch/jsonmapper": "^1.6.0|^2.0|^3.0|^4.0",
+ "php": "^7.2.0|^8.0.0",
+ "sabre/event": "^5.1.3",
+ "symfony/console": "^3.2|^4.0|^5.0|^6.0",
+ "symfony/polyfill-mbstring": "^1.11.0",
+ "symfony/polyfill-php80": "^1.20.0",
+ "tysonandre/var_representation_polyfill": "^0.0.2|^0.1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5.0"
+ },
+ "suggest": {
+ "ext-ast": "Needed for parsing ASTs (unless --use-fallback-parser is used). 1.0.1+ is needed, 1.0.16+ is recommended.",
+ "ext-iconv": "Either iconv or mbstring is needed to ensure issue messages are valid utf-8",
+ "ext-igbinary": "Improves performance of polyfill when ext-ast is unavailable",
+ "ext-mbstring": "Either iconv or mbstring is needed to ensure issue messages are valid utf-8",
+ "ext-tokenizer": "Needed for fallback/polyfill parser support and file/line-based suppressions.",
+ "ext-var_representation": "Suggested for converting values to strings in issue messages"
+ },
+ "bin": [
+ "phan",
+ "phan_client",
+ "tocheckstyle"
+ ],
+ "type": "project",
+ "autoload": {
+ "psr-4": {
+ "Phan\\": "src/Phan"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Tyson Andre"
+ },
+ {
+ "name": "Rasmus Lerdorf"
+ },
+ {
+ "name": "Andrew S. Morrison"
+ }
+ ],
+ "description": "A static analyzer for PHP",
+ "keywords": [
+ "analyzer",
+ "php",
+ "static"
+ ],
+ "support": {
+ "issues": "https://github.com/phan/phan/issues",
+ "source": "https://github.com/phan/phan/tree/5.3.2"
+ },
+ "time": "2022-02-01T00:17:36+00:00"
+ },
+ {
+ "name": "phar-io/manifest",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "ext-xmlwriter": "*",
+ "phar-io/version": "^3.0.1",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "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"
+ },
+ "time": "2021-07-20T11:28:43+00:00"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "3.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints",
+ "support": {
+ "issues": "https://github.com/phar-io/version/issues",
+ "source": "https://github.com/phar-io/version/tree/3.2.1"
+ },
+ "time": "2022-02-21T01:04:05+00:00"
+ },
+ {
+ "name": "php-cs-fixer/diff",
+ "version": "v2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/PHP-CS-Fixer/diff.git",
+ "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/29dc0d507e838c4580d018bd8b5cb412474f7ec3",
+ "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0",
+ "symfony/process": "^3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ }
+ ],
+ "description": "sebastian/diff v3 backport support for PHP 5.6+",
+ "homepage": "https://github.com/PHP-CS-Fixer",
+ "keywords": [
+ "diff"
+ ],
+ "support": {
+ "issues": "https://github.com/PHP-CS-Fixer/diff/issues",
+ "source": "https://github.com/PHP-CS-Fixer/diff/tree/v2.0.2"
+ },
+ "time": "2020-10-14T08:32:19+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": ""
+ },
+ "require": {
+ "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/reflection-docblock",
+ "version": "5.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.2",
+ "psalm/phar": "^4.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "account@ijaap.nl"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
+ },
+ "time": "2021-10-19T17:43:47+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.6.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "77a32518733312af16a44300404e945338981de3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3",
+ "reference": "77a32518733312af16a44300404e945338981de3",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*",
+ "psalm/phar": "^4.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1"
+ },
+ "time": "2022-03-15T21:29:03+00:00"
+ },
+ {
+ "name": "phpmd/phpmd",
+ "version": "2.12.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpmd/phpmd.git",
+ "reference": "c0b678ba71902f539c27c14332aa0ddcf14388ec"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpmd/phpmd/zipball/c0b678ba71902f539c27c14332aa0ddcf14388ec",
+ "reference": "c0b678ba71902f539c27c14332aa0ddcf14388ec",
+ "shasum": ""
+ },
+ "require": {
+ "composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0",
+ "ext-xml": "*",
+ "pdepend/pdepend": "^2.10.3",
+ "php": ">=5.3.9"
+ },
+ "require-dev": {
+ "easy-doc/easy-doc": "0.0.0 || ^1.3.2",
+ "ext-json": "*",
+ "ext-simplexml": "*",
+ "gregwar/rst": "^1.0",
+ "mikey179/vfsstream": "^1.6.8",
+ "phpunit/phpunit": "^4.8.36 || ^5.7.27",
+ "squizlabs/php_codesniffer": "^2.0"
+ },
+ "bin": [
+ "src/bin/phpmd"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "PHPMD\\": "src/main/php"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Manuel Pichler",
+ "email": "github@manuel-pichler.de",
+ "homepage": "https://github.com/manuelpichler",
+ "role": "Project Founder"
+ },
+ {
+ "name": "Marc Würth",
+ "email": "ravage@bluewin.ch",
+ "homepage": "https://github.com/ravage84",
+ "role": "Project Maintainer"
+ },
+ {
+ "name": "Other contributors",
+ "homepage": "https://github.com/phpmd/phpmd/graphs/contributors",
+ "role": "Contributors"
+ }
+ ],
+ "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.",
+ "homepage": "https://phpmd.org/",
+ "keywords": [
+ "mess detection",
+ "mess detector",
+ "pdepend",
+ "phpmd",
+ "pmd"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/phpmd",
+ "issues": "https://github.com/phpmd/phpmd/issues",
+ "source": "https://github.com/phpmd/phpmd/tree/2.12.0"
+ },
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpmd/phpmd",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-03-24T13:33:01+00:00"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "v1.15.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
+ "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.2",
+ "php": "^7.2 || ~8.0, <8.2",
+ "phpdocumentor/reflection-docblock": "^5.2",
+ "sebastian/comparator": "^3.0 || ^4.0",
+ "sebastian/recursion-context": "^3.0 || ^4.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^6.0 || ^7.0",
+ "phpunit/phpunit": "^8.0 || ^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Prophecy\\": "src/Prophecy"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "support": {
+ "issues": "https://github.com/phpspec/prophecy/issues",
+ "source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
+ },
+ "time": "2021-12-08T12:19:24+00:00"
+ },
+ {
+ "name": "phpstan/phpstan",
+ "version": "1.5.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpstan.git",
+ "reference": "bbf68cae24f6dc023c607ea0f87da55dd9d55c2b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/bbf68cae24f6dc023c607ea0f87da55dd9d55c2b",
+ "reference": "bbf68cae24f6dc023c607ea0f87da55dd9d55c2b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2|^8.0"
+ },
+ "conflict": {
+ "phpstan/phpstan-shim": "*"
+ },
+ "bin": [
+ "phpstan",
+ "phpstan.phar"
+ ],
+ "type": "library",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPStan - PHP Static Analysis Tool",
+ "support": {
+ "issues": "https://github.com/phpstan/phpstan/issues",
+ "source": "https://github.com/phpstan/phpstan/tree/1.5.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/ondrejmirtes",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/phpstan",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/phpstan",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-04-03T12:39:00+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "9.2.15",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
+ "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "ext-xmlwriter": "*",
+ "nikic/php-parser": "^4.13.0",
+ "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"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcov": "*",
+ "ext-xdebug": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.2-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2022-03-07T09:28:20+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "3.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "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",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-12-02T12:48:52+00:00"
+ },
+ {
+ "name": "phpunit/php-invoker",
+ "version": "3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-invoker.git",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "ext-pcntl": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcntl": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Invoke callables with a timeout",
+ "homepage": "https://github.com/sebastianbergmann/php-invoker/",
+ "keywords": [
+ "process"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:58:55+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T05:33:50+00:00"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "5.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:16:10+00:00"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "9.5.20",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba",
+ "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.3.1",
+ "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",
+ "phpspec/prophecy": "^1.12.1",
+ "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.5",
+ "sebastian/diff": "^4.0.3",
+ "sebastian/environment": "^5.1.3",
+ "sebastian/exporter": "^4.0.3",
+ "sebastian/global-state": "^5.0.1",
+ "sebastian/object-enumerator": "^4.0.3",
+ "sebastian/resource-operations": "^3.0.3",
+ "sebastian/type": "^3.0",
+ "sebastian/version": "^3.0.2"
+ },
+ "require-dev": {
+ "ext-pdo": "*",
+ "phpspec/prophecy-phpunit": "^2.0.1"
+ },
+ "suggest": {
+ "ext-soap": "*",
+ "ext-xdebug": "*"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.5-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Framework/Assert/Functions.php"
+ ],
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20"
+ },
+ "funding": [
+ {
+ "url": "https://phpunit.de/sponsors.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2022-04-01T12:37:26+00:00"
+ },
+ {
+ "name": "psr/cache",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/cache/tree/3.0.0"
+ },
+ "time": "2021-02-03T23:26:27+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/2.0.2"
+ },
+ "time": "2021-11-05T16:47:00+00:00"
+ },
+ {
+ "name": "psr/event-dispatcher",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/event-dispatcher.git",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\EventDispatcher\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Standard interfaces for event handling.",
+ "keywords": [
+ "events",
+ "psr",
+ "psr-14"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/event-dispatcher/issues",
+ "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+ },
+ "time": "2019-01-08T18:20:26+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/3.0.0"
+ },
+ "time": "2021-07-14T16:46:02+00:00"
+ },
+ {
+ "name": "sabre/event",
+ "version": "5.1.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sabre-io/event.git",
+ "reference": "d7da22897125d34d7eddf7977758191c06a74497"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sabre-io/event/zipball/d7da22897125d34d7eddf7977758191c06a74497",
+ "reference": "d7da22897125d34d7eddf7977758191c06a74497",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "~2.17.1",
+ "phpstan/phpstan": "^0.12",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.0"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "lib/coroutine.php",
+ "lib/Loop/functions.php",
+ "lib/Promise/functions.php"
+ ],
+ "psr-4": {
+ "Sabre\\Event\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Evert Pot",
+ "email": "me@evertpot.com",
+ "homepage": "http://evertpot.com/",
+ "role": "Developer"
+ }
+ ],
+ "description": "sabre/event is a library for lightweight event-based programming",
+ "homepage": "http://sabre.io/event/",
+ "keywords": [
+ "EventEmitter",
+ "async",
+ "coroutine",
+ "eventloop",
+ "events",
+ "hooks",
+ "plugin",
+ "promise",
+ "reactor",
+ "signal"
+ ],
+ "support": {
+ "forum": "https://groups.google.com/group/sabredav-discuss",
+ "issues": "https://github.com/sabre-io/event/issues",
+ "source": "https://github.com/fruux/sabre-event"
+ },
+ "time": "2021-11-04T06:51:17+00:00"
+ },
+ {
+ "name": "sebastian/cli-parser",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/cli-parser.git",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for parsing CLI options",
+ "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"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:08:49+00:00"
+ },
+ {
+ "name": "sebastian/code-unit",
+ "version": "1.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit.git",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the PHP code units",
+ "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"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:08:54+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "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"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:30:19+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "4.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/diff": "^4.0",
+ "sebastian/exporter": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:49:45+00:00"
+ },
+ {
+ "name": "sebastian/complexity",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/complexity.git",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.7",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for calculating the complexity of PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/complexity",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/complexity/issues",
+ "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:52:27+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3",
+ "symfony/process": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:10:38+00:00"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "5.1.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7",
+ "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-posix": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2022-04-03T09:37:03+00:00"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9",
+ "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "https://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-11-11T14:18:36+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "5.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2",
+ "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-dom": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://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"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2022-02-14T08:28:10+00:00"
+ },
+ {
+ "name": "sebastian/lines-of-code",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/lines-of-code.git",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.6",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for counting the lines of code in PHP source code",
+ "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"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-11-28T06:42:11+00:00"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "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"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:12:34+00:00"
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "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"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:14:26+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.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"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:45:17+00:00"
+ },
+ {
+ "name": "sebastian/type",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/type.git",
+ "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
+ "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.5"
+ },
+ "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",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the types of the PHP type system",
+ "homepage": "https://github.com/sebastianbergmann/type",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/type/issues",
+ "source": "https://github.com/sebastianbergmann/type/tree/3.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2022-03-15T09:54:48+00:00"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "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",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/version/issues",
+ "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:39:44+00:00"
+ },
+ {
+ "name": "squizlabs/php_codesniffer",
+ "version": "3.6.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+ "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a",
+ "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a",
+ "shasum": ""
+ },
+ "require": {
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
+ },
+ "bin": [
+ "bin/phpcs",
+ "bin/phpcbf"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Greg Sherwood",
+ "role": "lead"
+ }
+ ],
+ "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+ "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
+ "keywords": [
+ "phpcs",
+ "standards"
+ ],
+ "support": {
+ "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
+ "source": "https://github.com/squizlabs/PHP_CodeSniffer",
+ "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
+ },
+ "time": "2021-12-12T21:44:58+00:00"
+ },
+ {
+ "name": "symfony/config",
+ "version": "v6.0.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/config.git",
+ "reference": "22850bfdd2b6090568ad05dece6843c859d933b7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/config/zipball/22850bfdd2b6090568ad05dece6843c859d933b7",
+ "reference": "22850bfdd2b6090568ad05dece6843c859d933b7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/filesystem": "^5.4|^6.0",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-php81": "^1.22"
+ },
+ "conflict": {
+ "symfony/finder": "<4.4"
+ },
+ "require-dev": {
+ "symfony/event-dispatcher": "^5.4|^6.0",
+ "symfony/finder": "^5.4|^6.0",
+ "symfony/messenger": "^5.4|^6.0",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/yaml": "^5.4|^6.0"
+ },
+ "suggest": {
+ "symfony/yaml": "To use the yaml reference dumper"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Config\\": ""
+ },
+ "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": "Helps you find, load, combine, autofill and validate configuration values of any kind",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/config/tree/v6.0.7"
+ },
+ "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": "2022-03-22T16:12:04+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v6.0.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "70dcf7b2ca2ea08ad6ebcc475f104a024fb5632e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/70dcf7b2ca2ea08ad6ebcc475f104a024fb5632e",
+ "reference": "70dcf7b2ca2ea08ad6ebcc475f104a024fb5632e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/string": "^5.4|^6.0"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<5.4",
+ "symfony/dotenv": "<5.4",
+ "symfony/event-dispatcher": "<5.4",
+ "symfony/lock": "<5.4",
+ "symfony/process": "<5.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": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "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": "Eases the creation of beautiful and testable command line interfaces",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "cli",
+ "command line",
+ "console",
+ "terminal"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/console/tree/v6.0.7"
+ },
+ "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": "2022-03-31T17:18:25+00:00"
+ },
+ {
+ "name": "symfony/dependency-injection",
+ "version": "v6.0.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dependency-injection.git",
+ "reference": "3e8a405fcc2eaf4eadb25b5e259ad9bf90499848"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/3e8a405fcc2eaf4eadb25b5e259ad9bf90499848",
+ "reference": "3e8a405fcc2eaf4eadb25b5e259ad9bf90499848",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "psr/container": "^1.1|^2.0",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-php81": "^1.22",
+ "symfony/service-contracts": "^1.1.6|^2.0|^3.0"
+ },
+ "conflict": {
+ "ext-psr": "<1.1|>=2",
+ "symfony/config": "<5.4",
+ "symfony/finder": "<5.4",
+ "symfony/proxy-manager-bridge": "<5.4",
+ "symfony/yaml": "<5.4"
+ },
+ "provide": {
+ "psr/container-implementation": "1.1|2.0",
+ "symfony/service-implementation": "1.1|2.0|3.0"
+ },
+ "require-dev": {
+ "symfony/config": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/yaml": "^5.4|^6.0"
+ },
+ "suggest": {
+ "symfony/config": "",
+ "symfony/expression-language": "For using expressions in service container configuration",
+ "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required",
+ "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\DependencyInjection\\": ""
+ },
+ "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": "Allows you to standardize and centralize the way objects are constructed in your application",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/dependency-injection/tree/v6.0.7"
+ },
+ "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": "2022-03-08T15:43:52+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
+ "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.0-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "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": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.1"
+ },
+ "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": "2022-01-02T09:55:41+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934",
+ "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "symfony/event-dispatcher-contracts": "^2|^3"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<5.4"
+ },
+ "provide": {
+ "psr/event-dispatcher-implementation": "1.0",
+ "symfony/event-dispatcher-implementation": "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/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": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "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": "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.0.3"
+ },
+ "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": "2022-01-02T09:55:41+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher-contracts",
+ "version": "v3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+ "reference": "7bc61cc2db649b4637d331240c5346dcc7708051"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7bc61cc2db649b4637d331240c5346dcc7708051",
+ "reference": "7bc61cc2db649b4637d331240c5346dcc7708051",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "psr/event-dispatcher": "^1"
+ },
+ "suggest": {
+ "symfony/event-dispatcher-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.0-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\EventDispatcher\\": ""
+ }
+ },
+ "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": "Generic abstractions related to dispatching event",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.1"
+ },
+ "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": "2022-01-02T09:55:41+00:00"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "v6.0.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "6c9e4c41f2c51dfde3db298594ed9cba55dbf5ff"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/6c9e4c41f2c51dfde3db298594ed9cba55dbf5ff",
+ "reference": "6c9e4c41f2c51dfde3db298594ed9cba55dbf5ff",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.8"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "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": "Provides basic utilities for the filesystem",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/filesystem/tree/v6.0.7"
+ },
+ "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": "2022-04-01T12:54:51+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430",
+ "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "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": "Finds files and directories via an intuitive fluent interface",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/finder/tree/v6.0.3"
+ },
+ "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": "2022-01-26T17:23:29+00:00"
+ },
+ {
+ "name": "symfony/options-resolver",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/options-resolver.git",
+ "reference": "51f7006670febe4cbcbae177cbffe93ff833250d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/51f7006670febe4cbcbae177cbffe93ff833250d",
+ "reference": "51f7006670febe4cbcbae177cbffe93ff833250d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "symfony/deprecation-contracts": "^2.1|^3"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\OptionsResolver\\": ""
+ },
+ "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": "Provides an improved replacement for the array_replace PHP function",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "config",
+ "configuration",
+ "options"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/options-resolver/tree/v6.0.3"
+ },
+ "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": "2022-01-02T09:55:41+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.25.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "30885182c981ab175d4d034db0f6f469898070ab"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
+ "reference": "30885182c981ab175d4d034db0f6f469898070ab",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-ctype": "*"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0"
+ },
+ "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": "2021-10-20T20:35:02+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.25.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "81b86b50cf841a64252b439e738e97f4a34e2783"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783",
+ "reference": "81b86b50cf841a64252b439e738e97f4a34e2783",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ }
+ },
+ "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": "Symfony polyfill for intl's grapheme_* functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "grapheme",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.25.0"
+ },
+ "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": "2021-11-23T21:10:46+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.25.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "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": "Symfony polyfill for intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0"
+ },
+ "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": "2021-02-19T12:13:01+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.25.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825",
+ "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
+ },
+ "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": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0"
+ },
+ "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": "2021-11-30T18:21:41+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php80",
+ "version": "v1.25.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c",
+ "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "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"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0"
+ },
+ "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": "2022-03-04T08:16:47+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php81",
+ "version": "v1.25.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php81.git",
+ "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f",
+ "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php81\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "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": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0"
+ },
+ "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": "2021-09-13T13:58:11+00:00"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v6.0.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "e13f6757e267d687e20ec5b26ccfcbbe511cd8f4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/e13f6757e267d687e20ec5b26ccfcbbe511cd8f4",
+ "reference": "e13f6757e267d687e20ec5b26ccfcbbe511cd8f4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "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": "Executes commands in sub-processes",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/process/tree/v6.0.7"
+ },
+ "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": "2022-03-18T16:21:55+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "e517458f278c2131ca9f262f8fbaf01410f2c65c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e517458f278c2131ca9f262f8fbaf01410f2c65c",
+ "reference": "e517458f278c2131ca9f262f8fbaf01410f2c65c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "psr/container": "^2.0"
+ },
+ "conflict": {
+ "ext-psr": "<1.1|>=2"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.0-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ }
+ },
+ "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": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v3.0.1"
+ },
+ "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": "2022-03-13T20:10:05+00:00"
+ },
+ {
+ "name": "symfony/stopwatch",
+ "version": "v6.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/stopwatch.git",
+ "reference": "f2c1780607ec6502f2121d9729fd8150a655d337"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f2c1780607ec6502f2121d9729fd8150a655d337",
+ "reference": "f2c1780607ec6502f2121d9729fd8150a655d337",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "symfony/service-contracts": "^1|^2|^3"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Stopwatch\\": ""
+ },
+ "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": "Provides a way to profile code",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/stopwatch/tree/v6.0.5"
+ },
+ "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": "2022-02-21T17:15:17+00:00"
+ },
+ {
+ "name": "symfony/string",
+ "version": "v6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/string.git",
+ "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2",
+ "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.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"
+ },
+ "require-dev": {
+ "symfony/error-handler": "^5.4|^6.0",
+ "symfony/http-client": "^5.4|^6.0",
+ "symfony/translation-contracts": "^2.0|^3.0",
+ "symfony/var-exporter": "^5.4|^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/functions.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
+ "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": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "grapheme",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/string/tree/v6.0.3"
+ },
+ "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": "2022-01-02T09:55:41+00:00"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ }
+ ],
+ "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"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
+ ],
+ "time": "2021-07-28T10:34:58+00:00"
+ },
+ {
+ "name": "tysonandre/var_representation_polyfill",
+ "version": "0.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/TysonAndre/var_representation_polyfill.git",
+ "reference": "0a942e74e18af5514749895507bc6ca7ab96399a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/TysonAndre/var_representation_polyfill/zipball/0a942e74e18af5514749895507bc6ca7ab96399a",
+ "reference": "0a942e74e18af5514749895507bc6ca7ab96399a",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": "^7.2.0|^8.0.0"
+ },
+ "require-dev": {
+ "phan/phan": "^4.0",
+ "phpunit/phpunit": "^8.5.0"
+ },
+ "suggest": {
+ "ext-var_representation": "*"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/var_representation.php"
+ ],
+ "psr-4": {
+ "VarRepresentation\\": "src/VarRepresentation"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Tyson Andre"
+ }
+ ],
+ "description": "Polyfill for var_representation: convert a variable to a string in a way that fixes the shortcomings of var_export",
+ "keywords": [
+ "var_export",
+ "var_representation"
+ ],
+ "support": {
+ "issues": "https://github.com/TysonAndre/var_representation_polyfill/issues",
+ "source": "https://github.com/TysonAndre/var_representation_polyfill/tree/0.1.1"
+ },
+ "time": "2021-08-16T00:12:50+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<4.6.1 || 4.6.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5.13"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "support": {
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.10.0"
+ },
+ "time": "2021-03-09T10:59:23+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "dev",
+ "stability-flags": [],
+ "prefer-stable": true,
+ "prefer-lowest": false,
+ "platform": [],
+ "platform-dev": [],
+ "plugin-api-version": "2.0.0"
+}
diff --git a/img/module_teaser_small.png b/img/module_teaser_small.png
new file mode 100755
index 0000000..27d7f3c
Binary files /dev/null and b/img/module_teaser_small.png differ
diff --git a/info.json b/info.json
new file mode 100755
index 0000000..d574eb0
--- /dev/null
+++ b/info.json
@@ -0,0 +1,45 @@
+{
+ "name": {
+ "id": 1008100000,
+ "internal": "Finance",
+ "external": "Finance"
+ },
+ "category": "Finance",
+ "version": "1.0.0",
+ "requirements": {
+ "phpOMS": "1.0.0",
+ "phpOMS-db": "1.0.0"
+ },
+ "creator": {
+ "name": "Karaka",
+ "website": "jingga.app"
+ },
+ "description": "Finance module.",
+ "directory": "Finance",
+ "dependencies": {
+ "Admin": "1.0.0"
+ },
+ "providing": {
+ "Navigation": "*"
+ },
+ "load": [
+ {
+ "pid": [
+ "/finance"
+ ],
+ "type": 4,
+ "for": 0,
+ "from": "Finance",
+ "file": "Finance"
+ },
+ {
+ "pid": [
+ "/"
+ ],
+ "type": 5,
+ "from": "Finance",
+ "for": "Navigation",
+ "file": "Navigation"
+ }
+ ]
+}
diff --git a/tests/Admin/AdminTest.php b/tests/Admin/AdminTest.php
new file mode 100755
index 0000000..e1bf2cf
--- /dev/null
+++ b/tests/Admin/AdminTest.php
@@ -0,0 +1,27 @@
+ [
+ 'core' => [
+ 'masters' => [
+ 'admin' => [
+ 'db' => 'mysql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '3306', /* db host port */
+ 'login' => 'root', /* db login name */
+ 'password' => 'root', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'insert' => [
+ 'db' => 'mysql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '3306', /* db host port */
+ 'login' => 'root', /* db login name */
+ 'password' => 'root', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'select' => [
+ 'db' => 'mysql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '3306', /* db host port */
+ 'login' => 'root', /* db login name */
+ 'password' => 'root', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'update' => [
+ 'db' => 'mysql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '3306', /* db host port */
+ 'login' => 'root', /* db login name */
+ 'password' => 'root', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'delete' => [
+ 'db' => 'mysql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '3306', /* db host port */
+ 'login' => 'root', /* db login name */
+ 'password' => 'root', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'schema' => [
+ 'db' => 'mysql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '3306', /* db host port */
+ 'login' => 'root', /* db login name */
+ 'password' => 'root', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ ],
+ 'postgresql' => [
+ 'admin' => [
+ 'db' => 'pgsql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '5432', /* db host port */
+ 'login' => 'postgres', /* db login name */
+ 'password' => 'root', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'insert' => [
+ 'db' => 'pgsql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '5432', /* db host port */
+ 'login' => 'postgres', /* db login name */
+ 'password' => 'root', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'select' => [
+ 'db' => 'pgsql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '5432', /* db host port */
+ 'login' => 'postgres', /* db login name */
+ 'password' => 'root', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'update' => [
+ 'db' => 'pgsql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '5432', /* db host port */
+ 'login' => 'postgres', /* db login name */
+ 'password' => 'root', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'delete' => [
+ 'db' => 'pgsql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '5432', /* db host port */
+ 'login' => 'postgres', /* db login name */
+ 'password' => 'root', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'schema' => [
+ 'db' => 'pgsql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '5432', /* db host port */
+ 'login' => 'postgres', /* db login name */
+ 'password' => 'root', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ ],
+ 'sqlite' => [
+ 'admin' => [
+ 'db' => 'sqlite', /* db type */
+ 'database' => __DIR__ . '/test.sqlite', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'insert' => [
+ 'db' => 'sqlite', /* db type */
+ 'database' => __DIR__ . '/test.sqlite', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'select' => [
+ 'db' => 'sqlite', /* db type */
+ 'database' => __DIR__ . '/test.sqlite', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'update' => [
+ 'db' => 'sqlite', /* db type */
+ 'database' => __DIR__ . '/test.sqlite', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'delete' => [
+ 'db' => 'sqlite', /* db type */
+ 'database' => __DIR__ . '/test.sqlite', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'schema' => [
+ 'db' => 'sqlite', /* db type */
+ 'database' => __DIR__ . '/test.sqlite', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ ],
+ 'mssql' => [
+ 'admin' => [
+ 'db' => 'mssql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '1433', /* db host port */
+ 'login' => 'sa', /* db login name */
+ 'password' => 'R00troot', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'insert' => [
+ 'db' => 'mssql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '1433', /* db host port */
+ 'login' => 'sa', /* db login name */
+ 'password' => 'R00troot', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'select' => [
+ 'db' => 'mssql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '1433', /* db host port */
+ 'login' => 'sa', /* db login name */
+ 'password' => 'R00troot', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'update' => [
+ 'db' => 'mssql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '1433', /* db host port */
+ 'login' => 'sa', /* db login name */
+ 'password' => 'R00troot', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'delete' => [
+ 'db' => 'mssql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '1433', /* db host port */
+ 'login' => 'sa', /* db login name */
+ 'password' => 'R00troot', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ 'schema' => [
+ 'db' => 'mssql', /* db type */
+ 'host' => '127.0.0.1', /* db host address */
+ 'port' => '1433', /* db host port */
+ 'login' => 'sa', /* db login name */
+ 'password' => 'R00troot', /* db login password */
+ 'database' => 'oms', /* db name */
+ 'weight' => 1000, /* db table prefix */
+ ],
+ ],
+ ],
+ ],
+ 'cache' => [
+ 'redis' => [
+ 'db' => 1,
+ 'host' => '127.0.0.1',
+ 'port' => 6379,
+ ],
+ 'memcached' => [
+ 'host' => '127.0.0.1',
+ 'port' => 11211,
+ ],
+ ],
+ 'mail' => [
+ 'imap' => [
+ 'host' => '127.0.0.1',
+ 'port' => 143,
+ 'ssl' => false,
+ 'user' => 'test',
+ 'password' => '123456',
+ ],
+ 'pop3' => [
+ 'host' => '127.0.0.1',
+ 'port' => 25,
+ 'ssl' => false,
+ 'user' => 'test',
+ 'password' => '123456',
+ ],
+ ],
+ 'log' => [
+ 'file' => [
+ 'path' => __DIR__ . '/Logs',
+ ],
+ ],
+ 'page' => [
+ 'root' => '/',
+ 'https' => false,
+ ],
+ 'app' => [
+ 'path' => __DIR__,
+ 'default' => [
+ 'app' => 'Backend',
+ 'id' => 'backend',
+ 'lang' => 'en',
+ 'theme' => 'Backend',
+ 'org' => 1,
+ ],
+ 'domains' => [
+ '127.0.0.1' => [
+ 'app' => 'Backend',
+ 'id' => 'backend',
+ 'lang' => 'en',
+ 'theme' => 'Backend',
+ 'org' => 1,
+ ],
+ ],
+ ],
+ 'socket' => [
+ 'master' => [
+ 'host' => '127.0.0.1',
+ 'limit' => 300,
+ 'port' => 4310,
+ ],
+ ],
+ 'language' => [
+ 'en',
+ ],
+ 'apis' => [
+ ],
+];
+
+// Reset database
+if (\defined('RESET') && RESET === '1') {
+ if (\extension_loaded('pdo_mysql')) {
+ try {
+ $db = new \PDO('mysql:host=' .
+ $CONFIG['db']['core']['masters']['admin']['host'],
+ $CONFIG['db']['core']['masters']['admin']['login'],
+ $CONFIG['db']['core']['masters']['admin']['password']
+ );
+ $db->exec('DROP DATABASE IF EXISTS ' . $CONFIG['db']['core']['masters']['admin']['database']);
+ $db->exec('CREATE DATABASE IF NOT EXISTS ' . $CONFIG['db']['core']['masters']['admin']['database']);
+ $db = null;
+ } catch (\Throwable $t) {
+ echo "\nCouldn't connect to MYSQL DB\n";
+ }
+ }
+
+ if (\extension_loaded('pdo_pgsql')) {
+ try {
+ $db = new \PDO('pgsql:host=' .
+ $CONFIG['db']['core']['postgresql']['admin']['host'],
+ $CONFIG['db']['core']['postgresql']['admin']['login'],
+ $CONFIG['db']['core']['postgresql']['admin']['password']
+ );
+ $db->exec('DROP DATABASE IF EXISTS ' . $CONFIG['db']['core']['postgresql']['admin']['database']);
+ $db->exec('CREATE DATABASE ' . $CONFIG['db']['core']['postgresql']['admin']['database']);
+ $db = null;
+ } catch (\Throwable $t) {
+ echo "\nCouldn't connect to POSTGRESQL DB\n";
+ }
+ }
+
+ if (\extension_loaded('pdo_sqlsrv')) {
+ try {
+ $db = new \PDO('sqlsrv:Server=' .
+ $CONFIG['db']['core']['mssql']['admin']['host'],
+ $CONFIG['db']['core']['mssql']['admin']['login'],
+ $CONFIG['db']['core']['mssql']['admin']['password']
+ );
+ $db->exec('DROP DATABASE IF EXISTS ' . $CONFIG['db']['core']['mssql']['admin']['database']);
+ $db->exec('CREATE DATABASE ' . $CONFIG['db']['core']['mssql']['admin']['database']);
+ $db = null;
+ } catch (\Throwable $t) {
+ echo "\nCouldn't connect to MSSQL DB\n";
+ }
+ }
+}
+
+$httpSession = new HttpSession();
+$GLOBALS['session'] = $httpSession;
+
+$GLOBALS['dbpool'] = new DatabasePool();
+$GLOBALS['dbpool']->create('admin', $CONFIG['db']['core']['masters']['admin']);
+$GLOBALS['dbpool']->create('select', $CONFIG['db']['core']['masters']['select']);
+$GLOBALS['dbpool']->create('update', $CONFIG['db']['core']['masters']['update']);
+$GLOBALS['dbpool']->create('delete', $CONFIG['db']['core']['masters']['delete']);
+$GLOBALS['dbpool']->create('insert', $CONFIG['db']['core']['masters']['insert']);
+$GLOBALS['dbpool']->create('schema', $CONFIG['db']['core']['masters']['schema']);
+
+DataMapperFactory::db($GLOBALS['dbpool']->get());
+
+$GLOBALS['frameworkpath'] = '/phpOMS/';
+
+function phpServe() : void
+{
+ // OS detection
+ $isWindows = \stristr(\php_uname('s'), 'Windows') !== false;
+
+ // Command that starts the built-in web server
+ if ($isWindows) {
+ $command = \sprintf(
+ 'wmic process call create "php -S %s:%d -t %s" | find "ProcessId"',
+ WEB_SERVER_HOST,
+ WEB_SERVER_PORT,
+ __DIR__ . '/../' . WEB_SERVER_DOCROOT
+ );
+
+ $killCommand = 'taskkill /f /pid ';
+ } else {
+ $command = \sprintf(
+ 'php -S %s:%d -t %s >/dev/null 2>&1 & echo $!',
+ WEB_SERVER_HOST,
+ WEB_SERVER_PORT,
+ WEB_SERVER_DOCROOT
+ );
+
+ $killCommand = 'kill ';
+ }
+
+ // Execute the command and store the process ID
+ $output = [];
+ echo \sprintf('Starting server...') . \PHP_EOL;
+ echo \sprintf(' Current directory: %s', \getcwd()) . \PHP_EOL;
+ echo \sprintf(' %s', $command);
+ \exec($command, $output);
+
+ // Get PID
+ if ($isWindows) {
+ $pid = \explode('=', $output[0]);
+ $pid = \str_replace(' ', '', $pid[1]);
+ $pid = \str_replace(';', '', $pid);
+ } else {
+ $pid = (int) $output[0];
+ }
+
+ // Log
+ echo \sprintf(
+ ' %s - Web server started on %s:%d with PID %d',
+ \date('r'),
+ WEB_SERVER_HOST,
+ WEB_SERVER_PORT,
+ $pid
+ ) . \PHP_EOL;
+
+ // Kill the web server when the process ends
+ \register_shutdown_function(function() use ($killCommand, $pid) : void {
+ echo \PHP_EOL . \sprintf('Stopping server...') . \PHP_EOL;
+ echo \sprintf(' %s - Killing process with ID %d', \date('r'), $pid) . \PHP_EOL;
+ \exec($killCommand . $pid);
+ });
+}
+
+\phpServe();
diff --git a/tests/phpunit_default.xml b/tests/phpunit_default.xml
new file mode 100755
index 0000000..4db1f21
--- /dev/null
+++ b/tests/phpunit_default.xml
@@ -0,0 +1,57 @@
+
+
+
+
+ *vendor*
+ vendor
+ ../vendor
+ ../phpOMS
+ ../phpOMS*
+ ../phpOMS/*
+ ../tests*
+ ../*/tests*
+ ../**/tests*
+ */tests*
+ ../*
+ ../*
+ ../*
+ ../*
+ ../*
+ ../**/test*
+ ../**/Theme*
+ ../**/Admin/Routes*
+ ../**/Admin/Hooks*
+ ../**/Admin/Install*
+ ../Media/Files*
+
+
+
+
+
+
+
+
+ ../Karaka/Install/tests*
+
+
+ ../tests*
+
+
+
+
+ volume
+ maybe
+
+
+
+
+
+
+
+
+
+
+
+
+
+