Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/HuasoFoundries/phpPgAdmin6.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorffflabs <amenadiel@gmail.com>2020-03-04 20:49:27 +0300
committerffflabs <amenadiel@gmail.com>2020-03-04 20:49:27 +0300
commit6473d18d767a04b2f2ee42b64ecfa3ceeab7f4d5 (patch)
treeeff1dafa55941e44a6c995f97568d55689a57168
parentd93ec300b47c362db73149f5cdefa7a858a1c40c (diff)
enabling checks with psalm and phpstan
-rw-r--r--Makefile21
-rw-r--r--composer.json3
-rw-r--r--composer.lock41
-rw-r--r--phpstan.neon42
-rw-r--r--psalm-baseline.xml681
-rw-r--r--psalm.xml4
-rw-r--r--src/classes/ContainerUtils.php55
-rw-r--r--src/classes/Misc.php10
-rw-r--r--src/classes/Translations.php4
-rw-r--r--src/controllers/BaseController.php2
-rw-r--r--src/database/Postgres.php6
-rw-r--r--src/decorators/Decorator.php4
-rw-r--r--src/lib.inc.php3
-rw-r--r--src/traits/HelperTrait.php30
-rw-r--r--src/traits/MiscTrait.php1
-rw-r--r--src/xhtml/XHtmlSimpleElement.php2
16 files changed, 850 insertions, 59 deletions
diff --git a/Makefile b/Makefile
index 0c06e7da..18e871a4 100644
--- a/Makefile
+++ b/Makefile
@@ -121,14 +121,14 @@ var_dumper:
@echo ""
folder ?= src
-psalm: FOLDER_BASENAME:=`basename $(folder)`
+psalm: FOLDER_BASENAME:=`basename $(folder)|sed 's/src//'`
psalm:
@if [ -f "vendor/bin/psalm" ]; then \
mkdir -p .build/psalm ;\
${MAKE} disable_xdebug --no-print-directory ;\
vendor/bin/psalm --show-info=false \
--config=psalm.xml \
- --set-baseline=psalm-baseline-$(FOLDER_BASENAME).xml \
+ --set-baseline=.build/psalm/psalm-baseline$(FOLDER_BASENAME).xml \
--shepherd $(folder) ;\
${MAKE} enable_xdebug new_status=$(XDSWI_STATUS) --no-print-directory;\
else \
@@ -137,6 +137,23 @@ psalm:
fi
@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 ;\
+ fi
+
+ @mkdir -p .build/phpstan ;\
+ ./vendor/bin/phpstan analyse --memory-limit=2G ${error_format}
+ @${MAKE} enable_xdebug new_status=$(XDSWI_STATUS) --no-print-directory ;\
+ echo ""
+
+
+
+
create_testdb:
PGPASSWORD=scrutinizer psql -U scrutinizer -h localhost -f tests/simpletest/data/ppatests_install.sql
diff --git a/composer.json b/composer.json
index 0507d34d..42527b80 100644
--- a/composer.json
+++ b/composer.json
@@ -34,7 +34,8 @@
"kint-php/kint": "~3.3",
"simpletest/simpletest": "^1.1",
"symfony/var-dumper": "^5.0",
- "vimeo/psalm": "^3.9"
+ "vimeo/psalm": "^3.9",
+ "phpstan/phpstan": "^0.12.14"
},
"extra": {
"current_tags": {
diff --git a/composer.lock b/composer.lock
index f3801c62..ee388da7 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "227516e55a6a93c7fadf0bd1efc807d2",
+ "content-hash": "0a2c77742518f9e5a88c67d4020c6b6b",
"packages": [
{
"name": "adodb/adodb-php",
@@ -2747,6 +2747,45 @@
"time": "2020-01-20T15:57:02+00:00"
},
{
+ "name": "phpstan/phpstan",
+ "version": "0.12.14",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpstan.git",
+ "reference": "37bdd26a80235d0f9045b49f4151102b7831cbe2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/37bdd26a80235d0f9045b49f4151102b7831cbe2",
+ "reference": "37bdd26a80235d0f9045b49f4151102b7831cbe2",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "bin": [
+ "phpstan",
+ "phpstan.phar"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.12-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPStan - PHP Static Analysis Tool",
+ "time": "2020-03-02T22:29:43+00:00"
+ },
+ {
"name": "phpunit/php-code-coverage",
"version": "8.0.1",
"source": {
diff --git a/phpstan.neon b/phpstan.neon
new file mode 100644
index 00000000..945aecb9
--- /dev/null
+++ b/phpstan.neon
@@ -0,0 +1,42 @@
+parameters:
+
+ paths:
+ - src
+
+ tmpDir: ./.build/phpstan
+
+ # The level 8 is the highest level
+ level: 5
+
+ autoload_files:
+ - vendor/adodb/adodb-php/adodb.inc.php
+
+ excludes_analyse:
+ - .build/*
+ - tests/*
+ - assets/*
+ - temp/*
+ - vendor/*
+ - src/classes/ADO*
+ - router.php
+
+ treatPhpDocTypesAsCertain: false
+
+
+
+ ignoreErrors:
+ -
+ message: '#Access to an undefined property Psr\Container\ContainerInterface::\$[a-zA-Z ]+#'
+ paths:
+ - src/classes/*
+
+ -
+ message: "#^Access to an undefined property Psr\\\\Container\\\\ContainerInterface\\:\\:\\$[a-zA-Z]+.*#"
+ paths:
+ - src/classes/*
+ -
+ message: "#^Call to an undefined method PHPPgAdmin\\\\Database\\\\ADO.*#"
+ paths:
+ - src/*
+
+ - '#Other error to catch anywhere#' \ No newline at end of file
diff --git a/psalm-baseline.xml b/psalm-baseline.xml
index 8bea7c5d..d4f11396 100644
--- a/psalm-baseline.xml
+++ b/psalm-baseline.xml
@@ -1,5 +1,574 @@
<?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>
+ </UndefinedClass>
+ </file>
+ <file src="src/classes/ADOdbException.php">
+ <UndefinedDocblockClass occurrences="2">
+ <code>number</code>
+ <code>number</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="src/classes/ContainerUtils.php">
+ <UndefinedClass occurrences="1">
+ <code>\Slim\ContainerInterface</code>
+ </UndefinedClass>
+ <UndefinedInterfaceMethod occurrences="7">
+ <code>$container</code>
+ <code>$container</code>
+ <code>$container</code>
+ <code>$container</code>
+ <code>$container</code>
+ <code>$container</code>
+ <code>$container</code>
+ </UndefinedInterfaceMethod>
+ </file>
+ <file src="src/classes/Misc.php">
+ <InvalidNullableReturnType occurrences="1">
+ <code>string</code>
+ </InvalidNullableReturnType>
+ <NullableReturnStatement occurrences="3">
+ <code>$this-&gt;_server_info</code>
+ <code>$this-&gt;halt($this-&gt;lang['strinvalidserverparam'])</code>
+ <code>$this-&gt;halt($lang['strcannotdumponwindows'])</code>
+ </NullableReturnStatement>
+ <UndefinedMethod occurrences="1">
+ <code>setSchema</code>
+ </UndefinedMethod>
+ </file>
+ <file src="src/controllers/AggregatesController.php">
+ <NullReference occurrences="1">
+ <code>$_REQUEST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/AlldbController.php">
+ <NullReference occurrences="3">
+ <code>$_POST</code>
+ <code>$_POST</code>
+ <code>$_POST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/BaseController.php">
+ <UndefinedConstant occurrences="1">
+ <code>BASE_PATH</code>
+ </UndefinedConstant>
+ <UndefinedThisPropertyAssignment occurrences="1">
+ <code>$this-&gt;postgresqlMinVer</code>
+ </UndefinedThisPropertyAssignment>
+ </file>
+ <file src="src/controllers/ColpropertiesController.php">
+ <NullArgument occurrences="1">
+ <code>null</code>
+ </NullArgument>
+ <NullReference occurrences="1">
+ <code>$_REQUEST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/ConstraintsController.php">
+ <NullReference occurrences="5">
+ <code>$_POST</code>
+ <code>$_POST</code>
+ <code>$_POST</code>
+ <code>$_POST</code>
+ <code>$_POST</code>
+ </NullReference>
+ <UndefinedMethod occurrences="1">
+ <code>doTree</code>
+ </UndefinedMethod>
+ </file>
+ <file src="src/controllers/DatabaseController.php">
+ <NullReference occurrences="1">
+ <code>$_REQUEST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/DataexportController.php">
+ <InvalidArgument occurrences="16">
+ <code>"REQUEST['what']"</code>
+ <code>'DUMP ENABLED, d_format is'</code>
+ <code>$_REQUEST['d_format']</code>
+ <code>'d_format is'</code>
+ <code>'d_oids is'</code>
+ <code>isset($_REQUEST['d_oids'])</code>
+ <code>'$_REQUEST[query]'</code>
+ <code>\htmlspecialchars(\urlencode($_REQUEST['query']))</code>
+ <code>'$_SESSION[sqlquery]'</code>
+ <code>\htmlspecialchars(\urlencode($_SESSION['sqlquery']))</code>
+ <code>"REQUEST['what']"</code>
+ <code>'subject'</code>
+ <code>'object'</code>
+ <code>'tabledefprefix'</code>
+ <code>'tabledefsuffix'</code>
+ <code>'$_REQUEST[query]'</code>
+ </InvalidArgument>
+ </file>
+ <file src="src/controllers/DbexportController.php">
+ <EmptyArrayAccess occurrences="1">
+ <code>$version[1]</code>
+ </EmptyArrayAccess>
+ <InvalidArgument occurrences="8">
+ <code>'REQUEST[subject]'</code>
+ <code>'$exe'</code>
+ <code>'version'</code>
+ <code>'REQUEST[output]'</code>
+ <code>'f_object'</code>
+ <code>'ENV VARS'</code>
+ <code>'cmd'</code>
+ <code>$cmd</code>
+ </InvalidArgument>
+ </file>
+ <file src="src/controllers/DisplayController.php">
+ <EmptyArrayAccess occurrences="1">
+ <code>$urlvars['search_path']</code>
+ </EmptyArrayAccess>
+ <InvalidArgument occurrences="1">
+ <code>$resultset-&gt;recordCount()</code>
+ </InvalidArgument>
+ <InvalidArrayOffset occurrences="9">
+ <code>$_gets['schema']</code>
+ <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>
+ <InvalidNullableReturnType occurrences="1">
+ <code>string</code>
+ </InvalidNullableReturnType>
+ <NullReference occurrences="5">
+ <code>$_REQUEST</code>
+ <code>$_REQUEST</code>
+ <code>$_REQUEST</code>
+ <code>$_REQUEST</code>
+ <code>$_POST</code>
+ </NullReference>
+ <UndefinedDocblockClass occurrences="7">
+ <code>$resultset-&gt;recordCount()</code>
+ <code>$resultset-&gt;recordCount()</code>
+ <code>$resultset-&gt;fetchField($index)</code>
+ <code>$finfo-&gt;name</code>
+ <code>$finfo-&gt;name</code>
+ <code>$resultset-&gt;fetchField($j++)</code>
+ <code>$finfo-&gt;type</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="src/controllers/DomainsController.php">
+ <NullReference occurrences="3">
+ <code>$_POST</code>
+ <code>$_POST</code>
+ <code>$_POST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/FulltextController.php">
+ <NullReference occurrences="6">
+ <code>$_POST</code>
+ <code>$_POST</code>
+ <code>$_POST</code>
+ <code>$_POST</code>
+ <code>$_POST</code>
+ <code>$_POST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/FunctionsController.php">
+ <InvalidNullableReturnType occurrences="1">
+ <code>string</code>
+ </InvalidNullableReturnType>
+ <NullableReturnStatement occurrences="2">
+ <code>$this-&gt;_printNavLinks('functions-properties', $func_full)</code>
+ <code>$this-&gt;_printNavLinks('functions-properties', $func_full)</code>
+ </NullableReturnStatement>
+ <TooFewArguments occurrences="1">
+ <code>showDefinition</code>
+ </TooFewArguments>
+ <UndefinedVariable occurrences="1">
+ <code>$f</code>
+ </UndefinedVariable>
+ </file>
+ <file src="src/controllers/GroupsController.php">
+ <NullReference occurrences="3">
+ <code>$_POST</code>
+ <code>$_POST</code>
+ <code>$_POST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/IndexesController.php">
+ <NullReference occurrences="4">
+ <code>$_REQUEST</code>
+ <code>$_REQUEST</code>
+ <code>$_REQUEST</code>
+ <code>$_POST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/InfoController.php">
+ <InvalidReturnType occurrences="1">
+ <code>string|void</code>
+ </InvalidReturnType>
+ <UndefinedThisPropertyAssignment occurrences="1">
+ <code>$this-&gt;shownull</code>
+ </UndefinedThisPropertyAssignment>
+ <UndefinedThisPropertyFetch occurrences="4">
+ <code>$this-&gt;shownull</code>
+ <code>$this-&gt;shownull</code>
+ <code>$this-&gt;shownull</code>
+ <code>$this-&gt;shownull</code>
+ </UndefinedThisPropertyFetch>
+ </file>
+ <file src="src/controllers/LoginController.php">
+ <InvalidArgument occurrences="1">
+ <code>'invalid server param'</code>
+ </InvalidArgument>
+ </file>
+ <file src="src/controllers/MaterializedviewpropertiesController.php">
+ <InvalidArgument occurrences="1">
+ <code>$sql</code>
+ </InvalidArgument>
+ <NullReference occurrences="2">
+ <code>$_REQUEST</code>
+ <code>$_POST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/MaterializedviewsController.php">
+ <NullReference occurrences="2">
+ <code>$_REQUEST</code>
+ <code>$_REQUEST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/PrivilegesController.php">
+ <NullReference occurrences="2">
+ <code>$_REQUEST</code>
+ <code>$_REQUEST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/RolesController.php">
+ <NullReference occurrences="4">
+ <code>$_POST</code>
+ <code>$_POST</code>
+ <code>$_POST</code>
+ <code>$_POST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/RulesController.php">
+ <NullReference occurrences="1">
+ <code>$_POST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/SchemasController.php">
+ <NullReference occurrences="2">
+ <code>$_POST</code>
+ <code>$_POST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/SequencesController.php">
+ <NullReference occurrences="3">
+ <code>$_POST</code>
+ <code>$_POST</code>
+ <code>$_POST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/SqleditController.php">
+ <NullReference occurrences="2">
+ <code>$_REQUEST</code>
+ <code>$_REQUEST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/TablesController.php">
+ <NullReference occurrences="3">
+ <code>$_REQUEST</code>
+ <code>$_POST</code>
+ <code>$_POST</code>
+ </NullReference>
+ <UndefinedDocblockClass occurrences="1">
+ <code>$tables-&gt;recordCount()</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="src/controllers/TablespacesController.php">
+ <NullReference occurrences="2">
+ <code>$_POST</code>
+ <code>$_POST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/TblpropertiesController.php">
+ <InvalidArgument occurrences="1">
+ <code>'$hasID'</code>
+ </InvalidArgument>
+ <NullReference occurrences="4">
+ <code>$_POST</code>
+ <code>$_POST</code>
+ <code>$_REQUEST</code>
+ <code>$_POST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/TreeController.php">
+ <InvalidReturnStatement occurrences="1">
+ <code>$parent</code>
+ </InvalidReturnStatement>
+ <UndefinedConstant occurrences="5">
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>BASE_PATH</code>
+ </UndefinedConstant>
+ </file>
+ <file src="src/controllers/TriggersController.php">
+ <NullReference occurrences="1">
+ <code>$_POST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/TypesController.php">
+ <InvalidArrayOffset occurrences="1">
+ <code>$navlinks['enum']</code>
+ </InvalidArrayOffset>
+ <NullReference occurrences="3">
+ <code>$_REQUEST</code>
+ <code>$_REQUEST</code>
+ <code>$_POST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/UsersController.php">
+ <NullReference occurrences="2">
+ <code>$_POST</code>
+ <code>$_POST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/ViewpropertiesController.php">
+ <NullReference occurrences="2">
+ <code>$_REQUEST</code>
+ <code>$_POST</code>
+ </NullReference>
+ </file>
+ <file src="src/controllers/ViewsController.php">
+ <NullReference occurrences="2">
+ <code>$_REQUEST</code>
+ <code>$_REQUEST</code>
+ </NullReference>
+ </file>
+ <file src="src/database/ADOdbBase.php">
+ <InvalidArgument occurrences="1">
+ <code>$e-&gt;getMessage()</code>
+ </InvalidArgument>
+ <InvalidReturnStatement occurrences="2">
+ <code>$e-&gt;getCode()</code>
+ <code>$e-&gt;getCode()</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-&gt;conn</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="src/database/Postgres.php">
+ <InvalidArgument occurrences="12">
+ <code>'bslash_count'</code>
+ <code>$bslash_count</code>
+ <code>$line</code>
+ <code>'dol_quote'</code>
+ <code>$dol_quote</code>
+ <code>$line</code>
+ <code>'open_xcomment'</code>
+ <code>$in_xcomment</code>
+ <code>$line</code>
+ <code>$i</code>
+ <code>$prevlen</code>
+ <code>$thislen</code>
+ </InvalidArgument>
+ <LoopInvalidation occurrences="1">
+ <code>$i</code>
+ </LoopInvalidation>
+ <ReferenceConstraintViolation occurrences="4">
+ <code>return -3;</code>
+ <code>return -1;</code>
+ <code>return $rs;</code>
+ <code>$max_pages</code>
+ </ReferenceConstraintViolation>
+ <UndefinedDocblockClass occurrences="1">
+ <code>$rs-&gt;recordCount()</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="src/database/Postgres12.php">
+ <InvalidNullableReturnType occurrences="1">
+ <code>false</code>
+ </InvalidNullableReturnType>
+ <NullableReturnStatement occurrences="1">
+ <code>null</code>
+ </NullableReturnStatement>
+ </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-&gt;fields('oid')</code>
+ <code>$rs-&gt;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-&gt;fields('oid')</code>
+ <code>$rs-&gt;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>
+ <code>$template['schema']</code>
+ <code>$template['name']</code>
+ <code>$template['schema']</code>
+ <code>$template['name']</code>
+ </InvalidArrayOffset>
+ </file>
+ <file src="src/database/databasetraits/FunctionTrait.php">
+ <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-&gt;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-&gt;recordCount()</code>
+ </UndefinedDocblockClass>
+ </file>
+ <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>
+ <code>$seq-&gt;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>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="src/database/databasetraits/TableTrait.php">
+ <InvalidArgument occurrences="1">
+ <code>$privs</code>
+ </InvalidArgument>
+ <InvalidReturnType occurrences="1">
+ <code>\PHPPgAdmin\ADORecordSet</code>
+ </InvalidReturnType>
+ <UndefinedDocblockClass occurrences="8">
+ <code>$t-&gt;recordCount()</code>
+ <code>$atts-&gt;recordCount()</code>
+ <code>$cons-&gt;recordCount()</code>
+ <code>$rs-&gt;recordCount()</code>
+ <code>$indexes-&gt;recordCount()</code>
+ <code>$triggers-&gt;recordCount()</code>
+ <code>$rules-&gt;recordCount()</code>
+ <code>$data-&gt;recordCount()</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="src/database/databasetraits/TriggerTrait.php">
+ <InvalidReturnType occurrences="1">
+ <code>int</code>
+ </InvalidReturnType>
+ </file>
+ <file src="src/database/databasetraits/ViewTrait.php">
+ <UndefinedDocblockClass occurrences="1">
+ <code>$data-&gt;recordCount()</code>
+ </UndefinedDocblockClass>
+ </file>
<file src="src/decorators/ActionUrlDecorator.php">
<UndefinedConstant occurrences="1">
<code>\SUBFOLDER</code>
@@ -130,6 +699,69 @@
<code>$this-&gt;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>
+ <file src="src/router.php">
+ <InvalidScope occurrences="6">
+ <code>$this</code>
+ <code>$this</code>
+ <code>$this</code>
+ <code>$this</code>
+ <code>$this</code>
+ <code>$this</code>
+ </InvalidScope>
+ </file>
+ <file src="src/traits/AdminTrait.php">
+ <InvalidArrayOffset occurrences="2">
+ <code>$actions['edit']['vars']</code>
+ <code>$actions['delete']['vars']</code>
+ </InvalidArrayOffset>
+ <ParadoxicalCondition occurrences="1">
+ <code>empty($_REQUEST['table'])</code>
+ </ParadoxicalCondition>
+ <UndefinedConstant occurrences="16">
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ </UndefinedConstant>
+ <UndefinedDocblockClass occurrences="1">
+ <code>$autovac-&gt;recordCount()</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="src/traits/ExportTrait.php">
+ <UndefinedConstant occurrences="1">
+ <code>\SUBFOLDER</code>
+ </UndefinedConstant>
+ </file>
<file src="src/traits/HelperTrait.php">
<UndefinedConstant occurrences="1">
<code>BASE_PATH</code>
@@ -143,4 +775,53 @@
<code>$this-&gt;container</code>
</UndefinedThisPropertyFetch>
</file>
+ <file src="src/traits/InsertEditRowTrait.php">
+ <UndefinedConstant occurrences="2">
+ <code>SUBFOLDER</code>
+ <code>SUBFOLDER</code>
+ </UndefinedConstant>
+ </file>
+ <file src="src/traits/MiscTrait.php">
+ <UndefinedConstant occurrences="5">
+ <code>SUBFOLDER</code>
+ <code>SUBFOLDER</code>
+ <code>SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ </UndefinedConstant>
+ <UndefinedMethod occurrences="1">
+ <code>isSuperUser</code>
+ </UndefinedMethod>
+ </file>
+ <file src="src/traits/ViewsMatviewsTrait.php">
+ <EmptyArrayAccess occurrences="1">
+ <code>$formLink[$i]</code>
+ </EmptyArrayAccess>
+ <NullReference occurrences="1">
+ <code>$_POST</code>
+ </NullReference>
+ <UndefinedConstant occurrences="3">
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ <code>\SUBFOLDER</code>
+ </UndefinedConstant>
+ </file>
+ <file src="src/xhtml/HTMLNavbarController.php">
+ <InvalidArgument occurrences="1">
+ <code>$alltabs</code>
+ </InvalidArgument>
+ <InvalidReturnType occurrences="1">
+ <code>? string</code>
+ </InvalidReturnType>
+ </file>
+ <file src="src/xhtml/HTMLTableController.php">
+ <UndefinedConstant occurrences="1">
+ <code>SUBFOLDER</code>
+ </UndefinedConstant>
+ </file>
+ <file src="src/xhtml/XHtmlElement.php">
+ <MismatchingDocblockParamType occurrences="1">
+ <code>XHtmlElement</code>
+ </MismatchingDocblockParamType>
+ </file>
</files>
diff --git a/psalm.xml b/psalm.xml
index f9b34f93..854ef025 100644
--- a/psalm.xml
+++ b/psalm.xml
@@ -5,12 +5,14 @@
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-src.xml"
+ errorBaseline=".build/psalm/psalm-baseline.xml"
>
<projectFiles>
<directory name="src" />
<ignoreFiles>
<directory name="vendor" />
+ <directory name="temp" />
+ <directory name="tests" />
</ignoreFiles>
</projectFiles>
diff --git a/src/classes/ContainerUtils.php b/src/classes/ContainerUtils.php
index ca4ba257..e26eb7f1 100644
--- a/src/classes/ContainerUtils.php
+++ b/src/classes/ContainerUtils.php
@@ -9,10 +9,11 @@ namespace PHPPgAdmin;
use Psr\Container\ContainerInterface;
use Slim\App;
-\defined('BASE_PATH') || \define(BASE_PATH, \dirname(__DIR__, 2));
+\defined('BASE_PATH') || \define('BASE_PATH', \dirname(__DIR__, 2));
+\defined('THEME_PATH') || \define('THEME_PATH', BASE_PATH . '/assets/themes');
\defined('SUBFOLDER') || \define(
'SUBFOLDER',
- \str_replace($_SERVER['DOCUMENT_ROOT'] ?? '', '', BASE_PATH)
+ \str_replace($_SERVER['DOCUMENT_ROOT'] ?? '', '', 'BASE_PATH')
);
\defined('DEBUGMODE') || \define('DEBUGMODE', false);
\defined('IN_TEST') || \define('IN_TEST', false);
@@ -43,7 +44,7 @@ class ContainerUtils
/**
* @var ContainerInterface
*/
- protected $_container;
+ protected $container;
/**
* @var App
@@ -67,7 +68,7 @@ class ContainerUtils
//$this->prtrace($appVersion);
//$this->dump($composerinfo);
$settings = [
- 'displayErrorDetails' => self::DEBUGMODE,
+
'determineRouteBeforeAppMiddleware' => true,
'base_path' => self::BASE_PATH,
'debug' => self::DEBUGMODE,
@@ -105,19 +106,20 @@ class ContainerUtils
$this->_app = new App($config);
// Fetch DI Container
- $container = $this->_app->getContainer();
- $container['utils'] = $this;
- $container['version'] = 'v' . $appVersion;
- $container['errors'] = [];
-
- $this->_container = $container;
+ $container = $this->_app->getContainer();
+ $container['utils'] = $this;
+ $container['version'] = 'v' . $appVersion;
+ $container['errors'] = [];
+ $container['requestobj'] = $container['request'];
+ $container['responseobj'] = $container['response'];
+ $this->container = $container;
}
public static function getContainerInstance()
{
$_instance = self::getInstance();
- if (!$container = $_instance->_container) {
+ if (!$container = $_instance->container) {
throw new \Exception('Could not get a container');
}
@@ -216,16 +218,13 @@ class ContainerUtils
/**
* Gets the theme from
* 1. The $_REQUEST global (when it's chosen from start screen)
- * 2. Server specific config theme
- * 3.- $_SESSION global (subsequent requests after 1.)
- * 4.- $_COOKIE global (mostly fallback for $_SESSION after 1.- and 3.-)
- * 5.- theme as set in config
- * 6.- 'default' theme.
+ * 2. Server specific config theme 3.- $_SESSION global (subsequent requests after 1.) 4.- $_COOKIE global (mostly
+ * fallback for $_SESSION after 1.- and 3.-) 5.- theme as set in config 6.- 'default' theme.
*
- * @param <type> $conf The conf
- * @param null|mixed $_server_info
+ * @param array $conf The conf
+ * @param null|mixed $_server_info
*
- * @return string the theme
+ * @return string the theme
*/
public function getTheme(array $conf, $_server_info = null)
{
@@ -271,10 +270,10 @@ class ContainerUtils
*/
public function getRedirectUrl()
{
- $query_string = $this->_container->requestobj->getUri()->getQuery();
+ $query_string = $this->container->requestobj->getUri()->getQuery();
// if server_id isn't set, then you will be redirected to intro
- if (null === $this->_container->requestobj->getQueryParam('server')) {
+ if (null === $this->container->requestobj->getQueryParam('server')) {
$destinationurl = \SUBFOLDER . '/src/views/intro';
} else {
// otherwise, you'll be redirected to the login page for that server;
@@ -294,14 +293,14 @@ class ContainerUtils
*/
public function getDestinationWithLastTab($subject)
{
- $_server_info = $this->_container->misc->getServerInfo();
+ $_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
if (!isset($_server_info['username'])) {
$destinationurl = $this->getRedirectUrl();
} else {
- $url = $this->_container->misc->getLastTabURL($subject);
+ $url = $this->container->misc->getLastTabURL($subject);
$this->addFlash($url, 'getLastTabURL for ' . $subject);
// Load query vars into superglobal arrays
if (isset($url['urlvars'])) {
@@ -328,15 +327,15 @@ class ContainerUtils
*
* @param string $errormsg The error msg
*
- * @return \Slim\Container The app container
+ * @return \Slim\ContainerInterface The app container
*/
- public function addError($errormsg)
+ public function addError(string $errormsg): \Slim\ContainerInterface
{
- $errors = $this->_container->get('errors');
+ $errors = $this->container->get('errors');
$errors[] = $errormsg;
- $this->_container->offsetSet('errors', $errors);
+ $this->container->offsetSet('errors', $errors);
- return $this->_container;
+ return $this->container;
}
/**
diff --git a/src/classes/Misc.php b/src/classes/Misc.php
index 86bb170c..6bdba0a2 100644
--- a/src/classes/Misc.php
+++ b/src/classes/Misc.php
@@ -74,7 +74,11 @@ class Misc
private $_server_info;
private $_error_msg = '';
+ public $conf;
+ public $phpMinVer;
+ public $postgresqlMinVer;
+ public $view;
/**
* @param \Slim\Container $container The container
*/
@@ -317,9 +321,9 @@ class Misc
*
* @internal mixed $plaform placeholder that will receive the value of the platform
*
- * @return \PHPPgAdmin\Database\ADOdbBase the database accessor instance
+ * @return \PHPPgAdmin\Database\ADOdbBase|null the database accessor instance
*/
- public function getDatabaseAccessor($database = '', $server_id = null)
+ public function getDatabaseAccessor($database = '', $server_id = null): ? \PHPPgAdmin\Database\ADOdbBase
{
$lang = $this->lang;
@@ -527,7 +531,7 @@ class Misc
* @param mixed $value the new value, or null to unset the parameter
* @param null|string $server_id the server identifier, or null for current server
*/
- public function setServerInfo($key, $value, $server_id = null): void
+ public function setServerInfo($key, $value, $server_id = null) : void
{
if (null === $server_id) {
$server_id = $this->container->requestobj->getParam('server');
diff --git a/src/classes/Translations.php b/src/classes/Translations.php
index 56c7d183..af2074e7 100644
--- a/src/classes/Translations.php
+++ b/src/classes/Translations.php
@@ -11,6 +11,7 @@ namespace PHPPgAdmin;
*/
class Translations
{
+ public $lang;
// List of language files, and encoded language name.
public $appLangFiles = [
@@ -117,7 +118,6 @@ class Translations
'pt' => 'portuguese-pt',
'ro' => 'romanian',
'ru' => 'russian',
- 'ru' => 'russian',
'sk' => 'slovak',
'es' => 'spanish',
'sv' => 'swedish',
@@ -152,7 +152,7 @@ class Translations
'portuguese-pt' => 'pt',
'romanian' => 'ro',
'russian' => 'ru',
- 'russian' => 'ru',
+
'slovak' => 'sk',
'spanish' => 'es',
'swedish' => 'sv',
diff --git a/src/controllers/BaseController.php b/src/controllers/BaseController.php
index 26ead9cb..0a9a1601 100644
--- a/src/controllers/BaseController.php
+++ b/src/controllers/BaseController.php
@@ -52,7 +52,7 @@ class BaseController
public $action = '';
public $controller_name;
-
+ protected $script;
/**
* Used.
*
diff --git a/src/database/Postgres.php b/src/database/Postgres.php
index a61934f8..3e09b7a3 100644
--- a/src/database/Postgres.php
+++ b/src/database/Postgres.php
@@ -744,7 +744,7 @@ class Postgres extends ADOdbBase
// Open a transaction
$status = $this->beginTransaction();
- if (0 !== $status) {
+ if ($status !== false) {
return -1;
}
@@ -753,7 +753,7 @@ class Postgres extends ADOdbBase
if ($this->hasReadOnlyQueries()) {
$status = $this->execute('SET TRANSACTION READ ONLY');
- if (0 !== $status) {
+ if ($status !== false) {
$this->rollbackTransaction();
return -5;
@@ -804,7 +804,7 @@ class Postgres extends ADOdbBase
$rs = $this->selectSet("SELECT * FROM ({$query}) AS sub {$orderby} LIMIT {$page_size} OFFSET " . ($page - 1) * $page_size);
$status = $this->endTransaction();
- if (0 !== $status) {
+ if ($status !== false) {
$this->rollbackTransaction();
return -1;
diff --git a/src/decorators/Decorator.php b/src/decorators/Decorator.php
index 8ead99e4..50cf8b26 100644
--- a/src/decorators/Decorator.php
+++ b/src/decorators/Decorator.php
@@ -9,7 +9,7 @@ namespace PHPPgAdmin\Decorators;
class Decorator
{
use \PHPPgAdmin\Traits\HelperTrait;
-
+ public $container;
public function __construct($value)
{
$this->val = $value;
@@ -125,7 +125,7 @@ class Decorator
// at value evaluation time.
if (2 < \func_num_args()) {
- $v = \func_get_args();
+ $v = \func_get_args();
$base = \array_shift($v);
return new UrlDecorator($base, new ArrayMergeDecorator($v));
diff --git a/src/lib.inc.php b/src/lib.inc.php
index 4efdc61e..962dd2e1 100644
--- a/src/lib.inc.php
+++ b/src/lib.inc.php
@@ -64,9 +64,6 @@ if (!$container instanceof \Psr\Container\ContainerInterface) {
\trigger_error('App Container must be an instance of \\Psr\\Container\\ContainerInterface', \E_USER_ERROR);
}
-$container['requestobj'] = $container['request'];
-$container['responseobj'] = $container['response'];
-
// 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);
diff --git a/src/traits/HelperTrait.php b/src/traits/HelperTrait.php
index 66088600..aca8e302 100644
--- a/src/traits/HelperTrait.php
+++ b/src/traits/HelperTrait.php
@@ -201,33 +201,43 @@ trait HelperTrait
/**
* Receives N parameters and sends them to the console adding where was it called from.
*
- * @param array $args
+ * @param array ...$args
*/
- public function prtrace(...$args)
+ public function prtrace(array...$args): void
{
- return self::staticTrace($args);
+ self::staticTrace($args, '', false);
}
- public function dump(...$args)
+ /**
+ * { function_description }
+ *
+ * @param array ...$args The arguments
+ */
+ public function dump(array...$args): void
{
- return self::staticTrace($args);
+ self::staticTrace($args, '', false);
}
- public function dumpAndDie(...$args)
+ /**
+ * Dumps and die.
+ *
+ * @param array ...$args The arguments
+ */
+ public function dumpAndDie(array...$args): void
{
- return self::staticTrace($args);
+ self::staticTrace($args, '', true);
}
/**
* Receives N parameters and sends them to the console adding where was it
* called from.
*
- * @param mixed $variablesToDump
- * @param mixed $exitAfterwards
+ * @param array $variablesToDump
* @param string $whoCalledMe
+ * @param boolean $exitAfterwards
*/
private static function staticTrace(
- $variablesToDump = [],
+ array $variablesToDump = [],
string $whoCalledMe = '',
$exitAfterwards = false
): void {
diff --git a/src/traits/MiscTrait.php b/src/traits/MiscTrait.php
index 1a6cdd3a..f7ca4346 100644
--- a/src/traits/MiscTrait.php
+++ b/src/traits/MiscTrait.php
@@ -46,7 +46,6 @@ trait MiscTrait
break;
case 'server':
$vars = ['params' => [
- 'subject' => 'database',
'subject' => 'server',
'server' => $_REQUEST['server'],
]];
diff --git a/src/xhtml/XHtmlSimpleElement.php b/src/xhtml/XHtmlSimpleElement.php
index 67ff2676..a8a05a97 100644
--- a/src/xhtml/XHtmlSimpleElement.php
+++ b/src/xhtml/XHtmlSimpleElement.php
@@ -44,7 +44,7 @@ class XHtmlSimpleElement
public $_htmlcode;
public $_attributes = [];
-
+ public $container;
/**
* Constructor.
*