diff options
author | Felipe Figueroa <amenadiel@gmail.com> | 2020-12-23 05:36:49 +0300 |
---|---|---|
committer | Felipe Figueroa <amenadiel@gmail.com> | 2020-12-23 05:36:49 +0300 |
commit | fde7407e70702f48f87d6f525df78f487314c53f (patch) | |
tree | 188f0a9e7c9d077692ee0bc1b777e5562445a059 | |
parent | 994a04ce3fa7308b3e1db488e36f426a8c8b1330 (diff) |
ignores tools folder
80 files changed, 3313 insertions, 1969 deletions
diff --git a/.github/workflows/codeception_tests.yml b/.github/workflows/codeception_tests.yml index b9892cb2..e8e214b3 100644 --- a/.github/workflows/codeception_tests.yml +++ b/.github/workflows/codeception_tests.yml @@ -1,6 +1,6 @@ # https://help.github.com/en/categories/automating-your-workflow-with-github-actions -name: "Coding_Standards" +name: "Codeception_Tests" on: push: @@ -18,8 +18,8 @@ env: PHP_EXTENSIONS: "mbstring, pgsql" key: cache-v1 # can be any string, change to clear the extension cache. jobs: - coding_standards: - name: "Coding_Standards" + tests: + name: "Codeception_Tests" runs-on: "ubuntu-latest" @@ -51,7 +51,7 @@ jobs: restore-keys: ${{ steps.extcache.outputs.key }} - name: "Install PHP with extensions" - uses: "shivammathur/setup-php@v2.5.0" + uses: "shivammathur/setup-php@v2" with: coverage: "none" extensions: "${{ env.PHP_EXTENSIONS }}" diff --git a/.github/workflows/coding_standards.yml b/.github/workflows/coding_standards.yml index 08a4117a..6e0b3ca9 100644 --- a/.github/workflows/coding_standards.yml +++ b/.github/workflows/coding_standards.yml @@ -51,7 +51,7 @@ jobs: restore-keys: ${{ steps.extcache.outputs.key }} - name: "Install PHP with extensions" - uses: "shivammathur/setup-php@v2.5.0" + uses: "shivammathur/setup-php@v2" with: coverage: "none" extensions: "${{ env.PHP_EXTENSIONS }}" diff --git a/.github/workflows/static_analysis.yml b/.github/workflows/static_analysis.yml index f9a137e3..60ecac90 100644 --- a/.github/workflows/static_analysis.yml +++ b/.github/workflows/static_analysis.yml @@ -49,7 +49,7 @@ jobs: restore-keys: ${{ steps.extcache.outputs.key }} - name: "Install PHP with extensions" - uses: "shivammathur/setup-php@v2.5.0" + uses: "shivammathur/setup-php@v2" with: coverage: "none" extensions: "${{ env.PHP_EXTENSIONS }}" @@ -27,7 +27,7 @@ playground *.log tests/_output temp/*.output.txt -*baseline.* + ###> Vendor files node_modules @@ -48,6 +48,6 @@ config.*.php* .php_cs.cache .phpunit.result.cache -tools/reviewdog -tools/composer-require-checker -.vscode/* +tools/php* +tools/composer* + diff --git a/.phive/phars.xml b/.phive/phars.xml index 1ec4f33f..19b0b8d3 100644 --- a/.phive/phars.xml +++ b/.phive/phars.xml @@ -1,4 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <phive xmlns="https://phar.io/phive"> <phar name="composer-require-checker" version="^2.1.0" installed="2.1.0" location="./tools/composer-require-checker" copy="false"/> + <phar name="phpmd" version="^2.7.0" installed="2.7.0" location="./tools/phpmd" copy="false"/> + <phar name="phpcpd" version="^4.1.0" installed="4.1.0" location="./tools/phpcpd" copy="false"/> + <phar name="phpcs" version="^3.5.3" installed="3.5.3" location="./tools/phpcs" copy="false"/> </phive> diff --git a/assets/templates/browser.twig b/assets/templates/browser.twig index 91263933..7754ae38 100644 --- a/assets/templates/browser.twig +++ b/assets/templates/browser.twig @@ -1,38 +1,71 @@ <!DOCTYPE html> -<html xml:lang="{{ lang.applocale }}" lang="{{ lang.applocale }}" dir="{{ lang.applangdir }}"> - <head data-headertemplate="{{ headertemplate }}"> - <link rel="stylesheet" href="{{ subfolder }}/assets/vendor/jstree/themes/phppgadmin/style.css" /> {% include 'components/common_head.twig' %} - - <script src="{{ subfolder }}/assets/vendor/jstree/jstree.min.js"></script> - <style type="text/css"> - .refreshTree { position: absolute; right: 0; z-index: 1000; } - </style> - </head> - - <body class="browser"> - <div dir="{{ lang.applangdir }}"> - <div class="logo"> - <a href="{{ subfolder }}/" target="_parent">{{ appName }}</a> - </div> - <div class="refreshTree"> - <a href="{{ subfolder }}/src/views/browser" target="browser"> - <img src="{{ icon.Refresh }}" alt="{{ lang.strrefresh }}" title="{{ lang.strrefresh }}" /> - </a> - </div> - - <div id="lazy" class="demo"></div> - </div> - - <script> - window.jsTree = $('#lazy').jstree({ "state": { "key": "jstree" }, "plugins": ["state"], 'core': { 'data': { "url": - function (node) { if (node.id === '#') { return '{{ subfolder }}/src/views/browser?action=tree'; } else { return - node.original.url; } } } } }); if(parent.frames && parent.frames.detail) { - parent.frames.detail.jsTree=window.jsTree; } - - $('#lazy').on("activate_node.jstree", function (e, data) { if (window.parent.frames.detail) { - window.parent.frames.detail.location.replace(data.node.a_attr.href); } }); $('#lazy').on("loaded.jstree", function - (e, data) { $('#lazy').data('jstree').show_dots(); }); $('#lazy').on('click','.jstree-anchor',function(){ - console.log(this); }); - </script> - </body> -</html> +<html xml:lang="{{lang.applocale}}" lang="{{lang.applocale}}" dir="{{lang.applangdir}}"> + + <head data-headertemplate="{{headertemplate}}"> + <link rel="stylesheet" href="{{subfolder}}/assets/vendor/jstree/themes/phppgadmin/style.css" /> {% include 'components/common_head.twig' %} + + <script src="{{subfolder}}/assets/vendor/jstree/jstree.min.js"></script> + <style type="text/css"> + .refreshTree { + position: absolute; + right: 0; + z-index: 1000; + } + </style> + </head> + + <body class="browser"> + + <div dir="{{lang.applangdir}}"> + + <div class="logo"> + <a href="{{subfolder}}/" target="_parent">{{appName}}</a> + </div> + <div class="refreshTree"> + <a href="{{subfolder}}/src/views/browser" target="browser"> + <img src="{{icon.Refresh}}" alt="{{lang.strrefresh}}" title="{{lang.strrefresh}}" /> + </a> + </div> + + <div id="lazy" class="demo"></div> + + </div> + + <script> + window.jsTree = $('#lazy').jstree({ + "state": { + "key": "jstree" + }, + "plugins": ["state"], + 'core': { + 'data': { + "url": function (node) { + if (node.id === '#') { + return '{{subfolder}}/src/views/browser?action=tree'; + } else { + return node.original.url; + } + } + } + } + }); + if(parent.frames && parent.frames.detail) { + parent.frames.detail.jsTree=window.jsTree; + } + + $('#lazy').on("activate_node.jstree", function (e, data) { + if (window.parent.frames.detail) { + window.parent.frames.detail.location.replace(data.node.a_attr.href); + } + }); + $('#lazy').on("loaded.jstree", function (e, data) { + $('#lazy').data('jstree').show_dots(); + }); + $('#lazy').on('click','.jstree-anchor',function(){ + console.log(this); + }); + </script> + + </body> + +</html>
\ No newline at end of file diff --git a/assets/templates/components/common_head.twig b/assets/templates/components/common_head.twig index 925f5028..8c42716d 100644 --- a/assets/templates/components/common_head.twig +++ b/assets/templates/components/common_head.twig @@ -1,6 +1,7 @@ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - - <link rel="stylesheet" href="{{subfolder}}/assets/themes/global.css" type="text/css" id="csstheme" /> + <link rel="stylesheet/less" href="{{subfolder}}/assets/themes/global.less" type="text/css" id="cssmain" /> + <script src="{{subfolder}}/assets/js/polyfills.js" type="text/javascript"></script> + <script src="{{subfolder}}/assets/js/less.min.js" type="text/javascript"></script> <link rel="stylesheet" href="{{subfolder}}/assets/themes/{{theme}}/global.css" type="text/css" id="csstheme" /> <link rel="stylesheet" href="{{subfolder}}/assets/vendor/jquery/jquery-ui.min.css" type="text/css" /> <link rel="shortcut icon" href="{{Favicon}}" type="image/vnd.microsoft.icon" /> diff --git a/assets/templates/footer.twig b/assets/templates/footer.twig index 6acdf593..835dcdd9 100644 --- a/assets/templates/footer.twig +++ b/assets/templates/footer.twig @@ -1,4 +1,7 @@ -{{ script_footer|raw }} {% if print_bottom_link == true %} - <a data-footertemplate="{{ footer_template }}" href="#" class="bottom_link">{{ lang.strgotoppage }}</a> -{% endif %} -<script src="{{ subfolder }}/assets/js/footer_scripts.js" type="text/javascript"></script> +{{script_footer|raw}} {% if print_bottom_link == true %} +<a data-footertemplate="{{footer_template}}" href="#" class="bottom_link">{{lang.strgotoppage}}</a> {% endif %} +<script src="{{subfolder}}/assets/js/footer_scripts.js" type="text/javascript"></script> + +</body> + +</html>
\ No newline at end of file diff --git a/assets/templates/footer_iframe.twig b/assets/templates/footer_iframe.twig index 3469b3da..936f9bd1 100644 --- a/assets/templates/footer_iframe.twig +++ b/assets/templates/footer_iframe.twig @@ -1,13 +1,27 @@ <script type="text/javascript"> - var dir = '{{ lang.applangdir }}'; +var dir = '{{lang.applangdir}}'; - jQuery('#browser_container').resizable({ handles: (dir === 'ltr') ? "e" : "w", start: function () { - jQuery('#masking_overlay').css('display', 'block'); }, stop: function () { jQuery('#masking_overlay').css('display', - 'none'); } +jQuery('#browser_container').resizable({ + handles: (dir === 'ltr') ? "e" : "w", + start: function () { + jQuery('#masking_overlay').css('display', 'block'); + }, + stop: function () { + jQuery('#masking_overlay').css('display', 'none'); + } - }); +}); - window.onpopstate = function (event) { console.log('onpopstate', { state: event.state }); if (event.state && - event.state.realurl) { var ifr = document.getElementById('detail') - ifr.contentWindow.location.replace(event.state.realurl); } }; +window.onpopstate = function (event) { + console.log('onpopstate', { + state: event.state + }); + if (event.state && event.state.realurl) { + var ifr = document.getElementById('detail') + ifr.contentWindow.location.replace(event.state.realurl); + } +}; </script> +</body> + +</html>
\ No newline at end of file diff --git a/assets/templates/footer_sqledit.twig b/assets/templates/footer_sqledit.twig index 0e41d6cf..8db64d45 100644 --- a/assets/templates/footer_sqledit.twig +++ b/assets/templates/footer_sqledit.twig @@ -1,6 +1,11 @@ <script type="text/javascript"> - CodeMirror.modeURL = "{{ subfolder }}/assets/vendor/codemirror/mode/%N/%N.js"; +CodeMirror.modeURL = "{{subfolder}}/assets/vendor/codemirror/mode/%N/%N.js"; </script> -<script src="{{ subfolder }}/assets/js/codemirror/codemirror_footer.js" type="text/javascript"></script> -<!-- <script src="{{subfolder}}/assets/js/footer_scripts.js" type="text/javascript"></script> --> -<script src="{{ subfolder }}/assets/js/footer_sqledit.js" type="text/javascript"></script> +<script src="{{subfolder}}/assets/js/codemirror/codemirror_footer.js" type="text/javascript"></script> +<!--<script src="{{subfolder}}/assets/js/footer_scripts.js" type="text/javascript"></script>--> +<script src="{{subfolder}}/assets/js/footer_sqledit.js" type="text/javascript"></script> + + +</body> + +</html>
\ No newline at end of file diff --git a/assets/templates/header.twig b/assets/templates/header.twig index 23760de8..040505ba 100644 --- a/assets/templates/header.twig +++ b/assets/templates/header.twig @@ -1,3 +1,8 @@ -<head data-headertemplate="{{ headertemplate }}"> - {% include 'components/common_head.twig' %} -</head> +<!DOCTYPE html> +<html xml:lang="{{lang.applocale}}" lang="{{lang.applocale}}" dir="{{lang.applangdir}}"> + + <head data-headertemplate="{{headertemplate}}"> + {% include 'components/common_head.twig' %} + + </head> +
\ No newline at end of file diff --git a/assets/templates/header_datatables.twig b/assets/templates/header_datatables.twig index d0e451af..32eaa73a 100644 --- a/assets/templates/header_datatables.twig +++ b/assets/templates/header_datatables.twig @@ -1,6 +1,9 @@ -<head data-headertemplate="{{ headertemplate }}"> - {% include 'components/common_head.twig' %} +<!DOCTYPE html> +<html xml:lang="{{lang.applocale}}" lang="{{lang.applocale}}" dir="{{lang.applangdir}}"> - <link rel="stylesheet" href="{{ subfolder }}/assets/vendor/datatables/datatables.min.css" type="text/css" /> - <script src="{{ subfolder }}/assets/vendor/datatables/datatables.min.js"></script> -</head> + <head data-headertemplate="{{headertemplate}}"> + {% include 'components/common_head.twig' %} + + <link rel="stylesheet" href="{{subfolder}}/assets/vendor/datatables/datatables.min.css" type="text/css" /> + <script src="{{subfolder}}/assets/vendor/datatables/datatables.min.js"></script> + </head>
\ No newline at end of file diff --git a/assets/templates/header_highlight.twig b/assets/templates/header_highlight.twig index 624c0e51..7d7e9362 100644 --- a/assets/templates/header_highlight.twig +++ b/assets/templates/header_highlight.twig @@ -1,8 +1,9 @@ -<head data-headertemplate="{{ headertemplate }}"> - {% include 'components/common_head.twig' %} +<!DOCTYPE html> +<html xml:lang="{{lang.applocale}}" lang="{{lang.applocale}}" dir="{{lang.applangdir}}"> - <link rel="stylesheet" - href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css" - type="text/css" /> - <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script> -</head> + <head data-headertemplate="{{headertemplate}}"> + {% include 'components/common_head.twig' %} + + <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css" type="text/css" /> + <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script> + </head>
\ No newline at end of file diff --git a/assets/templates/header_select2.twig b/assets/templates/header_select2.twig index 383e247d..8749a607 100644 --- a/assets/templates/header_select2.twig +++ b/assets/templates/header_select2.twig @@ -1,7 +1,10 @@ -<head data-headertemplate="{{ headertemplate }}"> - {% include 'components/common_head.twig' %} +<!DOCTYPE html> +<html xml:lang="{{lang.applocale}}" lang="{{lang.applocale}}" dir="{{lang.applangdir}}"> - <link rel="stylesheet" href="{{ subfolder }}/assets/vendor/select2/css/select2.css" type="text/css" /> - <script src="{{ subfolder }}/assets/vendor/select2/js/select2.full.min.js"></script> - <script src="{{ subfolder }}/assets/vendor/select2/js/i18n/{{ lang.isolang }}.js"></script> -</head> + <head data-headertemplate="{{headertemplate}}"> + {% include 'components/common_head.twig' %} + + <link rel="stylesheet" href="{{subfolder}}/assets/vendor/select2/css/select2.css" type="text/css" /> + <script src="{{subfolder}}/assets/vendor/select2/js/select2.full.min.js"></script> + <script src="{{subfolder}}/assets/vendor/select2/js/i18n/{{lang.isolang}}.js"></script> + </head>
\ No newline at end of file diff --git a/assets/templates/header_sqledit.twig b/assets/templates/header_sqledit.twig index 7ab07244..e783ee29 100644 --- a/assets/templates/header_sqledit.twig +++ b/assets/templates/header_sqledit.twig @@ -1,11 +1,19 @@ -<head data-headertemplate="{{ headertemplate }}"> - {% include 'components/common_head.twig' %} - <link href="{{ subfolder }}/assets/vendor/codemirror/lib/codemirror.css" type="text/css" rel="stylesheet" /> - <script src="{{ subfolder }}/assets/vendor/codemirror/lib/codemirror.js"></script> - <script src="{{ subfolder }}/assets/vendor/codemirror/addon/mode/loadmode.js"></script> - <script src="{{ subfolder }}/assets/vendor/codemirror/mode/meta.js"></script> - - {# +<!DOCTYPE html> +<html xml:lang="{{lang.applocale}}" lang="{{lang.applocale}}" dir="{{dir}}"> + + <head data-headertemplate="{{headertemplate}}"> + + + + {% include 'components/common_head.twig' %} + <link href="{{subfolder}}/assets/vendor/codemirror/lib/codemirror.css" type="text/css" rel="stylesheet" /> + <script src="{{subfolder}}/assets/vendor/codemirror/lib/codemirror.js"></script> + <script src="{{subfolder}}/assets/vendor/codemirror/addon/mode/loadmode.js"></script> + <script src="{{subfolder}}/assets/vendor/codemirror/mode/meta.js"></script> + + + + {# <link href="{{subfolder}}/assets/vendor/codemirror/addon/fold/foldgutter.css" type="text/css" rel="stylesheet" /> <link href="{{subfolder}}/assets/vendor/codemirror/addon/hint/show-hint.css" type="text/css" rel="stylesheet" /> <script src="{{subfolder}}/assets/vendor/codemirror/addon/hint/show-hint.js"></script> @@ -36,4 +44,8 @@ #} -</head> + + </head> + + +
\ No newline at end of file diff --git a/assets/templates/iframe_view.twig b/assets/templates/iframe_view.twig index c6cb5949..ee8f4d10 100644 --- a/assets/templates/iframe_view.twig +++ b/assets/templates/iframe_view.twig @@ -1,28 +1,18 @@ -<!DOCTYPE html> -<html xml:lang="{{ lang.applocale }}" lang="{{ lang.applocale }}" dir="{{ lang.applangdir }}"> - {% include 'header.twig' %} +{% include 'header.twig' %} - <body class="flexbox_body {{ lang.applangdir }}"> +<body class="flexbox_body {{lang.applangdir}}"> <div class="flexbox_wrapper"> - <div id="masking_overlay"></div> - <div id="browser_container"> - <iframe src="{{ subfolder }}/src/views/browser" - name="browser" - id="browser" - class="browser_container" - frameborder="0"> - <p> - Your browser does not support iframes. - </p> + <div id="masking_overlay"></div> + <div id="browser_container"> + + <iframe src="{{subfolder}}/src/views/browser" name="browser" id="browser" class="browser_container" frameborder="0" /> + <p>Your browser does not support iframes.</p> + </iframe> + </div> + + <iframe src="{{subfolder}}{{url}}" name="detail" id="detail" class="detail_container" frameborder="0" /> + <p>Your browser does not support iframes.</p> </iframe> - </div> - <iframe src="{{ subfolder }}{{ url }}" name="detail" id="detail" class="detail_container" frameborder="0"> - <p> - Your browser does not support iframes. - </p> - </iframe> </div> - {% include 'footer_iframe.twig' %} - </body> -</html> + {% include 'footer_iframe.twig' %}
\ No newline at end of file diff --git a/composer-require-checker.json b/composer-require-checker.json index b79d709c..9823e927 100644 --- a/composer-require-checker.json +++ b/composer-require-checker.json @@ -15,14 +15,19 @@ "string", "true", "void", - "ADODB_postgres8", - "ADORecordSet_assoc_postgres8", - "ADORecordSet_postgres8", - "dump", - "PDO", - "PHPPGA_SUBFOLDER", - "Psr\\Http\\Message\\ResponseInterface", - "requestInstance", - "responseInstance" - ] -}
\ No newline at end of file + "ADODB_postgres8", + "ADORecordSet_assoc_postgres8", + "ADORecordSet_postgres8", + "dump", + "PDO", + "PHP_SESSION_ACTIVE", + "session_id", + "session_name", + "session_set_cookie_params", + "session_start", + "session_status" + + ], + "scan-files" : ["src/lib.inc.php", "router.php"] + +} diff --git a/composer.json b/composer.json index fb8121a1..9ae94629 100644 --- a/composer.json +++ b/composer.json @@ -15,15 +15,14 @@ ], "require": { "php": ">=7.1", - "ext-mbstring": "*", - "ext-xml": "*", "ext-json": "*", + "ext-mbstring": "*", "ext-pgsql": "*", + "ext-xml": "*", "adodb/adodb-php": "^5.20", "slim/flash": "^0.4.0", "slim/slim": "^3.6", "slim/twig-view": "~2.5.1", - "symfony/yaml": "^5.0", "twig/twig": "~1.42.4" }, @@ -38,7 +37,6 @@ "ocramius/package-versions": "~1.4.0", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/phpstan": "^0.12.14", - "simpletest/simpletest": "^1.1", "vimeo/psalm": "~3.9.3" }, "extra": { diff --git a/composer.lock b/composer.lock index f2b9b40b..bf41db0f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "fba1ba7f899357b0d4f2c8001a47fa9f", + "content-hash": "247673104eedd38605a18e403d6d7d70", "packages": [ { "name": "adodb/adodb-php", - "version": "v5.20.17", + "version": "v5.20.18", "source": { "type": "git", "url": "https://github.com/ADOdb/ADOdb.git", - "reference": "c47e5c272e98a06e1c92248b5d9d1ae0afe71c97" + "reference": "0363eca78eed8bd02d1456072c729da302655241" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ADOdb/ADOdb/zipball/c47e5c272e98a06e1c92248b5d9d1ae0afe71c97", - "reference": "c47e5c272e98a06e1c92248b5d9d1ae0afe71c97", + "url": "https://api.github.com/repos/ADOdb/ADOdb/zipball/0363eca78eed8bd02d1456072c729da302655241", + "reference": "0363eca78eed8bd02d1456072c729da302655241", "shasum": "" }, "require": { @@ -58,7 +58,7 @@ "library", "php" ], - "time": "2020-03-31T17:32:58+00:00" + "time": "2020-06-28T17:52:20+00:00" }, { "name": "nikic/fast-route", @@ -428,17 +428,67 @@ "time": "2019-11-28T18:03:50+00:00" }, { + "name": "symfony/deprecation-contracts", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665", + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-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", + "time": "2020-09-07T11:33:47+00:00" + }, + { "name": "symfony/polyfill-ctype", - "version": "v1.17.0", + "version": "v1.18.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9" + "reference": "1c302646f6efc070cd46856e600e5e0684d6b454" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e94c8b1bbe2bc77507a1056cdb06451c75b427f9", - "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454", + "reference": "1c302646f6efc070cd46856e600e5e0684d6b454", "shasum": "" }, "require": { @@ -450,7 +500,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.17-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -483,24 +537,25 @@ "polyfill", "portable" ], - "time": "2020-05-12T16:14:59+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { "name": "symfony/yaml", - "version": "v5.0.8", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "482fb4e710e5af3e0e78015f19aa716ad953392f" + "reference": "e147a68cb66a8b510f4b7481fe4da5b2ab65ec6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/482fb4e710e5af3e0e78015f19aa716ad953392f", - "reference": "482fb4e710e5af3e0e78015f19aa716ad953392f", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e147a68cb66a8b510f4b7481fe4da5b2ab65ec6a", + "reference": "e147a68cb66a8b510f4b7481fe4da5b2ab65ec6a", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -512,10 +567,13 @@ "suggest": { "symfony/console": "For validating YAML files using the lint command" }, + "bin": [ + "Resources/bin/yaml-lint" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -542,7 +600,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2020-04-28T17:58:55+00:00" + "time": "2020-09-27T03:44:28+00:00" }, { "name": "twig/twig", @@ -612,16 +670,16 @@ "packages-dev": [ { "name": "amphp/amp", - "version": "v2.4.4", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/amphp/amp.git", - "reference": "1e58d53e4af390efc7813e36cd215bd82cba4b06" + "reference": "f220a51458bf4dd0dedebb171ac3457813c72bbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/1e58d53e4af390efc7813e36cd215bd82cba4b06", - "reference": "1e58d53e4af390efc7813e36cd215bd82cba4b06", + "url": "https://api.github.com/repos/amphp/amp/zipball/f220a51458bf4dd0dedebb171ac3457813c72bbc", + "reference": "f220a51458bf4dd0dedebb171ac3457813c72bbc", "shasum": "" }, "require": { @@ -633,8 +691,8 @@ "ext-json": "*", "jetbrains/phpstorm-stubs": "^2019.3", "phpunit/phpunit": "^6.0.9 | ^7", - "react/promise": "^2", - "vimeo/psalm": "^3.11@dev" + "psalm/phar": "^3.11@dev", + "react/promise": "^2" }, "type": "library", "extra": { @@ -686,32 +744,33 @@ "non-blocking", "promise" ], - "time": "2020-04-30T04:54:50+00:00" + "time": "2020-07-14T21:47:18+00:00" }, { "name": "amphp/byte-stream", - "version": "v1.7.3", + "version": "v1.8.0", "source": { "type": "git", "url": "https://github.com/amphp/byte-stream.git", - "reference": "b867505edb79dda8f253ca3c3a2bbadae4b16592" + "reference": "f0c20cf598a958ba2aa8c6e5a71c697d652c7088" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/byte-stream/zipball/b867505edb79dda8f253ca3c3a2bbadae4b16592", - "reference": "b867505edb79dda8f253ca3c3a2bbadae4b16592", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/f0c20cf598a958ba2aa8c6e5a71c697d652c7088", + "reference": "f0c20cf598a958ba2aa8c6e5a71c697d652c7088", "shasum": "" }, "require": { - "amphp/amp": "^2" + "amphp/amp": "^2", + "php": ">=7.1" }, "require-dev": { "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1", + "amphp/phpunit-util": "^1.4", "friendsofphp/php-cs-fixer": "^2.3", "jetbrains/phpstorm-stubs": "^2019.3", "phpunit/phpunit": "^6 || ^7 || ^8", - "vimeo/psalm": "^3.9@dev" + "psalm/phar": "^3.11.4" }, "type": "library", "extra": { @@ -751,7 +810,7 @@ "non-blocking", "stream" ], - "time": "2020-04-04T16:56:54+00:00" + "time": "2020-06-29T18:35:05+00:00" }, { "name": "behat/gherkin", @@ -814,16 +873,16 @@ }, { "name": "codeception/codeception", - "version": "4.1.5", + "version": "4.1.7", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "24f2345329b1059f1208f65581fc632a4a6e5a55" + "reference": "220ad18d3c192137d9dc2d0dd8d69a0d82083a26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/24f2345329b1059f1208f65581fc632a4a6e5a55", - "reference": "24f2345329b1059f1208f65581fc632a4a6e5a55", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/220ad18d3c192137d9dc2d0dd8d69a0d82083a26", + "reference": "220ad18d3c192137d9dc2d0dd8d69a0d82083a26", "shasum": "" }, "require": { @@ -895,24 +954,25 @@ "functional testing", "unit testing" ], - "time": "2020-05-24T13:58:47+00:00" + "time": "2020-08-28T06:37:06+00:00" }, { "name": "codeception/lib-asserts", - "version": "1.12.0", + "version": "1.13.1", "source": { "type": "git", "url": "https://github.com/Codeception/lib-asserts.git", - "reference": "acd0dc8b394595a74b58dcc889f72569ff7d8e71" + "reference": "263ef0b7eff80643e82f4cf55351eca553a09a10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/acd0dc8b394595a74b58dcc889f72569ff7d8e71", - "reference": "acd0dc8b394595a74b58dcc889f72569ff7d8e71", + "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/263ef0b7eff80643e82f4cf55351eca553a09a10", + "reference": "263ef0b7eff80643e82f4cf55351eca553a09a10", "shasum": "" }, "require": { "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3 | ^9.0", + "ext-dom": "*", "php": ">=5.6.0 <8.0" }, "type": "library", @@ -933,32 +993,36 @@ }, { "name": "Gintautas Miselis" + }, + { + "name": "Gustavo Nieves", + "homepage": "https://medium.com/@ganieves" } ], "description": "Assertion methods used by Codeception core and Asserts module", - "homepage": "http://codeception.com/", + "homepage": "https://codeception.com/", "keywords": [ "codeception" ], - "time": "2020-04-17T18:20:46+00:00" + "time": "2020-08-28T07:49:36+00:00" }, { "name": "codeception/module-asserts", - "version": "1.2.1", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/Codeception/module-asserts.git", - "reference": "79f13d05b63f2fceba4d0e78044bab668c9b2a6b" + "reference": "32e5be519faaeb60ed3692383dcd1b3390ec2667" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/79f13d05b63f2fceba4d0e78044bab668c9b2a6b", - "reference": "79f13d05b63f2fceba4d0e78044bab668c9b2a6b", + "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/32e5be519faaeb60ed3692383dcd1b3390ec2667", + "reference": "32e5be519faaeb60ed3692383dcd1b3390ec2667", "shasum": "" }, "require": { "codeception/codeception": "*@dev", - "codeception/lib-asserts": "^1.12.0", + "codeception/lib-asserts": "^1.13.1", "php": ">=5.6.0 <8.0" }, "conflict": { @@ -983,29 +1047,33 @@ }, { "name": "Gintautas Miselis" + }, + { + "name": "Gustavo Nieves", + "homepage": "https://medium.com/@ganieves" } ], "description": "Codeception module containing various assertions", - "homepage": "http://codeception.com/", + "homepage": "https://codeception.com/", "keywords": [ "assertions", "asserts", "codeception" ], - "time": "2020-04-20T07:26:11+00:00" + "time": "2020-08-28T08:06:29+00:00" }, { "name": "codeception/phpunit-wrapper", - "version": "9.0.2", + "version": "9.0.4", "source": { "type": "git", "url": "https://github.com/Codeception/phpunit-wrapper.git", - "reference": "eb27243d8edde68593bf8d9ef5e9074734777931" + "reference": "bb0925f1fe7a30105208352e619a11d6096e7047" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/eb27243d8edde68593bf8d9ef5e9074734777931", - "reference": "eb27243d8edde68593bf8d9ef5e9074734777931", + "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/bb0925f1fe7a30105208352e619a11d6096e7047", + "reference": "bb0925f1fe7a30105208352e619a11d6096e7047", "shasum": "" }, "require": { @@ -1036,20 +1104,20 @@ } ], "description": "PHPUnit classes used by Codeception", - "time": "2020-04-17T18:16:31+00:00" + "time": "2020-08-26T18:15:09+00:00" }, { "name": "codeception/stub", - "version": "3.6.1", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/Codeception/Stub.git", - "reference": "a3ba01414cbee76a1bced9f9b6b169cc8d203880" + "reference": "468dd5fe659f131fc997f5196aad87512f9b1304" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Stub/zipball/a3ba01414cbee76a1bced9f9b6b169cc8d203880", - "reference": "a3ba01414cbee76a1bced9f9b6b169cc8d203880", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/468dd5fe659f131fc997f5196aad87512f9b1304", + "reference": "468dd5fe659f131fc997f5196aad87512f9b1304", "shasum": "" }, "require": { @@ -1066,20 +1134,20 @@ "MIT" ], "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", - "time": "2020-02-07T18:42:28+00:00" + "time": "2020-07-03T15:54:43+00:00" }, { "name": "composer/semver", - "version": "1.5.1", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de" + "reference": "38276325bd896f90dfcfe30029aa5db40df387a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c6bea70230ef4dd483e6bbcab6005f682ed3a8de", - "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de", + "url": "https://api.github.com/repos/composer/semver/zipball/38276325bd896f90dfcfe30029aa5db40df387a7", + "reference": "38276325bd896f90dfcfe30029aa5db40df387a7", "shasum": "" }, "require": { @@ -1127,20 +1195,20 @@ "validation", "versioning" ], - "time": "2020-01-13T12:06:48+00:00" + "time": "2020-09-27T13:13:07+00:00" }, { "name": "composer/xdebug-handler", - "version": "1.4.1", + "version": "1.4.3", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7" + "reference": "ebd27a9866ae8254e873866f795491f02418c5a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/1ab9842d69e64fb3a01be6b656501032d1b78cb7", - "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ebd27a9866ae8254e873866f795491f02418c5a5", + "reference": "ebd27a9866ae8254e873866f795491f02418c5a5", "shasum": "" }, "require": { @@ -1171,30 +1239,31 @@ "Xdebug", "performance" ], - "time": "2020-03-01T12:26:26+00:00" + "time": "2020-08-19T10:27:58+00:00" }, { "name": "doctrine/annotations", - "version": "1.10.2", + "version": "1.10.4", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "b9d758e831c70751155c698c2f7df4665314a1cb" + "reference": "bfe91e31984e2ba76df1c1339681770401ec262f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/b9d758e831c70751155c698c2f7df4665314a1cb", - "reference": "b9d758e831c70751155c698c2f7df4665314a1cb", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/bfe91e31984e2ba76df1c1339681770401ec262f", + "reference": "bfe91e31984e2ba76df1c1339681770401ec262f", "shasum": "" }, "require": { "doctrine/lexer": "1.*", "ext-tokenizer": "*", - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/cache": "1.*", - "phpunit/phpunit": "^7.5" + "phpstan/phpstan": "^0.12.20", + "phpunit/phpunit": "^7.5 || ^9.1.5" }, "type": "library", "extra": { @@ -1240,24 +1309,24 @@ "docblock", "parser" ], - "time": "2020-04-20T09:18:32+00:00" + "time": "2020-08-10T19:35:50+00:00" }, { "name": "doctrine/instantiator", - "version": "1.3.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" + "reference": "f350df0268e904597e3bd9c4685c53e0e333feea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea", + "reference": "f350df0268e904597e3bd9c4685c53e0e333feea", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^6.0", @@ -1296,24 +1365,24 @@ "constructor", "instantiate" ], - "time": "2019-10-21T16:45:58+00:00" + "time": "2020-05-29T17:27:14+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6" + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", - "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", "shasum": "" }, "require": { - "php": "^7.2" + "php": "^7.2 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^6.0", @@ -1358,42 +1427,43 @@ "parser", "php" ], - "time": "2019-10-30T14:39:59+00:00" + "time": "2020-05-25T17:44:05+00:00" }, { "name": "ergebnis/composer-normalize", - "version": "2.5.1", + "version": "2.8.2", "source": { "type": "git", "url": "https://github.com/ergebnis/composer-normalize.git", - "reference": "d0faf549e565757a7ffbf1f306a4293080e43bdd" + "reference": "0a25a226c5503659179c8ea440d1c76599e434fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/d0faf549e565757a7ffbf1f306a4293080e43bdd", - "reference": "d0faf549e565757a7ffbf1f306a4293080e43bdd", + "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/0a25a226c5503659179c8ea440d1c76599e434fd", + "reference": "0a25a226c5503659179c8ea440d1c76599e434fd", "shasum": "" }, "require": { "composer-plugin-api": "^1.1.0 || ^2.0.0", - "ergebnis/json-normalizer": "~0.12.0", - "ergebnis/json-printer": "^3.0.2", - "localheinz/diff": "^1.0.1", - "php": "^7.1" + "ergebnis/json-normalizer": "~0.13.1", + "ergebnis/json-printer": "^3.1.1", + "justinrainbow/json-schema": "^5.2.10", + "localheinz/diff": "^1.1.1", + "php": "^7.2 || ^8.0" }, "require-dev": { - "composer/composer": "^1.10.5 || ^2.0.0", - "composer/package-versions-deprecated": "^1.8.0", - "ergebnis/phpstan-rules": "~0.14.4", - "ergebnis/test-util": "~1.0.0", - "jangregor/phpstan-prophecy": "~0.6.2", - "phpstan/extension-installer": "^1.0.4", - "phpstan/phpstan": "~0.12.19", - "phpstan/phpstan-deprecation-rules": "~0.12.2", - "phpstan/phpstan-phpunit": "~0.12.8", - "phpstan/phpstan-strict-rules": "~0.12.2", - "phpunit/phpunit": "^7.5.20", - "symfony/filesystem": "^4.4.8" + "composer/composer": "^1.10.13 || ^2.0.0", + "composer/package-versions-deprecated": "^1.11.99", + "ergebnis/phpstan-rules": "~0.15.2", + "ergebnis/test-util": "^1.1.0", + "jangregor/phpstan-prophecy": "~0.8.0", + "phpstan/extension-installer": "^1.0.5", + "phpstan/phpstan": "~0.12.43", + "phpstan/phpstan-deprecation-rules": "~0.12.5", + "phpstan/phpstan-phpunit": "~0.12.16", + "phpstan/phpstan-strict-rules": "~0.12.5", + "phpunit/phpunit": "^8.5.8", + "symfony/filesystem": "^5.1.5" }, "type": "composer-plugin", "extra": { @@ -1422,43 +1492,43 @@ "normalizer", "plugin" ], - "time": "2020-05-01T12:02:09+00:00" + "time": "2020-09-22T09:55:49+00:00" }, { "name": "ergebnis/json-normalizer", - "version": "0.12.0", + "version": "0.13.1", "source": { "type": "git", "url": "https://github.com/ergebnis/json-normalizer.git", - "reference": "0197447cd5d8f7e82116e904196a3e9f470655db" + "reference": "82897f7a0b6a896462a08ac02bee33ccf4ece0bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-normalizer/zipball/0197447cd5d8f7e82116e904196a3e9f470655db", - "reference": "0197447cd5d8f7e82116e904196a3e9f470655db", + "url": "https://api.github.com/repos/ergebnis/json-normalizer/zipball/82897f7a0b6a896462a08ac02bee33ccf4ece0bb", + "reference": "82897f7a0b6a896462a08ac02bee33ccf4ece0bb", "shasum": "" }, "require": { - "ergebnis/json-printer": "^3.0.2", + "ergebnis/json-printer": "^3.1.0", "ext-json": "*", - "justinrainbow/json-schema": "^4.0.0 || ^5.0.0", - "php": "^7.1" + "justinrainbow/json-schema": "^5.2.10", + "php": "^7.2 || ^8.0" }, "require-dev": { - "ergebnis/license": "~0.1.0", - "ergebnis/php-cs-fixer-config": "^2.1.2", - "ergebnis/phpstan-rules": "~0.14.4", - "ergebnis/test-util": "~1.0.0", - "infection/infection": "~0.13.6", - "jangregor/phpstan-prophecy": "~0.6.2", + "ergebnis/license": "^1.0.0", + "ergebnis/php-cs-fixer-config": "^2.2.1", + "ergebnis/phpstan-rules": "~0.15.2", + "ergebnis/test-util": "^1.1.0", + "infection/infection": "~0.15.3", + "jangregor/phpstan-prophecy": "~0.8.0", "phpstan/extension-installer": "^1.0.4", - "phpstan/phpstan": "~0.12.18", - "phpstan/phpstan-deprecation-rules": "~0.12.2", - "phpstan/phpstan-phpunit": "~0.12.8", - "phpstan/phpstan-strict-rules": "~0.12.2", - "phpunit/phpunit": "^7.5.20", - "psalm/plugin-phpunit": "~0.10.0", - "vimeo/psalm": "^3.11.2" + "phpstan/phpstan": "~0.12.40", + "phpstan/phpstan-deprecation-rules": "~0.12.5", + "phpstan/phpstan-phpunit": "~0.12.16", + "phpstan/phpstan-strict-rules": "~0.12.4", + "phpunit/phpunit": "^8.5.8", + "psalm/plugin-phpunit": "~0.11.0", + "vimeo/psalm": "^3.14.2" }, "type": "library", "autoload": { @@ -1482,38 +1552,41 @@ "json", "normalizer" ], - "time": "2020-04-19T12:30:41+00:00" + "time": "2020-08-30T12:00:06+00:00" }, { "name": "ergebnis/json-printer", - "version": "3.0.2", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/ergebnis/json-printer.git", - "reference": "c7985dc4879777f2e4ab689da25bdd49f59dd2cb" + "reference": "e4190dadd9937a77d8afcaf2b6c42a528ab367d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-printer/zipball/c7985dc4879777f2e4ab689da25bdd49f59dd2cb", - "reference": "c7985dc4879777f2e4ab689da25bdd49f59dd2cb", + "url": "https://api.github.com/repos/ergebnis/json-printer/zipball/e4190dadd9937a77d8afcaf2b6c42a528ab367d6", + "reference": "e4190dadd9937a77d8afcaf2b6c42a528ab367d6", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", - "php": "^7.1" + "php": "^7.2 || ^8.0" }, "require-dev": { - "ergebnis/php-cs-fixer-config": "~1.1.1", - "ergebnis/phpstan-rules": "~0.14.1", - "ergebnis/test-util": "~0.9.0", - "infection/infection": "~0.13.6", - "phpbench/phpbench": "~0.16.10", - "phpstan/extension-installer": "^1.0.3", - "phpstan/phpstan": "~0.11.19", - "phpstan/phpstan-deprecation-rules": "~0.11.2", - "phpstan/phpstan-strict-rules": "~0.11.1", - "phpunit/phpunit": "^7.5.18" + "ergebnis/license": "^1.0.0", + "ergebnis/php-cs-fixer-config": "^2.2.1", + "ergebnis/phpstan-rules": "~0.15.2", + "ergebnis/test-util": "^1.1.0", + "infection/infection": "~0.15.3", + "phpstan/extension-installer": "^1.0.4", + "phpstan/phpstan": "~0.12.40", + "phpstan/phpstan-deprecation-rules": "~0.12.5", + "phpstan/phpstan-phpunit": "~0.12.16", + "phpstan/phpstan-strict-rules": "~0.12.4", + "phpunit/phpunit": "^8.5.8", + "psalm/plugin-phpunit": "~0.11.0", + "vimeo/psalm": "^3.14.2" }, "type": "library", "autoload": { @@ -1538,43 +1611,43 @@ "json", "printer" ], - "time": "2019-12-19T14:42:54+00:00" + "time": "2020-08-30T12:17:03+00:00" }, { "name": "ergebnis/php-cs-fixer-config", - "version": "2.1.2", + "version": "2.2.2", "source": { "type": "git", "url": "https://github.com/ergebnis/php-cs-fixer-config.git", - "reference": "c811e48e106a6decc20b3e305629e11c515a772c" + "reference": "41f0fb497287797d54bd1f08c9287e33b743b4b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/php-cs-fixer-config/zipball/c811e48e106a6decc20b3e305629e11c515a772c", - "reference": "c811e48e106a6decc20b3e305629e11c515a772c", + "url": "https://api.github.com/repos/ergebnis/php-cs-fixer-config/zipball/41f0fb497287797d54bd1f08c9287e33b743b4b9", + "reference": "41f0fb497287797d54bd1f08c9287e33b743b4b9", "shasum": "" }, "require": { "ext-filter": "*", - "friendsofphp/php-cs-fixer": "~2.16.3", - "php": "^7.1" + "friendsofphp/php-cs-fixer": "~2.16.4", + "php": "^7.2" }, "require-dev": { - "ergebnis/composer-normalize": "^2.3.2", - "ergebnis/license": "~0.1.0", - "ergebnis/phpstan-rules": "~0.14.4", - "ergebnis/test-util": "~1.0.0", - "infection/infection": "~0.13.6", - "jangregor/phpstan-prophecy": "~0.6.2", - "phpstan/extension-installer": "^1.0.4", - "phpstan/phpstan": "~0.12.18", - "phpstan/phpstan-deprecation-rules": "~0.12.2", - "phpstan/phpstan-phpunit": "~0.12.7", - "phpstan/phpstan-strict-rules": "~0.12.2", - "phpunit/phpunit": "^7.5.20", - "psalm/plugin-phpunit": "~0.10.0", + "ergebnis/composer-normalize": "^2.7.1", + "ergebnis/license": "^1.1.0", + "ergebnis/phpstan-rules": "~0.15.2", + "ergebnis/test-util": "^1.1.0", + "infection/infection": "~0.15.3", + "jangregor/phpstan-prophecy": "~0.8.0", + "phpstan/extension-installer": "^1.0.5", + "phpstan/phpstan": "~0.12.40", + "phpstan/phpstan-deprecation-rules": "~0.12.5", + "phpstan/phpstan-phpunit": "~0.12.16", + "phpstan/phpstan-strict-rules": "~0.12.4", + "phpunit/phpunit": "^8.5.8", + "psalm/plugin-phpunit": "~0.11.0", "symfony/filesystem": "^4.4.0", - "vimeo/psalm": "^3.11.2" + "vimeo/psalm": "^3.14.2" }, "type": "library", "autoload": { @@ -1594,7 +1667,7 @@ ], "description": "Provides a configuration factory and multiple rule sets for friendsofphp/php-cs-fixer.", "homepage": "https://github.com/ergebnis/php-cs-fixer-config", - "time": "2020-04-16T08:02:53+00:00" + "time": "2020-08-30T13:02:21+00:00" }, { "name": "felixfbecker/advanced-json-rpc", @@ -1686,16 +1759,16 @@ }, { "name": "filp/whoops", - "version": "2.7.2", + "version": "2.7.3", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "17d0d3f266c8f925ebd035cd36f83cf802b47d4a" + "reference": "5d5fe9bb3d656b514d455645b3addc5f7ba7714d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/17d0d3f266c8f925ebd035cd36f83cf802b47d4a", - "reference": "17d0d3f266c8f925ebd035cd36f83cf802b47d4a", + "url": "https://api.github.com/repos/filp/whoops/zipball/5d5fe9bb3d656b514d455645b3addc5f7ba7714d", + "reference": "5d5fe9bb3d656b514d455645b3addc5f7ba7714d", "shasum": "" }, "require": { @@ -1743,20 +1816,20 @@ "throwable", "whoops" ], - "time": "2020-05-05T12:28:07+00:00" + "time": "2020-06-14T09:00:00+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v2.16.3", + "version": "v2.16.4", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "83baf823a33a1cbd5416c8626935cf3f843c10b0" + "reference": "1023c3458137ab052f6ff1e09621a721bfdeca13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/83baf823a33a1cbd5416c8626935cf3f843c10b0", - "reference": "83baf823a33a1cbd5416c8626935cf3f843c10b0", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/1023c3458137ab052f6ff1e09621a721bfdeca13", + "reference": "1023c3458137ab052f6ff1e09621a721bfdeca13", "shasum": "" }, "require": { @@ -1788,12 +1861,12 @@ "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.1", "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.1", "phpunitgoodpractices/traits": "^1.8", - "symfony/phpunit-bridge": "^4.3 || ^5.0", + "symfony/phpunit-bridge": "^5.1", "symfony/yaml": "^3.0 || ^4.0 || ^5.0" }, "suggest": { "ext-dom": "For handling output formats in XML", - "ext-mbstring": "For handling non-UTF8 characters in cache signature.", + "ext-mbstring": "For handling non-UTF8 characters.", "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." @@ -1834,7 +1907,7 @@ } ], "description": "A tool to automatically fix PHP code style", - "time": "2020-04-15T18:51:10+00:00" + "time": "2020-06-27T23:57:46+00:00" }, { "name": "guzzlehttp/psr7", @@ -1909,16 +1982,16 @@ }, { "name": "justinrainbow/json-schema", - "version": "5.2.9", + "version": "5.2.10", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4" + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/44c6787311242a979fa15c704327c20e7221a0e4", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", "shasum": "" }, "require": { @@ -1971,7 +2044,7 @@ "json", "schema" ], - "time": "2019-09-25T14:49:45+00:00" + "time": "2020-05-27T16:41:55+00:00" }, { "name": "kint-php/kint", @@ -2045,24 +2118,24 @@ }, { "name": "localheinz/diff", - "version": "1.0.1", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/localheinz/diff.git", - "reference": "bd5661db4bbed26c6f25df8851fd9f4b424a356e" + "reference": "851bb20ea8358c86f677f5f111c4ab031b1c764c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/localheinz/diff/zipball/bd5661db4bbed26c6f25df8851fd9f4b424a356e", - "reference": "bd5661db4bbed26c6f25df8851fd9f4b424a356e", + "url": "https://api.github.com/repos/localheinz/diff/zipball/851bb20ea8358c86f677f5f111c4ab031b1c764c", + "reference": "851bb20ea8358c86f677f5f111c4ab031b1c764c", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "require-dev": { "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" + "symfony/process": "^4.2 || ^5" }, "type": "library", "autoload": { @@ -2085,31 +2158,31 @@ } ], "description": "Fork of sebastian/diff for use with ergebnis/composer-normalize", - "homepage": "https://github.com/sebastianbergmann/diff", + "homepage": "https://github.com/localheinz/diff", "keywords": [ "diff", "udiff", "unidiff", "unified diff" ], - "time": "2019-12-17T07:42:37+00:00" + "time": "2020-07-06T04:49:32+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.9.5", + "version": "1.10.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" + "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", - "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", + "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "replace": { "myclabs/deep-copy": "self.version" @@ -2140,7 +2213,7 @@ "object", "object graph" ], - "time": "2020-01-17T21:11:47+00:00" + "time": "2020-06-29T13:22:24+00:00" }, { "name": "netresearch/jsonmapper", @@ -2190,16 +2263,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.4.0", + "version": "v4.10.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120" + "reference": "658f1be311a230e0907f5dfe0213742aff0596de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120", - "reference": "bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/658f1be311a230e0907f5dfe0213742aff0596de", + "reference": "658f1be311a230e0907f5dfe0213742aff0596de", "shasum": "" }, "require": { @@ -2207,8 +2280,8 @@ "php": ">=7.0" }, "require-dev": { - "ircmaxell/php-yacc": "0.0.5", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0" + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -2216,7 +2289,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.9-dev" } }, "autoload": { @@ -2238,7 +2311,7 @@ "parser", "php" ], - "time": "2020-04-10T16:34:50+00:00" + "time": "2020-09-26T10:30:38+00:00" }, { "name": "ocramius/package-versions", @@ -2386,28 +2459,29 @@ }, { "name": "phar-io/manifest", - "version": "1.0.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", "shasum": "" }, "require": { "ext-dom": "*", "ext-phar": "*", - "phar-io/version": "^2.0", - "php": "^5.6 || ^7.0" + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2437,24 +2511,24 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2018-07-08T19:23:20+00:00" + "time": "2020-06-27T14:33:11+00:00" }, { "name": "phar-io/version", - "version": "2.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + "reference": "c6bb6825def89e0a32220f88337f8ceaf1975fa0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "url": "https://api.github.com/repos/phar-io/version/zipball/c6bb6825def89e0a32220f88337f8ceaf1975fa0", + "reference": "c6bb6825def89e0a32220f88337f8ceaf1975fa0", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -2484,7 +2558,7 @@ } ], "description": "Library for handling version information and constraints", - "time": "2018-07-08T19:19:57+00:00" + "time": "2020-06-27T14:39:04+00:00" }, { "name": "php-cs-fixer/diff", @@ -2592,25 +2666,25 @@ }, { "name": "phpdocumentor/reflection-common", - "version": "2.1.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b" + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b", - "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "php": ">=7.1" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -2637,32 +2711,31 @@ "reflection", "static analysis" ], - "time": "2020-04-27T09:25:28+00:00" + "time": "2020-06-27T09:03:43+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.1.0", + "version": "5.2.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e" + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", - "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", "shasum": "" }, "require": { - "ext-filter": "^7.1", - "php": "^7.2", - "phpdocumentor/reflection-common": "^2.0", - "phpdocumentor/type-resolver": "^1.0", - "webmozart/assert": "^1" + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" }, "require-dev": { - "doctrine/instantiator": "^1", - "mockery/mockery": "^1" + "mockery/mockery": "~1.3.2" }, "type": "library", "extra": { @@ -2690,34 +2763,33 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2020-02-22T12:28:44+00:00" + "time": "2020-09-03T19:13:55+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.1.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "7462d5f123dfc080dfdf26897032a6513644fc95" + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95", - "reference": "7462d5f123dfc080dfdf26897032a6513644fc95", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", "shasum": "" }, "require": { - "php": "^7.2", + "php": "^7.2 || ^8.0", "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "ext-tokenizer": "^7.2", - "mockery/mockery": "~1" + "ext-tokenizer": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-1.x": "1.x-dev" } }, "autoload": { @@ -2736,37 +2808,37 @@ } ], "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2020-02-18T18:59:58+00:00" + "time": "2020-09-17T18:55:26+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.10.3", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "451c3cd1418cf640de218914901e51b064abb093" + "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", - "reference": "451c3cd1418cf640de218914901e51b064abb093", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/8ce87516be71aae9b956f81906aaf0338e0d8a2d", + "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.1", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" }, "require-dev": { - "phpspec/phpspec": "^2.5 || ^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + "phpspec/phpspec": "^6.0", + "phpunit/phpunit": "^8.0 || ^9.0 <9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.10.x-dev" + "dev-master": "1.11.x-dev" } }, "autoload": { @@ -2799,24 +2871,24 @@ "spy", "stub" ], - "time": "2020-03-05T15:02:03+00:00" + "time": "2020-09-29T09:10:42+00:00" }, { "name": "phpstan/phpstan", - "version": "0.12.25", + "version": "0.12.46", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "9619551d68b2d4c0d681a8df73f3c847c798ee64" + "reference": "9419738e20f0c49757be05d22969c1c44c1dff3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9619551d68b2d4c0d681a8df73f3c847c798ee64", - "reference": "9619551d68b2d4c0d681a8df73f3c847c798ee64", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9419738e20f0c49757be05d22969c1c44c1dff3b", + "reference": "9419738e20f0c49757be05d22969c1c44c1dff3b", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -2841,36 +2913,39 @@ "MIT" ], "description": "PHPStan - PHP Static Analysis Tool", - "time": "2020-05-10T20:36:16+00:00" + "time": "2020-09-28T09:48:55+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "8.0.2", + "version": "9.1.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ca6647ffddd2add025ab3f21644a441d7c146cdc" + "reference": "c9394cb9d07ecfa9351b96f2e296bad473195f4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca6647ffddd2add025ab3f21644a441d7c146cdc", - "reference": "ca6647ffddd2add025ab3f21644a441d7c146cdc", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c9394cb9d07ecfa9351b96f2e296bad473195f4d", + "reference": "c9394cb9d07ecfa9351b96f2e296bad473195f4d", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-xmlwriter": "*", - "php": "^7.3", - "phpunit/php-file-iterator": "^3.0", - "phpunit/php-text-template": "^2.0", - "phpunit/php-token-stream": "^4.0", - "sebastian/code-unit-reverse-lookup": "^2.0", - "sebastian/environment": "^5.0", - "sebastian/version": "^3.0", - "theseer/tokenizer": "^1.1.3" + "nikic/php-parser": "^4.8", + "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", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-pcov": "*", @@ -2879,7 +2954,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "8.0-dev" + "dev-master": "9.1-dev" } }, "autoload": { @@ -2905,27 +2980,27 @@ "testing", "xunit" ], - "time": "2020-05-23T08:02:54+00:00" + "time": "2020-09-19T05:29:17+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.1", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4" + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4", - "reference": "4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { @@ -2955,28 +3030,28 @@ "filesystem", "iterator" ], - "time": "2020-04-18T05:02:12+00:00" + "time": "2020-09-28T05:57:25+00:00" }, { "name": "phpunit/php-invoker", - "version": "3.0.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "7579d5a1ba7f3ac11c80004d205877911315ae7a" + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/7579d5a1ba7f3ac11c80004d205877911315ae7a", - "reference": "7579d5a1ba7f3ac11c80004d205877911315ae7a", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=7.3" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-pcntl": "*" @@ -2984,7 +3059,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -3008,24 +3083,27 @@ "keywords": [ "process" ], - "time": "2020-02-07T06:06:11+00:00" + "time": "2020-09-28T05:58:55+00:00" }, { "name": "phpunit/php-text-template", - "version": "2.0.0", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "526dc996cc0ebdfa428cd2dfccd79b7b53fee346" + "reference": "18c887016e60e52477e54534956d7b47bc52cd84" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/526dc996cc0ebdfa428cd2dfccd79b7b53fee346", - "reference": "526dc996cc0ebdfa428cd2dfccd79b7b53fee346", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/18c887016e60e52477e54534956d7b47bc52cd84", + "reference": "18c887016e60e52477e54534956d7b47bc52cd84", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { @@ -3054,32 +3132,32 @@ "keywords": [ "template" ], - "time": "2020-02-01T07:43:44+00:00" + "time": "2020-09-28T06:03:05+00:00" }, { "name": "phpunit/php-timer", - "version": "3.1.4", + "version": "5.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "dc9368fae6ef2ffa57eba80a7410bcef81df6258" + "reference": "c9ff14f493699e2f6adee9fd06a0245b276643b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/dc9368fae6ef2ffa57eba80a7410bcef81df6258", - "reference": "dc9368fae6ef2ffa57eba80a7410bcef81df6258", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/c9ff14f493699e2f6adee9fd06a0245b276643b7", + "reference": "c9ff14f493699e2f6adee9fd06a0245b276643b7", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -3103,103 +3181,55 @@ "keywords": [ "timer" ], - "time": "2020-04-20T06:00:37+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "4.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c", - "reference": "cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "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": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2020-05-06T09:56:31+00:00" + "time": "2020-09-28T06:00:25+00:00" }, { "name": "phpunit/phpunit", - "version": "9.1.5", + "version": "9.3.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "1b570cd7edbe136055bf5f651857dc8af6b829d2" + "reference": "f7316ea106df7c9507f4fdaa88c47bc10a3b27a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1b570cd7edbe136055bf5f651857dc8af6b829d2", - "reference": "1b570cd7edbe136055bf5f651857dc8af6b829d2", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f7316ea106df7c9507f4fdaa88c47bc10a3b27a1", + "reference": "f7316ea106df7c9507f4fdaa88c47bc10a3b27a1", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2.0", + "doctrine/instantiator": "^1.3.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.9.1", - "phar-io/manifest": "^1.0.3", - "phar-io/version": "^2.0.1", - "php": "^7.3", - "phpspec/prophecy": "^1.8.1", - "phpunit/php-code-coverage": "^8.0.1", - "phpunit/php-file-iterator": "^3.0", - "phpunit/php-invoker": "^3.0", - "phpunit/php-text-template": "^2.0", - "phpunit/php-timer": "^3.1.4", - "sebastian/code-unit": "^1.0.2", - "sebastian/comparator": "^4.0", - "sebastian/diff": "^4.0", - "sebastian/environment": "^5.0.1", - "sebastian/exporter": "^4.0", - "sebastian/global-state": "^4.0", - "sebastian/object-enumerator": "^4.0", - "sebastian/resource-operations": "^3.0", - "sebastian/type": "^2.0", - "sebastian/version": "^3.0" + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.1", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.11.1", + "phpunit/php-code-coverage": "^9.1.11", + "phpunit/php-file-iterator": "^3.0.4", + "phpunit/php-invoker": "^3.1", + "phpunit/php-text-template": "^2.0.2", + "phpunit/php-timer": "^5.0.1", + "sebastian/cli-parser": "^1.0", + "sebastian/code-unit": "^1.0.5", + "sebastian/comparator": "^4.0.3", + "sebastian/diff": "^4.0.2", + "sebastian/environment": "^5.1.2", + "sebastian/exporter": "^4.0.2", + "sebastian/global-state": "^5.0", + "sebastian/object-enumerator": "^4.0.2", + "sebastian/resource-operations": "^3.0.2", + "sebastian/type": "^2.2.1", + "sebastian/version": "^3.0.1" }, "require-dev": { "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0" + "phpspec/prophecy-phpunit": "^2.0.1" }, "suggest": { "ext-soap": "*", @@ -3211,7 +3241,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.1-dev" + "dev-master": "9.3-dev" } }, "autoload": { @@ -3240,7 +3270,7 @@ "testing", "xunit" ], - "time": "2020-05-22T13:54:05+00:00" + "time": "2020-09-24T08:08:49+00:00" }, { "name": "psr/event-dispatcher", @@ -3376,24 +3406,70 @@ "time": "2019-03-08T08:55:37+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", + "time": "2020-09-28T06:08:49+00:00" + }, + { "name": "sebastian/code-unit", - "version": "1.0.2", + "version": "1.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "ac958085bc19fcd1d36425c781ef4cbb5b06e2a5" + "reference": "d3a241b6028ff9d8e97d2b6ebd4090d01f92fad8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/ac958085bc19fcd1d36425c781ef4cbb5b06e2a5", - "reference": "ac958085bc19fcd1d36425c781ef4cbb5b06e2a5", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/d3a241b6028ff9d8e97d2b6ebd4090d01f92fad8", + "reference": "d3a241b6028ff9d8e97d2b6ebd4090d01f92fad8", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { @@ -3419,27 +3495,27 @@ ], "description": "Collection of value objects that represent the PHP code units", "homepage": "https://github.com/sebastianbergmann/code-unit", - "time": "2020-04-30T05:58:10+00:00" + "time": "2020-09-28T05:28:46+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.0", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "5b5dbe0044085ac41df47e79d34911a15b96d82e" + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5b5dbe0044085ac41df47e79d34911a15b96d82e", - "reference": "5b5dbe0044085ac41df47e79d34911a15b96d82e", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { @@ -3464,29 +3540,29 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2020-02-07T06:20:13+00:00" + "time": "2020-09-28T05:30:19+00:00" }, { "name": "sebastian/comparator", - "version": "4.0.0", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "85b3435da967696ed618ff745f32be3ff4a2b8e8" + "reference": "e717aabeafe4eac045d3e947dad3207118664c72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/85b3435da967696ed618ff745f32be3ff4a2b8e8", - "reference": "85b3435da967696ed618ff745f32be3ff4a2b8e8", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/e717aabeafe4eac045d3e947dad3207118664c72", + "reference": "e717aabeafe4eac045d3e947dad3207118664c72", "shasum": "" }, "require": { - "php": "^7.3", + "php": ">=7.3", "sebastian/diff": "^4.0", "sebastian/exporter": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { @@ -3528,27 +3604,74 @@ "compare", "equality" ], - "time": "2020-02-07T06:08:51+00:00" + "time": "2020-09-28T05:31:46+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "ba8cc2da0c0bfbc813d03b56406734030c7f1eff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ba8cc2da0c0bfbc813d03b56406734030c7f1eff", + "reference": "ba8cc2da0c0bfbc813d03b56406734030c7f1eff", + "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", + "time": "2020-09-28T06:05:03+00:00" }, { "name": "sebastian/diff", - "version": "4.0.1", + "version": "4.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3e523c576f29dacecff309f35e4cc5a5c168e78a" + "reference": "ffc949a1a2aae270ea064453d7535b82e4c32092" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3e523c576f29dacecff309f35e4cc5a5c168e78a", - "reference": "3e523c576f29dacecff309f35e4cc5a5c168e78a", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ffc949a1a2aae270ea064453d7535b82e4c32092", + "reference": "ffc949a1a2aae270ea064453d7535b82e4c32092", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.0", + "phpunit/phpunit": "^9.3", "symfony/process": "^4.2 || ^5" }, "type": "library", @@ -3584,27 +3707,27 @@ "unidiff", "unified diff" ], - "time": "2020-05-08T05:01:12+00:00" + "time": "2020-09-28T05:32:55+00:00" }, { "name": "sebastian/environment", - "version": "5.1.0", + "version": "5.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "c753f04d68cd489b6973cf9b4e505e191af3b05c" + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/c753f04d68cd489b6973cf9b4e505e191af3b05c", - "reference": "c753f04d68cd489b6973cf9b4e505e191af3b05c", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-posix": "*" @@ -3612,7 +3735,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -3637,29 +3760,29 @@ "environment", "hhvm" ], - "time": "2020-04-14T13:36:52+00:00" + "time": "2020-09-28T05:52:38+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.0", + "version": "4.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "80c26562e964016538f832f305b2286e1ec29566" + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/80c26562e964016538f832f305b2286e1ec29566", - "reference": "80c26562e964016538f832f305b2286e1ec29566", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", "shasum": "" }, "require": { - "php": "^7.3", + "php": ">=7.3", "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { @@ -3704,30 +3827,30 @@ "export", "exporter" ], - "time": "2020-02-07T06:10:52+00:00" + "time": "2020-09-28T05:24:23+00:00" }, { "name": "sebastian/global-state", - "version": "4.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bdb1e7c79e592b8c82cb1699be3c8743119b8a72" + "reference": "ea779cb749a478b22a2564ac41cd7bda79c78dc7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bdb1e7c79e592b8c82cb1699be3c8743119b8a72", - "reference": "bdb1e7c79e592b8c82cb1699be3c8743119b8a72", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ea779cb749a478b22a2564ac41cd7bda79c78dc7", + "reference": "ea779cb749a478b22a2564ac41cd7bda79c78dc7", "shasum": "" }, "require": { - "php": "^7.3", + "php": ">=7.3", "sebastian/object-reflector": "^2.0", "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-uopz": "*" @@ -3735,7 +3858,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -3758,29 +3881,76 @@ "keywords": [ "global state" ], - "time": "2020-02-07T06:11:37+00:00" + "time": "2020-09-28T05:54:06+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "6514b8f21906b8b46f520d1fbd17a4523fa59a54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/6514b8f21906b8b46f520d1fbd17a4523fa59a54", + "reference": "6514b8f21906b8b46f520d1fbd17a4523fa59a54", + "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", + "time": "2020-09-28T06:07:27+00:00" }, { "name": "sebastian/object-enumerator", - "version": "4.0.0", + "version": "4.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "e67516b175550abad905dc952f43285957ef4363" + "reference": "f6f5957013d84725427d361507e13513702888a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67516b175550abad905dc952f43285957ef4363", - "reference": "e67516b175550abad905dc952f43285957ef4363", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f6f5957013d84725427d361507e13513702888a4", + "reference": "f6f5957013d84725427d361507e13513702888a4", "shasum": "" }, "require": { - "php": "^7.3", + "php": ">=7.3", "sebastian/object-reflector": "^2.0", "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { @@ -3805,27 +3975,27 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2020-02-07T06:12:23+00:00" + "time": "2020-09-28T05:55:06+00:00" }, { "name": "sebastian/object-reflector", - "version": "2.0.0", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "f4fd0835cabb0d4a6546d9fe291e5740037aa1e7" + "reference": "d9d0ab3b12acb1768bc1e0a89b23c90d2043cbe5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/f4fd0835cabb0d4a6546d9fe291e5740037aa1e7", - "reference": "f4fd0835cabb0d4a6546d9fe291e5740037aa1e7", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/d9d0ab3b12acb1768bc1e0a89b23c90d2043cbe5", + "reference": "d9d0ab3b12acb1768bc1e0a89b23c90d2043cbe5", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { @@ -3850,27 +4020,27 @@ ], "description": "Allows reflection of object attributes, including inherited and non-public ones", "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2020-02-07T06:19:40+00:00" + "time": "2020-09-28T05:56:16+00:00" }, { "name": "sebastian/recursion-context", - "version": "4.0.0", + "version": "4.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cdd86616411fc3062368b720b0425de10bd3d579" + "reference": "ed8c9cd355089134bc9cba421b5cfdd58f0eaef7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cdd86616411fc3062368b720b0425de10bd3d579", - "reference": "cdd86616411fc3062368b720b0425de10bd3d579", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/ed8c9cd355089134bc9cba421b5cfdd58f0eaef7", + "reference": "ed8c9cd355089134bc9cba421b5cfdd58f0eaef7", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { @@ -3903,24 +4073,24 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2020-02-07T06:18:20+00:00" + "time": "2020-09-28T05:17:32+00:00" }, { "name": "sebastian/resource-operations", - "version": "3.0.0", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98" + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98", - "reference": "8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=7.3" }, "require-dev": { "phpunit/phpunit": "^9.0" @@ -3948,32 +4118,32 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2020-02-07T06:13:02+00:00" + "time": "2020-09-28T06:45:17+00:00" }, { "name": "sebastian/type", - "version": "2.0.0", + "version": "2.2.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "9e8f42f740afdea51f5f4e8cec2035580e797ee1" + "reference": "e494dcaeb89d1458c9ccd8c819745245a1669aea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/9e8f42f740afdea51f5f4e8cec2035580e797ee1", - "reference": "9e8f42f740afdea51f5f4e8cec2035580e797ee1", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/e494dcaeb89d1458c9ccd8c819745245a1669aea", + "reference": "e494dcaeb89d1458c9ccd8c819745245a1669aea", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.2-dev" } }, "autoload": { @@ -3994,24 +4164,24 @@ ], "description": "Collection of value objects that represent the types of the PHP type system", "homepage": "https://github.com/sebastianbergmann/type", - "time": "2020-02-07T06:13:43+00:00" + "time": "2020-09-28T06:01:38+00:00" }, { "name": "sebastian/version", - "version": "3.0.0", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "0411bde656dce64202b39c2f4473993a9081d39e" + "reference": "c6c1022351a901512170118436c764e473f6de8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/0411bde656dce64202b39c2f4473993a9081d39e", - "reference": "0411bde656dce64202b39c2f4473993a9081d39e", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=7.3" }, "type": "library", "extra": { @@ -4037,102 +4207,33 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2020-01-21T06:36:37+00:00" - }, - { - "name": "simpletest/simpletest", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/simpletest/simpletest.git", - "reference": "4fb6006517a1428785a0ea704fbedcc675421ec4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simpletest/simpletest/zipball/4fb6006517a1428785a0ea704fbedcc675421ec4", - "reference": "4fb6006517a1428785a0ea704fbedcc675421ec4", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "type": "library", - "autoload": { - "classmap": [ - "." - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.0+" - ], - "authors": [ - { - "name": "Marcus Baker", - "email": "marcus@lastcraft.com", - "role": "Original project lead" - }, - { - "name": "Jason Sweat", - "role": "Original developer" - }, - { - "name": "Travis Swicegood", - "role": "Original developer" - }, - { - "name": "Perrick Penet", - "role": "Original developer" - }, - { - "name": "Edward Z. Yang", - "role": "Original developer" - }, - { - "name": "Lachlan Donald", - "email": "lachlan@ljd.cc" - }, - { - "name": "Lars Vierbergen", - "email": "vierbergenlars@gmail.com" - }, - { - "name": "Jens A. Koch" - } - ], - "description": "Unit testing, mock objects and web testing framework for PHP built around test cases.", - "homepage": "http://simpletest.org/", - "keywords": [ - "SimpleTest", - "code-coverage", - "selenium", - "testing", - "unit-test" - ], - "time": "2019-09-17T15:08:22+00:00" + "time": "2020-09-28T06:39:44+00:00" }, { "name": "symfony/console", - "version": "v5.0.8", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "5fa1caadc8cdaa17bcfb25219f3b53fe294a9935" + "reference": "04c3a31fe8ea94b42c9e2d1acc93d19782133b00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/5fa1caadc8cdaa17bcfb25219f3b53fe294a9935", - "reference": "5fa1caadc8cdaa17bcfb25219f3b53fe294a9935", + "url": "https://api.github.com/repos/symfony/console/zipball/04c3a31fe8ea94b42c9e2d1acc93d19782133b00", + "reference": "04c3a31fe8ea94b42c9e2d1acc93d19782133b00", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php73": "^1.8", - "symfony/service-contracts": "^1.1|^2" + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2", + "symfony/string": "^5.1" }, "conflict": { "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", "symfony/event-dispatcher": "<4.4", "symfony/lock": "<4.4", "symfony/process": "<4.4" @@ -4158,7 +4259,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4185,29 +4286,29 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2020-03-30T11:42:42+00:00" + "time": "2020-09-18T14:27:32+00:00" }, { "name": "symfony/css-selector", - "version": "v5.0.8", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "5f8d5271303dad260692ba73dfa21777d38e124e" + "reference": "e544e24472d4c97b2d11ade7caacd446727c6bf9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/5f8d5271303dad260692ba73dfa21777d38e124e", - "reference": "5f8d5271303dad260692ba73dfa21777d38e124e", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/e544e24472d4c97b2d11ade7caacd446727c6bf9", + "reference": "e544e24472d4c97b2d11ade7caacd446727c6bf9", "shasum": "" }, "require": { - "php": "^7.2.5" + "php": ">=7.2.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4238,25 +4339,27 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2020-03-27T16:56:45+00:00" + "time": "2020-05-20T17:43:50+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.0.8", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "24f40d95385774ed5c71dbf014edd047e2f2f3dc" + "reference": "d5de97d6af175a9e8131c546db054ca32842dd0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/24f40d95385774ed5c71dbf014edd047e2f2f3dc", - "reference": "24f40d95385774ed5c71dbf014edd047e2f2f3dc", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d5de97d6af175a9e8131c546db054ca32842dd0f", + "reference": "d5de97d6af175a9e8131c546db054ca32842dd0f", "shasum": "" }, "require": { - "php": "^7.2.5", - "symfony/event-dispatcher-contracts": "^2" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher-contracts": "^2", + "symfony/polyfill-php80": "^1.15" }, "conflict": { "symfony/dependency-injection": "<4.4" @@ -4269,6 +4372,7 @@ "psr/log": "~1.0", "symfony/config": "^4.4|^5.0", "symfony/dependency-injection": "^4.4|^5.0", + "symfony/error-handler": "^4.4|^5.0", "symfony/expression-language": "^4.4|^5.0", "symfony/http-foundation": "^4.4|^5.0", "symfony/service-contracts": "^1.1|^2", @@ -4281,7 +4385,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4308,24 +4412,24 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2020-03-27T16:56:45+00:00" + "time": "2020-09-18T14:27:32+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v2.0.1", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "af23c2584d4577d54661c434446fb8fbed6025dd" + "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/af23c2584d4577d54661c434446fb8fbed6025dd", - "reference": "af23c2584d4577d54661c434446fb8fbed6025dd", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ba7d54483095a198fa51781bc608d17e84dffa2", + "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", "psr/event-dispatcher": "^1" }, "suggest": { @@ -4334,7 +4438,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -4366,30 +4474,30 @@ "interoperability", "standards" ], - "time": "2019-11-18T17:27:11+00:00" + "time": "2020-09-07T11:33:47+00:00" }, { "name": "symfony/filesystem", - "version": "v5.0.8", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "7cd0dafc4353a0f62e307df90b48466379c8cc91" + "reference": "f3194303d3077829dbbc1d18f50288b2a01146f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/7cd0dafc4353a0f62e307df90b48466379c8cc91", - "reference": "7cd0dafc4353a0f62e307df90b48466379c8cc91", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/f3194303d3077829dbbc1d18f50288b2a01146f2", + "reference": "f3194303d3077829dbbc1d18f50288b2a01146f2", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4416,29 +4524,29 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2020-04-12T14:40:17+00:00" + "time": "2020-09-02T16:23:27+00:00" }, { "name": "symfony/finder", - "version": "v5.0.8", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "600a52c29afc0d1caa74acbec8d3095ca7e9910d" + "reference": "2c3ba7ad6884e6c4451ce2340e2dc23f6fa3e0d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/600a52c29afc0d1caa74acbec8d3095ca7e9910d", - "reference": "600a52c29afc0d1caa74acbec8d3095ca7e9910d", + "url": "https://api.github.com/repos/symfony/finder/zipball/2c3ba7ad6884e6c4451ce2340e2dc23f6fa3e0d8", + "reference": "2c3ba7ad6884e6c4451ce2340e2dc23f6fa3e0d8", "shasum": "" }, "require": { - "php": "^7.2.5" + "php": ">=7.2.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4465,29 +4573,31 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2020-03-27T16:56:45+00:00" + "time": "2020-09-02T16:23:27+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.0.8", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "3707e3caeff2b797c0bfaadd5eba723dd44e6bf1" + "reference": "4c7e155bf7d93ea4ba3824d5a14476694a5278dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/3707e3caeff2b797c0bfaadd5eba723dd44e6bf1", - "reference": "3707e3caeff2b797c0bfaadd5eba723dd44e6bf1", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4c7e155bf7d93ea4ba3824d5a14476694a5278dd", + "reference": "4c7e155bf7d93ea4ba3824d5a14476694a5278dd", "shasum": "" }, "require": { - "php": "^7.2.5" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.15" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4519,20 +4629,151 @@ "configuration", "options" ], - "time": "2020-04-06T10:40:56+00:00" + "time": "2020-09-27T03:44:28+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.18.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b740103edbdcc39602239ee8860f0f45a8eb9aa5", + "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "files": [ + "bootstrap.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": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "time": "2020-07-14T12:35:20+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.18.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", + "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], + "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" + ], + "time": "2020-07-14T12:35:20+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.17.0", + "version": "v1.18.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "fa79b11539418b02fc5e1897267673ba2c19419c" + "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c", - "reference": "fa79b11539418b02fc5e1897267673ba2c19419c", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", + "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", "shasum": "" }, "require": { @@ -4544,7 +4785,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.17-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -4578,20 +4823,20 @@ "portable", "shim" ], - "time": "2020-05-12T16:47:27+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { "name": "symfony/polyfill-php70", - "version": "v1.17.0", + "version": "v1.18.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "82225c2d7d23d7e70515496d249c0152679b468e" + "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/82225c2d7d23d7e70515496d249c0152679b468e", - "reference": "82225c2d7d23d7e70515496d249c0152679b468e", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", + "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", "shasum": "" }, "require": { @@ -4601,7 +4846,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.17-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -4637,20 +4886,20 @@ "portable", "shim" ], - "time": "2020-05-12T16:47:27+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.17.0", + "version": "v1.18.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "f048e612a3905f34931127360bdd2def19a5e582" + "reference": "639447d008615574653fb3bc60d1986d7172eaae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582", - "reference": "f048e612a3905f34931127360bdd2def19a5e582", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae", + "reference": "639447d008615574653fb3bc60d1986d7172eaae", "shasum": "" }, "require": { @@ -4659,7 +4908,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.17-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -4692,20 +4945,20 @@ "portable", "shim" ], - "time": "2020-05-12T16:47:27+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.17.0", + "version": "v1.18.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc" + "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a760d8964ff79ab9bf057613a5808284ec852ccc", - "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca", + "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca", "shasum": "" }, "require": { @@ -4714,7 +4967,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.17-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -4750,29 +5007,96 @@ "portable", "shim" ], - "time": "2020-05-12T16:47:27+00:00" + "time": "2020-07-14T12:35:20+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.18.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981", + "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981", + "shasum": "" + }, + "require": { + "php": ">=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "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" + ], + "time": "2020-07-14T12:35:20+00:00" }, { "name": "symfony/process", - "version": "v5.0.8", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "3179f68dff5bad14d38c4114a1dab98030801fd7" + "reference": "d3a2e64866169586502f0cd9cab69135ad12cee9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/3179f68dff5bad14d38c4114a1dab98030801fd7", - "reference": "3179f68dff5bad14d38c4114a1dab98030801fd7", + "url": "https://api.github.com/repos/symfony/process/zipball/d3a2e64866169586502f0cd9cab69135ad12cee9", + "reference": "d3a2e64866169586502f0cd9cab69135ad12cee9", "shasum": "" }, "require": { - "php": "^7.2.5" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4799,24 +5123,24 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2020-04-15T15:59:10+00:00" + "time": "2020-09-02T16:23:27+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.0.1", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "144c5e51266b281231e947b51223ba14acf1a749" + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", - "reference": "144c5e51266b281231e947b51223ba14acf1a749", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", "psr/container": "^1.0" }, "suggest": { @@ -4825,7 +5149,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -4857,30 +5185,30 @@ "interoperability", "standards" ], - "time": "2019-11-18T17:27:11+00:00" + "time": "2020-09-07T11:33:47+00:00" }, { "name": "symfony/stopwatch", - "version": "v5.0.8", + "version": "v5.1.6", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "a1d86d30d4522423afc998f32404efa34fcf5a73" + "reference": "0f7c58cf81dbb5dd67d423a89d577524a2ec0323" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/a1d86d30d4522423afc998f32404efa34fcf5a73", - "reference": "a1d86d30d4522423afc998f32404efa34fcf5a73", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/0f7c58cf81dbb5dd67d423a89d577524a2ec0323", + "reference": "0f7c58cf81dbb5dd67d423a89d577524a2ec0323", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", "symfony/service-contracts": "^1.0|^2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4907,27 +5235,98 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2020-03-27T16:56:45+00:00" + "time": "2020-05-20T17:43:50+00:00" + }, + { + "name": "symfony/string", + "version": "v5.1.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "4a9afe9d07bac506f75bcee8ed3ce76da5a9343e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/4a9afe9d07bac506f75bcee8ed3ce76da5a9343e", + "reference": "4a9afe9d07bac506f75bcee8ed3ce76da5a9343e", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "files": [ + "Resources/functions.php" + ], + "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": "Symfony String component", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "time": "2020-09-15T12:23:47+00:00" }, { "name": "theseer/tokenizer", - "version": "1.1.3", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" + "reference": "75a63c33a8577608444246075ea0af0d052e452a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", + "reference": "75a63c33a8577608444246075ea0af0d052e452a", "shasum": "" }, "require": { "ext-dom": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": "^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -4947,7 +5346,7 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2019-06-13T22:48:21+00:00" + "time": "2020-07-12T23:59:07+00:00" }, { "name": "vimeo/psalm", @@ -5047,23 +5446,24 @@ }, { "name": "webmozart/assert", - "version": "1.8.0", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6" + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/ab2cb0b3b559010b75981b1bdce728da3ee90ad6", - "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6", + "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0", + "php": "^5.3.3 || ^7.0 || ^8.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { + "phpstan/phpstan": "<0.12.20", "vimeo/psalm": "<3.9.1" }, "require-dev": { @@ -5091,7 +5491,7 @@ "check", "validate" ], - "time": "2020-04-18T12:12:48+00:00" + "time": "2020-07-08T17:02:28+00:00" }, { "name": "webmozart/glob", @@ -5194,7 +5594,11 @@ "prefer-lowest": false, "platform": { "php": ">=7.1", - "ext-pgsql": "*" + "ext-json": "*", + "ext-mbstring": "*", + "ext-pgsql": "*", + "ext-xml": "*" }, - "platform-dev": [] + "platform-dev": [], + "plugin-api-version": "1.1.0" } diff --git a/mk_linters.mk b/mk_linters.mk index 03373b14..8982be00 100644 --- a/mk_linters.mk +++ b/mk_linters.mk @@ -21,7 +21,7 @@ csfixer: echo "XDEBUG was: "$(XDSWI_STATUS) ;\ ${MAKE} disable_xdebug --no-print-directory ;\ mkdir -p .build/php-cs-fixer ;\ - vendor/bin/php-cs-fixer fix --config=.php_cs.php --diff --diff-format=udiff --dry-run --verbose ;\ + vendor/bin/php-cs-fixer fix --config=.php_cs.php --verbose ;\ ${MAKE} enable_xdebug new_status=$(XDSWI_STATUS) --no-print-directory;\ else \ echo -e "$(GREEN)php-cs-fixer$(WHITE) is $(RED)NOT$(WHITE) installed. " ;\ @@ -55,43 +55,36 @@ phpmd: psalm: - @${MAKE} disable_xdebug --no-print-directory - @if [ ! -f "vendor/bin/psalm" ]; then \ - echo -e "$(GREEN)psalm$(WHITE) is $(RED)NOT$(WHITE) installed. " ;\ - echo -e "Install it with $(GREEN)composer require --dev vimeo/psalm$(WHITE)" ;\ - exit 0 ;\ - fi - + @${MAKE} abort_suggesting_composer executable=vendor/bin/psalm package_name=vimeo/psalm --no-print-directory @mkdir -p .build/psalm ;\ - vendor/bin/psalm --show-info=false --long-progress --threads=2 --config=psalm.xml | tee temp/psalm.output.txt - @${MAKE} enable_xdebug new_status=$(XDSWI_STATUS) --no-print-directory ;\ + echo -e "Running:" + echo -e "$(GREEN)vendor/bin/psalm$(GREEN) --show-info=false --long-progress --threads=2 --config=psalm.xml " + + @vendor/bin/psalm --show-info=false --long-progress --threads=2 --config=psalm.xml echo "" -phpstan: - @${MAKE} disable_xdebug --no-print-directory - @if [ ! -f "vendor/bin/phpstan" ]; then \ - echo -e "$(GREEN)phpstan$(WHITE) is $(RED)NOT$(WHITE) installed. " ;\ - echo -e "Install it with $(GREEN)composer require --dev phpstan/phpstan$(WHITE)" ;\ - exit 0 ;\ +abort_suggesting_composer: + @if [ "0" != "$(XDSWI_STATUS)" ]; then \ + $(YELLOW)Warn: $(GREEN)xdebug$(WHITE) is enabled. Just saying... ;\ fi - + @if [ ! -f "$(executable)" ]; then \ + echo -e "$(GREEN)$(package_name)$(WHITE) $(RED)NOT FOUND$(WHITE) on $(CYAN)$(executable)$(WHITE). " ;\ + echo -e "Install it with $(GREEN)composer require --dev$(package_name)$(WHITE)" ;\ + exit 1 ;\ + fi + +phpstan: + @${MAKE} abort_suggesting_composer executable=vendor/bin/phpstan package_name=phpstan/phpstan --no-print-directory @mkdir -p .build/phpstan ;\ - ./vendor/bin/phpstan analyse --memory-limit=2G --configuration phpstan.neon | tee temp/phpstan.output.txt - @${MAKE} enable_xdebug new_status=$(XDSWI_STATUS) --no-print-directory ;\ + echo -e "Running:" ;\ + echo -e "$(GREEN)vendor/bin/phpstan$(GREEN) analyse --memory-limit=2G --configuration phpstan.neon " + ./vendor/bin/phpstan analyse --memory-limit=2G --configuration phpstan.neon echo "" lint: - @if [ -f "vendor/bin/parallel-lint" ]; then \ - mkdir -p .build/parallel ;\ - ${MAKE} disable_xdebug --no-print-directory ;\ - vendor/bin/parallel-lint --ignore-fails --exclude vendor src ;\ - ${MAKE} enable_xdebug new_status=$(XDSWI_STATUS) --no-print-directory;\ - else \ - echo -e "$(GREEN)parallel-lint$(WHITE) is $(RED)NOT$(WHITE) installed. " ;\ - echo -e "Install it with $(GREEN)composer require --dev php-parallel-lint/php-parallel-lint$(WHITE)" ;\ - fi - @find ./src -name \*.php -print0 | xargs -0 -n 1 php -l - @echo "" + @${MAKE} abort_suggesting_composer executable=vendor/bin/parallel-lint package_name=php-parallel-lint/php-parallel-lint --no-print-directory + mkdir -p .build/parallel ;\ + vendor/bin/parallel-lint --ignore-fails --exclude vendor src update_baselines: @${MAKE} disable_xdebug --no-print-directory ;\ @@ -102,7 +95,7 @@ update_baselines: ${MAKE} enable_xdebug new_status=$(XDSWI_STATUS) --no-print-directory -fixers: lint csfixer dependency-analysis phpmd psalm phpstan +fixers: phpmd psalm phpstan diff --git a/package.json b/package.json index e64c96ea..a1ce5fa3 100644 --- a/package.json +++ b/package.json @@ -13,16 +13,14 @@ }, "devDependencies": { "@types/jquery": "^3.5.1", - "@typescript-eslint/eslint-plugin": "^4.3.0", - "@typescript-eslint/parser": "^4.3.0", "babel-eslint": "^10.1.0", - "eslint": "^7.10.0", - "eslint-config-prettier": "^6.12.0", + "eslint": "^7.8.1", + "eslint-config-prettier": "^6.11.0", "eslint-plugin-prettier": "^3.1.4", "lessc": "^1.0.2", "melody-idom": "^1.7.5", "melody-runtime": "^1.7.5", - "prettier": "^2.1.2", + "prettier": "^2.1.1", "prettier-plugin-twig-melody": "^0.4.6", "tslib": "^2.0.1", "typescript": "^4.0.3" diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 562e18f0..955c5fc6 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1,33 +1,757 @@ parameters: ignoreErrors: + - + message: "#^Method PHPPgAdmin\\\\Connection\\:\\:getDriver\\(\\) should return string but returns null\\.$#" + count: 2 + path: src/classes/Connection.php + + - + message: "#^Property PHPPgAdmin\\\\Connection\\:\\:\\$driver \\(string\\) does not accept null\\.$#" + count: 1 + path: src/classes/Connection.php + + - + message: "#^Call to method setFetchMode\\(\\) on an unknown class the\\.$#" + count: 2 + path: src/classes/Connection.php + + - + message: "#^Call to method connect\\(\\) on an unknown class the\\.$#" + count: 2 + path: src/classes/Connection.php + + - + message: "#^Method PHPPgAdmin\\\\Connection\\:\\:getPG9Connection\\(\\) should return ADODB_postgres9 but returns the\\.$#" + count: 1 + path: src/classes/Connection.php + + - + message: "#^Method PHPPgAdmin\\\\Connection\\:\\:getPDOConnection\\(\\) should return ADODB_pdo but returns the\\.$#" + count: 1 + path: src/classes/Connection.php + + - + message: "#^Access to an undefined property PHPPgAdmin\\\\ContainerUtils\\:\\:\\$container\\.$#" + count: 2 + path: src/classes/ContainerUtils.php + + - + message: "#^Unsafe usage of new static\\(\\)\\.$#" + count: 1 + path: src/classes/ContainerUtils.php + + - + message: "#^Access to an undefined property PHPPgAdmin\\\\ContainerUtils\\:\\:\\$misc\\.$#" + count: 2 + path: src/classes/ContainerUtils.php + + - + message: "#^Method PHPPgAdmin\\\\ContainerUtils\\:\\:getRedirectUrl\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 1 + path: src/classes/ContainerUtils.php + + - + message: "#^Access to an undefined property PHPPgAdmin\\\\ContainerUtils\\:\\:\\$THEME_PATH\\.$#" + count: 1 + path: src/classes/ContainerUtils.php + + - + message: "#^Access to an undefined property PHPPgAdmin\\\\ContainerUtils\\:\\:\\$subfolder\\.$#" + count: 1 + path: src/classes/ContainerUtils.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$misc\\.$#" + count: 1 + path: src/classes/ContainerUtils.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$settings\\.$#" + count: 1 + path: src/classes/ContainerUtilsOld.php + + - + message: "#^Property PHPPgAdmin\\\\ContainerUtilsOld\\:\\:\\$container \\(Slim\\\\Container\\) does not accept Psr\\\\Container\\\\ContainerInterface\\.$#" + count: 1 + path: src/classes/ContainerUtilsOld.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$requestobj\\.$#" + count: 2 + path: src/classes/ContainerUtilsOld.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$flash\\.$#" + count: 1 + path: src/classes/ContainerUtilsOld.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$misc\\.$#" + count: 3 + path: src/classes/ContainerUtilsOld.php + + - + message: "#^Method PHPPgAdmin\\\\ContainerUtilsOld\\:\\:getRedirectUrl\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 1 + path: src/classes/ContainerUtilsOld.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$BASE_PATH\\.$#" + count: 1 + path: src/classes/ContainerUtilsOld.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 1 + path: src/classes/ContainerUtilsOld.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$DEBUGMODE\\.$#" + count: 1 + path: src/classes/ContainerUtilsOld.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$THEME_PATH\\.$#" + count: 1 + path: src/classes/ContainerUtilsOld.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$IN_TEST\\.$#" + count: 1 + path: src/classes/ContainerUtilsOld.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$subfolder\\.$#" + count: 2 + path: src/classes/ContainerUtilsOld.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$requestobj\\.$#" + count: 2 + path: src/classes/Misc.php + + - + message: "#^Call to an undefined method Slim\\\\Container\\:\\:addError\\(\\)\\.$#" + count: 3 + path: src/classes/Misc.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$server\\.$#" + count: 2 + path: src/classes/Misc.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$database\\.$#" + count: 2 + path: src/classes/Misc.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$schema\\.$#" + count: 1 + path: src/classes/Misc.php + + - + message: "#^Method PHPPgAdmin\\\\Misc\\:\\:escapeShellArg\\(\\) should return string\\|null but returns void\\.$#" + count: 1 + path: src/classes/Misc.php + + - + message: "#^Result of method PHPPgAdmin\\\\Misc\\:\\:halt\\(\\) \\(void\\) is used\\.$#" + count: 1 + path: src/classes/Misc.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$subfolder\\.$#" + count: 1 + path: src/classes/Misc.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 5 + path: src/classes/Misc.php + + - + message: "#^Call to an undefined method PHPPgAdmin\\\\Database\\\\ADOdbBase\\:\\:isSuperUser\\(\\)\\.$#" + count: 1 + path: src/classes/Misc.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 8 + path: src/classes/ViewManager.php + + - + message: "#^Method PHPPgAdmin\\\\ViewManager\\:\\:maybeRenderIframes\\(\\) should return Slim\\\\Http\\\\Response but returns Psr\\\\Http\\\\Message\\\\ResponseInterface\\.$#" + count: 1 + path: src/classes/ViewManager.php -# - -# message: "#^Offset '[a-zA-Z0-9_]+' does not exist on array[.*].$#" -# path: src/* - - message: "#^PHPDoc tag @param references unknown parameter\\: \\$[a-zA-Z0-9_]+$#" - path: src/* + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$server\\.$#" + count: 1 + path: src/classes/ViewManager.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$database\\.$#" + count: 1 + path: src/classes/ViewManager.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$schema\\.$#" + count: 1 + path: src/classes/ViewManager.php + - - message: "#^Access to an undefined property Psr\\\\[a-zA-Z0-9_]+\\\\[a-zA-Z0-9_]+\\:\\:\\$[a-zA-Z0-9_]+\\.$#" - path: src/* + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$BASE_PATH\\.$#" + count: 6 + path: src/classes/ViewManager.php - - message: "#^Access to an undefined property PHPPgAdmin\\\\[a-zA-Z0-9_]+\\\\[a-zA-Z0-9_]+\\:\\:\\$[a-zA-Z0-9_]+\\.$#" - path: src/* + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$THEME_PATH\\.$#" + count: 2 + path: src/classes/ViewManager.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$subfolder\\.$#" + count: 1 + path: src/classes/ViewManager.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 3 + path: src/controllers/AggregatesController.php + - - message: "#^Result of method PHPPgAdmin\\\\[a-zA-Z0-9_]+\\\\[a-zA-Z0-9_]+\\:\\:[a-zA-Z0-9_]+\\(\\) \\(void\\) is used\\.$#" - path: src/* + message: "#^Call to an undefined method Slim\\\\Container\\:\\:getDestinationWithLastTab\\(\\)\\.$#" + count: 1 + path: src/controllers/AlldbController.php - - - message: "#^Call to static method br2ln\\(\\) on trait PHPPgAdmin\\Traits\\HelperTrait\\.#" - path: src/* + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 5 + path: src/controllers/AlldbController.php + + - + message: "#^Method PHPPgAdmin\\\\Controller\\\\BaseController\\:\\:__construct\\(\\) with return type void returns string\\|void but should not return anything\\.$#" + count: 2 + path: src/controllers/BaseController.php + + - + message: "#^Call to static method br2ln\\(\\) on trait PHPPgAdmin\\\\Traits\\\\HelperTrait\\.$#" + count: 1 + path: src/controllers/BaseController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$subfolder\\.$#" + count: 1 + path: src/controllers/BaseController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 2 + path: src/controllers/ColpropertiesController.php + + - + message: "#^Call to an undefined method PHPPgAdmin\\\\Controller\\\\ConstraintsController\\:\\:doTree\\(\\)\\.$#" + count: 1 + path: src/controllers/ConstraintsController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 2 + path: src/controllers/ConstraintsController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 36 + path: src/controllers/DatabaseController.php + + - + message: "#^Call to an undefined method Slim\\\\Container\\:\\:getDestinationWithLastTab\\(\\)\\.$#" + count: 16 + path: src/controllers/DatabaseController.php + + - + message: "#^Call to sprintf contains 2 placeholders, 3 values given\\.$#" + count: 1 + path: src/controllers/DatabaseController.php + + - + message: "#^Cannot unset offset 'vars' on array\\('content' \\=\\> mixed, 'attr' \\=\\> array\\('href' \\=\\> array\\('url' \\=\\> mixed, 'urlvars' \\=\\> array\\('subject' \\=\\> mixed, 'action' \\=\\> 'confeditautovac', 'schema' \\=\\> mixed, 'table' \\=\\> mixed\\)\\)\\)\\)\\.$#" + count: 1 + path: src/controllers/DatabaseController.php + + - + message: "#^Offset 'vars' does not exist on array\\('content' \\=\\> mixed, 'attr' \\=\\> array\\('href' \\=\\> array\\('url' \\=\\> mixed, 'urlvars' \\=\\> array\\('subject' \\=\\> mixed, 'action' \\=\\> 'confeditautovac', 'schema' \\=\\> mixed, 'table' \\=\\> mixed\\)\\)\\)\\)\\.$#" + count: 1 + path: src/controllers/DatabaseController.php + + - + message: "#^Cannot unset offset 'vars' on array\\('content' \\=\\> mixed, 'attr' \\=\\> array\\('href' \\=\\> array\\('url' \\=\\> mixed, 'urlvars' \\=\\> array\\('subject' \\=\\> mixed, 'action' \\=\\> 'confdelautovac', 'schema' \\=\\> mixed, 'table' \\=\\> mixed\\)\\)\\)\\)\\.$#" + count: 1 + path: src/controllers/DatabaseController.php + + - + message: "#^Offset 'vars' does not exist on array\\('content' \\=\\> mixed, 'attr' \\=\\> array\\('href' \\=\\> array\\('url' \\=\\> mixed, 'urlvars' \\=\\> array\\('subject' \\=\\> mixed, 'action' \\=\\> 'confdelautovac', 'schema' \\=\\> mixed, 'table' \\=\\> mixed\\)\\)\\)\\)\\.$#" + count: 1 + path: src/controllers/DatabaseController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 1 + path: src/controllers/DataexportController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$responseobj\\.$#" + count: 1 + path: src/controllers/DataexportController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$responseobj\\.$#" + count: 1 + path: src/controllers/DbexportController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 6 + path: src/controllers/DisplayController.php + + - + message: "#^Offset 'subject' does not exist on array\\('server' \\=\\> mixed, 'database' \\=\\> mixed, 'schema' \\=\\> mixed, 'query' \\=\\> mixed, 'count' \\=\\> mixed, 'return' \\=\\> mixed, 'search_path' \\=\\> mixed, 'table' \\=\\> mixed, \\.\\.\\.\\)\\.$#" + count: 1 + path: src/controllers/DisplayController.php + + - + message: "#^Offset 'schema' does not exist on array\\('server' \\=\\> mixed, 'database' \\=\\> mixed\\)\\.$#" + count: 1 + path: src/controllers/DisplayController.php + + - + message: "#^Offset 'search_path' does not exist on array\\(\\)\\.$#" + count: 1 + path: src/controllers/DisplayController.php + + - + message: "#^Variable \\$subject in isset\\(\\) always exists and is not nullable\\.$#" + count: 1 + path: src/controllers/DisplayController.php + + - + message: "#^Access to property \\$name on an unknown class the\\.$#" + count: 2 + path: src/controllers/DisplayController.php + + - + message: "#^Access to property \\$type on an unknown class the\\.$#" + count: 1 + path: src/controllers/DisplayController.php + + - + message: "#^Parameter \\#1 \\(void\\) of echo cannot be converted to string\\.$#" + count: 1 + path: src/controllers/DisplayController.php + + - + message: "#^Method PHPPgAdmin\\\\Controller\\\\DisplayController\\:\\:_printPages\\(\\) should return string\\|null but empty return statement found\\.$#" + count: 1 + path: src/controllers/DisplayController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 5 + path: src/controllers/DomainsController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 9 + path: src/controllers/FulltextController.php + + - + message: "#^Variable \\$mapping might not be defined\\.$#" + count: 1 + path: src/controllers/FulltextController.php + + - + message: "#^Method PHPPgAdmin\\\\Controller\\\\FunctionsController\\:\\:showDefinition\\(\\) invoked with 0 parameters, 2 required\\.$#" + count: 1 + path: src/controllers/FunctionsController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 12 + path: src/controllers/FunctionsController.php + + - + message: "#^Undefined variable\\: \\$f$#" + count: 1 + path: src/controllers/FunctionsController.php - - message: "#^Constructor of class [a-zA-Z0-9_]+\\\\[a-zA-Z0-9_]+\\\\[a-zA-Z0-9_]+ has an unused parameter \\$[a-zA-Z0-9_]+\\.$#" - path: src/* - #- '#Property [^\s] has no typehint specified#' - #- '#Call to an undefined method [a-zA-Z0-9\\_]+::expects\(\)#' - #- '#Access to an undefined property PHPPgAdmin::\$[a-zA-Z0-9_]+#' - #- '#Call to an undefined method PHPUnit_Framework_MockObject_MockObject::[a-zA-Z0-9_]+\(\)#' + message: "#^Method PHPPgAdmin\\\\Controller\\\\FunctionsController\\:\\:showDefinition\\(\\) should return string but returns void\\.$#" + count: 2 + path: src/controllers/FunctionsController.php + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 3 + path: src/controllers/GroupsController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 3 + path: src/controllers/HistoryController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 4 + path: src/controllers/IndexesController.php + + - + message: "#^Comparison operation \"\\<\" between 0 and \\(array\\|float\\|int\\) results in an error\\.$#" + count: 5 + path: src/controllers/InfoController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 1 + path: src/controllers/LoginController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 4 + path: src/controllers/MaterializedviewpropertiesController.php + + - + message: "#^Call to an undefined method PHPPgAdmin\\\\Database\\\\Postgres\\:\\:alterMatView\\(\\)\\.$#" + count: 1 + path: src/controllers/MaterializedviewpropertiesController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 6 + path: src/controllers/MaterializedviewsController.php + + - + message: "#^Parameter \\#2 \\(void\\) of echo cannot be converted to string\\.$#" + count: 1 + path: src/controllers/MaterializedviewsController.php + + - + message: "#^Offset int does not exist on array\\(\\)\\.$#" + count: 2 + path: src/controllers/MaterializedviewsController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 1 + path: src/controllers/OperatorsController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$utils\\.$#" + count: 1 + path: src/controllers/PrivilegesController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 1 + path: src/controllers/PrivilegesController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 5 + path: src/controllers/RolesController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 2 + path: src/controllers/RulesController.php + + - + message: "#^Call to an undefined method Slim\\\\Container\\:\\:getDestinationWithLastTab\\(\\)\\.$#" + count: 1 + path: src/controllers/SchemasController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 5 + path: src/controllers/SchemasController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 4 + path: src/controllers/SequencesController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 1 + path: src/controllers/ServersController.php + + - + message: "#^Call to method recordCount\\(\\) on an unknown class RecordSet\\.$#" + count: 2 + path: src/controllers/SqlController.php + + - + message: "#^Access to property \\$fields on an unknown class RecordSet\\.$#" + count: 2 + path: src/controllers/SqlController.php + + - + message: "#^Call to method fetchField\\(\\) on an unknown class RecordSet\\.$#" + count: 2 + path: src/controllers/SqlController.php + + - + message: "#^Access to property \\$EOF on an unknown class RecordSet\\.$#" + count: 1 + path: src/controllers/SqlController.php + + - + message: "#^Call to method moveNext\\(\\) on an unknown class RecordSet\\.$#" + count: 1 + path: src/controllers/SqlController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 1 + path: src/controllers/SqleditController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$responseobj\\.$#" + count: 1 + path: src/controllers/TablesController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 28 + path: src/controllers/TablesController.php + + - + message: "#^Iterating over an object of an unknown class an\\.$#" + count: 2 + path: src/controllers/TablesController.php + + - + message: "#^Parameter \\#2 \\(void\\) of echo cannot be converted to string\\.$#" + count: 1 + path: src/controllers/TablesController.php + + - + message: "#^Parameter \\#1 \\(void\\) of echo cannot be converted to string\\.$#" + count: 2 + path: src/controllers/TablesController.php + + - + message: "#^Call to sprintf contains 2 placeholders, 3 values given\\.$#" + count: 1 + path: src/controllers/TablesController.php + + - + message: "#^Cannot unset offset 'vars' on array\\('content' \\=\\> mixed, 'attr' \\=\\> array\\('href' \\=\\> array\\('url' \\=\\> mixed, 'urlvars' \\=\\> array\\('subject' \\=\\> mixed, 'action' \\=\\> 'confeditautovac', 'schema' \\=\\> mixed, 'table' \\=\\> mixed\\)\\)\\)\\)\\.$#" + count: 1 + path: src/controllers/TablesController.php + + - + message: "#^Offset 'vars' does not exist on array\\('content' \\=\\> mixed, 'attr' \\=\\> array\\('href' \\=\\> array\\('url' \\=\\> mixed, 'urlvars' \\=\\> array\\('subject' \\=\\> mixed, 'action' \\=\\> 'confeditautovac', 'schema' \\=\\> mixed, 'table' \\=\\> mixed\\)\\)\\)\\)\\.$#" + count: 1 + path: src/controllers/TablesController.php + + - + message: "#^Cannot unset offset 'vars' on array\\('content' \\=\\> mixed, 'attr' \\=\\> array\\('href' \\=\\> array\\('url' \\=\\> mixed, 'urlvars' \\=\\> array\\('subject' \\=\\> mixed, 'action' \\=\\> 'confdelautovac', 'schema' \\=\\> mixed, 'table' \\=\\> mixed\\)\\)\\)\\)\\.$#" + count: 1 + path: src/controllers/TablesController.php + + - + message: "#^Offset 'vars' does not exist on array\\('content' \\=\\> mixed, 'attr' \\=\\> array\\('href' \\=\\> array\\('url' \\=\\> mixed, 'urlvars' \\=\\> array\\('subject' \\=\\> mixed, 'action' \\=\\> 'confdelautovac', 'schema' \\=\\> mixed, 'table' \\=\\> mixed\\)\\)\\)\\)\\.$#" + count: 1 + path: src/controllers/TablesController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 3 + path: src/controllers/TablespacesController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 6 + path: src/controllers/TblpropertiesController.php + + - + message: "#^Variable \\$icon might not be defined\\.$#" + count: 1 + path: src/controllers/TblpropertiesController.php + + - + message: "#^Variable \\$type might not be defined\\.$#" + count: 1 + path: src/controllers/TblpropertiesController.php + + - + message: "#^Method PHPPgAdmin\\\\Controller\\\\TreeController\\:\\:printTree\\(\\) should return Slim\\\\Http\\\\Response\\|string but returns array\\<int\\|string, array\\<string, mixed\\>\\|bool\\|string\\>\\.$#" + count: 1 + path: src/controllers/TreeController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 4 + path: src/controllers/TreeController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$responseobj\\.$#" + count: 1 + path: src/controllers/TreeController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$subfolder\\.$#" + count: 1 + path: src/controllers/TreeController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 5 + path: src/controllers/TriggersController.php + + - + message: "#^Cannot unset offset 'enum' on array\\('create' \\=\\> array\\('attr' \\=\\> array\\('href' \\=\\> array\\('url' \\=\\> 'types', 'urlvars' \\=\\> array\\('action' \\=\\> 'create', 'server' \\=\\> mixed, 'database' \\=\\> mixed, 'schema' \\=\\> mixed\\)\\)\\), 'content' \\=\\> mixed\\), 'createcomp' \\=\\> array\\('attr' \\=\\> array\\('href' \\=\\> array\\('url' \\=\\> 'types', 'urlvars' \\=\\> array\\('action' \\=\\> 'create_comp', 'server' \\=\\> mixed, 'database' \\=\\> mixed, 'schema' \\=\\> mixed\\)\\)\\), 'content' \\=\\> mixed\\), 'createenum' \\=\\> array\\('attr' \\=\\> array\\('href' \\=\\> array\\('url' \\=\\> 'types', 'urlvars' \\=\\> array\\('action' \\=\\> 'create_enum', 'server' \\=\\> mixed, 'database' \\=\\> mixed, 'schema' \\=\\> mixed\\)\\)\\), 'content' \\=\\> mixed\\)\\)\\.$#" + count: 1 + path: src/controllers/TypesController.php + + - + message: "#^Access to offset 0 on an unknown class an\\.$#" + count: 1 + path: src/controllers/TypesController.php + + - + message: "#^Access to offset int on an unknown class an\\.$#" + count: 1 + path: src/controllers/TypesController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 4 + path: src/controllers/TypesController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 4 + path: src/controllers/UsersController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 4 + path: src/controllers/ViewpropertiesController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 6 + path: src/controllers/ViewsController.php + + - + message: "#^Parameter \\#2 \\(void\\) of echo cannot be converted to string\\.$#" + count: 1 + path: src/controllers/ViewsController.php + + - + message: "#^Offset int does not exist on array\\(\\)\\.$#" + count: 2 + path: src/controllers/ViewsController.php + + - + message: "#^Method PHPPgAdmin\\\\Database\\\\ADOdbBase\\:\\:selectSet\\(\\) should return int\\|PHPPgAdmin\\\\ADORecordSet but returns RecordSet\\.$#" + count: 1 + path: src/database/ADOdbBase.php + + - + message: "#^Method PHPPgAdmin\\\\Database\\\\ADOdbBase\\:\\:ErrorNo\\(\\) should return int but returns the\\.$#" + count: 1 + path: src/database/ADOdbBase.php + + - + message: "#^Method PHPPgAdmin\\\\Database\\\\ADOdbBase\\:\\:ErrorMsg\\(\\) should return string but returns the\\.$#" + count: 1 + path: src/database/ADOdbBase.php + + - + message: "#^Call to method recordCount\\(\\) on an unknown class RecordSet\\.$#" + count: 1 + path: src/database/ADOdbBase.php + + - + message: "#^Access to property \\$fields on an unknown class RecordSet\\.$#" + count: 1 + path: src/database/ADOdbBase.php + + - + message: "#^Access to an undefined property ADODB_postgres9\\:\\:\\$platform\\.$#" + count: 1 + path: src/database/ADOdbBase.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$subfolder\\.$#" + count: 1 + path: src/database/ADOdbBase.php + + - + message: "#^Method PHPPgAdmin\\\\Database\\\\Postgres\\:\\:_alterTable\\(\\) invoked with 8 parameters, 6\\-7 required\\.$#" + count: 1 + path: src/database/Postgres.php + + - + message: "#^Method PHPPgAdmin\\\\Database\\\\Postgres\\:\\:endDump\\(\\) should return bool but returns int\\.$#" + count: 1 + path: src/database/Postgres.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$subfolder\\.$#" + count: 1 + path: src/database/Postgres.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 1 + path: src/decorators/ActionUrlDecorator.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 3 + path: src/decorators/BranchUrlDecorator.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 3 + path: src/decorators/RedirectUrlDecorator.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 3 + path: src/decorators/UrlDecorator.php + + - + message: "#^PHPDoc tag @return with type array\\<string\\>\\|string\\|null is not subtype of native type array\\.$#" + count: 1 + path: src/help/PostgresDoc.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$request\\.$#" + count: 1 + path: src/lib.inc.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$response\\.$#" + count: 1 + path: src/lib.inc.php + + - + message: "#^Anonymous function has an unused use \\$c\\.$#" + count: 1 + path: src/lib.inc.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 5 + path: src/xhtml/HTMLNavbarController.php + + - + message: "#^Access to an undefined property Slim\\\\Container\\:\\:\\$SUBFOLDER\\.$#" + count: 1 + path: src/xhtml/HTMLTableController.php diff --git a/phpstan.neon b/phpstan.neon index ca5b831a..28dcc220 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,5 +1,4 @@ -includes: - - phpstan-baseline.neon + parameters: @@ -10,8 +9,8 @@ parameters: # The level 8 is the highest level level: 3 - - autoload_files: + + scanFiles: - vendor/adodb/adodb-php/adodb.inc.php - .configs/debug.kint.php - src/lib.inc.php @@ -32,3 +31,30 @@ parameters: + ignoreErrors: + + - + message: "#^PHPDoc tag @param references unknown parameter\\: \\$[a-zA-Z0-9_]+$#" + path: src/* + - + message: "#^Access to an undefined property Psr\\\\[a-zA-Z0-9_]+\\\\[a-zA-Z0-9_]+\\:\\:\\$[a-zA-Z0-9_]+\\.$#" + path: src/* + + - + message: "#^Access to an undefined property PHPPgAdmin\\\\[a-zA-Z0-9_]+\\\\[a-zA-Z0-9_]+\\:\\:\\$[a-zA-Z0-9_]+\\.$#" + path: src/* + - + message: "#^Result of method PHPPgAdmin\\\\[a-zA-Z0-9_]+\\\\[a-zA-Z0-9_]+\\:\\:[a-zA-Z0-9_]+\\(\\) \\(void\\) is used\\.$#" + path: src/* + + - + message: "#^Call to static method br2ln\\(\\) on trait PHPPgAdmin\\Traits\\HelperTrait\\.#" + path: src/* + + - + message: "#^Constructor of class [a-zA-Z0-9_]+\\\\[a-zA-Z0-9_]+\\\\[a-zA-Z0-9_]+ has an unused parameter \\$[a-zA-Z0-9_]+\\.$#" + path: src/* + #- '#Property [^\s] has no typehint specified#' + #- '#Call to an undefined method [a-zA-Z0-9\\_]+::expects\(\)#' + #- '#Access to an undefined property PHPPgAdmin::\$[a-zA-Z0-9_]+#' + #- '#Call to an undefined method PHPUnit_Framework_MockObject_MockObject::[a-zA-Z0-9_]+\(\)#' diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 189d773b..889bd931 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,18 +1,68 @@ <?xml version="1.0" encoding="UTF-8"?> -<files psalm-version="3.9.3@2e4154d76e24d1b4e59e6cc2bebef7790cb9e550"> - <file src="src/classes/ADONewConnection.php"> - <UndefinedClass occurrences="1"> - <code>\ADONewConnection</code> +<files psalm-version="3.9.5@0cfe565d0afbcd31eadcc281b9017b5692911661"> + <file src=".configs/debug.var_dumper.php"> + <UndefinedClass occurrences="4"> + <code>VarCloner</code> + <code>CliDumper</code> + <code>HtmlDumper</code> + <code>ServerDumper</code> </UndefinedClass> </file> + <file src="src/classes/ADORecordSet.php"> + <InvalidReturnStatement occurrences="1"> + <code>parent::fetchField()</code> + </InvalidReturnStatement> + <InvalidReturnType occurrences="1"> + <code>\ADOFieldObject</code> + </InvalidReturnType> + <UndefinedDocblockClass occurrences="1"> + <code>parent::fetchField()</code> + </UndefinedDocblockClass> + </file> <file src="src/classes/ADOdbException.php"> + <UndefinedThisPropertyAssignment occurrences="1"> + <code>$this->msg</code> + </UndefinedThisPropertyAssignment> + </file> + <file src="src/classes/Connection.php"> + <NullableReturnStatement occurrences="2"> + <code>null</code> + <code>null</code> + </NullableReturnStatement> <UndefinedDocblockClass occurrences="2"> - <code>number</code> - <code>number</code> + <code>$this->conn</code> + <code>$this->conn</code> </UndefinedDocblockClass> + <UndefinedFunction occurrences="1"> + <code>dump($serverInfo)</code> + </UndefinedFunction> </file> <file src="src/classes/ContainerUtils.php"> - <UndefinedInterfaceMethod occurrences="8"> + <UndefinedConstant occurrences="2"> + <code>BASE_PATH</code> + <code>BASE_PATH</code> + </UndefinedConstant> + <UndefinedMagicPropertyFetch occurrences="1"> + <code>$container->misc</code> + </UndefinedMagicPropertyFetch> + <UndefinedPropertyAssignment occurrences="6"> + <code>$container->BASE_PATH</code> + <code>$container->SUBFOLDER</code> + <code>$container->DEBUGMODE</code> + <code>$container->THEME_PATH</code> + <code>$container->IN_TEST</code> + <code>$container->subfolder</code> + </UndefinedPropertyAssignment> + <UndefinedThisPropertyAssignment occurrences="1"> + <code>$this->container</code> + </UndefinedThisPropertyAssignment> + </file> + <file src="src/classes/ContainerUtilsOld.php"> + <UndefinedConstant occurrences="2"> + <code>BASE_PATH</code> + <code>BASE_PATH</code> + </UndefinedConstant> + <UndefinedInterfaceMethod occurrences="7"> <code>$container</code> <code>$container</code> <code>$container</code> @@ -20,22 +70,58 @@ <code>$container</code> <code>$container</code> <code>$container</code> - <code>offsetSet</code> </UndefinedInterfaceMethod> + <UndefinedPropertyAssignment occurrences="6"> + <code>$container->BASE_PATH</code> + <code>$container->SUBFOLDER</code> + <code>$container->DEBUGMODE</code> + <code>$container->THEME_PATH</code> + <code>$container->IN_TEST</code> + <code>$container->subfolder</code> + </UndefinedPropertyAssignment> </file> <file src="src/classes/Misc.php"> - <NullableReturnStatement occurrences="2"> - <code>$this->_server_info</code> - <code>$this->halt($this->lang['strinvalidserverparam'])</code> + <InvalidNullableReturnType occurrences="1"> + <code>string</code> + </InvalidNullableReturnType> + <NullableReturnStatement occurrences="1"> + <code>$this->_server_id</code> </NullableReturnStatement> - <UndefinedMethod occurrences="1"> - <code>setSchema</code> + <UndefinedMethod occurrences="3"> + <code>addError</code> + <code>addError</code> + <code>addError</code> </UndefinedMethod> </file> + <file src="src/classes/ViewManager.php"> + <UndefinedFunction occurrences="16"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> + </file> <file src="src/controllers/AggregatesController.php"> <NullReference occurrences="1"> <code>$_REQUEST</code> </NullReference> + <UndefinedFunction occurrences="3"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/AlldbController.php"> <NullReference occurrences="3"> @@ -43,12 +129,31 @@ <code>$_POST</code> <code>$_POST</code> </NullReference> + <UndefinedFunction occurrences="4"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> + <UndefinedMethod occurrences="1"> + <code>getDestinationWithLastTab</code> + </UndefinedMethod> </file> <file src="src/controllers/BaseController.php"> + <UndefinedFunction occurrences="3"> + <code>\requestInstance()</code> + <code>\requestInstance()</code> + <code>\requestInstance()</code> + </UndefinedFunction> <UndefinedThisPropertyAssignment occurrences="1"> <code>$this->postgresqlMinVer</code> </UndefinedThisPropertyAssignment> </file> + <file src="src/controllers/CastsController.php"> + <InvalidArgument occurrences="1"> + <code>$casts</code> + </InvalidArgument> + </file> <file src="src/controllers/ColpropertiesController.php"> <NullArgument occurrences="1"> <code>null</code> @@ -56,6 +161,10 @@ <NullReference occurrences="1"> <code>$_REQUEST</code> </NullReference> + <UndefinedFunction occurrences="2"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/ConstraintsController.php"> <NullReference occurrences="5"> @@ -65,6 +174,10 @@ <code>$_POST</code> <code>$_POST</code> </NullReference> + <UndefinedFunction occurrences="2"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> <UndefinedMethod occurrences="1"> <code>doTree</code> </UndefinedMethod> @@ -73,6 +186,50 @@ <NullReference occurrences="1"> <code>$_REQUEST</code> </NullReference> + <UndefinedFunction occurrences="19"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> + <UndefinedMethod occurrences="16"> + <code>getDestinationWithLastTab</code> + <code>getDestinationWithLastTab</code> + <code>getDestinationWithLastTab</code> + <code>getDestinationWithLastTab</code> + <code>getDestinationWithLastTab</code> + <code>getDestinationWithLastTab</code> + <code>getDestinationWithLastTab</code> + <code>getDestinationWithLastTab</code> + <code>getDestinationWithLastTab</code> + <code>getDestinationWithLastTab</code> + <code>getDestinationWithLastTab</code> + <code>getDestinationWithLastTab</code> + <code>getDestinationWithLastTab</code> + <code>getDestinationWithLastTab</code> + <code>getDestinationWithLastTab</code> + <code>getDestinationWithLastTab</code> + </UndefinedMethod> + </file> + <file src="src/controllers/DataexportController.php"> + <UndefinedFunction occurrences="1"> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/DbexportController.php"> <EmptyArrayAccess occurrences="1"> @@ -86,15 +243,8 @@ <InvalidArgument occurrences="1"> <code>$resultset->recordCount()</code> </InvalidArgument> - <InvalidArrayOffset occurrences="9"> - <code>$_gets['schema']</code> + <InvalidArrayOffset occurrences="2"> <code>$_gets['subject']</code> - <code>$_gets['query']</code> - <code>$_gets['count']</code> - <code>$_gets['return']</code> - <code>$_gets['search_path']</code> - <code>$_gets['table']</code> - <code>$_gets['nohistory']</code> <code>$fields['schema']</code> </InvalidArrayOffset> <NullReference occurrences="5"> @@ -119,6 +269,12 @@ <code>$resultset->fetchField($j++)</code> <code>$finfo->type</code> </UndefinedDocblockClass> + <UndefinedFunction occurrences="4"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/DomainsController.php"> <NullReference occurrences="3"> @@ -126,8 +282,18 @@ <code>$_POST</code> <code>$_POST</code> </NullReference> + <UndefinedFunction occurrences="5"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/FulltextController.php"> + <InvalidArgument occurrences="1"> + <code>$items</code> + </InvalidArgument> <NullReference occurrences="6"> <code>$_POST</code> <code>$_POST</code> @@ -136,8 +302,40 @@ <code>$_POST</code> <code>$_POST</code> </NullReference> + <UndefinedDocblockClass occurrences="4"> + <code>$ftscfg->recordCount()</code> + <code>$ftsdict->recordCount()</code> + <code>$ftsdicts->recordCount()</code> + <code>$ftsdicts->recordCount()</code> + </UndefinedDocblockClass> + <UndefinedFunction occurrences="9"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/FunctionsController.php"> + <InvalidArgument occurrences="13"> + <code>$_POST['formFunction']</code> + <code>$_POST['formObjectFile']</code> + <code>$_POST['formLinkSymbol']</code> + <code>$_POST['formLinkSymbol']</code> + <code>$_POST['formDefinition']</code> + <code>$_POST['formComment']</code> + <code>$_POST['formObjectFile']</code> + <code>$_POST['formLinkSymbol']</code> + <code>$_POST['formLinkSymbol']</code> + <code>$_POST['formDefinition']</code> + <code>$_POST['formComment']</code> + <code>$_POST['formCost']</code> + <code>$_POST['formRows']</code> + </InvalidArgument> <InvalidNullableReturnType occurrences="1"> <code>string</code> </InvalidNullableReturnType> @@ -148,6 +346,20 @@ <TooFewArguments occurrences="1"> <code>showDefinition</code> </TooFewArguments> + <UndefinedFunction occurrences="12"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> <UndefinedVariable occurrences="1"> <code>$f</code> </UndefinedVariable> @@ -158,14 +370,44 @@ <code>$_POST</code> <code>$_POST</code> </NullReference> + <UndefinedFunction occurrences="3"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> + </file> + <file src="src/controllers/HistoryController.php"> + <UndefinedFunction occurrences="3"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/IndexesController.php"> + <InvalidArgument occurrences="10"> + <code>$formIndexName</code> + <code>$formWhere</code> + <code>$this->getPostParam('formIndexName', '')</code> + <code>$this->getPostParam('formIndexType')</code> + <code>$this->getPostParam('formUnique')</code> + <code>$formWhere</code> + <code>$formSpc</code> + <code>$this->getPostParam('formConcur')</code> + <code>$this->getPostParam('index')</code> + <code>$this->getPostParam('cascade')</code> + </InvalidArgument> <NullReference occurrences="4"> <code>$_REQUEST</code> <code>$_REQUEST</code> <code>$_REQUEST</code> <code>$_POST</code> </NullReference> + <UndefinedFunction occurrences="4"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/InfoController.php"> <UndefinedThisPropertyAssignment occurrences="1"> @@ -178,23 +420,58 @@ <code>$this->shownull</code> </UndefinedThisPropertyFetch> </file> + <file src="src/controllers/IntroController.php"> + <UndefinedFunction occurrences="4"> + <code>\requestInstance()</code> + <code>\responseInstance()</code> + <code>\responseInstance()</code> + <code>\requestInstance()</code> + </UndefinedFunction> + </file> + <file src="src/controllers/LoginController.php"> + <UndefinedFunction occurrences="5"> + <code>\requestInstance()</code> + <code>\responseInstance()</code> + <code>\responseInstance()</code> + <code>\requestInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> + </file> <file src="src/controllers/MaterializedviewpropertiesController.php"> <NullReference occurrences="2"> <code>$_REQUEST</code> <code>$_POST</code> </NullReference> + <UndefinedFunction occurrences="3"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/MaterializedviewsController.php"> <NullReference occurrences="2"> <code>$_REQUEST</code> <code>$_REQUEST</code> </NullReference> + <UndefinedFunction occurrences="3"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> + </file> + <file src="src/controllers/OperatorsController.php"> + <UndefinedFunction occurrences="1"> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/PrivilegesController.php"> <NullReference occurrences="2"> <code>$_REQUEST</code> <code>$_REQUEST</code> </NullReference> + <UndefinedFunction occurrences="1"> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/RolesController.php"> <NullReference occurrences="4"> @@ -203,30 +480,81 @@ <code>$_POST</code> <code>$_POST</code> </NullReference> + <UndefinedFunction occurrences="5"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/RulesController.php"> <NullReference occurrences="1"> <code>$_POST</code> </NullReference> + <UndefinedFunction occurrences="2"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/SchemasController.php"> <NullReference occurrences="2"> <code>$_POST</code> <code>$_POST</code> </NullReference> + <UndefinedFunction occurrences="4"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> + <UndefinedMethod occurrences="1"> + <code>getDestinationWithLastTab</code> + </UndefinedMethod> </file> <file src="src/controllers/SequencesController.php"> + <InvalidArgument occurrences="1"> + <code>$sequences</code> + </InvalidArgument> <NullReference occurrences="3"> <code>$_POST</code> <code>$_POST</code> <code>$_POST</code> </NullReference> + <UndefinedDocblockClass occurrences="3"> + <code>$sequence->recordCount()</code> + <code>$sequence->recordCount()</code> + <code>$sequence->recordCount()</code> + </UndefinedDocblockClass> + <UndefinedFunction occurrences="4"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> + </file> + <file src="src/controllers/ServersController.php"> + <UndefinedFunction occurrences="4"> + <code>\requestInstance()</code> + <code>\responseInstance()</code> + <code>\responseInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> + </file> + <file src="src/controllers/SqlController.php"> + <UndefinedDocblockClass occurrences="2"> + <code>$data->conn->Execute($this->query)</code> + <code>$rs</code> + </UndefinedDocblockClass> </file> <file src="src/controllers/SqleditController.php"> <NullReference occurrences="2"> <code>$_REQUEST</code> <code>$_REQUEST</code> </NullReference> + <UndefinedFunction occurrences="1"> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/TablesController.php"> <NullReference occurrences="3"> @@ -237,12 +565,31 @@ <UndefinedDocblockClass occurrences="1"> <code>$tables->recordCount()</code> </UndefinedDocblockClass> + <UndefinedFunction occurrences="12"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/TablespacesController.php"> <NullReference occurrences="2"> <code>$_POST</code> <code>$_POST</code> </NullReference> + <UndefinedFunction occurrences="3"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/TblpropertiesController.php"> <NullReference occurrences="4"> @@ -251,18 +598,48 @@ <code>$_REQUEST</code> <code>$_POST</code> </NullReference> + <UndefinedFunction occurrences="5"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/TreeController.php"> <InvalidReturnStatement occurrences="1"> - <code>$parent</code> + <code>$this->printTreeJSON($treedata, $attrs, $print)</code> </InvalidReturnStatement> + <InvalidReturnType occurrences="1"> + <code>\Slim\Http\Response|string</code> + </InvalidReturnType> + <MoreSpecificImplementedParamType occurrences="1"> + <code>$_treedata</code> + </MoreSpecificImplementedParamType> + <UndefinedFunction occurrences="4"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/TriggersController.php"> <NullReference occurrences="1"> <code>$_POST</code> </NullReference> + <UndefinedFunction occurrences="5"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/TypesController.php"> + <InvalidArgument occurrences="2"> + <code>$types</code> + <code>$vals</code> + </InvalidArgument> <InvalidArrayOffset occurrences="1"> <code>$navlinks['enum']</code> </InvalidArrayOffset> @@ -271,119 +648,88 @@ <code>$_REQUEST</code> <code>$_POST</code> </NullReference> + <UndefinedDocblockClass occurrences="4"> + <code>$typedata->recordCount()</code> + <code>$vals->getArray()</code> + <code>$vals</code> + <code>$vals</code> + </UndefinedDocblockClass> + <UndefinedFunction occurrences="6"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/UsersController.php"> <NullReference occurrences="2"> <code>$_POST</code> <code>$_POST</code> </NullReference> + <UndefinedFunction occurrences="4"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/ViewpropertiesController.php"> <NullReference occurrences="2"> <code>$_REQUEST</code> <code>$_POST</code> </NullReference> + <UndefinedFunction occurrences="3"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/controllers/ViewsController.php"> <NullReference occurrences="2"> <code>$_REQUEST</code> <code>$_REQUEST</code> </NullReference> + <UndefinedFunction occurrences="3"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/database/ADOdbBase.php"> - <InvalidReturnStatement occurrences="2"> + <InvalidReturnStatement occurrences="5"> <code>$e->getCode()</code> + <code>$this->conn->Execute($sql)</code> <code>$e->getCode()</code> + <code>$this->conn->ErrorNo()</code> + <code>$this->conn->ErrorMsg()</code> </InvalidReturnStatement> - <MissingDependency occurrences="1"> - <code>\PHPPgAdmin\ADONewConnection</code> - </MissingDependency> - </file> - <file src="src/database/Connection.php"> - <InvalidReturnStatement occurrences="1"> - <code>-3</code> - </InvalidReturnStatement> - <NullableReturnStatement occurrences="1"> - <code>null</code> - </NullableReturnStatement> - <UndefinedDocblockClass occurrences="1"> - <code>$this->conn</code> + <InvalidReturnType occurrences="4"> + <code>int|\PHPPgAdmin\ADORecordSet</code> + <code>int|\PHPPgAdmin\ADORecordSet</code> + <code>int</code> + <code>string</code> + </InvalidReturnType> + <UndefinedDocblockClass occurrences="9"> + <code>$this->conn->Execute($sql)</code> + <code>$this->conn->Execute($sql)</code> + <code>$this->conn->ErrorNo()</code> + <code>$this->conn->ErrorMsg()</code> + <code>$this->conn->Execute($sql)</code> + <code>$rs</code> + <code>$this->conn->Execute($sql)</code> + <code>$this->conn->Execute($sql)</code> + <code>$this->conn->Execute($setClause . $whereClause)</code> </UndefinedDocblockClass> </file> <file src="src/database/Postgres.php"> <LoopInvalidation occurrences="1"> <code>$i</code> </LoopInvalidation> - <UndefinedDocblockClass occurrences="1"> - <code>$rs->recordCount()</code> - </UndefinedDocblockClass> - </file> - <file src="src/database/Postgres74.php"> - <MoreSpecificImplementedParamType occurrences="1"> - <code>$default</code> - </MoreSpecificImplementedParamType> - </file> - <file src="src/database/Postgres80.php"> - <MoreSpecificImplementedParamType occurrences="1"> - <code>$cycledvalue</code> - </MoreSpecificImplementedParamType> - <NullArgument occurrences="1"> - <code>null</code> - </NullArgument> - </file> - <file src="src/database/Postgres81.php"> - <InvalidArgument occurrences="1"> - <code>$toid</code> - </InvalidArgument> - <InvalidCast occurrences="2"> - <code>$toid</code> - <code>$toid</code> - </InvalidCast> - <UndefinedDocblockClass occurrences="2"> - <code>$rs->fields('oid')</code> - <code>$rs->recordCount()</code> - </UndefinedDocblockClass> - </file> - <file src="src/database/Postgres82.php"> - <ConflictingReferenceConstraint occurrences="1"> - <code>else {</code> - </ConflictingReferenceConstraint> - <LessSpecificImplementedReturnType occurrences="1"> - <code>array</code> - </LessSpecificImplementedReturnType> - <MoreSpecificImplementedParamType occurrences="1"> - <code>$operator_oid</code> - </MoreSpecificImplementedParamType> - <NullArgument occurrences="1"> - <code>null</code> - </NullArgument> - </file> - <file src="src/database/Postgres83.php"> - <InvalidArgument occurrences="1"> - <code>$toid</code> - </InvalidArgument> - <InvalidCast occurrences="2"> - <code>$toid</code> - <code>$toid</code> - </InvalidCast> - <MoreSpecificImplementedParamType occurrences="1"> - <code>$cycledvalue</code> - </MoreSpecificImplementedParamType> - <UndefinedDocblockClass occurrences="2"> - <code>$rs->fields('oid')</code> - <code>$rs->recordCount()</code> - </UndefinedDocblockClass> </file> <file src="src/database/databasetraits/FtsTrait.php"> - <InvalidArrayOffset occurrences="12"> - <code>$parser['schema']</code> - <code>$parser['parser']</code> - <code>$parser['schema']</code> - <code>$parser['parser']</code> - <code>$template['schema']</code> - <code>$template['name']</code> - <code>$template['schema']</code> - <code>$template['name']</code> + <InvalidArrayOffset occurrences="4"> <code>$template['schema']</code> <code>$template['name']</code> <code>$template['schema']</code> @@ -394,79 +740,42 @@ <ConflictingReferenceConstraint occurrences="1"> <code>else {</code> </ConflictingReferenceConstraint> + <InvalidReturnType occurrences="1"> + <code>\PHPPgAdmin\ADORecordSet</code> + </InvalidReturnType> <NullArgument occurrences="1"> <code>null</code> </NullArgument> </file> - <file src="src/database/databasetraits/IndexTrait.php"> - <UndefinedDocblockClass occurrences="1"> - <code>$v->recordCount()</code> - </UndefinedDocblockClass> - </file> - <file src="src/database/databasetraits/RoleTrait.php"> - <UndefinedDocblockClass occurrences="3"> - <code>number</code> - <code>number</code> - <code>number</code> - </UndefinedDocblockClass> - </file> - <file src="src/database/databasetraits/RowTrait.php"> - <UndefinedDocblockClass occurrences="1"> - <code>$rs->recordCount()</code> - </UndefinedDocblockClass> + <file src="src/database/databasetraits/SchemaTrait.php"> + <InvalidReturnType occurrences="1"> + <code>int</code> + </InvalidReturnType> </file> <file src="src/database/databasetraits/SequenceTrait.php"> - <InvalidArgument occurrences="6"> - <code>$increment</code> - <code>$minvalue</code> - <code>$maxvalue</code> - <code>$restartvalue</code> - <code>$cachevalue</code> - <code>$startvalue</code> - </InvalidArgument> - <UndefinedDocblockClass occurrences="18"> - <code>number</code> + <UndefinedDocblockClass occurrences="2"> <code>$seq->recordCount()</code> - <code>number</code> - <code>number</code> - <code>number</code> - <code>number</code> - <code>number</code> - <code>number</code> - <code>number</code> - <code>number</code> - <code>number</code> - <code>number</code> - <code>number</code> - <code>number</code> - <code>number</code> - <code>number</code> - <code>number</code> - <code>number</code> + <code>$data->recordCount()</code> </UndefinedDocblockClass> </file> <file src="src/database/databasetraits/TableTrait.php"> - <InvalidArgument occurrences="2"> - <code>$privs</code> + <InvalidArgument occurrences="1"> <code>$privs</code> </InvalidArgument> - <UndefinedDocblockClass occurrences="8"> - <code>$t->recordCount()</code> - <code>$atts->recordCount()</code> - <code>$cons->recordCount()</code> - <code>$rs->recordCount()</code> - <code>$indexes->recordCount()</code> - <code>$triggers->recordCount()</code> - <code>$rules->recordCount()</code> - <code>$data->recordCount()</code> - </UndefinedDocblockClass> + <InvalidReturnType occurrences="2"> + <code>\PHPPgAdmin\ADORecordSet</code> + <code>bool</code> + </InvalidReturnType> </file> - <file src="src/database/databasetraits/ViewTrait.php"> - <UndefinedDocblockClass occurrences="1"> - <code>$data->recordCount()</code> - </UndefinedDocblockClass> + <file src="src/database/databasetraits/TriggerTrait.php"> + <InvalidReturnType occurrences="1"> + <code>int</code> + </InvalidReturnType> </file> <file src="src/decorators/ActionUrlDecorator.php"> + <UndefinedFunction occurrences="1"> + <code>\containerInstance()</code> + </UndefinedFunction> <UndefinedThisPropertyAssignment occurrences="4"> <code>$this->base</code> <code>$this->queryVars</code> @@ -486,6 +795,11 @@ </UndefinedThisPropertyFetch> </file> <file src="src/decorators/BranchUrlDecorator.php"> + <UndefinedFunction occurrences="3"> + <code>containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> <UndefinedThisPropertyAssignment occurrences="4"> <code>$this->base</code> <code>$this->queryVars</code> @@ -547,6 +861,11 @@ </UndefinedThisPropertyFetch> </file> <file src="src/decorators/RedirectUrlDecorator.php"> + <UndefinedFunction occurrences="3"> + <code>containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> <UndefinedThisPropertyAssignment occurrences="4"> <code>$this->base</code> <code>$this->queryVars</code> @@ -568,6 +887,11 @@ </UndefinedThisPropertyFetch> </file> <file src="src/decorators/UrlDecorator.php"> + <UndefinedFunction occurrences="3"> + <code>containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> <UndefinedThisPropertyAssignment occurrences="4"> <code>$this->base</code> <code>$this->queryVars</code> @@ -578,23 +902,10 @@ <code>$this->base</code> </UndefinedThisPropertyFetch> </file> - <file src="src/lib.inc.php"> - <EmptyArrayAccess occurrences="2"> - <code>$conf['debugmode']</code> - <code>$conf['register_debuggers']</code> - </EmptyArrayAccess> - </file> - <file src="src/middleware/PopulateRequestResponse.php"> - <UndefinedConstant occurrences="2"> - <code>SUBFOLDER</code> - <code>SUBFOLDER</code> - </UndefinedConstant> - <UndefinedInterfaceMethod occurrences="4"> - <code>getParam</code> - <code>getParam</code> - <code>getParam</code> - <code>getParams</code> - </UndefinedInterfaceMethod> + <file src="src/help/PostgresDoc.php"> + <MismatchingDocblockReturnType occurrences="1"> + <code>null|string|string[]</code> + </MismatchingDocblockReturnType> </file> <file src="src/router.php"> <InvalidScope occurrences="6"> @@ -617,23 +928,57 @@ <UndefinedDocblockClass occurrences="1"> <code>$autovac->recordCount()</code> </UndefinedDocblockClass> + <UndefinedFunction occurrences="16"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> + </file> + <file src="src/traits/ExportTrait.php"> + <UndefinedFunction occurrences="1"> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/traits/HelperTrait.php"> <UndefinedDocblockClass occurrences="1"> <code>$set->recordCount()</code> </UndefinedDocblockClass> - <UndefinedThisPropertyFetch occurrences="2"> - <code>$this->container</code> + <UndefinedFunction occurrences="3"> + <code>\responseInstance()</code> + <code>\requestInstance()</code> + <code>\responseInstance()</code> + </UndefinedFunction> + <UndefinedThisPropertyFetch occurrences="1"> <code>$this->container</code> </UndefinedThisPropertyFetch> </file> <file src="src/traits/InsertEditRowTrait.php"> - <UndefinedConstant occurrences="2"> - <code>SUBFOLDER</code> - <code>SUBFOLDER</code> - </UndefinedConstant> + <UndefinedFunction occurrences="2"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/traits/MiscTrait.php"> + <UndefinedFunction occurrences="5"> + <code>\containerInstance()</code> + <code>containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> <UndefinedMethod occurrences="1"> <code>isSuperUser</code> </UndefinedMethod> @@ -645,6 +990,11 @@ <NullReference occurrences="1"> <code>$_POST</code> </NullReference> + <UndefinedFunction occurrences="3"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/xhtml/HTMLController.php"> <ConflictingReferenceConstraint occurrences="1"> @@ -655,13 +1005,17 @@ <InvalidArgument occurrences="1"> <code>$alltabs</code> </InvalidArgument> - <InvalidReturnType occurrences="1"> - <code>? string</code> - </InvalidReturnType> + <UndefinedFunction occurrences="5"> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + <code>\containerInstance()</code> + </UndefinedFunction> </file> <file src="src/xhtml/HTMLTableController.php"> - <UndefinedConstant occurrences="1"> - <code>SUBFOLDER</code> - </UndefinedConstant> + <UndefinedFunction occurrences="1"> + <code>\containerInstance()</code> + </UndefinedFunction> </file> </files> @@ -1,14 +1,13 @@ <?xml version="1.0"?> <psalm totallyTyped="false" errorLevel="3" resolveFromConfigFile="true" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoloader="src/lib.inc.php" - xmlns="https://getpsalm.org/schema/config" cacheDirectory=".build/psalm" xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd" errorBaseline="psalm-baseline.xml"> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="https://getpsalm.org/schema/config" xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd" errorBaseline="psalm-baseline.xml"> <projectFiles> <directory name="src" /> <ignoreFiles> <directory name="vendor" /> <directory name="temp" /> - <directory name="tests" /> - <directory name=".build" /> + <directory name="src/translations" /> </ignoreFiles> </projectFiles> diff --git a/src/classes/ADONewConnection.php b/src/classes/ADONewConnection.php index 8f998c3b..ce041cc5 100644 --- a/src/classes/ADONewConnection.php +++ b/src/classes/ADONewConnection.php @@ -6,10 +6,7 @@ namespace PHPPgAdmin; -/** - * @file - * Extends \ADODB_postgres9 to let correct inference on PHPDoc params - */ + /** * Extends \ADODB_postgres9 to let correct inference on PHPDoc params. diff --git a/src/classes/ADORecordSet.php b/src/classes/ADORecordSet.php index 74c3f989..0b88ccd9 100644 --- a/src/classes/ADORecordSet.php +++ b/src/classes/ADORecordSet.php @@ -6,10 +6,7 @@ namespace PHPPgAdmin; -/** - * @file - * Extends ADORecordSet to let correct inference on PHPDoc params - */ + /** * Extends ADORecordSet to let correct inference on PHPDoc params. diff --git a/src/classes/ADOdbException.php b/src/classes/ADOdbException.php index dde45a8b..e55d610a 100644 --- a/src/classes/ADOdbException.php +++ b/src/classes/ADOdbException.php @@ -122,9 +122,9 @@ class ADOdbException extends \Exception 'line' => $backtrace[0]['line'], ]; - $errmsg = \htmlentities(\PHPPgAdmin\Traits\HelperTrait::br2ln($errmsg), \ENT_NOQUOTES); - $p1 = \htmlentities(\PHPPgAdmin\Traits\HelperTrait::br2ln($p1), \ENT_NOQUOTES); - $p2 = \htmlentities(\PHPPgAdmin\Traits\HelperTrait::br2ln($p2), \ENT_NOQUOTES); + $errmsg = \htmlentities(\PHPPgAdmin\ContainerUtils::br2ln($errmsg), \ENT_NOQUOTES); + $p1 = \htmlentities(\PHPPgAdmin\ContainerUtils::br2ln($p1), \ENT_NOQUOTES); + $p2 = \htmlentities(\PHPPgAdmin\ContainerUtils::br2ln($p2), \ENT_NOQUOTES); switch ($fn) { case 'EXECUTE': diff --git a/src/classes/Connection.php b/src/classes/Connection.php index d0eec0bf..d7a8d5d9 100644 --- a/src/classes/Connection.php +++ b/src/classes/Connection.php @@ -60,7 +60,7 @@ class Connection * * @param array $server_info * @param string $database database name - * @param \Slim\Container $container + * @param \PHPPgAdmin\ContainerUtils $container * @param int $fetchMode Defaults to associative. Override for different behaviour */ public function __construct($server_info, $database, $container, $fetchMode = ADODB_FETCH_ASSOC) @@ -78,7 +78,7 @@ class Connection // ADODB_Postgres9 Approach //$driver='postgres9'; $this->conn = \ADONewConnection($this->adodb_driver); - $this->conn->setFetchMode($fetchMode); + // PDO Approach @@ -89,23 +89,19 @@ class Connection $this->prtrace(['message' => $e->getMessage(), 'trace' => $e->getTraceAsString()]); */ try { - $this->_connection_result = 'pdo' === $this->adodb_driver ? + $this->conn = 'pdo' === $this->adodb_driver ? $this->getPDOConnection($host, $port, $sslmode, $database, $user, $password, $fetchMode) : $this->getPG9Connection($host, $port, $sslmode, $database, $user, $password, $fetchMode); - + $this->conn->setFetchMode($fetchMode); //$this->prtrace($this->conn); } catch (\Exception $e) { //dump($dsnString, $this->adodb_driver); $this->prtrace($e->getMessage(), \array_slice($e->getTrace(), 0, 10)); } } + - public function getConnectionResult() - { - return $this->_connection_result; - } - - public function getVersion() + public function getVersion():string { return $this->pgVersion; } @@ -124,6 +120,7 @@ class Connection return null; } $serverInfo = $this->conn->ServerInfo(); + dump($serverInfo); $this->pgVersion = $serverInfo['version']; $description = "PostgreSQL {$this->pgVersion}"; diff --git a/src/classes/ContainerUtils.php b/src/classes/ContainerUtils.php index 10498c57..21ae51b1 100644 --- a/src/classes/ContainerUtils.php +++ b/src/classes/ContainerUtils.php @@ -1,102 +1,113 @@ <?php -/** - * PHPPgAdmin 6.0.0 - */ - + namespace PHPPgAdmin; -use Slim\App; -use Slim\Container; -use requestInstance; - -\defined('BASE_PATH') || \define('BASE_PATH', \dirname(__DIR__, 2)); -\defined('THEME_PATH') || \define('THEME_PATH', BASE_PATH . '/assets/themes'); - -\defined('DEBUGMODE') || \define('DEBUGMODE', false); -\defined('IN_TEST') || \define('IN_TEST', false); +use Kint\Kint; +use Psr\Container\ContainerInterface; +use Slim\Collection; +use Slim\DefaultServicesProvider; /** - * A class that adds convenience methods to the container. + * @property array $deploy_info + * @property \Slim\Flash\Messages $flash + * @property \GuzzleHttp\Client $fcIntranetClient + * @property \GuzzleHttp\Client $apiDteClient + * @property \Slim\Views\Twig $view + * @property \Slim\Http\Request $request + * @property \Slim\Http\Response $response + * @property string $BASE_PATH + * @property string $THEME_PATH + * @property string $subFolder + * @property bool $DEBUGMODE + * @property bool $IN_TEST + * @property string $server + * @property string $database + * @property string $schema */ -class ContainerUtils -{ - use \PHPPgAdmin\Traits\HelperTrait; - /** - * @var string - */ - const BASE_PATH = BASE_PATH; - /** - * @var string - */ - const SUBFOLDER = PHPPGA_SUBFOLDER; - /** - * @var string - */ - const DEBUGMODE = DEBUGMODE; +class ContainerUtils extends \Slim\Container implements ContainerInterface +{ use \PHPPgAdmin\Traits\HelperTrait; /** - * @var string + * @var self|null */ - const THEME_PATH = THEME_PATH; + private static $instance; - /** - * @var \Slim\Container - */ - protected $container; /** - * @var App + * $appInstance. + * + * @var null|\Slim\App */ - protected $_app; + private static $appInstance; /** + * Default settings. + * * @var array */ - protected $conf; + private $defaultSettings = [ + 'httpVersion' => '1.1', + 'responseChunkSize' => 4096, + 'outputBuffering' => 'append', + 'determineRouteBeforeAppMiddleware' => false, + 'displayErrorDetails' => false, + 'addContentLengthHeader' => true, + 'routerCacheFile' => false, + ]; + /** + * Undocumented variable + * + * @var array + */ + private static $envConfig=[ + 'BASE_PATH'=>'', + 'subFolder'=>'', + 'DEBUGMODE'=>false, + 'THEME_PATH'=>'', + + ]; /** - * @var self + * @param array $values the parameters or objects */ - protected static $_instance; + public function __construct(array $values = []) + { + parent::__construct($values); - /** - * Constructor of the ContainerUtils class. + $userSettings = $values['settings'] ?? []; + $this->registerDefaultServices($userSettings); + $this->container = $this; + self::$instance = $this; + } + /** + * Gets the subfolder. + * + * @param string $path The path + * + * @return string the subfolder */ - public function __construct() + public function getSubfolder(string $path = ''): string { - $composerinfo = \json_decode(\file_get_contents(BASE_PATH . '/composer.json')); - $appVersion = $composerinfo->extra->version; - - $phpMinVer = (\str_replace(['<', '>', '='], '', $composerinfo->require->php)); - //$this->prtrace($appVersion); - //$this->dump($composerinfo); - $settings = [ - 'determineRouteBeforeAppMiddleware' => true, - 'base_path' => self::BASE_PATH, - 'subfolder' => self::SUBFOLDER, - 'debug' => self::DEBUGMODE, - - // Configuration file version. If this is greater than that in config.inc.php, then - // the app will refuse to run. This and $conf['version'] should be incremented whenever - // backwards incompatible changes are made to config.inc.php-dist. - 'base_version' => 61, - // Application version - 'appVersion' => 'v' . $appVersion, - // Application name - 'appName' => 'phpPgAdmin6', - - // PostgreSQL and PHP minimum version - 'postgresqlMinVer' => '9.3', - 'phpMinVer' => $phpMinVer, - 'displayErrorDetails' => self::DEBUGMODE, - 'addContentLengthHeader' => false, - ]; + + return \implode(\DIRECTORY_SEPARATOR, [$this->subFolder, $path]); + } + public static function getAppInstance(array $config = []): \Slim\App + { + + $config = \array_merge(self::getDefaultConfig(), $config); + $container = self::getContainerInstance($config); - if (!self::DEBUGMODE && !IN_TEST) { - $settings['routerCacheFile'] = self::BASE_PATH . '/temp/route.cache.php'; + if (!self::$appInstance) { + self::$appInstance = new \Slim\App($container); } - $config = [ + + return self::$appInstance; + } + + public static function getContainerInstance(array $config = []): self + { + self::$envConfig = [ 'msg' => '', 'appThemes' => [ 'default' => 'Default', @@ -104,286 +115,296 @@ class ContainerUtils 'gotar' => 'Blue/Green', 'bootstrap' => 'Bootstrap3', ], - 'settings' => $settings, + 'BASE_PATH'=>$config['BASE_PATH']??dirname(__DIR__,2), + 'subFolder'=>$config['subfolder']??'', + 'DEBUGMODE'=>$config['debugmode']??false, + 'THEME_PATH'=>$config['theme_path']??dirname(__DIR__,2).'/assets/themes', + 'IN_TEST'=>$config['IN_TEST']??false, + 'webdbLastTab'=>[] ]; - $this->_app = new App($config); - // Fetch DI Container - $container = $this->_app->getContainer(); - $container['utils'] = $this; - $container['version'] = 'v' . $appVersion; - $container['errors'] = []; - $container['requestobj'] = $container['request']; - $container['responseobj'] = $container['response']; + self::$envConfig=array_merge( self::$envConfig,$config); + if (!self::$instance) { + self::$instance = new static(self::$envConfig); + + self::$instance + ->withConf(self::$envConfig) + ->setExtra() + ->setMisc() + ->setViews(); + } + //ddd($container->subfolder); + return self::$instance; +} - $this->container = $container; +/** + * Determines the redirection url according to query string. + * + * @return string the redirect url + */ +public function getRedirectUrl() +{$container=self::getContainerInstance(); + $query_string = $container->request->getUri()->getQuery(); + + // if server_id isn't set, then you will be redirected to intro + if (null === $container->request->getQueryParam('server')) { + $destinationurl = self::$envConfig['subFolder'] . '/src/views/intro'; + } else { + // otherwise, you'll be redirected to the login page for that server; + $destinationurl = self::$envConfig['subFolder'] . '/src/views/login' . ($query_string ? '?' . $query_string : ''); } - /** - * Gets the container instance. - * - * @throws \Exception (description) - * - * @return \Slim\Container the container instance - */ - public static function getContainerInstance() - { - $_instance = self::getInstance(); + return $destinationurl; +} - if (!$container = $_instance->container) { - throw new \Exception('Could not get a container'); - } +/** + * Adds a flash message to the session that will be displayed on the next request. + * + * @param mixed $content msg content (can be object, array, etc) + * @param string $key The key to associate with the message. Defaults to the stack + * trace of the closure or method that called addFlassh + */ +public function addFlash($content, $key = ''): void +{ + if ('' === $key) { + $key = self::getBackTrace(); + }$container=self::getContainerInstance(); + // $this->dump(__METHOD__ . ': addMessage ' . $key . ' ' . json_encode($content)); + if ($container->flash) { + $container->flash->addMessage($key, $content); + } +} - return $container; +/** + * Gets the destination with the last active tab selected for that controller + * Usually used after going through a redirect route. + * + * @param string $subject The subject, usually a view name like 'server' or 'table' + * + * @return string The destination url with last tab set in the query string + */ +public function getDestinationWithLastTab($subject) +{$container=self::getContainerInstance(); + $_server_info = $container->misc->getServerInfo(); + $this->addFlash($subject, 'getDestinationWithLastTab'); + //$this->prtrace('$_server_info', $_server_info); + // If username isn't set in server_info, you should login + $url = $container->misc->getLastTabURL($subject) ?? ['url' => 'alldb', 'urlvars' => ['subject' => 'server']]; + $destinationurl = $this->getRedirectUrl(); + + if (!isset($_server_info['username'])) { + return $destinationurl; } - /** - * Gets the instance. - */ - public static function getInstance(): self - { - if (!$_instance = self::$_instance) { - self::$_instance = new self(); - $_instance = self::$_instance; + if (!\is_array($url)) { + return $this->getRedirectUrl($subject); + } + $this->addFlash($url, 'getLastTabURL for ' . $subject); + // Load query vars into superglobal arrays + if (isset($url['urlvars'])) { + $urlvars = []; + + foreach ($url['urlvars'] as $key => $urlvar) { + //$this->prtrace($key, $urlvar); + $urlvars[$key] = \PHPPgAdmin\Decorators\Decorator::get_sanitized_value($urlvar, $_REQUEST); } - - return $_instance; + $_REQUEST = \array_merge($_REQUEST, $urlvars); + $_GET = \array_merge($_GET, $urlvars); } + $actionurl = \PHPPgAdmin\Decorators\Decorator::actionurl($url['url'], $_GET); + $destinationurl = $actionurl->value($_GET); - /** - * Creates a container. - * - * @param array $conf The conf - * - * @return \Slim\App ( description_of_the_return_value ) - */ - public static function createApp($conf) - { - $_instance = self::getInstance(); - - $_instance - ->withConf($conf) - ->setExtra() - ->setMisc() - ->setViews(); + return \str_replace('views/?', "views/{$subject}?", $destinationurl); +} - //ddd($container->subfolder); - return $_instance->_app; - } +/** + * Adds an error to the errors array property of the container. + * + * @param string $errormsg The error msg + * + * @return\Slim\Container The app container + */ +public function addError(string $errormsg): \Slim\Container +{ + $container=self::getContainerInstance(); + $errors = $container->get('errors'); + $errors[] = $errormsg; + $container->offsetSet('errors', $errors); - /** - * Determines the redirection url according to query string. - * - * @return string the redirect url - */ - public function getRedirectUrl() - { - $query_string = requestInstance()->getUri()->getQuery(); + return $container; +} - // if server_id isn't set, then you will be redirected to intro - if (null === requestInstance()->getQueryParam('server')) { - $destinationurl = self::SUBFOLDER . '/src/views/intro'; +/** + * @param array $conf + */ +private function withConf($conf): self +{ + $container = self::getContainerInstance(); + $conf['plugins'] = []; + + $container->BASE_PATH=$conf['BASE_PATH']; + $container->subFolder=$conf['subfolder']; + $container->DEBUGMODE=$conf['debugmode']; + $container->THEME_PATH=$conf['theme_path']; + $container->IN_TEST=$conf['IN_TEST']; + $container['errors'] = []; + $container['conf'] = static function (\Slim\Container $c) use ($conf): array { + $display_sizes = $conf['display_sizes']; + + if (\is_array($display_sizes)) { + $conf['display_sizes'] = [ + 'schemas' => (bool) isset($display_sizes['schemas']) && true === $display_sizes['schemas'], + 'tables' => (bool) isset($display_sizes['tables']) && true === $display_sizes['tables'], + ]; } else { - // otherwise, you'll be redirected to the login page for that server; - $destinationurl = self::SUBFOLDER . '/src/views/login' . ($query_string ? '?' . $query_string : ''); + $conf['display_sizes'] = [ + 'schemas' => (bool) $display_sizes, + 'tables' => (bool) $display_sizes, + ]; } - return $destinationurl; - } - - /** - * Adds a flash message to the session that will be displayed on the next request. - * - * @param mixed $content msg content (can be object, array, etc) - * @param string $key The key to associate with the message. Defaults to the stack - * trace of the closure or method that called addFlassh - */ - public function addFlash($content, $key = ''): void - { - if ('' === $key) { - $key = self::getBackTrace(); + if (!isset($conf['theme'])) { + $conf['theme'] = 'default'; } - // $this->dump(__METHOD__ . ': addMessage ' . $key . ' ' . json_encode($content)); - if ($this->container->flash) { - $this->container->flash->addMessage($key, $content); - } - } - /** - * Gets the destination with the last active tab selected for that controller - * Usually used after going through a redirect route. - * - * @param string $subject The subject, usually a view name like 'server' or 'table' - * - * @return string The destination url with last tab set in the query string - */ - public function getDestinationWithLastTab($subject) - { - $_server_info = $this->container->misc->getServerInfo(); - $this->addFlash($subject, 'getDestinationWithLastTab'); - //$this->prtrace('$_server_info', $_server_info); - // If username isn't set in server_info, you should login - $url = $this->container->misc->getLastTabURL($subject) ?? ['url' => 'alldb', 'urlvars' => ['subject' => 'server']]; - $destinationurl = $this->getRedirectUrl(); - - if (!isset($_server_info['username'])) { - return $destinationurl; - } + foreach ($conf['servers'] as &$server) { + if (!isset($server['port'])) { + $server['port'] = 5432; + } - if (!\is_array($url)) { - return $this->getRedirectUrl($subject); - } - $this->addFlash($url, 'getLastTabURL for ' . $subject); - // Load query vars into superglobal arrays - if (isset($url['urlvars'])) { - $urlvars = []; - - foreach ($url['urlvars'] as $key => $urlvar) { - //$this->prtrace($key, $urlvar); - $urlvars[$key] = \PHPPgAdmin\Decorators\Decorator::get_sanitized_value($urlvar, $_REQUEST); + if (!isset($server['sslmode'])) { + $server['sslmode'] = 'unspecified'; } - $_REQUEST = \array_merge($_REQUEST, $urlvars); - $_GET = \array_merge($_GET, $urlvars); } - $actionurl = \PHPPgAdmin\Decorators\Decorator::actionurl($url['url'], $_GET); - $destinationurl = $actionurl->value($_GET); + //self::$envConfig=[ + //'BASE_PATH'=>$conf['BASE_PATH'], + //'subFolder'=>$conf['subfolder'], + //'DEBUGMODE'=>$conf['debugmode'], + //'THEME_PATH'=>$conf['theme_path'], + //'IN_TEST'=>$conf['IN_TEST'] + //]; + + return $conf; + }; + + $container->subfolder = $conf['subfolder']; + + + return $this; +} - return \str_replace('views/?', "views/{$subject}?", $destinationurl); - } +/** + * Sets the views. + * + * @return self ( description_of_the_return_value ) + */ +private function setViews() +{ + $container = self::getContainerInstance(); /** - * Adds an error to the errors array property of the container. - * - * @param string $errormsg The error msg - * - * @return\Slim\Container The app container + * @return \PHPPgAdmin\ViewManager */ - public function addError(string $errormsg): \Slim\Container - { - //dump($errormsg); - $errors = $this->container->get('errors'); - $errors[] = $errormsg; - $this->container->offsetSet('errors', $errors); + $container['view'] = static function (\Slim\Container $c): \PHPPgAdmin\ViewManager { + $misc = $c->misc; + $view = new ViewManager(BASE_PATH . '/assets/templates', [ + 'cache' => BASE_PATH . '/temp/twigcache', + 'auto_reload' => $c->get('settings')['debug'], + 'debug' => $c->get('settings')['debug'], + ], $c); - return $this->container; - } + $misc->setView($view); + + return $view; + }; + return $this; +} + +/** + * Sets the instance of Misc class. + * + * @return self ( description_of_the_return_value ) + */ +private function setMisc() +{ + $container = self::getContainerInstance(); /** - * @param array $conf + * @return \PHPPgAdmin\Misc */ - private function withConf($conf): self - { - $container = self::getContainerInstance(); - $conf['plugins'] = []; - - $container['conf'] = static function (\Slim\Container $c) use ($conf): array { - $display_sizes = $conf['display_sizes']; - - if (\is_array($display_sizes)) { - $conf['display_sizes'] = [ - 'schemas' => (bool) isset($display_sizes['schemas']) && true === $display_sizes['schemas'], - 'tables' => (bool) isset($display_sizes['tables']) && true === $display_sizes['tables'], - ]; - } else { - $conf['display_sizes'] = [ - 'schemas' => (bool) $display_sizes, - 'tables' => (bool) $display_sizes, - ]; - } + $container['misc'] = static function (\Slim\Container $c): \PHPPgAdmin\Misc { + $misc = new \PHPPgAdmin\Misc($c); - if (!isset($conf['theme'])) { - $conf['theme'] = 'default'; - } + $conf = $c->get('conf'); - foreach ($conf['servers'] as &$server) { - if (!isset($server['port'])) { - $server['port'] = 5432; - } + // 4. Check for theme by server/db/user + $_server_info = $misc->getServerInfo(); - if (!isset($server['sslmode'])) { - $server['sslmode'] = 'unspecified'; - } - } + /* starting with PostgreSQL 9.0, we can set the application name */ + if (isset($_server_info['pgVersion']) && 9 <= $_server_info['pgVersion']) { + \putenv('PGAPPNAME=' . $c->get('settings')['appName'] . '_' . $c->get('settings')['appVersion']); + } - return $conf; - }; - $container->subfolder = self::SUBFOLDER; + return $misc; + }; - return $this; - } + return $this; +} - /** - * Sets the views. - * - * @return self ( description_of_the_return_value ) - */ - private function setViews() - { - $container = self::getContainerInstance(); +private function setExtra() +{ + $container = self::getContainerInstance(); + $container['flash'] = static function (): \Slim\Flash\Messages { + return new \Slim\Flash\Messages(); + }; - /** - * @return \PHPPgAdmin\ViewManager - */ - $container['view'] = static function (\Slim\Container $c): \PHPPgAdmin\ViewManager { - $misc = $c->misc; - $view = new ViewManager(BASE_PATH . '/assets/templates', [ - 'cache' => BASE_PATH . '/temp/twigcache', - 'auto_reload' => $c->get('settings')['debug'], - 'debug' => $c->get('settings')['debug'], - ], $c); + $container['lang'] = static function (\Slim\Container $c): array { + $translations = new \PHPPgAdmin\Translations($c); - $misc->setView($view); + return $translations->lang; + }; - return $view; - }; + return $this; +} - return $this; + public static function getDefaultConfig():array + { + return [ + 'settings' => [ + 'displayErrorDetails' => self::$envConfig['DEBUGMODE'], + 'determineRouteBeforeAppMiddleware' => true, + 'base_path' => \dirname(__DIR__, 2), + 'debug' => self::$envConfig['DEBUGMODE'], + 'phpMinVer' => '7.1', // PHP minimum version + 'addContentLengthHeader' => false, + 'appName' => 'PHPPgAdmin6' + ], + ]; } /** - * Sets the instance of Misc class. + * This function registers the default services that Slim needs to work. * - * @return self ( description_of_the_return_value ) + * All services are shared, they are registered such that the + * same instance is returned on subsequent calls. + * + * @param array $userSettings Associative array of application settings */ - private function setMisc() + private function registerDefaultServices($userSettings): void { - $container = self::getContainerInstance(); + $defaultSettings = $this->defaultSettings; + /** - * @return \PHPPgAdmin\Misc + * This service MUST return an array or an instance of ArrayAccess. + * + * @return array|ArrayAccess */ - $container['misc'] = static function (\Slim\Container $c): \PHPPgAdmin\Misc { - $misc = new \PHPPgAdmin\Misc($c); - - $conf = $c->get('conf'); - - // 4. Check for theme by server/db/user - $_server_info = $misc->getServerInfo(); - - /* starting with PostgreSQL 9.0, we can set the application name */ - if (isset($_server_info['pgVersion']) && 9 <= $_server_info['pgVersion']) { - \putenv('PGAPPNAME=' . $c->get('settings')['appName'] . '_' . $c->get('settings')['appVersion']); - } - - return $misc; - }; - - return $this; - } - - private function setExtra() - { - $container = self::getContainerInstance(); - $container['flash'] = static function (): \Slim\Flash\Messages { - return new \Slim\Flash\Messages(); - }; - - $container['lang'] = static function (\Slim\Container $c): array { - $translations = new \PHPPgAdmin\Translations($c); - - return $translations->lang; + $this['settings'] = static function () use ($userSettings, $defaultSettings):\Slim\Collection { + return new Collection(\array_merge($defaultSettings, $userSettings)); }; - return $this; + $defaultProvider = new DefaultServicesProvider(); + $defaultProvider->register($this); } } diff --git a/src/classes/Misc.php b/src/classes/Misc.php index 0cd3b75d..37ea9b8c 100644 --- a/src/classes/Misc.php +++ b/src/classes/Misc.php @@ -25,18 +25,9 @@ class Misc use \PHPPgAdmin\Traits\HelperTrait; use \PHPPgAdmin\Traits\MiscTrait; - /** - * @var string - */ - const BASE_PATH = ContainerUtils::BASE_PATH; - /** - * @var string - */ - const SUBFOLDER = ContainerUtils::SUBFOLDER; - /** - * @var string - */ - const DEBUGMODE = ContainerUtils::DEBUGMODE; + + + /** * @var array @@ -86,7 +77,7 @@ class Misc public $view; /** - * @var \Slim\Container + * @var \PHPPgAdmin\ContainerUtils */ protected $container; @@ -131,9 +122,9 @@ class Misc private $_error_msg = ''; /** - * @param \Slim\Container $container The container + * @param \PHPPgAdmin\ContainerUtils $container The container */ - public function __construct(\Slim\Container $container) + public function __construct(\PHPPgAdmin\ContainerUtils $container) { $this->container = $container; @@ -210,7 +201,7 @@ class Misc */ public function serverToSha() { - $request_server = \requestInstance()->getParam('server'); + $request_server = $this->container->request->getParam('server'); if (null === $request_server) { return null; @@ -372,7 +363,7 @@ class Misc } if (!$_connection) { - $this->container->utils->addError($lang['strloginfailed']); + $this->container->addError($lang['strloginfailed']); $this->setErrorMsg($lang['strloginfailed']); return null; @@ -384,7 +375,7 @@ class Misc if (null === $_type) { $errormsg = \sprintf($lang['strpostgresqlversionnotsupported'], $this->postgresqlMinVer); - $this->container->utils->addError($errormsg); + $this->container->addError($errormsg); $this->setErrorMsg($errormsg); return null; @@ -418,7 +409,7 @@ class Misc $status = $this->_data->setSchema($_REQUEST['schema']); if (0 !== $status) { - $this->container->utils->addError($this->lang['strbadschema']); + $this->container->addError($this->lang['strbadschema']); $this->setErrorMsg($this->lang['strbadschema']); return null; @@ -563,7 +554,7 @@ class Misc public function setServerInfo($key, $value, $server_id = null): void { if (null === $server_id) { - $server_id = requestInstance()->getParam('server'); + $server_id = $this->container->request->getParam('server'); } if (null === $key) { diff --git a/src/classes/ViewManager.php b/src/classes/ViewManager.php index 246448b8..ecd9f5dd 100644 --- a/src/classes/ViewManager.php +++ b/src/classes/ViewManager.php @@ -6,7 +6,6 @@ namespace PHPPgAdmin; -use Psr\Http\Message\ResponseInterface; /** * @file @@ -24,23 +23,10 @@ class ViewManager extends \Slim\Views\Twig { use \PHPPgAdmin\Traits\HelperTrait; - /** - * @var string - */ - const BASE_PATH = ContainerUtils::BASE_PATH; - /** - * @var string - */ - const THEME_PATH = ContainerUtils::THEME_PATH; - /** - * @var string - */ - const SUBFOLDER = ContainerUtils::SUBFOLDER; - /** - * @var string - */ - const DEBUGMODE = ContainerUtils::DEBUGMODE; + + + /** * @var array @@ -95,7 +81,7 @@ class ViewManager extends \Slim\Views\Twig public $misc; /** - * @var \Slim\Container + * @var \PHPPgAdmin\ContainerUtils */ protected $container; @@ -135,12 +121,12 @@ class ViewManager extends \Slim\Views\Twig private static $instance; /** - * @param \Slim\Container $container The container + * @param \PHPPgAdmin\ContainerUtils $container The container * @param mixed $path * @param mixed $settings - * @param \Slim\Container $c + * @param \PHPPgAdmin\ContainerUtils $c */ - public function __construct($path, $settings, \Slim\Container $c) + public function __construct($path, $settings, \PHPPgAdmin\ContainerUtils $c) { $this->lang = $c->get('lang'); $this->conf = $c->get('conf'); @@ -155,7 +141,7 @@ class ViewManager extends \Slim\Views\Twig $this->addExtension(new \Slim\Views\TwigExtension($c['router'], $basePath)); - $this->offsetSet('subfolder', self::SUBFOLDER); + $this->offsetSet('subfolder', \containerInstance()->subFolder); $this->offsetSet('theme', $this->misc->getConf('theme')); $this->offsetSet('Favicon', $this->icon('Favicon')); $this->offsetSet('Introduction', $this->icon('Introduction')); @@ -175,7 +161,7 @@ class ViewManager extends \Slim\Views\Twig } } - public function maybeRenderIframes(ResponseInterface $response, string $subject, string $query_string): ResponseInterface + public function maybeRenderIframes(\Slim\Http\Response $response, string $subject, string $query_string): \Slim\Http\Response { $c = $this->getContainer(); @@ -310,7 +296,7 @@ class ViewManager extends \Slim\Views\Twig public function getHelpLink($help) { return \htmlspecialchars( - $this->getSubfolder('help?help=') . + $this->container->getSubfolder('help?help=') . \urlencode($help) . '&server=' . \urlencode($this->misc->getServerId()) @@ -328,30 +314,30 @@ class ViewManager extends \Slim\Views\Twig $theme = $this->conf['theme']; $path = 'assets/images/themes'; - $default_icon = \sprintf('%s/%s/default/DisconnectedServer.png', self::SUBFOLDER, $path); + $default_icon = \sprintf('%s/%s/default/DisconnectedServer.png', \containerInstance()->subFolder, $path); - if (\is_readable(\sprintf('%s/%s/%s/%s.png', self::BASE_PATH, $path, $theme, $icon))) { - return \sprintf('%s/%s/%s/%s.png', self::SUBFOLDER, $path, $theme, $icon); + if (\is_readable(\sprintf('%s/%s/%s/%s.png', \containerInstance()->BASE_PATH, $path, $theme, $icon))) { + return \sprintf('%s/%s/%s/%s.png', \containerInstance()->subFolder, $path, $theme, $icon); } - if (\is_readable(\sprintf('%s/%s/%s/%s.gif', self::BASE_PATH, $path, $theme, $icon))) { - return \sprintf('%s/%s/%s/%s.gif', self::SUBFOLDER, $path, $theme, $icon); + if (\is_readable(\sprintf('%s/%s/%s/%s.gif', \containerInstance()->BASE_PATH, $path, $theme, $icon))) { + return \sprintf('%s/%s/%s/%s.gif', \containerInstance()->subFolder, $path, $theme, $icon); } - if (\is_readable(\sprintf('%s/%s/%s/%s.ico', self::BASE_PATH, $path, $theme, $icon))) { - return \sprintf('%s/%s/%s/%s.ico', self::SUBFOLDER, $path, $theme, $icon); + if (\is_readable(\sprintf('%s/%s/%s/%s.ico', \containerInstance()->BASE_PATH, $path, $theme, $icon))) { + return \sprintf('%s/%s/%s/%s.ico', \containerInstance()->subFolder, $path, $theme, $icon); } - if (\is_readable(\sprintf('%s/%s/default/%s.png', self::BASE_PATH, $path, $icon))) { - return \sprintf('%s/%s/default/%s.png', self::SUBFOLDER, $path, $icon); + if (\is_readable(\sprintf('%s/%s/default/%s.png', \containerInstance()->BASE_PATH, $path, $icon))) { + return \sprintf('%s/%s/default/%s.png', \containerInstance()->subFolder, $path, $icon); } - if (\is_readable(\sprintf('%s/%s/default/%s.gif', self::BASE_PATH, $path, $icon))) { - return \sprintf('%s/%s/default/%s.gif', self::SUBFOLDER, $path, $icon); + if (\is_readable(\sprintf('%s/%s/default/%s.gif', \containerInstance()->BASE_PATH, $path, $icon))) { + return \sprintf('%s/%s/default/%s.gif', \containerInstance()->subFolder, $path, $icon); } - if (\is_readable(\sprintf('%s/%s/default/%s.ico', self::BASE_PATH, $path, $icon))) { - return \sprintf('%s/%s/default/%s.ico', self::SUBFOLDER, $path, $icon); + if (\is_readable(\sprintf('%s/%s/default/%s.ico', \containerInstance()->BASE_PATH, $path, $icon))) { + return \sprintf('%s/%s/default/%s.ico', \containerInstance()->subFolder, $path, $icon); } return $default_icon; @@ -371,7 +357,7 @@ class ViewManager extends \Slim\Views\Twig return '\PHPPgAdmin\Controller\\' . \ucfirst($subject) . 'Controller'; } - private function getContainer(): \Slim\Container + private function getContainer(): \PHPPgAdmin\ContainerUtils { return $this->container; } @@ -385,7 +371,7 @@ class ViewManager extends \Slim\Views\Twig private function getThemeFolders(): array { // no THEME_PATH (how?) then return empty array - if (!$gestor = \opendir(self::THEME_PATH)) { + if (!$gestor = \opendir(containerInstance()->THEME_PATH)) { \closedir($gestor); return []; @@ -398,7 +384,7 @@ class ViewManager extends \Slim\Views\Twig continue; } - $folderpath = \sprintf('%s%s%s', self::THEME_PATH, \DIRECTORY_SEPARATOR, $foldername); + $folderpath = \sprintf('%s%s%s', \containerInstance()->THEME_PATH, \DIRECTORY_SEPARATOR, $foldername); $stylesheet = \sprintf('%s%s%s', $folderpath, \DIRECTORY_SEPARATOR, 'global.css'); // if $folderpath if indeed a folder and contains a global.css file, then it's a theme if (\is_dir($folderpath) && diff --git a/src/controllers/AggregatesController.php b/src/controllers/AggregatesController.php index 2fa97293..e6941c8e 100644 --- a/src/controllers/AggregatesController.php +++ b/src/controllers/AggregatesController.php @@ -276,7 +276,7 @@ class AggregatesController extends BaseController $this->printTitle($this->lang['strcreateaggregate'], 'pg.aggregate.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/aggregates" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/aggregates" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; echo "\t\t<td class=\"data\"><input name=\"name\" size=\"32\" maxlength=\"{$this->data->_maxNameLen}\" value=\"", @@ -359,7 +359,7 @@ class AggregatesController extends BaseController $this->printTitle($this->lang['stralter'], 'pg.aggregate.alter'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/aggregates" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/aggregates" method="post">' . \PHP_EOL; $aggrdata = $this->data->getAggregate($_REQUEST['aggrname'], $_REQUEST['aggrtype']); if (0 < $aggrdata->recordCount()) { @@ -408,7 +408,7 @@ class AggregatesController extends BaseController echo '<p>', \sprintf($this->lang['strconfdropaggregate'], \htmlspecialchars($_REQUEST['aggrname'])), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/aggregates" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/aggregates" method="post">' . \PHP_EOL; echo "<p><input type=\"checkbox\" id=\"cascade\" name=\"cascade\" /> <label for=\"cascade\">{$this->lang['strcascade']}</label></p>" . \PHP_EOL; echo '<p><input type="hidden" name="action" value="drop" />' . \PHP_EOL; echo '<input type="hidden" name="aggrname" value="', \htmlspecialchars($_REQUEST['aggrname']), '" />' . \PHP_EOL; diff --git a/src/controllers/AlldbController.php b/src/controllers/AlldbController.php index 9e184d3b..49f85936 100644 --- a/src/controllers/AlldbController.php +++ b/src/controllers/AlldbController.php @@ -112,7 +112,7 @@ class AlldbController extends BaseController 'database' => [ 'title' => $this->lang['strdatabase'], 'field' => Decorator::field('datname'), - 'url' => self::SUBFOLDER . $redirecturl . '&', + 'url' => \containerInstance()->subFolder . $redirecturl . '&', 'vars' => ['database' => 'datname'], ], 'owner' => [ @@ -267,7 +267,7 @@ class AlldbController extends BaseController $this->printTrail('database'); $this->printTitle($this->lang['stralter'], 'pg.database.alter'); - echo '<form action="' . self::SUBFOLDER . '/src/views/alldb" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/alldb" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "<tr><th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; echo '<td class="data1">'; @@ -340,7 +340,7 @@ class AlldbController extends BaseController $this->printTrail('database'); $this->printTitle($this->lang['strdrop'], 'pg.database.drop'); - echo '<form action="' . self::SUBFOLDER . '/src/views/alldb" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/alldb" method="post">' . \PHP_EOL; //If multi drop if (isset($_REQUEST['ma'])) { foreach ($_REQUEST['ma'] as $v) { @@ -427,7 +427,7 @@ class AlldbController extends BaseController $tablespaces = $data->getTablespaces(); } - echo '<form action="' . self::SUBFOLDER . '/src/views/alldb" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/alldb" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; echo "\t\t<td class=\"data1\"><input name=\"formName\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"", diff --git a/src/controllers/BaseController.php b/src/controllers/BaseController.php index e56c3561..4cc39670 100644 --- a/src/controllers/BaseController.php +++ b/src/controllers/BaseController.php @@ -9,25 +9,14 @@ namespace PHPPgAdmin\Controller; use PHPPgAdmin\ContainerUtils; use PHPPgAdmin\XHtml; -\ini_set('display_errors', ContainerUtils::DEBUGMODE); + /** * Base controller class. */ class BaseController { use \PHPPgAdmin\Traits\HelperTrait; - /** - * @var string - */ - const BASE_PATH = ContainerUtils::BASE_PATH; - /** - * @var string - */ - const SUBFOLDER = ContainerUtils::SUBFOLDER; - /** - * @var string - */ - const DEBUGMODE = ContainerUtils::DEBUGMODE; + public $appLangFiles = []; @@ -160,27 +149,25 @@ class BaseController if (true === $this->no_db_connection) { $this->misc->setNoDBConnection(true); } -$this->renderInitialPageIfNotLogged(); - - } -private function renderInitialPageIfNotLogged() { - if (false === $this->misc->getNoDBConnection()) { - if (null === $this->misc->getServerId()) { - $servers_controller = new \PHPPgAdmin\Controller\ServersController($this->container); - return $servers_controller->render(); - } - $_server_info = $this->misc->getServerInfo(); - // Redirect to the login form if not logged in - if (!isset($_server_info['username'])) { - $msg = \sprintf($this->lang['strlogoutmsg'], $_server_info['desc']??''); + if (false === $this->misc->getNoDBConnection()) { + if (null === $this->misc->getServerId()) { + $servers_controller = new \PHPPgAdmin\Controller\ServersController($container); - $servers_controller = new \PHPPgAdmin\Controller\ServersController($this->container); + return $servers_controller->render(); + } + $_server_info = $this->misc->getServerInfo(); + // Redirect to the login form if not logged in + if (!isset($_server_info['username'])) { + $msg = \sprintf($this->lang['strlogoutmsg'], $_server_info['desc']); - return $servers_controller->render(); + $servers_controller = new \PHPPgAdmin\Controller\ServersController($container); + + return $servers_controller->render(); + } } } -} + /** * Default method to render the controller according to the action parameter. It should return with a PSR * responseObject but it prints texts whatsoeever. @@ -259,7 +246,7 @@ private function renderInitialPageIfNotLogged() { * * @param array $tabs The tabs * - * @return \PHPPgAdmin\ArrayRecordSet filtered tabs in the form of an ArrayRecordSet + * @return \PHPPgAdmin\ArrayRecordSet|\PHPPgAdmin\ADORecordSet filtered tabs in the form of an ArrayRecordSet */ public function adjustTabsForTree(&$tabs) { @@ -271,7 +258,7 @@ private function renderInitialPageIfNotLogged() { /** * Produce JSON data for the browser tree. * - * @param \PHPPgAdmin\ArrayRecordSet $_treedata a set of records to populate the tree + * @param \PHPPgAdmin\ArrayRecordSet|\PHPPgAdmin\ADORecordSet $_treedata a set of records to populate the tree * @param array $attrs Attributes for tree items * @param string $section The section where the branch is linked in the tree * @param bool $print either to return or echo the result diff --git a/src/controllers/ColpropertiesController.php b/src/controllers/ColpropertiesController.php index 2bd3bc4d..6f033204 100644 --- a/src/controllers/ColpropertiesController.php +++ b/src/controllers/ColpropertiesController.php @@ -238,8 +238,8 @@ class ColpropertiesController extends BaseController $this->printTitle($this->lang['stralter'], 'pg.column.alter'); $this->printMsg($msg); - echo '<script src="' . self::SUBFOLDER . '/assets/js/tables.js" type="text/javascript"></script>'; - echo '<form action="' . self::SUBFOLDER . '/src/views/colproperties" method="post">' . \PHP_EOL; + echo '<script src="' . \containerInstance()->subFolder . '/assets/js/tables.js" type="text/javascript"></script>'; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/colproperties" method="post">' . \PHP_EOL; // Output table header echo '<table>' . \PHP_EOL; diff --git a/src/controllers/ConstraintsController.php b/src/controllers/ConstraintsController.php index edbbaf4a..f3c016cb 100644 --- a/src/controllers/ConstraintsController.php +++ b/src/controllers/ConstraintsController.php @@ -26,7 +26,7 @@ class ConstraintsController extends BaseController $this->printHeader( $this->lang['strtables'] . ' - ' . $_REQUEST['table'] . ' - ' . $this->lang['strconstraints'], - '<script src="' . self::SUBFOLDER . '/assets/js/indexes.js" type="text/javascript"></script>', + '<script src="' . \containerInstance()->subFolder . '/assets/js/indexes.js" type="text/javascript"></script>', true, 'header_select2.twig' ); @@ -540,7 +540,7 @@ class ConstraintsController extends BaseController $this->printTitle($this->lang['straddcheck'], 'pg.constraint.check'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/constraints" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/constraints" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "<tr><th class=\"data\">{$this->lang['strname']}</th>" . \PHP_EOL; echo "<th class=\"data required\">{$this->lang['strdefinition']}</th></tr>" . \PHP_EOL; diff --git a/src/controllers/DatabaseController.php b/src/controllers/DatabaseController.php index f6cc5ec3..4da3d561 100644 --- a/src/controllers/DatabaseController.php +++ b/src/controllers/DatabaseController.php @@ -41,7 +41,7 @@ class DatabaseController extends BaseController $scripts = ''; // normal flow if ('locks' === $this->action || 'processes' === $this->action) { - $scripts .= '<script src="' . self::SUBFOLDER . '/assets/js/database.js" type="text/javascript"></script>'; + $scripts .= '<script src="' . \containerInstance()->subFolder . '/assets/js/database.js" type="text/javascript"></script>'; $refreshTime = $this->conf['ajax_refresh'] * 1500; @@ -184,7 +184,7 @@ class DatabaseController extends BaseController $this->printTabs('database', 'find'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/database" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/database" method="post">' . \PHP_EOL; echo '<p><input name="term" value="', \htmlspecialchars($_REQUEST['term']), "\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" />" . \PHP_EOL; // Output list of filters. This is complex due to all the 'has' and 'conf' feature possibilities @@ -546,7 +546,7 @@ class DatabaseController extends BaseController $this->printTrail('database'); $this->printTabs('database', 'sql'); echo "<p>{$this->lang['strentersql']}</p>" . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/sql" method="post" enctype="multipart/form-data" id="sqlform">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/sql" method="post" enctype="multipart/form-data" id="sqlform">' . \PHP_EOL; echo "<p>{$this->lang['strsql']}<br />" . \PHP_EOL; echo '<textarea style="width:95%;" rows="15" cols="50" name="query" id="query">', \htmlspecialchars($_SESSION['sqlquery']), '</textarea></p>' . \PHP_EOL; @@ -643,7 +643,7 @@ class DatabaseController extends BaseController switch ($curr) { case 'SCHEMA': $destination = $this->container->getDestinationWithLastTab('schema'); - echo '<li><a href="' . self::SUBFOLDER . "{$destination}"; + echo '<li><a href="' . \containerInstance()->subFolder . "{$destination}"; echo $this->misc->printVal($rs->fields['name']), '">'; echo $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']); echo '</a></li>' . \PHP_EOL; @@ -653,7 +653,7 @@ class DatabaseController extends BaseController echo '<li>'; echo "<a href=\"tables?subject=schema&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; $destination = $this->container->getDestinationWithLastTab('table'); - echo '<a href="' . self::SUBFOLDER . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&table=', + echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&table=', \urlencode($rs->fields['name']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL; break; @@ -661,7 +661,7 @@ class DatabaseController extends BaseController echo '<li>'; echo "<a href=\"views?subject=schema&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; $destination = $this->container->getDestinationWithLastTab('view'); - echo '<a href="' . self::SUBFOLDER . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&view=', + echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&view=', \urlencode($rs->fields['name']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL; break; @@ -675,7 +675,7 @@ class DatabaseController extends BaseController case 'COLUMNTABLE': echo '<li>'; $destination = $this->container->getDestinationWithLastTab('schema'); - echo '<a href="' . self::SUBFOLDER . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; + echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; echo "<a href=\"tblproperties?subject=table&{$this->misc->href}&table=", \urlencode($rs->fields['relname']), '&schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.'; echo "<a href=\"colproperties?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&table=', \urlencode($rs->fields['relname']), '&column=', \urlencode($rs->fields['name']), '">', @@ -685,7 +685,7 @@ class DatabaseController extends BaseController case 'COLUMNVIEW': echo '<li>'; $destination = $this->container->getDestinationWithLastTab('schema'); - echo '<a href="' . self::SUBFOLDER . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; + echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; echo "<a href=\"viewproperties?subject=view&{$this->misc->href}&view=", \urlencode($rs->fields['relname']), '&schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.'; echo "<a href=\"colproperties?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&view=', \urlencode($rs->fields['relname']), '&column=', \urlencode($rs->fields['name']), '">', @@ -695,18 +695,18 @@ class DatabaseController extends BaseController case 'INDEX': echo '<li>'; $destination = $this->container->getDestinationWithLastTab('schema'); - echo '<a href="' . self::SUBFOLDER . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; + echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; $destination = $this->container->getDestinationWithLastTab('table'); - echo '<a href="' . self::SUBFOLDER . "{$destination}?{$this->misc->href}&table=", \urlencode($rs->fields['relname']), '&schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.'; + echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&table=", \urlencode($rs->fields['relname']), '&schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.'; echo "<a href=\"indexes?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&table=', \urlencode($rs->fields['relname']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL; break; case 'CONSTRAINTTABLE': echo '<li>'; $destination = $this->container->getDestinationWithLastTab('schema'); - echo '<a href="' . self::SUBFOLDER . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; + echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; $destination = $this->container->getDestinationWithLastTab('table'); - echo '<a href="' . self::SUBFOLDER . "{$destination}?{$this->misc->href}&table=", \urlencode($rs->fields['relname']), '&schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.'; + echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&table=", \urlencode($rs->fields['relname']), '&schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.'; echo "<a href=\"constraints?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&table=', \urlencode($rs->fields['relname']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL; @@ -721,9 +721,9 @@ class DatabaseController extends BaseController case 'TRIGGER': echo '<li>'; $destination = $this->container->getDestinationWithLastTab('schema'); - echo '<a href="' . self::SUBFOLDER . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; + echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; $destination = $this->container->getDestinationWithLastTab('table'); - echo '<a href="' . self::SUBFOLDER . "{$destination}?{$this->misc->href}&table=", \urlencode($rs->fields['relname']), '&schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.'; + echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&table=", \urlencode($rs->fields['relname']), '&schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.'; echo "<a href=\"triggers?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&table=', \urlencode($rs->fields['relname']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL; @@ -731,9 +731,9 @@ class DatabaseController extends BaseController case 'RULETABLE': echo '<li>'; $destination = $this->container->getDestinationWithLastTab('schema'); - echo '<a href="' . self::SUBFOLDER . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; + echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; $destination = $this->container->getDestinationWithLastTab('table'); - echo '<a href="' . self::SUBFOLDER . "{$destination}?{$this->misc->href}&table=", \urlencode($rs->fields['relname']), '&schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.'; + echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&table=", \urlencode($rs->fields['relname']), '&schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.'; echo "<a href=\"rules?subject=table&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&reltype=table&table=', \urlencode($rs->fields['relname']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL; @@ -741,9 +741,9 @@ class DatabaseController extends BaseController case 'RULEVIEW': echo '<li>'; $destination = $this->container->getDestinationWithLastTab('schema'); - echo '<a href="' . self::SUBFOLDER . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; + echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; $destination = $this->container->getDestinationWithLastTab('view'); - echo '<a href="' . self::SUBFOLDER . "{$destination}?{$this->misc->href}&view=", \urlencode($rs->fields['relname']), '&schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.'; + echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&view=", \urlencode($rs->fields['relname']), '&schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.'; echo "<a href=\"rules?subject=view&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&reltype=view&view=', \urlencode($rs->fields['relname']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL; @@ -798,7 +798,7 @@ class DatabaseController extends BaseController case 'OPCLASS': echo '<li>'; $destination = $this->container->getDestinationWithLastTab('schema'); - echo '<a href="' . self::SUBFOLDER . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; + echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.'; echo "<a href=\"opclasses?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL; diff --git a/src/controllers/DataexportController.php b/src/controllers/DataexportController.php index 01fafcb0..e205d562 100644 --- a/src/controllers/DataexportController.php +++ b/src/controllers/DataexportController.php @@ -109,7 +109,7 @@ class DataexportController extends BaseController $this->printMsg($msg); } - echo '<form action="' . self::SUBFOLDER . '/src/views/dataexport" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/dataexport" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "<tr><th class=\"data\">{$this->lang['strformat']}:</th><td><select name=\"d_format\">" . \PHP_EOL; // COPY and SQL require a table @@ -243,7 +243,7 @@ class DataexportController extends BaseController { $response = $this ->container - ->responseobj; + ->response; // Make it do a download, if necessary if ('download' !== $_REQUEST['output']) { diff --git a/src/controllers/DbexportController.php b/src/controllers/DbexportController.php index 3e095a1e..95c72b07 100644 --- a/src/controllers/DbexportController.php +++ b/src/controllers/DbexportController.php @@ -23,7 +23,7 @@ class DbexportController extends BaseController $response = $this ->container - ->responseobj; + ->response; // Include application functions $f_schema = $f_object = ''; diff --git a/src/controllers/DisplayController.php b/src/controllers/DisplayController.php index cf2fc06e..1ff56444 100644 --- a/src/controllers/DisplayController.php +++ b/src/controllers/DisplayController.php @@ -26,7 +26,7 @@ class DisplayController extends BaseController \set_time_limit(0); - $scripts = '<script src="' . self::SUBFOLDER . '/assets/js/display.js" type="text/javascript"></script>'; + $scripts = '<script src="' . \containerInstance()->subFolder . '/assets/js/display.js" type="text/javascript"></script>'; $scripts .= '<script type="text/javascript">' . \PHP_EOL; $scripts .= "var Display = {\n"; @@ -213,7 +213,6 @@ class DisplayController extends BaseController 'search_path' => $_REQUEST['search_path'] ?? null, 'table' => $_REQUEST['table'] ?? null, 'nohistory' => $_REQUEST['nohistory'] ?? null, - 'subject'=>$subject ]; $this->coalesceArr($_REQUEST, 'query'); @@ -623,7 +622,7 @@ class DisplayController extends BaseController $fksprops = $this->_getFKProps(); - echo '<form action="' . self::SUBFOLDER . '/src/views/display" method="post" id="ac_form">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/display" method="post" id="ac_form">' . \PHP_EOL; $elements = 0; $error = true; @@ -747,7 +746,7 @@ class DisplayController extends BaseController echo '</p>' . \PHP_EOL; echo '</form>' . \PHP_EOL; - echo '<script src="' . self::SUBFOLDER . '/assets/js/insert_or_edit_row.js" type="text/javascript"></script>'; + echo '<script src="' . \containerInstance()->subFolder . '/assets/js/insert_or_edit_row.js" type="text/javascript"></script>'; } /** @@ -798,7 +797,7 @@ class DisplayController extends BaseController $resultset = $data->browseRow($_REQUEST['table'], $_REQUEST['key']); - echo '<form action="' . self::SUBFOLDER . '/src/views/display" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/display" method="post">' . \PHP_EOL; echo $this->view->form; if (1 === $resultset->recordCount()) { diff --git a/src/controllers/DomainsController.php b/src/controllers/DomainsController.php index 48815930..4be8c1cf 100644 --- a/src/controllers/DomainsController.php +++ b/src/controllers/DomainsController.php @@ -284,7 +284,7 @@ class DomainsController extends BaseController } // Display domain info - echo '<form action="' . self::SUBFOLDER . '/src/views/domains" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/domains" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "<tr><th class=\"data left required\" style=\"width: 70px\">{$this->lang['strname']}</th>" . \PHP_EOL; echo '<td class="data1">', $this->misc->printVal($domaindata->fields['domname']), '</td></tr>' . \PHP_EOL; @@ -336,7 +336,7 @@ class DomainsController extends BaseController $this->printTitle($this->lang['straddcheck'], 'pg.constraint.check'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/domains" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/domains" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "<tr><th class=\"data\">{$this->lang['strname']}</th>" . \PHP_EOL; echo "<th class=\"data required\">{$this->lang['strdefinition']}</th></tr>" . \PHP_EOL; @@ -393,7 +393,7 @@ class DomainsController extends BaseController $this->misc->printVal($_REQUEST['constraint']), $this->misc->printVal($_REQUEST['domain']) ), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/domains" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/domains" method="post">' . \PHP_EOL; echo '<input type="hidden" name="action" value="drop_con" />' . \PHP_EOL; echo '<input type="hidden" name="domain" value="', \htmlspecialchars($_REQUEST['domain']), '" />' . \PHP_EOL; echo '<input type="hidden" name="constraint" value="', \htmlspecialchars($_REQUEST['constraint']), '" />' . \PHP_EOL; @@ -560,7 +560,7 @@ class DomainsController extends BaseController $this->printTitle($this->lang['strdrop'], 'pg.domain.drop'); echo '<p>', \sprintf($this->lang['strconfdropdomain'], $this->misc->printVal($_REQUEST['domain'])), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/domains" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/domains" method="post">' . \PHP_EOL; echo "<p><input type=\"checkbox\" id=\"cascade\" name=\"cascade\" /><label for=\"cascade\">{$this->lang['strcascade']}</label></p>" . \PHP_EOL; echo '<p><input type="hidden" name="action" value="drop" />' . \PHP_EOL; echo '<input type="hidden" name="domain" value="', \htmlspecialchars($_REQUEST['domain']), '" />' . \PHP_EOL; @@ -606,7 +606,7 @@ class DomainsController extends BaseController $this->printTitle($this->lang['strcreatedomain'], 'pg.domain.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/domains" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/domains" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "<tr><th class=\"data left required\" style=\"width: 70px\">{$this->lang['strname']}</th>" . \PHP_EOL; echo "<td class=\"data1\"><input name=\"domname\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"", diff --git a/src/controllers/FulltextController.php b/src/controllers/FulltextController.php index 3760dd0f..45f9b0fd 100644 --- a/src/controllers/FulltextController.php +++ b/src/controllers/FulltextController.php @@ -308,7 +308,7 @@ class FulltextController extends BaseController echo '<p>', \sprintf($this->lang['strconfdropftsconfig'], $this->misc->printVal($_REQUEST['ftscfg'])), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/fulltext" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/fulltext" method="post">' . \PHP_EOL; echo "<p><input type=\"checkbox\" id=\"cascade\" name=\"cascade\" /> <label for=\"cascade\">{$this->lang['strcascade']}</label></p>" . \PHP_EOL; echo '<p><input type="hidden" name="action" value="dropconfig" />' . \PHP_EOL; echo '<input type="hidden" name="database" value="', \htmlspecialchars($_REQUEST['database']), '" />' . \PHP_EOL; @@ -339,7 +339,7 @@ class FulltextController extends BaseController echo '<p>', \sprintf($this->lang['strconfdropftsdict'], $this->misc->printVal($_REQUEST['ftsdict'])), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/fulltext" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/fulltext" method="post">' . \PHP_EOL; echo "<p><input type=\"checkbox\" id=\"cascade\" name=\"cascade\" /> <label for=\"cascade\">{$this->lang['strcascade']}</label></p>" . \PHP_EOL; echo '<p><input type="hidden" name="action" value="dropdict" />' . \PHP_EOL; echo '<input type="hidden" name="database" value="', \htmlspecialchars($_REQUEST['database']), '" />' . \PHP_EOL; @@ -390,7 +390,7 @@ class FulltextController extends BaseController $this->printTitle($this->lang['strftscreateconfig'], 'pg.ftscfg.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/fulltext" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/fulltext" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; // conf name echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; @@ -531,7 +531,7 @@ class FulltextController extends BaseController // Fetch all FTS parsers from the database $ftsparsers = $data->getFtsParsers(); - echo '<form action="' . self::SUBFOLDER . '/src/views/fulltext" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/fulltext" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>" . \PHP_EOL; @@ -822,7 +822,7 @@ class FulltextController extends BaseController $this->printTitle($this->lang['strftscreatedict'], 'pg.ftsdict.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/fulltext" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/fulltext" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; echo "\t\t<td class=\"data1\"><input name=\"formName\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"", @@ -966,7 +966,7 @@ class FulltextController extends BaseController $this->coalesceArr($_POST, 'formName', $_REQUEST['ftsdict']); - echo '<form action="' . self::SUBFOLDER . '/src/views/fulltext" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/fulltext" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>" . \PHP_EOL; @@ -1036,7 +1036,7 @@ class FulltextController extends BaseController $this->printTrail('ftscfg'); // TODO: proper breadcrumbs $this->printTitle($this->lang['strdrop'], 'pg.ftscfg.alter'); - echo '<form action="' . self::SUBFOLDER . '/src/views/fulltext" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/fulltext" method="post">' . \PHP_EOL; // Case of multiaction drop if (isset($_REQUEST['ma'])) { @@ -1096,7 +1096,7 @@ class FulltextController extends BaseController $this->coalesceArr($_POST, 'ftscfg', $_REQUEST['ftscfg']); - echo '<form action="' . self::SUBFOLDER . '/src/views/fulltext" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/fulltext" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>" . \PHP_EOL; @@ -1199,7 +1199,7 @@ class FulltextController extends BaseController $mappings = $data->getFtsMappings($_POST['ftscfg']); - echo '<form action="' . self::SUBFOLDER . '/src/views/fulltext" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/fulltext" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>" . \PHP_EOL; echo "\t\t<th class=\"data left required\">{$this->lang['strftsmapping']}</th>" . \PHP_EOL; diff --git a/src/controllers/FunctionsController.php b/src/controllers/FunctionsController.php index b5ef9820..262cd144 100644 --- a/src/controllers/FunctionsController.php +++ b/src/controllers/FunctionsController.php @@ -117,7 +117,7 @@ class FunctionsController extends BaseController 'function' => [ 'title' => $this->lang['strfunction'], 'field' => Decorator::field('proproto'), - 'url' => self::SUBFOLDER . "/redirect/function?action=properties&{$this->misc->href}&", + 'url' => \containerInstance()->subFolder . "/redirect/function?action=properties&{$this->misc->href}&", 'vars' => ['function' => 'proproto', 'function_oid' => 'prooid'], ], 'returns' => [ @@ -331,7 +331,7 @@ class FunctionsController extends BaseController $args = $fndata->fields['proarguments']; } - echo '<form action="' . self::SUBFOLDER . '/src/views/functions" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/functions" method="post">' . \PHP_EOL; echo '<table style="width: 95%">' . \PHP_EOL; echo '<tr>' . \PHP_EOL; echo "<th class=\"data required\">{$this->lang['strschema']}</th>" . \PHP_EOL; @@ -643,7 +643,7 @@ class FunctionsController extends BaseController $this->printTabs('function', 'definition'); $this->printTitle($this->lang['strdrop'], 'pg.function.drop'); - echo '<form action="' . self::SUBFOLDER . '/src/views/functions" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/functions" method="post">' . \PHP_EOL; //If multi drop if (isset($_REQUEST['ma'])) { @@ -856,12 +856,12 @@ class FunctionsController extends BaseController $szArgReturns .= '<option value=""></option>'; $szArgReturns .= '<option value="[]">[]</option>'; $szArgReturns .= '</select>'; - $subfolder = self::SUBFOLDER; + $subfolder = \containerInstance()->subFolder; if (!empty($this->conf['theme'])) { - $szImgPath = self::SUBFOLDER . "/assets/images/themes/{$this->conf['theme']}"; + $szImgPath = \containerInstance()->subFolder . "/assets/images/themes/{$this->conf['theme']}"; } else { - $szImgPath = self::SUBFOLDER . '/assets/images/themes/default'; + $szImgPath = \containerInstance()->subFolder . '/assets/images/themes/default'; } if (empty($msg)) { @@ -874,7 +874,7 @@ class FunctionsController extends BaseController $szJSAddTR .= "<img src=\"{$szImgPath}/AddArguments.png\" alt=\"Add Argument\" /></td>"; $szJSAddTR .= "<td class=\"data3\"><span style=\"font-size: 8pt\">{$this->lang['strargadd']}</span></td></tr></table></td>\n</tr>" . \PHP_EOL; - echo '<script src="' . self::SUBFOLDER . "/assets/js/functions.js\" type=\"text/javascript\"></script> + echo '<script src="' . \containerInstance()->subFolder . "/assets/js/functions.js\" type=\"text/javascript\"></script> <script type=\"text/javascript\"> //<![CDATA[ var g_types_select = '<select class=\"select2\" name=\"formArgType[]\">{$szTypes}</select>{$szArgReturns}'; @@ -891,7 +891,7 @@ class FunctionsController extends BaseController //]]> </script> "; - echo '<form action="' . self::SUBFOLDER . '/src/views/functions" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/functions" method="post">' . \PHP_EOL; echo '<table><tbody id="args_table">' . \PHP_EOL; echo "<tr><th class=\"data required\">{$this->lang['strname']}</th>" . \PHP_EOL; echo "<th class=\"data required\" colspan=\"2\">{$this->lang['strreturns']}</th>" . \PHP_EOL; @@ -990,14 +990,14 @@ class FunctionsController extends BaseController $szJS = ''; - echo '<script src="' . self::SUBFOLDER . '/assets/js/functions.js" type="text/javascript"></script>'; + echo '<script src="' . \containerInstance()->subFolder . '/assets/js/functions.js" type="text/javascript"></script>'; echo '<script type="text/javascript">' . $this->_buildJSData() . '</script>'; if (!empty($_POST['formArgName'])) { $szJS = $this->_buildJSRows($this->_buildFunctionArguments($_POST)); } else { - $subfolder = self::SUBFOLDER; - $szJS = '<script type="text/javascript" src="' . self::SUBFOLDER . '/assets/js/functions.js">noArgsRebuild(addArg("' . $subfolder . '"));</script>'; + $subfolder = \containerInstance()->subFolder; + $szJS = '<script type="text/javascript" src="' . \containerInstance()->subFolder . '/assets/js/functions.js">noArgsRebuild(addArg("' . $subfolder . '"));</script>'; } $cost = (isset($_POST['formCost'])) ? $_POST['formCost'] : null; @@ -1250,7 +1250,7 @@ class FunctionsController extends BaseController $bArgIsArray = 'true'; } $arrayProperArgs[] = [$szMode, $szArgName, $szArgType, $bArgIsArray]; - $subfolder = self::SUBFOLDER; + $subfolder = \containerInstance()->subFolder; $szReturn .= '<script type="text/javascript">'; $szReturn .= "RebuildArgTR('{$szMode}','{$szArgName}','{$szArgType}',new Boolean({$bArgIsArray},{$subfolder}));"; $szReturn .= '</script>;'; diff --git a/src/controllers/GroupsController.php b/src/controllers/GroupsController.php index f748d162..0f88d4b8 100644 --- a/src/controllers/GroupsController.php +++ b/src/controllers/GroupsController.php @@ -180,7 +180,7 @@ class GroupsController extends BaseController echo '<p>', \sprintf($this->lang['strconfdropmember'], $this->misc->printVal($_REQUEST['user']), $this->misc->printVal($_REQUEST['group'])), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/groups" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/groups" method="post">' . \PHP_EOL; echo $this->view->form; echo '<input type="hidden" name="action" value="drop_member" />' . \PHP_EOL; echo '<input type="hidden" name="group" value="', \htmlspecialchars($_REQUEST['group']), '" />' . \PHP_EOL; @@ -248,7 +248,7 @@ class GroupsController extends BaseController } // Display form for adding a user to the group - echo '<form action="' . self::SUBFOLDER . '/src/views/groups" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/groups" method="post">' . \PHP_EOL; echo '<select name="user">'; while (!$users->EOF) { @@ -292,7 +292,7 @@ class GroupsController extends BaseController echo '<p>', \sprintf($this->lang['strconfdropgroup'], $this->misc->printVal($_REQUEST['group'])), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/groups" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/groups" method="post">' . \PHP_EOL; echo $this->view->form; echo '<input type="hidden" name="action" value="drop" />' . \PHP_EOL; echo '<input type="hidden" name="group" value="', \htmlspecialchars($_REQUEST['group']), '" />' . \PHP_EOL; diff --git a/src/controllers/HistoryController.php b/src/controllers/HistoryController.php index f26d08b5..6c608695 100644 --- a/src/controllers/HistoryController.php +++ b/src/controllers/HistoryController.php @@ -75,7 +75,7 @@ class HistoryController extends BaseController // Bring to the front always echo '<body onload="window.focus();">' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/history" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/history" method="post">' . \PHP_EOL; $this->printConnection('history'); echo '</form><br />'; @@ -200,7 +200,7 @@ class HistoryController extends BaseController echo "<p>{$this->lang['strconfdelhistory']}</p>" . \PHP_EOL; echo '<pre>', \htmlentities($_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']][$qid]['query'], \ENT_QUOTES, 'UTF-8'), '</pre>'; - echo '<form action="' . self::SUBFOLDER . '/src/views/history" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/history" method="post">' . \PHP_EOL; echo '<input type="hidden" name="action" value="delhistory" />' . \PHP_EOL; echo "<input type=\"hidden\" name=\"queryid\" value=\"{$qid}\" />" . \PHP_EOL; echo $this->view->form; @@ -223,7 +223,7 @@ class HistoryController extends BaseController echo "<h3>{$this->lang['strclearhistory']}</h3>" . \PHP_EOL; echo "<p>{$this->lang['strconfclearhistory']}</p>" . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/history" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/history" method="post">' . \PHP_EOL; echo '<input type="hidden" name="action" value="clearhistory" />' . \PHP_EOL; echo $this->view->form; echo "<input type=\"submit\" name=\"yes\" value=\"{$this->lang['stryes']}\" />" . \PHP_EOL; diff --git a/src/controllers/IndexesController.php b/src/controllers/IndexesController.php index c7134d6e..27c3fc1a 100644 --- a/src/controllers/IndexesController.php +++ b/src/controllers/IndexesController.php @@ -7,7 +7,9 @@ namespace PHPPgAdmin\Controller; use PHPPgAdmin\Decorators\Decorator; +use PHPPgAdmin\ContainerUtils; +use \containerInstance; /** * Base controller class. */ @@ -15,7 +17,7 @@ class IndexesController extends BaseController { public $controller_title = 'strindexes'; - public $scripts = '<script src="' . self::SUBFOLDER . '/assets/js/indexes.js" type="text/javascript"></script>'; + public $scripts = '<script src="/assets/js/indexes.js" type="text/javascript"></script>'; /** * Default method to render the controller according to the action parameter. @@ -25,7 +27,7 @@ class IndexesController extends BaseController if ('tree' === $this->action) { return $this->doTree(); } - + $this->scripts = '<script src="' . \containerInstance()->subFolder . '/assets/js/indexes.js" type="text/javascript"></script>'; $this->printHeader($this->headerTitle(), $this->scripts); $onloadInit = false; @@ -144,7 +146,7 @@ class IndexesController extends BaseController ], ]; - $url = self::SUBFOLDER . '/src/views/indexes'; + $url = \containerInstance()->subFolder . '/src/views/indexes'; $actions = [ 'cluster' => [ @@ -268,7 +270,7 @@ class IndexesController extends BaseController echo '<p>', \sprintf($this->lang['strconfcluster'], $this->misc->printVal($_REQUEST['index'])), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/indexes" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/indexes" method="post">' . \PHP_EOL; echo '<p><input type="checkbox" id="analyze" name="analyze"', (isset($_REQUEST['analyze']) ? ' checked="checked"' : ''), ' />'; echo "<label for=\"analyze\">{$this->lang['stranalyze']}</label></p>" . \PHP_EOL; echo '<input type="hidden" name="action" value="cluster_index" />' . \PHP_EOL; @@ -503,7 +505,7 @@ class IndexesController extends BaseController $this->printTitle($this->lang['strdrop'], 'pg.index.drop'); echo '<p>', \sprintf($this->lang['strconfdropindex'], $this->misc->printVal($this->getRequestParam('index'))), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/indexes" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/indexes" method="post">' . \PHP_EOL; echo '<input type="hidden" name="action" value="drop_index" />' . \PHP_EOL; echo '<input type="hidden" name="table" value="', \htmlspecialchars($object), '" />' . \PHP_EOL; echo '<input type="hidden" name="index" value="', \htmlspecialchars($this->getRequestParam('index')), '" />' . \PHP_EOL; diff --git a/src/controllers/LoginController.php b/src/controllers/LoginController.php index fe7e40ec..770be030 100644 --- a/src/controllers/LoginController.php +++ b/src/controllers/LoginController.php @@ -96,7 +96,7 @@ class LoginController extends BaseController $login_html .= $this->printMsg($msg, false); } - $login_html .= '<form id="login_form" method="post" name="login_form" action="' . self::SUBFOLDER . '/redirect/server?server=' . \htmlspecialchars($server_id) . '">'; + $login_html .= '<form id="login_form" method="post" name="login_form" action="' . \containerInstance()->subFolder . '/redirect/server?server=' . \htmlspecialchars($server_id) . '">'; $md5_server = \md5($server_id); // Pass request vars through form (is this a security risk???) diff --git a/src/controllers/MaterializedviewpropertiesController.php b/src/controllers/MaterializedviewpropertiesController.php index 2a4429dd..0127a2a8 100644 --- a/src/controllers/MaterializedviewpropertiesController.php +++ b/src/controllers/MaterializedviewpropertiesController.php @@ -150,7 +150,7 @@ class MaterializedviewpropertiesController extends BaseController $_POST['formComment'] = $viewdata->fields['relcomment']; } - echo '<form action="' . self::SUBFOLDER . '/src/views/materializedviewproperties" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/materializedviewproperties" method="post">' . \PHP_EOL; echo '<table style="width: 100%">' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strdefinition']}</th>" . \PHP_EOL; echo "\t\t<td class=\"data1\"><textarea style=\"width: 100%;\" rows=\"20\" cols=\"50\" name=\"formDefinition\">", @@ -187,7 +187,7 @@ class MaterializedviewpropertiesController extends BaseController $this->printTitle($this->lang['stralter'], 'pg.column.alter'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/materializedviewproperties" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/materializedviewproperties" method="post">' . \PHP_EOL; // Output matview header echo '<table>' . \PHP_EOL; @@ -285,7 +285,7 @@ class MaterializedviewpropertiesController extends BaseController $this->coalesceArr($_POST, 'comment', $matview->fields['relcomment']); - echo '<form action="' . self::SUBFOLDER . '/src/views/materializedviewproperties" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/materializedviewproperties" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "<tr><th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; echo '<td class="data1">'; diff --git a/src/controllers/MaterializedviewsController.php b/src/controllers/MaterializedviewsController.php index 2d765e4e..592a9576 100644 --- a/src/controllers/MaterializedviewsController.php +++ b/src/controllers/MaterializedviewsController.php @@ -124,7 +124,7 @@ class MaterializedviewsController extends BaseController $this->keystring => [ 'title' => 'M ' . $this->lang['strview'], 'field' => Decorator::field('relname'), - 'url' => self::SUBFOLDER . "/redirect/matview?{$this->misc->href}&", + 'url' => \containerInstance()->subFolder . "/redirect/matview?{$this->misc->href}&", 'vars' => [$this->keystring => 'relname'], ], 'owner' => [ @@ -281,7 +281,7 @@ class MaterializedviewsController extends BaseController $this->printTrail('getTrail'); $this->printTitle($this->lang['strdrop'], 'pg.matview.drop'); - echo '<form action="' . self::SUBFOLDER . '/src/views/materializedviews" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/materializedviews" method="post">' . \PHP_EOL; //If multi drop if (isset($_REQUEST['ma'])) { @@ -403,7 +403,7 @@ class MaterializedviewsController extends BaseController $this->printTitle($this->lang['strcreateview'], 'pg.matview.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . "/src/views/{$this->view_name}\" method=\"post\">" . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . "/src/views/{$this->view_name}\" method=\"post\">" . \PHP_EOL; echo '<table style="width: 100%">' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; echo "\t<td class=\"data1\"><input name=\"formView\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"", diff --git a/src/controllers/OperatorsController.php b/src/controllers/OperatorsController.php index baa78c46..602fbaaf 100644 --- a/src/controllers/OperatorsController.php +++ b/src/controllers/OperatorsController.php @@ -256,7 +256,7 @@ class OperatorsController extends BaseController echo '<p>', \sprintf($this->lang['strconfdropoperator'], $this->misc->printVal($_REQUEST['operator'])), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/operators" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/operators" method="post">' . \PHP_EOL; echo "<p><input type=\"checkbox\" id=\"cascade\" name=\"cascade\" /> <label for=\"cascade\">{$this->lang['strcascade']}</label></p>" . \PHP_EOL; echo '<p><input type="hidden" name="action" value="drop" />' . \PHP_EOL; echo '<input type="hidden" name="operator" value="', \htmlspecialchars($_REQUEST['operator']), '" />' . \PHP_EOL; diff --git a/src/controllers/PrivilegesController.php b/src/controllers/PrivilegesController.php index 028d940f..18c6dc96 100644 --- a/src/controllers/PrivilegesController.php +++ b/src/controllers/PrivilegesController.php @@ -79,7 +79,7 @@ class PrivilegesController extends BaseController $this->printMsg($msg); if (!isset($data->privlist[$subject])) { - $this->halt('No privileges defined for subject ' . $subject); + $this->container->halt('No privileges defined for subject ' . $subject); return; } @@ -316,7 +316,7 @@ class PrivilegesController extends BaseController $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/privileges" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/privileges" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "<tr><th class=\"data left\">{$this->lang['strusers']}</th>" . \PHP_EOL; echo '<td class="data1"><select name="username[]" multiple="multiple" size="', \min(6, $users->recordCount()), '">' . \PHP_EOL; diff --git a/src/controllers/RolesController.php b/src/controllers/RolesController.php index 2fea45c9..653db4c1 100644 --- a/src/controllers/RolesController.php +++ b/src/controllers/RolesController.php @@ -116,7 +116,7 @@ class RolesController extends BaseController 'role' => [ 'title' => $this->lang['strrole'], 'field' => Decorator::field('rolname'), - 'url' => self::SUBFOLDER . "/redirect/role?action=properties&{$this->misc->href}&", + 'url' => \containerInstance()->subFolder . "/redirect/role?action=properties&{$this->misc->href}&", 'vars' => ['rolename' => 'rolname'], ], 'group' => [ @@ -240,7 +240,7 @@ class RolesController extends BaseController $this->printTitle($this->lang['strcreaterole'], 'pg.role.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/roles" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/roles" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left required\" style=\"width: 130px\">{$this->lang['strname']}</th>" . \PHP_EOL; echo "\t\t<td class=\"data1\"><input size=\"15\" maxlength=\"{$data->_maxNameLen}\" name=\"formRolename\" value=\"", \htmlspecialchars($_POST['formRolename']), "\" /></td>\n\t</tr>" . \PHP_EOL; @@ -393,7 +393,7 @@ class RolesController extends BaseController $this->_adjustPostVars($roledata, $canRename); - echo '<form action="' . self::SUBFOLDER . '/src/views/roles" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/roles" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left\" style=\"width: 130px\">{$this->lang['strname']}</th>" . \PHP_EOL; echo "\t\t<td class=\"data1\">", ($canRename ? "<input name=\"formNewRoleName\" size=\"15\" maxlength=\"{$data->_maxNameLen}\" value=\"" . \htmlspecialchars($_POST['formNewRoleName']) . '" />' : $this->misc->printVal($roledata->fields['rolname'])), "</td>\n\t</tr>" . \PHP_EOL; @@ -535,7 +535,7 @@ class RolesController extends BaseController echo '<p>', \sprintf($this->lang['strconfdroprole'], $this->misc->printVal($_REQUEST['rolename'])), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/roles" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/roles" method="post">' . \PHP_EOL; echo '<p><input type="hidden" name="action" value="drop" />' . \PHP_EOL; echo '<input type="hidden" name="rolename" value="', \htmlspecialchars($_REQUEST['rolename']), '" />' . \PHP_EOL; echo $this->view->form; @@ -762,7 +762,7 @@ class RolesController extends BaseController $this->coalesceArr($_POST, 'confirm', ''); - echo '<form action="' . self::SUBFOLDER . '/src/views/roles" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/roles" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strpassword']}</th>" . \PHP_EOL; echo "\t\t<td><input type=\"password\" name=\"password\" size=\"32\" value=\"", diff --git a/src/controllers/RulesController.php b/src/controllers/RulesController.php index 41515c60..5975b5af 100644 --- a/src/controllers/RulesController.php +++ b/src/controllers/RulesController.php @@ -170,7 +170,7 @@ class RulesController extends BaseController $this->printTitle($this->lang['strcreaterule'], 'pg.rule.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/rules" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/rules" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "<tr><th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; echo "<td class=\"data1\"><input name=\"name\" size=\"16\" maxlength=\"{$data->_maxNameLen}\" value=\"", @@ -248,7 +248,7 @@ class RulesController extends BaseController $this->misc->printVal($_REQUEST[$_REQUEST['reltype']]) ), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/rules" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/rules" method="post">' . \PHP_EOL; echo '<input type="hidden" name="action" value="drop" />' . \PHP_EOL; echo '<input type="hidden" name="subject" value="', \htmlspecialchars($_REQUEST['reltype']), '" />' . \PHP_EOL; echo '<input type="hidden" name="', \htmlspecialchars($_REQUEST['reltype']), diff --git a/src/controllers/SchemasController.php b/src/controllers/SchemasController.php index b1b06fa0..88ec4361 100644 --- a/src/controllers/SchemasController.php +++ b/src/controllers/SchemasController.php @@ -106,7 +106,7 @@ class SchemasController extends BaseController 'schema' => [ 'title' => $this->lang['strschema'], 'field' => Decorator::field('nspname'), - 'url' => self::SUBFOLDER . "{$destination}&", + 'url' => \containerInstance()->subFolder . "{$destination}&", 'vars' => ['schema' => 'nspname'], ], 'owner' => [ @@ -280,7 +280,7 @@ class SchemasController extends BaseController $this->printTitle($this->lang['strcreateschema'], 'pg.schema.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/schemas" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/schemas" method="post">' . \PHP_EOL; echo '<table style="width: 100%">' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; echo "\t\t<td class=\"data1\"><input name=\"formName\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"", @@ -358,7 +358,7 @@ class SchemasController extends BaseController $this->coalesceArr($_POST, 'owner', $schema->fields['ownername']); - echo '<form action="' . self::SUBFOLDER . '/src/views/schemas" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/schemas" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>" . \PHP_EOL; @@ -437,7 +437,7 @@ class SchemasController extends BaseController $this->printTrail('schema'); $this->printTitle($this->lang['strdrop'], 'pg.schema.drop'); - echo '<form action="' . self::SUBFOLDER . '/src/views/schemas" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/schemas" method="post">' . \PHP_EOL; //If multi drop if (isset($_REQUEST['ma'])) { foreach ($_REQUEST['ma'] as $v) { diff --git a/src/controllers/SequencesController.php b/src/controllers/SequencesController.php index a0708406..2b31953c 100644 --- a/src/controllers/SequencesController.php +++ b/src/controllers/SequencesController.php @@ -407,7 +407,7 @@ class SequencesController extends BaseController $this->printTitle($this->lang['strdrop'], 'pg.sequence.drop'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/sequences" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/sequences" method="post">' . \PHP_EOL; //If multi drop if (isset($_REQUEST['ma'])) { @@ -492,7 +492,7 @@ class SequencesController extends BaseController $this->printTitle($this->lang['strcreatesequence'], 'pg.sequence.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/sequences" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/sequences" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "<tr><th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; @@ -648,7 +648,7 @@ class SequencesController extends BaseController $sequence = $data->getSequence($_REQUEST['sequence']); if (\is_object($sequence) && 0 < $sequence->recordCount()) { - echo '<form action="' . self::SUBFOLDER . '/src/views/sequences" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/sequences" method="post">' . \PHP_EOL; echo '<table border="0">'; echo "<tr><th class=\"data left required\">{$this->lang['strlastvalue']}</th>" . \PHP_EOL; echo '<td class="data1">'; @@ -758,7 +758,7 @@ class SequencesController extends BaseController $_POST['formCycledValue'] = 'on'; } - echo '<form action="' . self::SUBFOLDER . '/src/views/sequences" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/sequences" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "<tr><th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; diff --git a/src/controllers/ServersController.php b/src/controllers/ServersController.php index a2f32301..c4926187 100644 --- a/src/controllers/ServersController.php +++ b/src/controllers/ServersController.php @@ -105,7 +105,7 @@ class ServersController extends BaseController 'server' => [ 'title' => $this->lang['strserver'], 'field' => Decorator::field('desc'), - 'url' => self::SUBFOLDER . '/redirect/server?', + 'url' => \containerInstance()->subFolder . '/redirect/server?', 'vars' => ['server' => 'sha'], ], 'host' => [ diff --git a/src/controllers/SqleditController.php b/src/controllers/SqleditController.php index 9b4b2085..3a6a62c9 100644 --- a/src/controllers/SqleditController.php +++ b/src/controllers/SqleditController.php @@ -68,7 +68,7 @@ class SqleditController extends BaseController $default_html = $this->printTabs('popup', 'sql', false); - $default_html .= '<form action="' . self::SUBFOLDER . '/src/views/sql" method="post" enctype="multipart/form-data" class="sqlform" id="sqlform" target="detail">'; + $default_html .= '<form action="' . \containerInstance()->subFolder . '/src/views/sql" method="post" enctype="multipart/form-data" class="sqlform" id="sqlform" target="detail">'; $default_html .= \PHP_EOL; $default_html .= $this->printConnection('sql', false); diff --git a/src/controllers/TablesController.php b/src/controllers/TablesController.php index 7888b709..ee0ddc87 100644 --- a/src/controllers/TablesController.php +++ b/src/controllers/TablesController.php @@ -197,7 +197,7 @@ class TablesController extends BaseController return $this ->container - ->responseobj + ->response ->withStatus(200) ->withJson($all_tables); } @@ -296,7 +296,7 @@ class TablesController extends BaseController $this->printTitle($this->lang['strcreatetable'], 'pg.table.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/' . $this->script . '" method="post">'; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/' . $this->script . '" method="post">'; echo \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; @@ -368,8 +368,8 @@ class TablesController extends BaseController $this->printTitle($this->lang['strcreatetable'], 'pg.table.create'); $this->printMsg($msg); - echo '<script src="' . self::SUBFOLDER . '/assets/js/tables.js" type="text/javascript"></script>'; - echo '<form action="' . self::SUBFOLDER . '/src/views/tables" method="post">' . \PHP_EOL; + echo '<script src="' . \containerInstance()->subFolder . '/assets/js/tables.js" type="text/javascript"></script>'; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/tables" method="post">' . \PHP_EOL; // Output table header echo '<table>' . \PHP_EOL; @@ -588,7 +588,7 @@ class TablesController extends BaseController unset($tbltmp); - echo '<form action="' . self::SUBFOLDER . '/src/views/tables" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/tables" method="post">' . \PHP_EOL; echo "<table>\n\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; echo "\t\t<td class=\"data\"><input name=\"name\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"", \htmlspecialchars($_REQUEST['name']), "\" /></td>\n\t</tr>" . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strcreatetablelikeparent']}</th>" . \PHP_EOL; @@ -689,7 +689,7 @@ class TablesController extends BaseController $attrs = $data->getTableAttributes($_REQUEST['table']); - echo '<form action="' . self::SUBFOLDER . '/src/views/display" method="post" id="selectform">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/display" method="post" id="selectform">' . \PHP_EOL; if (0 < $attrs->recordCount()) { // JavaScript for select all feature @@ -827,7 +827,7 @@ class TablesController extends BaseController $this->coalesceArr($_REQUEST, 'nulls', []); $this->coalesceArr($_REQUEST, 'format', []); - echo '<form action="' . self::SUBFOLDER . '/src/views/tables" method="post" id="ac_form">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/tables" method="post" id="ac_form">' . \PHP_EOL; if (0 < $attrs->recordCount()) { echo '<table>' . \PHP_EOL; @@ -953,7 +953,7 @@ class TablesController extends BaseController } echo $this->view->form; echo '</form>' . \PHP_EOL; - echo '<script src="' . self::SUBFOLDER . '/assets/js/insert_or_edit_row.js" type="text/javascript"></script>'; + echo '<script src="' . \containerInstance()->subFolder . '/assets/js/insert_or_edit_row.js" type="text/javascript"></script>'; } /** @@ -1006,7 +1006,7 @@ class TablesController extends BaseController $this->printTrail('schema'); $this->printTitle($this->lang['strempty'], 'pg.table.empty'); - echo '<form action="' . self::SUBFOLDER . '/src/views/tables" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/tables" method="post">' . \PHP_EOL; foreach ($_REQUEST['ma'] as $v) { $a = \unserialize(\htmlspecialchars_decode($v, \ENT_QUOTES)); @@ -1021,7 +1021,7 @@ class TablesController extends BaseController echo '<p>', \sprintf($this->lang['strconfemptytable'], $this->misc->printVal($_REQUEST['table'])), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/tables" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/tables" method="post">' . \PHP_EOL; echo \sprintf('<input type="hidden" name="table" value="%s" />%s', \htmlspecialchars($_REQUEST['table']), \PHP_EOL); // END not mutli empty @@ -1085,7 +1085,7 @@ class TablesController extends BaseController $this->printTrail('schema'); $this->printTitle($this->lang['strdrop'], 'pg.table.drop'); - echo '<form action="' . self::SUBFOLDER . '/src/views/tables" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/tables" method="post">' . \PHP_EOL; foreach ($_REQUEST['ma'] as $v) { $a = \unserialize(\htmlspecialchars_decode($v, \ENT_QUOTES)); @@ -1098,7 +1098,7 @@ class TablesController extends BaseController echo '<p>', \sprintf($this->lang['strconfdroptable'], $this->misc->printVal($_REQUEST['table'])), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/tables" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/tables" method="post">' . \PHP_EOL; echo \sprintf('<input type="hidden" name="table" value="%s" />%s', \htmlspecialchars($_REQUEST['table']), \PHP_EOL); // END if multi drop } @@ -1157,7 +1157,7 @@ class TablesController extends BaseController 'table' => [ 'title' => $this->lang['strtable'], 'field' => Decorator::field('relname'), - 'url' => self::SUBFOLDER . "/redirect/table?{$this->misc->href}&", + 'url' => \containerInstance()->subFolder . "/redirect/table?{$this->misc->href}&", 'vars' => ['table' => 'relname'], ], 'owner' => [ diff --git a/src/controllers/TablespacesController.php b/src/controllers/TablespacesController.php index d14ad956..85a0cfbb 100644 --- a/src/controllers/TablespacesController.php +++ b/src/controllers/TablespacesController.php @@ -188,7 +188,7 @@ class TablespacesController extends BaseController $this->coalesceArr($_POST, 'comment', ($data->hasSharedComments()) ? $tablespace->fields['spccomment'] : ''); - echo '<form action="' . self::SUBFOLDER . '/src/views/tablespaces" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/tablespaces" method="post">' . \PHP_EOL; echo $this->view->form; echo '<table>' . \PHP_EOL; echo "<tr><th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; @@ -264,7 +264,7 @@ class TablespacesController extends BaseController echo '<p>', \sprintf($this->lang['strconfdroptablespace'], $this->misc->printVal($_REQUEST['tablespace'])), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/tablespaces" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/tablespaces" method="post">' . \PHP_EOL; echo $this->view->form; echo '<input type="hidden" name="action" value="drop" />' . \PHP_EOL; echo '<input type="hidden" name="tablespace" value="', \htmlspecialchars($_REQUEST['tablespace']), '" />' . \PHP_EOL; @@ -308,7 +308,7 @@ class TablespacesController extends BaseController $this->printTitle($this->lang['strcreatetablespace'], 'pg.tablespace.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/tablespaces" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/tablespaces" method="post">' . \PHP_EOL; echo $this->view->form; echo '<table>' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; diff --git a/src/controllers/TblpropertiesController.php b/src/controllers/TblpropertiesController.php index 81f0db2b..cc117dda 100644 --- a/src/controllers/TblpropertiesController.php +++ b/src/controllers/TblpropertiesController.php @@ -357,7 +357,7 @@ class TblpropertiesController extends BaseController $_POST['tablespace'] = $table->fields['tablespace']; } - echo '<form action="' . self::SUBFOLDER . '/src/views/tblproperties" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/tblproperties" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "<tr><th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; echo '<td class="data1">'; @@ -482,7 +482,7 @@ class TblpropertiesController extends BaseController $max_size = $misc->inisizeToBytes(\ini_get('upload_max_filesize')); if (\is_float($max_size) && 0 < $max_size) { - echo '<form action="' . self::SUBFOLDER . '/src/views/dataimport" method="post" enctype="multipart/form-data">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/dataimport" method="post" enctype="multipart/form-data">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strformat']}</th>" . \PHP_EOL; echo "\t\t<td><select name=\"format\">" . \PHP_EOL; @@ -545,8 +545,8 @@ class TblpropertiesController extends BaseController $this->printTitle($this->lang['straddcolumn'], 'pg.column.add'); $this->printMsg($msg); - echo '<script src="' . self::SUBFOLDER . '/assets/js/tables.js" type="text/javascript"></script>'; - echo '<form action="' . self::SUBFOLDER . '/src/views/tblproperties" method="post">' . \PHP_EOL; + echo '<script src="' . \containerInstance()->subFolder . '/assets/js/tables.js" type="text/javascript"></script>'; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/tblproperties" method="post">' . \PHP_EOL; // Output table header echo '<table>' . \PHP_EOL; @@ -680,7 +680,7 @@ class TblpropertiesController extends BaseController echo '<p>' . \sprintf($this->lang['strconfdropcolumn'], $misc->printVal($_REQUEST['column']), $misc->printVal($_REQUEST['table'])) . '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/tblproperties" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/tblproperties" method="post">' . \PHP_EOL; echo '<input type="hidden" name="action" value="drop" />' . \PHP_EOL; echo \sprintf('<input type="hidden" name="table" value="%s" />%s', \htmlspecialchars($_REQUEST['table']), \PHP_EOL); echo '<input type="hidden" name="column" value="', \htmlspecialchars($_REQUEST['column']), '" />' . \PHP_EOL; diff --git a/src/controllers/TreeController.php b/src/controllers/TreeController.php index 81ee9bee..03ec4af6 100644 --- a/src/controllers/TreeController.php +++ b/src/controllers/TreeController.php @@ -145,10 +145,10 @@ class TreeController extends BaseController $parent = [ 'id' => 'root', 'children' => true, - 'icon' => self::SUBFOLDER . '/assets/images/themes/default/Servers.png', + 'icon' => \containerInstance()->subFolder . '/assets/images/themes/default/Servers.png', 'state' => ['opened' => true], - 'a_attr' => ['href' => \str_replace('//', '/', self::SUBFOLDER . '/src/views/servers')], - 'url' => \str_replace('//', '/', self::SUBFOLDER . '/src/views/servers?action=tree'), + 'a_attr' => ['href' => \str_replace('//', '/', \containerInstance()->subFolder . '/src/views/servers')], + 'url' => \str_replace('//', '/', \containerInstance()->subFolder . '/src/views/servers?action=tree'), 'text' => 'Servers', ]; } elseif (0 < \count($treedata)) { @@ -172,7 +172,7 @@ class TreeController extends BaseController $url = Decorator::get_sanitized_value($attrs['branch'], $rec); if ($url && false === \mb_strpos($url, '/src/views')) { - $url = \str_replace('//', '/', self::SUBFOLDER . '/src/views/' . $url); + $url = \str_replace('//', '/', \containerInstance()->subFolder . '/src/views/' . $url); } if ($url) { @@ -196,7 +196,7 @@ class TreeController extends BaseController return $this ->container - ->responseobj + ->response ->withStatus(200) ->withJson($parent); } diff --git a/src/controllers/TriggersController.php b/src/controllers/TriggersController.php index 83faeb49..2c1eab77 100644 --- a/src/controllers/TriggersController.php +++ b/src/controllers/TriggersController.php @@ -273,7 +273,7 @@ class TriggersController extends BaseController if (0 < $triggerdata->recordCount()) { $this->coalesceArr($_POST, 'name', $triggerdata->fields['tgname']); - echo '<form action="' . self::SUBFOLDER . '/src/views/triggers" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/triggers" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "<tr><th class=\"data\">{$this->lang['strname']}</th>" . \PHP_EOL; echo '<td class="data1">'; @@ -311,7 +311,7 @@ class TriggersController extends BaseController $this->misc->printVal($_REQUEST['table']) ), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/triggers" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/triggers" method="post">' . \PHP_EOL; echo '<input type="hidden" name="action" value="drop" />' . \PHP_EOL; echo \sprintf('<input type="hidden" name="table" value="%s" />%s', \htmlspecialchars($_REQUEST['table']), \PHP_EOL); echo '<input type="hidden" name="trigger" value="', \htmlspecialchars($_REQUEST['trigger']), '" />' . \PHP_EOL; @@ -350,7 +350,7 @@ class TriggersController extends BaseController $this->misc->printVal($_REQUEST['table']) ), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/triggers" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/triggers" method="post">' . \PHP_EOL; echo '<input type="hidden" name="action" value="enable" />' . \PHP_EOL; echo \sprintf('<input type="hidden" name="table" value="%s" />%s', \htmlspecialchars($_REQUEST['table']), \PHP_EOL); echo '<input type="hidden" name="trigger" value="', \htmlspecialchars($_REQUEST['trigger']), '" />' . \PHP_EOL; @@ -388,7 +388,7 @@ class TriggersController extends BaseController $this->misc->printVal($_REQUEST['table']) ), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/triggers" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/triggers" method="post">' . \PHP_EOL; echo '<input type="hidden" name="action" value="disable" />' . \PHP_EOL; echo \sprintf('<input type="hidden" name="table" value="%s" />%s', \htmlspecialchars($_REQUEST['table']), \PHP_EOL); echo '<input type="hidden" name="trigger" value="', \htmlspecialchars($_REQUEST['trigger']), '" />' . \PHP_EOL; @@ -449,7 +449,7 @@ class TriggersController extends BaseController $sel3 = new \PHPPgAdmin\XHtml\XHtmlSelect('formFrequency'); $sel3->set_data($data->triggerFrequency); - echo '<form action="' . self::SUBFOLDER . '/src/views/triggers" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/triggers" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo '<tr>' . \PHP_EOL; echo " <th class=\"data\">{$this->lang['strname']}</th>" . \PHP_EOL; diff --git a/src/controllers/TypesController.php b/src/controllers/TypesController.php index 7c866657..bd7fbcbe 100644 --- a/src/controllers/TypesController.php +++ b/src/controllers/TypesController.php @@ -344,7 +344,7 @@ class TypesController extends BaseController echo '<p>', \sprintf($this->lang['strconfdroptype'], $this->misc->printVal($_REQUEST['type'])), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/types" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/types" method="post">' . \PHP_EOL; echo "<p><input type=\"checkbox\" id=\"cascade\" name=\"cascade\" /> <label for=\"cascade\">{$this->lang['strcascade']}</label></p>" . \PHP_EOL; echo '<p><input type="hidden" name="action" value="drop" />' . \PHP_EOL; echo '<input type="hidden" name="type" value="', \htmlspecialchars($_REQUEST['type']), '" />' . \PHP_EOL; @@ -386,7 +386,7 @@ class TypesController extends BaseController $this->printTitle($this->lang['strcreatecomptype'], 'pg.type.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/types" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/types" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; echo "\t\t<td class=\"data\"><input name=\"name\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"", @@ -432,7 +432,7 @@ class TypesController extends BaseController $this->printTitle($this->lang['strcreatecomptype'], 'pg.type.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/types" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/types" method="post">' . \PHP_EOL; // Output table header echo '<table>' . \PHP_EOL; @@ -563,7 +563,7 @@ class TypesController extends BaseController $this->printTitle($this->lang['strcreateenumtype'], 'pg.type.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/types" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/types" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; echo "\t\t<td class=\"data\"><input name=\"name\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"", @@ -607,7 +607,7 @@ class TypesController extends BaseController $this->printTitle($this->lang['strcreateenumtype'], 'pg.type.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/types" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/types" method="post">' . \PHP_EOL; // Output table header echo '<table>' . \PHP_EOL; @@ -710,7 +710,7 @@ class TypesController extends BaseController $this->printTitle($this->lang['strcreatetype'], 'pg.type.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/types" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/types" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "<tr><th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; echo "<td class=\"data1\"><input name=\"typname\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"", diff --git a/src/controllers/UsersController.php b/src/controllers/UsersController.php index 54034dfe..54dcf344 100644 --- a/src/controllers/UsersController.php +++ b/src/controllers/UsersController.php @@ -257,7 +257,7 @@ class UsersController extends BaseController $this->coalesceArr($_POST, 'confirm', ''); - echo '<form action="' . self::SUBFOLDER . '/src/views/users" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/users" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strpassword']}</th>" . \PHP_EOL; echo "\t\t<td><input type=\"password\" name=\"password\" size=\"32\" value=\"", @@ -330,7 +330,7 @@ class UsersController extends BaseController $_POST['formPassword'] = ''; } - echo '<form action="' . self::SUBFOLDER . '/src/views/users" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/users" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strusername']}</th>" . \PHP_EOL; echo "\t\t<td class=\"data1\">", ($canRename ? "<input name=\"newname\" size=\"15\" maxlength=\"{$data->_maxNameLen}\" value=\"" . \htmlspecialchars($_POST['newname']) . '" />' : $this->misc->printVal($userdata->fields['usename'])), "</td>\n\t</tr>" . \PHP_EOL; @@ -400,7 +400,7 @@ class UsersController extends BaseController echo '<p>', \sprintf($this->lang['strconfdropuser'], $this->misc->printVal($_REQUEST['username'])), '</p>' . \PHP_EOL; - echo '<form action="' . self::SUBFOLDER . '/src/views/users" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/users" method="post">' . \PHP_EOL; echo '<p><input type="hidden" name="action" value="drop" />' . \PHP_EOL; echo '<input type="hidden" name="username" value="', \htmlspecialchars($_REQUEST['username']), '" />' . \PHP_EOL; echo $this->view->form; @@ -439,7 +439,7 @@ class UsersController extends BaseController $this->printTitle($this->lang['strcreateuser'], 'pg.user.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/users" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/users" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strusername']}</th>" . \PHP_EOL; echo "\t\t<td class=\"data1\"><input size=\"15\" maxlength=\"{$data->_maxNameLen}\" name=\"formUsername\" value=\"", \htmlspecialchars($_POST['formUsername']), "\" /></td>\n\t</tr>" . \PHP_EOL; diff --git a/src/controllers/ViewpropertiesController.php b/src/controllers/ViewpropertiesController.php index 523d5c47..83d690eb 100644 --- a/src/controllers/ViewpropertiesController.php +++ b/src/controllers/ViewpropertiesController.php @@ -141,7 +141,7 @@ class ViewpropertiesController extends BaseController } $variables = (object) [ - 'subfolder' => self::SUBFOLDER . '/src/views/viewproperties', + 'subfolder' => \containerInstance()->subFolder . '/src/views/viewproperties', 'formDefinition' => \htmlspecialchars($_POST['formDefinition']), @@ -201,7 +201,7 @@ EOT; $this->printTitle($this->lang['stralter'], 'pg.column.alter'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . '/src/views/viewproperties" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/viewproperties" method="post">' . \PHP_EOL; // Output view header echo '<table>' . \PHP_EOL; @@ -299,7 +299,7 @@ EOT; $this->coalesceArr($_POST, 'comment', $view->fields['relcomment']); - echo '<form action="' . self::SUBFOLDER . '/src/views/viewproperties" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/viewproperties" method="post">' . \PHP_EOL; echo '<table>' . \PHP_EOL; echo "<tr><th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; echo '<td class="data1">'; diff --git a/src/controllers/ViewsController.php b/src/controllers/ViewsController.php index 84feea4d..e9668186 100644 --- a/src/controllers/ViewsController.php +++ b/src/controllers/ViewsController.php @@ -124,7 +124,7 @@ class ViewsController extends BaseController $this->keystring => [ 'title' => $this->lang['strview'], 'field' => Decorator::field('relname'), - 'url' => self::SUBFOLDER . "/redirect/view?{$this->misc->href}&", + 'url' => \containerInstance()->subFolder . "/redirect/view?{$this->misc->href}&", 'vars' => [$this->keystring => 'relname'], ], 'owner' => [ @@ -281,7 +281,7 @@ class ViewsController extends BaseController $this->printTrail('view'); $this->printTitle($this->lang['strdrop'], 'pg.view.drop'); - echo '<form action="' . self::SUBFOLDER . '/src/views/views" method="post">' . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . '/src/views/views" method="post">' . \PHP_EOL; //If multi drop if (isset($_REQUEST['ma'])) { @@ -403,7 +403,7 @@ class ViewsController extends BaseController $this->printTitle($this->lang['strcreateview'], 'pg.view.create'); $this->printMsg($msg); - echo '<form action="' . self::SUBFOLDER . "/src/views/{$this->view_name}\" method=\"post\">" . \PHP_EOL; + echo '<form action="' . \containerInstance()->subFolder . "/src/views/{$this->view_name}\" method=\"post\">" . \PHP_EOL; echo '<table style="width: 100%">' . \PHP_EOL; echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL; echo "\t<td class=\"data1\"><input name=\"formView\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"", diff --git a/src/decorators/ActionUrlDecorator.php b/src/decorators/ActionUrlDecorator.php index 31c1e3e2..26ecfc3c 100644 --- a/src/decorators/ActionUrlDecorator.php +++ b/src/decorators/ActionUrlDecorator.php @@ -41,6 +41,6 @@ class ActionUrlDecorator extends Decorator } } - return self::SUBFOLDER . '/src/views/' . \str_replace('.php', '', $url); + return \containerInstance()->subFolder . '/src/views/' . \str_replace('.php', '', $url); } } diff --git a/src/decorators/BranchUrlDecorator.php b/src/decorators/BranchUrlDecorator.php index 869162f1..0c4053f5 100644 --- a/src/decorators/BranchUrlDecorator.php +++ b/src/decorators/BranchUrlDecorator.php @@ -43,8 +43,8 @@ class BranchUrlDecorator extends Decorator $url = \str_replace('//', '/', '/src/views/' . $url); } - if (self::SUBFOLDER !== '' && (0 === \mb_strpos($url, '/')) && (0 !== \mb_strpos($url, self::SUBFOLDER))) { - $url = \str_replace('//', '/', self::SUBFOLDER . '/' . $url); + if (containerInstance()->subFolder !== '' && (0 === \mb_strpos($url, '/')) && (0 !== \mb_strpos($url, \containerInstance()->subFolder))) { + $url = \str_replace('//', '/', \containerInstance()->subFolder . '/' . $url); } return \str_replace('.php', '', $url); diff --git a/src/decorators/Decorator.php b/src/decorators/Decorator.php index 07947bdc..fd51cd86 100644 --- a/src/decorators/Decorator.php +++ b/src/decorators/Decorator.php @@ -12,18 +12,9 @@ class Decorator { use \PHPPgAdmin\Traits\HelperTrait; - /** - * @var string - */ - const BASE_PATH = ContainerUtils::BASE_PATH; - /** - * @var string - */ - const SUBFOLDER = ContainerUtils::SUBFOLDER; - /** - * @var string - */ - const DEBUGMODE = ContainerUtils::DEBUGMODE; + + + public $container; diff --git a/src/decorators/RedirectUrlDecorator.php b/src/decorators/RedirectUrlDecorator.php index 90921e0b..4f21e4f6 100644 --- a/src/decorators/RedirectUrlDecorator.php +++ b/src/decorators/RedirectUrlDecorator.php @@ -45,8 +45,8 @@ class RedirectUrlDecorator extends Decorator } } - if (self::SUBFOLDER !== '' && (0 === \mb_strpos($url, '/')) && (false === \mb_strpos($url, self::SUBFOLDER))) { - $url = \str_replace('//', '/', self::SUBFOLDER . '/' . $url); + if (containerInstance()->subFolder !== '' && (0 === \mb_strpos($url, '/')) && (false === \mb_strpos($url, \containerInstance()->subFolder))) { + $url = \str_replace('//', '/', \containerInstance()->subFolder . '/' . $url); } return \str_replace('.php', '', $url); diff --git a/src/decorators/UrlDecorator.php b/src/decorators/UrlDecorator.php index 1a7d76ed..de6a036e 100644 --- a/src/decorators/UrlDecorator.php +++ b/src/decorators/UrlDecorator.php @@ -37,8 +37,8 @@ class UrlDecorator extends Decorator } } - if (self::SUBFOLDER !== '' && (0 === \mb_strpos($url, '/')) && (false === \mb_strpos($url, self::SUBFOLDER))) { - $url = \str_replace('//', '/', self::SUBFOLDER . '/' . $url); + if (containerInstance()->subFolder !== '' && (0 === \mb_strpos($url, '/')) && (false === \mb_strpos($url, \containerInstance()->subFolder))) { + $url = \str_replace('//', '/', \containerInstance()->subFolder . '/' . $url); } return $url; diff --git a/src/lib.inc.php b/src/lib.inc.php index a2417192..6a3956be 100644 --- a/src/lib.inc.php +++ b/src/lib.inc.php @@ -15,41 +15,16 @@ if (!\is_writable(\dirname(__DIR__) . '/temp')) { } require_once \dirname(__DIR__) . '/vendor/autoload.php'; -$subfolder = ''; -// Check to see if the configuration file exists, if not, explain -if (!\file_exists(\dirname(__DIR__) . '/config.inc.php')) { - die('Configuration error: Copy config.inc.php-dist to config.inc.php and edit appropriately.'); -} - $conf = []; - - include \dirname(__DIR__) . '/config.inc.php'; - - if (isset($conf['subfolder']) && \is_string($conf['subfolder'])) { - $subfolder = $conf['subfolder']; - } elseif (\PHP_SAPI === 'cli-server') { - $subfolder = '/index.php'; - } elseif (isset($_SERVER['DOCUMENT_ROOT'])) { - $subfolder = \str_replace( - $_SERVER['DOCUMENT_ROOT'], - '', - \dirname(__DIR__) - ); - } -\defined('PHPPGA_SUBFOLDER') || \define('PHPPGA_SUBFOLDER', $subfolder); $shouldSetSession = (\defined('PHP_SESSION_ACTIVE') ? \PHP_SESSION_ACTIVE !== \session_status() : !\session_id()) -&& !\headers_sent() -&& !\ini_get('session.auto_start'); + && !\headers_sent() + && !\ini_get('session.auto_start'); if ($shouldSetSession && \PHP_SAPI !== 'cli') { \session_set_cookie_params(0, '/', $_SERVER['HTTP_HOST'], isset($_SERVER['HTTPS'])); \session_name('PPA_ID'); \session_start(); } - -$debugmode = (!isset($conf['debugmode'])) ? false : (bool) ($conf['debugmode']); -\defined('DEBUGMODE') || \define('DEBUGMODE', $debugmode); - if (!\defined('ADODB_ERROR_HANDLER_TYPE')) { \define('ADODB_ERROR_HANDLER_TYPE', \E_USER_ERROR); } @@ -57,8 +32,36 @@ if (!\defined('ADODB_ERROR_HANDLER_TYPE')) { if (!\defined('ADODB_ERROR_HANDLER')) { \define('ADODB_ERROR_HANDLER', '\PHPPgAdmin\ADOdbException::adodb_throw'); } +function getAppInstance() { + $subfolder = ''; + // Check to see if the configuration file exists, if not, explain + if (!\file_exists(\dirname(__DIR__) . '/config.inc.php')) { + die('Configuration error: Copy config.inc.php-dist to config.inc.php and edit appropriately.'); + } +$conf = []; + +include_once \dirname(__DIR__) . '/config.inc.php'; + +if (isset($conf['subfolder']) && \is_string($conf['subfolder'])) { + $subfolder = $conf['subfolder']; +} elseif (\PHP_SAPI === 'cli-server') { + $subfolder = '/index.php'; +} elseif (isset($_SERVER['DOCUMENT_ROOT'])) { + $subfolder = \str_replace( + $_SERVER['DOCUMENT_ROOT'], + '', + \dirname(__DIR__) + ); +} + +$conf['subfolder'] = $subfolder; + + +$conf['debugmode'] = (!isset($conf['debugmode'])) ? false : (bool) ($conf['debugmode']); -if (DEBUGMODE) { + + +if ($conf['debugmode']) { \ini_set('display_errors', 'On'); \ini_set('display_startup_errors', 'On'); @@ -69,35 +72,48 @@ if (DEBUGMODE) { $conf['register_debuggers'](); } } -\define('ADODB_ASSOC_CASE', ADODB_ASSOC_CASE_NATIVE); + + +$conf['BASE_PATH'] = BASE_PATH; +$conf['theme_path'] = BASE_PATH . '/assets/themes'; +\defined('IN_TEST') || \define('IN_TEST', false); +$conf['IN_TEST'] = IN_TEST; +\ini_set('display_errors', strval($conf['debugmode'])); +\defined('ADODB_ASSOC_CASE') || \define('ADODB_ASSOC_CASE', ADODB_ASSOC_CASE_NATIVE); + // Fetch App and DI Container -$app = \PHPPgAdmin\ContainerUtils::createApp($conf); -$container = $app->getContainer(); +$app = \PHPPgAdmin\ContainerUtils::getAppInstance($conf); +return $app; +}; -if (!$container instanceof \Slim\Container) { - \trigger_error('App Container must be an instance of \\Slim\\Container', \E_USER_ERROR); -} -function containerInstance(): \Slim\Container +function containerInstance(): \PHPPgAdmin\ContainerUtils { - return \PHPPgAdmin\ContainerUtils::getContainerInstance(); + $app=getAppInstance(); + $container = $app->getContainer(); + if (!$container instanceof \PHPPgAdmin\ContainerUtils) { + \trigger_error('App Container must be an instance of \\Slim\\Container', \E_USER_ERROR); + } + return $container; } function requestInstance(): \Slim\Http\Request { - return containerInstance()->request; + return \containerInstance()->request; } - function responseInstance(): \Slim\Http\Response - { - return containerInstance()->response; - } +function responseInstance(): \Slim\Http\Response +{ + return \containerInstance()->response; +} +$app=getAppInstance(); +$container=$app->getContainer(); // This should be deprecated once we're sure no php scripts are required directly $container->offsetSet('server', $_REQUEST['server'] ?? null); $container->offsetSet('database', $_REQUEST['database'] ?? null); $container->offsetSet('schema', $_REQUEST['schema'] ?? null); -$container['haltHandler'] = static function (\Slim\Container $c) { +$container['haltHandler'] = static function (\PHPPgAdmin\ContainerUtils $c) { return static function ($request, $response, $exits, $status = 500) use ($c) { $title = 'PHPPgAdmin Error'; @@ -105,11 +121,11 @@ $container['haltHandler'] = static function (\Slim\Container $c) { $output = \sprintf( "<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>" . - '<title>%s</title><style>' . - 'body{margin:0;padding:30px;font:12px/1.5 Helvetica,Arial,Verdana,sans-serif;}' . - 'h3{margin:0;font-size:28px;font-weight:normal;line-height:30px;}' . - 'span{display:inline-block;font-size:16px;}' . - '</style></head><body><h3>%s</h3><p>%s</p><span>%s</span></body></html>', + '<title>%s</title><style>' . + 'body{margin:0;padding:30px;font:12px/1.5 Helvetica,Arial,Verdana,sans-serif;}' . + 'h3{margin:0;font-size:28px;font-weight:normal;line-height:30px;}' . + 'span{display:inline-block;font-size:16px;}' . + '</style></head><body><h3>%s</h3><p>%s</p><span>%s</span></body></html>', $title, $title, $html, diff --git a/src/middleware/PopulateRequestResponse.php b/src/middleware/PopulateRequestResponse.php index 8a3828cc..b515c268 100644 --- a/src/middleware/PopulateRequestResponse.php +++ b/src/middleware/PopulateRequestResponse.php @@ -20,7 +20,7 @@ class PopulateRequestResponse extends Middleware $next ) { $container = $this->container; - $subfolder = $this->getSubfolder(); + $subfolder = $this->container->getSubfolder(); $container['requestobj'] = $request; $container['responseobj'] = $response; $route = $request->getAttribute('route'); @@ -71,7 +71,7 @@ class PopulateRequestResponse extends Middleware $view->offsetSet('in_test', $in_test); if (0 < \count($container['errors'])) { - return ($container->haltHandler)($container->requestobj, $container->responseobj, $container['errors'], 412); + return ($container->haltHandler)($container->request, $container->response, $container['errors'], 412); } // First execute anything else diff --git a/src/router.php b/src/router.php index c3d707c1..d5e85bb6 100644 --- a/src/router.php +++ b/src/router.php @@ -20,7 +20,7 @@ $app->get('/status', function ( return $response ->withHeader('Content-type', 'application/json') ->withJson( - DEBUGMODE ? $this->get('settings')->all() : ['version' => $this->version] + $this->DEBUGMODE ? $this->get('settings')->all() : ['version' => $this->version] ); }); @@ -65,14 +65,14 @@ $app->post('/redirect/server', function ( $misc->setReloadBrowser(true); - $destinationurl = $this->utils->getDestinationWithLastTab('alldb'); + $destinationurl = $this->getDestinationWithLastTab('alldb'); return $response->withStatus(302)->withHeader('Location', $destinationurl); } $_server_info = $this->misc->getServerInfo(); if (!isset($_server_info['username'])) { - $destinationurl = $this->utils->getDestinationWithLastTab('server'); + $destinationurl = $this->getDestinationWithLastTab('server'); return $response->withStatus(302)->withHeader('Location', $destinationurl); } @@ -87,7 +87,7 @@ $app->get('/redirect[/{subject}]', function ( array $args ) { $subject = (isset($args['subject'])) ? $args['subject'] : 'root'; - $destinationurl = $this->utils->getDestinationWithLastTab($subject); + $destinationurl = $this->getDestinationWithLastTab($subject); return $response->withStatus(302)->withHeader('Location', $destinationurl); }); @@ -110,11 +110,11 @@ $app->map(['GET', 'POST'], '/src/views/{subject}', function ( $safe_subjects = ('servers' === $subject || 'intro' === $subject || 'browser' === $subject); if (null === $this->misc->getServerId() && !$safe_subjects) { - return $response->withStatus(302)->withHeader('Location', SUBFOLDER . '/src/views/servers'); + return $response->withStatus(302)->withHeader('Location', $this->subFolder . '/src/views/servers'); } if (!isset($_server_info['username']) && 'login' !== $subject && !$safe_subjects) { - $destinationurl = SUBFOLDER . '/src/views/login?server=' . $this->misc->getServerId(); + $destinationurl = $this->subFolder . '/src/views/login?server=' . $this->misc->getServerId(); return $response->withStatus(302)->withHeader('Location', $destinationurl); } @@ -180,7 +180,7 @@ $app->get('[/{path:.*}]', function ( //d($this->subfolder, $args, $query_string, $filepath); - $this->utils->prtrace($request->getAttribute('route')); + $this->prtrace($request->getAttribute('route')); return $response->write($args['path'] ? $args['path'] : 'index'); }); diff --git a/src/xhtml/HTMLController.php b/src/xhtml/HTMLController.php index 27e2f3e4..d32ad211 100644 --- a/src/xhtml/HTMLController.php +++ b/src/xhtml/HTMLController.php @@ -15,18 +15,9 @@ use PHPPgAdmin\Decorators\Decorator; class HTMLController { use \PHPPgAdmin\Traits\HelperTrait; - /** - * @var string - */ - const BASE_PATH = ContainerUtils::BASE_PATH; - /** - * @var string - */ - const SUBFOLDER = ContainerUtils::SUBFOLDER; - /** - * @var string - */ - const DEBUGMODE = ContainerUtils::DEBUGMODE; + + + public $form = ''; @@ -57,7 +48,7 @@ class HTMLController protected $container; // Constructor - public function __construct(\Slim\Container $container, $controller_name = null) + public function __construct(\PHPPgAdmin\ContainerUtils $container, $controller_name = null) { $this->container = $container; $this->lang = $container->get('lang'); diff --git a/src/xhtml/HTMLNavbarController.php b/src/xhtml/HTMLNavbarController.php index beac11c0..e9392b87 100644 --- a/src/xhtml/HTMLNavbarController.php +++ b/src/xhtml/HTMLNavbarController.php @@ -58,7 +58,28 @@ class HTMLNavbarController extends HTMLController return $trail_html; } + /** + * Get the URL for the last active tab of a particular tab bar. + * + * @param string $section + * + * @return null|mixed + */ + public function getLastTabURL($section) + { + //$data = $this->getDatabaseAccessor(); + + $tabs = $this->misc->getNavTabs($section); + if (isset($_SESSION['webdbLastTab'][$section], $tabs[$_SESSION['webdbLastTab'][$section]])) { + $tab = $tabs[$_SESSION['webdbLastTab'][$section]]; + } else { + $tab = \reset($tabs); + } + // $this->prtrace(['section' => $section, 'tabs' => $tabs, 'tab' => $tab]); + + return isset($tab['url']) ? $tab : null; + } /** * Display navigation tabs. * @@ -73,7 +94,10 @@ class HTMLNavbarController extends HTMLController $from = $from ? $from : __METHOD__; $this->misc = $this->misc; - + $_SESSION['webdbLastTab']=$_SESSION['webdbLastTab']??[]; +if(!is_array($_SESSION['webdbLastTab'])) { + $_SESSION['webdbLastTab']=[$alltabs=>$activetab]; +} if (\is_string($alltabs)) { $_SESSION['webdbLastTab'][$alltabs] = $activetab; $alltabs = $this->misc->getNavTabs($alltabs); @@ -166,7 +190,7 @@ class HTMLNavbarController extends HTMLController foreach ($search_paths as $schema) { $url = \str_replace(['&', 'redirect/database'], ['&', 'redirect/schema'], $dburl . '&schema=' . $schema); - $destination = $this->container->utils->getDestinationWithLastTab('database'); + $destination = $this->container->getDestinationWithLastTab('database'); //$this->dump(['url' => $url, 'destination' => $destination]); $search_path_crumbs[$schema] = [ 'title' => $lang['strschema'], @@ -222,7 +246,7 @@ class HTMLNavbarController extends HTMLController 'sql' => [ 'attr' => [ 'href' => [ - 'url' => self::SUBFOLDER . '/src/views/sqledit', + 'url' => \containerInstance()->subFolder . '/src/views/sqledit', 'urlvars' => \array_merge($reqvars, [ 'action' => 'sql', ]), @@ -236,7 +260,7 @@ class HTMLNavbarController extends HTMLController 'history' => [ 'attr' => [ 'href' => [ - 'url' => self::SUBFOLDER . '/src/views/history', + 'url' => \containerInstance()->subFolder . '/src/views/history', 'urlvars' => \array_merge($reqvars, [ 'action' => 'pophistory', ]), @@ -249,7 +273,7 @@ class HTMLNavbarController extends HTMLController 'find' => [ 'attr' => [ 'href' => [ - 'url' => self::SUBFOLDER . '/src/views/sqledit', + 'url' => \containerInstance()->subFolder . '/src/views/sqledit', 'urlvars' => \array_merge($reqvars, [ 'action' => 'find', ]), @@ -263,7 +287,7 @@ class HTMLNavbarController extends HTMLController 'logout' => [ 'attr' => [ 'href' => [ - 'url' => self::SUBFOLDER . '/src/views/servers', + 'url' => \containerInstance()->subFolder . '/src/views/servers', 'urlvars' => [ 'action' => 'logout', 'logoutServer' => \sha1("{$server_info['host']}:{$server_info['port']}:{$server_info['sslmode']}"), @@ -325,7 +349,7 @@ class HTMLNavbarController extends HTMLController $trail['root'] = [ 'text' => $appName, - 'url' => self::SUBFOLDER . '/src/views/servers', + 'url' => \containerInstance()->subFolder . '/src/views/servers', 'icon' => 'Introduction', ]; diff --git a/src/xhtml/HTMLTableController.php b/src/xhtml/HTMLTableController.php index dbd6d2a0..f758afb4 100644 --- a/src/xhtml/HTMLTableController.php +++ b/src/xhtml/HTMLTableController.php @@ -210,7 +210,7 @@ class HTMLTableController extends HTMLController $lang = $this->lang; if ($this->has_ma) { - $matop_html .= '<script src="' . self::SUBFOLDER . '/assets/js/multiactionform.js" type="text/javascript"></script>' . \PHP_EOL; + $matop_html .= '<script src="' . \containerInstance()->subFolder . '/assets/js/multiactionform.js" type="text/javascript"></script>' . \PHP_EOL; $matop_html .= \sprintf('<form id="multi_form" action="%s" method="post" enctype="multipart/form-data">%s', $this->ma['url'], \PHP_EOL); $this->coalesceArr($this->ma, 'vars', []); diff --git a/src/xhtml/XHtmlSimpleElement.php b/src/xhtml/XHtmlSimpleElement.php index d08abadf..2465ea29 100644 --- a/src/xhtml/XHtmlSimpleElement.php +++ b/src/xhtml/XHtmlSimpleElement.php @@ -19,18 +19,9 @@ use PHPPgAdmin\ContainerUtils; class XHtmlSimpleElement { use \PHPPgAdmin\Traits\HelperTrait; - /** - * @var string - */ - const BASE_PATH = ContainerUtils::BASE_PATH; - /** - * @var string - */ - const SUBFOLDER = ContainerUtils::SUBFOLDER; - /** - * @var string - */ - const DEBUGMODE = ContainerUtils::DEBUGMODE; + + + public $_element; @@ -109,27 +109,6 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== - dependencies: - "@nodelib/fs.stat" "2.0.3" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== - dependencies: - "@nodelib/fs.scandir" "2.1.3" - fastq "^1.6.0" - "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" @@ -142,86 +121,11 @@ dependencies: "@types/sizzle" "*" -"@types/json-schema@^7.0.3": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" - integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== - "@types/sizzle@*": version "2.3.2" resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== -"@typescript-eslint/eslint-plugin@^4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.3.0.tgz#1a23d904bf8ea248d09dc3761af530d90f39c8fa" - integrity sha512-RqEcaHuEKnn3oPFislZ6TNzsBLqpZjN93G69SS+laav/I8w/iGMuMq97P0D2/2/kW4SCebHggqhbcCfbDaaX+g== - dependencies: - "@typescript-eslint/experimental-utils" "4.3.0" - "@typescript-eslint/scope-manager" "4.3.0" - debug "^4.1.1" - functional-red-black-tree "^1.0.1" - regexpp "^3.0.0" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/experimental-utils@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.3.0.tgz#3f3c6c508e01b8050d51b016e7f7da0e3aefcb87" - integrity sha512-cmmIK8shn3mxmhpKfzMMywqiEheyfXLV/+yPDnOTvQX/ztngx7Lg/OD26J8gTZfkLKUmaEBxO2jYP3keV7h2OQ== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.3.0" - "@typescript-eslint/types" "4.3.0" - "@typescript-eslint/typescript-estree" "4.3.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@^4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.3.0.tgz#684fc0be6551a2bfcb253991eec3c786a8c063a3" - integrity sha512-JyfRnd72qRuUwItDZ00JNowsSlpQGeKfl9jxwO0FHK1qQ7FbYdoy5S7P+5wh1ISkT2QyAvr2pc9dAemDxzt75g== - dependencies: - "@typescript-eslint/scope-manager" "4.3.0" - "@typescript-eslint/types" "4.3.0" - "@typescript-eslint/typescript-estree" "4.3.0" - debug "^4.1.1" - -"@typescript-eslint/scope-manager@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.3.0.tgz#c743227e087545968080d2362cfb1273842cb6a7" - integrity sha512-cTeyP5SCNE8QBRfc+Lgh4Xpzje46kNUhXYfc3pQWmJif92sjrFuHT9hH4rtOkDTo/si9Klw53yIr+djqGZS1ig== - dependencies: - "@typescript-eslint/types" "4.3.0" - "@typescript-eslint/visitor-keys" "4.3.0" - -"@typescript-eslint/types@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.3.0.tgz#1f0b2d5e140543e2614f06d48fb3ae95193c6ddf" - integrity sha512-Cx9TpRvlRjOppGsU6Y6KcJnUDOelja2NNCX6AZwtVHRzaJkdytJWMuYiqi8mS35MRNA3cJSwDzXePfmhU6TANw== - -"@typescript-eslint/typescript-estree@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.3.0.tgz#0edc1068e6b2e4c7fdc54d61e329fce76241cee8" - integrity sha512-ZAI7xjkl+oFdLV/COEz2tAbQbR3XfgqHEGy0rlUXzfGQic6EBCR4s2+WS3cmTPG69aaZckEucBoTxW9PhzHxxw== - dependencies: - "@typescript-eslint/types" "4.3.0" - "@typescript-eslint/visitor-keys" "4.3.0" - debug "^4.1.1" - globby "^11.0.1" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/visitor-keys@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.3.0.tgz#0e5ab0a09552903edeae205982e8521e17635ae0" - integrity sha512-xZxkuR7XLM6RhvLkgv9yYlTcBHnTULzfnw4i6+z2TGBLy9yljAypQaZl9c3zFvy7PNI7fYWyvKYtohyF8au3cw== - dependencies: - "@typescript-eslint/types" "4.3.0" - eslint-visitor-keys "^2.0.0" - acorn-jsx@^5.2.0: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" @@ -289,11 +193,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" @@ -389,13 +288,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -491,13 +383,6 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -529,10 +414,10 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eslint-config-prettier@^6.12.0: - version "6.12.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.12.0.tgz#9eb2bccff727db1c52104f0b49e87ea46605a0d2" - integrity sha512-9jWPlFlgNwRUYVoujvWTQ1aMO8o6648r+K7qU7K5Jmkbyqav1fuEZC0COYpGBxyiAJb65Ra9hrmFx19xRGwXWw== +eslint-config-prettier@^6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1" + integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA== dependencies: get-stdin "^6.0.0" @@ -543,15 +428,15 @@ eslint-plugin-prettier@^3.1.4: dependencies: prettier-linter-helpers "^1.0.0" -eslint-scope@^5.0.0, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== +eslint-scope@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" + integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== dependencies: - esrecurse "^4.3.0" + esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^2.0.0, eslint-utils@^2.1.0: +eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== @@ -563,15 +448,10 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint-visitor-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" - integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== - -eslint@^7.10.0: - version "7.10.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.10.0.tgz#494edb3e4750fb791133ca379e786a8f648c72b9" - integrity sha512-BDVffmqWl7JJXqCjAK6lWtcQThZB/aP1HXSH1JKwGwv0LQEdvpR7qzNrUT487RM39B5goWuboFad5ovMBmD8yA== +eslint@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.8.1.tgz#e59de3573fb6a5be8ff526c791571646d124a8fa" + integrity sha512-/2rX2pfhyUG0y+A123d0ccXtMm7DV7sH1m3lk9nk2DZ2LReq39FXHueR9xZwshE5MdfSf0xunSaMWRqyIA6M1w== dependencies: "@babel/code-frame" "^7.0.0" "@eslint/eslintrc" "^0.1.3" @@ -581,7 +461,7 @@ eslint@^7.10.0: debug "^4.0.1" doctrine "^3.0.0" enquirer "^2.3.5" - eslint-scope "^5.1.1" + eslint-scope "^5.1.0" eslint-utils "^2.1.0" eslint-visitor-keys "^1.3.0" espree "^7.3.0" @@ -632,7 +512,7 @@ esquery@^1.2.0: dependencies: estraverse "^5.1.0" -esrecurse@^4.3.0: +esrecurse@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -664,18 +544,6 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^3.1.1: - version "3.2.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" - integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" - merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" - fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -686,13 +554,6 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fastq@^1.6.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" - integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== - dependencies: - reusify "^1.0.4" - file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -700,13 +561,6 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -736,7 +590,7 @@ get-stdin@^6.0.0: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== -glob-parent@^5.0.0, glob-parent@^5.1.0: +glob-parent@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== @@ -772,18 +626,6 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== -globby@^11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" - integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - graceful-fs@^4.1.2: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" @@ -816,11 +658,6 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== - image-size@~0.5.0: version "0.5.5" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" @@ -876,11 +713,6 @@ is-glob@^4.0.0, is-glob@^4.0.1: dependencies: is-extglob "^2.1.1" -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -949,7 +781,7 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -lodash@^4.12.0, lodash@^4.15.0, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.4: +lodash@^4.12.0, lodash@^4.15.0, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.4: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -1021,19 +853,6 @@ melody-types@^1.7.5: dependencies: babel-types "^6.8.1" -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - mime@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -1124,16 +943,6 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picomatch@^2.0.5, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" @@ -1169,10 +978,10 @@ prettier@^1.8.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -prettier@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" - integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== +prettier@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.1.tgz#d9485dd5e499daa6cb547023b87a6cf51bee37d6" + integrity sha512-9bY+5ZWCfqj3ghYBLxApy2zf6m+NJo5GzmLTpr9FsApsfjriNnS2dahWReHMi7qNPhhHl9SYHJs2cHZLgexNIw== progress@^2.0.0: version "2.0.3" @@ -1194,7 +1003,7 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regexpp@^3.0.0, regexpp@^3.1.0: +regexpp@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== @@ -1211,11 +1020,6 @@ resolve@^1.12.0: dependencies: path-parse "^1.0.6" -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -1223,17 +1027,12 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -run-parallel@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== - semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^7.2.1, semver@^7.3.2: +semver@^7.2.1: version "7.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== @@ -1257,11 +1056,6 @@ shortid@^2.2.6: dependencies: nanoid "^2.1.0" -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -1365,14 +1159,7 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -tslib@^1.10.0, tslib@^1.8.1: +tslib@^1.10.0: version "1.13.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== @@ -1382,13 +1169,6 @@ tslib@^2.0.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== -tsutils@^3.17.1: - version "3.17.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" - integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== - dependencies: - tslib "^1.8.1" - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" |