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:
authorFelipe Figueroa <amenadiel@gmail.com>2020-12-30 14:01:04 +0300
committerFelipe Figueroa <amenadiel@gmail.com>2020-12-30 14:01:04 +0300
commit2d0f04f389dc5e054255b6485daa4a1cc92a6837 (patch)
tree6cf81a7537c7266eb9bb9765182cd9bcb1436585
parentdf17328cd9ae517e28f4228facfe74653f4687aa (diff)
refactor variables interpolated in string with sprintf
-rw-r--r--.phive/phars.xml2
-rw-r--r--rector.php8
-rw-r--r--src/classes/ADONewConnection.php4
-rw-r--r--src/classes/ADORecordSet.php10
-rw-r--r--src/classes/ADOdbException.php49
-rw-r--r--src/classes/Connection.php37
-rw-r--r--src/classes/ContainerHandlers.php28
-rw-r--r--src/classes/ContainerUtils.php45
-rw-r--r--src/classes/Misc.php73
-rw-r--r--src/classes/ViewManager.php151
-rw-r--r--src/controllers/AcinsertController.php36
-rw-r--r--src/controllers/AggregatesController.php223
-rw-r--r--src/controllers/AlldbController.php131
-rw-r--r--src/controllers/BaseController.php76
-rw-r--r--src/controllers/BrowserController.php3
-rw-r--r--src/controllers/ColpropertiesController.php76
-rw-r--r--src/controllers/ConstraintsController.php202
-rw-r--r--src/controllers/DatabaseController.php366
-rw-r--r--src/controllers/DataexportController.php117
-rw-r--r--src/controllers/DbexportController.php11
-rw-r--r--src/controllers/DisplayController.php315
-rw-r--r--src/controllers/DomainsController.php186
-rw-r--r--src/controllers/FulltextController.php389
-rw-r--r--src/controllers/FunctionsController.php490
-rw-r--r--src/controllers/GroupsController.php84
-rw-r--r--src/controllers/HelpController.php22
-rw-r--r--src/controllers/HistoryController.php66
-rw-r--r--src/controllers/IndexesController.php92
-rw-r--r--src/controllers/InfoController.php255
-rw-r--r--src/controllers/IntroController.php16
-rw-r--r--src/controllers/LoginController.php5
-rw-r--r--src/controllers/MaterializedviewpropertiesController.php104
-rw-r--r--src/controllers/MaterializedviewsController.php72
-rw-r--r--src/controllers/OperatorsController.php96
-rw-r--r--src/controllers/PrivilegesController.php116
-rw-r--r--src/controllers/RolesController.php394
-rw-r--r--src/controllers/RulesController.php66
-rw-r--r--src/controllers/SchemasController.php118
-rw-r--r--src/controllers/SequencesController.php239
-rw-r--r--src/controllers/ServersController.php15
-rw-r--r--src/controllers/SqlController.php47
-rw-r--r--src/controllers/SqleditController.php38
-rw-r--r--src/controllers/TablesController.php477
-rw-r--r--src/controllers/TablespacesController.php107
-rw-r--r--src/controllers/TblpropertiesController.php255
-rw-r--r--src/controllers/TreeController.php40
-rw-r--r--src/controllers/TriggersController.php150
-rw-r--r--src/controllers/TypesController.php350
-rw-r--r--src/controllers/UsersController.php165
-rw-r--r--src/controllers/ViewpropertiesController.php116
-rw-r--r--src/controllers/ViewsController.php72
-rw-r--r--src/database/ADOdbBase.php170
-rw-r--r--src/database/Connection.php27
-rw-r--r--src/database/Postgres.php345
-rw-r--r--src/database/Postgres10.php19
-rw-r--r--src/database/Postgres11.php32
-rw-r--r--src/database/Postgres12.php4
-rw-r--r--src/database/Postgres13.php4
-rw-r--r--src/database/Postgres90.php4
-rw-r--r--src/database/Postgres91.php30
-rw-r--r--src/database/Postgres92.php31
-rw-r--r--src/database/Postgres93.php30
-rw-r--r--src/database/Postgres94.php4
-rw-r--r--src/database/Postgres95.php4
-rw-r--r--src/database/Postgres96.php35
-rw-r--r--src/database/databasetraits/AggregateTrait.php93
-rw-r--r--src/database/databasetraits/ColumnTrait.php126
-rw-r--r--src/database/databasetraits/DatabaseTrait.php183
-rw-r--r--src/database/databasetraits/DomainTrait.php150
-rw-r--r--src/database/databasetraits/FtsTrait.php233
-rw-r--r--src/database/databasetraits/FunctionTrait.php122
-rw-r--r--src/database/databasetraits/IndexTrait.php316
-rw-r--r--src/database/databasetraits/OperatorTrait.php47
-rw-r--r--src/database/databasetraits/PrivilegesTrait.php117
-rw-r--r--src/database/databasetraits/RoleTrait.php228
-rw-r--r--src/database/databasetraits/RowTrait.php72
-rw-r--r--src/database/databasetraits/SchemaTrait.php57
-rw-r--r--src/database/databasetraits/SequenceTrait.php221
-rw-r--r--src/database/databasetraits/StatsTrait.php51
-rw-r--r--src/database/databasetraits/TableTrait.php654
-rw-r--r--src/database/databasetraits/TablespaceTrait.php26
-rw-r--r--src/database/databasetraits/TriggerTrait.php46
-rw-r--r--src/database/databasetraits/TypeTrait.php99
-rw-r--r--src/database/databasetraits/ViewTrait.php70
-rw-r--r--src/decorators/CallbackDecorator.php4
-rw-r--r--src/decorators/Decorator.php15
-rw-r--r--src/decorators/RedirectUrlDecorator.php4
-rw-r--r--src/help/PostgresDoc.php4
-rw-r--r--src/lib.inc.php20
-rw-r--r--src/middleware/Middleware.php4
-rw-r--r--src/middleware/PopulateRequestResponse.php17
-rw-r--r--src/traits/AdminTrait.php75
92 files changed, 7951 insertions, 2447 deletions
diff --git a/.phive/phars.xml b/.phive/phars.xml
index 76e86e56..556fcde2 100644
--- a/.phive/phars.xml
+++ b/.phive/phars.xml
@@ -4,6 +4,6 @@
<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"/>
- <phar name="phpcbf" version="^3.5.5" installed="3.5.5" location="./tools/phpcbf" copy="false"/>
+ <phar name="phpcbf" version="^3.5.8" installed="3.5.8" location="./tools/phpcbf" copy="false"/>
<phar name="composer-unused" version="^0.7.4" installed="0.7.4" location="./tools/composer-unused" copy="false"/>
</phive>
diff --git a/rector.php b/rector.php
index 1a9c94b3..d6bc7ba4 100644
--- a/rector.php
+++ b/rector.php
@@ -18,7 +18,7 @@ return static function (ContainerConfigurator $containerConfigurator): void {
$parameters->set(Option::AUTO_IMPORT_NAMES, true);
- $parameters->set(Option::SETS, [
+/* $parameters->set(Option::SETS, [
SetList::CODING_STYLE,
SetList::ACTION_INJECTION_TO_CONSTRUCTOR_INJECTION,
SetList::ARRAY_STR_FUNCTIONS_TO_STATIC_CALL,
@@ -31,7 +31,7 @@ return static function (ContainerConfigurator $containerConfigurator): void {
SetList::PHP_72,
SetList::PHPUNIT_CODE_QUALITY,
- ]);
+ ]);*/
//
$parameters->set(Option::SKIP, [
@@ -54,8 +54,8 @@ return static function (ContainerConfigurator $containerConfigurator): void {
$parameters->set(Option::ENABLE_CACHE, true);
$parameters->set(Option::CACHE_DIR, __DIR__ . '/.build/rector');
$parameters->set(Option::PATHS, [
- __DIR__ . '/src/classes',
- __DIR__ . '/src/controllers',
+ __DIR__ . '/src',
+ //__DIR__ . '/src/controllers',
//__DIR__ . '/src/database',
//__DIR__ . '/src/decorators',
//__DIR__ . '/src/middleware',
diff --git a/src/classes/ADONewConnection.php b/src/classes/ADONewConnection.php
index 4df6f6fa..4534e17f 100644
--- a/src/classes/ADONewConnection.php
+++ b/src/classes/ADONewConnection.php
@@ -6,9 +6,11 @@
namespace PHPPgAdmin;
+use ADODB_postgres9;
+
/**
* Extends \ADODB_postgres9 to let correct inference on PHPDoc params.
*/
-class ADONewConnection extends \ADODB_postgres9
+class ADONewConnection extends ADODB_postgres9
{
}
diff --git a/src/classes/ADORecordSet.php b/src/classes/ADORecordSet.php
index c18a02ff..feae209c 100644
--- a/src/classes/ADORecordSet.php
+++ b/src/classes/ADORecordSet.php
@@ -5,11 +5,15 @@
*/
namespace PHPPgAdmin;
+
+use ADOFieldObject;
use ADORecordSet as ADODBRecordsetClass;
+use Countable;
+
/**
* Extends ADORecordSet to let correct inference on PHPDoc params.
*/
-class ADORecordSet extends ADODBRecordsetClass implements \Countable
+class ADORecordSet extends ADODBRecordsetClass implements Countable
{
/**
* Returns the recordCount.
@@ -34,9 +38,9 @@ class ADORecordSet extends ADODBRecordsetClass implements \Countable
*
* @param int $fieldoffset
*
- * @return \ADOFieldObject the field
+ * @return ADOFieldObject the field
*/
- public function fetchField($fieldoffset = -1): \ADOFieldObject
+ public function fetchField($fieldoffset = -1): ADOFieldObject
{
return parent::fetchField();
}
diff --git a/src/classes/ADOdbException.php b/src/classes/ADOdbException.php
index cb405343..3dbe8418 100644
--- a/src/classes/ADOdbException.php
+++ b/src/classes/ADOdbException.php
@@ -6,11 +6,12 @@
namespace PHPPgAdmin;
+use Exception;
+
/**
* @file
* Handles Exceptions on ADODb
*/
-
/**
* Released under both BSD-3-CLAUSE license and GPL-2.0-OR-LATER. Whenever
* there is any discrepancy between the two licenses, the BSD license will take
@@ -25,7 +26,7 @@ namespace PHPPgAdmin;
*
* @version Release: 5.20.9
*/
-class ADOdbException extends \Exception
+class ADOdbException extends Exception
{
public $dbms;
@@ -72,7 +73,7 @@ class ADOdbException extends \Exception
* @param string $p2 parameter 2
* @param mixed $thisConnection connection
*
- * @throws \Exception
+ * @throws Exception
*/
public function __construct($dbms, $fn, $errno, $errmsg, $p1, $p2, $thisConnection)
{
@@ -80,18 +81,42 @@ class ADOdbException extends \Exception
case 'EXECUTE':
$this->sql = \is_array($p1) ? $p1[0] : $p1;
$this->params = $p2;
- $s = "{$dbms} error: [{$errno}: {$errmsg}] in {$fn}(\"{$this->sql}\")";
+ $s = \sprintf(
+ '%s error: [%s: %s] in %s("%s")',
+ $dbms,
+ $errno,
+ $errmsg,
+ $fn,
+ $this->sql
+ );
break;
case 'PCONNECT':
case 'CONNECT':
$user = $thisConnection->user;
- $s = "{$dbms} error: [{$errno}: {$errmsg}] in {$fn}({$p1}, '{$user}', '****', {$p2})";
+ $s = \sprintf(
+ '%s error: [%s: %s] in %s(%s, \'%s\', \'****\', %s)',
+ $dbms,
+ $errno,
+ $errmsg,
+ $fn,
+ $p1,
+ $user,
+ $p2
+ );
break;
default:
- $s = "{$dbms} error: [{$errno}: {$errmsg}] in {$fn}({$p1}, {$p2})";
+ $s = \sprintf(
+ '%s error: [%s: %s] in %s(%s, %s)',
+ $dbms,
+ $errno,
+ $errmsg,
+ $fn,
+ $p1,
+ $p2
+ );
break;
}
@@ -143,16 +168,20 @@ class ADOdbException extends \Exception
'spacer' => ' ',
'line' => $backtrace[0]['line'],
];
- $errmsg = \htmlentities(\PHPPgAdmin\ContainerUtils::br2ln($errmsg), \ENT_NOQUOTES);
- $p1 = \htmlentities(\PHPPgAdmin\ContainerUtils::br2ln($p1), \ENT_NOQUOTES);
- $p2 = \htmlentities(\PHPPgAdmin\ContainerUtils::br2ln($p2), \ENT_NOQUOTES);
+ $errmsg = \htmlentities(ContainerUtils::br2ln($errmsg), \ENT_NOQUOTES);
+ $p1 = \htmlentities(ContainerUtils::br2ln($p1), \ENT_NOQUOTES);
+ $p2 = \htmlentities(ContainerUtils::br2ln($p2), \ENT_NOQUOTES);
$tag = \implode('', $btarray0);
//\PC::debug(['errno' => $errno, 'fn' => $fn, 'errmsg' => $errmsg], $tag);
$adoException = new self($dbms, $fn, $errno, $errmsg, $p1, $p2, $thisConnection);
- echo "<table class=\"error\" cellpadding=\"5\"><tr><td>{$adoException->msg}</td></tr></table><br />\n";
+ echo \sprintf(
+ '<table class="error" cellpadding="5"><tr><td>%s</td></tr></table><br />
+',
+ $adoException->msg
+ );
// adodb_backtrace($adoException->getTrace());
throw $adoException;
diff --git a/src/classes/Connection.php b/src/classes/Connection.php
index 2adeb303..a27a1470 100644
--- a/src/classes/Connection.php
+++ b/src/classes/Connection.php
@@ -6,6 +6,10 @@
namespace PHPPgAdmin;
+use ADODB_pdo;
+use ADODB_postgres9;
+use PHPPgAdmin\Traits\HelperTrait;
+
/**
* @file
* Class to represent a database connection
@@ -14,7 +18,7 @@ namespace PHPPgAdmin;
*/
class Connection
{
- use \PHPPgAdmin\Traits\HelperTrait;
+ use HelperTrait;
public $conn;
@@ -62,10 +66,10 @@ class Connection
/**
* Creates a new connection. Will actually make a database connection.
*
- * @param array $server_info
- * @param string $database database name
- * @param \PHPPgAdmin\ContainerUtils $container
- * @param int $fetchMode Defaults to associative. Override for different behaviour
+ * @param array $server_info
+ * @param string $database database name
+ * @param ContainerUtils $container
+ * @param int $fetchMode Defaults to associative. Override for different behaviour
*/
public function __construct($server_info, $database, $container, $fetchMode = ADODB_FETCH_ASSOC)
{
@@ -107,7 +111,10 @@ class Connection
$serverInfo = $this->conn->ServerInfo();
dump($serverInfo);
$this->pgVersion = $serverInfo['version'];
- $description = "PostgreSQL {$this->pgVersion}";
+ $description = \sprintf(
+ 'PostgreSQL %s',
+ $this->pgVersion
+ );
$version_parts = \explode('.', $this->pgVersion);
@@ -153,7 +160,7 @@ class Connection
?string $user,
?string $password,
int $fetchMode = \ADODB_FETCH_ASSOC
- ): \ADODB_postgres9 {
+ ): ADODB_postgres9 {
$this->conn = ADONewConnection('postgres9');
$this->conn->setFetchMode($fetchMode);
// Ignore host if null
@@ -164,7 +171,11 @@ class Connection
$pghost = '';
}
} else {
- $pghost = "{$host}:{$port}";
+ $pghost = \sprintf(
+ '%s:%s',
+ $host,
+ $port
+ );
}
// Add sslmode to $pghost as needed
@@ -189,10 +200,16 @@ class Connection
?string $user,
?string $password,
int $fetchMode = \ADODB_FETCH_ASSOC
- ): \ADODB_pdo {
+ ): ADODB_pdo {
$this->conn = ADONewConnection('pdo');
$this->conn->setFetchMode($fetchMode);
- $dsnString = \sprintf('pgsql:host=%s;port=%d;dbname=%s;sslmode=%s;application_name=PHPPgAdmin6', $host, $port, $database, $sslmode);
+ $dsnString = \sprintf(
+ 'pgsql:host=%s;port=%d;dbname=%s;sslmode=%s;application_name=PHPPgAdmin6',
+ $host,
+ $port,
+ $database,
+ $sslmode
+ );
$this->conn->connect($dsnString, $user, $password);
return $this->conn;
diff --git a/src/classes/ContainerHandlers.php b/src/classes/ContainerHandlers.php
index 9cc5cb1a..0b5bebf5 100644
--- a/src/classes/ContainerHandlers.php
+++ b/src/classes/ContainerHandlers.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin;
+use Slim\Flash\Messages;
+
/**
* Auxiliary class to handle injection of dependencies to avoid
* declaring them in the container class.
@@ -13,14 +15,14 @@ namespace PHPPgAdmin;
class ContainerHandlers
{
/**
- * @var \PHPPgAdmin\ContainerUtils
+ * @var ContainerUtils
* */
private $container;
/**
- * @param \PHPPgAdmin\ContainerUtils $container
+ * @param ContainerUtils $container
*/
- public function __construct(\PHPPgAdmin\ContainerUtils $container)
+ public function __construct(ContainerUtils $container)
{
$this->container = $container;
}
@@ -46,9 +48,9 @@ class ContainerHandlers
$container = $this->container;
/**
- * @return \PHPPgAdmin\ViewManager
+ * @return ViewManager
*/
- $container['view'] = static function (\PHPPgAdmin\ContainerUtils $c): \PHPPgAdmin\ViewManager {
+ $container['view'] = static function (ContainerUtils $c): ViewManager {
$misc = $c->misc;
$view = new ViewManager(BASE_PATH . '/assets/templates', [
'cache' => BASE_PATH . '/temp/twigcache',
@@ -73,10 +75,10 @@ class ContainerHandlers
{
$container = $this->container;
/**
- * @return \PHPPgAdmin\Misc
+ * @return Misc
*/
- $container['misc'] = static function (\PHPPgAdmin\ContainerUtils $c): \PHPPgAdmin\Misc {
- $misc = new \PHPPgAdmin\Misc($c);
+ $container['misc'] = static function (ContainerUtils $c): Misc {
+ $misc = new Misc($c);
$conf = $c->get('conf');
@@ -97,12 +99,12 @@ class ContainerHandlers
public function setExtra(): self
{
$container = $this->container;
- $container['flash'] = static function (): \Slim\Flash\Messages {
- return new \Slim\Flash\Messages();
+ $container['flash'] = static function (): Messages {
+ return new Messages();
};
- $container['lang'] = static function (\PHPPgAdmin\ContainerUtils $c): array {
- $translations = new \PHPPgAdmin\Translations($c);
+ $container['lang'] = static function (ContainerUtils $c): array {
+ $translations = new Translations($c);
return $translations->lang;
};
@@ -112,7 +114,7 @@ class ContainerHandlers
public function setHaltHandler(): self
{
- $this->container['haltHandler'] = static function (\PHPPgAdmin\ContainerUtils $c) {
+ $this->container['haltHandler'] = static function (ContainerUtils $c) {
return static function ($request, $response, $exits, $status = 500) {
$title = 'PHPPgAdmin Error';
diff --git a/src/classes/ContainerUtils.php b/src/classes/ContainerUtils.php
index fd719cef..85db5c55 100644
--- a/src/classes/ContainerUtils.php
+++ b/src/classes/ContainerUtils.php
@@ -6,18 +6,26 @@
namespace PHPPgAdmin;
+use ArrayAccess;
+use PHPPgAdmin\Decorators\Decorator;
+use PHPPgAdmin\Traits\HelperTrait;
use Psr\Container\ContainerInterface;
+use Slim\App;
use Slim\Collection;
+use Slim\Container;
use Slim\DefaultServicesProvider;
+use Slim\Flash\Messages;
+use Slim\Http\Request;
+use Slim\Http\Response;
/**
* @property array $deploy_info
- * @property \Slim\Flash\Messages $flash
+ * @property Messages $flash
* @property \GuzzleHttp\Client $fcIntranetClient
- * @property \PHPPgAdmin\Misc $misc
- * @property \PHPPgAdmin\ViewManager $view
- * @property \Slim\Http\Request $request
- * @property \Slim\Http\Response $response
+ * @property Misc $misc
+ * @property ViewManager $view
+ * @property Request $request
+ * @property Response $response
* @property string $BASE_PATH
* @property string $THEME_PATH
* @property string $subFolder
@@ -29,9 +37,9 @@ use Slim\DefaultServicesProvider;
*
* @method mixed get(string)
*/
-class ContainerUtils extends \Slim\Container implements ContainerInterface
+class ContainerUtils extends Container implements ContainerInterface
{
- use \PHPPgAdmin\Traits\HelperTrait;
+ use HelperTrait;
/**
* @var null|self
@@ -41,7 +49,7 @@ class ContainerUtils extends \Slim\Container implements ContainerInterface
/**
* $appInstance.
*
- * @var null|\Slim\App
+ * @var null|App
*/
private static $appInstance;
@@ -97,14 +105,14 @@ class ContainerUtils extends \Slim\Container implements ContainerInterface
return \implode(\DIRECTORY_SEPARATOR, [$this->subFolder, $path]);
}
- public static function getAppInstance(array $config = []): \Slim\App
+ public static function getAppInstance(array $config = []): App
{
$config = \array_merge(self::getDefaultConfig($config['debugmode'] ?? false), $config);
$container = self::getContainerInstance($config);
if (!self::$appInstance) {
- self::$appInstance = new \Slim\App($container);
+ self::$appInstance = new App($container);
}
return self::$appInstance;
@@ -222,15 +230,18 @@ class ContainerUtils extends \Slim\Container implements ContainerInterface
foreach ($url['urlvars'] as $key => $urlvar) {
//$this->prtrace($key, $urlvar);
- $urlvars[$key] = \PHPPgAdmin\Decorators\Decorator::get_sanitized_value($urlvar, $_REQUEST);
+ $urlvars[$key] = Decorator::get_sanitized_value($urlvar, $_REQUEST);
}
$_REQUEST = \array_merge($_REQUEST, $urlvars);
$_GET = \array_merge($_GET, $urlvars);
}
- $actionurl = \PHPPgAdmin\Decorators\Decorator::actionurl($url['url'], $_GET);
+ $actionurl = Decorator::actionurl($url['url'], $_GET);
$destinationurl = $actionurl->value($_GET);
- return \str_replace('views/?', "views/{$subject}?", $destinationurl);
+ return \str_replace('views/?', \sprintf(
+ 'views/%s?',
+ $subject
+ ), $destinationurl);
}
/**
@@ -238,9 +249,9 @@ class ContainerUtils extends \Slim\Container implements ContainerInterface
*
* @param string $errormsg The error msg
*
- * @return\Slim\Container The app container
+ * @return Container The app container
*/
- public function addError(string $errormsg): \Slim\Container
+ public function addError(string $errormsg): Container
{
$container = self::getContainerInstance();
$errors = $container->get('errors');
@@ -291,7 +302,7 @@ class ContainerUtils extends \Slim\Container implements ContainerInterface
$container->THEME_PATH = $conf['theme_path'];
$container->IN_TEST = $conf['IN_TEST'];
$container['errors'] = [];
- $container['conf'] = static function (\Slim\Container $c) use ($conf): array {
+ $container['conf'] = static function (Container $c) use ($conf): array {
$display_sizes = $conf['display_sizes'];
if (\is_array($display_sizes)) {
@@ -352,7 +363,7 @@ class ContainerUtils extends \Slim\Container implements ContainerInterface
*
* @return array|ArrayAccess
*/
- $this['settings'] = static function () use ($userSettings, $defaultSettings): \Slim\Collection {
+ $this['settings'] = static function () use ($userSettings, $defaultSettings): Collection {
return new Collection(\array_merge($defaultSettings, $userSettings));
};
diff --git a/src/classes/Misc.php b/src/classes/Misc.php
index 218d005a..71fbbb48 100644
--- a/src/classes/Misc.php
+++ b/src/classes/Misc.php
@@ -6,7 +6,10 @@
namespace PHPPgAdmin;
+use Exception;
use PHPPgAdmin\Database\Postgres;
+use PHPPgAdmin\Traits\HelperTrait;
+use PHPPgAdmin\Traits\MiscTrait;
/**
* @file
@@ -22,8 +25,8 @@ use PHPPgAdmin\Database\Postgres;
*/
class Misc
{
- use \PHPPgAdmin\Traits\HelperTrait;
- use \PHPPgAdmin\Traits\MiscTrait;
+ use HelperTrait;
+ use MiscTrait;
/**
* @var array
@@ -68,17 +71,17 @@ class Misc
public $postgresqlMinVer;
/**
- * @var \PHPPgAdmin\ViewManager
+ * @var ViewManager
*/
public $view;
/**
- * @var \PHPPgAdmin\ContainerUtils
+ * @var ContainerUtils
*/
protected $container;
/**
- * @var null|\PHPPgAdmin\Connection
+ * @var null|Connection
*/
private $_connection;
@@ -113,9 +116,9 @@ class Misc
private $_error_msg = '';
/**
- * @param \PHPPgAdmin\ContainerUtils $container The container
+ * @param ContainerUtils $container The container
*/
- public function __construct(\PHPPgAdmin\ContainerUtils $container)
+ public function __construct(ContainerUtils $container)
{
$this->container = $container;
@@ -145,7 +148,10 @@ class Misc
// Check the version of PHP
if (\version_compare(\PHP_VERSION, $this->phpMinVer, '<')) {
- $container->addError(\sprintf('Version of PHP not supported. Please upgrade to version %s or later.', $this->phpMinVer));
+ $container->addError(\sprintf(
+ 'Version of PHP not supported. Please upgrade to version %s or later.',
+ $this->phpMinVer
+ ));
}
//$this->dumpAndDie($this->);
@@ -232,18 +238,18 @@ class Misc
/**
* Sets the view instance property of this class.
*
- * @param \PHPPgAdmin\ViewManager $view view instance
+ * @param ViewManager $view view instance
*
* @return \PHPPgAdmin\Misc this class instance
*/
- public function setView(\PHPPgAdmin\ViewManager $view)
+ public function setView(ViewManager $view)
{
$this->view = $view;
return $this;
}
- public function getContainer(): \PHPPgAdmin\ContainerUtils
+ public function getContainer(): ContainerUtils
{
return $this->container;
}
@@ -304,7 +310,7 @@ class Misc
*
* @internal mixed $plaform placeholder that will receive the value of the platform
*
- * @return null|\PHPPgAdmin\Database\Postgres|void the database accessor instance
+ * @return null|Postgres|void the database accessor instance
*/
public function getDatabaseAccessor($database = '', $server_id = null)
{
@@ -323,7 +329,7 @@ class Misc
if (null === $this->_data) {
try {
$_connection = $this->getConnection($database, $this->_server_id);
- } catch (\Exception $e) {
+ } catch (Exception $e) {
$this->setServerInfo(null, null, $this->_server_id);
$this->setNoDBConnection(true);
$this->setErrorMsg($e->getMessage());
@@ -343,14 +349,17 @@ class Misc
$_type = $_connection->getDriver($platform);
if (null === $_type ?? null) {
- $errormsg = \sprintf($lang['strpostgresqlversionnotsupported'], $this->postgresqlMinVer);
+ $errormsg = \sprintf(
+ $lang['strpostgresqlversionnotsupported'],
+ $this->postgresqlMinVer
+ );
$this->container->addError($errormsg);
$this->setErrorMsg($errormsg);
return null;
}
/**
- * @var \class-string<\PHPPgAdmin\Database\Postgres>
+ * @var \class-string<Postgres>
*/
$_type = '\\PHPPgAdmin\\Database\\' . $_type;
@@ -373,8 +382,7 @@ class Misc
}
}
- if (
- false !== $this->getNoDBConnection() ||
+ if (false !== $this->getNoDBConnection() ||
null === $this->getDatabase() ||
!isset($_REQUEST['schema'])
) {
@@ -397,9 +405,9 @@ class Misc
* @param string $database
* @param string $server_id
*
- * @return null|\PHPPgAdmin\Connection
+ * @return null|Connection
*/
- public function getConnection(string $database = '', $server_id = null): ?\PHPPgAdmin\Connection
+ public function getConnection(string $database = '', $server_id = null): ?Connection
{
$lang = $this->lang;
@@ -421,34 +429,32 @@ class Misc
'administrator' => 'administrator',
];
- if (
- isset($server_info['username']) &&
+ if (isset($server_info['username']) &&
\array_key_exists(\mb_strtolower($server_info['username']), $bad_usernames)
) {
$msg = $lang['strlogindisallowed'];
- throw new \Exception($msg);
+ throw new Exception($msg);
}
- if (
- !isset($server_info['password']) ||
+ if (!isset($server_info['password']) ||
'' === $server_info['password']
) {
$msg = $lang['strlogindisallowed'];
- throw new \Exception($msg);
+ throw new Exception($msg);
}
}
try {
// Create the connection object and make the connection
- $this->_connection = new \PHPPgAdmin\Connection(
+ $this->_connection = new Connection(
$server_info,
$database_to_use,
$this->container
);
- } catch (\PHPPgAdmin\ADOdbException $e) {
- throw new \Exception($lang['strloginfailed']);
+ } catch (ADOdbException $e) {
+ throw new Exception($lang['strloginfailed']);
}
}
@@ -483,8 +489,7 @@ class Misc
$server_string = $info['host'] . ':' . $info['port'] . ':' . $info['sslmode'];
$server_sha = \sha1($server_string);
- if (
- $this->_server_id === $server_string ||
+ if ($this->_server_id === $server_string ||
$this->_server_id === $server_sha
) {
if (isset($info['username'])) {
@@ -552,8 +557,7 @@ class Misc
$server_info = $this->getServerInfo($this->_server_id);
- if (
- null !== $this->_server_id &&
+ if (null !== $this->_server_id &&
isset($server_info['useonlydefaultdb']) &&
true === $server_info['useonlydefaultdb'] &&
isset($server_info['defaultdb'])
@@ -803,7 +807,10 @@ class Misc
$server = $this->container->server ? $this->container->server : $_REQUEST['server'];
$database = $this->container->database ? $this->container->database : $_REQUEST['database'];
- $_SESSION['history'][$server][$database]["{$time}"] = [
+ $_SESSION['history'][$server][$database][\sprintf(
+ '%s',
+ $time
+ )] = [
'query' => $script,
'paginate' => !isset($_REQUEST['paginate']) ? 'f' : 't',
'queryid' => $time,
diff --git a/src/classes/ViewManager.php b/src/classes/ViewManager.php
index 4b906c05..e78a646c 100644
--- a/src/classes/ViewManager.php
+++ b/src/classes/ViewManager.php
@@ -6,21 +6,26 @@
namespace PHPPgAdmin;
+use PHPPgAdmin\Traits\HelperTrait;
+use Psr\Http\Message\ResponseInterface;
+use Slim\Http\Response;
+use Slim\Views\Twig;
+use Slim\Views\TwigExtension;
+
/**
* @file
* Class to hold various commonly used functions
*
* Id: Misc.php,v 1.171 2008/03/17 21:35:48 ioguix Exp $
*/
-
/**
* Class to hold various commonly used functions.
*
* Release: Misc.php,v 1.171 2008/03/17 21:35:48 ioguix Exp $
*/
-class ViewManager extends \Slim\Views\Twig
+class ViewManager extends Twig
{
- use \PHPPgAdmin\Traits\HelperTrait;
+ use HelperTrait;
/**
* @var array
@@ -70,12 +75,12 @@ class ViewManager extends \Slim\Views\Twig
public $postgresqlMinVer;
/**
- * @var \PHPPgAdmin\Misc
+ * @var Misc
*/
public $misc;
/**
- * @var \PHPPgAdmin\ContainerUtils
+ * @var ContainerUtils
*/
protected $container;
@@ -122,11 +127,11 @@ class ViewManager extends \Slim\Views\Twig
private static $instance;
/**
- * @param mixed $path
- * @param mixed $settings
- * @param \PHPPgAdmin\ContainerUtils $c
+ * @param mixed $path
+ * @param mixed $settings
+ * @param ContainerUtils $c
*/
- public function __construct($path, $settings, \PHPPgAdmin\ContainerUtils $c)
+ public function __construct($path, $settings, ContainerUtils $c)
{
$this->lang = $c->get('lang');
$this->conf = $c->get('conf');
@@ -139,7 +144,7 @@ class ViewManager extends \Slim\Views\Twig
// Instantiate and add Slim specific extension
$basePath = \rtrim(\str_ireplace($base_script_trailing_str, '', $request_basepath), '/');
- $this->addExtension(new \Slim\Views\TwigExtension($c['router'], $basePath));
+ $this->addExtension(new TwigExtension($c['router'], $basePath));
$this->offsetSet('subfolder', \containerInstance()->subFolder);
$this->offsetSet('theme', $this->misc->getConf('theme'));
@@ -194,7 +199,7 @@ class ViewManager extends \Slim\Views\Twig
return $this->_reload_browser;
}
- public function maybeRenderIframes(\Slim\Http\Response $response, string $subject, string $query_string): \Psr\Http\Message\ResponseInterface
+ public function maybeRenderIframes(Response $response, string $subject, string $query_string): ResponseInterface
{
$c = $this->getContainer();
@@ -234,8 +239,7 @@ class ViewManager extends \Slim\Views\Twig
// Check if theme is in $_REQUEST, $_SESSION or $_COOKIE
// 1.- First priority: $_REQUEST, this happens when you use the selector
- if (
- \array_key_exists('theme', $_REQUEST) &&
+ if (\array_key_exists('theme', $_REQUEST) &&
\array_key_exists($_REQUEST['theme'], $themefolders)
) {
$_theme = $_REQUEST['theme'];
@@ -246,14 +250,12 @@ class ViewManager extends \Slim\Views\Twig
\array_key_exists($_COOKIE['ppaTheme'], $themefolders)
) {
$_theme = $_server_info['theme'];
- } elseif (
- isset($_SESSION) && \array_key_exists('ppaTheme', $_SESSION) &&
+ } elseif (isset($_SESSION) && \array_key_exists('ppaTheme', $_SESSION) &&
\array_key_exists($_SESSION['ppaTheme'], $themefolders)
) {
// otherwise check $_SESSION
$_theme = $_SESSION['ppaTheme'];
- } elseif (
- \array_key_exists('ppaTheme', $_COOKIE) &&
+ } elseif (\array_key_exists('ppaTheme', $_COOKIE) &&
\array_key_exists($_COOKIE['ppaTheme'], $themefolders)
) {
// oterwise check $_COOKIE
@@ -356,30 +358,100 @@ class ViewManager extends \Slim\Views\Twig
$theme = $this->conf['theme'];
$path = 'assets/images/themes';
- $default_icon = \sprintf('%s/%s/default/DisconnectedServer.png', \containerInstance()->subFolder, $path);
+ $default_icon = \sprintf(
+ '%s/%s/default/DisconnectedServer.png',
+ \containerInstance()->subFolder,
+ $path
+ );
- 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.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', \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.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', \containerInstance()->BASE_PATH, $path, $theme, $icon))) {
- return \sprintf('%s/%s/%s/%s.ico', \containerInstance()->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', \containerInstance()->BASE_PATH, $path, $icon))) {
- return \sprintf('%s/%s/default/%s.png', \containerInstance()->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', \containerInstance()->BASE_PATH, $path, $icon))) {
- return \sprintf('%s/%s/default/%s.gif', \containerInstance()->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', \containerInstance()->BASE_PATH, $path, $icon))) {
- return \sprintf('%s/%s/default/%s.ico', \containerInstance()->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;
@@ -439,7 +511,7 @@ class ViewManager extends \Slim\Views\Twig
return '\PHPPgAdmin\Controller\\' . \ucfirst($subject) . 'Controller';
}
- private function getContainer(): \PHPPgAdmin\ContainerUtils
+ private function getContainer(): ContainerUtils
{
return $this->container;
}
@@ -469,11 +541,20 @@ class ViewManager extends \Slim\Views\Twig
continue;
}
- $folderpath = \sprintf('%s%s%s', \containerInstance()->THEME_PATH, \DIRECTORY_SEPARATOR, $foldername);
- $stylesheet = \sprintf('%s%s%s', $folderpath, \DIRECTORY_SEPARATOR, 'global.css');
+ $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) &&
+ if (\is_dir($folderpath) &&
\is_file($stylesheet)
) {
$themefolders[$foldername] = $folderpath;
diff --git a/src/controllers/AcinsertController.php b/src/controllers/AcinsertController.php
index e687ceb1..7194e380 100644
--- a/src/controllers/AcinsertController.php
+++ b/src/controllers/AcinsertController.php
@@ -19,7 +19,10 @@ class AcinsertController extends BaseController
$data = $this->misc->getDatabaseAccessor();
if (isset($_POST['offset'])) {
- $offset = " OFFSET {$_POST['offset']}";
+ $offset = \sprintf(
+ ' OFFSET %s',
+ $_POST['offset']
+ );
} else {
$_POST['offset'] = 0;
$offset = ' OFFSET 0';
@@ -40,10 +43,18 @@ class AcinsertController extends BaseController
$f_attname = $fkeynames[$_POST['fattpos'][0]];
$data->fieldClean($f_attname);
- $q = "SELECT *
- FROM \"{$f_schema}\".\"{$f_table}\"
- WHERE \"{$f_attname}\"::text LIKE '{$_POST['fvalue']}%'
- ORDER BY \"{$f_attname}\" LIMIT 12 {$offset};";
+ $q = \sprintf(
+ 'SELECT *
+ FROM "%s"."%s"
+ WHERE "%s"::text LIKE \'%s%\'
+ ORDER BY "%s" LIMIT 12 %s;',
+ $f_schema,
+ $f_table,
+ $f_attname,
+ $_POST['fvalue'],
+ $f_attname,
+ $offset
+ );
$res = $data->selectSet($q);
@@ -71,7 +82,10 @@ class AcinsertController extends BaseController
$finfo = $res->fetchField($j++);
if (\in_array($n, $fkeynames, true)) {
- echo "<td><a href=\"javascript:void(0)\" class=\"fkval\" name=\"{$keyspos[$n]}\">",
+ echo \sprintf(
+ '<td><a href="javascript:void(0)" class="fkval" name="%s">',
+ $keyspos[$n]
+ ),
$this->misc->printVal($v, $finfo->type, ['clip' => 'collapsed']),
'</a></td>';
} else {
@@ -104,7 +118,15 @@ class AcinsertController extends BaseController
echo $js . '</script>';
} else {
- \printf("<p>{$this->lang['strnofkref']}</p>", "\"{$_POST['f_schema']}\".\"{$_POST['f_table']}\".\"{$fkeynames[$_POST['fattpos']]}\"");
+ \printf(\sprintf(
+ '<p>%s</p>',
+ $this->lang['strnofkref']
+ ), \sprintf(
+ '"%s"."%s"."%s"',
+ $_POST['f_schema'],
+ $_POST['f_table'],
+ $fkeynames[$_POST['fattpos']]
+ ));
if ($_POST['offset']) {
echo '<a href="javascript:void(0)" class="fkprev">Prev &lt;&lt;</a>';
diff --git a/src/controllers/AggregatesController.php b/src/controllers/AggregatesController.php
index 384152f7..aca33ca1 100644
--- a/src/controllers/AggregatesController.php
+++ b/src/controllers/AggregatesController.php
@@ -101,7 +101,10 @@ class AggregatesController extends BaseController
'aggrname' => [
'title' => $this->lang['strname'],
'field' => Decorator::field('proname'),
- 'url' => "redirect.php?subject=aggregate&amp;action=properties&amp;{$this->misc->href}&amp;",
+ 'url' => \sprintf(
+ 'redirect.php?subject=aggregate&amp;action=properties&amp;%s&amp;',
+ $this->misc->href
+ ),
'vars' => ['aggrname' => 'proname', 'aggrtype' => 'proargtypes'],
],
'aggrtype' => [
@@ -278,36 +281,96 @@ class AggregatesController extends BaseController
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=\"",
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data"><input name="name" size="32" maxlength="%s" value="',
+ $this->data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['name']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['straggrbasetype']}</th>" . \PHP_EOL;
- echo "\t\t<td class=\"data\"><input name=\"basetype\" size=\"32\" maxlength=\"{$this->data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['straggrbasetype']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data"><input name="basetype" size="32" maxlength="%s" value="',
+ $this->data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['basetype']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['straggrsfunc']}</th>" . \PHP_EOL;
- echo "\t\t<td class=\"data\"><input name=\"sfunc\" size=\"32\" maxlength=\"{$this->data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['straggrsfunc']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data"><input name="sfunc" size="32" maxlength="%s" value="',
+ $this->data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['sfunc']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['straggrstype']}</th>" . \PHP_EOL;
- echo "\t\t<td class=\"data\"><input name=\"stype\" size=\"32\" maxlength=\"{$this->data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['straggrstype']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data"><input name="stype" size="32" maxlength="%s" value="',
+ $this->data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['stype']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['straggrffunc']}</th>" . \PHP_EOL;
- echo "\t\t<td class=\"data\"><input name=\"ffunc\" size=\"32\" maxlength=\"{$this->data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['straggrffunc']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data"><input name="ffunc" size="32" maxlength="%s" value="',
+ $this->data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['ffunc']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['straggrinitcond']}</th>" . \PHP_EOL;
- echo "\t\t<td class=\"data\"><input name=\"initcond\" size=\"32\" maxlength=\"{$this->data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['straggrinitcond']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data"><input name="initcond" size="32" maxlength="%s" value="',
+ $this->data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['initcond']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['straggrsortop']}</th>" . \PHP_EOL;
- echo "\t\t<td class=\"data\"><input name=\"sortop\" size=\"32\" maxlength=\"{$this->data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['straggrsortop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data"><input name="sortop" size="32" maxlength="%s" value="',
+ $this->data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['sortop']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo "\t\t<td><textarea name=\"aggrcomment\" rows=\"3\" cols=\"32\">",
\htmlspecialchars($_REQUEST['aggrcomment']), "</textarea></td>\n\t</tr>" . \PHP_EOL;
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="save_create" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
}
@@ -365,15 +428,30 @@ class AggregatesController extends BaseController
if (0 < $aggrdata->recordCount()) {
// Output table header
echo '<table>' . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data required\">{$this->lang['strname']}</th>";
- echo "<th class=\"data required\">{$this->lang['strowner']}</th>";
- echo "<th class=\"data required\">{$this->lang['strschema']}</th>\n\t</tr>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data required">%s</th>',
+ $this->lang['strname']
+ );
+ echo \sprintf(
+ '<th class="data required">%s</th>',
+ $this->lang['strowner']
+ );
+ echo \sprintf(
+ '<th class="data required">%s</th>
+ </tr>',
+ $this->lang['strschema']
+ ) . \PHP_EOL;
// Display aggregate's name, owner and schema
echo "\t<tr>\n\t\t<td><input name=\"newaggrname\" size=\"32\" maxlength=\"32\" value=\"", \htmlspecialchars($_REQUEST['aggrname']), '" /></td>';
echo '<td><input name="newaggrowner" size="32" maxlength="32" value="', \htmlspecialchars($aggrdata->fields['usename']), '" /></td>';
echo '<td><input name="newaggrschema" size="32" maxlength="32" value="', \htmlspecialchars($_REQUEST['schema']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo "\t\t<td><textarea name=\"newaggrcomment\" rows=\"3\" cols=\"32\">",
\htmlspecialchars($aggrdata->fields['aggrcomment']), "</textarea></td>\n\t</tr>" . \PHP_EOL;
echo '</table>' . \PHP_EOL;
@@ -384,11 +462,24 @@ class AggregatesController extends BaseController
echo '<input type="hidden" name="aggrowner" value="', \htmlspecialchars($aggrdata->fields['usename']), '" />' . \PHP_EOL;
echo '<input type="hidden" name="aggrschema" value="', \htmlspecialchars($_REQUEST['schema']), '" />' . \PHP_EOL;
echo '<input type="hidden" name="aggrcomment" value="', \htmlspecialchars($aggrdata->fields['aggrcomment']), '" />' . \PHP_EOL;
- echo "<input type=\"submit\" name=\"alter\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="alter" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strback']}\" /></p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>',
+ $this->lang['strback']
+ ) . \PHP_EOL;
}
echo '</form>' . \PHP_EOL;
}
@@ -406,16 +497,29 @@ class AggregatesController extends BaseController
$this->printTrail('aggregate');
$this->printTitle($this->lang['strdrop'], 'pg.aggregate.drop');
- echo '<p>', \sprintf($this->lang['strconfdropaggregate'], \htmlspecialchars($_REQUEST['aggrname'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropaggregate'],
+ \htmlspecialchars($_REQUEST['aggrname'])
+ ), '</p>' . \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 \sprintf(
+ '<p><input type="checkbox" id="cascade" name="cascade" /> <label for="cascade">%s</label></p>',
+ $this->lang['strcascade']
+ ) . \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;
echo '<input type="hidden" name="aggrtype" value="', \htmlspecialchars($_REQUEST['aggrtype']), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
$status = $this->data->dropAggregate($_POST['aggrname'], $_POST['aggrtype'], isset($_POST['cascade']));
@@ -447,30 +551,69 @@ class AggregatesController extends BaseController
if (0 < $aggrdata->recordCount()) {
// Display aggregate's info
echo '<table>' . \PHP_EOL;
- echo "<tr>\n\t<th class=\"data left\">{$this->lang['strname']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr>
+ <th class="data left">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
echo "\t<td class=\"data1\">", \htmlspecialchars($_REQUEST['aggrname']), "</td>\n</tr>" . \PHP_EOL;
- echo "<tr>\n\t<th class=\"data left\">{$this->lang['straggrbasetype']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr>
+ <th class="data left">%s</th>',
+ $this->lang['straggrbasetype']
+ ) . \PHP_EOL;
echo "\t<td class=\"data1\">", \htmlspecialchars($_REQUEST['aggrtype']), "</td>\n</tr>" . \PHP_EOL;
- echo "<tr>\n\t<th class=\"data left\">{$this->lang['straggrsfunc']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr>
+ <th class="data left">%s</th>',
+ $this->lang['straggrsfunc']
+ ) . \PHP_EOL;
echo "\t<td class=\"data1\">", \htmlspecialchars($aggrdata->fields['aggtransfn']), "</td>\n</tr>" . \PHP_EOL;
- echo "<tr>\n\t<th class=\"data left\">{$this->lang['straggrstype']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr>
+ <th class="data left">%s</th>',
+ $this->lang['straggrstype']
+ ) . \PHP_EOL;
echo "\t<td class=\"data1\">", \htmlspecialchars($aggrdata->fields['aggstype']), "</td>\n</tr>" . \PHP_EOL;
- echo "<tr>\n\t<th class=\"data left\">{$this->lang['straggrffunc']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr>
+ <th class="data left">%s</th>',
+ $this->lang['straggrffunc']
+ ) . \PHP_EOL;
echo "\t<td class=\"data1\">", \htmlspecialchars($aggrdata->fields['aggfinalfn']), "</td>\n</tr>" . \PHP_EOL;
- echo "<tr>\n\t<th class=\"data left\">{$this->lang['straggrinitcond']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr>
+ <th class="data left">%s</th>',
+ $this->lang['straggrinitcond']
+ ) . \PHP_EOL;
echo "\t<td class=\"data1\">", \htmlspecialchars($aggrdata->fields['agginitval']), "</td>\n</tr>" . \PHP_EOL;
if ($this->data->hasAggregateSortOp()) {
- echo "<tr>\n\t<th class=\"data left\">{$this->lang['straggrsortop']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr>
+ <th class="data left">%s</th>',
+ $this->lang['straggrsortop']
+ ) . \PHP_EOL;
echo "\t<td class=\"data1\">", \htmlspecialchars($aggrdata->fields['aggsortop']), "</td>\n</tr>" . \PHP_EOL;
}
- echo "<tr>\n\t<th class=\"data left\">{$this->lang['strowner']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr>
+ <th class="data left">%s</th>',
+ $this->lang['strowner']
+ ) . \PHP_EOL;
echo "\t<td class=\"data1\">", \htmlspecialchars($aggrdata->fields['usename']), "</td>\n</tr>" . \PHP_EOL;
- echo "<tr>\n\t<th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr>
+ <th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo "\t<td class=\"data1\">", $this->misc->printVal($aggrdata->fields['aggrcomment']), "</td>\n</tr>" . \PHP_EOL;
echo '</table>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
$navlinks = [
diff --git a/src/controllers/AlldbController.php b/src/controllers/AlldbController.php
index c0cc8671..65c65461 100644
--- a/src/controllers/AlldbController.php
+++ b/src/controllers/AlldbController.php
@@ -7,13 +7,14 @@
namespace PHPPgAdmin\Controller;
use PHPPgAdmin\Decorators\Decorator;
+use PHPPgAdmin\Traits\ExportTrait;
/**
* Base controller class.
*/
class AlldbController extends BaseController
{
- use \PHPPgAdmin\Traits\ExportTrait;
+ use ExportTrait;
public $table_place = 'alldb-databases';
@@ -269,9 +270,15 @@ class AlldbController extends BaseController
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 \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
echo '<td class="data1">';
- echo "<input name=\"newname\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ '<input name="newname" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['alterdatabase']), '" /></td></tr>' . \PHP_EOL;
if ($data->hasAlterDatabaseOwner() && $data->isSuperUser()) {
@@ -281,7 +288,10 @@ class AlldbController extends BaseController
$owner = isset($rs->fields['usename']) ? $rs->fields['usename'] : '';
$users = $data->getUsers();
- echo "<tr><th class=\"data left required\">{$this->lang['strowner']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strowner']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="owner">';
while (!$users->EOF) {
@@ -296,7 +306,10 @@ class AlldbController extends BaseController
if ($data->hasSharedComments()) {
$rs = $data->getDatabaseComment($_REQUEST['alterdatabase']);
$comment = isset($rs->fields['description']) ? $rs->fields['description'] : '';
- echo "<tr><th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo '<td class="data1">';
echo '<textarea rows="3" cols="32" name="dbcomment">',
\htmlspecialchars($comment), '</textarea></td></tr>' . \PHP_EOL;
@@ -306,8 +319,14 @@ class AlldbController extends BaseController
echo $this->view->form;
echo '<input type="hidden" name="oldname" value="',
\htmlspecialchars($_REQUEST['alterdatabase']), '" />' . \PHP_EOL;
- echo "<input type=\"submit\" name=\"alter\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="alter" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
$this->coalesceArr($_POST, 'owner', '');
@@ -345,11 +364,17 @@ class AlldbController extends BaseController
if (isset($_REQUEST['ma'])) {
foreach ($_REQUEST['ma'] as $v) {
$a = \unserialize(\htmlspecialchars_decode($v, \ENT_QUOTES));
- echo '<p>', \sprintf($this->lang['strconfdropdatabase'], $this->misc->printVal($a['database'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropdatabase'],
+ $this->misc->printVal($a['database'])
+ ), '</p>' . \PHP_EOL;
\printf('<input type="hidden" name="dropdatabase[]" value="%s" />', \htmlspecialchars($a['database']));
}
} else {
- echo '<p>', \sprintf($this->lang['strconfdropdatabase'], $this->misc->printVal($_REQUEST['dropdatabase'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropdatabase'],
+ $this->misc->printVal($_REQUEST['dropdatabase'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="dropdatabase" value="', \htmlspecialchars($_REQUEST['dropdatabase']), '" />' . \PHP_EOL;
// END if multi drop
}
@@ -357,8 +382,14 @@ class AlldbController extends BaseController
echo '<input type="hidden" name="action" value="drop" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo "</form>\n"; // END confirm
} else {
//If multi drop
@@ -438,11 +469,22 @@ class AlldbController extends BaseController
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=\"",
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data1"><input name="formName" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_POST['formName']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strtemplatedb']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strtemplatedb']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">" . \PHP_EOL;
echo "\t\t\t<select name=\"formTemplate\">" . \PHP_EOL;
// Always offer template0 and template1
@@ -456,8 +498,14 @@ class AlldbController extends BaseController
if ('template1' !== $dbname) {
// filter out for $this->conf[show_system] users so we dont get duplicates
- echo "\t\t\t\t<option value=\"{$dbname}\"",
- ($dbname === $_POST['formTemplate']) ? ' selected="selected"' : '', ">{$dbname}</option>" . \PHP_EOL;
+ echo \sprintf(
+ ' <option value="%s"',
+ $dbname
+ ),
+ ($dbname === $_POST['formTemplate']) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $dbname
+ ) . \PHP_EOL;
}
$templatedbs->moveNext();
}
@@ -465,7 +513,11 @@ class AlldbController extends BaseController
echo "\t\t</td>\n\t</tr>" . \PHP_EOL;
// ENCODING
- echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strencoding']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strencoding']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">" . \PHP_EOL;
echo "\t\t\t<select name=\"formEncoding\">" . \PHP_EOL;
echo "\t\t\t\t<option value=\"\"></option>" . \PHP_EOL;
@@ -484,13 +536,21 @@ class AlldbController extends BaseController
$this->coalesceArr($_POST, 'formCType', '');
// LC_COLLATE
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strcollation']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strcollation']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">" . \PHP_EOL;
echo "\t\t\t<input name=\"formCollate\" value=\"", \htmlspecialchars($_POST['formCollate']), '" />' . \PHP_EOL;
echo "\t\t</td>\n\t</tr>" . \PHP_EOL;
// LC_CTYPE
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strctype']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strctype']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">" . \PHP_EOL;
echo "\t\t\t<input name=\"formCType\" value=\"", \htmlspecialchars($_POST['formCType']), '" />' . \PHP_EOL;
echo "\t\t</td>\n\t</tr>" . \PHP_EOL;
@@ -498,7 +558,11 @@ class AlldbController extends BaseController
// Tablespace (if there are any)
if ($data->hasTablespaces() && 0 < $tablespaces->recordCount()) {
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strtablespace']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strtablespace']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">\n\t\t\t<select name=\"formSpc\">" . \PHP_EOL;
// Always offer the default (empty) option
echo "\t\t\t\t<option value=\"\"",
@@ -506,8 +570,14 @@ class AlldbController extends BaseController
// Display all other tablespaces
while (!$tablespaces->EOF) {
$spcname = \htmlspecialchars($tablespaces->fields['spcname'] ?? '');
- echo "\t\t\t\t<option value=\"{$spcname}\"",
- ($spcname === $_POST['formSpc']) ? ' selected="selected"' : '', ">{$spcname}</option>" . \PHP_EOL;
+ echo \sprintf(
+ ' <option value="%s"',
+ $spcname
+ ),
+ ($spcname === $_POST['formSpc']) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $spcname
+ ) . \PHP_EOL;
$tablespaces->moveNext();
}
echo "\t\t\t</select>\n\t\t</td>\n\t</tr>" . \PHP_EOL;
@@ -515,7 +585,11 @@ class AlldbController extends BaseController
// Comments (if available)
if ($data->hasSharedComments()) {
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo "\t\t<td><textarea name=\"formComment\" rows=\"3\" cols=\"32\">",
\htmlspecialchars($_POST['formComment']), "</textarea></td>\n\t</tr>" . \PHP_EOL;
}
@@ -523,8 +597,15 @@ class AlldbController extends BaseController
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="save_create" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
}
diff --git a/src/controllers/BaseController.php b/src/controllers/BaseController.php
index b94ec4ef..88d188ef 100644
--- a/src/controllers/BaseController.php
+++ b/src/controllers/BaseController.php
@@ -6,14 +6,25 @@
namespace PHPPgAdmin\Controller;
+use PHPPgAdmin\ADORecordSet;
+use PHPPgAdmin\ArrayRecordSet;
+use PHPPgAdmin\ContainerUtils;
+use PHPPgAdmin\Misc;
+use PHPPgAdmin\Traits\HelperTrait;
+use PHPPgAdmin\ViewManager;
use PHPPgAdmin\XHtml;
+use PHPPgAdmin\XHtml\HTMLFooterController;
+use PHPPgAdmin\XHtml\HTMLHeaderController;
+use PHPPgAdmin\XHtml\HTMLNavbarController;
+use PHPPgAdmin\XHtml\HTMLTableController;
+use Slim\Http\Response;
/**
* Base controller class.
*/
class BaseController
{
- use \PHPPgAdmin\Traits\HelperTrait;
+ use HelperTrait;
public $appLangFiles = [];
@@ -50,12 +61,12 @@ class BaseController
public $msg = '';
/**
- * @var \PHPPgAdmin\ViewManager
+ * @var ViewManager
*/
public $view;
/**
- * @var \PHPPgAdmin\Misc
+ * @var Misc
*/
public $misc;
@@ -64,7 +75,7 @@ class BaseController
public $phpMinVer;
/**
- * @var \PHPPgAdmin\ContainerUtils
+ * @var ContainerUtils
*/
protected $container;
@@ -113,10 +124,10 @@ class BaseController
/**
* Constructs the base controller (common for almost all controllers).
*
- * @param \PHPPgAdmin\ContainerUtils $container the $app container
- * @param bool $no_db_connection [optional] if true, sets $this->misc->setNoDBConnection(true);
+ * @param ContainerUtils $container the $app container
+ * @param bool $no_db_connection [optional] if true, sets $this->misc->setNoDBConnection(true);
*/
- public function __construct(\PHPPgAdmin\ContainerUtils $container)
+ public function __construct(ContainerUtils $container)
{
$this->container = $container;
$this->lang = $container->get('lang');
@@ -207,12 +218,12 @@ class BaseController
/**
* Display a table of data.
*
- * @param \ADORecordSet|\PHPPgAdmin\ArrayRecordSet $tabledata a set of data to be formatted
- * @param array $columns An associative array of columns to be displayed:
- * @param array $actions Actions that can be performed on each object:
- * @param string $place Place where the $actions are displayed. Like 'display-browse',
- * @param string $nodata (optional) Message to display if data set is empty
- * @param callable $pre_fn (optional) callback closure for each row
+ * @param ADORecordSet|ArrayRecordSet $tabledata a set of data to be formatted
+ * @param array $columns An associative array of columns to be displayed:
+ * @param array $actions Actions that can be performed on each object:
+ * @param string $place Place where the $actions are displayed. Like 'display-browse',
+ * @param string $nodata (optional) Message to display if data set is empty
+ * @param callable $pre_fn (optional) callback closure for each row
*
* @return string the html of the table
*/
@@ -230,7 +241,7 @@ class BaseController
*
* @param array $tabs The tabs
*
- * @return \PHPPgAdmin\ADORecordSet|\PHPPgAdmin\ArrayRecordSet filtered tabs in the form of an ArrayRecordSet
+ * @return ADORecordSet|ArrayRecordSet filtered tabs in the form of an ArrayRecordSet
*/
public function adjustTabsForTree(&$tabs)
{
@@ -242,12 +253,12 @@ class BaseController
/**
* Produce JSON data for the browser tree.
*
- * @param \PHPPgAdmin\ADORecordSet|\PHPPgAdmin\ArrayRecordSet $_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
+ * @param ADORecordSet|ArrayRecordSet $_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
*
- * @return \Slim\Http\Response|string the json rendered tree
+ * @return Response|string the json rendered tree
*/
public function printTree(&$_treedata, &$attrs, $section, $print = true)
{
@@ -273,10 +284,10 @@ class BaseController
}
/**
- * @param (array|mixed)[][] $navlinks
- * @param string $place
- * @param array $env
- * @param mixed $do_print
+ * @param (array[][]|mixed)[][] $navlinks
+ * @param string $place
+ * @param array $env
+ * @param mixed $do_print
*/
public function printNavLinks(array $navlinks, string $place, array $env = [], $do_print = true)
{
@@ -466,7 +477,7 @@ class BaseController
public function printMsg($msg, $do_print = true)
{
$html = '';
- $msg = \htmlspecialchars(\PHPPgAdmin\ContainerUtils::br2ln($msg));
+ $msg = \htmlspecialchars(ContainerUtils::br2ln($msg));
if ('' !== $msg) {
$html .= '<p class="message">' . \nl2br($msg) . '</p>' . \PHP_EOL;
@@ -485,16 +496,19 @@ class BaseController
{
if (false === $this->misc->getNoDBConnection()) {
if (null === $this->misc->getServerId()) {
- $servers_controller = new \PHPPgAdmin\Controller\ServersController($this->container);
+ $servers_controller = new ServersController($this->container);
$servers_controller->render();
} else {
$_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']);
+ $msg = \sprintf(
+ $this->lang['strlogoutmsg'],
+ $_server_info['desc']
+ );
- $servers_controller = new \PHPPgAdmin\Controller\ServersController($container);
+ $servers_controller = new ServersController($container);
$servers_controller->render();
}
@@ -505,7 +519,7 @@ class BaseController
private function _getTableController()
{
if (null === $this->_table_controller) {
- $this->_table_controller = new XHtml\HTMLTableController($this->getContainer(), $this->controller_name);
+ $this->_table_controller = new HTMLTableController($this->getContainer(), $this->controller_name);
}
return $this->_table_controller;
@@ -514,7 +528,7 @@ class BaseController
private function _getFooterController()
{
if (null === $this->_footer_controller) {
- $this->_footer_controller = new XHtml\HTMLFooterController($this->getContainer(), $this->controller_name);
+ $this->_footer_controller = new HTMLFooterController($this->getContainer(), $this->controller_name);
}
return $this->_footer_controller;
@@ -523,7 +537,7 @@ class BaseController
private function _getHeaderController()
{
if (null === $this->_header_controller) {
- $this->_header_controller = new XHtml\HTMLHeaderController($this->getContainer(), $this->controller_name);
+ $this->_header_controller = new HTMLHeaderController($this->getContainer(), $this->controller_name);
}
return $this->_header_controller;
@@ -532,7 +546,7 @@ class BaseController
private function _getNavbarController()
{
if (null === $this->_trail_controller) {
- $this->_trail_controller = new XHtml\HTMLNavbarController($this->getContainer(), $this->controller_name);
+ $this->_trail_controller = new HTMLNavbarController($this->getContainer(), $this->controller_name);
}
return $this->_trail_controller;
diff --git a/src/controllers/BrowserController.php b/src/controllers/BrowserController.php
index 60c35221..3c47284d 100644
--- a/src/controllers/BrowserController.php
+++ b/src/controllers/BrowserController.php
@@ -6,6 +6,7 @@
namespace PHPPgAdmin\Controller;
+use PHPPgAdmin\ArrayRecordSet;
use PHPPgAdmin\Decorators\Decorator;
/**
@@ -65,7 +66,7 @@ class BrowserController extends BaseController
*/
public function doTree()
{
- $treedata = new \PHPPgAdmin\ArrayRecordSet([]);
+ $treedata = new ArrayRecordSet([]);
$reqvars = [];
$action = Decorator::url('/src/views/servers');
$branch = Decorator::url('/src/views/servers', $reqvars, ['action' => 'tree']);
diff --git a/src/controllers/ColpropertiesController.php b/src/controllers/ColpropertiesController.php
index 7831953a..22caeec2 100644
--- a/src/controllers/ColpropertiesController.php
+++ b/src/controllers/ColpropertiesController.php
@@ -78,7 +78,10 @@ class ColpropertiesController extends BaseController
};
if (empty($_REQUEST['column'])) {
- $msg .= "<br/>{$this->lang['strnoobjects']}";
+ $msg .= \sprintf(
+ '<br/>%s',
+ $this->lang['strnoobjects']
+ );
}
$this->printTrail('column');
@@ -242,15 +245,34 @@ class ColpropertiesController extends BaseController
// Output table header
echo '<table>' . \PHP_EOL;
- echo "<tr><th class=\"data required\">{$this->lang['strname']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
if ($data->hasAlterColumnType()) {
- echo "<th class=\"data required\" colspan=\"2\">{$this->lang['strtype']}</th>" . \PHP_EOL;
- echo "<th class=\"data\">{$this->lang['strlength']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data required" colspan="2">%s</th>',
+ $this->lang['strtype']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data">%s</th>',
+ $this->lang['strlength']
+ ) . \PHP_EOL;
} else {
- echo "<th class=\"data required\">{$this->lang['strtype']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data required">%s</th>',
+ $this->lang['strtype']
+ ) . \PHP_EOL;
}
- echo "<th class=\"data\">{$this->lang['strnotnull']}</th>\n<th class=\"data\">{$this->lang['strdefault']}</th>\n<th class=\"data\">{$this->lang['strcomment']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data">%s</th>
+<th class="data">%s</th>
+<th class="data">%s</th></tr>',
+ $this->lang['strnotnull'],
+ $this->lang['strdefault'],
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
$column = $data->getTableAttributes($_REQUEST['table'], $_REQUEST['column']);
$column->fields['attnotnull'] = $data->phpBool($column->fields['attnotnull']);
@@ -287,7 +309,10 @@ class ColpropertiesController extends BaseController
}
// Column name
- echo "<tr><td><input name=\"field\" size=\"16\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ '<tr><td><input name="field" size="16" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['field']), '" /></td>' . \PHP_EOL;
// Column type
@@ -318,7 +343,10 @@ class ColpropertiesController extends BaseController
$predefined_size_types = \array_intersect($data->predefined_size_types, $types_for_js);
foreach ($predefined_size_types as $value) {
- $escaped_predef_types[] = "'{$value}'";
+ $escaped_predef_types[] = \sprintf(
+ '\'%s\'',
+ $value
+ );
}
echo '<td><input name="length" id="lengths" size="8" value="',
@@ -337,7 +365,11 @@ class ColpropertiesController extends BaseController
echo '<p><input type="hidden" name="action" value="properties" />' . \PHP_EOL;
echo '<input type="hidden" name="stage" value="2" />' . \PHP_EOL;
echo $this->view->form;
- echo \sprintf('<input type="hidden" name="table" value="%s" />%s', \htmlspecialchars($_REQUEST['table']), \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;
echo '<input type="hidden" name="olddefault" value="', \htmlspecialchars($_REQUEST['olddefault']), '" />' . \PHP_EOL;
@@ -352,8 +384,15 @@ class ColpropertiesController extends BaseController
echo '<input type="hidden" name="length" value="', \htmlspecialchars($_REQUEST['length']), '" />' . \PHP_EOL;
echo '<input type="hidden" name="array" value="', \htmlspecialchars($_REQUEST['array']), '" />' . \PHP_EOL;
}
- echo "<input type=\"submit\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
echo '<script type="text/javascript">predefined_lengths = new Array(' . \implode(',', $escaped_predef_types) . ");checkLengths(document.getElementById('type').value,'');</script>" . \PHP_EOL;
@@ -388,10 +427,16 @@ class ColpropertiesController extends BaseController
$_REQUEST['column'] = $_REQUEST['field'];
$this->view->setReloadBrowser(true);
}
- $this->doDefault($sql . "<br/>{$this->lang['strcolumnaltered']}");
+ $this->doDefault($sql . \sprintf(
+ '<br/>%s',
+ $this->lang['strcolumnaltered']
+ ));
} else {
$_REQUEST['stage'] = 1;
- $this->doAlter($sql . "<br/>{$this->lang['strcolumnalteredbad']}");
+ $this->doAlter($sql . \sprintf(
+ '<br/>%s',
+ $this->lang['strcolumnalteredbad']
+ ));
return;
}
@@ -399,7 +444,10 @@ class ColpropertiesController extends BaseController
break;
default:
- echo "<p>{$this->lang['strinvalidparam']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strinvalidparam']
+ ) . \PHP_EOL;
}
}
}
diff --git a/src/controllers/ConstraintsController.php b/src/controllers/ConstraintsController.php
index b3cbfb98..3b16a8c2 100644
--- a/src/controllers/ConstraintsController.php
+++ b/src/controllers/ConstraintsController.php
@@ -7,13 +7,17 @@
namespace PHPPgAdmin\Controller;
use PHPPgAdmin\Decorators\Decorator;
+use PHPPgAdmin\Traits\FormTrait;
+use PHPPgAdmin\XHtml\XHtmlButton;
+use PHPPgAdmin\XHtml\XHtmlOption;
+use PHPPgAdmin\XHtml\XHtmlSelect;
/**
* Base controller class.
*/
class ConstraintsController extends BaseController
{
- use \PHPPgAdmin\Traits\FormTrait;
+ use FormTrait;
/**
* Default method to render the controller according to the action parameter.
@@ -250,38 +254,51 @@ class ConstraintsController extends BaseController
$attrs = $data->getTableAttributes($_REQUEST['table']);
$tables = $data->getAllTables();
- $selColumns = new \PHPPgAdmin\XHtml\XHtmlSelect('TableColumnList', true, 10);
+ $selColumns = new XHtmlSelect('TableColumnList', true, 10);
$selColumns->set_style('width: 15em;');
if (0 < $attrs->recordCount()) {
while (!$attrs->EOF) {
- $xmloption = new \PHPPgAdmin\XHtml\XHtmlOption($attrs->fields['attname']);
+ $xmloption = new XHtmlOption($attrs->fields['attname']);
$selColumns->add($xmloption);
$attrs->moveNext();
}
}
- $selIndex = new \PHPPgAdmin\XHtml\XHtmlSelect('IndexColumnList[]', true, 10);
+ $selIndex = new XHtmlSelect('IndexColumnList[]', true, 10);
$selIndex->set_style('width: 15em;');
$selIndex->set_attribute('id', 'IndexColumnList');
- $buttonAdd = new \PHPPgAdmin\XHtml\XHtmlButton('add', '>>');
+ $buttonAdd = new XHtmlButton('add', '>>');
$buttonAdd->set_attribute('onclick', 'buttonPressed(this);');
$buttonAdd->set_attribute('type', 'button');
- $buttonRemove = new \PHPPgAdmin\XHtml\XHtmlButton('remove', '<<');
+ $buttonRemove = new XHtmlButton('remove', '<<');
$buttonRemove->set_attribute('onclick', 'buttonPressed(this);');
$buttonRemove->set_attribute('type', 'button');
echo '<form onsubmit="doSelectAll();" name="formIndex" action="constraints" method="post">' . \PHP_EOL;
echo '<table>' . \PHP_EOL;
- echo "<tr><th class=\"data\" colspan=\"3\">{$this->lang['strname']}</th></tr>" . \PHP_EOL;
- echo "<tr><td class=\"data1\" colspan=\"3\"><input type=\"text\" name=\"name\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" /></td></tr>" . \PHP_EOL;
- echo "<tr><th class=\"data\">{$this->lang['strtablecolumnlist']}</th><th class=\"data\">&nbsp;</th><th class=\"data required\">{$this->lang['strfkcolumnlist']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data" colspan="3">%s</th></tr>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<tr><td class="data1" colspan="3"><input type="text" name="name" size="32" maxlength="%s" /></td></tr>',
+ $data->_maxNameLen
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data">%s</th><th class="data">&nbsp;</th><th class="data required">%s</th></tr>',
+ $this->lang['strtablecolumnlist'],
+ $this->lang['strfkcolumnlist']
+ ) . \PHP_EOL;
echo '<tr><td class="data1">' . $selColumns->fetch() . '</td>' . \PHP_EOL;
echo '<td class="data1" style="text-align: center">' . $buttonRemove->fetch() . $buttonAdd->fetch() . '</td>' . \PHP_EOL;
echo '<td class=data1>' . $selIndex->fetch() . '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data\" colspan=\"3\">{$this->lang['strfktarget']}</th></tr>";
+ echo \sprintf(
+ '<tr><th class="data" colspan="3">%s</th></tr>',
+ $this->lang['strfktarget']
+ );
echo '<tr>';
echo '<td class="data1" colspan="3"><select class="select2" name="target">';
@@ -311,7 +328,10 @@ class ConstraintsController extends BaseController
]
);
- echo \sprintf('</form>%s', \PHP_EOL);
+ echo \sprintf(
+ '</form>%s',
+ \PHP_EOL
+ );
}
/**
@@ -405,43 +425,56 @@ class ConstraintsController extends BaseController
$tablespaces = $data->getTablespaces();
}
- $selColumns = new \PHPPgAdmin\XHtml\XHtmlSelect('TableColumnList', true, 10);
+ $selColumns = new XHtmlSelect('TableColumnList', true, 10);
$selColumns->set_style('width: 15em;');
if (0 < $attrs->recordCount()) {
while (!$attrs->EOF) {
- $new_option = new \PHPPgAdmin\XHtml\XHtmlOption($attrs->fields['attname']);
+ $new_option = new XHtmlOption($attrs->fields['attname']);
$selColumns->add($new_option);
$attrs->moveNext();
}
}
- $selIndex = new \PHPPgAdmin\XHtml\XHtmlSelect('IndexColumnList[]', true, 10);
+ $selIndex = new XHtmlSelect('IndexColumnList[]', true, 10);
$selIndex->set_style('width: 15em;');
$selIndex->set_attribute('id', 'IndexColumnList');
- $buttonAdd = new \PHPPgAdmin\XHtml\XHtmlButton('add', '>>');
+ $buttonAdd = new XHtmlButton('add', '>>');
$buttonAdd->set_attribute('onclick', 'buttonPressed(this);');
$buttonAdd->set_attribute('type', 'button');
- $buttonRemove = new \PHPPgAdmin\XHtml\XHtmlButton('remove', '<<');
+ $buttonRemove = new XHtmlButton('remove', '<<');
$buttonRemove->set_attribute('onclick', 'buttonPressed(this);');
$buttonRemove->set_attribute('type', 'button');
echo '<form onsubmit="doSelectAll();" name="formIndex" action="constraints" method="post">' . \PHP_EOL;
echo '<table>' . \PHP_EOL;
- echo "<tr><th class=\"data\" colspan=\"3\">{$this->lang['strname']}</th></tr>";
+ echo \sprintf(
+ '<tr><th class="data" colspan="3">%s</th></tr>',
+ $this->lang['strname']
+ );
echo '<tr>';
echo '<td class="data1" colspan="3"><input type="text" name="name" value="', \htmlspecialchars($_POST['name']),
- "\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" /></td></tr>";
- echo "<tr><th class=\"data\">{$this->lang['strtablecolumnlist']}</th><th class=\"data\">&nbsp;</th><th class=\"data required\">{$this->lang['strindexcolumnlist']}</th></tr>" . \PHP_EOL;
+ \sprintf(
+ '" size="32" maxlength="%s" /></td></tr>',
+ $data->_maxNameLen
+ );
+ echo \sprintf(
+ '<tr><th class="data">%s</th><th class="data">&nbsp;</th><th class="data required">%s</th></tr>',
+ $this->lang['strtablecolumnlist'],
+ $this->lang['strindexcolumnlist']
+ ) . \PHP_EOL;
echo '<tr><td class="data1">' . $selColumns->fetch() . '</td>' . \PHP_EOL;
echo '<td class="data1" style="text-align: center">' . $buttonRemove->fetch() . $buttonAdd->fetch() . '</td>';
echo '<td class=data1>' . $selIndex->fetch() . '</td></tr>' . \PHP_EOL;
// Tablespace (if there are any)
if ($data->hasTablespaces() && 0 < $tablespaces->recordCount()) {
- echo "<tr><th class=\"data\" colspan=\"3\">{$this->lang['strtablespace']}</th></tr>";
+ echo \sprintf(
+ '<tr><th class="data" colspan="3">%s</th></tr>',
+ $this->lang['strtablespace']
+ );
echo '<tr><td class="data1" colspan="3"><select name="tablespace">' . \PHP_EOL;
// Always offer the default (empty) option
echo "\t\t\t\t<option value=\"\"",
@@ -449,8 +482,14 @@ class ConstraintsController extends BaseController
// Display all other tablespaces
while (!$tablespaces->EOF) {
$spcname = \htmlspecialchars($tablespaces->fields['spcname']);
- echo "\t\t\t\t<option value=\"{$spcname}\"",
- ($spcname === $_POST['tablespace']) ? ' selected="selected"' : '', ">{$spcname}</option>" . \PHP_EOL;
+ echo \sprintf(
+ ' <option value="%s"',
+ $spcname
+ ),
+ ($spcname === $_POST['tablespace']) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $spcname
+ ) . \PHP_EOL;
$tablespaces->moveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
@@ -469,7 +508,10 @@ class ConstraintsController extends BaseController
]
);
- echo \sprintf('</form>%s', \PHP_EOL);
+ echo \sprintf(
+ '</form>%s',
+ \PHP_EOL
+ );
}
/**
@@ -542,10 +584,19 @@ class ConstraintsController extends BaseController
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;
-
- echo "<tr><td class=\"data1\"><input name=\"name\" size=\"24\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ '<tr><th class="data">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data required">%s</th></tr>',
+ $this->lang['strdefinition']
+ ) . \PHP_EOL;
+
+ echo \sprintf(
+ '<tr><td class="data1"><input name="name" size="24" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_POST['name']), '" /></td>' . \PHP_EOL;
echo '<td class="data1">(<input name="definition" size="64" value="',
@@ -563,7 +614,10 @@ class ConstraintsController extends BaseController
]
);
- echo \sprintf('</form>%s', \PHP_EOL);
+ echo \sprintf(
+ '</form>%s',
+ \PHP_EOL
+ );
} else {
if ('' === \trim($_POST['definition'])) {
$this->addCheck(true, $this->lang['strcheckneedsdefinition']);
@@ -597,7 +651,10 @@ class ConstraintsController extends BaseController
$this->misc->printVal($_REQUEST['table'])
), '</p>' . \PHP_EOL;
- echo \sprintf('<form action="constraints" method="post">%s', \PHP_EOL);
+ echo \sprintf(
+ '<form action="constraints" method="post">%s',
+ \PHP_EOL
+ );
echo $this->getFormInputsAndButtons(
[
@@ -615,7 +672,10 @@ class ConstraintsController extends BaseController
]
);
- echo \sprintf('</form>%s', \PHP_EOL);
+ echo \sprintf(
+ '</form>%s',
+ \PHP_EOL
+ );
}
/**
@@ -682,53 +742,81 @@ class ConstraintsController extends BaseController
$attrs = $data->getTableAttributes($_REQUEST['target']['tablename']);
$data->setSchema($_REQUEST['schema']);
- $selColumns = new \PHPPgAdmin\XHtml\XHtmlSelect('TableColumnList', true, 10);
+ $selColumns = new XHtmlSelect('TableColumnList', true, 10);
$selColumns->set_style('width: 15em;');
if (0 < $attrs->recordCount()) {
while (!$attrs->EOF) {
- $xmloption = new \PHPPgAdmin\XHtml\XHtmlOption($attrs->fields['attname']);
+ $xmloption = new XHtmlOption($attrs->fields['attname']);
$selColumns->add($xmloption);
$attrs->moveNext();
}
}
- $selIndex = new \PHPPgAdmin\XHtml\XHtmlSelect('IndexColumnList[]', true, 10);
+ $selIndex = new XHtmlSelect('IndexColumnList[]', true, 10);
$selIndex->set_style('width: 15em;');
$selIndex->set_attribute('id', 'IndexColumnList');
- $buttonAdd = new \PHPPgAdmin\XHtml\XHtmlButton('add', '>>');
+ $buttonAdd = new XHtmlButton('add', '>>');
$buttonAdd->set_attribute('onclick', 'buttonPressed(this);');
$buttonAdd->set_attribute('type', 'button');
- $buttonRemove = new \PHPPgAdmin\XHtml\XHtmlButton('remove', '<<');
+ $buttonRemove = new XHtmlButton('remove', '<<');
$buttonRemove->set_attribute('onclick', 'buttonPressed(this);');
$buttonRemove->set_attribute('type', 'button');
echo '<form onsubmit="doSelectAll();" name="formIndex" action="constraints" method="post">' . \PHP_EOL;
echo '<table>' . \PHP_EOL;
- echo "<tr><th class=\"data\" colspan=\"3\">{$this->lang['strfktarget']}</th></tr>";
- echo "<tr><th class=\"data\">{$this->lang['strtablecolumnlist']}</th><th class=\"data\">&nbsp;</th><th class=data>{$this->lang['strfkcolumnlist']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data" colspan="3">%s</th></tr>',
+ $this->lang['strfktarget']
+ );
+ echo \sprintf(
+ '<tr><th class="data">%s</th><th class="data">&nbsp;</th><th class=data>%s</th></tr>',
+ $this->lang['strtablecolumnlist'],
+ $this->lang['strfkcolumnlist']
+ ) . \PHP_EOL;
echo '<tr><td class="data1">' . $selColumns->fetch() . '</td>' . \PHP_EOL;
echo '<td class="data1" style="text-align: center">' . $buttonRemove->fetch() . $buttonAdd->fetch() . '</td>';
echo '<td class="data1">' . $selIndex->fetch() . '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data\" colspan=\"3\">{$this->lang['stractions']}</th></tr>";
+ echo \sprintf(
+ '<tr><th class="data" colspan="3">%s</th></tr>',
+ $this->lang['stractions']
+ );
echo '<tr>';
echo '<td class="data1" colspan="3">' . \PHP_EOL;
// ON SELECT actions
- echo "{$this->lang['stronupdate']} <select name=\"upd_action\">";
+ echo \sprintf(
+ '%s <select name="upd_action">',
+ $this->lang['stronupdate']
+ );
foreach ($data->fkactions as $v) {
- echo "<option value=\"{$v}\"", ($_POST['upd_action'] === $v) ? ' selected="selected"' : '', ">{$v}</option>" . \PHP_EOL;
+ echo \sprintf(
+ '<option value="%s"',
+ $v
+ ), ($_POST['upd_action'] === $v) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $v
+ ) . \PHP_EOL;
}
echo '</select><br />' . \PHP_EOL;
// ON DELETE actions
- echo "{$this->lang['strondelete']} <select name=\"del_action\">";
+ echo \sprintf(
+ '%s <select name="del_action">',
+ $this->lang['strondelete']
+ );
foreach ($data->fkactions as $v) {
- echo "<option value=\"{$v}\"", ($_POST['del_action'] === $v) ? ' selected="selected"' : '', ">{$v}</option>" . \PHP_EOL;
+ echo \sprintf(
+ '<option value="%s"',
+ $v
+ ), ($_POST['del_action'] === $v) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $v
+ ) . \PHP_EOL;
}
echo '</select><br />' . \PHP_EOL;
@@ -737,7 +825,13 @@ class ConstraintsController extends BaseController
echo '<select name="match">';
foreach ($data->fkmatches as $v) {
- echo "<option value=\"{$v}\"", ($_POST['match'] === $v) ? ' selected="selected"' : '', ">{$v}</option>" . \PHP_EOL;
+ echo \sprintf(
+ '<option value="%s"',
+ $v
+ ), ($_POST['match'] === $v) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $v
+ ) . \PHP_EOL;
}
echo '</select><br />' . \PHP_EOL;
@@ -746,7 +840,13 @@ class ConstraintsController extends BaseController
echo '<select name="deferrable">';
foreach ($data->fkdeferrable as $v) {
- echo "<option value=\"{$v}\"", ($_POST['deferrable'] === $v) ? ' selected="selected"' : '', ">{$v}</option>" . \PHP_EOL;
+ echo \sprintf(
+ '<option value="%s"',
+ $v
+ ), ($_POST['deferrable'] === $v) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $v
+ ) . \PHP_EOL;
}
echo '</select><br />' . \PHP_EOL;
@@ -755,7 +855,13 @@ class ConstraintsController extends BaseController
echo '<select name="initially">';
foreach ($data->fkinitial as $v) {
- echo "<option value=\"{$v}\"", ($_POST['initially'] === $v) ? ' selected="selected"' : '', ">{$v}</option>" . \PHP_EOL;
+ echo \sprintf(
+ '<option value="%s"',
+ $v
+ ), ($_POST['initially'] === $v) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $v
+ ) . \PHP_EOL;
}
echo '</select>' . \PHP_EOL;
@@ -775,6 +881,10 @@ class ConstraintsController extends BaseController
$this->lang['strcancel']
);
- echo \sprintf('</p>%s</form>%s', \PHP_EOL, \PHP_EOL);
+ echo \sprintf(
+ '</p>%s</form>%s',
+ \PHP_EOL,
+ \PHP_EOL
+ );
}
}
diff --git a/src/controllers/DatabaseController.php b/src/controllers/DatabaseController.php
index 1948be25..f620cfc8 100644
--- a/src/controllers/DatabaseController.php
+++ b/src/controllers/DatabaseController.php
@@ -7,14 +7,16 @@
namespace PHPPgAdmin\Controller;
use PHPPgAdmin\Decorators\Decorator;
+use PHPPgAdmin\Traits\AdminTrait;
+use PHPPgAdmin\Traits\ExportTrait;
/**
* Base controller class.
*/
class DatabaseController extends BaseController
{
- use \PHPPgAdmin\Traits\AdminTrait;
- use \PHPPgAdmin\Traits\ExportTrait;
+ use AdminTrait;
+ use ExportTrait;
public $table_place = 'database-variables';
@@ -47,13 +49,35 @@ class DatabaseController extends BaseController
$scripts .= '<script type="text/javascript">' . \PHP_EOL;
$scripts .= "var Database = {\n";
- $scripts .= "ajax_time_refresh: {$refreshTime},\n";
- $scripts .= "str_start: {text:'{$this->lang['strstart']}',icon: '" . $this->view->icon('Execute') . "'},\n";
- $scripts .= "str_stop: {text:'{$this->lang['strstop']}',icon: '" . $this->view->icon('Stop') . "'},\n";
+ $scripts .= \sprintf(
+ 'ajax_time_refresh: %s,
+',
+ $refreshTime
+ );
+ $scripts .= \sprintf(
+ 'str_start: {text:\'%s\',icon: \'',
+ $this->lang['strstart']
+ ) . $this->view->icon('Execute') . "'},\n";
+ $scripts .= \sprintf(
+ 'str_stop: {text:\'%s\',icon: \'',
+ $this->lang['strstop']
+ ) . $this->view->icon('Stop') . "'},\n";
$scripts .= "load_icon: '" . $this->view->icon('Loading') . "',\n";
- $scripts .= "server:'{$_REQUEST['server']}',\n";
- $scripts .= "dbname:'{$_REQUEST['database']}',\n";
- $scripts .= "action:'refresh_{$this->action}',\n";
+ $scripts .= \sprintf(
+ 'server:\'%s\',
+',
+ $_REQUEST['server']
+ );
+ $scripts .= \sprintf(
+ 'dbname:\'%s\',
+',
+ $_REQUEST['database']
+ );
+ $scripts .= \sprintf(
+ 'action:\'refresh_%s\',
+',
+ $this->action
+ );
$scripts .= "errmsg: '" . \str_replace("'", "\\'", $this->lang['strconnectionfail']) . "'\n";
$scripts .= "};\n";
$scripts .= '</script>' . \PHP_EOL;
@@ -186,7 +210,10 @@ class DatabaseController extends BaseController
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;
+ \sprintf(
+ '" size="32" maxlength="%s" />',
+ $data->_maxNameLen
+ ) . \PHP_EOL;
// Output list of filters. This is complex due to all the 'has' and 'conf' feature possibilities
echo '<select name="filter">' . \PHP_EOL;
@@ -213,7 +240,10 @@ class DatabaseController extends BaseController
}
echo '</select>' . \PHP_EOL;
- echo "<input type=\"submit\" value=\"{$this->lang['strfind']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strfind']
+ ) . \PHP_EOL;
echo $this->view->form;
echo '<input type="hidden" name="action" value="find" /></p>' . \PHP_EOL;
echo '<input type="hidden" name="confirm" value="true" /></p>' . \PHP_EOL;
@@ -268,7 +298,10 @@ class DatabaseController extends BaseController
echo '<p>', $rs->recordCount(), ' ', $this->lang['strobjects'], '</p>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnoobjects']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnoobjects']
+ ) . \PHP_EOL;
}
}
@@ -343,7 +376,12 @@ class DatabaseController extends BaseController
$this->printMsg($msg);
if (0 === \mb_strlen($msg)) {
- echo '<br /><a id="control" href=""><img src="' . $this->view->icon('Refresh') . "\" alt=\"{$this->lang['strrefresh']}\" title=\"{$this->lang['strrefresh']}\"/>&nbsp;{$this->lang['strrefresh']}</a>";
+ echo '<br /><a id="control" href=""><img src="' . $this->view->icon('Refresh') . \sprintf(
+ '" alt="%s" title="%s"/>&nbsp;%s</a>',
+ $this->lang['strrefresh'],
+ $this->lang['strrefresh'],
+ $this->lang['strrefresh']
+ );
}
echo '<div id="data_block">';
@@ -357,7 +395,10 @@ class DatabaseController extends BaseController
// Display prepared transactions
if ($data->hasPreparedXacts()) {
- echo "<h3>{$this->lang['strpreparedxacts']}</h3>" . \PHP_EOL;
+ echo \sprintf(
+ '<h3>%s</h3>',
+ $this->lang['strpreparedxacts']
+ ) . \PHP_EOL;
$prep_xacts = $data->getPreparedXacts($_REQUEST['database']);
$columns = [
@@ -385,7 +426,10 @@ class DatabaseController extends BaseController
}
// Fetch the processes from the database
- echo "<h3>{$this->lang['strprocesses']}</h3>" . \PHP_EOL;
+ echo \sprintf(
+ '<h3>%s</h3>',
+ $this->lang['strprocesses']
+ ) . \PHP_EOL;
$processes = $data->getProcesses($_REQUEST['database']);
$columns = [
@@ -526,7 +570,12 @@ class DatabaseController extends BaseController
$this->printTrail('database');
$this->printTabs('database', 'locks');
- echo '<br /><a id="control" href=""><img src="' . $this->view->icon('Refresh') . "\" alt=\"{$this->lang['strrefresh']}\" title=\"{$this->lang['strrefresh']}\"/>&nbsp;{$this->lang['strrefresh']}</a>";
+ echo '<br /><a id="control" href=""><img src="' . $this->view->icon('Refresh') . \sprintf(
+ '" alt="%s" title="%s"/>&nbsp;%s</a>',
+ $this->lang['strrefresh'],
+ $this->lang['strrefresh'],
+ $this->lang['strrefresh']
+ );
echo '<div id="data_block">';
$this->currentLocks();
@@ -545,9 +594,15 @@ class DatabaseController extends BaseController
$this->printTrail('database');
$this->printTabs('database', 'sql');
- echo "<p>{$this->lang['strentersql']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strentersql']
+ ) . \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 \sprintf(
+ '<p>%s<br />',
+ $this->lang['strsql']
+ ) . \PHP_EOL;
echo '<textarea style="width:95%;" rows="15" cols="50" name="query" id="query">',
\htmlspecialchars($_SESSION['sqlquery']), '</textarea></p>' . \PHP_EOL;
@@ -557,15 +612,30 @@ class DatabaseController extends BaseController
$max_size = $this->misc->inisizeToBytes(\ini_get('upload_max_filesize'));
if (\is_float($max_size) && 0 < $max_size) {
- echo "<p><input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"{$max_size}\" />" . \PHP_EOL;
- echo "<label for=\"script\">{$this->lang['struploadscript']}</label> <input id=\"script\" name=\"script\" type=\"file\" /></p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p><input type="hidden" name="MAX_FILE_SIZE" value="%s" />',
+ $max_size
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<label for="script">%s</label> <input id="script" name="script" type="file" /></p>',
+ $this->lang['struploadscript']
+ ) . \PHP_EOL;
}
}
- echo '<p><input type="checkbox" id="paginate" name="paginate"', (isset($_REQUEST['paginate']) ? ' checked="checked"' : ''), " /><label for=\"paginate\">{$this->lang['strpaginate']}</label></p>" . \PHP_EOL;
- echo "<p><input type=\"submit\" name=\"execute\" accesskey=\"r\" value=\"{$this->lang['strexecute']}\" />" . \PHP_EOL;
+ echo '<p><input type="checkbox" id="paginate" name="paginate"', (isset($_REQUEST['paginate']) ? ' checked="checked"' : ''), \sprintf(
+ ' /><label for="paginate">%s</label></p>',
+ $this->lang['strpaginate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<p><input type="submit" name="execute" accesskey="r" value="%s" />',
+ $this->lang['strexecute']
+ ) . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"reset\" accesskey=\"q\" value=\"{$this->lang['strreset']}\" /></p>" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="reset" accesskey="q" value="%s" /></p>',
+ $this->lang['strreset']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
// Default focus
@@ -587,13 +657,21 @@ class DatabaseController extends BaseController
private function _highlight($string, $term)
{
- return \str_replace($term, "<b>{$term}</b>", $string);
+ return \str_replace($term, \sprintf(
+ '<b>%s</b>',
+ $term
+ ), $string);
}
private function _printTypeOption(string $curr)
{
$filter = $_REQUEST['filter'];
- $optionhtml = \sprintf('%s<option value="%s" %s>', "\t", $curr, ($curr === $filter) ? ' selected="selected"' : '');
+ $optionhtml = \sprintf(
+ '%s<option value="%s" %s>',
+ "\t",
+ $curr,
+ ($curr === $filter) ? ' selected="selected"' : ''
+ );
$optionhtml .= $this->_translatedType($curr);
$optionhtml .= '</option>' . \PHP_EOL;
@@ -643,7 +721,10 @@ class DatabaseController extends BaseController
switch ($curr) {
case 'SCHEMA':
$destination = $this->container->getDestinationWithLastTab('schema');
- echo '<li><a href="' . \containerInstance()->subFolder . "{$destination}";
+ echo '<li><a href="' . \containerInstance()->subFolder . \sprintf(
+ '%s',
+ $destination
+ );
echo $this->misc->printVal($rs->fields['name']), '">';
echo $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']);
echo '</a></li>' . \PHP_EOL;
@@ -651,33 +732,63 @@ class DatabaseController extends BaseController
break;
case 'TABLE':
echo '<li>';
- echo "<a href=\"tables?subject=schema&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo \sprintf(
+ '<a href="tables?subject=schema&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
$destination = $this->container->getDestinationWithLastTab('table');
- echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&amp;table=',
+ echo '<a href="' . \containerInstance()->subFolder . \sprintf(
+ '%s?%s&schema=',
+ $destination,
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '&amp;table=',
\urlencode($rs->fields['name']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
break;
case 'VIEW':
echo '<li>';
- echo "<a href=\"views?subject=schema&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo \sprintf(
+ '<a href="views?subject=schema&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
$destination = $this->container->getDestinationWithLastTab('view');
- echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&amp;view=',
+ echo '<a href="' . \containerInstance()->subFolder . \sprintf(
+ '%s?%s&schema=',
+ $destination,
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '&amp;view=',
\urlencode($rs->fields['name']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
break;
case 'SEQUENCE':
echo '<li>';
- echo "<a href=\"sequences?subject=schema&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
- echo "<a href=\"sequences?subject=sequence&amp;action=properties&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']),
+ echo \sprintf(
+ '<a href="sequences?subject=schema&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo \sprintf(
+ '<a href="sequences?subject=sequence&amp;action=properties&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']),
'&amp;sequence=', \urlencode($rs->fields['name']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
break;
case 'COLUMNTABLE':
echo '<li>';
$destination = $this->container->getDestinationWithLastTab('schema');
- 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']), '&amp;schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.';
- echo "<a href=\"colproperties?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&amp;table=',
+ echo '<a href="' . \containerInstance()->subFolder . \sprintf(
+ '%s?%s&schema=',
+ $destination,
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo \sprintf(
+ '<a href="tblproperties?subject=table&%s&table=',
+ $this->misc->href
+ ), \urlencode($rs->fields['relname']), '&amp;schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.';
+ echo \sprintf(
+ '<a href="colproperties?%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '&amp;table=',
\urlencode($rs->fields['relname']), '&amp;column=', \urlencode($rs->fields['name']), '">',
$this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
@@ -685,9 +796,19 @@ class DatabaseController extends BaseController
case 'COLUMNVIEW':
echo '<li>';
$destination = $this->container->getDestinationWithLastTab('schema');
- 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']), '&amp;schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.';
- echo "<a href=\"colproperties?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&amp;view=',
+ echo '<a href="' . \containerInstance()->subFolder . \sprintf(
+ '%s?%s&schema=',
+ $destination,
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo \sprintf(
+ '<a href="viewproperties?subject=view&%s&view=',
+ $this->misc->href
+ ), \urlencode($rs->fields['relname']), '&amp;schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.';
+ echo \sprintf(
+ '<a href="colproperties?%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '&amp;view=',
\urlencode($rs->fields['relname']), '&amp;column=', \urlencode($rs->fields['name']), '">',
$this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
@@ -695,111 +816,218 @@ class DatabaseController extends BaseController
case 'INDEX':
echo '<li>';
$destination = $this->container->getDestinationWithLastTab('schema');
- echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo '<a href="' . \containerInstance()->subFolder . \sprintf(
+ '%s?%s&schema=',
+ $destination,
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
$destination = $this->container->getDestinationWithLastTab('table');
- echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&table=", \urlencode($rs->fields['relname']), '&amp;schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.';
- echo "<a href=\"indexes?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&amp;table=', \urlencode($rs->fields['relname']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
+ echo '<a href="' . \containerInstance()->subFolder . \sprintf(
+ '%s?%s&table=',
+ $destination,
+ $this->misc->href
+ ), \urlencode($rs->fields['relname']), '&amp;schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.';
+ echo \sprintf(
+ '<a href="indexes?%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '&amp;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="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo '<a href="' . \containerInstance()->subFolder . \sprintf(
+ '%s?%s&schema=',
+ $destination,
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
$destination = $this->container->getDestinationWithLastTab('table');
- echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&table=", \urlencode($rs->fields['relname']), '&amp;schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.';
- echo "<a href=\"constraints?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&amp;table=',
+ echo '<a href="' . \containerInstance()->subFolder . \sprintf(
+ '%s?%s&table=',
+ $destination,
+ $this->misc->href
+ ), \urlencode($rs->fields['relname']), '&amp;schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.';
+ echo \sprintf(
+ '<a href="constraints?%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '&amp;table=',
\urlencode($rs->fields['relname']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
break;
case 'CONSTRAINTDOMAIN':
echo '<li>';
- echo "<a href=\"domains?subject=schema&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
- echo "<a href=\"domains?action=properties&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&amp;domain=', \urlencode($rs->fields['relname']), '">',
+ echo \sprintf(
+ '<a href="domains?subject=schema&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo \sprintf(
+ '<a href="domains?action=properties&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '&amp;domain=', \urlencode($rs->fields['relname']), '">',
$this->misc->printVal($rs->fields['relname']), '.', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
break;
case 'TRIGGER':
echo '<li>';
$destination = $this->container->getDestinationWithLastTab('schema');
- echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo '<a href="' . \containerInstance()->subFolder . \sprintf(
+ '%s?%s&schema=',
+ $destination,
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
$destination = $this->container->getDestinationWithLastTab('table');
- echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&table=", \urlencode($rs->fields['relname']), '&amp;schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.';
- echo "<a href=\"triggers?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&amp;table=', \urlencode($rs->fields['relname']), '">',
+ echo '<a href="' . \containerInstance()->subFolder . \sprintf(
+ '%s?%s&table=',
+ $destination,
+ $this->misc->href
+ ), \urlencode($rs->fields['relname']), '&amp;schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.';
+ echo \sprintf(
+ '<a href="triggers?%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '&amp;table=', \urlencode($rs->fields['relname']), '">',
$this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
break;
case 'RULETABLE':
echo '<li>';
$destination = $this->container->getDestinationWithLastTab('schema');
- echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo '<a href="' . \containerInstance()->subFolder . \sprintf(
+ '%s?%s&schema=',
+ $destination,
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
$destination = $this->container->getDestinationWithLastTab('table');
- echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&table=", \urlencode($rs->fields['relname']), '&amp;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']), '&amp;reltype=table&amp;table=',
+ echo '<a href="' . \containerInstance()->subFolder . \sprintf(
+ '%s?%s&table=',
+ $destination,
+ $this->misc->href
+ ), \urlencode($rs->fields['relname']), '&amp;schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.';
+ echo \sprintf(
+ '<a href="rules?subject=table&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '&amp;reltype=table&amp;table=',
\urlencode($rs->fields['relname']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
break;
case 'RULEVIEW':
echo '<li>';
$destination = $this->container->getDestinationWithLastTab('schema');
- echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo '<a href="' . \containerInstance()->subFolder . \sprintf(
+ '%s?%s&schema=',
+ $destination,
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
$destination = $this->container->getDestinationWithLastTab('view');
- echo '<a href="' . \containerInstance()->subFolder . "{$destination}?{$this->misc->href}&view=", \urlencode($rs->fields['relname']), '&amp;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']), '&amp;reltype=view&amp;view=',
+ echo '<a href="' . \containerInstance()->subFolder . \sprintf(
+ '%s?%s&view=',
+ $destination,
+ $this->misc->href
+ ), \urlencode($rs->fields['relname']), '&amp;schema=', \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['relname']), '</a>.';
+ echo \sprintf(
+ '<a href="rules?subject=view&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '&amp;reltype=view&amp;view=',
\urlencode($rs->fields['relname']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
break;
case 'FUNCTION':
echo '<li>';
- echo "<a href=\"functions?subject=schema&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
- echo "<a href=\"functions?action=properties&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&amp;function=',
+ echo \sprintf(
+ '<a href="functions?subject=schema&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo \sprintf(
+ '<a href="functions?action=properties&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '&amp;function=',
\urlencode($rs->fields['name']), '&amp;function_oid=', \urlencode($rs->fields['oid']), '">',
$this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
break;
case 'TYPE':
echo '<li>';
- echo "<a href=\"types?subject=schema&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
- echo "<a href=\"types?action=properties&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&amp;type=',
+ echo \sprintf(
+ '<a href="types?subject=schema&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo \sprintf(
+ '<a href="types?action=properties&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '&amp;type=',
\urlencode($rs->fields['name']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
break;
case 'DOMAIN':
echo '<li>';
- echo "<a href=\"domains?subject=schema&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
- echo "<a href=\"domains?action=properties&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&amp;domain=',
+ echo \sprintf(
+ '<a href="domains?subject=schema&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo \sprintf(
+ '<a href="domains?action=properties&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '&amp;domain=',
\urlencode($rs->fields['name']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
break;
case 'OPERATOR':
echo '<li>';
- echo "<a href=\"operators?subject=schema&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
- echo "<a href=\"operators?action=properties&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '&amp;operator=',
+ echo \sprintf(
+ '<a href="operators?subject=schema&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo \sprintf(
+ '<a href="operators?action=properties&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '&amp;operator=',
\urlencode($rs->fields['name']), '&amp;operator_oid=', \urlencode($rs->fields['oid']), '">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
break;
case 'CONVERSION':
echo '<li>';
- echo "<a href=\"conversions?subject=schema&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
- echo "<a href=\"conversions?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']),
+ echo \sprintf(
+ '<a href="conversions?subject=schema&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo \sprintf(
+ '<a href="conversions?%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']),
'">', $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
break;
case 'LANGUAGE':
- echo "<li><a href=\"languages?{$this->misc->href}\">", $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
+ echo \sprintf(
+ '<li><a href="languages?%s">',
+ $this->misc->href
+ ), $this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
break;
case 'AGGREGATE':
echo '<li>';
- echo "<a href=\"aggregates?subject=schema&{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
- echo "<a href=\"aggregates?{$this->misc->href}&schema=", \urlencode($rs->fields['schemaname']), '">',
+ echo \sprintf(
+ '<a href="aggregates?subject=schema&%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo \sprintf(
+ '<a href="aggregates?%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">',
$this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
break;
case 'OPCLASS':
echo '<li>';
$destination = $this->container->getDestinationWithLastTab('schema');
- 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']), '">',
+ echo '<a href="' . \containerInstance()->subFolder . \sprintf(
+ '%s?%s&schema=',
+ $destination,
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">', $this->misc->printVal($rs->fields['schemaname']), '</a>.';
+ echo \sprintf(
+ '<a href="opclasses?%s&schema=',
+ $this->misc->href
+ ), \urlencode($rs->fields['schemaname']), '">',
$this->_highlight($this->misc->printVal($rs->fields['name']), $_REQUEST['term']), '</a></li>' . \PHP_EOL;
break;
diff --git a/src/controllers/DataexportController.php b/src/controllers/DataexportController.php
index fa079546..9e27c729 100644
--- a/src/controllers/DataexportController.php
+++ b/src/controllers/DataexportController.php
@@ -55,7 +55,7 @@ class DataexportController extends BaseController
// instead of custom dump code
if (!$forcemimic && $this->misc->isDumpEnabled() && ('copy' === $_REQUEST['d_format'] || 'sql' === $_REQUEST['d_format'])) {
//$this->prtrace('DUMP ENABLED, d_format is', $_REQUEST['d_format']);
- $dbexport_controller = new \PHPPgAdmin\Controller\DbexportController($this->getContainer());
+ $dbexport_controller = new DbexportController($this->getContainer());
return $dbexport_controller->render();
}
@@ -68,7 +68,7 @@ class DataexportController extends BaseController
// Check to see if they have pg_dump set up and if they do, use that
// instead of custom dump code
if (!$forcemimic && $this->misc->isDumpEnabled()) {
- $dbexport_controller = new \PHPPgAdmin\Controller\DbexportController($this->getContainer());
+ $dbexport_controller = new DbexportController($this->getContainer());
return $dbexport_controller->render();
}
@@ -79,7 +79,7 @@ class DataexportController extends BaseController
// Check to see if they have pg_dump set up and if they do, use that
// instead of custom dump code
if (!$forcemimic && $this->misc->isDumpEnabled()) {
- $dbexport_controller = new \PHPPgAdmin\Controller\DbexportController($this->getContainer());
+ $dbexport_controller = new DbexportController($this->getContainer());
return $dbexport_controller->render();
}
@@ -111,29 +111,48 @@ class DataexportController extends BaseController
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;
+ echo \sprintf(
+ '<tr><th class="data">%s:</th><td><select name="d_format">',
+ $this->lang['strformat']
+ ) . \PHP_EOL;
// COPY and SQL require a table
if (isset($_REQUEST['table'])) {
echo '<option value="copy">COPY</option>' . \PHP_EOL;
echo '<option value="sql">SQL</option>' . \PHP_EOL;
}
echo '<option value="csv">CSV</option>' . \PHP_EOL;
- echo "<option value=\"tab\">{$this->lang['strtabbed']}</option>" . \PHP_EOL;
+ echo \sprintf(
+ '<option value="tab">%s</option>',
+ $this->lang['strtabbed']
+ ) . \PHP_EOL;
echo '<option value="html">XHTML</option>' . \PHP_EOL;
echo '<option value="xml">XML</option>' . \PHP_EOL;
echo '</select></td></tr>';
echo '</table>' . \PHP_EOL;
- echo "<h3>{$this->lang['stroptions']}</h3>" . \PHP_EOL;
- echo "<p><input type=\"radio\" id=\"output1\" name=\"output\" value=\"show\" checked=\"checked\" /><label for=\"output1\">{$this->lang['strshow']}</label>" . \PHP_EOL;
- echo "<br/><input type=\"radio\" id=\"output2\" name=\"output\" value=\"download\" /><label for=\"output2\">{$this->lang['strdownload']}</label></p>" . \PHP_EOL;
+ echo \sprintf(
+ '<h3>%s</h3>',
+ $this->lang['stroptions']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<p><input type="radio" id="output1" name="output" value="show" checked="checked" /><label for="output1">%s</label>',
+ $this->lang['strshow']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<br/><input type="radio" id="output2" name="output" value="download" /><label for="output2">%s</label></p>',
+ $this->lang['strdownload']
+ ) . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="export" />' . \PHP_EOL;
echo '<input type="hidden" name="what" value="dataonly" />' . \PHP_EOL;
if (isset($_REQUEST['table'])) {
echo '<input type="hidden" name="subject" value="table" />' . \PHP_EOL;
- echo \sprintf('<input type="hidden" name="table" value="%s" />%s', \htmlspecialchars($_REQUEST['table']), \PHP_EOL);
+ echo \sprintf(
+ '<input type="hidden" name="table" value="%s" />%s',
+ \htmlspecialchars($_REQUEST['table']),
+ \PHP_EOL
+ );
} else {
echo '<input type="hidden" name="subject" value="table" />' . \PHP_EOL;
}
@@ -145,7 +164,10 @@ class DataexportController extends BaseController
echo '<input type="hidden" name="search_path" value="', \htmlspecialchars($_REQUEST['search_path']), '" />' . \PHP_EOL;
}
echo $this->view->form;
- echo "<input type=\"submit\" value=\"{$this->lang['strexport']}\" /></p>" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" value="%s" /></p>',
+ $this->lang['strexport']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
$this->printFooter();
@@ -292,7 +314,10 @@ class DataexportController extends BaseController
private function _mimicCopy($data, $object, $oids, $rs): void
{
$data->fieldClean($object);
- echo "COPY \"{$_REQUEST['table']}\"";
+ echo \sprintf(
+ 'COPY "%s"',
+ $_REQUEST['table']
+ );
if ($oids) {
echo ' WITH OIDS';
@@ -386,7 +411,11 @@ class DataexportController extends BaseController
$finfo = $rs->fetchField($j++);
$name = \htmlspecialchars($finfo->name);
$type = \htmlspecialchars($finfo->type);
- echo "\t\t<column name=\"{$name}\" type=\"{$type}\" />" . \PHP_EOL;
+ echo \sprintf(
+ ' <column name="%s" type="%s" />',
+ $name,
+ $type
+ ) . \PHP_EOL;
}
echo "\t</header>" . \PHP_EOL;
}
@@ -404,7 +433,13 @@ class DataexportController extends BaseController
$v = \htmlspecialchars($v);
}
- echo "\t\t\t<column name=\"{$name}\"", (null === $v ? ' null="null"' : ''), ">{$v}</column>" . \PHP_EOL;
+ echo \sprintf(
+ ' <column name="%s"',
+ $name
+ ), (null === $v ? ' null="null"' : ''), \sprintf(
+ '>%s</column>',
+ $v
+ ) . \PHP_EOL;
}
echo "\t\t</row>" . \PHP_EOL;
$rs->moveNext();
@@ -419,7 +454,10 @@ class DataexportController extends BaseController
$values = '';
while (!$rs->EOF) {
- echo "INSERT INTO \"{$object}\" (";
+ echo \sprintf(
+ 'INSERT INTO "%s" (',
+ $object
+ );
$first = true;
$j = 0;
@@ -432,9 +470,15 @@ class DataexportController extends BaseController
$data->fieldClean($k);
if ($first) {
- echo "\"{$k}\"";
+ echo \sprintf(
+ '"%s"',
+ $k
+ );
} else {
- echo ", \"{$k}\"";
+ echo \sprintf(
+ ', "%s"',
+ $k
+ );
}
if (null !== $v) {
@@ -449,13 +493,23 @@ class DataexportController extends BaseController
}
if ($first) {
- $values = (null === $v ? 'NULL' : "'{$v}'");
+ $values = (null === $v ? 'NULL' : \sprintf(
+ '\'%s\'',
+ $v
+ ));
$first = false;
} else {
- $values .= ', ' . ((null === $v ? 'NULL' : "'{$v}'"));
+ $values .= ', ' . ((null === $v ? 'NULL' : \sprintf(
+ '\'%s\'',
+ $v
+ )));
}
}
- echo ") VALUES ({$values});\n";
+ echo \sprintf(
+ ') VALUES (%s);
+',
+ $values
+ );
$rs->moveNext();
}
}
@@ -487,10 +541,17 @@ class DataexportController extends BaseController
}
if ($first) {
- echo "\"{$v}\"";
+ echo \sprintf(
+ '"%s"',
+ $v
+ );
$first = false;
} else {
- echo "{$sep}\"{$v}\"";
+ echo \sprintf(
+ '%s"%s"',
+ $sep,
+ $v
+ );
}
}
echo "\r\n";
@@ -505,10 +566,20 @@ class DataexportController extends BaseController
}
if ($first) {
- echo (null === $v) ? '"\\N"' : "\"{$v}\"";
+ echo (null === $v) ? '"\\N"' : \sprintf(
+ '"%s"',
+ $v
+ );
$first = false;
} else {
- echo null === $v ? "{$sep}\"\\N\"" : "{$sep}\"{$v}\"";
+ echo null === $v ? \sprintf(
+ '%s"\N"',
+ $sep
+ ) : \sprintf(
+ '%s"%s"',
+ $sep,
+ $v
+ );
}
}
echo "\r\n";
diff --git a/src/controllers/DbexportController.php b/src/controllers/DbexportController.php
index 1991f951..4c451dfc 100644
--- a/src/controllers/DbexportController.php
+++ b/src/controllers/DbexportController.php
@@ -131,7 +131,10 @@ class DbexportController extends BaseController
switch ($subject) {
case 'schema':
// This currently works for 8.2+ (due to the orthoganl -t -n issue introduced then)
- $cmd .= ' -n ' . $this->misc->escapeShellArg("\"{$f_schema}\"");
+ $cmd .= ' -n ' . $this->misc->escapeShellArg(\sprintf(
+ '"%s"',
+ $f_schema
+ ));
break;
case 'table':
@@ -144,7 +147,11 @@ class DbexportController extends BaseController
// Starting in 8.2, -n and -t are orthagonal, so we now schema qualify
// the table name in the -t argument and quote both identifiers
if (8.2 <= ((float) $version[1])) {
- $cmd .= ' -t ' . $this->misc->escapeShellArg("\"{$f_schema}\".\"{$f_object}\"");
+ $cmd .= ' -t ' . $this->misc->escapeShellArg(\sprintf(
+ '"%s"."%s"',
+ $f_schema,
+ $f_object
+ ));
} else {
// If we are 7.4 or higher, assume they are using 7.4 pg_dump and
// set dump schema as well. Also, mixed case dumping has been fixed
diff --git a/src/controllers/DisplayController.php b/src/controllers/DisplayController.php
index 88a6d921..2ab7e6c2 100644
--- a/src/controllers/DisplayController.php
+++ b/src/controllers/DisplayController.php
@@ -6,12 +6,17 @@
namespace PHPPgAdmin\Controller;
+use ADORecordSet;
+use Exception;
+use PHPPgAdmin\ADOdbException;
+use PHPPgAdmin\Traits\InsertEditRowTrait;
+
/**
* Base controller class.
*/
class DisplayController extends BaseController
{
- use \PHPPgAdmin\Traits\InsertEditRowTrait;
+ use InsertEditRowTrait;
/**
* Default method to render the controller according to the action parameter.
@@ -131,10 +136,17 @@ class DisplayController extends BaseController
$f_schema = $_REQUEST['f_schema'];
$f_table = $_REQUEST['f_table'];
- $_REQUEST['query'] = "SELECT \"{$object}\",
- count(*) AS \"count\"
- FROM \"{$f_schema}\".\"{$f_table}\"
- GROUP BY \"{$object}\" ORDER BY \"{$object}\"";
+ $_REQUEST['query'] = \sprintf(
+ 'SELECT "%s",
+ count(*) AS "count"
+ FROM "%s"."%s"
+ GROUP BY "%s" ORDER BY "%s"',
+ $object,
+ $f_schema,
+ $f_table,
+ $object,
+ $object
+ );
} elseif ('table' === $subject && !isset($_REQUEST['query'])) {
$show = $this->getPostParam('show', []);
$values = $this->getPostParam('values', []);
@@ -200,7 +212,7 @@ class DisplayController extends BaseController
$this->conf['max_rows'],
$max_pages
);
- } catch (\PHPPgAdmin\ADOdbException $e) {
+ } catch (ADOdbException $e) {
return $this->halt($e->getMessage());
}
@@ -236,7 +248,11 @@ class DisplayController extends BaseController
$this->misc->saveScriptHistory($_REQUEST['query']);
}
- $query = $query ? $query : \sprintf('SELECT * FROM %s.%s', $_REQUEST['schema'], $object);
+ $query = $query ? $query : \sprintf(
+ 'SELECT * FROM %s.%s',
+ $_REQUEST['schema'],
+ $object
+ );
//$query = isset($_REQUEST['query'])? $_REQUEST['query'] : "select * from {$_REQUEST['schema']}.{$_REQUEST['table']};";
@@ -466,7 +482,10 @@ class DisplayController extends BaseController
public function printResultsTable($resultset, $page, $max_pages, array $_gets, $object): void
{
if (!\is_object($resultset) || 0 >= $resultset->recordCount()) {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
return;
}
@@ -486,11 +505,14 @@ class DisplayController extends BaseController
try {
// Display edit and delete actions if we have a key
$display_action_column = (0 < \count($actions['actionbuttons']) && 0 < \count($key));
- } catch (\Exception $e) {
+ } catch (Exception $e) {
$display_action_column = false;
}
- echo $display_action_column ? "<th class=\"data\">{$this->lang['stractions']}</th>" . \PHP_EOL : '';
+ echo $display_action_column ? \sprintf(
+ '<th class="data">%s</th>',
+ $this->lang['stractions']
+ ) . \PHP_EOL : '';
// we show OIDs only if we are in TABLE or SELECT type browsing
$this->printTableHeaderCells($resultset, $_gets, isset($object));
@@ -506,7 +528,10 @@ class DisplayController extends BaseController
$trclass = ('data2' === $trclass) ? 'data1' : 'data2';
$buttonclass = ('opbutton2' === $buttonclass) ? 'opbutton1' : 'opbutton2';
- echo \sprintf('<tr class="%s">', $trclass) . \PHP_EOL;
+ echo \sprintf(
+ '<tr class="%s">',
+ $trclass
+ ) . \PHP_EOL;
$this->_printResultsTableActionButtons($resultset, $key, $actions, $display_action_column, $buttonclass);
@@ -517,7 +542,10 @@ class DisplayController extends BaseController
}
echo '</table>' . \PHP_EOL;
- echo '<p>', $resultset->recordCount(), " {$this->lang['strrows']}</p>" . \PHP_EOL;
+ echo '<p>', $resultset->recordCount(), \sprintf(
+ ' %s</p>',
+ $this->lang['strrows']
+ ) . \PHP_EOL;
// Show page navigation
echo $paginator;
}
@@ -525,9 +553,9 @@ class DisplayController extends BaseController
/**
* Print table header cells.
*
- * @param \ADORecordSet $resultset set of results from getRow operation
- * @param array|bool $args - associative array for sort link parameters, or false if there isn't any
- * @param bool $withOid either to display OIDs or not
+ * @param ADORecordSet $resultset set of results from getRow operation
+ * @param array|bool $args - associative array for sort link parameters, or false if there isn't any
+ * @param bool $withOid either to display OIDs or not
*/
public function printTableHeaderCells(&$resultset, $args, $withOid): void
{
@@ -555,12 +583,19 @@ class DisplayController extends BaseController
$sortLink = \http_build_query($args);
- echo "<th class=\"data\"><a href=\"?{$sortLink}\">";
+ echo \sprintf(
+ '<th class="data"><a href="?%s">',
+ $sortLink
+ );
echo $this->misc->printVal($finfo->name);
if (($index + 1) === $_REQUEST['sortkey']) {
$icon = ('asc' === $_REQUEST['sortdir']) ? $this->view->icon('RaiseArgument') : $this->view->icon('LowerArgument');
- echo \sprintf('<img src="%s" alt="%s">', $icon, $_REQUEST['sortdir']);
+ echo \sprintf(
+ '<img src="%s" alt="%s">',
+ $icon,
+ $_REQUEST['sortdir']
+ );
}
echo '</a></th>' . \PHP_EOL;
}
@@ -571,9 +606,9 @@ class DisplayController extends BaseController
/**
* Print table rows.
*
- * @param \ADORecordSet $resultset The resultset
- * @param array $fkey_information The fkey information
- * @param bool $withOid either to display OIDs or not
+ * @param ADORecordSet $resultset The resultset
+ * @param array $fkey_information The fkey information
+ * @param bool $withOid either to display OIDs or not
*/
public function printTableRowCells(&$resultset, &$fkey_information, $withOid): void
{
@@ -634,9 +669,20 @@ class DisplayController extends BaseController
echo '<table>' . \PHP_EOL;
// Output table header
- echo "<tr><th class=\"data\">{$this->lang['strcolumn']}</th><th class=\"data\">{$this->lang['strtype']}</th>";
- echo "<th class=\"data\">{$this->lang['strformat']}</th>" . \PHP_EOL;
- echo "<th class=\"data\">{$this->lang['strnull']}</th><th class=\"data\">{$this->lang['strvalue']}</th></tr>";
+ echo \sprintf(
+ '<tr><th class="data">%s</th><th class="data">%s</th>',
+ $this->lang['strcolumn'],
+ $this->lang['strtype']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th>',
+ $this->lang['strformat']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data">%s</th><th class="data">%s</th></tr>',
+ $this->lang['strnull'],
+ $this->lang['strvalue']
+ );
$i = 0;
@@ -649,7 +695,10 @@ class DisplayController extends BaseController
$_REQUEST['format'][$attrs->fields['attname']] = 'VALUE';
}
- echo "<tr class=\"data{$id}\">" . \PHP_EOL;
+ echo \sprintf(
+ '<tr class="data%s">',
+ $id
+ ) . \PHP_EOL;
echo '<td style="white-space:nowrap;">', $this->misc->printVal($attrs->fields['attname']), '</td>';
echo '<td style="white-space:nowrap;">' . \PHP_EOL;
echo $this->misc->printVal($data->formatType($attrs->fields['type'], $attrs->fields['atttypmod']));
@@ -658,9 +707,15 @@ class DisplayController extends BaseController
++$elements;
echo '<td style="white-space:nowrap;">' . \PHP_EOL;
echo '<select name="format[' . \htmlspecialchars($attrs->fields['attname']), ']">' . \PHP_EOL;
- echo '<option value="VALUE"', ($_REQUEST['format'][$attrs->fields['attname']] === 'VALUE') ? ' selected="selected"' : '', ">{$this->lang['strvalue']}</option>" . \PHP_EOL;
+ echo '<option value="VALUE"', ($_REQUEST['format'][$attrs->fields['attname']] === 'VALUE') ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $this->lang['strvalue']
+ ) . \PHP_EOL;
$selected = ($_REQUEST['format'][$attrs->fields['attname']] === 'EXPRESSION') ? ' selected="selected"' : '';
- echo '<option value="EXPRESSION"' . $selected . ">{$this->lang['strexpression']}</option>" . \PHP_EOL;
+ echo '<option value="EXPRESSION"' . $selected . \sprintf(
+ '>%s</option>',
+ $this->lang['strexpression']
+ ) . \PHP_EOL;
echo "</select>\n</td>" . \PHP_EOL;
++$elements;
echo '<td style="white-space:nowrap;">';
@@ -672,14 +727,20 @@ class DisplayController extends BaseController
) {
$_REQUEST['nulls'][$attrs->fields['attname']] = 'on';
}
- echo "<label><span><input type=\"checkbox\" class=\"nullcheckbox\" name=\"nulls[{$attrs->fields['attname']}]\"",
+ echo \sprintf(
+ '<label><span><input type="checkbox" class="nullcheckbox" name="nulls[%s]"',
+ $attrs->fields['attname']
+ ),
isset($_REQUEST['nulls'][$attrs->fields['attname']]) ? ' checked="checked"' : '', ' /></span></label></td>' . \PHP_EOL;
++$elements;
} else {
echo '&nbsp;</td>';
}
- echo "<td id=\"row_att_{$attrs->fields['attnum']}\" style=\"white-space:nowrap;\">";
+ echo \sprintf(
+ '<td id="row_att_%s" style="white-space:nowrap;">',
+ $attrs->fields['attnum']
+ );
$extras = [];
@@ -692,11 +753,17 @@ class DisplayController extends BaseController
}
if ((false !== $fksprops) && isset($fksprops['byfield'][$attrs->fields['attnum']])) {
- $extras['id'] = "attr_{$attrs->fields['attnum']}";
+ $extras['id'] = \sprintf(
+ 'attr_%s',
+ $attrs->fields['attnum']
+ );
$extras['autocomplete'] = 'off';
}
- echo $data->printField("values[{$attrs->fields['attname']}]", $resultset->fields[$attrs->fields['attname']], $attrs->fields['type'], $extras);
+ echo $data->printField(\sprintf(
+ 'values[%s]',
+ $attrs->fields['attname']
+ ), $resultset->fields[$attrs->fields['attname']], $attrs->fields['type'], $extras);
echo '</td>';
++$elements;
@@ -708,9 +775,15 @@ class DisplayController extends BaseController
$error = false;
} elseif (1 !== $resultset->recordCount()) {
- echo "<p>{$this->lang['strrownotunique']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strrownotunique']
+ ) . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strinvalidparam']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strinvalidparam']
+ ) . \PHP_EOL;
}
echo '<input type="hidden" name="action" value="editrow" />' . \PHP_EOL;
@@ -720,15 +793,35 @@ class DisplayController extends BaseController
$subject = $this->getRequestParam('subject', $_REQUEST['subject'] ?? null);
$return = $this->getRequestParam('return', $_REQUEST['return'] ?? null);
- echo isset($_REQUEST['table']) ? \sprintf('<input type="hidden" name="table" value="%s" />%s', \htmlspecialchars($_REQUEST['table']), \PHP_EOL) : '';
-
- echo isset($subject) ? \sprintf('<input type="hidden" name="subject" value="%s" />%s', \htmlspecialchars($_REQUEST['subject']), \PHP_EOL) : '';
-
- echo isset($_REQUEST['query']) ? \sprintf('<input type="hidden" name="query" value="%s" />%s', \htmlspecialchars($_REQUEST['query']), \PHP_EOL) : '';
-
- echo isset($_REQUEST['count']) ? \sprintf('<input type="hidden" name="count" value="%s" />%s', \htmlspecialchars($_REQUEST['count']), \PHP_EOL) : '';
-
- echo isset($return) ? \sprintf('<input type="hidden" name="return" value="%s" />%s', \htmlspecialchars($_REQUEST['return']), \PHP_EOL) : '';
+ echo isset($_REQUEST['table']) ? \sprintf(
+ '<input type="hidden" name="table" value="%s" />%s',
+ \htmlspecialchars($_REQUEST['table']),
+ \PHP_EOL
+ ) : '';
+
+ echo isset($subject) ? \sprintf(
+ '<input type="hidden" name="subject" value="%s" />%s',
+ \htmlspecialchars($_REQUEST['subject']),
+ \PHP_EOL
+ ) : '';
+
+ echo isset($_REQUEST['query']) ? \sprintf(
+ '<input type="hidden" name="query" value="%s" />%s',
+ \htmlspecialchars($_REQUEST['query']),
+ \PHP_EOL
+ ) : '';
+
+ echo isset($_REQUEST['count']) ? \sprintf(
+ '<input type="hidden" name="count" value="%s" />%s',
+ \htmlspecialchars($_REQUEST['count']),
+ \PHP_EOL
+ ) : '';
+
+ echo isset($return) ? \sprintf(
+ '<input type="hidden" name="return" value="%s" />%s',
+ \htmlspecialchars($_REQUEST['return']),
+ \PHP_EOL
+ ) : '';
echo '<input type="hidden" name="page" value="', \htmlspecialchars($_REQUEST['page']), '" />' . \PHP_EOL;
echo '<input type="hidden" name="sortkey" value="', \htmlspecialchars($_REQUEST['sortkey']), '" />' . \PHP_EOL;
@@ -738,16 +831,28 @@ class DisplayController extends BaseController
echo '<p>';
if (!$error) {
- echo "<input type=\"submit\" name=\"save\" accesskey=\"r\" value=\"{$this->lang['strsave']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="save" accesskey="r" value="%s" />',
+ $this->lang['strsave']
+ ) . \PHP_EOL;
}
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
if (false !== $fksprops) {
- $autocomplete_string = "<input type=\"checkbox\" id=\"no_ac\" value=\"0\" /><label for=\"no_ac\">{$this->lang['strac']}</label>";
+ $autocomplete_string = \sprintf(
+ '<input type="checkbox" id="no_ac" value="0" /><label for="no_ac">%s</label>',
+ $this->lang['strac']
+ );
if ('default off' !== $this->conf['autocomplete']) {
- $autocomplete_string = "<input type=\"checkbox\" id=\"no_ac\" value=\"1\" checked=\"checked\" /><label for=\"no_ac\">{$this->lang['strac']}</label>";
+ $autocomplete_string = \sprintf(
+ '<input type="checkbox" id="no_ac" value="1" checked="checked" /><label for="no_ac">%s</label>',
+ $this->lang['strac']
+ );
}
echo $autocomplete_string . \PHP_EOL;
}
@@ -809,7 +914,10 @@ class DisplayController extends BaseController
echo $this->view->form;
if (1 === $resultset->recordCount()) {
- echo "<p>{$this->lang['strconfdeleterow']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strconfdeleterow']
+ ) . \PHP_EOL;
$fkinfo = [];
echo '<table><tr>';
@@ -822,18 +930,40 @@ class DisplayController extends BaseController
echo '<br />' . \PHP_EOL;
echo '<input type="hidden" name="action" value="delrow" />' . \PHP_EOL;
- echo "<input type=\"submit\" name=\"yes\" value=\"{$this->lang['stryes']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"no\" value=\"{$this->lang['strno']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="yes" value="%s" />',
+ $this->lang['stryes']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="no" value="%s" />',
+ $this->lang['strno']
+ ) . \PHP_EOL;
} elseif (1 !== $resultset->recordCount()) {
- echo "<p>{$this->lang['strrownotunique']}</p>" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strrownotunique']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strinvalidparam']}</p>" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strinvalidparam']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
}
if (isset($_REQUEST['table'])) {
- echo \sprintf('<input type="hidden" name="table" value="%s" />%s', \htmlspecialchars($_REQUEST['table']), \PHP_EOL);
+ echo \sprintf(
+ '<input type="hidden" name="table" value="%s" />%s',
+ \htmlspecialchars($_REQUEST['table']),
+ \PHP_EOL
+ );
}
if (isset($_REQUEST['subject'])) {
@@ -1044,7 +1174,7 @@ class DisplayController extends BaseController
return [$actions, $key];
}
- private function _printResultsTableActionButtons(\ADORecordSet $resultset, $key, $actions, bool $display_action_column, string $buttonclass): void
+ private function _printResultsTableActionButtons(ADORecordSet $resultset, $key, $actions, bool $display_action_column, string $buttonclass): void
{
if (!$display_action_column) {
return;
@@ -1062,7 +1192,10 @@ class DisplayController extends BaseController
break;
}
- $keys_array["key[{$v}]"] = $resultset->fields[$v];
+ $keys_array[\sprintf(
+ 'key[%s]',
+ $v
+ )] = $resultset->fields[$v];
}
if ($has_nulls) {
@@ -1086,7 +1219,10 @@ class DisplayController extends BaseController
$keys_array
);
}
- echo \sprintf('<td class="%s" style="white-space:nowrap">', $buttonclass);
+ echo \sprintf(
+ '<td class="%s" style="white-space:nowrap">',
+ $buttonclass
+ );
foreach ($actions['actionbuttons'] as $action) {
$this->printLink($action, true, __METHOD__);
@@ -1095,13 +1231,13 @@ class DisplayController extends BaseController
}
/**
- * @param bool[] $printvalOpts
- * @param \ADORecordSet $resultset
- * @param array $fkey_information
- * @param mixed $k
- * @param mixed $v
+ * @param bool[] $printvalOpts
+ * @param ADORecordSet $resultset
+ * @param array $fkey_information
+ * @param mixed $k
+ * @param mixed $v
*/
- private function _printFKLinks(\ADORecordSet $resultset, array $fkey_information, $k, $v, array &$printvalOpts): void
+ private function _printFKLinks(ADORecordSet $resultset, array $fkey_information, $k, $v, array &$printvalOpts): void
{
if ((null === $v) || !isset($fkey_information['byfield'][$k])) {
return;
@@ -1111,15 +1247,26 @@ class DisplayController extends BaseController
$query_params = $fkey_information['byconstr'][$conid]['url_data'];
foreach ($fkey_information['byconstr'][$conid]['fkeys'] as $p_field => $f_field) {
- $query_params .= '&amp;' . \urlencode("fkey[{$f_field}]") . '=' . \urlencode($resultset->fields[$p_field]);
+ $query_params .= '&amp;' . \urlencode(\sprintf(
+ 'fkey[%s]',
+ $f_field
+ )) . '=' . \urlencode($resultset->fields[$p_field]);
}
// $fkey_information['common_url'] is already urlencoded
$query_params .= '&amp;' . $fkey_information['common_url'];
$title = \htmlentities($fkey_information['byconstr'][$conid]['consrc'], \ENT_QUOTES, 'UTF-8');
echo '<div style="display:inline-block;">';
- echo \sprintf('<a class="fk fk_%s" href="display?%s">', \htmlentities($conid, \ENT_QUOTES, 'UTF-8'), $query_params);
- echo \sprintf('<img src="%s" style="vertical-align:middle;" alt="[fk]" title="%s" />', $this->view->icon('ForeignKey'), $title);
+ echo \sprintf(
+ '<a class="fk fk_%s" href="display?%s">',
+ \htmlentities($conid, \ENT_QUOTES, 'UTF-8'),
+ $query_params
+ );
+ echo \sprintf(
+ '<img src="%s" style="vertical-align:middle;" alt="[fk]" title="%s" />',
+ $this->view->icon('ForeignKey'),
+ $title
+ );
echo '</a>';
echo '</div>';
}
@@ -1187,19 +1334,47 @@ class DisplayController extends BaseController
$result = '<p style="text-align: center">' . \PHP_EOL;
if (1 !== $page) {
- $result .= \sprintf('<a class="pagenav" href="?%s&page=1">%s</a>%s&nbsp;', $url, $lang['strfirst'], \PHP_EOL);
- $result .= \sprintf('<a class="pagenav" href="?%s&page=%s">%s</a>%s', $url, $page - 1, $lang['strprev'], \PHP_EOL);
+ $result .= \sprintf(
+ '<a class="pagenav" href="?%s&page=1">%s</a>%s&nbsp;',
+ $url,
+ $lang['strfirst'],
+ \PHP_EOL
+ );
+ $result .= \sprintf(
+ '<a class="pagenav" href="?%s&page=%s">%s</a>%s',
+ $url,
+ $page - 1,
+ $lang['strprev'],
+ \PHP_EOL
+ );
}
[$min_page, $max_page] = $this->_getMinMaxPages($page, $pages);
for ($i = $min_page; $i <= $max_page; ++$i) {
- $result .= (($i === $page) ? $i : \sprintf('<a class="pagenav" href="display?%s&page=%s">%s</a>', $url, $i, $i)) . \PHP_EOL;
+ $result .= (($i === $page) ? $i : \sprintf(
+ '<a class="pagenav" href="display?%s&page=%s">%s</a>',
+ $url,
+ $i,
+ $i
+ )) . \PHP_EOL;
}
if ($page !== $pages) {
- $result .= \sprintf('<a class="pagenav" href="?%s&page=%s">%s</a>%s', $url, $page + 1, $lang['strnext'], \PHP_EOL);
- $result .= \sprintf('&nbsp;<a class="pagenav" href="?%s&page=%s">%s</a>%s', $url, $pages, $lang['strlast'], \PHP_EOL);
+ $result .= \sprintf(
+ '<a class="pagenav" href="?%s&page=%s">%s</a>%s',
+ $url,
+ $page + 1,
+ $lang['strnext'],
+ \PHP_EOL
+ );
+ $result .= \sprintf(
+ '&nbsp;<a class="pagenav" href="?%s&page=%s">%s</a>%s',
+ $url,
+ $pages,
+ $lang['strlast'],
+ \PHP_EOL
+ );
}
$result .= '</p>' . \PHP_EOL;
diff --git a/src/controllers/DomainsController.php b/src/controllers/DomainsController.php
index b1e4c57c..3c58fae8 100644
--- a/src/controllers/DomainsController.php
+++ b/src/controllers/DomainsController.php
@@ -121,7 +121,10 @@ class DomainsController extends BaseController
'domain' => [
'title' => $this->lang['strdomain'],
'field' => Decorator::field('domname'),
- 'url' => "domains?action=properties&amp;{$this->misc->href}&amp;",
+ 'url' => \sprintf(
+ 'domains?action=properties&amp;%s&amp;',
+ $this->misc->href
+ ),
'vars' => ['domain' => 'domname'],
],
'type' => [
@@ -286,16 +289,31 @@ class DomainsController extends BaseController
// Display domain info
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 \sprintf(
+ '<tr><th class="data left required" style="width: 70px">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($domaindata->fields['domname']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left required\">{$this->lang['strtype']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strtype']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($domaindata->fields['domtype']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\"><label for=\"domnotnull\">{$this->lang['strnotnull']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left"><label for="domnotnull">%s</label></th>',
+ $this->lang['strnotnull']
+ ) . \PHP_EOL;
echo '<td class="data1"><input type="checkbox" id="domnotnull" name="domnotnull"', (isset($_POST['domnotnull']) ? ' checked="checked"' : ''), ' /></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strdefault']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strdefault']
+ ) . \PHP_EOL;
echo '<td class="data1"><input name="domdefault" size="32" value="',
\htmlspecialchars($_POST['domdefault']), '" /></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left required\">{$this->lang['strowner']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strowner']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="domowner">';
while (!$users->EOF) {
@@ -309,11 +327,21 @@ class DomainsController extends BaseController
echo '<p><input type="hidden" name="action" value="save_alter" />' . \PHP_EOL;
echo '<input type="hidden" name="domain" value="', \htmlspecialchars($_REQUEST['domain']), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"alter\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="alter" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
}
@@ -338,10 +366,19 @@ class DomainsController extends BaseController
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;
-
- echo "<tr><td class=\"data1\"><input name=\"name\" size=\"16\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ '<tr><th class="data">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data required">%s</th></tr>',
+ $this->lang['strdefinition']
+ ) . \PHP_EOL;
+
+ echo \sprintf(
+ '<tr><td class="data1"><input name="name" size="16" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_POST['name']), '" /></td>' . \PHP_EOL;
echo '<td class="data1">(<input name="definition" size="32" value="',
@@ -351,8 +388,15 @@ class DomainsController extends BaseController
echo '<p><input type="hidden" name="action" value="save_add_check" />' . \PHP_EOL;
echo '<input type="hidden" name="domain" value="', \htmlspecialchars($_REQUEST['domain']), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"add\" value=\"{$this->lang['stradd']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="add" value="%s" />',
+ $this->lang['stradd']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
if ('' === \trim($_POST['definition'])) {
@@ -398,9 +442,18 @@ class DomainsController extends BaseController
echo '<input type="hidden" name="domain" value="', \htmlspecialchars($_REQUEST['domain']), '" />' . \PHP_EOL;
echo '<input type="hidden" name="constraint" value="', \htmlspecialchars($_REQUEST['constraint']), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<p><input type=\"checkbox\" id=\"cascade\" name=\"cascade\" /> <label for=\"cascade\">{$this->lang['strcascade']}</label></p>" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<p><input type="checkbox" id="cascade" name="cascade" /> <label for="cascade">%s</label></p>',
+ $this->lang['strcascade']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
$status = $data->dropDomainConstraint($_POST['domain'], $_POST['constraint'], isset($_POST['cascade']));
@@ -437,20 +490,38 @@ class DomainsController extends BaseController
// Display domain info
$domaindata->fields['domnotnull'] = $data->phpBool($domaindata->fields['domnotnull']);
echo '<table>' . \PHP_EOL;
- echo "<tr><th class=\"data left\" style=\"width: 70px\">{$this->lang['strname']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left" style="width: 70px">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($domaindata->fields['domname']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strtype']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strtype']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($domaindata->fields['domtype']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strnotnull']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strnotnull']
+ ) . \PHP_EOL;
echo '<td class="data1">', ($domaindata->fields['domnotnull'] ? 'NOT NULL' : ''), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strdefault']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strdefault']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($domaindata->fields['domdef']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strowner']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strowner']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($domaindata->fields['domowner']), '</td></tr>' . \PHP_EOL;
echo '</table>' . \PHP_EOL;
// Display domain constraints
- echo "<h3>{$this->lang['strconstraints']}</h3>" . \PHP_EOL;
+ echo \sprintf(
+ '<h3>%s</h3>',
+ $this->lang['strconstraints']
+ ) . \PHP_EOL;
if ($data->hasDomainConstraints()) {
$domaincons = $data->getDomainConstraints($_REQUEST['domain']);
@@ -489,7 +560,10 @@ class DomainsController extends BaseController
echo $this->printTable($domaincons, $columns, $actions, 'domains-properties', $this->lang['strnodata']);
}
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
$navlinks = [
@@ -559,14 +633,27 @@ class DomainsController extends BaseController
$this->printTrail('domain');
$this->printTitle($this->lang['strdrop'], 'pg.domain.drop');
- echo '<p>', \sprintf($this->lang['strconfdropdomain'], $this->misc->printVal($_REQUEST['domain'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropdomain'],
+ $this->misc->printVal($_REQUEST['domain'])
+ ), '</p>' . \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 \sprintf(
+ '<p><input type="checkbox" id="cascade" name="cascade" /><label for="cascade">%s</label></p>',
+ $this->lang['strcascade']
+ ) . \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;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
$status = $data->dropDomain($_POST['domain'], isset($_POST['cascade']));
@@ -608,10 +695,19 @@ class DomainsController extends BaseController
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=\"",
+ echo \sprintf(
+ '<tr><th class="data left required" style="width: 70px">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<td class="data1"><input name="domname" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_POST['domname']), '" /></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left required\">{$this->lang['strtype']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strtype']
+ ) . \PHP_EOL;
echo '<td class="data1">' . \PHP_EOL;
// Output return type list
echo '<select name="domtype">' . \PHP_EOL;
@@ -633,23 +729,39 @@ class DomainsController extends BaseController
echo '<option value="[]"', ('[]' === $_POST['domarray']) ? ' selected="selected"' : '', '>[ ]</option>' . \PHP_EOL;
echo '</select></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\"><label for=\"domnotnull\">{$this->lang['strnotnull']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left"><label for="domnotnull">%s</label></th>',
+ $this->lang['strnotnull']
+ ) . \PHP_EOL;
echo '<td class="data1"><input type="checkbox" id="domnotnull" name="domnotnull"',
(isset($_POST['domnotnull']) ? ' checked="checked"' : ''), ' /></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strdefault']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strdefault']
+ ) . \PHP_EOL;
echo '<td class="data1"><input name="domdefault" size="32" value="',
\htmlspecialchars($_POST['domdefault']), '" /></td></tr>' . \PHP_EOL;
if ($data->hasDomainConstraints()) {
- echo "<tr><th class=\"data left\">{$this->lang['strconstraints']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strconstraints']
+ ) . \PHP_EOL;
echo '<td class="data1">CHECK (<input name="domcheck" size="32" value="',
\htmlspecialchars($_POST['domcheck']), '" />)</td></tr>' . \PHP_EOL;
}
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="save_create" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
}
diff --git a/src/controllers/FulltextController.php b/src/controllers/FulltextController.php
index 0aef9014..a67b32d6 100644
--- a/src/controllers/FulltextController.php
+++ b/src/controllers/FulltextController.php
@@ -7,6 +7,7 @@
namespace PHPPgAdmin\Controller;
use PHPPgAdmin\Decorators\Decorator;
+use PHPPgAdmin\XHtml\HTMLController;
/**
* Base controller class.
@@ -149,7 +150,10 @@ class FulltextController extends BaseController
'configuration' => [
'title' => $this->lang['strftsconfig'],
'field' => Decorator::field('name'),
- 'url' => "fulltext?action=viewconfig&amp;{$this->misc->href}&amp;",
+ 'url' => \sprintf(
+ 'fulltext?action=viewconfig&amp;%s&amp;',
+ $this->misc->href
+ ),
'vars' => ['ftscfg' => 'name'],
],
'schema' => [
@@ -306,16 +310,29 @@ class FulltextController extends BaseController
$this->printTrail('ftscfg');
$this->printTitle($this->lang['strdrop'], 'pg.ftscfg.drop');
- echo '<p>', \sprintf($this->lang['strconfdropftsconfig'], $this->misc->printVal($_REQUEST['ftscfg'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropftsconfig'],
+ $this->misc->printVal($_REQUEST['ftscfg'])
+ ), '</p>' . \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 \sprintf(
+ '<p><input type="checkbox" id="cascade" name="cascade" /> <label for="cascade">%s</label></p>',
+ $this->lang['strcascade']
+ ) . \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;
echo '<input type="hidden" name="ftscfg" value="', \htmlspecialchars($_REQUEST['ftscfg']), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
$status = $data->dropFtsConfiguration($_POST['ftscfg'], isset($_POST['cascade']));
@@ -337,18 +354,31 @@ class FulltextController extends BaseController
$this->printTrail('ftscfg'); // TODO: change to smth related to dictionary
$this->printTitle($this->lang['strdrop'], 'pg.ftsdict.drop');
- echo '<p>', \sprintf($this->lang['strconfdropftsdict'], $this->misc->printVal($_REQUEST['ftsdict'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropftsdict'],
+ $this->misc->printVal($_REQUEST['ftsdict'])
+ ), '</p>' . \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 \sprintf(
+ '<p><input type="checkbox" id="cascade" name="cascade" /> <label for="cascade">%s</label></p>',
+ $this->lang['strcascade']
+ ) . \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;
echo '<input type="hidden" name="ftsdict" value="', \htmlspecialchars($_REQUEST['ftsdict']), '" />' . \PHP_EOL;
//echo "<input type=\"hidden\" name=\"ftscfg\" value=\"", htmlspecialchars($_REQUEST['ftscfg']), "\" />".PHP_EOL;
echo '<input type="hidden" name="prev_action" value="viewdicts" /></p>' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
$status = $data->dropFtsDictionary($_POST['ftsdict'], isset($_POST['cascade']));
@@ -393,12 +423,24 @@ class FulltextController extends BaseController
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;
- echo "\t\t<td class=\"data1\"><input name=\"formName\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"",
- \htmlspecialchars($_POST['formName']), "\" /></td>\n\t</tr>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data1"><input name="formName" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
+ \htmlspecialchars($_POST['formName']),
+ "\" /></td>\n\t</tr>" . \PHP_EOL;
// Template
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strftstemplate']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strftstemplate']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">";
$tpls = [];
@@ -418,11 +460,15 @@ class FulltextController extends BaseController
}
$ftscfgs->moveNext();
}
- echo \PHPPgAdmin\XHtml\HTMLController::printCombo($tpls, 'formTemplate', true, $tplsel, false);
+ echo HTMLController::printCombo($tpls, 'formTemplate', true, $tplsel, false);
echo "\n\t\t</td>\n\t</tr>" . \PHP_EOL;
// Parser
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strftsparser']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strftsparser']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">" . \PHP_EOL;
$ftsparsers_ = [];
$ftsparsel = '';
@@ -442,21 +488,32 @@ class FulltextController extends BaseController
}
$ftsparsers->moveNext();
}
- echo \PHPPgAdmin\XHtml\HTMLController::printCombo($ftsparsers_, 'formParser', true, $ftsparsel, false);
+ echo HTMLController::printCombo($ftsparsers_, 'formParser', true, $ftsparsel, false);
echo "\n\t\t</td>\n\t</tr>" . \PHP_EOL;
// Comment
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><textarea name=\"formComment\" rows=\"3\" cols=\"32\">",
- \htmlspecialchars($_POST['formComment']), "</textarea></td>\n\t</tr>" . \PHP_EOL;
+ \htmlspecialchars($_POST['formComment']),
+ "</textarea></td>\n\t</tr>" . \PHP_EOL;
echo '</table>' . \PHP_EOL;
echo '<p>' . \PHP_EOL;
echo '<input type="hidden" name="action" value="createconfig" />' . \PHP_EOL;
echo '<input type="hidden" name="database" value="', \htmlspecialchars($_REQUEST['database']), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"create\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="create" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo '</p>' . \PHP_EOL;
echo '</form>' . \PHP_EOL;
}
@@ -471,11 +528,17 @@ class FulltextController extends BaseController
$err = '';
// Check that they've given a name
if ('' === $_POST['formName']) {
- $err .= "{$this->lang['strftsconfigneedsname']}<br />";
+ $err .= \sprintf(
+ '%s<br />',
+ $this->lang['strftsconfigneedsname']
+ );
}
if (('' !== $_POST['formParser']) && ('' !== $_POST['formTemplate'])) {
- $err .= "{$this->lang['strftscantparsercopy']}<br />";
+ $err .= \sprintf(
+ '%s<br />',
+ $this->lang['strftscantparsercopy']
+ );
}
if ('' !== $err) {
@@ -535,27 +598,47 @@ class FulltextController extends BaseController
echo '<table>' . \PHP_EOL;
echo "\t<tr>" . \PHP_EOL;
- echo "\t\t<th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">";
- echo "\t\t\t<input name=\"formName\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"",
- \htmlspecialchars($_POST['formName']), '" />' . \PHP_EOL;
+ echo \sprintf(
+ ' <input name="formName" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
+ \htmlspecialchars($_POST['formName']),
+ '" />' . \PHP_EOL;
echo "\t\t</td>" . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
// Comment
echo "\t<tr>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><textarea cols=\"32\" rows=\"3\"name=\"formComment\">", \htmlspecialchars($_POST['formComment']), '</textarea></td>' . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="alterconfig" />' . \PHP_EOL;
echo '<input type="hidden" name="ftscfg" value="', \htmlspecialchars($_POST['ftscfg']), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"alter\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="alter" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
}
@@ -710,7 +793,10 @@ class FulltextController extends BaseController
$this->printTabs('fulltext', 'ftsconfigs');
$this->printMsg($msg);
- echo "<h3>{$this->lang['strftsconfigmap']}</h3>" . \PHP_EOL;
+ echo \sprintf(
+ '<h3>%s</h3>',
+ $this->lang['strftsconfigmap']
+ ) . \PHP_EOL;
$map = $data->getFtsConfigurationMap($ftscfg);
@@ -824,14 +910,32 @@ class FulltextController extends BaseController
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=\"",
- \htmlspecialchars($_POST['formName']), '" />&nbsp;',
- '<input type="checkbox" name="formIsTemplate" id="formIsTemplate"', $_POST['formIsTemplate'] ? ' checked="checked" ' : '', " />\n",
- "<label for=\"formIsTemplate\">{$this->lang['strftscreatedicttemplate']}</label></td>\n\t</tr>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data1"><input name="formName" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
+ \htmlspecialchars($_POST['formName']),
+ '" />&nbsp;',
+ '<input type="checkbox" name="formIsTemplate" id="formIsTemplate"',
+ $_POST['formIsTemplate'] ? ' checked="checked" ' : '',
+ " />\n",
+ \sprintf(
+ '<label for="formIsTemplate">%s</label></td>
+ </tr>',
+ $this->lang['strftscreatedicttemplate']
+ ) . \PHP_EOL;
// Template
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strftstemplate']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strftstemplate']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">";
$tpls = [];
$tplsel = '';
@@ -850,42 +954,70 @@ class FulltextController extends BaseController
}
$ftstpls->moveNext();
}
- echo \PHPPgAdmin\XHtml\HTMLController::printCombo($tpls, 'formTemplate', true, $tplsel, false);
+ echo HTMLController::printCombo($tpls, 'formTemplate', true, $tplsel, false);
echo "\n\t\t</td>\n\t</tr>" . \PHP_EOL;
// TODO: what about maxlengths?
// Lexize
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strftslexize']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strftslexize']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input name=\"formLexize\" size=\"32\" maxlength=\"1000\" value=\"",
- \htmlspecialchars($_POST['formLexize']), '" ', isset($_POST['formIsTemplate']) ? '' : ' disabled="disabled" ',
- "/></td>\n\t</tr>" . \PHP_EOL;
+ \htmlspecialchars($_POST['formLexize']),
+ '" ',
+ isset($_POST['formIsTemplate']) ? '' : ' disabled="disabled" ',
+ "/></td>\n\t</tr>" . \PHP_EOL;
// Init
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strftsinit']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strftsinit']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input name=\"formInit\" size=\"32\" maxlength=\"1000\" value=\"",
- \htmlspecialchars($_POST['formInit']), '"', $_POST['formIsTemplate'] ? '' : ' disabled="disabled" ',
- "/></td>\n\t</tr>" . \PHP_EOL;
+ \htmlspecialchars($_POST['formInit']),
+ '"',
+ $_POST['formIsTemplate'] ? '' : ' disabled="disabled" ',
+ "/></td>\n\t</tr>" . \PHP_EOL;
// Option
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strftsoptionsvalues']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strftsoptionsvalues']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input name=\"formOption\" size=\"32\" maxlength=\"1000\" value=\"",
- \htmlspecialchars($_POST['formOption']), "\" /></td>\n\t</tr>" . \PHP_EOL;
+ \htmlspecialchars($_POST['formOption']),
+ "\" /></td>\n\t</tr>" . \PHP_EOL;
// Comment
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><textarea name=\"formComment\" rows=\"3\" cols=\"32\">",
- \htmlspecialchars($_POST['formComment']), "</textarea></td>\n\t</tr>" . \PHP_EOL;
+ \htmlspecialchars($_POST['formComment']),
+ "</textarea></td>\n\t</tr>" . \PHP_EOL;
echo '</table>' . \PHP_EOL;
echo '<p>' . \PHP_EOL;
echo '<input type="hidden" name="action" value="createdict" />' . \PHP_EOL;
echo '<input type="hidden" name="database" value="', \htmlspecialchars($_REQUEST['database']), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"create\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="create" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo '</p>' . \PHP_EOL;
echo "</form>\n",
- "<script type=\"text/javascript\">
+ "<script type=\"text/javascript\">
function templateOpts() {
isTpl = document.getElementsByName('formIsTemplate')[0].checked;
document.getElementsByName('formTemplate')[0].disabled = isTpl;
@@ -970,16 +1102,26 @@ class FulltextController extends BaseController
echo '<table>' . \PHP_EOL;
echo "\t<tr>" . \PHP_EOL;
- echo "\t\t<th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">";
- echo "\t\t\t<input name=\"formName\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"",
- \htmlspecialchars($_POST['formName']), '" />' . \PHP_EOL;
+ echo \sprintf(
+ ' <input name="formName" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
+ \htmlspecialchars($_POST['formName']),
+ '" />' . \PHP_EOL;
echo "\t\t</td>" . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
// Comment
echo "\t<tr>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><textarea cols=\"32\" rows=\"3\"name=\"formComment\">", \htmlspecialchars($_POST['formComment']), '</textarea></td>' . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
echo '</table>' . \PHP_EOL;
@@ -987,11 +1129,21 @@ class FulltextController extends BaseController
echo '<input type="hidden" name="ftsdict" value="', \htmlspecialchars($_POST['ftsdict']), '" />' . \PHP_EOL;
echo '<input type="hidden" name="prev_action" value="viewdicts" /></p>' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"alter\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="alter" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
}
@@ -1042,20 +1194,37 @@ class FulltextController extends BaseController
if (isset($_REQUEST['ma'])) {
foreach ($_REQUEST['ma'] as $v) {
$a = \unserialize(\htmlspecialchars_decode($v, \ENT_QUOTES));
- echo '<p>', \sprintf($this->lang['strconfdropftsmapping'], $this->misc->printVal($a['mapping']), $this->misc->printVal($_REQUEST['ftscfg'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropftsmapping'],
+ $this->misc->printVal($a['mapping']),
+ $this->misc->printVal($_REQUEST['ftscfg'])
+ ), '</p>' . \PHP_EOL;
\printf('<input type="hidden" name="mapping[]" value="%s" />', \htmlspecialchars($a['mapping']));
}
} else {
- echo '<p>', \sprintf($this->lang['strconfdropftsmapping'], $this->misc->printVal($_REQUEST['mapping']), $this->misc->printVal($_REQUEST['ftscfg'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropftsmapping'],
+ $this->misc->printVal($_REQUEST['mapping']),
+ $this->misc->printVal($_REQUEST['ftscfg'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="mapping" value="', \htmlspecialchars($_REQUEST['mapping']), '" />' . \PHP_EOL;
}
- echo "<input type=\"hidden\" name=\"ftscfg\" value=\"{$_REQUEST['ftscfg']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="hidden" name="ftscfg" value="%s" />',
+ $_REQUEST['ftscfg']
+ ) . \PHP_EOL;
echo '<input type="hidden" name="action" value="dropmapping" />' . \PHP_EOL;
echo '<input type="hidden" name="prev_action" value="viewconfig" /></p>' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
// Case of multiaction drop
@@ -1100,7 +1269,10 @@ class FulltextController extends BaseController
echo '<table>' . \PHP_EOL;
echo "\t<tr>" . \PHP_EOL;
- echo "\t\t<th class=\"data left required\">{$this->lang['strftsmapping']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data left required">%s</th>',
+ $this->lang['strftsmapping']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">";
$ma_mappings = [];
@@ -1126,18 +1298,26 @@ class FulltextController extends BaseController
// Dictionary
echo "\t<tr>" . \PHP_EOL;
- echo "\t\t<th class=\"data left required\">{$this->lang['strftsdict']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data left required">%s</th>',
+ $this->lang['strftsdict']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">";
echo "\t\t\t<select name=\"formDictionary\">" . \PHP_EOL;
while (!$ftsdicts->EOF) {
$ftsdict = \htmlspecialchars($ftsdicts->fields['name']);
- echo "\t\t\t\t<option value=\"{$ftsdict}\"",
- (
- $ftsdict === $_POST['formDictionary']
- || $ftsdict === $mapping->fields['dictionaries']
- || $ftsdict === $ma_mappings[0]->fields['dictionaries']
- ) ? ' selected="selected"' : '', ">{$ftsdict}</option>" . \PHP_EOL;
+ echo \sprintf(
+ ' <option value="%s"',
+ $ftsdict
+ ),
+ ($ftsdict === $_POST['formDictionary']
+ || $ftsdict === $mapping->fields['dictionaries']
+ || $ftsdict === $ma_mappings[0]->fields['dictionaries']) ? ' selected="selected"' : '',
+ \sprintf(
+ '>%s</option>',
+ $ftsdict
+ ) . \PHP_EOL;
$ftsdicts->moveNext();
}
@@ -1150,11 +1330,21 @@ class FulltextController extends BaseController
echo '<input type="hidden" name="prev_action" value="viewconfig" /></p>' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"alter\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="alter" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strftsnodictionaries']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strftsnodictionaries']
+ ) . \PHP_EOL;
}
}
@@ -1202,15 +1392,30 @@ class FulltextController extends BaseController
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;
+ echo \sprintf(
+ ' <th class="data left required">%s</th>',
+ $this->lang['strftsmapping']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">";
echo "\t\t\t<select name=\"formMapping\">" . \PHP_EOL;
while (!$mappings->EOF) {
$mapping = \htmlspecialchars($mappings->fields['name']);
$mapping_desc = \htmlspecialchars($mappings->fields['description']);
- echo "\t\t\t\t<option value=\"{$mapping}\"",
- $mapping === $_POST['formMapping'] ? ' selected="selected"' : '', ">{$mapping}", $mapping_desc ? " - {$mapping_desc}" : '', '</option>' . \PHP_EOL;
+ echo \sprintf(
+ ' <option value="%s"',
+ $mapping
+ ),
+ $mapping === $_POST['formMapping'] ? ' selected="selected"' : '',
+ \sprintf(
+ '>%s',
+ $mapping
+ ),
+ $mapping_desc ? \sprintf(
+ ' - %s',
+ $mapping_desc
+ ) : '',
+ '</option>' . \PHP_EOL;
$mappings->moveNext();
}
echo "\t\t</td>" . \PHP_EOL;
@@ -1218,14 +1423,24 @@ class FulltextController extends BaseController
// Dictionary
echo "\t<tr>" . \PHP_EOL;
- echo "\t\t<th class=\"data left required\">{$this->lang['strftsdict']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data left required">%s</th>',
+ $this->lang['strftsdict']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">";
echo "\t\t\t<select name=\"formDictionary\">" . \PHP_EOL;
while (!$ftsdicts->EOF) {
$ftsdict = \htmlspecialchars($ftsdicts->fields['name']);
- echo "\t\t\t\t<option value=\"{$ftsdict}\"",
- $ftsdict === $_POST['formDictionary'] ? ' selected="selected"' : '', ">{$ftsdict}</option>" . \PHP_EOL;
+ echo \sprintf(
+ ' <option value="%s"',
+ $ftsdict
+ ),
+ $ftsdict === $_POST['formDictionary'] ? ' selected="selected"' : '',
+ \sprintf(
+ '>%s</option>',
+ $ftsdict
+ ) . \PHP_EOL;
$ftsdicts->moveNext();
}
@@ -1237,11 +1452,21 @@ class FulltextController extends BaseController
echo '<input type="hidden" name="ftscfg" value="', \htmlspecialchars($_POST['ftscfg']), '" />' . \PHP_EOL;
echo '<input type="hidden" name="prev_action" value="viewconfig" /></p>' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"add\" value=\"{$this->lang['stradd']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="add" value="%s" />',
+ $this->lang['stradd']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strftsnodictionaries']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strftsnodictionaries']
+ ) . \PHP_EOL;
}
}
diff --git a/src/controllers/FunctionsController.php b/src/controllers/FunctionsController.php
index 0d8c17d4..78d8e4b1 100644
--- a/src/controllers/FunctionsController.php
+++ b/src/controllers/FunctionsController.php
@@ -6,6 +6,7 @@
namespace PHPPgAdmin\Controller;
+use ADORecordSet;
use PHPPgAdmin\Decorators\Decorator;
/**
@@ -117,7 +118,10 @@ class FunctionsController extends BaseController
'function' => [
'title' => $this->lang['strfunction'],
'field' => Decorator::field('proproto'),
- 'url' => \containerInstance()->subFolder . "/redirect/function?action=properties&amp;{$this->misc->href}&amp;",
+ 'url' => \containerInstance()->subFolder . \sprintf(
+ '/redirect/function?action=properties&amp;%s&amp;',
+ $this->misc->href
+ ),
'vars' => ['function' => 'proproto', 'function_oid' => 'prooid'],
],
'returns' => [
@@ -295,7 +299,10 @@ class FunctionsController extends BaseController
$fndata = $data->getFunction($_REQUEST['function_oid']);
if (0 >= $fndata->recordCount()) {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
return;
}
@@ -334,11 +341,26 @@ class FunctionsController extends BaseController
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;
- echo "<th class=\"data required\">{$this->lang['strfunction']}</th>" . \PHP_EOL;
- echo "<th class=\"data\">{$this->lang['strarguments']}</th>" . \PHP_EOL;
- echo "<th class=\"data required\">{$this->lang['strreturns']}</th>" . \PHP_EOL;
- echo "<th class=\"data required\">{$this->lang['strproglanguage']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data required">%s</th>',
+ $this->lang['strschema']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data required">%s</th>',
+ $this->lang['strfunction']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data">%s</th>',
+ $this->lang['strarguments']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data required">%s</th>',
+ $this->lang['strreturns']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data required">%s</th>',
+ $this->lang['strproglanguage']
+ ) . \PHP_EOL;
echo '</tr>' . \PHP_EOL;
echo '<tr>' . \PHP_EOL;
@@ -363,7 +385,10 @@ class FunctionsController extends BaseController
echo '</td>' . \PHP_EOL;
echo '<td class="data1">';
echo '<input type="hidden" name="original_function" value="', \htmlspecialchars($fndata->fields['proname']), '" />' . \PHP_EOL;
- echo "<input name=\"formFunction\" style=\"width: 100%; box-sizing: border-box;\" maxlength=\"{$data->_maxNameLen}\" value=\"", \htmlspecialchars($_POST['formFunction']), '" />';
+ echo \sprintf(
+ '<input name="formFunction" style="width: 100%; box-sizing: border-box;" maxlength="%s" value="',
+ $data->_maxNameLen
+ ), \htmlspecialchars($_POST['formFunction']), '" />';
echo '</td>' . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($args), \PHP_EOL;
@@ -393,18 +418,30 @@ class FunctionsController extends BaseController
$fnlang = \mb_strtolower($fndata->fields['prolanguage']);
if ('c' === $fnlang) {
- echo "<tr><th class=\"data required\" colspan=\"2\">{$this->lang['strobjectfile']}</th>" . \PHP_EOL;
- echo "<th class=\"data\" colspan=\"2\">{$this->lang['strlinksymbol']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data required" colspan="2">%s</th>',
+ $this->lang['strobjectfile']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data" colspan="2">%s</th></tr>',
+ $this->lang['strlinksymbol']
+ ) . \PHP_EOL;
echo '<tr><td class="data1" colspan="2"><input type="text" name="formObjectFile" style="width:100%" value="',
\htmlspecialchars($_POST['formObjectFile']), '" /></td>' . \PHP_EOL;
echo '<td class="data1" colspan="2"><input type="text" name="formLinkSymbol" style="width:100%" value="',
\htmlspecialchars($_POST['formLinkSymbol']), '" /></td></tr>' . \PHP_EOL;
} elseif ('internal' === $fnlang) {
- echo "<tr><th class=\"data\" colspan=\"5\">{$this->lang['strlinksymbol']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data" colspan="5">%s</th></tr>',
+ $this->lang['strlinksymbol']
+ ) . \PHP_EOL;
echo '<tr><td class="data1" colspan="5"><input type="text" name="formLinkSymbol" style="width:100%" value="',
\htmlspecialchars($_POST['formLinkSymbol']), '" /></td></tr>' . \PHP_EOL;
} else {
- echo "<tr><th class=\"data required\" colspan=\"5\">{$this->lang['strdefinition']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data required" colspan="5">%s</th></tr>',
+ $this->lang['strdefinition']
+ ) . \PHP_EOL;
echo '<tr><td class="data1" colspan="5">';
$textarea_id = ('sql' === $fnlang || 'plpgsql' === $fnlang) ? 'query' : 'formDefinition';
echo '<textarea style="width:100%;" rows="20" cols="50" id="' . $textarea_id . '" name="formDefinition">';
@@ -413,7 +450,10 @@ class FunctionsController extends BaseController
}
// Display function comment
- echo "<tr><th class=\"data\" colspan=\"5\">{$this->lang['strcomment']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data" colspan="5">%s</th></tr>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo '<tr><td class="data1" colspan="5">';
echo '<textarea style="width:100%;" name="formComment" rows="3" cols="50">';
echo \htmlspecialchars($_POST['formComment']);
@@ -421,21 +461,36 @@ class FunctionsController extends BaseController
// Display function cost options
if ($data->hasFunctionCosting()) {
- echo "<tr><th class=\"data required\" colspan=\"5\">{$this->lang['strfunctioncosting']}</th></tr>" . \PHP_EOL;
- echo "<td class=\"data1\" colspan=\"2\">{$this->lang['strexecutioncost']}: <input name=\"formCost\" size=\"16\" value=\"" .
+ echo \sprintf(
+ '<tr><th class="data required" colspan="5">%s</th></tr>',
+ $this->lang['strfunctioncosting']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<td class="data1" colspan="2">%s: <input name="formCost" size="16" value="',
+ $this->lang['strexecutioncost']
+ ) .
\htmlspecialchars($_POST['formCost']) . '" /></td>';
- echo "<td class=\"data1\" colspan=\"2\">{$this->lang['strresultrows']}: <input name=\"formRows\" size=\"16\" value=\"",
+ echo \sprintf(
+ '<td class="data1" colspan="2">%s: <input name="formRows" size="16" value="',
+ $this->lang['strresultrows']
+ ),
\htmlspecialchars($_POST['formRows']), '"', (!$fndata->fields['proretset']) ? 'disabled' : '', '/></td>';
}
// Display function properties
if (\is_array($data->funcprops) && 0 < \count($data->funcprops)) {
- echo "<tr><th class=\"data\" colspan=\"5\">{$this->lang['strproperties']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data" colspan="5">%s</th></tr>',
+ $this->lang['strproperties']
+ ) . \PHP_EOL;
echo '<tr><td class="data1" colspan="5">' . \PHP_EOL;
$i = 0;
foreach ($data->funcprops as $k => $v) {
- echo "<select name=\"formProperties[{$i}]\">" . \PHP_EOL;
+ echo \sprintf(
+ '<select name="formProperties[%s]">',
+ $i
+ ) . \PHP_EOL;
foreach ($v as $p) {
echo '<option value="', \htmlspecialchars($p), '"',
@@ -451,7 +506,10 @@ class FunctionsController extends BaseController
// function owner
if ($data->hasFunctionAlterOwner()) {
$users = $data->getUsers();
- echo "<tr><td class=\"data1\" colspan=\"5\">{$this->lang['strowner']}: <select name=\"formFuncOwn\">";
+ echo \sprintf(
+ '<tr><td class="data1" colspan="5">%s: <select name="formFuncOwn">',
+ $this->lang['strowner']
+ );
while (!$users->EOF) {
$uname = $users->fields['usename'];
@@ -468,8 +526,15 @@ class FunctionsController extends BaseController
echo '<input type="hidden" name="function" value="', \htmlspecialchars($_REQUEST['function']), '" />' . \PHP_EOL;
echo '<input type="hidden" name="function_oid" value="', \htmlspecialchars($_REQUEST['function_oid']), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
}
@@ -494,7 +559,10 @@ class FunctionsController extends BaseController
$func_full = '';
if (0 >= $funcdata->recordCount()) {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
return $this->_printNavLinks('functions-properties', $func_full);
}
@@ -503,26 +571,70 @@ class FunctionsController extends BaseController
$fnlang = \mb_strtolower($funcdata->fields['prolanguage']);
echo '<tr><td class="data1" colspan="4">';
- echo \sprintf('<pre><code class="sql hljs">%s', \PHP_EOL);
+ echo \sprintf(
+ '<pre><code class="sql hljs">%s',
+ \PHP_EOL
+ );
- echo \sprintf('%s--%s', \PHP_EOL, \PHP_EOL);
- echo \sprintf('-- Name: %s; Type: FUNCTION; Schema: %s; Owner: %s', $fname, $funcdata->fields['nspname'], $funcdata->fields['relowner']);
- echo \sprintf('%s--%s%s', \PHP_EOL, \PHP_EOL, \PHP_EOL);
+ echo \sprintf(
+ '%s--%s',
+ \PHP_EOL,
+ \PHP_EOL
+ );
+ echo \sprintf(
+ '-- Name: %s; Type: FUNCTION; Schema: %s; Owner: %s',
+ $fname,
+ $funcdata->fields['nspname'],
+ $funcdata->fields['relowner']
+ );
+ echo \sprintf(
+ '%s--%s%s',
+ \PHP_EOL,
+ \PHP_EOL,
+ \PHP_EOL
+ );
- echo \sprintf('%s;', $funcdata->fields['pg_get_functiondef']);
+ echo \sprintf(
+ '%s;',
+ $funcdata->fields['pg_get_functiondef']
+ );
- echo \sprintf('%s%sALTER FUNCTION %s OWNER TO %s;%s', \PHP_EOL, \PHP_EOL, $fname, $funcdata->fields['relowner'], \PHP_EOL);
+ echo \sprintf(
+ '%s%sALTER FUNCTION %s OWNER TO %s;%s',
+ \PHP_EOL,
+ \PHP_EOL,
+ $fname,
+ $funcdata->fields['relowner'],
+ \PHP_EOL
+ );
// Show comment if any
if (null !== $funcdata->fields['relcomment']) {
- echo \sprintf('%s--%s', \PHP_EOL, \PHP_EOL);
- echo \sprintf('-- Name: %s; Type: COMMENT; Schema: %s; Owner: %s', $fname, $funcdata->fields['nspname'], $funcdata->fields['relowner']);
- echo \sprintf('%s--%s%s', \PHP_EOL, \PHP_EOL, \PHP_EOL);
+ echo \sprintf(
+ '%s--%s',
+ \PHP_EOL,
+ \PHP_EOL
+ );
+ echo \sprintf(
+ '-- Name: %s; Type: COMMENT; Schema: %s; Owner: %s',
+ $fname,
+ $funcdata->fields['nspname'],
+ $funcdata->fields['relowner']
+ );
+ echo \sprintf(
+ '%s--%s%s',
+ \PHP_EOL,
+ \PHP_EOL,
+ \PHP_EOL
+ );
echo \sprintf("%sCOMMENT ON FUNCTION %s.%s IS '%s';%s", \PHP_EOL, $funcdata->fields['nspname'], $fname, $funcdata->fields['relcomment'], \PHP_EOL);
//echo '<p class="comment">', $this->misc->printVal($funcdata->fields['relcomment']), '</p>' . PHP_EOL;
}
- echo \sprintf('%s</code></pre>', \PHP_EOL);
+ echo \sprintf(
+ '%s</code></pre>',
+ \PHP_EOL
+ );
echo '</td></tr>' . \PHP_EOL;
@@ -549,7 +661,10 @@ class FunctionsController extends BaseController
$func_full = '';
if (0 >= $funcdata->recordCount()) {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
return $this->_printNavLinks('functions-properties', $func_full);
}
@@ -566,10 +681,26 @@ class FunctionsController extends BaseController
echo '<table style="width: 95%">' . \PHP_EOL;
- echo \sprintf('<tr><th class="data">%s</th>%s', $this->lang['strfunction'], \PHP_EOL);
- echo \sprintf('<th class="data">%s</th>%s', $this->lang['strarguments'], \PHP_EOL);
- echo \sprintf('<th class="data">%s</th>%s', $this->lang['strreturns'], \PHP_EOL);
- echo \sprintf('<th class="data">%s</th></tr>%s', $this->lang['strproglanguage'], \PHP_EOL);
+ echo \sprintf(
+ '<tr><th class="data">%s</th>%s',
+ $this->lang['strfunction'],
+ \PHP_EOL
+ );
+ echo \sprintf(
+ '<th class="data">%s</th>%s',
+ $this->lang['strarguments'],
+ \PHP_EOL
+ );
+ echo \sprintf(
+ '<th class="data">%s</th>%s',
+ $this->lang['strreturns'],
+ \PHP_EOL
+ );
+ echo \sprintf(
+ '<th class="data">%s</th></tr>%s',
+ $this->lang['strproglanguage'],
+ \PHP_EOL
+ );
echo '<tr><td class="data1">', $this->misc->printVal($funcdata->fields['proname']), '</td>' . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($args), '</td>' . \PHP_EOL;
@@ -585,31 +716,56 @@ class FunctionsController extends BaseController
$fnlang = \mb_strtolower($funcdata->fields['prolanguage']);
if ('c' === $fnlang) {
- echo "<tr><th class=\"data\" colspan=\"2\">{$this->lang['strobjectfile']}</th>" . \PHP_EOL;
- echo "<th class=\"data\" colspan=\"2\">{$this->lang['strlinksymbol']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data" colspan="2">%s</th>',
+ $this->lang['strobjectfile']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data" colspan="2">%s</th></tr>',
+ $this->lang['strlinksymbol']
+ ) . \PHP_EOL;
echo '<tr><td class="data1" colspan="2">', $this->misc->printVal($funcdata->fields['probin']), '</td>' . \PHP_EOL;
echo '<td class="data1" colspan="2">', $this->misc->printVal($funcdata->fields['prosrc']), '</td></tr>' . \PHP_EOL;
} elseif ('internal' === $fnlang) {
- echo "<tr><th class=\"data\" colspan=\"4\">{$this->lang['strlinksymbol']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data" colspan="4">%s</th></tr>',
+ $this->lang['strlinksymbol']
+ ) . \PHP_EOL;
echo '<tr><td class="data1" colspan="4">', $this->misc->printVal($funcdata->fields['prosrc']), '</td></tr>' . \PHP_EOL;
} else {
echo '<tr><td class="data1" colspan="4">';
- echo \sprintf('<pre><code class="%s hljs">%s</code></pre>', $fnlang, $funcdata->fields['prosrc']);
+ echo \sprintf(
+ '<pre><code class="%s hljs">%s</code></pre>',
+ $fnlang,
+ $funcdata->fields['prosrc']
+ );
echo '</td></tr>' . \PHP_EOL;
}
// Display function cost options
if ($data->hasFunctionCosting()) {
- echo "<tr><th class=\"data required\" colspan=\"4\">{$this->lang['strfunctioncosting']}</th></tr>" . \PHP_EOL;
- echo "<td class=\"data1\" colspan=\"2\">{$this->lang['strexecutioncost']}: ", $this->misc->printVal($funcdata->fields['procost']), ' </td>';
- echo "<td class=\"data1\" colspan=\"2\">{$this->lang['strresultrows']}: ", $this->misc->printVal($funcdata->fields['prorows']), ' </td>';
+ echo \sprintf(
+ '<tr><th class="data required" colspan="4">%s</th></tr>',
+ $this->lang['strfunctioncosting']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<td class="data1" colspan="2">%s: ',
+ $this->lang['strexecutioncost']
+ ), $this->misc->printVal($funcdata->fields['procost']), ' </td>';
+ echo \sprintf(
+ '<td class="data1" colspan="2">%s: ',
+ $this->lang['strresultrows']
+ ), $this->misc->printVal($funcdata->fields['prorows']), ' </td>';
}
// Show flags
if (\is_array($data->funcprops) && 0 < \count($data->funcprops)) {
// Fetch an array of the function properties
$funcprops = $data->getFunctionProperties($funcdata->fields);
- echo "<tr><th class=\"data\" colspan=\"4\">{$this->lang['strproperties']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data" colspan="4">%s</th></tr>',
+ $this->lang['strproperties']
+ ) . \PHP_EOL;
echo '<tr><td class="data1" colspan="4">' . \PHP_EOL;
foreach ($funcprops as $v) {
@@ -618,7 +774,10 @@ class FunctionsController extends BaseController
echo '</td></tr>' . \PHP_EOL;
}
- echo "<tr><td class=\"data1\" colspan=\"5\">{$this->lang['strowner']}: ", \htmlspecialchars($funcdata->fields['proowner']), \PHP_EOL;
+ echo \sprintf(
+ '<tr><td class="data1" colspan="5">%s: ',
+ $this->lang['strowner']
+ ), \htmlspecialchars($funcdata->fields['proowner']), \PHP_EOL;
echo '</td></tr>' . \PHP_EOL;
echo '</table>' . \PHP_EOL;
@@ -649,12 +808,18 @@ class FunctionsController extends BaseController
if (isset($_REQUEST['ma'])) {
foreach ($_REQUEST['ma'] as $v) {
$a = \unserialize(\htmlspecialchars_decode($v, \ENT_QUOTES));
- echo '<p>', \sprintf($this->lang['strconfdropfunction'], $this->misc->printVal($a['function'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropfunction'],
+ $this->misc->printVal($a['function'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="function[]" value="', \htmlspecialchars($a['function']), '" />' . \PHP_EOL;
echo '<input type="hidden" name="function_oid[]" value="', \htmlspecialchars($a['function_oid']), '" />' . \PHP_EOL;
}
} else {
- echo '<p>', \sprintf($this->lang['strconfdropfunction'], $this->misc->printVal($_REQUEST['function'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropfunction'],
+ $this->misc->printVal($_REQUEST['function'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="function" value="', \htmlspecialchars($_REQUEST['function']), '" />' . \PHP_EOL;
echo '<input type="hidden" name="function_oid" value="', \htmlspecialchars($_REQUEST['function_oid']), '" />' . \PHP_EOL;
}
@@ -662,9 +827,18 @@ class FunctionsController extends BaseController
echo '<input type="hidden" name="action" value="drop" />' . \PHP_EOL;
echo $this->view->form;
- echo "<p><input type=\"checkbox\" id=\"cascade\" name=\"cascade\" /><label for=\"cascade\">{$this->lang['strcascade']}</label></p>" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<p><input type="checkbox" id="cascade" name="cascade" /><label for="cascade">%s</label></p>',
+ $this->lang['strcascade']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
if (\is_array($_POST['function_oid'])) {
@@ -783,12 +957,18 @@ class FunctionsController extends BaseController
$szSelected = ' selected="selected"';
}
// this variable is include in the JS code bellow, so we need to ENT_QUOTES
- $szTypes .= '<option value="' . \htmlspecialchars($types->fields['typname'], \ENT_QUOTES) . "\"{$szSelected}>";
+ $szTypes .= '<option value="' . \htmlspecialchars($types->fields['typname'], \ENT_QUOTES) . \sprintf(
+ '"%s>',
+ $szSelected
+ );
$szTypes .= \htmlspecialchars($types->fields['typname'], \ENT_QUOTES) . '</option>';
$types->moveNext();
}
- $szFunctionName = "<td class=\"data1\"><input name=\"formFunction\" size=\"16\" maxlength=\"{$data->_maxNameLen}\" value=\"" .
+ $szFunctionName = \sprintf(
+ '<td class="data1"><input name="formFunction" size="16" maxlength="%s" value="',
+ $data->_maxNameLen
+ ) .
\htmlspecialchars($_POST['formFunction']) . '" /></td>';
$szArguments = '<td class="data1"><input name="formArguments" style="width:100%;" size="16" value="' .
@@ -804,8 +984,14 @@ class FunctionsController extends BaseController
}
$szReturns = '<td class="data1" colspan="2">';
$szReturns .= '<select name="formSetOf">';
- $szReturns .= "<option value=\"\"{$szNotSetOfSelected}></option>";
- $szReturns .= "<option value=\"SETOF\"{$szSetOfSelected}>SETOF</option>";
+ $szReturns .= \sprintf(
+ '<option value=""%s></option>',
+ $szNotSetOfSelected
+ );
+ $szReturns .= \sprintf(
+ '<option value="SETOF"%s>SETOF</option>',
+ $szSetOfSelected
+ );
$szReturns .= '</select>';
$szReturns .= '<select class="select2" name="formReturns">' . $szTypes . '</select>';
@@ -822,8 +1008,14 @@ class FunctionsController extends BaseController
}
$szReturns .= '<select name="formArray">';
- $szReturns .= "<option value=\"\"{$szNotArraySelected}></option>";
- $szReturns .= "<option value=\"[]\"{$szArraySelected}>[ ]</option>";
+ $szReturns .= \sprintf(
+ '<option value=""%s></option>',
+ $szNotArraySelected
+ );
+ $szReturns .= \sprintf(
+ '<option value="[]"%s>[ ]</option>',
+ $szArraySelected
+ );
$szReturns .= "</select>\n</td>";
// Create string for language
@@ -831,7 +1023,10 @@ class FunctionsController extends BaseController
if ('c' === $fnlang || 'internal' === $fnlang) {
$szLanguage .= $_POST['formLanguage'] . \PHP_EOL;
- $szLanguage .= "<input type=\"hidden\" name=\"formLanguage\" value=\"{$_POST['formLanguage']}\" />" . \PHP_EOL;
+ $szLanguage .= \sprintf(
+ '<input type="hidden" name="formLanguage" value="%s" />',
+ $_POST['formLanguage']
+ ) . \PHP_EOL;
} else {
$szLanguage .= '<select name="formLanguage">' . \PHP_EOL;
@@ -843,7 +1038,11 @@ class FunctionsController extends BaseController
}
if ('c' !== \mb_strtolower($langs->fields['lanname']) && 'internal' !== \mb_strtolower($langs->fields['lanname'])) {
- $szLanguage .= '<option value="' . \htmlspecialchars($langs->fields['lanname']) . "\"{$szSelected}>\n" .
+ $szLanguage .= '<option value="' . \htmlspecialchars($langs->fields['lanname']) . \sprintf(
+ '"%s>
+',
+ $szSelected
+ ) .
$this->misc->printVal($langs->fields['lanname']) . '</option>';
}
@@ -853,12 +1052,19 @@ class FunctionsController extends BaseController
}
$szLanguage .= '</td>';
- $szJSArguments = "<tr><th class=\"data\" colspan=\"7\">{$this->lang['strarguments']}</th></tr>";
+ $szJSArguments = \sprintf(
+ '<tr><th class="data" colspan="7">%s</th></tr>',
+ $this->lang['strarguments']
+ );
$arrayModes = ['IN', 'OUT', 'INOUT'];
$szModes = '<select name="formArgModes[]" style="width:100%;">';
foreach ($arrayModes as $pV) {
- $szModes .= "<option value=\"{$pV}\">{$pV}</option>";
+ $szModes .= \sprintf(
+ '<option value="%s">%s</option>',
+ $pV,
+ $pV
+ );
}
$szModes .= '</select>';
$szArgReturns = '<select name="formArgArray[]">';
@@ -868,28 +1074,49 @@ class FunctionsController extends BaseController
$subfolder = \containerInstance()->subFolder;
if (!empty($this->conf['theme'])) {
- $szImgPath = \containerInstance()->subFolder . "/assets/images/themes/{$this->conf['theme']}";
+ $szImgPath = \containerInstance()->subFolder . \sprintf(
+ '/assets/images/themes/%s',
+ $this->conf['theme']
+ );
} else {
$szImgPath = \containerInstance()->subFolder . '/assets/images/themes/default';
}
if (empty($msg)) {
- $szJSTRArg = "<script type=\"text/javascript\" >addArg('{$subfolder}');</script>" . \PHP_EOL;
+ $szJSTRArg = \sprintf(
+ '<script type="text/javascript" >addArg(\'%s\');</script>',
+ $subfolder
+ ) . \PHP_EOL;
} else {
$szJSTRArg = '';
}
- $szJSAddTR = "<tr id=\"parent_add_tr\" onclick=\"addArg('{$subfolder}');\" onmouseover=\"this.style.cursor='pointer'\">" . \PHP_EOL;
+ $szJSAddTR = \sprintf(
+ '<tr id="parent_add_tr" onclick="addArg(\'%s\');" onmouseover="this.style.cursor=\'pointer\'">',
+ $subfolder
+ ) . \PHP_EOL;
$szJSAddTR .= '<td style="text-align: right" colspan="6" class="data3"><table><tr><td class="data3">';
- $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="' . \containerInstance()->subFolder . "/assets/js/functions.js\" type=\"text/javascript\"></script>
- <script type=\"text/javascript\">
+ $szJSAddTR .= \sprintf(
+ '<img src="%s/AddArguments.png" alt="Add Argument" /></td>',
+ $szImgPath
+ );
+ $szJSAddTR .= \sprintf(
+ '<td class="data3"><span style="font-size: 8pt">%s</span></td></tr></table></td>
+</tr>',
+ $this->lang['strargadd']
+ ) . \PHP_EOL;
+
+ echo '<script src="' . \containerInstance()->subFolder . \sprintf(
+ '/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}';
- var g_modes_select = '{$szModes}';
- var g_name = '';
- var g_lang_strargremove = '", \htmlspecialchars($this->lang['strargremove'], \ENT_QUOTES), "';
+ var g_types_select = \'<select class="select2" name="formArgType[]">%s</select>%s\';
+ var g_modes_select = \'%s\';
+ var g_name = \'\';
+ var g_lang_strargremove = \'',
+ $szTypes,
+ $szArgReturns,
+ $szModes
+ ), \htmlspecialchars($this->lang['strargremove'], \ENT_QUOTES), "';
var g_lang_strargnoargs = '", \htmlspecialchars($this->lang['strargnoargs'], \ENT_QUOTES), "';
var g_lang_strargenableargs = '", \htmlspecialchars($this->lang['strargenableargs'], \ENT_QUOTES), "';
var g_lang_strargnorowabove = '", \htmlspecialchars($this->lang['strargnorowabove'], \ENT_QUOTES), "';
@@ -902,35 +1129,65 @@ class FunctionsController extends BaseController
";
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;
- echo "<th class=\"data required\">{$this->lang['strproglanguage']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data required" colspan="2">%s</th>',
+ $this->lang['strreturns']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data required">%s</th></tr>',
+ $this->lang['strproglanguage']
+ ) . \PHP_EOL;
echo '<tr>' . \PHP_EOL;
- echo "{$szFunctionName}\n";
- echo "{$szReturns}\n";
- echo "{$szLanguage}\n";
+ echo $szFunctionName . \PHP_EOL;
+ echo $szReturns . \PHP_EOL;
+ echo $szLanguage . \PHP_EOL;
echo '</tr>' . \PHP_EOL;
- echo "{$szJSArguments}\n";
+ echo $szJSArguments . \PHP_EOL;
echo '<tr>' . \PHP_EOL;
- echo "<th class=\"data required\">{$this->lang['strargmode']}</th>" . \PHP_EOL;
- echo "<th class=\"data required\">{$this->lang['strname']}</th>" . \PHP_EOL;
- echo "<th class=\"data required\" colspan=\"2\">{$this->lang['strargtype']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data required">%s</th>',
+ $this->lang['strargmode']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data required" colspan="2">%s</th>',
+ $this->lang['strargtype']
+ ) . \PHP_EOL;
echo '</tr>' . \PHP_EOL;
- echo "{$szJSAddTR}\n";
+ echo $szJSAddTR . \PHP_EOL;
if ('c' === $fnlang) {
- echo "<tr><th class=\"data required\" colspan=\"2\">{$this->lang['strobjectfile']}</th>" . \PHP_EOL;
- echo "<th class=\"data\" colspan=\"2\">{$this->lang['strlinksymbol']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data required" colspan="2">%s</th>',
+ $this->lang['strobjectfile']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data" colspan="2">%s</th></tr>',
+ $this->lang['strlinksymbol']
+ ) . \PHP_EOL;
echo '<tr><td class="data1" colspan="2"><input type="text" name="formObjectFile" style="width:100%" value="',
\htmlspecialchars($_POST['formObjectFile']), '" /></td>' . \PHP_EOL;
echo '<td class="data1" colspan="2"><input type="text" name="formLinkSymbol" style="width:100%" value="',
\htmlspecialchars($_POST['formLinkSymbol']), '" /></td></tr>' . \PHP_EOL;
} elseif ('internal' === $fnlang) {
- echo "<tr><th class=\"data\" colspan=\"4\">{$this->lang['strlinksymbol']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data" colspan="4">%s</th></tr>',
+ $this->lang['strlinksymbol']
+ ) . \PHP_EOL;
echo '<tr><td class="data1" colspan="4"><input type="text" name="formLinkSymbol" style="width:100%" value="',
\htmlspecialchars($_POST['formLinkSymbol']), '" /></td></tr>' . \PHP_EOL;
} else {
- echo "<tr><th class=\"data required\" colspan=\"4\">{$this->lang['strdefinition']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data required" colspan="4">%s</th></tr>',
+ $this->lang['strdefinition']
+ ) . \PHP_EOL;
echo '<tr><td class="data1" colspan="4">';
echo '<textarea style="width:100%;" rows="20" cols="50" name="formDefinition">';
echo \htmlspecialchars($_POST['formDefinition']);
@@ -938,27 +1195,45 @@ class FunctionsController extends BaseController
}
// Display function comment
- echo "<tr><th class=\"data\" colspan=\"4\">{$this->lang['strcomment']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data" colspan="4">%s</th></tr>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo '<tr><td class="data1" colspan="4"><textarea style="width:100%;" name="formComment" rows="3" cols="50">',
\htmlspecialchars($_POST['formComment']), '</textarea></td></tr>' . \PHP_EOL;
// Display function cost options
if ($data->hasFunctionCosting()) {
- echo "<tr><th class=\"data required\" colspan=\"4\">{$this->lang['strfunctioncosting']}</th></tr>" . \PHP_EOL;
- echo "<td class=\"data1\" colspan=\"2\">{$this->lang['strexecutioncost']}: <input name=\"formCost\" size=\"16\" value=\"" .
+ echo \sprintf(
+ '<tr><th class="data required" colspan="4">%s</th></tr>',
+ $this->lang['strfunctioncosting']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<td class="data1" colspan="2">%s: <input name="formCost" size="16" value="',
+ $this->lang['strexecutioncost']
+ ) .
\htmlspecialchars($_POST['formCost']) . '" /></td>';
- echo "<td class=\"data1\" colspan=\"2\">{$this->lang['strresultrows']}: <input name=\"formRows\" size=\"16\" value=\"" .
+ echo \sprintf(
+ '<td class="data1" colspan="2">%s: <input name="formRows" size="16" value="',
+ $this->lang['strresultrows']
+ ) .
\htmlspecialchars($_POST['formRows']) . '" /></td>';
}
// Display function properties
if (\is_array($data->funcprops) && 0 < \count($data->funcprops)) {
- echo "<tr><th class=\"data required\" colspan=\"4\">{$this->lang['strproperties']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data required" colspan="4">%s</th></tr>',
+ $this->lang['strproperties']
+ ) . \PHP_EOL;
echo '<tr><td class="data1" colspan="4">' . \PHP_EOL;
$i = 0;
foreach ($data->funcprops as $k => $v) {
- echo "<select name=\"formProperties[{$i}]\">" . \PHP_EOL;
+ echo \sprintf(
+ '<select name="formProperties[%s]">',
+ $i
+ ) . \PHP_EOL;
foreach ($v as $p) {
echo '<option value="', \htmlspecialchars($p), '"',
@@ -974,8 +1249,15 @@ class FunctionsController extends BaseController
echo $szJSTRArg;
echo '<p><input type="hidden" name="action" value="save_create" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
echo $szJS;
}
@@ -1261,7 +1543,14 @@ class FunctionsController extends BaseController
$arrayProperArgs[] = [$szMode, $szArgName, $szArgType, $bArgIsArray];
$subfolder = \containerInstance()->subFolder;
$szReturn .= '<script type="text/javascript">';
- $szReturn .= "RebuildArgTR('{$szMode}','{$szArgName}','{$szArgType}',new Boolean({$bArgIsArray},{$subfolder}));";
+ $szReturn .= \sprintf(
+ 'RebuildArgTR(\'%s\',\'%s\',\'%s\',new Boolean(%s,%s));',
+ $szMode,
+ $szArgName,
+ $szArgType,
+ $bArgIsArray,
+ $subfolder
+ );
$szReturn .= '</script>;';
++$nC;
}
@@ -1284,7 +1573,10 @@ class FunctionsController extends BaseController
}
foreach ($arrayModes as $pV) {
- $arrayPModes[] = "'{$pV}'";
+ $arrayPModes[] = \sprintf(
+ '\'%s\'',
+ $pV
+ );
}
$szTypes = 'g_main_types = new Array(' . \implode(',', $arrayPTypes) . ');';
@@ -1296,7 +1588,7 @@ class FunctionsController extends BaseController
/**
* Get the concatenated arguments for a function.
*
- * @param \ADORecordSet $funcdata The funcdata record
+ * @param ADORecordSet $funcdata The funcdata record
*
* @return string The arguments of the function
*/
diff --git a/src/controllers/GroupsController.php b/src/controllers/GroupsController.php
index de992329..fe7854cb 100644
--- a/src/controllers/GroupsController.php
+++ b/src/controllers/GroupsController.php
@@ -105,7 +105,10 @@ class GroupsController extends BaseController
'group' => [
'title' => $this->lang['strgroup'],
'field' => Decorator::field('groname'),
- 'url' => "groups?action=properties&amp;{$this->misc->href}&amp;",
+ 'url' => \sprintf(
+ 'groups?action=properties&amp;%s&amp;',
+ $this->misc->href
+ ),
'vars' => ['group' => 'groname'],
],
'actions' => [
@@ -178,15 +181,25 @@ class GroupsController extends BaseController
$this->printTrail('group');
$this->printTitle($this->lang['strdropmember'], 'pg.group.alter');
- echo '<p>', \sprintf($this->lang['strconfdropmember'], $this->misc->printVal($_REQUEST['user']), $this->misc->printVal($_REQUEST['group'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropmember'],
+ $this->misc->printVal($_REQUEST['user']),
+ $this->misc->printVal($_REQUEST['group'])
+ ), '</p>' . \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;
echo '<input type="hidden" name="user" value="', \htmlspecialchars($_REQUEST['user']), '" />' . \PHP_EOL;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
$status = $data->dropGroupMember($_REQUEST['group'], $_REQUEST['user']);
@@ -253,12 +266,21 @@ class GroupsController extends BaseController
while (!$users->EOF) {
$uname = $this->misc->printVal($users->fields['usename']);
- echo "<option value=\"{$uname}\"",
- ($uname === $_POST['user']) ? ' selected="selected"' : '', ">{$uname}</option>" . \PHP_EOL;
+ echo \sprintf(
+ '<option value="%s"',
+ $uname
+ ),
+ ($uname === $_POST['user']) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $uname
+ ) . \PHP_EOL;
$users->moveNext();
}
echo '</select>' . \PHP_EOL;
- echo "<input type=\"submit\" value=\"{$this->lang['straddmember']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['straddmember']
+ ) . \PHP_EOL;
echo $this->view->form;
echo '<input type="hidden" name="group" value="', \htmlspecialchars($_REQUEST['group']), '" />' . \PHP_EOL;
echo '<input type="hidden" name="action" value="add_member" />' . \PHP_EOL;
@@ -290,14 +312,23 @@ class GroupsController extends BaseController
$this->printTrail('group');
$this->printTitle($this->lang['strdrop'], 'pg.group.drop');
- echo '<p>', \sprintf($this->lang['strconfdropgroup'], $this->misc->printVal($_REQUEST['group'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropgroup'],
+ $this->misc->printVal($_REQUEST['group'])
+ ), '</p>' . \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;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
$status = $data->dropGroup($_REQUEST['group']);
@@ -332,18 +363,32 @@ class GroupsController extends BaseController
echo '<form action="" 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;
- echo "\t\t<td class=\"data\"><input size=\"32\" maxlength=\"{$data->_maxNameLen}\" name=\"name\" value=\"", \htmlspecialchars($_POST['name']), "\" /></td>\n\t</tr>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data"><input size="32" maxlength="%s" name="name" value="',
+ $data->_maxNameLen
+ ), \htmlspecialchars($_POST['name']), "\" /></td>\n\t</tr>" . \PHP_EOL;
if (0 < $users->recordCount()) {
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strmembers']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strmembers']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data\">" . \PHP_EOL;
echo "\t\t\t<select name=\"members[]\" multiple=\"multiple\" size=\"", \min(40, $users->recordCount()), '">' . \PHP_EOL;
while (!$users->EOF) {
$username = $users->fields['usename'];
- echo "\t\t\t\t<option value=\"{$username}\"",
+ echo \sprintf(
+ ' <option value="%s"',
+ $username
+ ),
(\in_array($username, $_POST['members'], true) ? ' selected="selected"' : ''), '>', $this->misc->printVal($username), '</option>' . \PHP_EOL;
$users->moveNext();
}
@@ -352,8 +397,15 @@ class GroupsController extends BaseController
}
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="save_create" />' . \PHP_EOL;
- echo "<input type=\"submit\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
}
diff --git a/src/controllers/HelpController.php b/src/controllers/HelpController.php
index 2f9ee8ec..141fa636 100644
--- a/src/controllers/HelpController.php
+++ b/src/controllers/HelpController.php
@@ -45,7 +45,10 @@ class HelpController extends BaseController
}
if ($url) {
- \header("Location: {$url}");
+ \header(\sprintf(
+ 'Location: %s',
+ $url
+ ));
return;
}
@@ -70,7 +73,10 @@ class HelpController extends BaseController
$pages = $data->getHelpPages();
foreach ($pages as $page => $dummy) {
- echo "<dt>{$page}</dt>" . \PHP_EOL;
+ echo \sprintf(
+ '<dt>%s</dt>',
+ $page
+ ) . \PHP_EOL;
$urls = $data->getHelp($page);
@@ -79,7 +85,11 @@ class HelpController extends BaseController
}
foreach ($urls as $url) {
- echo "<dd><a href=\"{$url}\">{$url}</a></dd>" . \PHP_EOL;
+ echo \sprintf(
+ '<dd><a href="%s">%s</a></dd>',
+ $url,
+ $url
+ ) . \PHP_EOL;
}
}
@@ -98,7 +108,11 @@ class HelpController extends BaseController
echo '<ul>' . \PHP_EOL;
foreach ($urls as $url) {
- echo "<li><a href=\"{$url}\">{$url}</a></li>" . \PHP_EOL;
+ echo \sprintf(
+ '<li><a href="%s">%s</a></li>',
+ $url,
+ $url
+ ) . \PHP_EOL;
}
echo '</ul>' . \PHP_EOL;
diff --git a/src/controllers/HistoryController.php b/src/controllers/HistoryController.php
index e5fcf4ed..c614b160 100644
--- a/src/controllers/HistoryController.php
+++ b/src/controllers/HistoryController.php
@@ -6,14 +6,16 @@
namespace PHPPgAdmin\Controller;
+use PHPPgAdmin\ArrayRecordSet;
use PHPPgAdmin\Decorators\Decorator;
+use PHPPgAdmin\Traits\ServersTrait;
/**
* Base controller class.
*/
class HistoryController extends BaseController
{
- use \PHPPgAdmin\Traits\ServersTrait;
+ use ServersTrait;
public $EOF;
@@ -80,13 +82,16 @@ class HistoryController extends BaseController
echo '</form><br />';
if (!isset($_REQUEST['database'])) {
- echo "<p>{$this->lang['strnodatabaseselected']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodatabaseselected']
+ ) . \PHP_EOL;
return;
}
if (isset($_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']])) {
- $history = new \PHPPgAdmin\ArrayRecordSet($_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']]);
+ $history = new ArrayRecordSet($_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']]);
$columns = [
'query' => [
@@ -135,7 +140,10 @@ class HistoryController extends BaseController
echo $this->printTable($history, $columns, $actions, 'history-history', $this->lang['strnohistory']);
} else {
- echo "<p>{$this->lang['strnohistory']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnohistory']
+ ) . \PHP_EOL;
}
$navlinks = [
@@ -195,16 +203,31 @@ class HistoryController extends BaseController
// Bring to the front always
echo '<body onload="window.focus();">' . \PHP_EOL;
- echo "<h3>{$this->lang['strdelhistory']}</h3>" . \PHP_EOL;
- echo "<p>{$this->lang['strconfdelhistory']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<h3>%s</h3>',
+ $this->lang['strdelhistory']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strconfdelhistory']
+ ) . \PHP_EOL;
echo '<pre>', \htmlentities($_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']][$qid]['query'], \ENT_QUOTES, 'UTF-8'), '</pre>';
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 \sprintf(
+ '<input type="hidden" name="queryid" value="%s" />',
+ $qid
+ ) . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"yes\" value=\"{$this->lang['stryes']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"no\" value=\"{$this->lang['strno']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="yes" value="%s" />',
+ $this->lang['stryes']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="no" value="%s" />',
+ $this->lang['strno']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
unset($_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']][$qid]);
@@ -219,14 +242,26 @@ class HistoryController extends BaseController
// Bring to the front always
echo '<body onload="window.focus();">' . \PHP_EOL;
- echo "<h3>{$this->lang['strclearhistory']}</h3>" . \PHP_EOL;
- echo "<p>{$this->lang['strconfclearhistory']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<h3>%s</h3>',
+ $this->lang['strclearhistory']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strconfclearhistory']
+ ) . \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;
- echo "<input type=\"submit\" name=\"no\" value=\"{$this->lang['strno']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="yes" value="%s" />',
+ $this->lang['stryes']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="no" value="%s" />',
+ $this->lang['strno']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
unset($_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']]);
@@ -237,7 +272,10 @@ class HistoryController extends BaseController
{
\header('Content-Type: application/download');
$datetime = \date('YmdHis');
- \header("Content-Disposition: attachment; filename=history{$datetime}.sql");
+ \header(\sprintf(
+ 'Content-Disposition: attachment; filename=history%s.sql',
+ $datetime
+ ));
foreach ($_SESSION['history'][$_REQUEST['server']][$_REQUEST['database']] as $queries) {
$query = \rtrim($queries['query']);
diff --git a/src/controllers/IndexesController.php b/src/controllers/IndexesController.php
index 604242d1..9b94b22b 100644
--- a/src/controllers/IndexesController.php
+++ b/src/controllers/IndexesController.php
@@ -6,7 +6,11 @@
namespace PHPPgAdmin\Controller;
+use PHPPgAdmin\ADOdbException;
use PHPPgAdmin\Decorators\Decorator;
+use PHPPgAdmin\XHtml\XHtmlButton;
+use PHPPgAdmin\XHtml\XHtmlOption;
+use PHPPgAdmin\XHtml\XHtmlSelect;
/**
* Base controller class.
@@ -266,17 +270,29 @@ class IndexesController extends BaseController
$this->printTabs($subject, 'indexes');
$this->printTitle($this->lang['strclusterindex'], 'pg.index.cluster');
- echo '<p>', \sprintf($this->lang['strconfcluster'], $this->misc->printVal($_REQUEST['index'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfcluster'],
+ $this->misc->printVal($_REQUEST['index'])
+ ), '</p>' . \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 \sprintf(
+ '<label for="analyze">%s</label></p>',
+ $this->lang['stranalyze']
+ ) . \PHP_EOL;
echo '<input type="hidden" name="action" value="cluster_index" />' . \PHP_EOL;
echo '<input type="hidden" name="table" value="', \htmlspecialchars($object), '" />' . \PHP_EOL;
echo '<input type="hidden" name="index" value="', \htmlspecialchars($_REQUEST['index']), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"cluster\" value=\"{$this->lang['strclusterindex']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cluster" value="%s" />',
+ $this->lang['strclusterindex']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
\set_time_limit(0);
@@ -344,25 +360,25 @@ class IndexesController extends BaseController
$this->printTitle($this->lang['strcreateindex'], 'pg.index.create');
$this->printMsg($msg);
- $selColumns = new \PHPPgAdmin\XHtml\XHtmlSelect('TableColumnList', true, 10);
+ $selColumns = new XHtmlSelect('TableColumnList', true, 10);
$selColumns->set_style('width: 14em;');
if (0 < $attrs->recordCount()) {
while (!$attrs->EOF) {
- $attname = new \PHPPgAdmin\XHtml\XHtmlOption($attrs->fields['attname']);
+ $attname = new XHtmlOption($attrs->fields['attname']);
$selColumns->add($attname);
$attrs->moveNext();
}
}
- $selIndex = new \PHPPgAdmin\XHtml\XHtmlSelect('IndexColumnList[]', true, 10);
+ $selIndex = new XHtmlSelect('IndexColumnList[]', true, 10);
$selIndex->set_style('width: 14em;');
$selIndex->set_attribute('id', 'IndexColumnList');
- $buttonAdd = new \PHPPgAdmin\XHtml\XHtmlButton('add', '>>');
+ $buttonAdd = new XHtmlButton('add', '>>');
$buttonAdd->set_attribute('onclick', 'buttonPressed(this);');
$buttonAdd->set_attribute('type', 'button');
- $buttonRemove = new \PHPPgAdmin\XHtml\XHtmlButton('remove', '<<');
+ $buttonRemove = new XHtmlButton('remove', '<<');
$buttonRemove->set_attribute('onclick', 'buttonPressed(this);');
$buttonRemove->set_attribute('type', 'button');
@@ -397,18 +413,27 @@ class IndexesController extends BaseController
}
echo '</select></td></tr>' . \PHP_EOL;
echo '<tr>';
- echo "<th class=\"data left\" scope=\"row\"><label for=\"formUnique\">{$this->lang['strunique']}</label></th>";
+ echo \sprintf(
+ '<th class="data left" scope="row"><label for="formUnique">%s</label></th>',
+ $this->lang['strunique']
+ );
echo '<td colspan="2" class="data1"><input type="checkbox" id="formUnique" name="formUnique"', ($formUnique ? 'checked="checked"' : ''), ' /></td>';
echo '</tr>';
echo '<tr>';
- echo "<th class=\"data left\" scope=\"row\">{$this->lang['strwhere']}</th>";
+ echo \sprintf(
+ '<th class="data left" scope="row">%s</th>',
+ $this->lang['strwhere']
+ );
echo '<td colspan="2" class="data1">(<input name="formWhere" size="32" maxlength="' . $data->_maxNameLen . '" value="' . \htmlspecialchars($formWhere) . '" />)</td>';
echo '</tr>';
// Tablespace (if there are any)
if ($data->hasTablespaces() && 0 < $tablespaces->recordCount()) {
echo '<tr>' . \PHP_EOL;
- echo "<th class=\"data left\">{$this->lang['strtablespace']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data left">%s</th>',
+ $this->lang['strtablespace']
+ ) . \PHP_EOL;
echo '<td colspan="2" class="data1">';
echo "\n\t\t\t<select name=\"formSpc\">" . \PHP_EOL;
// Always offer the default (empty) option
@@ -417,8 +442,14 @@ class IndexesController extends BaseController
// Display all other tablespaces
while (!$tablespaces->EOF) {
$spcname = \htmlspecialchars($tablespaces->fields['spcname']);
- echo "\t\t\t\t<option value=\"{$spcname}\"",
- ($spcname === $formSpc) ? ' selected="selected"' : '', ">{$spcname}</option>" . \PHP_EOL;
+ echo \sprintf(
+ ' <option value="%s"',
+ $spcname
+ ),
+ ($spcname === $formSpc) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $spcname
+ ) . \PHP_EOL;
$tablespaces->moveNext();
}
echo "\t\t\t</select>\n\t\t</td>\n\t</tr>" . \PHP_EOL;
@@ -426,7 +457,10 @@ class IndexesController extends BaseController
if ($data->hasConcurrentIndexBuild()) {
echo '<tr>';
- echo "<th class=\"data left\" scope=\"row\"><label for=\"formConcur\">{$this->lang['strconcurrently']}</label></th>";
+ echo \sprintf(
+ '<th class="data left" scope="row"><label for="formConcur">%s</label></th>',
+ $this->lang['strconcurrently']
+ );
echo '<td colspan="2" class="data1"><input type="checkbox" id="formConcur" name="formConcur"', ($formConcur ? 'checked="checked"' : ''), ' /></td>';
echo '</tr>';
}
@@ -437,8 +471,15 @@ class IndexesController extends BaseController
echo $this->view->form;
echo '<input type="hidden" name="subject" value="', \htmlspecialchars($subject), '" />' . \PHP_EOL;
echo '<input type="hidden" name="' . $subject . '" value="', \htmlspecialchars($object), '" />' . \PHP_EOL;
- echo "<input type=\"submit\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
}
@@ -502,7 +543,10 @@ class IndexesController extends BaseController
$this->printTrail('index');
$this->printTitle($this->lang['strdrop'], 'pg.index.drop');
- echo '<p>', \sprintf($this->lang['strconfdropindex'], $this->misc->printVal($this->getRequestParam('index'))), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropindex'],
+ $this->misc->printVal($this->getRequestParam('index'))
+ ), '</p>' . \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;
@@ -510,8 +554,14 @@ class IndexesController extends BaseController
echo $this->view->form;
echo '<p><input type="checkbox" id="cascade" name="cascade" value="1" />';
echo '<label for="cascade">' . $this->lang['strcascade'] . '</label></p>' . \PHP_EOL;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
try {
@@ -522,7 +572,7 @@ class IndexesController extends BaseController
} else {
$this->doDefault($sql . \PHP_EOL . $this->lang['strindexdroppedbad']);
}
- } catch (\PHPPgAdmin\ADOdbException $e) {
+ } catch (ADOdbException $e) {
$this->doDefault($this->lang['strindexdroppedbad']);
}
}
diff --git a/src/controllers/InfoController.php b/src/controllers/InfoController.php
index 93cc6130..9e784ef7 100644
--- a/src/controllers/InfoController.php
+++ b/src/controllers/InfoController.php
@@ -105,7 +105,10 @@ class InfoController extends BaseController
private function _printChildren($children): void
{
- echo "<h3>{$this->lang['strchildtables']}</h3>" . \PHP_EOL;
+ echo \sprintf(
+ '<h3>%s</h3>',
+ $this->lang['strchildtables']
+ ) . \PHP_EOL;
$columns = [
'schema' => [
@@ -141,28 +144,64 @@ class InfoController extends BaseController
private function _printTablestatstups($tablestatstups): void
{
- echo "<h3>{$this->lang['strrowperf']}</h3>" . \PHP_EOL;
+ echo \sprintf(
+ '<h3>%s</h3>',
+ $this->lang['strrowperf']
+ ) . \PHP_EOL;
echo '<table>' . \PHP_EOL;
echo "\t<tr>" . \PHP_EOL;
- echo "\t\t<th class=\"data\" colspan=\"2\">{$this->lang['strsequential']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\" colspan=\"2\">{$this->lang['strindex']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\" colspan=\"3\">{$this->lang['strrows2']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data" colspan="2">%s</th>',
+ $this->lang['strsequential']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data" colspan="2">%s</th>',
+ $this->lang['strindex']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data" colspan="3">%s</th>',
+ $this->lang['strrows2']
+ ) . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
echo "\t<tr>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strscan']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strread']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strscan']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strfetch']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strinsert']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strupdate']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strdelete']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strscan']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strread']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strscan']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strfetch']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strinsert']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strupdate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strdelete']
+ ) . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
$i = 0;
while (!$tablestatstups->EOF) {
$id = (0 === ($i % 2) ? '1' : '2');
- echo "\t<tr class=\"data{$id}\">" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr class="data%s">',
+ $id
+ ) . \PHP_EOL;
echo "\t\t<td>", $this->misc->printVal($tablestatstups->fields['seq_scan'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
echo "\t\t<td>", $this->misc->printVal($tablestatstups->fields['seq_tup_read'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
echo "\t\t<td>", $this->misc->printVal($tablestatstups->fields['idx_scan'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
@@ -180,34 +219,88 @@ class InfoController extends BaseController
private function _printTablestatsio($tablestatsio): void
{
- echo "<h3>{$this->lang['strioperf']}</h3>" . \PHP_EOL;
+ echo \sprintf(
+ '<h3>%s</h3>',
+ $this->lang['strioperf']
+ ) . \PHP_EOL;
echo '<table>' . \PHP_EOL;
echo "\t<tr>" . \PHP_EOL;
- echo "\t\t<th class=\"data\" colspan=\"3\">{$this->lang['strheap']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\" colspan=\"3\">{$this->lang['strindex']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\" colspan=\"3\">{$this->lang['strtoast']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\" colspan=\"3\">{$this->lang['strtoastindex']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data" colspan="3">%s</th>',
+ $this->lang['strheap']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data" colspan="3">%s</th>',
+ $this->lang['strindex']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data" colspan="3">%s</th>',
+ $this->lang['strtoast']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data" colspan="3">%s</th>',
+ $this->lang['strtoastindex']
+ ) . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
echo "\t<tr>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strdisk']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strcache']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strpercent']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strdisk']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strcache']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strpercent']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strdisk']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strcache']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strpercent']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strdisk']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strcache']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strpercent']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strdisk']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strcache']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strpercent']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strdisk']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strcache']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strpercent']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strdisk']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strcache']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strpercent']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strdisk']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strcache']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strpercent']
+ ) . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
$i = 0;
while (!$tablestatsio->EOF) {
$id = (0 === ($i % 2) ? '1' : '2');
- echo "\t<tr class=\"data{$id}\">" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr class="data%s">',
+ $id
+ ) . \PHP_EOL;
$total = $tablestatsio->fields['heap_blks_hit'] + $tablestatsio->fields['heap_blks_read'];
@@ -219,7 +312,11 @@ class InfoController extends BaseController
echo "\t\t<td>", $this->misc->printVal($tablestatsio->fields['heap_blks_read'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
echo "\t\t<td>", $this->misc->printVal($tablestatsio->fields['heap_blks_hit'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
- echo "\t\t<td>({$percentage}{$this->lang['strpercent']})</td>" . \PHP_EOL;
+ echo \sprintf(
+ ' <td>(%s%s)</td>',
+ $percentage,
+ $this->lang['strpercent']
+ ) . \PHP_EOL;
$total = $tablestatsio->fields['idx_blks_hit'] + $tablestatsio->fields['idx_blks_read'];
@@ -231,7 +328,11 @@ class InfoController extends BaseController
echo "\t\t<td>", $this->misc->printVal($tablestatsio->fields['idx_blks_read'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
echo "\t\t<td>", $this->misc->printVal($tablestatsio->fields['idx_blks_hit'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
- echo "\t\t<td>({$percentage}{$this->lang['strpercent']})</td>" . \PHP_EOL;
+ echo \sprintf(
+ ' <td>(%s%s)</td>',
+ $percentage,
+ $this->lang['strpercent']
+ ) . \PHP_EOL;
$total = $tablestatsio->fields['toast_blks_hit'] + $tablestatsio->fields['toast_blks_read'];
@@ -243,7 +344,11 @@ class InfoController extends BaseController
echo "\t\t<td>", $this->misc->printVal($tablestatsio->fields['toast_blks_read'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
echo "\t\t<td>", $this->misc->printVal($tablestatsio->fields['toast_blks_hit'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
- echo "\t\t<td>({$percentage}{$this->lang['strpercent']})</td>" . \PHP_EOL;
+ echo \sprintf(
+ ' <td>(%s%s)</td>',
+ $percentage,
+ $this->lang['strpercent']
+ ) . \PHP_EOL;
$total = $tablestatsio->fields['tidx_blks_hit'] + $tablestatsio->fields['tidx_blks_read'];
@@ -255,7 +360,11 @@ class InfoController extends BaseController
echo "\t\t<td>", $this->misc->printVal($tablestatsio->fields['tidx_blks_read'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
echo "\t\t<td>", $this->misc->printVal($tablestatsio->fields['tidx_blks_hit'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
- echo "\t\t<td>({$percentage}{$this->lang['strpercent']})</td>" . \PHP_EOL;
+ echo \sprintf(
+ ' <td>(%s%s)</td>',
+ $percentage,
+ $this->lang['strpercent']
+ ) . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
$tablestatsio->movenext();
++$i;
@@ -266,20 +375,38 @@ class InfoController extends BaseController
private function _printIndexstatstups($indexstatstups): void
{
- echo "<h3>{$this->lang['stridxrowperf']}</h3>" . \PHP_EOL;
+ echo \sprintf(
+ '<h3>%s</h3>',
+ $this->lang['stridxrowperf']
+ ) . \PHP_EOL;
echo '<table>' . \PHP_EOL;
echo "\t<tr>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strindex']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strscan']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strread']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strfetch']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strindex']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strscan']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strread']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strfetch']
+ ) . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
$i = 0;
while (!$indexstatstups->EOF) {
$id = (0 === ($i % 2) ? '1' : '2');
- echo "\t<tr class=\"data{$id}\">" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr class="data%s">',
+ $id
+ ) . \PHP_EOL;
echo "\t\t<td>", $this->misc->printVal($indexstatstups->fields['indexrelname']), '</td>' . \PHP_EOL;
echo "\t\t<td>", $this->misc->printVal($indexstatstups->fields['idx_scan'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
echo "\t\t<td>", $this->misc->printVal($indexstatstups->fields['idx_tup_read'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
@@ -294,20 +421,38 @@ class InfoController extends BaseController
private function _printIndexstatsio($indexstatsio): void
{
- echo "<h3>{$this->lang['stridxioperf']}</h3>" . \PHP_EOL;
+ echo \sprintf(
+ '<h3>%s</h3>',
+ $this->lang['stridxioperf']
+ ) . \PHP_EOL;
echo '<table>' . \PHP_EOL;
echo "\t<tr>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strindex']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strdisk']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strcache']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strpercent']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strindex']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strdisk']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strcache']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strpercent']
+ ) . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
$i = 0;
while (!$indexstatsio->EOF) {
$id = (0 === ($i % 2) ? '1' : '2');
- echo "\t<tr class=\"data{$id}\">" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr class="data%s">',
+ $id
+ ) . \PHP_EOL;
$total = $indexstatsio->fields['idx_blks_hit'] + $indexstatsio->fields['idx_blks_read'];
if (0 < $total) {
@@ -319,7 +464,11 @@ class InfoController extends BaseController
echo "\t\t<td>", $this->misc->printVal($indexstatsio->fields['indexrelname']), '</td>' . \PHP_EOL;
echo "\t\t<td>", $this->misc->printVal($indexstatsio->fields['idx_blks_read'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
echo "\t\t<td>", $this->misc->printVal($indexstatsio->fields['idx_blks_hit'], 'int4', $this->shownull), '</td>' . \PHP_EOL;
- echo "\t\t<td>({$percentage}{$this->lang['strpercent']})</td>" . \PHP_EOL;
+ echo \sprintf(
+ ' <td>(%s%s)</td>',
+ $percentage,
+ $this->lang['strpercent']
+ ) . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
$indexstatsio->movenext();
++$i;
@@ -330,7 +479,10 @@ class InfoController extends BaseController
private function _printParents($parents): void
{
- echo "<h3>{$this->lang['strparenttables']}</h3>" . \PHP_EOL;
+ echo \sprintf(
+ '<h3>%s</h3>',
+ $this->lang['strparenttables']
+ ) . \PHP_EOL;
$columns = [
'schema' => [
@@ -366,7 +518,10 @@ class InfoController extends BaseController
private function _printReferring($referrers): void
{
- echo "<h3>{$this->lang['strreferringtables']}</h3>" . \PHP_EOL;
+ echo \sprintf(
+ '<h3>%s</h3>',
+ $this->lang['strreferringtables']
+ ) . \PHP_EOL;
$columns = [
'schema' => [
diff --git a/src/controllers/IntroController.php b/src/controllers/IntroController.php
index b24585cf..81a92def 100644
--- a/src/controllers/IntroController.php
+++ b/src/controllers/IntroController.php
@@ -52,7 +52,13 @@ class IntroController extends BaseController
foreach ($this->appLangFiles as $k => $v) {
$selected = ($k === $language) ? ' selected="selected"' : '';
- $intro_html .= "\t<option value=\"{$k}\"" . $selected . ">{$v}</option>" . \PHP_EOL;
+ $intro_html .= \sprintf(
+ ' <option value="%s"',
+ $k
+ ) . $selected . \sprintf(
+ '>%s</option>',
+ $v
+ ) . \PHP_EOL;
}
$intro_html .= '</select>';
@@ -65,7 +71,13 @@ class IntroController extends BaseController
foreach ($this->appThemes as $k => $v) {
$selected = ($k === $this->conf['theme']) ? ' selected="selected"' : '';
- $intro_html .= "\t<option value=\"{$k}\"" . $selected . ">{$v}</option>" . \PHP_EOL;
+ $intro_html .= \sprintf(
+ ' <option value="%s"',
+ $k
+ ) . $selected . \sprintf(
+ '>%s</option>',
+ $v
+ ) . \PHP_EOL;
}
$intro_html .= '</select>';
diff --git a/src/controllers/LoginController.php b/src/controllers/LoginController.php
index 8ab7fe76..7f954517 100644
--- a/src/controllers/LoginController.php
+++ b/src/controllers/LoginController.php
@@ -86,7 +86,10 @@ class LoginController extends BaseController
}
$server_info = $this->misc->getServerInfo($server_id);
- $title = \sprintf($this->lang['strlogintitle'], $server_info['desc']);
+ $title = \sprintf(
+ $this->lang['strlogintitle'],
+ $server_info['desc']
+ );
$printTitle = $this->printTitle($title, null, false);
diff --git a/src/controllers/MaterializedviewpropertiesController.php b/src/controllers/MaterializedviewpropertiesController.php
index 7cbbf275..8a5b5df7 100644
--- a/src/controllers/MaterializedviewpropertiesController.php
+++ b/src/controllers/MaterializedviewpropertiesController.php
@@ -6,13 +6,16 @@
namespace PHPPgAdmin\Controller;
+use PHPPgAdmin\Traits\ExportTrait;
+use PHPPgAdmin\Traits\ViewsMatViewsPropertiesTrait;
+
/**
* Base controller class.
*/
class MaterializedviewpropertiesController extends BaseController
{
- use \PHPPgAdmin\Traits\ExportTrait;
- use \PHPPgAdmin\Traits\ViewsMatViewsPropertiesTrait;
+ use ExportTrait;
+ use ViewsMatViewsPropertiesTrait;
public $controller_title = 'strviews';
@@ -152,21 +155,39 @@ class MaterializedviewpropertiesController extends BaseController
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 \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strdefinition']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><textarea style=\"width: 100%;\" rows=\"20\" cols=\"50\" name=\"formDefinition\">",
\htmlspecialchars($_POST['formDefinition']), "</textarea></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><textarea rows=\"3\" cols=\"32\" name=\"formComment\">",
\htmlspecialchars($_POST['formComment']), "</textarea></td>\n\t</tr>" . \PHP_EOL;
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="save_edit" />' . \PHP_EOL;
echo '<input type="hidden" name="matview" value="', \htmlspecialchars($_REQUEST[$this->subject]), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
}
@@ -191,8 +212,16 @@ class MaterializedviewpropertiesController extends BaseController
// Output matview header
echo '<table>' . \PHP_EOL;
- echo "<tr><th class=\"data required\">{$this->lang['strname']}</th><th class=\"data required\">{$this->lang['strtype']}</th>";
- echo "<th class=\"data\">{$this->lang['strdefault']}</th><th class=\"data\">{$this->lang['strcomment']}</th></tr>";
+ echo \sprintf(
+ '<tr><th class="data required">%s</th><th class="data required">%s</th>',
+ $this->lang['strname'],
+ $this->lang['strtype']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th><th class="data">%s</th></tr>',
+ $this->lang['strdefault'],
+ $this->lang['strcomment']
+ );
$column = $data->getTableAttributes($_REQUEST[$this->subject], $_REQUEST['column']);
@@ -218,8 +247,15 @@ class MaterializedviewpropertiesController extends BaseController
echo '<input type="hidden" name="matview" value="', \htmlspecialchars($_REQUEST[$this->subject]), '" />' . \PHP_EOL;
echo '<input type="hidden" name="column" value="', \htmlspecialchars($_REQUEST['column']), '" />' . \PHP_EOL;
echo '<input type="hidden" name="olddefault" value="', \htmlspecialchars($_REQUEST['olddefault']), '" />' . \PHP_EOL;
- echo "<input type=\"submit\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
break;
@@ -260,7 +296,10 @@ class MaterializedviewpropertiesController extends BaseController
break;
default:
- echo "<p>{$this->lang['strinvalidparam']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strinvalidparam']
+ ) . \PHP_EOL;
}
}
@@ -287,16 +326,25 @@ class MaterializedviewpropertiesController extends BaseController
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 \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
echo '<td class="data1">';
- echo "<input name=\"name\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ '<input name="name" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_POST['name']), '" /></td></tr>' . \PHP_EOL;
if ($data->isSuperUser()) {
// Fetch all users
$users = $data->getUsers();
- echo "<tr><th class=\"data left required\">{$this->lang['strowner']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strowner']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="owner">';
while (!$users->EOF) {
@@ -310,7 +358,10 @@ class MaterializedviewpropertiesController extends BaseController
if ($data->hasAlterTableSchema()) {
$schemas = $data->getSchemas();
- echo "<tr><th class=\"data left required\">{$this->lang['strschema']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strschema']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="newschema">';
while (!$schemas->EOF) {
@@ -322,7 +373,10 @@ class MaterializedviewpropertiesController extends BaseController
echo '</select></td></tr>' . \PHP_EOL;
}
- echo "<tr><th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo '<td class="data1">';
echo '<textarea rows="3" cols="32" name="comment">';
echo \htmlspecialchars($_POST['comment']), '</textarea></td></tr>' . \PHP_EOL;
@@ -330,11 +384,21 @@ class MaterializedviewpropertiesController extends BaseController
echo '<input type="hidden" name="action" value="alter" />' . \PHP_EOL;
echo '<input type="hidden" name="matview" value="', \htmlspecialchars($_REQUEST[$this->subject]), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<p><input type=\"submit\" name=\"alter\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<p><input type="submit" name="alter" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
} else {
// For databases that don't allow owner change
diff --git a/src/controllers/MaterializedviewsController.php b/src/controllers/MaterializedviewsController.php
index 053b31e6..38dd61ba 100644
--- a/src/controllers/MaterializedviewsController.php
+++ b/src/controllers/MaterializedviewsController.php
@@ -7,13 +7,14 @@
namespace PHPPgAdmin\Controller;
use PHPPgAdmin\Decorators\Decorator;
+use PHPPgAdmin\Traits\ViewsMatviewsTrait;
/**
* Base controller class.
*/
class MaterializedviewsController extends BaseController
{
- use \PHPPgAdmin\Traits\ViewsMatviewsTrait;
+ use ViewsMatviewsTrait;
public $table_place = 'matviews-matviews';
@@ -124,7 +125,10 @@ class MaterializedviewsController extends BaseController
$this->keystring => [
'title' => 'M ' . $this->lang['strview'],
'field' => Decorator::field('relname'),
- 'url' => \containerInstance()->subFolder . "/redirect/matview?{$this->misc->href}&amp;",
+ 'url' => \containerInstance()->subFolder . \sprintf(
+ '/redirect/matview?%s&amp;',
+ $this->misc->href
+ ),
'vars' => [$this->keystring => 'relname'],
],
'owner' => [
@@ -287,20 +291,35 @@ class MaterializedviewsController extends BaseController
if (isset($_REQUEST['ma'])) {
foreach ($_REQUEST['ma'] as $v) {
$a = \unserialize(\htmlspecialchars_decode($v, \ENT_QUOTES));
- echo '<p>', \sprintf($this->lang['strconfdropview'], $this->misc->printVal($a['view'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropview'],
+ $this->misc->printVal($a['view'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="view[]" value="', \htmlspecialchars($a['view']), '" />' . \PHP_EOL;
}
} else {
- echo '<p>', \sprintf($this->lang['strconfdropview'], $this->misc->printVal($_REQUEST['matview'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropview'],
+ $this->misc->printVal($_REQUEST['matview'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="view" value="', \htmlspecialchars($_REQUEST['matview']), '" />' . \PHP_EOL;
}
echo '<input type="hidden" name="action" value="drop" />' . \PHP_EOL;
echo $this->view->form;
- echo "<p><input type=\"checkbox\" id=\"cascade\" name=\"cascade\" /> <label for=\"cascade\">{$this->lang['strcascade']}</label></p>" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<p><input type="checkbox" id="cascade" name="cascade" /> <label for="cascade">%s</label></p>',
+ $this->lang['strcascade']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
if (\is_array($_POST['view'])) {
@@ -412,22 +431,47 @@ class MaterializedviewsController extends BaseController
$this->printTitle($this->lang['strcreateview'], 'pg.matview.create');
$this->printMsg($msg);
- echo '<form action="' . \containerInstance()->subFolder . "/src/views/{$this->view_name}\" method=\"post\">" . \PHP_EOL;
+ echo '<form action="' . \containerInstance()->subFolder . \sprintf(
+ '/src/views/%s" method="post">',
+ $this->view_name
+ ) . \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=\"",
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data1"><input name="formView" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['formView']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strdefinition']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strdefinition']
+ ) . \PHP_EOL;
echo "\t<td class=\"data1\"><textarea style=\"width:100%;\" rows=\"10\" cols=\"50\" name=\"formDefinition\">",
\htmlspecialchars($_REQUEST['formDefinition']), "</textarea></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><textarea name=\"formComment\" rows=\"3\" cols=\"32\">",
\htmlspecialchars($_REQUEST['formComment']), "</textarea></td>\n\t</tr>" . \PHP_EOL;
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="save_create" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
}
diff --git a/src/controllers/OperatorsController.php b/src/controllers/OperatorsController.php
index 562e117a..bd49bdcc 100644
--- a/src/controllers/OperatorsController.php
+++ b/src/controllers/OperatorsController.php
@@ -117,7 +117,10 @@ class OperatorsController extends BaseController
'operator' => [
'title' => $this->lang['stroperator'],
'field' => Decorator::field('oprname'),
- 'url' => "operators?action=properties&amp;{$this->misc->href}&amp;",
+ 'url' => \sprintf(
+ 'operators?action=properties&amp;%s&amp;',
+ $this->misc->href
+ ),
'vars' => ['operator' => 'oprname', 'operator_oid' => 'oid'],
],
'leftarg' => [
@@ -183,37 +186,79 @@ class OperatorsController extends BaseController
if (0 < $oprdata->recordCount()) {
echo '<table>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strname']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($oprdata->fields['oprname']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strleftarg']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strleftarg']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($oprdata->fields['oprleftname']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strrightarg']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strrightarg']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($oprdata->fields['oprrightname']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strcommutator']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strcommutator']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($oprdata->fields['oprcom']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strnegator']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strnegator']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($oprdata->fields['oprnegate']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strjoin']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strjoin']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($oprdata->fields['oprjoin']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strhashes']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strhashes']
+ ) . \PHP_EOL;
echo '<td class="data1">', ($oprdata->fields['oprcanhash']) ? $this->lang['stryes'] : $this->lang['strno'], '</td></tr>' . \PHP_EOL;
// these field only exists in 8.2 and before in pg_catalog
if (isset($oprdata->fields['oprlsortop'])) {
- echo "<tr><th class=\"data left\">{$this->lang['strmerges']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strmerges']
+ ) . \PHP_EOL;
echo '<td class="data1">', ('0' !== $oprdata->fields['oprlsortop'] && '0' !== $oprdata->fields['oprrsortop']) ? $this->lang['stryes'] : $this->lang['strno'], '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strrestrict']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strrestrict']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($oprdata->fields['oprrest']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strleftsort']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strleftsort']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($oprdata->fields['oprlsortop']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strrightsort']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strrightsort']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($oprdata->fields['oprrsortop']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strlessthan']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strlessthan']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($oprdata->fields['oprltcmpop']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strgreaterthan']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strgreaterthan']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($oprdata->fields['oprgtcmpop']), '</td></tr>' . \PHP_EOL;
} else {
- echo "<tr><th class=\"data left\">{$this->lang['strmerges']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strmerges']
+ ) . \PHP_EOL;
echo '<td class="data1">', $data->phpBool($oprdata->fields['oprcanmerge']) ? $this->lang['stryes'] : $this->lang['strno'], '</td></tr>' . \PHP_EOL;
}
echo '</table>' . \PHP_EOL;
@@ -254,16 +299,29 @@ class OperatorsController extends BaseController
$this->printTrail('operator');
$this->printTitle($this->lang['strdrop'], 'pg.operator.drop');
- echo '<p>', \sprintf($this->lang['strconfdropoperator'], $this->misc->printVal($_REQUEST['operator'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropoperator'],
+ $this->misc->printVal($_REQUEST['operator'])
+ ), '</p>' . \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 \sprintf(
+ '<p><input type="checkbox" id="cascade" name="cascade" /> <label for="cascade">%s</label></p>',
+ $this->lang['strcascade']
+ ) . \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;
echo '<input type="hidden" name="operator_oid" value="', \htmlspecialchars($_REQUEST['operator_oid']), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
$status = $data->dropOperator($_POST['operator_oid'], isset($_POST['cascade']));
diff --git a/src/controllers/PrivilegesController.php b/src/controllers/PrivilegesController.php
index c5e5498e..fc4397b3 100644
--- a/src/controllers/PrivilegesController.php
+++ b/src/controllers/PrivilegesController.php
@@ -102,9 +102,17 @@ class PrivilegesController extends BaseController
echo '<table>' . \PHP_EOL;
if ($data->hasRoles()) {
- echo "<tr><th class=\"data\">{$this->lang['strrole']}</th>";
+ echo \sprintf(
+ '<tr><th class="data">%s</th>',
+ $this->lang['strrole']
+ );
} else {
- echo "<tr><th class=\"data\">{$this->lang['strtype']}</th><th class=\"data\">{$this->lang['struser']}/{$this->lang['strgroup']}</th>";
+ echo \sprintf(
+ '<tr><th class="data">%s</th><th class="data">%s/%s</th>',
+ $this->lang['strtype'],
+ $this->lang['struser'],
+ $this->lang['strgroup']
+ );
}
foreach ($data->privlist[$subject] as $v2) {
@@ -113,11 +121,17 @@ class PrivilegesController extends BaseController
continue;
}
- echo "<th class=\"data\">{$v2}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data">%s</th>',
+ $v2
+ ) . \PHP_EOL;
}
if ($data->hasGrantOption()) {
- echo "<th class=\"data\">{$this->lang['strgrantor']}</th>";
+ echo \sprintf(
+ '<th class="data">%s</th>',
+ $this->lang['strgrantor']
+ );
}
echo '</tr>' . \PHP_EOL;
@@ -126,7 +140,10 @@ class PrivilegesController extends BaseController
foreach ($privileges as $v) {
$id = (0 === ($i % 2) ? '1' : '2');
- echo "<tr class=\"data{$id}\">" . \PHP_EOL;
+ echo \sprintf(
+ '<tr class="data%s">',
+ $id
+ ) . \PHP_EOL;
if (!$data->hasRoles()) {
echo '<td>', $this->misc->printVal($v[0]), '</td>' . \PHP_EOL;
@@ -165,7 +182,10 @@ class PrivilegesController extends BaseController
echo '</table>';
} else {
- echo "<p>{$this->lang['strnoprivileges']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnoprivileges']
+ ) . \PHP_EOL;
}
$this->printGrantLinks();
}
@@ -183,9 +203,18 @@ class PrivilegesController extends BaseController
case 'sequence':
case 'function':
case 'tablespace':
- $alllabel = "showall{$subject}s";
- $allurl = "{$subject}s";
- $alltxt = $this->lang["strshowall{$subject}s"];
+ $alllabel = \sprintf(
+ 'showall%ss',
+ $subject
+ );
+ $allurl = \sprintf(
+ '%ss',
+ $subject
+ );
+ $alltxt = $this->lang[\sprintf(
+ 'strshowall%ss',
+ $subject
+ )];
break;
case 'schema':
@@ -212,7 +241,10 @@ class PrivilegesController extends BaseController
'database' => $_REQUEST['database'],
'schema' => $_REQUEST['schema'],
$subject => $object,
- "{$subject}_oid" => $objectoid,
+ \sprintf(
+ '%s_oid',
+ $subject
+ ) => $objectoid,
'subject' => $subject,
];
} elseif ('column' === $subject) {
@@ -318,17 +350,29 @@ class PrivilegesController extends BaseController
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 \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strusers']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="username[]" multiple="multiple" size="', \min(6, $users->recordCount()), '">' . \PHP_EOL;
while (!$users->EOF) {
$uname = \htmlspecialchars($users->fields['usename']);
- echo "<option value=\"{$uname}\"",
- \in_array($users->fields['usename'], $_REQUEST['username'], true) ? ' selected="selected"' : '', ">{$uname}</option>" . \PHP_EOL;
+ echo \sprintf(
+ '<option value="%s"',
+ $uname
+ ),
+ \in_array($users->fields['usename'], $_REQUEST['username'], true) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $uname
+ ) . \PHP_EOL;
$users->moveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strgroups']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strgroups']
+ ) . \PHP_EOL;
echo '<td class="data1">' . \PHP_EOL;
echo '<input type="checkbox" id="public" name="public"', (isset($_REQUEST['public']) ? ' checked="checked"' : ''), ' /><label for="public">PUBLIC</label>' . \PHP_EOL;
// Only show groups if there are groups!
@@ -337,25 +381,45 @@ class PrivilegesController extends BaseController
while (!$groups->EOF) {
$gname = \htmlspecialchars($groups->fields['groname']);
- echo "<option value=\"{$gname}\"",
- \in_array($groups->fields['groname'], $_REQUEST['groupname'], true) ? ' selected="selected"' : '', ">{$gname}</option>" . \PHP_EOL;
+ echo \sprintf(
+ '<option value="%s"',
+ $gname
+ ),
+ \in_array($groups->fields['groname'], $_REQUEST['groupname'], true) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $gname
+ ) . \PHP_EOL;
$groups->moveNext();
}
echo '</select>' . \PHP_EOL;
}
echo '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left required\">{$this->lang['strprivileges']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strprivileges']
+ ) . \PHP_EOL;
echo '<td class="data1">' . \PHP_EOL;
foreach ($data->privlist[$_REQUEST['subject']] as $v) {
$v = \htmlspecialchars($v);
- echo "<input type=\"checkbox\" id=\"privilege[{$v}]\" name=\"privilege[{$v}]\"",
- isset($_REQUEST['privilege'][$v]) ? ' checked="checked"' : '', " /><label for=\"privilege[{$v}]\">{$v}</label><br />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="checkbox" id="privilege[%s]" name="privilege[%s]"',
+ $v,
+ $v
+ ),
+ isset($_REQUEST['privilege'][$v]) ? ' checked="checked"' : '', \sprintf(
+ ' /><label for="privilege[%s]">%s</label><br />',
+ $v,
+ $v
+ ) . \PHP_EOL;
}
echo '</td></tr>' . \PHP_EOL;
// Grant option
if ($data->hasGrantOption()) {
- echo "<tr><th class=\"data left\">{$this->lang['stroptions']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['stroptions']
+ ) . \PHP_EOL;
echo '<td class="data1">' . \PHP_EOL;
if ('grant' === $mode) {
@@ -389,9 +453,17 @@ class PrivilegesController extends BaseController
}
echo $this->view->form;
- echo \sprintf('<input type="submit" name="%s" value="%s" />%s', $mode, $this->lang['str' . $mode], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="%s" value="%s" />%s',
+ $mode,
+ $this->lang['str' . $mode],
+ \PHP_EOL
+ );
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" /></p>";
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>',
+ $this->lang['strcancel']
+ );
echo '</form>' . \PHP_EOL;
}
diff --git a/src/controllers/RolesController.php b/src/controllers/RolesController.php
index 85c932dd..9f44e697 100644
--- a/src/controllers/RolesController.php
+++ b/src/controllers/RolesController.php
@@ -6,6 +6,7 @@
namespace PHPPgAdmin\Controller;
+use ADORecordSet;
use PHPPgAdmin\Decorators\Decorator;
/**
@@ -116,7 +117,10 @@ class RolesController extends BaseController
'role' => [
'title' => $this->lang['strrole'],
'field' => Decorator::field('rolname'),
- 'url' => \containerInstance()->subFolder . "/redirect/role?action=properties&amp;{$this->misc->href}&amp;",
+ 'url' => \containerInstance()->subFolder . \sprintf(
+ '/redirect/role?action=properties&amp;%s&amp;',
+ $this->misc->href
+ ),
'vars' => ['rolename' => 'rolname'],
],
'group' => [
@@ -242,42 +246,92 @@ class RolesController extends BaseController
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;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strpassword']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required" style="width: 130px">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data1"><input size="15" maxlength="%s" name="formRolename" value="',
+ $data->_maxNameLen
+ ), \htmlspecialchars($_POST['formRolename']), "\" /></td>\n\t</tr>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strpassword']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input size=\"15\" type=\"password\" name=\"formPassword\" value=\"", \htmlspecialchars($_POST['formPassword']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strconfirm']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strconfirm']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input size=\"15\" type=\"password\" name=\"formConfirm\" value=\"", \htmlspecialchars($_POST['formConfirm']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\"><label for=\"formSuper\">{$this->lang['strsuper']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left"><label for="formSuper">%s</label></th>',
+ $this->lang['strsuper']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"checkbox\" id=\"formSuper\" name=\"formSuper\"",
(isset($_POST['formSuper'])) ? ' checked="checked"' : '', " /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\"><label for=\"formCreateDB\">{$this->lang['strcreatedb']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left"><label for="formCreateDB">%s</label></th>',
+ $this->lang['strcreatedb']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"checkbox\" id=\"formCreateDB\" name=\"formCreateDB\"",
(isset($_POST['formCreateDB'])) ? ' checked="checked"' : '', " /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\"><label for=\"formCreateRole\">{$this->lang['strcancreaterole']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left"><label for="formCreateRole">%s</label></th>',
+ $this->lang['strcancreaterole']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"checkbox\" id=\"formCreateRole\" name=\"formCreateRole\"",
(isset($_POST['formCreateRole'])) ? ' checked="checked"' : '', " /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\"><label for=\"formInherits\">{$this->lang['strinheritsprivs']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left"><label for="formInherits">%s</label></th>',
+ $this->lang['strinheritsprivs']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"checkbox\" id=\"formInherits\" name=\"formInherits\"",
(isset($_POST['formInherits'])) ? ' checked="checked"' : '', " /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\"><label for=\"formCanLogin\">{$this->lang['strcanlogin']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left"><label for="formCanLogin">%s</label></th>',
+ $this->lang['strcanlogin']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"checkbox\" id=\"formCanLogin\" name=\"formCanLogin\"",
(isset($_POST['formCanLogin'])) ? ' checked="checked"' : '', " /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strconnlimit']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strconnlimit']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input size=\"4\" name=\"formConnLimit\" value=\"", \htmlspecialchars($_POST['formConnLimit']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strexpires']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strexpires']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input size=\"23\" name=\"formExpires\" value=\"", \htmlspecialchars($_POST['formExpires']), "\" /></td>\n\t</tr>" . \PHP_EOL;
$roles = $data->getRoles();
if (0 < $roles->recordCount()) {
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strmemberof']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strmemberof']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data\">" . \PHP_EOL;
echo "\t\t\t<select name=\"memberof[]\" multiple=\"multiple\" size=\"", \min(20, $roles->recordCount()), '">' . \PHP_EOL;
while (!$roles->EOF) {
$rolename = $roles->fields['rolname'];
- echo "\t\t\t\t<option value=\"{$rolename}\"",
+ echo \sprintf(
+ ' <option value="%s"',
+ $rolename
+ ),
(\in_array($rolename, $_POST['memberof'], true) ? ' selected="selected"' : ''), '>', $this->misc->printVal($rolename), '</option>' . \PHP_EOL;
$roles->moveNext();
}
@@ -285,13 +339,20 @@ class RolesController extends BaseController
echo "\t\t</td>\n\t</tr>" . \PHP_EOL;
$roles->moveFirst();
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strmembers']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strmembers']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data\">" . \PHP_EOL;
echo "\t\t\t<select name=\"members[]\" multiple=\"multiple\" size=\"", \min(20, $roles->recordCount()), '">' . \PHP_EOL;
while (!$roles->EOF) {
$rolename = $roles->fields['rolname'];
- echo "\t\t\t\t<option value=\"{$rolename}\"",
+ echo \sprintf(
+ ' <option value="%s"',
+ $rolename
+ ),
(\in_array($rolename, $_POST['members'], true) ? ' selected="selected"' : ''), '>', $this->misc->printVal($rolename), '</option>' . \PHP_EOL;
$roles->moveNext();
}
@@ -299,13 +360,20 @@ class RolesController extends BaseController
echo "\t\t</td>\n\t</tr>" . \PHP_EOL;
$roles->moveFirst();
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['stradminmembers']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['stradminmembers']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data\">" . \PHP_EOL;
echo "\t\t\t<select name=\"adminmembers[]\" multiple=\"multiple\" size=\"", \min(20, $roles->recordCount()), '">' . \PHP_EOL;
while (!$roles->EOF) {
$rolename = $roles->fields['rolname'];
- echo "\t\t\t\t<option value=\"{$rolename}\"",
+ echo \sprintf(
+ ' <option value="%s"',
+ $rolename
+ ),
(\in_array($rolename, $_POST['adminmembers'], true) ? ' selected="selected"' : ''), '>', $this->misc->printVal($rolename), '</option>' . \PHP_EOL;
$roles->moveNext();
}
@@ -316,8 +384,15 @@ class RolesController extends BaseController
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="save_create" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"create\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="create" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
}
@@ -379,7 +454,10 @@ class RolesController extends BaseController
$roledata = $data->getRole($_REQUEST['rolename']);
if (0 >= $roledata->recordCount()) {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
return;
}
@@ -395,30 +473,73 @@ class RolesController extends BaseController
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;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strpassword']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left" style="width: 130px">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo "\t\t<td class=\"data1\">", ($canRename ? \sprintf(
+ '<input name="formNewRoleName" size="15" maxlength="%s" value="',
+ $data->_maxNameLen
+ ) . \htmlspecialchars($_POST['formNewRoleName']) . '" />' : $this->misc->printVal($roledata->fields['rolname'])), "</td>\n\t</tr>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strpassword']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"password\" size=\"15\" name=\"formPassword\" value=\"", \htmlspecialchars($_POST['formPassword']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strconfirm']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strconfirm']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"password\" size=\"15\" name=\"formConfirm\" value=\"\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\"><label for=\"formSuper\">{$this->lang['strsuper']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left"><label for="formSuper">%s</label></th>',
+ $this->lang['strsuper']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"checkbox\" id=\"formSuper\" name=\"formSuper\"",
(isset($_POST['formSuper'])) ? ' checked="checked"' : '', " /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\"><label for=\"formCreateDB\">{$this->lang['strcreatedb']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left"><label for="formCreateDB">%s</label></th>',
+ $this->lang['strcreatedb']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"checkbox\" id=\"formCreateDB\" name=\"formCreateDB\"",
(isset($_POST['formCreateDB'])) ? ' checked="checked"' : '', " /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\"><label for=\"formCreateRole\">{$this->lang['strcancreaterole']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left"><label for="formCreateRole">%s</label></th>',
+ $this->lang['strcancreaterole']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"checkbox\" id=\"formCreateRole\" name=\"formCreateRole\"",
(isset($_POST['formCreateRole'])) ? ' checked="checked"' : '', " /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\"><label for=\"formInherits\">{$this->lang['strinheritsprivs']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left"><label for="formInherits">%s</label></th>',
+ $this->lang['strinheritsprivs']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"checkbox\" id=\"formInherits\" name=\"formInherits\"",
(isset($_POST['formInherits'])) ? ' checked="checked"' : '', " /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\"><label for=\"formCanLogin\">{$this->lang['strcanlogin']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left"><label for="formCanLogin">%s</label></th>',
+ $this->lang['strcanlogin']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"checkbox\" id=\"formCanLogin\" name=\"formCanLogin\"",
(isset($_POST['formCanLogin'])) ? ' checked="checked"' : '', " /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strconnlimit']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strconnlimit']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input size=\"4\" name=\"formConnLimit\" value=\"", \htmlspecialchars($_POST['formConnLimit']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strexpires']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strexpires']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input size=\"23\" name=\"formExpires\" value=\"", \htmlspecialchars($_POST['formExpires']), "\" /></td>\n\t</tr>" . \PHP_EOL;
$this->_populateMemberof($data);
@@ -433,13 +554,20 @@ class RolesController extends BaseController
$roles = $data->getRoles($_REQUEST['rolename']);
if (0 < $roles->recordCount()) {
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strmemberof']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strmemberof']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data\">" . \PHP_EOL;
echo "\t\t\t<select name=\"memberof[]\" multiple=\"multiple\" size=\"", \min(20, $roles->recordCount()), '">' . \PHP_EOL;
while (!$roles->EOF) {
$rolename = $roles->fields['rolname'];
- echo "\t\t\t\t<option value=\"{$rolename}\"",
+ echo \sprintf(
+ ' <option value="%s"',
+ $rolename
+ ),
(\in_array($rolename, $_POST['memberof'], true) ? ' selected="selected"' : ''), '>', $this->misc->printVal($rolename), '</option>' . \PHP_EOL;
$roles->moveNext();
}
@@ -447,13 +575,20 @@ class RolesController extends BaseController
echo "\t\t</td>\n\t</tr>" . \PHP_EOL;
$roles->moveFirst();
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strmembers']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strmembers']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data\">" . \PHP_EOL;
echo "\t\t\t<select name=\"members[]\" multiple=\"multiple\" size=\"", \min(20, $roles->recordCount()), '">' . \PHP_EOL;
while (!$roles->EOF) {
$rolename = $roles->fields['rolname'];
- echo "\t\t\t\t<option value=\"{$rolename}\"",
+ echo \sprintf(
+ ' <option value="%s"',
+ $rolename
+ ),
(\in_array($rolename, $_POST['members'], true) ? ' selected="selected"' : ''), '>', $this->misc->printVal($rolename), '</option>' . \PHP_EOL;
$roles->moveNext();
}
@@ -461,13 +596,20 @@ class RolesController extends BaseController
echo "\t\t</td>\n\t</tr>" . \PHP_EOL;
$roles->moveFirst();
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['stradminmembers']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['stradminmembers']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data\">" . \PHP_EOL;
echo "\t\t\t<select name=\"adminmembers[]\" multiple=\"multiple\" size=\"", \min(20, $roles->recordCount()), '">' . \PHP_EOL;
while (!$roles->EOF) {
$rolename = $roles->fields['rolname'];
- echo "\t\t\t\t<option value=\"{$rolename}\"",
+ echo \sprintf(
+ ' <option value="%s"',
+ $rolename
+ ),
(\in_array($rolename, $_POST['adminmembers'], true) ? ' selected="selected"' : ''), '>', $this->misc->printVal($rolename), '</option>' . \PHP_EOL;
$roles->moveNext();
}
@@ -482,8 +624,15 @@ class RolesController extends BaseController
echo '<input type="hidden" name="membersold" value="', $_POST['membersold'] ?? \htmlspecialchars($membersold), '" />' . \PHP_EOL;
echo '<input type="hidden" name="adminmembersold" value="', $_POST['adminmembersold'] ?? \htmlspecialchars($adminmembersold), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"alter\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="alter" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
}
@@ -533,14 +682,24 @@ class RolesController extends BaseController
$this->printTrail('role');
$this->printTitle($this->lang['strdroprole'], 'pg.role.drop');
- echo '<p>', \sprintf($this->lang['strconfdroprole'], $this->misc->printVal($_REQUEST['rolename'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdroprole'],
+ $this->misc->printVal($_REQUEST['rolename'])
+ ), '</p>' . \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;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
$status = $data->dropRole($_REQUEST['rolename']);
@@ -578,25 +737,65 @@ class RolesController extends BaseController
echo '<table>' . \PHP_EOL;
echo "\t<tr>\n\t\t<th class=\"data\" style=\"width: 130px\">Description</th>" . \PHP_EOL;
echo "\t\t<th class=\"data\" style=\"width: 120\">Value</th>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<td class=\"data1\">{$this->lang['strname']}</td>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <td class="data1">%s</td>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">", \htmlspecialchars($_REQUEST['rolename']), "</td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<td class=\"data2\">{$this->lang['strsuper']}</td>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <td class="data2">%s</td>',
+ $this->lang['strsuper']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data2\">", (($roledata->fields['rolsuper']) ? $this->lang['stryes'] : $this->lang['strno']), "</td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<td class=\"data1\">{$this->lang['strcreatedb']}</td>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <td class="data1">%s</td>',
+ $this->lang['strcreatedb']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">", (($roledata->fields['rolcreatedb']) ? $this->lang['stryes'] : $this->lang['strno']), '</td>' . \PHP_EOL;
- echo "\t<tr>\n\t\t<td class=\"data2\">{$this->lang['strcancreaterole']}</td>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <td class="data2">%s</td>',
+ $this->lang['strcancreaterole']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data2\">", (($roledata->fields['rolcreaterole']) ? $this->lang['stryes'] : $this->lang['strno']), '</td>' . \PHP_EOL;
- echo "\t<tr>\n\t\t<td class=\"data1\">{$this->lang['strinheritsprivs']}</td>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <td class="data1">%s</td>',
+ $this->lang['strinheritsprivs']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">", (($roledata->fields['rolinherit']) ? $this->lang['stryes'] : $this->lang['strno']), '</td>' . \PHP_EOL;
- echo "\t<tr>\n\t\t<td class=\"data2\">{$this->lang['strcanlogin']}</td>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <td class="data2">%s</td>',
+ $this->lang['strcanlogin']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data2\">", (($roledata->fields['rolcanlogin']) ? $this->lang['stryes'] : $this->lang['strno']), '</td>' . \PHP_EOL;
- echo "\t<tr>\n\t\t<td class=\"data1\">{$this->lang['strconnlimit']}</td>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <td class="data1">%s</td>',
+ $this->lang['strconnlimit']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">", ('-1' === $roledata->fields['rolconnlimit'] ? $this->lang['strnolimit'] : $this->misc->printVal($roledata->fields['rolconnlimit'])), '</td>' . \PHP_EOL;
- echo "\t<tr>\n\t\t<td class=\"data2\">{$this->lang['strexpires']}</td>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <td class="data2">%s</td>',
+ $this->lang['strexpires']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data2\">", ('infinity' === $roledata->fields['rolvaliduntil'] || null === $roledata->fields['rolvaliduntil'] ? $this->lang['strnever'] : $this->misc->printVal($roledata->fields['rolvaliduntil'])), '</td>' . \PHP_EOL;
- echo "\t<tr>\n\t\t<td class=\"data1\">{$this->lang['strsessiondefaults']}</td>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <td class="data1">%s</td>',
+ $this->lang['strsessiondefaults']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">", $this->misc->printVal($roledata->fields['rolconfig']), '</td>' . \PHP_EOL;
- echo "\t<tr>\n\t\t<td class=\"data2\">{$this->lang['strmemberof']}</td>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <td class="data2">%s</td>',
+ $this->lang['strmemberof']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data2\">";
$memberof = $data->getMemberOf($_REQUEST['rolename']);
@@ -607,7 +806,11 @@ class RolesController extends BaseController
}
}
echo "</td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<td class=\"data1\">{$this->lang['strmembers']}</td>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <td class="data1">%s</td>',
+ $this->lang['strmembers']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">";
$members = $data->getMembers($_REQUEST['rolename']);
@@ -618,7 +821,11 @@ class RolesController extends BaseController
}
}
echo "</td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<td class=\"data2\">{$this->lang['stradminmembers']}</td>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <td class="data2">%s</td>',
+ $this->lang['stradminmembers']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data2\">";
$adminmembers = $data->getMembers($_REQUEST['rolename'], 't');
@@ -631,7 +838,10 @@ class RolesController extends BaseController
echo "</td>\n\t</tr>" . \PHP_EOL;
echo '</table>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
$navlinks = [
@@ -704,14 +914,39 @@ class RolesController extends BaseController
$roledata->fields['rolcreaterole'] = $data->phpBool($roledata->fields['rolcreaterole']);
$roledata->fields['rolinherit'] = $data->phpBool($roledata->fields['rolinherit']);
echo '<table>' . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data\">{$this->lang['strname']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strsuper']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strcreatedb']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strcancreaterole']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strinheritsprivs']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strconnlimit']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strexpires']}</th>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strsessiondefaults']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strsuper']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strcreatedb']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strcancreaterole']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strinheritsprivs']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strconnlimit']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strexpires']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strsessiondefaults']
+ ) . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
echo "\t<tr>\n\t\t<td class=\"data1\">", $this->misc->printVal($roledata->fields['rolname']), '</td>' . \PHP_EOL;
echo "\t\t<td class=\"data1\">", $this->misc->printVal($roledata->fields['rolsuper'], 'yesno'), '</td>' . \PHP_EOL;
@@ -723,7 +958,10 @@ class RolesController extends BaseController
echo "\t\t<td class=\"data1\">", $this->misc->printVal($roledata->fields['rolconfig']), '</td>' . \PHP_EOL;
echo "\t</tr>\n</table>" . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
$this->printNavLinks(['changepassword' => [
@@ -764,16 +1002,30 @@ class RolesController extends BaseController
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 \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strpassword']
+ ) . \PHP_EOL;
echo "\t\t<td><input type=\"password\" name=\"password\" size=\"32\" value=\"",
\htmlspecialchars($_POST['password']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strconfirm']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strconfirm']
+ ) . \PHP_EOL;
echo "\t\t<td><input type=\"password\" name=\"confirm\" size=\"32\" value=\"\" /></td>\n\t</tr>" . \PHP_EOL;
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="changepassword" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"ok\" value=\"{$this->lang['strok']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="ok" value="%s" />',
+ $this->lang['strok']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo '</p></form>' . \PHP_EOL;
} else {
// Check that password is minimum length
@@ -797,8 +1049,8 @@ class RolesController extends BaseController
/**
* Adjusts the content of the $_POST superglobal according to role data.
*
- * @param \ADORecordSet $roledata The roledata
- * @param bool $canRename Indicates if role can be renamed
+ * @param ADORecordSet $roledata The roledata
+ * @param bool $canRename Indicates if role can be renamed
*/
private function _adjustPostVars($roledata, $canRename): void
{
diff --git a/src/controllers/RulesController.php b/src/controllers/RulesController.php
index 852ef66f..873d1228 100644
--- a/src/controllers/RulesController.php
+++ b/src/controllers/RulesController.php
@@ -172,25 +172,49 @@ class RulesController extends BaseController
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=\"",
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<td class="data1"><input name="name" size="16" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_POST['name']), '" /></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left required\">{$this->lang['strevent']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strevent']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="event">' . \PHP_EOL;
foreach ($data->rule_events as $v) {
- echo "<option value=\"{$v}\"", ($v === $_POST['event']) ? ' selected="selected"' : '',
- ">{$v}</option>" . \PHP_EOL;
+ echo \sprintf(
+ '<option value="%s"',
+ $v
+ ), ($v === $_POST['event']) ? ' selected="selected"' : '',
+ \sprintf(
+ '>%s</option>',
+ $v
+ ) . \PHP_EOL;
}
echo '</select></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strwhere']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strwhere']
+ ) . \PHP_EOL;
echo '<td class="data1"><input name="where" size="32" value="',
\htmlspecialchars($_POST['where']), '" /></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\"><label for=\"instead\">{$this->lang['strinstead']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left"><label for="instead">%s</label></th>',
+ $this->lang['strinstead']
+ ) . \PHP_EOL;
echo '<td class="data1">';
echo '<input type="checkbox" id="instead" name="instead" ', (isset($_POST['instead'])) ? ' checked="checked"' : '', ' />' . \PHP_EOL;
echo '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left required\">{$this->lang['straction']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['straction']
+ ) . \PHP_EOL;
echo '<td class="data1">';
echo '<input type="radio" id="type1" name="type" value="NOTHING"', ('NOTHING' === $_POST['type']) ? ' checked="checked"' : '', ' /> <label for="type1">NOTHING</label><br />' . \PHP_EOL;
echo '<input type="radio" name="type" value="SOMETHING"', ('SOMETHING' === $_POST['type']) ? ' checked="checked"' : '', ' />' . \PHP_EOL;
@@ -203,8 +227,15 @@ class RulesController extends BaseController
echo '<input type="hidden" name="', \htmlspecialchars($_REQUEST['subject']),
'" value="', \htmlspecialchars($_REQUEST[$_REQUEST['subject']]), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<p><input type=\"submit\" name=\"ok\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<p><input type="submit" name="ok" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
if ('' === \trim($_POST['name'])) {
@@ -255,9 +286,18 @@ class RulesController extends BaseController
'" value="', \htmlspecialchars($_REQUEST[$_REQUEST['reltype']]), '" />' . \PHP_EOL;
echo '<input type="hidden" name="rule" value="', \htmlspecialchars($_REQUEST['rule']), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<p><input type=\"checkbox\" id=\"cascade\" name=\"cascade\" /> <label for=\"cascade\">{$this->lang['strcascade']}</label></p>" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"yes\" value=\"{$this->lang['stryes']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"no\" value=\"{$this->lang['strno']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<p><input type="checkbox" id="cascade" name="cascade" /> <label for="cascade">%s</label></p>',
+ $this->lang['strcascade']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="yes" value="%s" />',
+ $this->lang['stryes']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="no" value="%s" />',
+ $this->lang['strno']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
$status = $data->dropRule($_POST['rule'], $_POST[$_POST['subject']], isset($_POST['cascade']));
diff --git a/src/controllers/SchemasController.php b/src/controllers/SchemasController.php
index 83bf73af..98e6162b 100644
--- a/src/controllers/SchemasController.php
+++ b/src/controllers/SchemasController.php
@@ -7,13 +7,14 @@
namespace PHPPgAdmin\Controller;
use PHPPgAdmin\Decorators\Decorator;
+use PHPPgAdmin\Traits\ExportTrait;
/**
* Base controller class.
*/
class SchemasController extends BaseController
{
- use \PHPPgAdmin\Traits\ExportTrait;
+ use ExportTrait;
public $controller_title = 'strschemas';
@@ -106,7 +107,10 @@ class SchemasController extends BaseController
'schema' => [
'title' => $this->lang['strschema'],
'field' => Decorator::field('nspname'),
- 'url' => \containerInstance()->subFolder . "{$destination}&amp;",
+ 'url' => \containerInstance()->subFolder . \sprintf(
+ '%s&amp;',
+ $destination
+ ),
'vars' => ['schema' => 'nspname'],
],
'owner' => [
@@ -282,21 +286,42 @@ class SchemasController extends BaseController
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=\"",
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data1"><input name="formName" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_POST['formName']), "\" /></td>\n\t</tr>" . \PHP_EOL;
// Owner
- echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strowner']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strowner']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">\n\t\t\t<select name=\"formAuth\">" . \PHP_EOL;
while (!$users->EOF) {
$uname = \htmlspecialchars($users->fields['usename']);
- echo "\t\t\t\t<option value=\"{$uname}\"",
- ($uname === $_POST['formAuth']) ? ' selected="selected"' : '', ">{$uname}</option>" . \PHP_EOL;
+ echo \sprintf(
+ ' <option value="%s"',
+ $uname
+ ),
+ ($uname === $_POST['formAuth']) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $uname
+ ) . \PHP_EOL;
$users->moveNext();
}
echo "\t\t\t</select>\n\t\t</td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><textarea name=\"formComment\" rows=\"3\" cols=\"32\">",
\htmlspecialchars($_POST['formComment']), "</textarea></td>\n\t</tr>" . \PHP_EOL;
@@ -305,8 +330,14 @@ class SchemasController extends BaseController
echo '<input type="hidden" name="action" value="create" />' . \PHP_EOL;
echo '<input type="hidden" name="database" value="', \htmlspecialchars($_REQUEST['database']), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"create\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="create" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo '</p>' . \PHP_EOL;
echo '</form>' . \PHP_EOL;
}
@@ -362,16 +393,25 @@ class SchemasController extends BaseController
echo '<table>' . \PHP_EOL;
echo "\t<tr>" . \PHP_EOL;
- echo "\t\t<th class=\"data left required\">{$this->lang['strname']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">";
- echo "\t\t\t<input name=\"name\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ ' <input name="name" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_POST['name']), '" />' . \PHP_EOL;
echo "\t\t</td>" . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
if ($data->hasAlterSchemaOwner()) {
$users = $data->getUsers();
- echo "<tr><th class=\"data left required\">{$this->lang['strowner']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strowner']
+ ) . \PHP_EOL;
echo '<td class="data2"><select name="owner">';
while (!$users->EOF) {
@@ -382,22 +422,38 @@ class SchemasController extends BaseController
}
echo '</select></td></tr>' . \PHP_EOL;
} else {
- echo "<input name=\"owner\" value=\"{$_POST['owner']}\" type=\"hidden\" />";
+ echo \sprintf(
+ '<input name="owner" value="%s" type="hidden" />',
+ $_POST['owner']
+ );
}
echo "\t<tr>" . \PHP_EOL;
- echo "\t\t<th class=\"data\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><textarea cols=\"32\" rows=\"3\" name=\"comment\">", \htmlspecialchars($_POST['comment']), '</textarea></td>' . \PHP_EOL;
echo "\t</tr>" . \PHP_EOL;
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="alter" />' . \PHP_EOL;
echo '<input type="hidden" name="schema" value="', \htmlspecialchars($_POST['schema']), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"alter\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="alter" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
}
@@ -442,20 +498,36 @@ class SchemasController extends BaseController
if (isset($_REQUEST['ma'])) {
foreach ($_REQUEST['ma'] as $v) {
$a = \unserialize(\htmlspecialchars_decode($v, \ENT_QUOTES));
- echo '<p>', \sprintf($this->lang['strconfdropschema'], $this->misc->printVal($a['nsp'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropschema'],
+ $this->misc->printVal($a['nsp'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="nsp[]" value="', \htmlspecialchars($a['nsp']), '" />' . \PHP_EOL;
}
} else {
- echo '<p>', \sprintf($this->lang['strconfdropschema'], $this->misc->printVal($_REQUEST['nsp'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropschema'],
+ $this->misc->printVal($_REQUEST['nsp'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="nsp" value="', \htmlspecialchars($_REQUEST['nsp']), '" />' . \PHP_EOL;
}
- echo "<p><input type=\"checkbox\" id=\"cascade\" name=\"cascade\" /> <label for=\"cascade\">{$this->lang['strcascade']}</label></p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p><input type="checkbox" id="cascade" name="cascade" /> <label for="cascade">%s</label></p>',
+ $this->lang['strcascade']
+ ) . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="drop" />' . \PHP_EOL;
echo '<input type="hidden" name="database" value="', \htmlspecialchars($_REQUEST['database']), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
if (\is_array($_POST['nsp'])) {
diff --git a/src/controllers/SequencesController.php b/src/controllers/SequencesController.php
index 9512e7e1..d35a843d 100644
--- a/src/controllers/SequencesController.php
+++ b/src/controllers/SequencesController.php
@@ -125,7 +125,10 @@ class SequencesController extends BaseController
'sequence' => [
'title' => $this->lang['strsequence'],
'field' => Decorator::field('seqname'),
- 'url' => "sequences?action=properties&amp;{$this->misc->href}&amp;",
+ 'url' => \sprintf(
+ 'sequences?action=properties&amp;%s&amp;',
+ $this->misc->href
+ ),
'vars' => ['sequence' => 'seqname'],
],
'owner' => [
@@ -250,19 +253,49 @@ class SequencesController extends BaseController
}
echo '<table border="0">';
- echo "<tr><th class=\"data\">{$this->lang['strname']}</th>";
+ echo \sprintf(
+ '<tr><th class="data">%s</th>',
+ $this->lang['strname']
+ );
if ($data->hasAlterSequenceStart()) {
- echo "<th class=\"data\">{$this->lang['strstartvalue']}</th>";
+ echo \sprintf(
+ '<th class="data">%s</th>',
+ $this->lang['strstartvalue']
+ );
}
- echo "<th class=\"data\">{$this->lang['strlastvalue']}</th>";
- echo "<th class=\"data\">{$this->lang['strincrementby']}</th>";
- echo "<th class=\"data\">{$this->lang['strmaxvalue']}</th>";
- echo "<th class=\"data\">{$this->lang['strminvalue']}</th>";
- echo "<th class=\"data\">{$this->lang['strcachevalue']}</th>";
- echo "<th class=\"data\">{$this->lang['strlogcount']}</th>";
- echo "<th class=\"data\">{$this->lang['strcancycle']}</th>";
- echo "<th class=\"data\">{$this->lang['striscalled']}</th></tr>";
+ echo \sprintf(
+ '<th class="data">%s</th>',
+ $this->lang['strlastvalue']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th>',
+ $this->lang['strincrementby']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th>',
+ $this->lang['strmaxvalue']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th>',
+ $this->lang['strminvalue']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th>',
+ $this->lang['strcachevalue']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th>',
+ $this->lang['strlogcount']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th>',
+ $this->lang['strcancycle']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th></tr>',
+ $this->lang['striscalled']
+ );
echo '<tr>';
echo '<td class="data1">', $this->misc->printVal($sequence->fields['seqname']), '</td>';
@@ -377,7 +410,10 @@ class SequencesController extends BaseController
$this->printNavLinks($navlinks, 'sequences-properties', \get_defined_vars());
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
}
@@ -406,19 +442,35 @@ class SequencesController extends BaseController
if (isset($_REQUEST['ma'])) {
foreach ($_REQUEST['ma'] as $v) {
$a = \unserialize(\htmlspecialchars_decode($v, \ENT_QUOTES));
- echo '<p>', \sprintf($this->lang['strconfdropsequence'], $this->misc->printVal($a['sequence'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropsequence'],
+ $this->misc->printVal($a['sequence'])
+ ), '</p>' . \PHP_EOL;
\printf('<input type="hidden" name="sequence[]" value="%s" />', \htmlspecialchars($a['sequence']));
}
} else {
- echo '<p>', \sprintf($this->lang['strconfdropsequence'], $this->misc->printVal($_REQUEST['sequence'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropsequence'],
+ $this->misc->printVal($_REQUEST['sequence'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="sequence" value="', \htmlspecialchars($_REQUEST['sequence']), '" />' . \PHP_EOL;
}
- echo "<p><input type=\"checkbox\" id=\"cascade\" name=\"cascade\" /> <label for=\"cascade\">{$this->lang['strcascade']}</label></p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p><input type="checkbox" id="cascade" name="cascade" /> <label for="cascade">%s</label></p>',
+ $this->lang['strcascade']
+ ) . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="drop" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
if (\is_array($_POST['sequence'])) {
@@ -497,37 +549,61 @@ class SequencesController extends BaseController
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;
- echo "<td class=\"data1\"><input name=\"formSequenceName\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<td class="data1"><input name="formSequenceName" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_POST['formSequenceName']),
'" /></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strincrementby']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strincrementby']
+ ) . \PHP_EOL;
echo '<td class="data1"><input name="formIncrement" size="5" value="',
\htmlspecialchars($_POST['formIncrement']),
'" /> </td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strminvalue']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strminvalue']
+ ) . \PHP_EOL;
echo '<td class="data1"><input name="formMinValue" size="5" value="',
\htmlspecialchars($_POST['formMinValue']),
'" /></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strmaxvalue']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strmaxvalue']
+ ) . \PHP_EOL;
echo '<td class="data1"><input name="formMaxValue" size="5" value="',
\htmlspecialchars($_POST['formMaxValue']),
'" /></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strstartvalue']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strstartvalue']
+ ) . \PHP_EOL;
echo '<td class="data1"><input name="formStartValue" size="5" value="',
\htmlspecialchars($_POST['formStartValue']),
'" /></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strcachevalue']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strcachevalue']
+ ) . \PHP_EOL;
echo '<td class="data1"><input name="formCacheValue" size="5" value="',
\htmlspecialchars($_POST['formCacheValue']),
'" /></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\"><label for=\"formCycledValue\">{$this->lang['strcancycle']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left"><label for="formCycledValue">%s</label></th>',
+ $this->lang['strcancycle']
+ ) . \PHP_EOL;
echo '<td class="data1"><input type="checkbox" id="formCycledValue" name="formCycledValue" ',
(isset($_POST['formCycledValue']) ? ' checked="checked"' : ''),
' /></td></tr>' . \PHP_EOL;
@@ -535,8 +611,15 @@ class SequencesController extends BaseController
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="save_create_sequence" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"create\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="create" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
}
@@ -652,20 +735,36 @@ class SequencesController extends BaseController
if (\is_object($sequence) && 0 < $sequence->recordCount()) {
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 \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strlastvalue']
+ ) . \PHP_EOL;
echo '<td class="data1">';
- echo "<input name=\"nextvalue\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ '<input name="nextvalue" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
$this->misc->printVal($sequence->fields['last_value']),
'" /></td></tr>' . \PHP_EOL;
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="setval" />' . \PHP_EOL;
echo '<input type="hidden" name="sequence" value="', \htmlspecialchars($_REQUEST['sequence']), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"setval\" value=\"{$this->lang['strsetval']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="setval" value="%s" />',
+ $this->lang['strsetval']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
}
@@ -763,9 +862,15 @@ class SequencesController extends BaseController
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;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
echo '<td class="data1">';
- echo "<input name=\"name\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ '<input name="name" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_POST['name']),
'" /></td></tr>' . \PHP_EOL;
@@ -773,7 +878,10 @@ class SequencesController extends BaseController
// Fetch all users
$users = $data->getUsers();
- echo "<tr><th class=\"data left required\">{$this->lang['strowner']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strowner']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="owner">';
while (!$users->EOF) {
@@ -790,7 +898,10 @@ class SequencesController extends BaseController
if ($data->hasAlterSequenceSchema()) {
$schemas = $data->getSchemas();
- echo "<tr><th class=\"data left required\">{$this->lang['strschema']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strschema']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="newschema">';
while (!$schemas->EOF) {
@@ -805,45 +916,69 @@ class SequencesController extends BaseController
echo '</select></td></tr>' . \PHP_EOL;
}
- echo "<tr><th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo '<td class="data1">';
echo '<textarea rows="3" cols="32" name="comment">',
\htmlspecialchars($_POST['comment']),
'</textarea></td></tr>' . \PHP_EOL;
if ($data->hasAlterSequenceStart()) {
- echo "<tr><th class=\"data left\">{$this->lang['strstartvalue']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strstartvalue']
+ ) . \PHP_EOL;
echo '<td class="data1"><input name="formStartValue" size="5" value="',
\htmlspecialchars($sequence->fields['start_value']),
'" /></td></tr>' . \PHP_EOL;
}
- echo "<tr><th class=\"data left\">{$this->lang['strrestartvalue']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strrestartvalue']
+ ) . \PHP_EOL;
echo '<td class="data1"><input name="formRestartValue" size="5" value="',
\htmlspecialchars($sequence->fields['last_value']),
'" /></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strincrementby']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strincrementby']
+ ) . \PHP_EOL;
echo '<td class="data1"><input name="formIncrement" size="5" value="',
\htmlspecialchars($sequence->fields['increment_by']),
'" /> </td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strmaxvalue']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strmaxvalue']
+ ) . \PHP_EOL;
echo '<td class="data1"><input name="formMaxValue" size="5" value="',
\htmlspecialchars($sequence->fields['max_value']),
'" /></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strminvalue']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strminvalue']
+ ) . \PHP_EOL;
echo '<td class="data1"><input name="formMinValue" size="5" value="',
\htmlspecialchars($sequence->fields['min_value']),
'" /></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strcachevalue']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strcachevalue']
+ ) . \PHP_EOL;
echo '<td class="data1"><input name="formCacheValue" size="5" value="',
\htmlspecialchars($sequence->fields['cache_value']),
'" /></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\"><label for=\"formCycledValue\">{$this->lang['strcancycle']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left"><label for="formCycledValue">%s</label></th>',
+ $this->lang['strcancycle']
+ ) . \PHP_EOL;
echo '<td class="data1"><input type="checkbox" id="formCycledValue" name="formCycledValue" ',
(isset($_POST['formCycledValue']) ? ' checked="checked"' : ''),
' /></td></tr>' . \PHP_EOL;
@@ -852,11 +987,21 @@ class SequencesController extends BaseController
echo '<p><input type="hidden" name="action" value="alter" />' . \PHP_EOL;
echo $this->view->form;
echo '<input type="hidden" name="sequence" value="', \htmlspecialchars($_REQUEST['sequence']), '" />' . \PHP_EOL;
- echo "<input type=\"submit\" name=\"alter\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="alter" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
}
}
diff --git a/src/controllers/ServersController.php b/src/controllers/ServersController.php
index a7f12968..57337948 100644
--- a/src/controllers/ServersController.php
+++ b/src/controllers/ServersController.php
@@ -6,14 +6,16 @@
namespace PHPPgAdmin\Controller;
+use PHPPgAdmin\ArrayRecordSet;
use PHPPgAdmin\Decorators\Decorator;
+use PHPPgAdmin\Traits\ServersTrait;
/**
* Base controller class.
*/
class ServersController extends BaseController
{
- use \PHPPgAdmin\Traits\ServersTrait;
+ use ServersTrait;
public $table_place = 'servers-servers';
@@ -171,7 +173,7 @@ class ServersController extends BaseController
}
$nodes = \array_merge($nodes, $this->getServers(false, $group_id));
- $nodes = new \PHPPgAdmin\ArrayRecordSet($nodes);
+ $nodes = new ArrayRecordSet($nodes);
} else {
// no srv_group
$nodes = $this->getServers(true, false);
@@ -202,7 +204,10 @@ class ServersController extends BaseController
$this->view->setReloadBrowser(true);
- echo \sprintf($this->lang['strlogoutmsg'], $server_info['desc']);
+ echo \sprintf(
+ $this->lang['strlogoutmsg'],
+ $server_info['desc']
+ );
}
/**
@@ -211,7 +216,7 @@ class ServersController extends BaseController
* @param bool $recordset return as RecordSet suitable for HTMLTableController::printTable if true, otherwise just return an array
* @param mixed $group_id a group name to filter the returned servers using $this->conf[srv_groups]
*
- * @return array|\PHPPgAdmin\ArrayRecordSet either an array or a Recordset suitable for HTMLTableController::printTable
+ * @return array|ArrayRecordSet either an array or a Recordset suitable for HTMLTableController::printTable
*/
private function getServersGroups($recordset = false, $group_id = false)
{
@@ -275,7 +280,7 @@ class ServersController extends BaseController
}
if ($recordset) {
- return new \PHPPgAdmin\ArrayRecordSet($grps);
+ return new ArrayRecordSet($grps);
}
return $grps;
diff --git a/src/controllers/SqlController.php b/src/controllers/SqlController.php
index 2ef31863..d7a9d526 100644
--- a/src/controllers/SqlController.php
+++ b/src/controllers/SqlController.php
@@ -6,6 +6,9 @@
namespace PHPPgAdmin\Controller;
+use ADORecordSet;
+use PHPPgAdmin\ADOdbException;
+
/**
* Base controller class.
*/
@@ -101,7 +104,7 @@ class SqlController extends BaseController
}
return $this->execute_query();
- } catch (\PHPPgAdmin\ADOdbException $e) {
+ } catch (ADOdbException $e) {
$message = $e->getMessage();
$trace = $e->getTraceAsString();
$lastError = $_connection->getLastError();
@@ -142,7 +145,10 @@ class SqlController extends BaseController
while (false !== $row) {
$id = (0 === ($i % 2) ? '1' : '2');
- echo "<tr class=\"data{$id}\">" . \PHP_EOL;
+ echo \sprintf(
+ '<tr class="data%s">',
+ $id
+ ) . \PHP_EOL;
foreach ($row as $k => $v) {
echo '<td style="white-space:nowrap;">', $misc->printVal($v, \pg_fieldtype($rs, $k), ['null' => true]), '</td>';
@@ -153,7 +159,10 @@ class SqlController extends BaseController
}
echo '</table><br/>' . \PHP_EOL;
- echo $i, " {$lang['strrows']}</p>" . \PHP_EOL;
+ echo $i, \sprintf(
+ ' %s</p>',
+ $lang['strrows']
+ ) . \PHP_EOL;
break;
case \PGSQL_COMMAND_OK:
@@ -162,7 +171,10 @@ class SqlController extends BaseController
echo \htmlspecialchars(\pg_result_status($rs, \PGSQL_STATUS_STRING)), '<br/>' . \PHP_EOL;
} elseif (0 < $data->conn->Affected_Rows()) {
// Otherwise if any rows have been affected
- echo $data->conn->Affected_Rows(), " {$lang['strrowsaff']}<br/>" . \PHP_EOL;
+ echo $data->conn->Affected_Rows(), \sprintf(
+ ' %s<br/>',
+ $lang['strrowsaff']
+ ) . \PHP_EOL;
}
// Otherwise output nothing...
break;
@@ -187,7 +199,7 @@ class SqlController extends BaseController
\set_time_limit(25000);
/**
- * @var \ADORecordSet
+ * @var ADORecordSet
*/
$rs = $data->conn->Execute($this->query);
@@ -221,7 +233,10 @@ class SqlController extends BaseController
while (!$rs->EOF) {
$id = (0 === ($i % 2) ? '1' : '2');
- echo "<tr class=\"data{$id}\">" . \PHP_EOL;
+ echo \sprintf(
+ '<tr class="data%s">',
+ $id
+ ) . \PHP_EOL;
foreach ($rs->fields as $k => $v) {
$finfo = $rs->fetchField($k);
@@ -232,10 +247,16 @@ class SqlController extends BaseController
++$i;
}
echo '</table>' . \PHP_EOL;
- echo '<p>', $rs->recordCount(), " {$this->lang['strrows']}</p>" . \PHP_EOL;
+ echo '<p>', $rs->recordCount(), \sprintf(
+ ' %s</p>',
+ $this->lang['strrows']
+ ) . \PHP_EOL;
} elseif (0 < $data->conn->Affected_Rows()) {
// Otherwise if any rows have been affected
- echo '<p>', $data->conn->Affected_Rows(), " {$this->lang['strrowsaff']}</p>" . \PHP_EOL;
+ echo '<p>', $data->conn->Affected_Rows(), \sprintf(
+ ' %s</p>',
+ $this->lang['strrowsaff']
+ ) . \PHP_EOL;
} else {
// Otherwise nodata to print
echo '<p>', $this->lang['strnodata'], '</p>' . \PHP_EOL;
@@ -267,10 +288,16 @@ class SqlController extends BaseController
// Display duration if we know it
if (null !== $this->duration) {
- echo '<p>', \sprintf($this->lang['strruntime'], $this->duration), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strruntime'],
+ $this->duration
+ ), '</p>' . \PHP_EOL;
}
- echo "<p>{$this->lang['strsqlexecuted']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strsqlexecuted']
+ ) . \PHP_EOL;
$navlinks = [];
$fields = [
diff --git a/src/controllers/SqleditController.php b/src/controllers/SqleditController.php
index acbfea6c..c215fd68 100644
--- a/src/controllers/SqleditController.php
+++ b/src/controllers/SqleditController.php
@@ -6,12 +6,14 @@
namespace PHPPgAdmin\Controller;
+use PHPPgAdmin\Traits\ServersTrait;
+
/**
* Base controller class.
*/
class SqleditController extends BaseController
{
- use \PHPPgAdmin\Traits\ServersTrait;
+ use ServersTrait;
public $query = '';
@@ -144,7 +146,10 @@ class SqleditController extends BaseController
$default_html .= '<form action="database" method="post" target="detail">' . \PHP_EOL;
$default_html .= $this->printConnection('find', false);
- $default_html .= '<p><input class="focusme" name="term" id="term" value="' . \htmlspecialchars($_REQUEST['term']) . "\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" />" . \PHP_EOL;
+ $default_html .= '<p><input class="focusme" name="term" id="term" value="' . \htmlspecialchars($_REQUEST['term']) . \sprintf(
+ '" size="32" maxlength="%s" />',
+ $data->_maxNameLen
+ ) . \PHP_EOL;
$filters = $this->_getFilters();
$advanced_filters = $this->_getAdvancedFilters();
@@ -159,20 +164,41 @@ class SqleditController extends BaseController
// Output list of filters. This is complex due to all the 'has' and 'conf' feature possibilities
$default_html .= "<select id='filter' name=\"filter\">" . \PHP_EOL;
- $default_html .= \sprintf('%s<option value=""' . ('' === $_REQUEST['filter'] ? ' selected="selected" ' : '') . ">{$this->lang['strallobjects']}</option>" . \PHP_EOL, "\t");
+ $default_html .= \sprintf(
+ '%s<option value=""' . ('' === $_REQUEST['filter'] ? ' selected="selected" ' : '') . \sprintf(
+ '>%s</option>',
+ $this->lang['strallobjects']
+ ) . \PHP_EOL,
+ "\t"
+ );
foreach ($filters as $type => $props) {
- $default_html .= \sprintf('%s<option value="%s" %s >%s</option>' . \PHP_EOL, "\t", $type, $props['selected'], $this->lang[$props['langkey']]);
+ $default_html .= \sprintf(
+ '%s<option value="%s" %s >%s</option>' . \PHP_EOL,
+ "\t",
+ $type,
+ $props['selected'],
+ $this->lang[$props['langkey']]
+ );
}
if ($this->conf['show_advanced']) {
foreach ($advanced_filters as $type => $props) {
- $default_html .= \sprintf('%s<option value="%s" %s >%s</option>' . \PHP_EOL, "\t", $type, $props['selected'], $this->lang[$props['langkey']]);
+ $default_html .= \sprintf(
+ '%s<option value="%s" %s >%s</option>' . \PHP_EOL,
+ "\t",
+ $type,
+ $props['selected'],
+ $this->lang[$props['langkey']]
+ );
}
}
$default_html .= '</select>' . \PHP_EOL;
- $default_html .= "<input type=\"submit\" value=\"{$this->lang['strfind']}\" />" . \PHP_EOL;
+ $default_html .= \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strfind']
+ ) . \PHP_EOL;
$default_html .= '<input type="hidden" name="action" value="find" /></p>' . \PHP_EOL;
$default_html .= '</form>' . \PHP_EOL;
diff --git a/src/controllers/TablesController.php b/src/controllers/TablesController.php
index ec774f14..6dbcdd7b 100644
--- a/src/controllers/TablesController.php
+++ b/src/controllers/TablesController.php
@@ -7,14 +7,17 @@
namespace PHPPgAdmin\Controller;
use PHPPgAdmin\Decorators\Decorator;
+use PHPPgAdmin\Traits\AdminTrait;
+use PHPPgAdmin\Traits\InsertEditRowTrait;
+use PHPPgAdmin\XHtml\HTMLController;
/**
* Base controller class.
*/
class TablesController extends BaseController
{
- use \PHPPgAdmin\Traits\AdminTrait;
- use \PHPPgAdmin\Traits\InsertEditRowTrait;
+ use AdminTrait;
+ use InsertEditRowTrait;
public $table_place = 'tables-tables';
@@ -317,20 +320,42 @@ class TablesController extends BaseController
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;
- echo "\t\t<td class=\"data\"><input name=\"name\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data"><input name="name" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['name']),
"\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strnumcols']}</th>" . \PHP_EOL;
- echo "\t\t<td class=\"data\"><input name=\"fields\" size=\"5\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strnumcols']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data"><input name="fields" size="5" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['fields']),
"\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['stroptions']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['stroptions']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data\"><label for=\"withoutoids\"><input type=\"checkbox\" id=\"withoutoids\" name=\"withoutoids\"", isset($_REQUEST['withoutoids']) ? ' checked="checked"' : '', " />WITHOUT OIDS</label></td>\n\t</tr>" . \PHP_EOL;
// Tablespace (if there are any)
if ($data->hasTablespaces() && 0 < $tablespaces->recordCount()) {
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strtablespace']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strtablespace']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">\n\t\t\t<select name=\"spcname\">" . \PHP_EOL;
// Always offer the default (empty) option
echo "\t\t\t\t<option value=\"\"",
@@ -339,15 +364,25 @@ class TablesController extends BaseController
// Display all other tablespaces
while (!$tablespaces->EOF) {
$spcname = \htmlspecialchars($tablespaces->fields['spcname']);
- echo "\t\t\t\t<option value=\"{$spcname}\"",
+ echo \sprintf(
+ ' <option value="%s"',
+ $spcname
+ ),
($tablespaces->fields['spcname'] === $_REQUEST['spcname']) ? ' selected="selected"' : '',
- ">{$spcname}</option>" . \PHP_EOL;
+ \sprintf(
+ '>%s</option>',
+ $spcname
+ ) . \PHP_EOL;
$tablespaces->moveNext();
}
echo "\t\t\t</select>\n\t\t</td>\n\t</tr>" . \PHP_EOL;
}
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo "\t\t<td><textarea name=\"tblcomment\" rows=\"3\" cols=\"32\">",
\htmlspecialchars($_REQUEST['tblcomment']),
"</textarea></td>\n\t</tr>" . \PHP_EOL;
@@ -356,8 +391,15 @@ class TablesController extends BaseController
echo '<p><input type="hidden" name="action" value="create" />' . \PHP_EOL;
echo '<input type="hidden" name="stage" value="2" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" value=\"{$this->lang['strnext']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strnext']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
break;
@@ -391,10 +433,26 @@ class TablesController extends BaseController
// Output table header
echo '<table>' . \PHP_EOL;
- echo "\t<tr><th colspan=\"2\" class=\"data required\">{$this->lang['strcolumn']}</th><th colspan=\"2\" class=\"data required\">{$this->lang['strtype']}</th>";
- echo "<th class=\"data\">{$this->lang['strlength']}</th><th class=\"data\">{$this->lang['strnotnull']}</th>";
- echo "<th class=\"data\">{$this->lang['struniquekey']}</th><th class=\"data\">{$this->lang['strprimarykey']}</th>";
- echo "<th class=\"data\">{$this->lang['strdefault']}</th><th class=\"data\">{$this->lang['strcomment']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr><th colspan="2" class="data required">%s</th><th colspan="2" class="data required">%s</th>',
+ $this->lang['strcolumn'],
+ $this->lang['strtype']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th><th class="data">%s</th>',
+ $this->lang['strlength'],
+ $this->lang['strnotnull']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th><th class="data">%s</th>',
+ $this->lang['struniquekey'],
+ $this->lang['strprimarykey']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th><th class="data">%s</th></tr>',
+ $this->lang['strdefault'],
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
for ($i = 0; $i < $_REQUEST['fields']; ++$i) {
if (!isset($_REQUEST['field'][$i])) {
@@ -414,10 +472,20 @@ class TablesController extends BaseController
}
echo "\t<tr>\n\t\t<td>", $i + 1, '.&nbsp;</td>' . \PHP_EOL;
- echo "\t\t<td><input name=\"field[{$i}]\" size=\"16\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ ' <td><input name="field[%s]" size="16" maxlength="%s" value="',
+ $i,
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['field'][$i]),
'" /></td>' . \PHP_EOL;
- echo "\t\t<td>\n\t\t\t<select name=\"type[{$i}]\" class=\"select2\" id=\"types{$i}\" onchange=\"checkLengths(this.options[this.selectedIndex].value,{$i});\">" . \PHP_EOL;
+ echo \sprintf(
+ ' <td>
+ <select name="type[%s]" class="select2" id="types%s" onchange="checkLengths(this.options[this.selectedIndex].value,%s);">',
+ $i,
+ $i,
+ $i
+ ) . \PHP_EOL;
// Output any "magic" types
foreach ($data->extraTypes as $v) {
$types_for_js[\mb_strtolower($v)] = 1;
@@ -447,34 +515,65 @@ class TablesController extends BaseController
$escaped_predef_types = []; // the JS escaped array elements
foreach ($predefined_size_types as $value) {
- $escaped_predef_types[] = "'{$value}'";
+ $escaped_predef_types[] = \sprintf(
+ '\'%s\'',
+ $value
+ );
}
echo '<script type="text/javascript">predefined_lengths = new Array(' . \implode(',', $escaped_predef_types) . ");</script>\n\t</td>";
}
// Output array type selector
- echo "\t\t<td>\n\t\t\t<select name=\"array[{$i}]\">" . \PHP_EOL;
+ echo \sprintf(
+ ' <td>
+ <select name="array[%s]">',
+ $i
+ ) . \PHP_EOL;
echo "\t\t\t\t<option value=\"\"", (isset($_REQUEST['array'][$i]) && '' === $_REQUEST['array'][$i]) ? ' selected="selected"' : '', '></option>' . \PHP_EOL;
echo "\t\t\t\t<option value=\"[]\"", (isset($_REQUEST['array'][$i]) && '[]' === $_REQUEST['array'][$i]) ? ' selected="selected"' : '', '>[ ]</option>' . \PHP_EOL;
echo "\t\t\t</select>\n\t\t</td>" . \PHP_EOL;
- echo "\t\t<td><input name=\"length[{$i}]\" id=\"lengths{$i}\" size=\"10\" value=\"",
+ echo \sprintf(
+ ' <td><input name="length[%s]" id="lengths%s" size="10" value="',
+ $i,
+ $i
+ ),
\htmlspecialchars($_REQUEST['length'][$i]),
'" /></td>' . \PHP_EOL;
- echo "\t\t<td><input type=\"checkbox\" name=\"notnull[{$i}]\"", (isset($_REQUEST['notnull'][$i])) ? ' checked="checked"' : '', ' /></td>' . \PHP_EOL;
- echo "\t\t<td style=\"text-align: center\"><input type=\"checkbox\" name=\"uniquekey[{$i}]\""
+ echo \sprintf(
+ ' <td><input type="checkbox" name="notnull[%s]"',
+ $i
+ ), (isset($_REQUEST['notnull'][$i])) ? ' checked="checked"' : '', ' /></td>' . \PHP_EOL;
+ echo \sprintf(
+ ' <td style="text-align: center"><input type="checkbox" name="uniquekey[%s]"',
+ $i
+ )
. (isset($_REQUEST['uniquekey'][$i]) ? ' checked="checked"' : '') . ' /></td>' . \PHP_EOL;
- echo "\t\t<td style=\"text-align: center\"><input type=\"checkbox\" name=\"primarykey[{$i}]\" "
+ echo \sprintf(
+ ' <td style="text-align: center"><input type="checkbox" name="primarykey[%s]" ',
+ $i
+ )
. (isset($_REQUEST['primarykey'][$i]) ? ' checked="checked"' : '')
. ' /></td>' . \PHP_EOL;
- echo "\t\t<td><input name=\"default[{$i}]\" size=\"20\" value=\"",
+ echo \sprintf(
+ ' <td><input name="default[%s]" size="20" value="',
+ $i
+ ),
\htmlspecialchars($_REQUEST['default'][$i]),
'" /></td>' . \PHP_EOL;
- echo "\t\t<td><input name=\"colcomment[{$i}]\" size=\"40\" value=\"",
+ echo \sprintf(
+ ' <td><input name="colcomment[%s]" size="40" value="',
+ $i
+ ),
\htmlspecialchars($_REQUEST['colcomment'][$i]),
- "\" />
- <script type=\"text/javascript\">checkLengths(document.getElementById('types{$i}').value,{$i});</script>
- </td>\n\t</tr>" . \PHP_EOL;
+ \sprintf(
+ '" />
+ <script type="text/javascript">checkLengths(document.getElementById(\'types%s\').value,%s);</script>
+ </td>
+ </tr>',
+ $i,
+ $i
+ ) . \PHP_EOL;
}
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="create" />' . \PHP_EOL;
@@ -491,8 +590,15 @@ class TablesController extends BaseController
if (isset($_REQUEST['spcname'])) {
echo '<input type="hidden" name="spcname" value="', \htmlspecialchars($_REQUEST['spcname']), '" />' . \PHP_EOL;
}
- echo "<input type=\"submit\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
break;
@@ -564,7 +670,10 @@ class TablesController extends BaseController
break;
default:
- echo "<p>{$this->lang['strinvalidparam']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strinvalidparam']
+ ) . \PHP_EOL;
}
}
@@ -600,21 +709,45 @@ class TablesController extends BaseController
foreach ($tbltmp as $a) {
$data->fieldClean($a['nspname']);
$data->fieldClean($a['relname']);
- $tables["\"{$a['nspname']}\".\"{$a['relname']}\""] = \serialize(['schema' => $a['nspname'], 'table' => $a['relname']]);
-
- if ($_REQUEST['like'] === $tables["\"{$a['nspname']}\".\"{$a['relname']}\""]) {
- $tblsel = \htmlspecialchars($tables["\"{$a['nspname']}\".\"{$a['relname']}\""]);
+ $tables[\sprintf(
+ '"%s"."%s"',
+ $a['nspname'],
+ $a['relname']
+ )] = \serialize(['schema' => $a['nspname'], 'table' => $a['relname']]);
+
+ if ($_REQUEST['like'] === $tables[\sprintf(
+ '"%s"."%s"',
+ $a['nspname'],
+ $a['relname']
+ )]) {
+ $tblsel = \htmlspecialchars($tables[\sprintf(
+ '"%s"."%s"',
+ $a['nspname'],
+ $a['relname']
+ )]);
}
}
unset($tbltmp);
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;
+ echo \sprintf(
+ '<table>
+ <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data"><input name="name" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ), \htmlspecialchars($_REQUEST['name']), "\" /></td>\n\t</tr>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strcreatetablelikeparent']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data\">";
- echo \PHPPgAdmin\XHtml\HTMLController::printCombo($tables, 'like', true, $tblsel, false);
+ echo HTMLController::printCombo($tables, 'like', true, $tblsel, false);
echo "</td>\n\t</tr>" . \PHP_EOL;
if ($data->hasTablespaces()) {
@@ -628,35 +761,60 @@ class TablesController extends BaseController
$tblsp[$a['spcname']] = $a['spcname'];
}
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strtablespace']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strtablespace']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data\">";
- echo \PHPPgAdmin\XHtml\HTMLController::printCombo($tblsp, 'tablespace', true, $_REQUEST['tablespace'], false);
+ echo HTMLController::printCombo($tblsp, 'tablespace', true, $_REQUEST['tablespace'], false);
echo "</td>\n\t</tr>" . \PHP_EOL;
}
}
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['stroptions']}</th>\n\t\t<td class=\"data\">";
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>
+ <td class="data">',
+ $this->lang['stroptions']
+ );
echo '<label for="withdefaults"><input type="checkbox" id="withdefaults" name="withdefaults"',
isset($_REQUEST['withdefaults']) ? ' checked="checked"' : '',
- "/>{$this->lang['strcreatelikewithdefaults']}</label>";
+ \sprintf(
+ '/>%s</label>',
+ $this->lang['strcreatelikewithdefaults']
+ );
if ($data->hasCreateTableLikeWithConstraints()) {
echo '<br /><label for="withconstraints"><input type="checkbox" id="withconstraints" name="withconstraints"',
isset($_REQUEST['withconstraints']) ? ' checked="checked"' : '',
- "/>{$this->lang['strcreatelikewithconstraints']}</label>";
+ \sprintf(
+ '/>%s</label>',
+ $this->lang['strcreatelikewithconstraints']
+ );
}
if ($data->hasCreateTableLikeWithIndexes()) {
echo '<br /><label for="withindexes"><input type="checkbox" id="withindexes" name="withindexes"',
isset($_REQUEST['withindexes']) ? ' checked="checked"' : '',
- "/>{$this->lang['strcreatelikewithindexes']}</label>";
+ \sprintf(
+ '/>%s</label>',
+ $this->lang['strcreatelikewithindexes']
+ );
}
echo "</td>\n\t</tr>" . \PHP_EOL;
echo '</table>';
echo '<input type="hidden" name="action" value="confcreatelike" />' . \PHP_EOL;
echo $this->view->form;
- echo "<p><input type=\"submit\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<p><input type="submit" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
if ('' === \trim($_REQUEST['name'])) {
@@ -730,9 +888,20 @@ class TablesController extends BaseController
echo '<table>' . \PHP_EOL;
// Output table header
- echo "<tr><th class=\"data\">{$this->lang['strshow']}</th><th class=\"data\">{$this->lang['strcolumn']}</th>";
- echo "<th class=\"data\">{$this->lang['strtype']}</th><th class=\"data\">{$this->lang['stroperator']}</th>";
- echo "<th class=\"data\">{$this->lang['strvalue']}</th></tr>";
+ echo \sprintf(
+ '<tr><th class="data">%s</th><th class="data">%s</th>',
+ $this->lang['strshow'],
+ $this->lang['strcolumn']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th><th class="data">%s</th>',
+ $this->lang['strtype'],
+ $this->lang['stroperator']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th></tr>',
+ $this->lang['strvalue']
+ );
$i = 0;
@@ -749,7 +918,10 @@ class TablesController extends BaseController
// Continue drawing row
$id = (0 === ($i % 2) ? '1' : '2');
- echo "<tr class=\"data{$id}\">" . \PHP_EOL;
+ echo \sprintf(
+ '<tr class="data%s">',
+ $id
+ ) . \PHP_EOL;
echo '<td style="white-space:nowrap;">';
echo '<input type="checkbox" name="show[', \htmlspecialchars($attrs->fields['attname']), ']"',
isset($_REQUEST['show'][$attrs->fields['attname']]) ? ' checked="checked"' : '',
@@ -757,7 +929,10 @@ class TablesController extends BaseController
echo '<td style="white-space:nowrap;">', $this->misc->printVal($attrs->fields['attname']), '</td>';
echo '<td style="white-space:nowrap;">', $this->misc->printVal($data->formatType($attrs->fields['type'], $attrs->fields['atttypmod'])), '</td>';
echo '<td style="white-space:nowrap;">';
- echo "<select name=\"ops[{$attrs->fields['attname']}]\">" . \PHP_EOL;
+ echo \sprintf(
+ '<select name="ops[%s]">',
+ $attrs->fields['attname']
+ ) . \PHP_EOL;
foreach (\array_keys($data->selectOps) as $v) {
echo '<option value="', \htmlspecialchars($v), '"', ($_REQUEST['ops'][$attrs->fields['attname']] === $v) ? ' selected="selected"' : '',
@@ -767,7 +942,10 @@ class TablesController extends BaseController
}
echo "</select>\n</td>" . \PHP_EOL;
echo '<td style="white-space:nowrap;">', $data->printField(
- "values[{$attrs->fields['attname']}]",
+ \sprintf(
+ 'values[%s]',
+ $attrs->fields['attname']
+ ),
$_REQUEST['values'][$attrs->fields['attname']],
$attrs->fields['type']
), '</td>';
@@ -776,18 +954,35 @@ class TablesController extends BaseController
$attrs->moveNext();
}
// Select all checkbox
- echo "<tr><td colspan=\"5\"><input type=\"checkbox\" id=\"selectall\" name=\"selectall\" accesskey=\"a\" onclick=\"javascript:selectAll()\" /><label for=\"selectall\">{$this->lang['strselectallfields']}</label></td>";
+ echo \sprintf(
+ '<tr><td colspan="5"><input type="checkbox" id="selectall" name="selectall" accesskey="a" onclick="javascript:selectAll()" /><label for="selectall">%s</label></td>',
+ $this->lang['strselectallfields']
+ );
echo '</tr></table>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strinvalidparam']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strinvalidparam']
+ ) . \PHP_EOL;
}
echo '<p><input type="hidden" name="action" value="selectrows" />' . \PHP_EOL;
- echo \sprintf('<input type="hidden" name="table" value="%s" />%s', \htmlspecialchars($_REQUEST['table']), \PHP_EOL);
+ echo \sprintf(
+ '<input type="hidden" name="table" value="%s" />%s',
+ \htmlspecialchars($_REQUEST['table']),
+ \PHP_EOL
+ );
echo '<input type="hidden" name="subject" value="table" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"select\" accesskey=\"r\" value=\"{$this->lang['strselect']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="select" accesskey="r" value="%s" />',
+ $this->lang['strselect']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
return;
@@ -856,9 +1051,20 @@ class TablesController extends BaseController
echo '<table>' . \PHP_EOL;
// Output table header
- echo "<tr><th class=\"data\">{$this->lang['strcolumn']}</th><th class=\"data\">{$this->lang['strtype']}</th>";
- echo "<th class=\"data\">{$this->lang['strformat']}</th>";
- echo "<th class=\"data\">{$this->lang['strnull']}</th><th class=\"data\">{$this->lang['strvalue']}</th></tr>";
+ echo \sprintf(
+ '<tr><th class="data">%s</th><th class="data">%s</th>',
+ $this->lang['strcolumn'],
+ $this->lang['strtype']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th>',
+ $this->lang['strformat']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th><th class="data">%s</th></tr>',
+ $this->lang['strnull'],
+ $this->lang['strvalue']
+ );
$i = 0;
$fields = [];
@@ -884,7 +1090,10 @@ class TablesController extends BaseController
$requested_format = $_REQUEST['format'][$attrs->fields['attnum']];
// Continue drawing row
$id = (0 === ($i % 2) ? '1' : '2');
- echo "<tr class=\"data{$id}\">" . \PHP_EOL;
+ echo \sprintf(
+ '<tr class="data%s">',
+ $id
+ ) . \PHP_EOL;
echo '<td style="white-space:nowrap;">', $this->misc->printVal($attrs->fields['attname']), '</td>';
echo '<td style="white-space:nowrap;">' . \PHP_EOL;
echo $this->misc->printVal(
@@ -893,12 +1102,18 @@ class TablesController extends BaseController
$attrs->fields['atttypmod']
)
);
- echo "<input type=\"hidden\" name=\"types[{$attrs->fields['attnum']}]\" value=\"",
+ echo \sprintf(
+ '<input type="hidden" name="types[%s]" value="',
+ $attrs->fields['attnum']
+ ),
\htmlspecialchars($attrs->fields['type']),
'" /></td>';
echo '<td style="white-space:nowrap;">' . \PHP_EOL;
- echo "<select name=\"format[{$attrs->fields['attnum']}]\">" . \PHP_EOL;
+ echo \sprintf(
+ '<select name="format[%s]">',
+ $attrs->fields['attnum']
+ ) . \PHP_EOL;
echo \sprintf(
'<option value="VALUE" %s >%s</option> %s',
('VALUE' === $requested_format) ? ' selected="selected" ' : '',
@@ -927,21 +1142,33 @@ class TablesController extends BaseController
}
echo '</td>';
- echo "<td id=\"row_att_{$attrs->fields['attnum']}\" style=\"white-space:nowrap;\">";
+ echo \sprintf(
+ '<td id="row_att_%s" style="white-space:nowrap;">',
+ $attrs->fields['attnum']
+ );
if ((false !== $fksprops) && isset($fksprops['byfield'][$attrs->fields['attnum']])) {
echo $data->printField(
- "values[{$attrs->fields['attnum']}]",
+ \sprintf(
+ 'values[%s]',
+ $attrs->fields['attnum']
+ ),
$_REQUEST['values'][$attrs->fields['attnum']],
'fktype' /*force FK*/,
[
- 'id' => "attr_{$attrs->fields['attnum']}",
+ 'id' => \sprintf(
+ 'attr_%s',
+ $attrs->fields['attnum']
+ ),
'autocomplete' => 'off',
'class' => 'insert_row_input',
]
);
} else {
- echo $data->printField("values[{$attrs->fields['attnum']}]", $_REQUEST['values'][$attrs->fields['attnum']], $attrs->fields['type'], ['class' => 'insert_row_input']);
+ echo $data->printField(\sprintf(
+ 'values[%s]',
+ $attrs->fields['attnum']
+ ), $_REQUEST['values'][$attrs->fields['attnum']], $attrs->fields['type'], ['class' => 'insert_row_input']);
}
echo '</td>' . \PHP_EOL;
echo '</tr>' . \PHP_EOL;
@@ -957,24 +1184,47 @@ class TablesController extends BaseController
echo '<input type="hidden" name="action" value="insertrow" />' . \PHP_EOL;
echo '<input type="hidden" name="fields" value="', \htmlentities(\serialize($fields), \ENT_QUOTES, 'UTF-8'), '" />' . \PHP_EOL;
echo '<input type="hidden" name="protection_counter" value="' . $_SESSION['counter'] . '" />' . \PHP_EOL;
- echo \sprintf('<input type="hidden" name="table" value="%s" />%s', \htmlspecialchars($_REQUEST['table']), \PHP_EOL);
- echo "<p><input type=\"submit\" name=\"insert\" value=\"{$this->lang['strinsert']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"insertandrepeat\" accesskey=\"r\" value=\"{$this->lang['strinsertandrepeat']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="hidden" name="table" value="%s" />%s',
+ \htmlspecialchars($_REQUEST['table']),
+ \PHP_EOL
+ );
+ echo \sprintf(
+ '<p><input type="submit" name="insert" value="%s" />',
+ $this->lang['strinsert']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="insertandrepeat" accesskey="r" value="%s" />',
+ $this->lang['strinsertandrepeat']
+ ) . \PHP_EOL;
if (false !== $fksprops) {
if ('default off' !== $this->conf['autocomplete']) {
- echo "<input type=\"checkbox\" id=\"no_ac\" value=\"1\" checked=\"checked\" /><label for=\"no_ac\">{$this->lang['strac']}</label>" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="checkbox" id="no_ac" value="1" checked="checked" /><label for="no_ac">%s</label>',
+ $this->lang['strac']
+ ) . \PHP_EOL;
} else {
- echo "<input type=\"checkbox\" id=\"no_ac\" value=\"0\" /><label for=\"no_ac\">{$this->lang['strac']}</label>" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="checkbox" id="no_ac" value="0" /><label for="no_ac">%s</label>',
+ $this->lang['strac']
+ ) . \PHP_EOL;
}
}
echo '</p>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnofieldsforinsert']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnofieldsforinsert']
+ ) . \PHP_EOL;
}
echo $this->view->form;
echo '</form>' . \PHP_EOL;
- echo \sprintf('<button class="btn btn-mini btn_back" style="float: right; margin-right: 4em; margin-top: -3em;">%s</button>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<button class="btn btn-mini btn_back" style="float: right; margin-right: 4em; margin-top: -3em;">%s</button>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '<script src="' . \containerInstance()->subFolder . '/assets/js/insert_or_edit_row.js" type="text/javascript"></script>';
}
@@ -1036,7 +1286,10 @@ class TablesController extends BaseController
foreach ($_REQUEST['ma'] as $v) {
$a = \unserialize(\htmlspecialchars_decode($v, \ENT_QUOTES));
- echo '<p>' . \sprintf($this->lang['strconfemptytable'], $this->misc->printVal($a['table']));
+ echo '<p>' . \sprintf(
+ $this->lang['strconfemptytable'],
+ $this->misc->printVal($a['table'])
+ );
echo '</p>' . \PHP_EOL;
\printf('<input type="hidden" name="table[]" value="%s" />', \htmlspecialchars($a['table']));
@@ -1045,17 +1298,31 @@ class TablesController extends BaseController
$this->printTrail('table');
$this->printTitle($this->lang['strempty'], 'pg.table.empty');
- echo '<p>', \sprintf($this->lang['strconfemptytable'], $this->misc->printVal($_REQUEST['table'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfemptytable'],
+ $this->misc->printVal($_REQUEST['table'])
+ ), '</p>' . \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);
+ echo \sprintf(
+ '<input type="hidden" name="table" value="%s" />%s',
+ \htmlspecialchars($_REQUEST['table']),
+ \PHP_EOL
+ );
// END not mutli empty
}
- echo "<input type=\"checkbox\" id=\"cascade\" name=\"cascade\" /> <label for=\"cascade\">{$this->lang['strcascade']}</label>";
+ echo \sprintf(
+ '<input type="checkbox" id="cascade" name="cascade" /> <label for="cascade">%s</label>',
+ $this->lang['strcascade']
+ );
echo '<input type="hidden" name="action" value="empty" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"empty\" value=\"{$this->lang['strempty']}\" /> <input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="empty" value="%s" /> <input type="submit" name="cancel" value="%s" />',
+ $this->lang['strempty'],
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo "</form>\n"; // END if confirm
} else {
// Do Empty
@@ -1066,7 +1333,10 @@ class TablesController extends BaseController
[$status, $sql] = $data->emptyTable($t, isset($_POST['cascade']));
if (0 === $status) {
- $msg .= \sprintf('%s<br />', $sql);
+ $msg .= \sprintf(
+ '%s<br />',
+ $sql
+ );
$msg .= \sprintf(
'%s: %s<br />',
\htmlentities($t, \ENT_QUOTES, 'UTF-8'),
@@ -1088,7 +1358,10 @@ class TablesController extends BaseController
[$status, $sql] = $data->emptyTable($_POST['table'], isset($_POST['cascade']));
if (0 === $status) {
- $msg .= \sprintf('%s<br />', $sql);
+ $msg .= \sprintf(
+ '%s<br />',
+ $sql
+ );
$msg .= \sprintf(
'%s: %s<br />',
\htmlentities($_POST['table'], \ENT_QUOTES, 'UTF-8'),
@@ -1130,25 +1403,44 @@ class TablesController extends BaseController
foreach ($_REQUEST['ma'] as $v) {
$a = \unserialize(\htmlspecialchars_decode($v, \ENT_QUOTES));
- echo '<p>', \sprintf($this->lang['strconfdroptable'], $this->misc->printVal($a['table'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdroptable'],
+ $this->misc->printVal($a['table'])
+ ), '</p>' . \PHP_EOL;
\printf('<input type="hidden" name="table[]" value="%s" />', \htmlspecialchars($a['table']));
}
} else {
$this->printTrail('table');
$this->printTitle($this->lang['strdrop'], 'pg.table.drop');
- echo '<p>', \sprintf($this->lang['strconfdroptable'], $this->misc->printVal($_REQUEST['table'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdroptable'],
+ $this->misc->printVal($_REQUEST['table'])
+ ), '</p>' . \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);
+ echo \sprintf(
+ '<input type="hidden" name="table" value="%s" />%s',
+ \htmlspecialchars($_REQUEST['table']),
+ \PHP_EOL
+ );
// END if multi drop
}
echo '<input type="hidden" name="action" value="drop" />' . \PHP_EOL;
echo $this->view->form;
- echo "<p><input type=\"checkbox\" id=\"cascade\" name=\"cascade\" /> <label for=\"cascade\">{$this->lang['strcascade']}</label></p>" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<p><input type="checkbox" id="cascade" name="cascade" /> <label for="cascade">%s</label></p>',
+ $this->lang['strcascade']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo "</form>\n"; // END confirm
} else {
//If multi drop
@@ -1217,7 +1509,10 @@ class TablesController extends BaseController
'table' => [
'title' => $this->lang['strtable'],
'field' => Decorator::field('relname'),
- 'url' => \containerInstance()->subFolder . "/redirect/table?{$this->misc->href}&amp;",
+ 'url' => \containerInstance()->subFolder . \sprintf(
+ '/redirect/table?%s&amp;',
+ $this->misc->href
+ ),
'vars' => ['table' => 'relname'],
],
'owner' => [
diff --git a/src/controllers/TablespacesController.php b/src/controllers/TablespacesController.php
index 5cd26579..41727a4c 100644
--- a/src/controllers/TablespacesController.php
+++ b/src/controllers/TablespacesController.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Controller;
+use PHPPgAdmin\Decorators\Decorator;
+
/**
* Base controller class.
*/
@@ -86,15 +88,15 @@ class TablespacesController extends BaseController
$columns = [
'database' => [
'title' => $this->lang['strname'],
- 'field' => \PHPPgAdmin\Decorators\Decorator::field('spcname'),
+ 'field' => Decorator::field('spcname'),
],
'owner' => [
'title' => $this->lang['strowner'],
- 'field' => \PHPPgAdmin\Decorators\Decorator::field('spcowner'),
+ 'field' => Decorator::field('spcowner'),
],
'location' => [
'title' => $this->lang['strlocation'],
- 'field' => \PHPPgAdmin\Decorators\Decorator::field('spclocation'),
+ 'field' => Decorator::field('spclocation'),
],
'actions' => [
'title' => $this->lang['stractions'],
@@ -104,7 +106,7 @@ class TablespacesController extends BaseController
if ($data->hasSharedComments()) {
$columns['comment'] = [
'title' => $this->lang['strcomment'],
- 'field' => \PHPPgAdmin\Decorators\Decorator::field('spccomment'),
+ 'field' => Decorator::field('spccomment'),
];
}
@@ -116,7 +118,7 @@ class TablespacesController extends BaseController
'url' => 'tablespaces',
'urlvars' => [
'action' => 'edit',
- 'tablespace' => \PHPPgAdmin\Decorators\Decorator::field('spcname'),
+ 'tablespace' => Decorator::field('spcname'),
],
],
],
@@ -128,7 +130,7 @@ class TablespacesController extends BaseController
'url' => 'tablespaces',
'urlvars' => [
'action' => 'confirm_drop',
- 'tablespace' => \PHPPgAdmin\Decorators\Decorator::field('spcname'),
+ 'tablespace' => Decorator::field('spcname'),
],
],
],
@@ -140,7 +142,7 @@ class TablespacesController extends BaseController
'url' => 'privileges',
'urlvars' => [
'subject' => 'tablespace',
- 'tablespace' => \PHPPgAdmin\Decorators\Decorator::field('spcname'),
+ 'tablespace' => Decorator::field('spcname'),
],
],
],
@@ -191,11 +193,20 @@ class TablespacesController extends BaseController
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;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
echo '<td class="data1">';
- echo "<input name=\"name\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ '<input name="name" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_POST['name']), '" /></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left required\">{$this->lang['strowner']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strowner']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="owner">';
while (!$users->EOF) {
@@ -207,7 +218,10 @@ class TablespacesController extends BaseController
echo '</select></td></tr>' . \PHP_EOL;
if ($data->hasSharedComments()) {
- echo "<tr><th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo '<td class="data1">';
echo '<textarea rows="3" cols="32" name="comment">',
\htmlspecialchars($_POST['comment']), '</textarea></td></tr>' . \PHP_EOL;
@@ -215,11 +229,21 @@ class TablespacesController extends BaseController
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="save_edit" />' . \PHP_EOL;
echo '<input type="hidden" name="tablespace" value="', \htmlspecialchars($_REQUEST['tablespace']), '" />' . \PHP_EOL;
- echo "<input type=\"submit\" name=\"alter\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="alter" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
}
@@ -262,14 +286,23 @@ class TablespacesController extends BaseController
$this->printTrail('tablespace');
$this->printTitle($this->lang['strdrop'], 'pg.tablespace.drop');
- echo '<p>', \sprintf($this->lang['strconfdroptablespace'], $this->misc->printVal($_REQUEST['tablespace'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdroptablespace'],
+ $this->misc->printVal($_REQUEST['tablespace'])
+ ), '</p>' . \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;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
$status = $data->droptablespace($_REQUEST['tablespace']);
@@ -311,9 +344,20 @@ class TablespacesController extends BaseController
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;
- echo "\t\t<td class=\"data1\"><input size=\"32\" name=\"formSpcname\" maxlength=\"{$data->_maxNameLen}\" value=\"", \htmlspecialchars($_POST['formSpcname']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strowner']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data1"><input size="32" name="formSpcname" maxlength="%s" value="',
+ $data->_maxNameLen
+ ), \htmlspecialchars($_POST['formSpcname']), "\" /></td>\n\t</tr>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strowner']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><select name=\"formOwner\">" . \PHP_EOL;
while (!$users->EOF) {
@@ -323,18 +367,33 @@ class TablespacesController extends BaseController
$users->moveNext();
}
echo "\t\t</select></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strlocation']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strlocation']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input size=\"32\" name=\"formLoc\" value=\"", \htmlspecialchars($_POST['formLoc']), "\" /></td>\n\t</tr>" . \PHP_EOL;
// Comments (if available)
if ($data->hasSharedComments()) {
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo "\t\t<td><textarea name=\"formComment\" rows=\"3\" cols=\"32\">",
\htmlspecialchars($_POST['formComment']), "</textarea></td>\n\t</tr>" . \PHP_EOL;
}
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="save_create" />' . \PHP_EOL;
- echo "<input type=\"submit\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
}
diff --git a/src/controllers/TblpropertiesController.php b/src/controllers/TblpropertiesController.php
index 5a9acd87..1122a559 100644
--- a/src/controllers/TblpropertiesController.php
+++ b/src/controllers/TblpropertiesController.php
@@ -7,13 +7,14 @@
namespace PHPPgAdmin\Controller;
use PHPPgAdmin\Decorators\Decorator;
+use PHPPgAdmin\Traits\ExportTrait;
/**
* Base controller class.
*/
class TblpropertiesController extends BaseController
{
- use \PHPPgAdmin\Traits\ExportTrait;
+ use ExportTrait;
public $controller_title = 'strtables';
@@ -359,14 +360,23 @@ class TblpropertiesController extends BaseController
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 \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
echo '<td class="data1">';
- echo "<input name=\"name\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ '<input name="name" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_POST['name'], \ENT_QUOTES),
'" /></td></tr>' . \PHP_EOL;
if ($data->isSuperUser()) {
- echo "<tr><th class=\"data left required\">{$this->lang['strowner']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strowner']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="owner">';
while (!$users->EOF) {
@@ -383,7 +393,10 @@ class TblpropertiesController extends BaseController
if ($data->hasAlterTableSchema()) {
$schemas = $data->getSchemas();
- echo "<tr><th class=\"data left required\">{$this->lang['strschema']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strschema']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="newschema">';
while (!$schemas->EOF) {
@@ -400,7 +413,11 @@ class TblpropertiesController extends BaseController
// Tablespace (if there are any)
if ($data->hasTablespaces() && 0 < $tablespaces->recordCount()) {
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strtablespace']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strtablespace']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\">\n\t\t\t<select name=\"tablespace\">" . \PHP_EOL;
// Always offer the default (empty) option
echo "\t\t\t\t<option value=\"\"",
@@ -409,32 +426,66 @@ class TblpropertiesController extends BaseController
// Display all other tablespaces
while (!$tablespaces->EOF) {
$spcname = \htmlspecialchars($tablespaces->fields['spcname']);
- echo "\t\t\t\t<option value=\"{$spcname}\"",
+ echo \sprintf(
+ ' <option value="%s"',
+ $spcname
+ ),
($spcname === $_POST['tablespace']) ? ' selected="selected"' : '',
- ">{$spcname}</option>" . \PHP_EOL;
+ \sprintf(
+ '>%s</option>',
+ $spcname
+ ) . \PHP_EOL;
$tablespaces->moveNext();
}
echo "\t\t\t</select>\n\t\t</td>\n\t</tr>" . \PHP_EOL;
}
echo '<tr><th class="data left"> </th>' . \PHP_EOL;
echo '<td class="data1">';
- echo \sprintf('<input type="checkbox" name="with_oids" value="1" %s /> %s', $data->hasObjectID($table->fields['relname']) ? 'checked' : '', ' WITH OIDS');
+ echo \sprintf(
+ '<input type="checkbox" name="with_oids" value="1" %s /> %s',
+ $data->hasObjectID($table->fields['relname']) ? 'checked' : '',
+ ' WITH OIDS'
+ );
echo '</td></tr>';
- echo "<tr><th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo '<td class="data1">';
- echo \sprintf('<textarea rows="3" cols="62" name="comment">%s</textarea>', \htmlspecialchars($_POST['comment']));
- echo \sprintf('</td></tr>%s</table>%s', \PHP_EOL, \PHP_EOL);
+ echo \sprintf(
+ '<textarea rows="3" cols="62" name="comment">%s</textarea>',
+ \htmlspecialchars($_POST['comment'])
+ );
+ echo \sprintf(
+ '</td></tr>%s</table>%s',
+ \PHP_EOL,
+ \PHP_EOL
+ );
echo '<p><input type="hidden" name="action" value="alter" />' . \PHP_EOL;
- echo \sprintf('<input type="hidden" name="table" value="%s" />%s', \htmlspecialchars($_REQUEST['table']), \PHP_EOL);
+ echo \sprintf(
+ '<input type="hidden" name="table" value="%s" />%s',
+ \htmlspecialchars($_REQUEST['table']),
+ \PHP_EOL
+ );
echo $this->view->form;
- echo "<input type=\"submit\" name=\"alter\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="alter" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
}
@@ -474,7 +525,10 @@ class TblpropertiesController extends BaseController
// Check that file uploads are enabled
if (!\ini_get('file_uploads')) {
- echo "<p>{$this->lang['strnouploads']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnouploads']
+ ) . \PHP_EOL;
return;
}
@@ -484,28 +538,63 @@ class TblpropertiesController extends BaseController
if (\is_float($max_size) && 0 < $max_size) {
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 \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strformat']
+ ) . \PHP_EOL;
echo "\t\t<td><select name=\"format\">" . \PHP_EOL;
- echo "\t\t\t<option value=\"auto\">{$this->lang['strauto']}</option>" . \PHP_EOL;
+ echo \sprintf(
+ ' <option value="auto">%s</option>',
+ $this->lang['strauto']
+ ) . \PHP_EOL;
echo "\t\t\t<option value=\"csv\">CSV</option>" . \PHP_EOL;
- echo "\t\t\t<option value=\"tab\">{$this->lang['strtabbed']}</option>" . \PHP_EOL;
+ echo \sprintf(
+ ' <option value="tab">%s</option>',
+ $this->lang['strtabbed']
+ ) . \PHP_EOL;
if (\function_exists('xml_parser_create')) {
echo "\t\t\t<option value=\"xml\">XML</option>" . \PHP_EOL;
}
echo "\t\t</select></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strallowednulls']}</th>" . \PHP_EOL;
- echo "\t\t<td><label><input type=\"checkbox\" name=\"allowednulls[0]\" value=\"\\N\" checked=\"checked\" />{$this->lang['strbackslashn']}</label><br />" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strallowednulls']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td><label><input type="checkbox" name="allowednulls[0]" value="\N" checked="checked" />%s</label><br />',
+ $this->lang['strbackslashn']
+ ) . \PHP_EOL;
echo "\t\t<label><input type=\"checkbox\" name=\"allowednulls[1]\" value=\"NULL\" />NULL</label><br />" . \PHP_EOL;
- echo "\t\t<label><input type=\"checkbox\" name=\"allowednulls[2]\" value=\"\" />{$this->lang['stremptystring']}</label></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strfile']}</th>" . \PHP_EOL;
- echo "\t\t<td><input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"{$max_size}\" />";
+ echo \sprintf(
+ ' <label><input type="checkbox" name="allowednulls[2]" value="" />%s</label></td>
+ </tr>',
+ $this->lang['stremptystring']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strfile']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td><input type="hidden" name="MAX_FILE_SIZE" value="%s" />',
+ $max_size
+ );
echo "<input type=\"file\" name=\"source\" /></td>\n\t</tr>" . \PHP_EOL;
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="import" />' . \PHP_EOL;
echo $this->view->form;
- echo \sprintf('<input type="hidden" name="table" value="%s" />%s', \htmlspecialchars($_REQUEST['table']), \PHP_EOL);
- echo "<input type=\"submit\" value=\"{$this->lang['strimport']}\" /></p>" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="hidden" name="table" value="%s" />%s',
+ \htmlspecialchars($_REQUEST['table']),
+ \PHP_EOL
+ );
+ echo \sprintf(
+ '<input type="submit" value="%s" /></p>',
+ $this->lang['strimport']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
}
}
@@ -550,16 +639,35 @@ class TblpropertiesController extends BaseController
// Output table header
echo '<table>' . \PHP_EOL;
- echo "<tr><th class=\"data required\">{$this->lang['strname']}</th>\n<th colspan=\"2\" class=\"data required\">{$this->lang['strtype']}</th>" . \PHP_EOL;
- echo "<th class=\"data\">{$this->lang['strlength']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data required">%s</th>
+<th colspan="2" class="data required">%s</th>',
+ $this->lang['strname'],
+ $this->lang['strtype']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data">%s</th>',
+ $this->lang['strlength']
+ ) . \PHP_EOL;
if ($data->hasCreateFieldWithConstraints()) {
- echo "<th class=\"data\">{$this->lang['strnotnull']}</th>\n<th class=\"data\">{$this->lang['strdefault']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data">%s</th>
+<th class="data">%s</th>',
+ $this->lang['strnotnull'],
+ $this->lang['strdefault']
+ ) . \PHP_EOL;
}
- echo "<th class=\"data\">{$this->lang['strcomment']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data">%s</th></tr>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
- echo "<tr><td><input name=\"field\" size=\"16\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ '<tr><td><input name="field" size="16" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_POST['field']),
'" /></td>' . \PHP_EOL;
echo "<td><select class=\"select2\" name=\"type\" id=\"type\" onchange=\"checkLengths(document.getElementById('type').value,'');\">" . \PHP_EOL;
@@ -594,7 +702,10 @@ class TblpropertiesController extends BaseController
$escaped_predef_types = []; // the JS escaped array elements
foreach ($predefined_size_types as $value) {
- $escaped_predef_types[] = "'{$value}'";
+ $escaped_predef_types[] = \sprintf(
+ '\'%s\'',
+ $value
+ );
}
echo '<td><input name="length" id="lengths" size="8" value="',
@@ -616,13 +727,24 @@ class TblpropertiesController extends BaseController
echo '<p><input type="hidden" name="action" value="add_column" />' . \PHP_EOL;
echo '<input type="hidden" name="stage" value="2" />' . \PHP_EOL;
echo $this->view->form;
- echo \sprintf('<input type="hidden" name="table" value="%s" />%s', \htmlspecialchars($_REQUEST['table']), \PHP_EOL);
+ echo \sprintf(
+ '<input type="hidden" name="table" value="%s" />%s',
+ \htmlspecialchars($_REQUEST['table']),
+ \PHP_EOL
+ );
if (!$data->hasCreateFieldWithConstraints()) {
echo '<input type="hidden" name="default" value="" />' . \PHP_EOL;
}
- echo "<input type=\"submit\" value=\"{$this->lang['stradd']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['stradd']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
echo '<script type="text/javascript">predefined_lengths = new Array(' . \implode(',', $escaped_predef_types) . ");checkLengths(document.getElementById('type').value,'');</script>" . \PHP_EOL;
@@ -650,7 +772,12 @@ class TblpropertiesController extends BaseController
if (0 === $status) {
$this->view->setReloadBrowser(true);
- $this->doDefault(\sprintf('%s %s %s', $sql, \PHP_EOL, $this->lang['strcolumnadded']));
+ $this->doDefault(\sprintf(
+ '%s %s %s',
+ $sql,
+ \PHP_EOL,
+ $this->lang['strcolumnadded']
+ ));
} else {
$_REQUEST['stage'] = 1;
$this->doAddColumn($this->lang['strcolumnaddedbad']);
@@ -661,7 +788,10 @@ class TblpropertiesController extends BaseController
break;
default:
- echo "<p>{$this->lang['strinvalidparam']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strinvalidparam']
+ ) . \PHP_EOL;
}
}
@@ -679,23 +809,45 @@ class TblpropertiesController extends BaseController
$this->printTrail('column');
$this->printTitle($this->lang['strdrop'], 'pg.column.drop');
- echo '<p>' . \sprintf($this->lang['strconfdropcolumn'], $misc->printVal($_REQUEST['column']), $misc->printVal($_REQUEST['table'])) . '</p>' . \PHP_EOL;
+ echo '<p>' . \sprintf(
+ $this->lang['strconfdropcolumn'],
+ $misc->printVal($_REQUEST['column']),
+ $misc->printVal($_REQUEST['table'])
+ ) . '</p>' . \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 \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;
echo $this->view->form;
- echo "<p><input type=\"checkbox\" id=\"cascade\" name=\"cascade\"> <label for=\"cascade\">{$this->lang['strcascade']}</label></p>" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<p><input type="checkbox" id="cascade" name="cascade"> <label for="cascade">%s</label></p>',
+ $this->lang['strcascade']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
[$status, $sql] = $data->dropColumn($_POST['table'], $_POST['column'], isset($_POST['cascade']));
if (0 === $status) {
$this->view->setReloadBrowser(true);
- $this->doDefault(\sprintf('%s %s %s', $sql, \PHP_EOL, $this->lang['strcolumndropped']));
+ $this->doDefault(\sprintf(
+ '%s %s %s',
+ $sql,
+ \PHP_EOL,
+ $this->lang['strcolumndropped']
+ ));
} else {
$this->doDefault($this->lang['strcolumndroppedbad']);
}
@@ -711,8 +863,14 @@ class TblpropertiesController extends BaseController
$data->fieldClean($attname);
$data->fieldClean($table);
- $actions['browse']['attr']['href']['urlvars']['query'] = "SELECT \"{$attname}\", count(*) AS \"count\"
- FROM \"{$table}\" GROUP BY \"{$attname}\" ORDER BY \"{$attname}\"";
+ $actions['browse']['attr']['href']['urlvars']['query'] = \sprintf(
+ 'SELECT "%s", count(*) AS "count"
+ FROM "%s" GROUP BY "%s" ORDER BY "%s"',
+ $attname,
+ $table,
+ $attname,
+ $attname
+ );
return $actions;
};
@@ -800,7 +958,10 @@ class TblpropertiesController extends BaseController
'column' => [
'title' => $this->lang['strcolumn'],
'field' => Decorator::field('attname'),
- 'url' => "colproperties?subject=column&amp;{$misc->href}&amp;table=" . \urlencode($_REQUEST['table']) . '&amp;',
+ 'url' => \sprintf(
+ 'colproperties?subject=column&amp;%s&amp;table=',
+ $misc->href
+ ) . \urlencode($_REQUEST['table']) . '&amp;',
'vars' => ['column' => 'attname'],
],
'type' => [
diff --git a/src/controllers/TreeController.php b/src/controllers/TreeController.php
index 25c238d4..9011470a 100644
--- a/src/controllers/TreeController.php
+++ b/src/controllers/TreeController.php
@@ -6,14 +6,18 @@
namespace PHPPgAdmin\Controller;
+use PHPPgAdmin\ArrayRecordSet;
+use PHPPgAdmin\ContainerUtils;
use PHPPgAdmin\Decorators\Decorator;
+use PHPPgAdmin\Traits\HelperTrait;
+use Slim\Http\Response;
/**
* Base TreeController controller class.
*/
class TreeController extends BaseController
{
- use \PHPPgAdmin\Traits\HelperTrait;
+ use HelperTrait;
public $form = '';
@@ -42,7 +46,7 @@ class TreeController extends BaseController
protected $container;
// Constructor
- public function __construct(\PHPPgAdmin\ContainerUtils $container, $controller_name = null)
+ public function __construct(ContainerUtils $container, $controller_name = null)
{
$this->container = $container;
$this->lang = $container->get('lang');
@@ -65,21 +69,21 @@ class TreeController extends BaseController
/**
* Produce JSON data for the browser tree.
*
- * @param \PHPPgAdmin\ArrayRecordSet $_treedata a set of records to populate the tree
- * @param array $attrs Attributes for tree items
- * 'text' - the text for the tree node
- * 'icon' - an icon for node
- * 'openIcon' - an alternative icon when the node is expanded
- * 'toolTip' - tool tip text for the node
- * 'action' - URL to visit when single clicking the node
- * 'iconAction' - URL to visit when single clicking the icon node
- * 'branch' - URL for child nodes (tree XML)
- * 'expand' - the action to return XML for the subtree
- * 'nodata' - message to display when node has no children
- * @param string $section The section where the branch is linked in the tree
- * @param bool $print either to return or echo the result
+ * @param ArrayRecordSet $_treedata a set of records to populate the tree
+ * @param array $attrs Attributes for tree items
+ * 'text' - the text for the tree node
+ * 'icon' - an icon for node
+ * 'openIcon' - an alternative icon when the node is expanded
+ * 'toolTip' - tool tip text for the node
+ * 'action' - URL to visit when single clicking the node
+ * 'iconAction' - URL to visit when single clicking the icon node
+ * 'branch' - URL for child nodes (tree XML)
+ * 'expand' - the action to return XML for the subtree
+ * 'nodata' - message to display when node has no children
+ * @param string $section The section where the branch is linked in the tree
+ * @param bool $print either to return or echo the result
*
- * @return \Slim\Http\Response|string the json rendered tree
+ * @return Response|string the json rendered tree
*/
public function printTree(&$_treedata, &$attrs, $section, $print = true)
{
@@ -106,7 +110,7 @@ class TreeController extends BaseController
*
* @param array $tabs The tabs
*
- * @return \PHPPgAdmin\ArrayRecordSet filtered tabs in the form of an ArrayRecordSet
+ * @return ArrayRecordSet filtered tabs in the form of an ArrayRecordSet
*/
public function adjustTabsForTree(&$tabs)
{
@@ -116,7 +120,7 @@ class TreeController extends BaseController
}
}
- return new \PHPPgAdmin\ArrayRecordSet($tabs);
+ return new ArrayRecordSet($tabs);
}
/**
diff --git a/src/controllers/TriggersController.php b/src/controllers/TriggersController.php
index e3548ed5..e989592b 100644
--- a/src/controllers/TriggersController.php
+++ b/src/controllers/TriggersController.php
@@ -7,6 +7,8 @@
namespace PHPPgAdmin\Controller;
use PHPPgAdmin\Decorators\Decorator;
+use PHPPgAdmin\XHtml\XHtmlOption;
+use PHPPgAdmin\XHtml\XHtmlSelect;
/**
* Base controller class.
@@ -136,7 +138,11 @@ class TriggersController extends BaseController
'function' => [
'title' => $this->lang['strfunction'],
'field' => Decorator::field('proproto'),
- 'url' => "functions?action=properties&amp;server={$_REQUEST['server']}&amp;database={$_REQUEST['database']}&amp;",
+ 'url' => \sprintf(
+ 'functions?action=properties&amp;server=%s&amp;database=%s&amp;',
+ $_REQUEST['server'],
+ $_REQUEST['database']
+ ),
'vars' => [
'schema' => 'pronamespace',
'function' => 'proproto',
@@ -275,20 +281,40 @@ class TriggersController extends BaseController
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 \sprintf(
+ '<tr><th class="data">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
echo '<td class="data1">';
- echo "<input name=\"name\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ '<input name="name" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_POST['name']), '" />' . \PHP_EOL;
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="alter" />' . \PHP_EOL;
- echo \sprintf('<input type="hidden" name="table" value="%s" />%s', \htmlspecialchars($_REQUEST['table']), \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;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"alter\" value=\"{$this->lang['strok']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="alter" value="%s" />',
+ $this->lang['strok']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
}
@@ -313,12 +339,25 @@ class TriggersController extends BaseController
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 \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;
echo $this->view->form;
- echo "<p><input type=\"checkbox\" id=\"cascade\" name=\"cascade\" /> <label for=\"cascade\">{$this->lang['strcascade']}</label></p>" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"yes\" value=\"{$this->lang['stryes']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"no\" value=\"{$this->lang['strno']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<p><input type="checkbox" id="cascade" name="cascade" /> <label for="cascade">%s</label></p>',
+ $this->lang['strcascade']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="yes" value="%s" />',
+ $this->lang['stryes']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="no" value="%s" />',
+ $this->lang['strno']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
$status = $data->dropTrigger($_POST['trigger'], $_POST['table'], isset($_POST['cascade']));
@@ -352,11 +391,21 @@ class TriggersController extends BaseController
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 \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;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"yes\" value=\"{$this->lang['stryes']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"no\" value=\"{$this->lang['strno']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="yes" value="%s" />',
+ $this->lang['stryes']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="no" value="%s" />',
+ $this->lang['strno']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
$status = $data->enableTrigger($_POST['trigger'], $_POST['table']);
@@ -390,11 +439,21 @@ class TriggersController extends BaseController
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 \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;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"yes\" value=\"{$this->lang['stryes']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"no\" value=\"{$this->lang['strno']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="yes" value="%s" />',
+ $this->lang['stryes']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="no" value="%s" />',
+ $this->lang['strno']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
$status = $data->disableTrigger($_POST['trigger'], $_POST['table']);
@@ -430,52 +489,81 @@ class TriggersController extends BaseController
}
// Populate functions
- $sel0 = new \PHPPgAdmin\XHtml\XHtmlSelect('formFunction');
+ $sel0 = new XHtmlSelect('formFunction');
while (!$funcs->EOF) {
- $sel0->add(new \PHPPgAdmin\XHtml\XHtmlOption($funcs->fields['proname']));
+ $sel0->add(new XHtmlOption($funcs->fields['proname']));
$funcs->moveNext();
}
// Populate times
- $sel1 = new \PHPPgAdmin\XHtml\XHtmlSelect('formExecTime');
+ $sel1 = new XHtmlSelect('formExecTime');
$sel1->set_data($data->triggerExecTimes);
// Populate events
- $sel2 = new \PHPPgAdmin\XHtml\XHtmlSelect('formEvent');
+ $sel2 = new XHtmlSelect('formEvent');
$sel2->set_data($data->triggerEvents);
// Populate occurences
- $sel3 = new \PHPPgAdmin\XHtml\XHtmlSelect('formFrequency');
+ $sel3 = new XHtmlSelect('formFrequency');
$sel3->set_data($data->triggerFrequency);
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;
- echo " <th class=\"data\">{$this->lang['strwhen']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strwhen']
+ ) . \PHP_EOL;
echo '</tr>' . \PHP_EOL;
echo '<tr>' . \PHP_EOL;
echo ' <td class="data1"> <input type="text" name="formTriggerName" size="32" /></td>' . \PHP_EOL;
echo ' <td class="data1"> ', $sel1->fetch(), '</td>' . \PHP_EOL;
echo '</tr>' . \PHP_EOL;
echo '<tr>' . \PHP_EOL;
- echo " <th class=\"data\">{$this->lang['strevent']}</th>" . \PHP_EOL;
- echo " <th class=\"data\">{$this->lang['strforeach']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strevent']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <th class="data">%s</th>',
+ $this->lang['strforeach']
+ ) . \PHP_EOL;
echo '</tr>' . \PHP_EOL;
echo '<tr>' . \PHP_EOL;
echo ' <td class="data1"> ', $sel2->fetch(), '</td>' . \PHP_EOL;
echo ' <td class="data1"> ', $sel3->fetch(), '</td>' . \PHP_EOL;
echo '</tr>' . \PHP_EOL;
- echo "<tr><th class=\"data\"> {$this->lang['strfunction']}</th>" . \PHP_EOL;
- echo "<th class=\"data\"> {$this->lang['strarguments']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data"> %s</th>',
+ $this->lang['strfunction']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<th class="data"> %s</th></tr>',
+ $this->lang['strarguments']
+ ) . \PHP_EOL;
echo '<tr><td class="data1">', $sel0->fetch(), '</td>' . \PHP_EOL;
echo '<td class="data1">(<input type="text" name="formTriggerArgs" size="32" />)</td>' . \PHP_EOL;
echo '</tr></table>' . \PHP_EOL;
- echo "<p><input type=\"submit\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<p><input type="submit" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '<input type="hidden" name="action" value="save_create" />' . \PHP_EOL;
- echo \sprintf('<input type="hidden" name="table" value="%s" />%s', \htmlspecialchars($_REQUEST['table']), \PHP_EOL);
+ echo \sprintf(
+ '<input type="hidden" name="table" value="%s" />%s',
+ \htmlspecialchars($_REQUEST['table']),
+ \PHP_EOL
+ );
echo $this->view->form;
echo '</form>' . \PHP_EOL;
}
diff --git a/src/controllers/TypesController.php b/src/controllers/TypesController.php
index 8e01c57b..739ccf12 100644
--- a/src/controllers/TypesController.php
+++ b/src/controllers/TypesController.php
@@ -101,7 +101,10 @@ class TypesController extends BaseController
'type' => [
'title' => $this->lang['strtype'],
'field' => Decorator::field('typname'),
- 'url' => "types?action=properties&amp;{$this->misc->href}&amp;",
+ 'url' => \sprintf(
+ 'types?action=properties&amp;%s&amp;',
+ $this->misc->href
+ ),
'vars' => ['type' => 'basename'],
],
'owner' => [
@@ -283,27 +286,56 @@ class TypesController extends BaseController
default:
$byval = $data->phpBool($typedata->fields['typbyval']);
echo '<table>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strname']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($typedata->fields['typname']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strinputfn']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strinputfn']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($typedata->fields['typin']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['stroutputfn']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['stroutputfn']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($typedata->fields['typout']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strlength']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strlength']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($typedata->fields['typlen']), '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strpassbyval']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strpassbyval']
+ ) . \PHP_EOL;
echo '<td class="data1">', ($byval) ? $this->lang['stryes'] : $this->lang['strno'], '</td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['stralignment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['stralignment']
+ ) . \PHP_EOL;
echo '<td class="data1">', $this->misc->printVal($typedata->fields['typalign']), '</td></tr>' . \PHP_EOL;
if ($data->hasEnumTypes() && $vals) {
$vals = $vals->getArray();
$nbVals = \count($vals);
- echo "<tr>\n\t<th class=\"data left\" rowspan=\"{$nbVals}\">{$this->lang['strenumvalues']}</th>" . \PHP_EOL;
- echo "<td class=\"data2\">{$vals[0]['enumval']}</td></tr>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr>
+ <th class="data left" rowspan="%s">%s</th>',
+ $nbVals,
+ $this->lang['strenumvalues']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<td class="data2">%s</td></tr>',
+ $vals[0]['enumval']
+ ) . \PHP_EOL;
for ($i = 1; $i < $nbVals; ++$i) {
- echo '<td class="data', 2 - ($i % 2), "\">{$vals[$i]['enumval']}</td></tr>" . \PHP_EOL;
+ echo '<td class="data', 2 - ($i % 2), \sprintf(
+ '">%s</td></tr>',
+ $vals[$i]['enumval']
+ ) . \PHP_EOL;
}
}
echo '</table>' . \PHP_EOL;
@@ -340,15 +372,28 @@ class TypesController extends BaseController
$this->printTrail('type');
$this->printTitle($this->lang['strdrop'], 'pg.type.drop');
- echo '<p>', \sprintf($this->lang['strconfdroptype'], $this->misc->printVal($_REQUEST['type'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdroptype'],
+ $this->misc->printVal($_REQUEST['type'])
+ ), '</p>' . \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 \sprintf(
+ '<p><input type="checkbox" id="cascade" name="cascade" /> <label for="cascade">%s</label></p>',
+ $this->lang['strcascade']
+ ) . \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;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
$status = $data->dropType($_POST['type'], isset($_POST['cascade']));
@@ -386,14 +431,32 @@ class TypesController extends BaseController
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=\"",
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data"><input name="name" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['name']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strnumfields']}</th>" . \PHP_EOL;
- echo "\t\t<td class=\"data\"><input name=\"fields\" size=\"5\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strnumfields']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data"><input name="fields" size="5" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['fields']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo "\t\t<td><textarea name=\"typcomment\" rows=\"3\" cols=\"32\">",
\htmlspecialchars($_REQUEST['typcomment']), "</textarea></td>\n\t</tr>" . \PHP_EOL;
@@ -401,8 +464,15 @@ class TypesController extends BaseController
echo '<p><input type="hidden" name="action" value="create_comp" />' . \PHP_EOL;
echo '<input type="hidden" name="stage" value="2" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" value=\"{$this->lang['strnext']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strnext']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
break;
@@ -434,8 +504,16 @@ class TypesController extends BaseController
// Output table header
echo '<table>' . \PHP_EOL;
- echo "\t<tr><th colspan=\"2\" class=\"data required\">{$this->lang['strfield']}</th><th colspan=\"2\" class=\"data required\">{$this->lang['strtype']}</th>";
- echo "<th class=\"data\">{$this->lang['strlength']}</th><th class=\"data\">{$this->lang['strcomment']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr><th colspan="2" class="data required">%s</th><th colspan="2" class="data required">%s</th>',
+ $this->lang['strfield'],
+ $this->lang['strtype']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th><th class="data">%s</th></tr>',
+ $this->lang['strlength'],
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
for ($i = 0; $i < $_REQUEST['fields']; ++$i) {
if (!isset($_REQUEST['field'][$i])) {
@@ -451,9 +529,17 @@ class TypesController extends BaseController
}
echo "\t<tr>\n\t\t<td>", $i + 1, '.&nbsp;</td>' . \PHP_EOL;
- echo "\t\t<td><input name=\"field[{$i}]\" size=\"16\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ ' <td><input name="field[%s]" size="16" maxlength="%s" value="',
+ $i,
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['field'][$i]), '" /></td>' . \PHP_EOL;
- echo "\t\t<td>\n\t\t\t<select name=\"type[{$i}]\">" . \PHP_EOL;
+ echo \sprintf(
+ ' <td>
+ <select name="type[%s]">',
+ $i
+ ) . \PHP_EOL;
$types->moveFirst();
while (!$types->EOF) {
@@ -466,14 +552,24 @@ class TypesController extends BaseController
echo "\t\t\t</select>\n\t\t</td>" . \PHP_EOL;
// Output array type selector
- echo "\t\t<td>\n\t\t\t<select name=\"array[{$i}]\">" . \PHP_EOL;
+ echo \sprintf(
+ ' <td>
+ <select name="array[%s]">',
+ $i
+ ) . \PHP_EOL;
echo "\t\t\t\t<option value=\"\"", (isset($_REQUEST['array'][$i]) && '' === $_REQUEST['array'][$i]) ? ' selected="selected"' : '', '></option>' . \PHP_EOL;
echo "\t\t\t\t<option value=\"[]\"", (isset($_REQUEST['array'][$i]) && '[]' === $_REQUEST['array'][$i]) ? ' selected="selected"' : '', '>[ ]</option>' . \PHP_EOL;
echo "\t\t\t</select>\n\t\t</td>" . \PHP_EOL;
- echo "\t\t<td><input name=\"length[{$i}]\" size=\"10\" value=\"",
+ echo \sprintf(
+ ' <td><input name="length[%s]" size="10" value="',
+ $i
+ ),
\htmlspecialchars($_REQUEST['length'][$i]), '" /></td>' . \PHP_EOL;
- echo "\t\t<td><input name=\"colcomment[{$i}]\" size=\"40\" value=\"",
+ echo \sprintf(
+ ' <td><input name="colcomment[%s]" size="40" value="',
+ $i
+ ),
\htmlspecialchars($_REQUEST['colcomment'][$i]), "\" /></td>\n\t</tr>" . \PHP_EOL;
}
echo '</table>' . \PHP_EOL;
@@ -483,8 +579,15 @@ class TypesController extends BaseController
echo '<input type="hidden" name="name" value="', \htmlspecialchars($_REQUEST['name']), '" />' . \PHP_EOL;
echo '<input type="hidden" name="fields" value="', \htmlspecialchars($_REQUEST['fields']), '" />' . \PHP_EOL;
echo '<input type="hidden" name="typcomment" value="', \htmlspecialchars($_REQUEST['typcomment']), '" />' . \PHP_EOL;
- echo "<input type=\"submit\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
break;
@@ -534,7 +637,10 @@ class TypesController extends BaseController
break;
default:
- echo "<p>{$this->lang['strinvalidparam']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strinvalidparam']
+ ) . \PHP_EOL;
}
}
@@ -563,14 +669,32 @@ class TypesController extends BaseController
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=\"",
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data"><input name="name" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['name']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strnumvalues']}</th>" . \PHP_EOL;
- echo "\t\t<td class=\"data\"><input name=\"values\" size=\"5\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strnumvalues']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data"><input name="values" size="5" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['values']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo "\t\t<td><textarea name=\"typcomment\" rows=\"3\" cols=\"32\">",
\htmlspecialchars($_REQUEST['typcomment']), "</textarea></td>\n\t</tr>" . \PHP_EOL;
@@ -578,8 +702,15 @@ class TypesController extends BaseController
echo '<p><input type="hidden" name="action" value="create_enum" />' . \PHP_EOL;
echo '<input type="hidden" name="stage" value="2" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" value=\"{$this->lang['strnext']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strnext']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
break;
@@ -609,7 +740,10 @@ class TypesController extends BaseController
// Output table header
echo '<table>' . \PHP_EOL;
- echo "\t<tr><th colspan=\"2\" class=\"data required\">{$this->lang['strvalue']}</th></tr>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr><th colspan="2" class="data required">%s</th></tr>',
+ $this->lang['strvalue']
+ ) . \PHP_EOL;
for ($i = 0; $i < $_REQUEST['values']; ++$i) {
if (!isset($_REQUEST['value'][$i])) {
@@ -617,7 +751,11 @@ class TypesController extends BaseController
}
echo "\t<tr>\n\t\t<td>", $i + 1, '.&nbsp;</td>' . \PHP_EOL;
- echo "\t\t<td><input name=\"value[{$i}]\" size=\"16\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ ' <td><input name="value[%s]" size="16" maxlength="%s" value="',
+ $i,
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['value'][$i]), "\" /></td>\n\t</tr>" . \PHP_EOL;
}
echo '</table>' . \PHP_EOL;
@@ -627,8 +765,15 @@ class TypesController extends BaseController
echo '<input type="hidden" name="name" value="', \htmlspecialchars($_REQUEST['name']), '" />' . \PHP_EOL;
echo '<input type="hidden" name="values" value="', \htmlspecialchars($_REQUEST['values']), '" />' . \PHP_EOL;
echo '<input type="hidden" name="typcomment" value="', \htmlspecialchars($_REQUEST['typcomment']), '" />' . \PHP_EOL;
- echo "<input type=\"submit\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
break;
@@ -669,7 +814,10 @@ class TypesController extends BaseController
break;
default:
- echo "<p>{$this->lang['strinvalidparam']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strinvalidparam']
+ ) . \PHP_EOL;
}
}
@@ -710,74 +858,144 @@ class TypesController extends BaseController
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=\"",
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<td class="data1"><input name="typname" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_POST['typname']), '" /></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left required\">{$this->lang['strinputfn']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strinputfn']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="typin">';
while (!$funcs->EOF) {
$proname = \htmlspecialchars($funcs->fields['proname']);
- echo "<option value=\"{$proname}\"",
- ($proname === $_POST['typin']) ? ' selected="selected"' : '', ">{$proname}</option>" . \PHP_EOL;
+ echo \sprintf(
+ '<option value="%s"',
+ $proname
+ ),
+ ($proname === $_POST['typin']) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $proname
+ ) . \PHP_EOL;
$funcs->moveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left required\">{$this->lang['stroutputfn']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['stroutputfn']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="typout">';
$funcs->moveFirst();
while (!$funcs->EOF) {
$proname = \htmlspecialchars($funcs->fields['proname']);
- echo "<option value=\"{$proname}\"",
- ($proname === $_POST['typout']) ? ' selected="selected"' : '', ">{$proname}</option>" . \PHP_EOL;
+ echo \sprintf(
+ '<option value="%s"',
+ $proname
+ ),
+ ($proname === $_POST['typout']) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $proname
+ ) . \PHP_EOL;
$funcs->moveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
- echo '<tr><th class="data left' . (\version_compare($data->major_version, '7.4', '<') ? ' required' : '') . "\">{$this->lang['strlength']}</th>" . \PHP_EOL;
+ echo '<tr><th class="data left' . (\version_compare($data->major_version, '7.4', '<') ? ' required' : '') . \sprintf(
+ '">%s</th>',
+ $this->lang['strlength']
+ ) . \PHP_EOL;
echo '<td class="data1"><input name="typlen" size="8" value="',
\htmlspecialchars($_POST['typlen']), '" /></td></tr>';
- echo "<tr><th class=\"data left\">{$this->lang['strdefault']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strdefault']
+ ) . \PHP_EOL;
echo '<td class="data1"><input name="typdef" size="8" value="',
\htmlspecialchars($_POST['typdef']), '" /></td></tr>';
- echo "<tr><th class=\"data left\">{$this->lang['strelement']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strelement']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="typelem">';
echo '<option value=""></option>' . \PHP_EOL;
while (!$types->EOF) {
$currname = \htmlspecialchars($types->fields['typname']);
- echo "<option value=\"{$currname}\"",
- ($currname === $_POST['typelem']) ? ' selected="selected"' : '', ">{$currname}</option>" . \PHP_EOL;
+ echo \sprintf(
+ '<option value="%s"',
+ $currname
+ ),
+ ($currname === $_POST['typelem']) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $currname
+ ) . \PHP_EOL;
$types->moveNext();
}
echo '</select></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strdelimiter']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strdelimiter']
+ ) . \PHP_EOL;
echo '<td class="data1"><input name="typdelim" size="1" maxlength="1" value="',
\htmlspecialchars($_POST['typdelim']), '" /></td></tr>';
- echo "<tr><th class=\"data left\"><label for=\"typbyval\">{$this->lang['strpassbyval']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left"><label for="typbyval">%s</label></th>',
+ $this->lang['strpassbyval']
+ ) . \PHP_EOL;
echo '<td class="data1"><input type="checkbox" id="typbyval" name="typbyval"',
isset($_POST['typbyval']) ? ' checked="checked"' : '', ' /></td></tr>';
- echo "<tr><th class=\"data left\">{$this->lang['stralignment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['stralignment']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="typalign">';
foreach ($data->typAligns as $v) {
- echo "<option value=\"{$v}\"",
- ($v === $_POST['typalign']) ? ' selected="selected"' : '', ">{$v}</option>" . \PHP_EOL;
+ echo \sprintf(
+ '<option value="%s"',
+ $v
+ ),
+ ($v === $_POST['typalign']) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $v
+ ) . \PHP_EOL;
}
echo '</select></td></tr>' . \PHP_EOL;
- echo "<tr><th class=\"data left\">{$this->lang['strstorage']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strstorage']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="typstorage">';
foreach ($data->typStorages as $v) {
- echo "<option value=\"{$v}\"",
- ($v === $_POST['typstorage']) ? ' selected="selected"' : '', ">{$v}</option>" . \PHP_EOL;
+ echo \sprintf(
+ '<option value="%s"',
+ $v
+ ),
+ ($v === $_POST['typstorage']) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>',
+ $v
+ ) . \PHP_EOL;
}
echo '</select></td></tr>' . \PHP_EOL;
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="save_create" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
}
diff --git a/src/controllers/UsersController.php b/src/controllers/UsersController.php
index eef40e7b..0786d961 100644
--- a/src/controllers/UsersController.php
+++ b/src/controllers/UsersController.php
@@ -208,8 +208,17 @@ class UsersController extends BaseController
$userdata->fields['usesuper'] = $data->phpBool($userdata->fields['usesuper']);
$userdata->fields['usecreatedb'] = $data->phpBool($userdata->fields['usecreatedb']);
echo '<table>' . \PHP_EOL;
- echo "<tr><th class=\"data\">{$this->lang['strusername']}</th><th class=\"data\">{$this->lang['strsuper']}</th><th class=\"data\">{$this->lang['strcreatedb']}</th><th class=\"data\">{$this->lang['strexpires']}</th>";
- echo "<th class=\"data\">{$this->lang['strsessiondefaults']}</th>";
+ echo \sprintf(
+ '<tr><th class="data">%s</th><th class="data">%s</th><th class="data">%s</th><th class="data">%s</th>',
+ $this->lang['strusername'],
+ $this->lang['strsuper'],
+ $this->lang['strcreatedb'],
+ $this->lang['strexpires']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th>',
+ $this->lang['strsessiondefaults']
+ );
echo '</tr>' . \PHP_EOL;
echo "<tr>\n\t<td class=\"data1\">", $this->misc->printVal($userdata->fields['usename']), '</td>' . \PHP_EOL;
echo "\t<td class=\"data1\">", $this->misc->printVal($userdata->fields['usesuper'], 'yesno'), '</td>' . \PHP_EOL;
@@ -218,7 +227,10 @@ class UsersController extends BaseController
echo "\t<td class=\"data1\">", $this->misc->printVal($userdata->fields['useconfig']), '</td>' . \PHP_EOL;
echo "</tr>\n</table>" . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
$this->printNavLinks(['changepassword' => [
@@ -259,17 +271,31 @@ class UsersController extends BaseController
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 \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strpassword']
+ ) . \PHP_EOL;
echo "\t\t<td><input type=\"password\" name=\"password\" size=\"32\" value=\"",
\htmlspecialchars($_POST['password']),
"\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strconfirm']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strconfirm']
+ ) . \PHP_EOL;
echo "\t\t<td><input type=\"password\" name=\"confirm\" size=\"32\" value=\"\" /></td>\n\t</tr>" . \PHP_EOL;
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="changepassword" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"ok\" value=\"{$this->lang['strok']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="ok" value="%s" />',
+ $this->lang['strok']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo '</p></form>' . \PHP_EOL;
} else {
// Check that password is minimum length
@@ -333,31 +359,68 @@ class UsersController extends BaseController
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;
- echo "\t<tr>\n\t\t<th class=\"data left\"><label for=\"formSuper\">{$this->lang['strsuper']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strusername']
+ ) . \PHP_EOL;
+ echo "\t\t<td class=\"data1\">", ($canRename ? \sprintf(
+ '<input name="newname" size="15" maxlength="%s" value="',
+ $data->_maxNameLen
+ ) . \htmlspecialchars($_POST['newname']) . '" />' : $this->misc->printVal($userdata->fields['usename'])), "</td>\n\t</tr>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left"><label for="formSuper">%s</label></th>',
+ $this->lang['strsuper']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"checkbox\" id=\"formSuper\" name=\"formSuper\"",
(isset($_POST['formSuper'])) ? ' checked="checked"' : '',
" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\"><label for=\"formCreateDB\">{$this->lang['strcreatedb']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left"><label for="formCreateDB">%s</label></th>',
+ $this->lang['strcreatedb']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"checkbox\" id=\"formCreateDB\" name=\"formCreateDB\"",
(isset($_POST['formCreateDB'])) ? ' checked="checked"' : '',
" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strexpires']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strexpires']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input size=\"16\" name=\"formExpires\" value=\"", \htmlspecialchars($_POST['formExpires']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strpassword']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strpassword']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"password\" size=\"16\" name=\"formPassword\" value=\"", \htmlspecialchars($_POST['formPassword']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strconfirm']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strconfirm']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"password\" size=\"16\" name=\"formConfirm\" value=\"\" /></td>\n\t</tr>" . \PHP_EOL;
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="save_edit" />' . \PHP_EOL;
echo '<input type="hidden" name="username" value="', \htmlspecialchars($_REQUEST['username']), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"alter\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="alter" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
}
@@ -401,14 +464,24 @@ class UsersController extends BaseController
$this->printTrail('user');
$this->printTitle($this->lang['strdrop'], 'pg.user.drop');
- echo '<p>', \sprintf($this->lang['strconfdropuser'], $this->misc->printVal($_REQUEST['username'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropuser'],
+ $this->misc->printVal($_REQUEST['username'])
+ ), '</p>' . \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;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
$status = $data->dropUser($_REQUEST['username']);
@@ -444,27 +517,61 @@ class UsersController extends BaseController
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;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strpassword']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strusername']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data1"><input size="15" maxlength="%s" name="formUsername" value="',
+ $data->_maxNameLen
+ ), \htmlspecialchars($_POST['formUsername']), "\" /></td>\n\t</tr>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strpassword']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input size=\"15\" type=\"password\" name=\"formPassword\" value=\"", \htmlspecialchars($_POST['formPassword']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strconfirm']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strconfirm']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input size=\"15\" type=\"password\" name=\"formConfirm\" value=\"", \htmlspecialchars($_POST['formConfirm']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\"><label for=\"formSuper\">{$this->lang['strsuper']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left"><label for="formSuper">%s</label></th>',
+ $this->lang['strsuper']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"checkbox\" id=\"formSuper\" name=\"formSuper\"",
(isset($_POST['formSuper'])) ? ' checked="checked"' : '',
" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\"><label for=\"formCreateDB\">{$this->lang['strcreatedb']}</label></th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left"><label for="formCreateDB">%s</label></th>',
+ $this->lang['strcreatedb']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input type=\"checkbox\" id=\"formCreateDB\" name=\"formCreateDB\"",
(isset($_POST['formCreateDB'])) ? ' checked="checked"' : '',
" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strexpires']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strexpires']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><input size=\"30\" name=\"formExpires\" value=\"", \htmlspecialchars($_POST['formExpires']), "\" /></td>\n\t</tr>" . \PHP_EOL;
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="save_create" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" name=\"create\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" name="create" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
}
diff --git a/src/controllers/ViewpropertiesController.php b/src/controllers/ViewpropertiesController.php
index c0c4a31f..33091e27 100644
--- a/src/controllers/ViewpropertiesController.php
+++ b/src/controllers/ViewpropertiesController.php
@@ -6,13 +6,16 @@
namespace PHPPgAdmin\Controller;
+use PHPPgAdmin\Traits\ExportTrait;
+use PHPPgAdmin\Traits\ViewsMatViewsPropertiesTrait;
+
/**
* Base controller class.
*/
class ViewpropertiesController extends BaseController
{
- use \PHPPgAdmin\Traits\ExportTrait;
- use \PHPPgAdmin\Traits\ViewsMatViewsPropertiesTrait;
+ use ExportTrait;
+ use ViewsMatViewsPropertiesTrait;
public $controller_title = 'strviews';
@@ -148,39 +151,51 @@ class ViewpropertiesController extends BaseController
'formComment' => \htmlspecialchars($_POST['formComment']),
'subject' => \htmlspecialchars($_REQUEST[$this->subject]), ];
- $edition_area = <<<EOT
-
-<form action="{$variables->subfolder}" method="post">
+ $edition_area = \sprintf(
+ '
+<form action="%s" method="post">
<table style="width: 100%">
<tr>
- <th class="data left required">{$this->lang['strdefinition']}</th>
+ <th class="data left required">%s</th>
<td class="data1">
<textarea style="width: 100%;" rows="20" cols="50" id="query" name="formDefinition">
- {$variables->formDefinition}
+ %s
</textarea>
</td>
</tr>
<tr>
- <th class="data left">{$this->lang['strcomment']}</th>
+ <th class="data left">%s</th>
<td class="data1">
<textarea rows="3" cols="32" name="formComment">
- {$variables->formComment}
+ %s
</textarea>
</td>
</tr>
</table>
<p>
<input type="hidden" name="action" value="save_edit" />
- <input type="hidden" name="view" value="{$variables->subject}" />
- {$this->view->form}
- <input type="submit" value="{$this->lang['stralter']}" />
- <input type="submit" name="cancel" value="{$this->lang['strcancel']}" />
+ <input type="hidden" name="view" value="%s" />
+ %s
+ <input type="submit" value="%s" />
+ <input type="submit" name="cancel" value="%s" />
</p>
-</form>
-EOT;
+</form>',
+ $variables->subfolder,
+ $this->lang['strdefinition'],
+ $variables->formDefinition,
+ $this->lang['strcomment'],
+ $variables->formComment,
+ $variables->subject,
+ $this->view->form,
+ $this->lang['stralter'],
+ $this->lang['strcancel']
+ );
echo $edition_area;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
}
@@ -205,8 +220,16 @@ EOT;
// Output view header
echo '<table>' . \PHP_EOL;
- echo "<tr><th class=\"data required\">{$this->lang['strname']}</th><th class=\"data required\">{$this->lang['strtype']}</th>";
- echo "<th class=\"data\">{$this->lang['strdefault']}</th><th class=\"data\">{$this->lang['strcomment']}</th></tr>";
+ echo \sprintf(
+ '<tr><th class="data required">%s</th><th class="data required">%s</th>',
+ $this->lang['strname'],
+ $this->lang['strtype']
+ );
+ echo \sprintf(
+ '<th class="data">%s</th><th class="data">%s</th></tr>',
+ $this->lang['strdefault'],
+ $this->lang['strcomment']
+ );
$column = $data->getTableAttributes($_REQUEST[$this->subject], $_REQUEST['column']);
@@ -232,8 +255,15 @@ EOT;
echo '<input type="hidden" name="view" value="', \htmlspecialchars($_REQUEST[$this->subject]), '" />' . \PHP_EOL;
echo '<input type="hidden" name="column" value="', \htmlspecialchars($_REQUEST['column']), '" />' . \PHP_EOL;
echo '<input type="hidden" name="olddefault" value="', \htmlspecialchars($_REQUEST['olddefault']), '" />' . \PHP_EOL;
- echo "<input type=\"submit\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
break;
@@ -274,7 +304,10 @@ EOT;
break;
default:
- echo "<p>{$this->lang['strinvalidparam']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strinvalidparam']
+ ) . \PHP_EOL;
}
}
@@ -301,16 +334,25 @@ EOT;
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 \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
echo '<td class="data1">';
- echo "<input name=\"name\" size=\"32\" maxlength=\"{$data->_maxNameLen}\" value=\"",
+ echo \sprintf(
+ '<input name="name" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_POST['name']), '" /></td></tr>' . \PHP_EOL;
if ($data->isSuperUser()) {
// Fetch all users
$users = $data->getUsers();
- echo "<tr><th class=\"data left required\">{$this->lang['strowner']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strowner']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="owner">';
while (!$users->EOF) {
@@ -324,7 +366,10 @@ EOT;
if ($data->hasAlterTableSchema()) {
$schemas = $data->getSchemas();
- echo "<tr><th class=\"data left required\">{$this->lang['strschema']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left required">%s</th>',
+ $this->lang['strschema']
+ ) . \PHP_EOL;
echo '<td class="data1"><select name="newschema">';
while (!$schemas->EOF) {
@@ -336,7 +381,10 @@ EOT;
echo '</select></td></tr>' . \PHP_EOL;
}
- echo "<tr><th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ '<tr><th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo '<td class="data1">';
echo '<textarea rows="3" cols="32" name="comment">',
\htmlspecialchars($_POST['comment']), '</textarea></td></tr>' . \PHP_EOL;
@@ -344,11 +392,21 @@ EOT;
echo '<input type="hidden" name="action" value="alter" />' . \PHP_EOL;
echo '<input type="hidden" name="view" value="', \htmlspecialchars($_REQUEST[$this->subject]), '" />' . \PHP_EOL;
echo $this->view->form;
- echo "<p><input type=\"submit\" name=\"alter\" value=\"{$this->lang['stralter']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<p><input type="submit" name="alter" value="%s" />',
+ $this->lang['stralter']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
} else {
- echo "<p>{$this->lang['strnodata']}</p>" . \PHP_EOL;
+ echo \sprintf(
+ '<p>%s</p>',
+ $this->lang['strnodata']
+ ) . \PHP_EOL;
}
} else {
// For databases that don't allow owner change
diff --git a/src/controllers/ViewsController.php b/src/controllers/ViewsController.php
index 46bdd4ca..a7215b33 100644
--- a/src/controllers/ViewsController.php
+++ b/src/controllers/ViewsController.php
@@ -7,13 +7,14 @@
namespace PHPPgAdmin\Controller;
use PHPPgAdmin\Decorators\Decorator;
+use PHPPgAdmin\Traits\ViewsMatviewsTrait;
/**
* Base controller class.
*/
class ViewsController extends BaseController
{
- use \PHPPgAdmin\Traits\ViewsMatviewsTrait;
+ use ViewsMatviewsTrait;
public $table_place = 'views-views';
@@ -124,7 +125,10 @@ class ViewsController extends BaseController
$this->keystring => [
'title' => $this->lang['strview'],
'field' => Decorator::field('relname'),
- 'url' => \containerInstance()->subFolder . "/redirect/view?{$this->misc->href}&amp;",
+ 'url' => \containerInstance()->subFolder . \sprintf(
+ '/redirect/view?%s&amp;',
+ $this->misc->href
+ ),
'vars' => [$this->keystring => 'relname'],
],
'owner' => [
@@ -287,20 +291,35 @@ class ViewsController extends BaseController
if (isset($_REQUEST['ma'])) {
foreach ($_REQUEST['ma'] as $v) {
$a = \unserialize(\htmlspecialchars_decode($v, \ENT_QUOTES));
- echo '<p>', \sprintf($this->lang['strconfdropview'], $this->misc->printVal($a['view'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropview'],
+ $this->misc->printVal($a['view'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="view[]" value="', \htmlspecialchars($a['view']), '" />' . \PHP_EOL;
}
} else {
- echo '<p>', \sprintf($this->lang['strconfdropview'], $this->misc->printVal($_REQUEST['view'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfdropview'],
+ $this->misc->printVal($_REQUEST['view'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="view" value="', \htmlspecialchars($_REQUEST['view']), '" />' . \PHP_EOL;
}
echo '<input type="hidden" name="action" value="drop" />' . \PHP_EOL;
echo $this->view->form;
- echo "<p><input type=\"checkbox\" id=\"cascade\" name=\"cascade\" /> <label for=\"cascade\">{$this->lang['strcascade']}</label></p>" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"drop\" value=\"{$this->lang['strdrop']}\" />" . \PHP_EOL;
- echo "<input type=\"submit\" name=\"cancel\" value=\"{$this->lang['strcancel']}\" />" . \PHP_EOL;
+ echo \sprintf(
+ '<p><input type="checkbox" id="cascade" name="cascade" /> <label for="cascade">%s</label></p>',
+ $this->lang['strcascade']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="drop" value="%s" />',
+ $this->lang['strdrop']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" />',
+ $this->lang['strcancel']
+ ) . \PHP_EOL;
echo '</form>' . \PHP_EOL;
} else {
if (\is_array($_POST['view'])) {
@@ -412,22 +431,47 @@ class ViewsController extends BaseController
$this->printTitle($this->lang['strcreateview'], 'pg.view.create');
$this->printMsg($msg);
- echo '<form action="' . \containerInstance()->subFolder . "/src/views/{$this->view_name}\" method=\"post\">" . \PHP_EOL;
+ echo '<form action="' . \containerInstance()->subFolder . \sprintf(
+ '/src/views/%s" method="post">',
+ $this->view_name
+ ) . \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=\"",
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strname']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ ' <td class="data1"><input name="formView" size="32" maxlength="%s" value="',
+ $data->_maxNameLen
+ ),
\htmlspecialchars($_REQUEST['formView']), "\" /></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left required\">{$this->lang['strdefinition']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left required">%s</th>',
+ $this->lang['strdefinition']
+ ) . \PHP_EOL;
echo "\t<td class=\"data1\"><textarea style=\"width:100%;\" rows=\"10\" cols=\"50\" name=\"formDefinition\">",
\htmlspecialchars($_REQUEST['formDefinition']), "</textarea></td>\n\t</tr>" . \PHP_EOL;
- echo "\t<tr>\n\t\t<th class=\"data left\">{$this->lang['strcomment']}</th>" . \PHP_EOL;
+ echo \sprintf(
+ ' <tr>
+ <th class="data left">%s</th>',
+ $this->lang['strcomment']
+ ) . \PHP_EOL;
echo "\t\t<td class=\"data1\"><textarea name=\"formComment\" rows=\"3\" cols=\"32\">",
\htmlspecialchars($_REQUEST['formComment']), "</textarea></td>\n\t</tr>" . \PHP_EOL;
echo '</table>' . \PHP_EOL;
echo '<p><input type="hidden" name="action" value="save_create" />' . \PHP_EOL;
echo $this->view->form;
- echo "<input type=\"submit\" value=\"{$this->lang['strcreate']}\" />" . \PHP_EOL;
- echo \sprintf('<input type="submit" name="cancel" value="%s" /></p>%s', $this->lang['strcancel'], \PHP_EOL);
+ echo \sprintf(
+ '<input type="submit" value="%s" />',
+ $this->lang['strcreate']
+ ) . \PHP_EOL;
+ echo \sprintf(
+ '<input type="submit" name="cancel" value="%s" /></p>%s',
+ $this->lang['strcancel'],
+ \PHP_EOL
+ );
echo '</form>' . \PHP_EOL;
}
diff --git a/src/database/ADOdbBase.php b/src/database/ADOdbBase.php
index 9944def5..8f36d466 100644
--- a/src/database/ADOdbBase.php
+++ b/src/database/ADOdbBase.php
@@ -6,6 +6,14 @@
namespace PHPPgAdmin\Database;
+use ADODB_postgres9;
+use Exception;
+use PHPPgAdmin\ADORecordSet;
+use PHPPgAdmin\ContainerUtils;
+use PHPPgAdmin\Database\Traits\DatabaseTrait;
+use PHPPgAdmin\Database\Traits\HasTrait;
+use PHPPgAdmin\Traits\HelperTrait;
+
/**
* @file
* Parent class of all ADODB objects.
@@ -14,9 +22,9 @@ namespace PHPPgAdmin\Database;
*/
class ADOdbBase
{
- use \PHPPgAdmin\Traits\HelperTrait;
- use \PHPPgAdmin\Database\Traits\HasTrait;
- use \PHPPgAdmin\Database\Traits\DatabaseTrait;
+ use HelperTrait;
+ use HasTrait;
+ use DatabaseTrait;
/**
* @var array
@@ -29,12 +37,12 @@ class ADOdbBase
public $conf;
/**
- * @var \ADODB_postgres9
+ * @var ADODB_postgres9
*/
public $conn;
/**
- * @var \PHPPgAdmin\ContainerUtils
+ * @var ContainerUtils
*/
protected $container;
@@ -51,9 +59,9 @@ class ADOdbBase
/**
* Base constructor.
*
- * @param \ADODB_postgres9 $conn The connection object
- * @param mixed $container
- * @param mixed $server_info
+ * @param ADODB_postgres9 $conn The connection object
+ * @param mixed $container
+ * @param mixed $server_info
*/
public function __construct(&$conn, $container, $server_info)
{
@@ -94,10 +102,14 @@ class ADOdbBase
return [];
}
- $sql = "SELECT attnum, attname FROM pg_catalog.pg_attribute WHERE
- attrelid=(SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}' AND
- relnamespace=(SELECT oid FROM pg_catalog.pg_namespace WHERE nspname='{$c_schema}'))
- AND attnum IN ('" . \implode("','", $atts) . "')";
+ $sql = \sprintf(
+ 'SELECT attnum, attname FROM pg_catalog.pg_attribute WHERE
+ attrelid=(SELECT oid FROM pg_catalog.pg_class WHERE relname=\'%s\' AND
+ relnamespace=(SELECT oid FROM pg_catalog.pg_namespace WHERE nspname=\'%s\'))
+ AND attnum IN (\'',
+ $table,
+ $c_schema
+ ) . \implode("','", $atts) . "')";
$rs = $this->selectSet($sql);
@@ -126,11 +138,14 @@ class ADOdbBase
* @param string $comment the comment to add
* @param null|string $basetype
*
- * @return int|\PHPPgAdmin\ADORecordSet recordset of results or error code
+ * @return ADORecordSet|int recordset of results or error code
*/
public function setComment($obj_type, $obj_name, $table, $comment, $basetype = null)
{
- $sql = "COMMENT ON {$obj_type} ";
+ $sql = \sprintf(
+ 'COMMENT ON %s ',
+ $obj_type
+ );
$f_schema = $this->_schema;
$this->fieldClean($f_schema);
@@ -144,11 +159,20 @@ class ADOdbBase
switch ($obj_type) {
case 'TABLE':
- $sql .= "\"{$f_schema}\".\"{$table}\" IS ";
+ $sql .= \sprintf(
+ '"%s"."%s" IS ',
+ $f_schema,
+ $table
+ );
break;
case 'COLUMN':
- $sql .= "\"{$f_schema}\".\"{$table}\".\"{$obj_name}\" IS ";
+ $sql .= \sprintf(
+ '"%s"."%s"."%s" IS ',
+ $f_schema,
+ $table,
+ $obj_name
+ );
break;
case 'SEQUENCE':
@@ -159,21 +183,36 @@ class ADOdbBase
case 'TEXT SEARCH TEMPLATE':
case 'TEXT SEARCH PARSER':
case 'TYPE':
- $sql .= "\"{$f_schema}\".";
+ $sql .= \sprintf(
+ '"%s".',
+ $f_schema
+ );
// no break
case 'DATABASE':
case 'ROLE':
case 'SCHEMA':
case 'TABLESPACE':
- $sql .= "\"{$obj_name}\" IS ";
+ $sql .= \sprintf(
+ '"%s" IS ',
+ $obj_name
+ );
break;
case 'FUNCTION':
- $sql .= "\"{$f_schema}\".{$obj_name} IS ";
+ $sql .= \sprintf(
+ '"%s".%s IS ',
+ $f_schema,
+ $obj_name
+ );
break;
case 'AGGREGATE':
- $sql .= "\"{$f_schema}\".\"{$obj_name}\" (\"{$basetype}\") IS ";
+ $sql .= \sprintf(
+ '"%s"."%s" ("%s") IS ',
+ $f_schema,
+ $obj_name,
+ $basetype
+ );
break;
@@ -183,7 +222,10 @@ class ADOdbBase
}
if ('' !== $comment) {
- $sql .= "'{$comment}';";
+ $sql .= \sprintf(
+ '\'%s\';',
+ $comment
+ );
} else {
$sql .= 'NULL;';
}
@@ -254,7 +296,7 @@ class ADOdbBase
*
* @param string $sql The SQL query to execute
*
- * @return int|\PHPPgAdmin\ADORecordSet A recordset or an error code
+ * @return ADORecordSet|int A recordset or an error code
*/
public function execute($sql)
{
@@ -263,7 +305,7 @@ class ADOdbBase
$rs = $this->conn->Execute($sql);
return $this->ErrorNo();
- } catch (\Exception $e) {
+ } catch (Exception $e) {
return $e->getCode();
}
}
@@ -282,14 +324,14 @@ class ADOdbBase
*
* @param string $sql The SQL statement to be executed
*
- * @return int|\PHPPgAdmin\ADORecordSet A recordset or an error number
+ * @return ADORecordSet|int A recordset or an error number
*/
public function selectSet($sql)
{
// Execute the statement
try {
return $this->conn->Execute($sql);
- } catch (\Exception $e) {
+ } catch (Exception $e) {
return $e->getCode();
}
}
@@ -348,7 +390,10 @@ class ADOdbBase
if (!empty($schema)) {
$this->fieldClean($schema);
- $schema = "\"{$schema}\".";
+ $schema = \sprintf(
+ '"%s".',
+ $schema
+ );
}
// Build clause
@@ -359,9 +404,19 @@ class ADOdbBase
$this->clean($value);
if ($sql) {
- $sql .= " AND \"{$key}\"='{$value}'";
+ $sql .= \sprintf(
+ ' AND "%s"=\'%s\'',
+ $key,
+ $value
+ );
} else {
- $sql = "DELETE FROM {$schema}\"{$table}\" WHERE \"{$key}\"='{$value}'";
+ $sql = \sprintf(
+ 'DELETE FROM %s"%s" WHERE "%s"=\'%s\'',
+ $schema,
+ $table,
+ $key,
+ $value
+ );
}
}
@@ -450,15 +505,28 @@ class ADOdbBase
$this->clean($value);
if ($fields) {
- $fields .= ", \"{$key}\"";
+ $fields .= \sprintf(
+ ', "%s"',
+ $key
+ );
} else {
- $fields = "INSERT INTO \"{$table}\" (\"{$key}\"";
+ $fields = \sprintf(
+ 'INSERT INTO "%s" ("%s"',
+ $table,
+ $key
+ );
}
if ($values) {
- $values .= ", '{$value}'";
+ $values .= \sprintf(
+ ', \'%s\'',
+ $value
+ );
} else {
- $values = ") VALUES ('{$value}'";
+ $values = \sprintf(
+ ') VALUES (\'%s\'',
+ $value
+ );
}
}
$sql .= $fields . $values . ')';
@@ -504,9 +572,18 @@ class ADOdbBase
$this->clean($value);
if ($setClause) {
- $setClause .= ", \"{$key}\"='{$value}'";
+ $setClause .= \sprintf(
+ ', "%s"=\'%s\'',
+ $key,
+ $value
+ );
} else {
- $setClause = "UPDATE \"{$table}\" SET \"{$key}\"='{$value}'";
+ $setClause = \sprintf(
+ 'UPDATE "%s" SET "%s"=\'%s\'',
+ $table,
+ $key,
+ $value
+ );
}
}
@@ -516,9 +593,16 @@ class ADOdbBase
$this->fieldClean($value);
if ($setClause) {
- $setClause .= ", \"{$value}\"=NULL";
+ $setClause .= \sprintf(
+ ', "%s"=NULL',
+ $value
+ );
} else {
- $setClause = "UPDATE \"{$table}\" SET \"{$value}\"=NULL";
+ $setClause = \sprintf(
+ 'UPDATE "%s" SET "%s"=NULL',
+ $table,
+ $value
+ );
}
}
@@ -529,9 +613,17 @@ class ADOdbBase
$this->clean($value);
if ($whereClause) {
- $whereClause .= " AND \"{$key}\"='{$value}'";
+ $whereClause .= \sprintf(
+ ' AND "%s"=\'%s\'',
+ $key,
+ $value
+ );
} else {
- $whereClause = " WHERE \"{$key}\"='{$value}'";
+ $whereClause = \sprintf(
+ ' WHERE "%s"=\'%s\'',
+ $key,
+ $value
+ );
}
}
@@ -594,7 +686,7 @@ class ADOdbBase
{
try {
return $this->conn->platform;
- } catch (\Exception $e) {
+ } catch (Exception $e) {
$this->prtrace($e->getMessage());
return 'UNKNOWN';
diff --git a/src/database/Connection.php b/src/database/Connection.php
index f3fedba7..df562d31 100644
--- a/src/database/Connection.php
+++ b/src/database/Connection.php
@@ -6,6 +6,10 @@
namespace PHPPgAdmin\Database;
+use Exception;
+use PHPPgAdmin\Traits\HelperTrait;
+use Slim\Container;
+
/**
* @file
* Class to represent a database connection
@@ -14,7 +18,7 @@ namespace PHPPgAdmin\Database;
*/
class Connection
{
- use \PHPPgAdmin\Traits\HelperTrait;
+ use HelperTrait;
public $conn;
@@ -45,10 +49,10 @@ class Connection
/**
* Creates a new connection. Will actually make a database connection.
*
- * @param array $server_info
- * @param string $database database name
- * @param \Slim\Container $container
- * @param int $fetchMode Defaults to associative. Override for different behaviour
+ * @param array $server_info
+ * @param string $database database name
+ * @param Container $container
+ * @param int $fetchMode Defaults to associative. Override for different behaviour
*/
public function __construct($server_info, $database, $container, $fetchMode = \ADODB_FETCH_ASSOC)
{
@@ -74,7 +78,11 @@ class Connection
$pghost = '';
}
} else {
- $pghost = "{$host}:{$port}";
+ $pghost = \sprintf(
+ '%s:%s',
+ $host,
+ $port
+ );
}
// Add sslmode to $pghost as needed
@@ -87,7 +95,7 @@ class Connection
try {
$this->conn->connect($pghost, $user, $password, $database);
//$this->prtrace($this->conn);
- } catch (\Exception $e) {
+ } catch (Exception $e) {
dump($e);
$this->prtrace($e->getMessage(), $e->getTrace());
}
@@ -140,7 +148,10 @@ class Connection
$version = $params[1]; // eg. 8.4.4
}
- $description = "PostgreSQL {$version}";
+ $description = \sprintf(
+ 'PostgreSQL %s',
+ $version
+ );
$version_parts = \explode('.', $version);
diff --git a/src/database/Postgres.php b/src/database/Postgres.php
index fb8ea8cf..2d4bb5cf 100644
--- a/src/database/Postgres.php
+++ b/src/database/Postgres.php
@@ -6,6 +6,26 @@
namespace PHPPgAdmin\Database;
+use PHPPgAdmin\ADORecordSet;
+use PHPPgAdmin\Database\Traits\AggregateTrait;
+use PHPPgAdmin\Database\Traits\DatabaseTrait;
+use PHPPgAdmin\Database\Traits\DomainTrait;
+use PHPPgAdmin\Database\Traits\FtsTrait;
+use PHPPgAdmin\Database\Traits\FunctionTrait;
+use PHPPgAdmin\Database\Traits\IndexTrait;
+use PHPPgAdmin\Database\Traits\OperatorTrait;
+use PHPPgAdmin\Database\Traits\PrivilegesTrait;
+use PHPPgAdmin\Database\Traits\RoleTrait;
+use PHPPgAdmin\Database\Traits\SchemaTrait;
+use PHPPgAdmin\Database\Traits\SequenceTrait;
+use PHPPgAdmin\Database\Traits\StatsTrait;
+use PHPPgAdmin\Database\Traits\TablespaceTrait;
+use PHPPgAdmin\Database\Traits\TableTrait;
+use PHPPgAdmin\Database\Traits\TypeTrait;
+use PHPPgAdmin\Database\Traits\ViewTrait;
+use PHPPgAdmin\Help\PostgresDoc;
+use PHPPgAdmin\Traits\HelperTrait;
+
/**
* A Class that implements the DB Interface for Postgres
* Note: This Class uses ADODB and returns RecordSets.
@@ -14,23 +34,23 @@ namespace PHPPgAdmin\Database;
*/
class Postgres extends ADOdbBase
{
- use \PHPPgAdmin\Traits\HelperTrait;
- use \PHPPgAdmin\Database\Traits\AggregateTrait;
- use \PHPPgAdmin\Database\Traits\DatabaseTrait;
- use \PHPPgAdmin\Database\Traits\DomainTrait;
- use \PHPPgAdmin\Database\Traits\FtsTrait;
- use \PHPPgAdmin\Database\Traits\FunctionTrait;
- use \PHPPgAdmin\Database\Traits\IndexTrait;
- use \PHPPgAdmin\Database\Traits\OperatorTrait;
- use \PHPPgAdmin\Database\Traits\RoleTrait;
- use \PHPPgAdmin\Database\Traits\SchemaTrait;
- use \PHPPgAdmin\Database\Traits\SequenceTrait;
- use \PHPPgAdmin\Database\Traits\TablespaceTrait;
- use \PHPPgAdmin\Database\Traits\TableTrait;
- use \PHPPgAdmin\Database\Traits\TypeTrait;
- use \PHPPgAdmin\Database\Traits\ViewTrait;
- use \PHPPgAdmin\Database\Traits\StatsTrait;
- use \PHPPgAdmin\Database\Traits\PrivilegesTrait;
+ use HelperTrait;
+ use AggregateTrait;
+ use DatabaseTrait;
+ use DomainTrait;
+ use FtsTrait;
+ use FunctionTrait;
+ use IndexTrait;
+ use OperatorTrait;
+ use RoleTrait;
+ use SchemaTrait;
+ use SequenceTrait;
+ use TablespaceTrait;
+ use TableTrait;
+ use TypeTrait;
+ use ViewTrait;
+ use StatsTrait;
+ use PrivilegesTrait;
public $lang;
@@ -44,10 +64,10 @@ class Postgres extends ADOdbBase
/**
* @var class-string
*/
- public $help_classname = \PHPPgAdmin\Help\PostgresDoc::class;
+ public $help_classname = PostgresDoc::class;
/**
- * @var \PHPPgAdmin\Help\PostgresDoc
+ * @var PostgresDoc
*/
public $help_class;
@@ -127,7 +147,10 @@ class Postgres extends ADOdbBase
$extra_str = '';
foreach ($extras as $k => $v) {
- $extra_str .= " {$k}=\"" . \htmlspecialchars($v) . '"';
+ $extra_str .= \sprintf(
+ ' %s="',
+ $k
+ ) . \htmlspecialchars($v) . '"';
}
switch (\mb_substr($type, 0, 9)) {
@@ -143,13 +166,29 @@ class Postgres extends ADOdbBase
// If value is null, 't' or 'f'...
if (null === $value || 't' === $value || 'f' === $value) {
- echo '<select name="', \htmlspecialchars($name), "\"{$extra_str}>\n";
+ echo '<select name="', \htmlspecialchars($name), \sprintf(
+ '"%s>
+',
+ $extra_str
+ );
echo '<option value=""', (null === $value) ? ' selected="selected"' : '', "></option>\n";
- echo '<option value="t"', ('t' === $value) ? ' selected="selected"' : '', ">{$lang['strtrue']}</option>\n";
- echo '<option value="f"', ('f' === $value) ? ' selected="selected"' : '', ">{$lang['strfalse']}</option>\n";
+ echo '<option value="t"', ('t' === $value) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>
+',
+ $lang['strtrue']
+ );
+ echo '<option value="f"', ('f' === $value) ? ' selected="selected"' : '', \sprintf(
+ '>%s</option>
+',
+ $lang['strfalse']
+ );
echo "</select>\n";
} else {
- echo '<input name="', \htmlspecialchars($name), '" value="', \htmlspecialchars($value), "\" size=\"35\"{$extra_str} />\n";
+ echo '<input name="', \htmlspecialchars($name), '" value="', \htmlspecialchars($value), \sprintf(
+ '" size="35"%s />
+',
+ $extra_str
+ );
}
break;
@@ -168,7 +207,12 @@ class Postgres extends ADOdbBase
$n = \mb_substr_count($value, "\n");
$n = 5 > $n ? \max(2, $n) : $n;
$n = 20 < $n ? 20 : $n;
- echo '<textarea name="', \htmlspecialchars($name), "\" rows=\"{$n}\" cols=\"85\"{$extra_str}>\n";
+ echo '<textarea name="', \htmlspecialchars($name), \sprintf(
+ '" rows="%s" cols="85"%s>
+',
+ $n,
+ $extra_str
+ );
echo \htmlspecialchars($value);
echo "</textarea>\n";
@@ -178,14 +222,23 @@ class Postgres extends ADOdbBase
$n = \mb_substr_count($value, "\n");
$n = 5 > $n ? 5 : $n;
$n = 20 < $n ? 20 : $n;
- echo '<textarea name="', \htmlspecialchars($name), "\" rows=\"{$n}\" cols=\"35\"{$extra_str}>\n";
+ echo '<textarea name="', \htmlspecialchars($name), \sprintf(
+ '" rows="%s" cols="35"%s>
+',
+ $n,
+ $extra_str
+ );
echo \htmlspecialchars($value);
echo "</textarea>\n";
break;
default:
- echo '<input name="', \htmlspecialchars($name), '" value="', \htmlspecialchars($value), "\" size=\"35\"{$extra_str} />\n";
+ echo '<input name="', \htmlspecialchars($name), '" value="', \htmlspecialchars($value), \sprintf(
+ '" size="35"%s />
+',
+ $extra_str
+ );
break;
}
@@ -197,7 +250,7 @@ class Postgres extends ADOdbBase
* @param string $term The search term
* @param string $filter The object type to restrict to ('' means no restriction)
*
- * @return int|\PHPPgAdmin\ADORecordSet A recordset
+ * @return ADORecordSet|int A recordset
*/
public function findObject($term, $filter)
{
@@ -235,107 +288,153 @@ class Postgres extends ADOdbBase
$sql = 'SELECT * FROM (';
}
- $term = "\$_PATERN_\$%{$term}%\$_PATERN_\$";
+ $term = \sprintf(
+ '$_PATERN_$%%s%$_PATERN_$',
+ $term
+ );
- $sql .= "
- SELECT 'SCHEMA' AS type, oid, NULL AS schemaname, NULL AS relname, nspname AS name
- FROM pg_catalog.pg_namespace pn WHERE nspname ILIKE {$term} {$where}
+ $sql .= \sprintf(
+ '
+ SELECT \'SCHEMA\' AS type, oid, NULL AS schemaname, NULL AS relname, nspname AS name
+ FROM pg_catalog.pg_namespace pn WHERE nspname ILIKE %s %s
UNION ALL
- SELECT CASE WHEN relkind='r' THEN 'TABLE' WHEN relkind='v' THEN 'VIEW' WHEN relkind='S' THEN 'SEQUENCE' END, pc.oid,
+ SELECT CASE WHEN relkind=\'r\' THEN \'TABLE\' WHEN relkind=\'v\' THEN \'VIEW\' WHEN relkind=\'S\' THEN \'SEQUENCE\' END, pc.oid,
pn.nspname, NULL, pc.relname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn
- WHERE pc.relnamespace=pn.oid AND relkind IN ('r', 'v', 'S') AND relname ILIKE {$term} {$where}
+ WHERE pc.relnamespace=pn.oid AND relkind IN (\'r\', \'v\', \'S\') AND relname ILIKE %s %s
UNION ALL
- SELECT CASE WHEN pc.relkind='r' THEN 'COLUMNTABLE' ELSE 'COLUMNVIEW' END, NULL, pn.nspname, pc.relname, pa.attname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn,
+ SELECT CASE WHEN pc.relkind=\'r\' THEN \'COLUMNTABLE\' ELSE \'COLUMNVIEW\' END, NULL, pn.nspname, pc.relname, pa.attname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn,
pg_catalog.pg_attribute pa WHERE pc.relnamespace=pn.oid AND pc.oid=pa.attrelid
- AND pa.attname ILIKE {$term} AND pa.attnum > 0 AND NOT pa.attisdropped AND pc.relkind IN ('r', 'v') {$where}
+ AND pa.attname ILIKE %s AND pa.attnum > 0 AND NOT pa.attisdropped AND pc.relkind IN (\'r\', \'v\') %s
UNION ALL
- SELECT 'FUNCTION', pp.oid, pn.nspname, NULL, pp.proname || '(' || pg_catalog.oidvectortypes(pp.proargtypes) || ')' FROM pg_catalog.pg_proc pp, pg_catalog.pg_namespace pn
- WHERE pp.pronamespace=pn.oid AND NOT pp.proisagg AND pp.proname ILIKE {$term} {$where}
+ SELECT \'FUNCTION\', pp.oid, pn.nspname, NULL, pp.proname || \'(\' || pg_catalog.oidvectortypes(pp.proargtypes) || \')\' FROM pg_catalog.pg_proc pp, pg_catalog.pg_namespace pn
+ WHERE pp.pronamespace=pn.oid AND NOT pp.proisagg AND pp.proname ILIKE %s %s
UNION ALL
- SELECT 'INDEX', NULL, pn.nspname, pc.relname, pc2.relname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn,
+ SELECT \'INDEX\', NULL, pn.nspname, pc.relname, pc2.relname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn,
pg_catalog.pg_index pi, pg_catalog.pg_class pc2 WHERE pc.relnamespace=pn.oid AND pc.oid=pi.indrelid
AND pi.indexrelid=pc2.oid
AND NOT EXISTS (
SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c
ON (d.refclassid = c.tableoid AND d.refobjid = c.oid)
- WHERE d.classid = pc2.tableoid AND d.objid = pc2.oid AND d.deptype = 'i' AND c.contype IN ('u', 'p')
+ WHERE d.classid = pc2.tableoid AND d.objid = pc2.oid AND d.deptype = \'i\' AND c.contype IN (\'u\', \'p\')
)
- AND pc2.relname ILIKE {$term} {$where}
+ AND pc2.relname ILIKE %s %s
UNION ALL
- SELECT 'CONSTRAINTTABLE', NULL, pn.nspname, pc.relname, pc2.conname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn,
+ SELECT \'CONSTRAINTTABLE\', NULL, pn.nspname, pc.relname, pc2.conname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn,
pg_catalog.pg_constraint pc2 WHERE pc.relnamespace=pn.oid AND pc.oid=pc2.conrelid AND pc2.conrelid != 0
- AND CASE WHEN pc2.contype IN ('f', 'c') THEN TRUE ELSE NOT EXISTS (
+ AND CASE WHEN pc2.contype IN (\'f\', \'c\') THEN TRUE ELSE NOT EXISTS (
SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c
ON (d.refclassid = c.tableoid AND d.refobjid = c.oid)
- WHERE d.classid = pc2.tableoid AND d.objid = pc2.oid AND d.deptype = 'i' AND c.contype IN ('u', 'p')
+ WHERE d.classid = pc2.tableoid AND d.objid = pc2.oid AND d.deptype = \'i\' AND c.contype IN (\'u\', \'p\')
) END
- AND pc2.conname ILIKE {$term} {$where}
+ AND pc2.conname ILIKE %s %s
UNION ALL
- SELECT 'CONSTRAINTDOMAIN', pt.oid, pn.nspname, pt.typname, pc.conname FROM pg_catalog.pg_type pt, pg_catalog.pg_namespace pn,
+ SELECT \'CONSTRAINTDOMAIN\', pt.oid, pn.nspname, pt.typname, pc.conname FROM pg_catalog.pg_type pt, pg_catalog.pg_namespace pn,
pg_catalog.pg_constraint pc WHERE pt.typnamespace=pn.oid AND pt.oid=pc.contypid AND pc.contypid != 0
- AND pc.conname ILIKE {$term} {$where}
+ AND pc.conname ILIKE %s %s
UNION ALL
- SELECT 'TRIGGER', NULL, pn.nspname, pc.relname, pt.tgname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn,
+ SELECT \'TRIGGER\', NULL, pn.nspname, pc.relname, pt.tgname FROM pg_catalog.pg_class pc, pg_catalog.pg_namespace pn,
pg_catalog.pg_trigger pt WHERE pc.relnamespace=pn.oid AND pc.oid=pt.tgrelid
AND ( pt.tgconstraint = 0 OR NOT EXISTS
(SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c
ON (d.refclassid = c.tableoid AND d.refobjid = c.oid)
- WHERE d.classid = pt.tableoid AND d.objid = pt.oid AND d.deptype = 'i' AND c.contype = 'f'))
- AND pt.tgname ILIKE {$term} {$where}
+ WHERE d.classid = pt.tableoid AND d.objid = pt.oid AND d.deptype = \'i\' AND c.contype = \'f\'))
+ AND pt.tgname ILIKE %s %s
UNION ALL
- SELECT 'RULETABLE', NULL, pn.nspname AS schemaname, c.relname AS tablename, r.rulename FROM pg_catalog.pg_rewrite r
+ SELECT \'RULETABLE\', NULL, pn.nspname AS schemaname, c.relname AS tablename, r.rulename FROM pg_catalog.pg_rewrite r
JOIN pg_catalog.pg_class c ON c.oid = r.ev_class
LEFT JOIN pg_catalog.pg_namespace pn ON pn.oid = c.relnamespace
- WHERE c.relkind='r' AND r.rulename != '_RETURN' AND r.rulename ILIKE {$term} {$where}
+ WHERE c.relkind=\'r\' AND r.rulename != \'_RETURN\' AND r.rulename ILIKE %s %s
UNION ALL
- SELECT 'RULEVIEW', NULL, pn.nspname AS schemaname, c.relname AS tablename, r.rulename FROM pg_catalog.pg_rewrite r
+ SELECT \'RULEVIEW\', NULL, pn.nspname AS schemaname, c.relname AS tablename, r.rulename FROM pg_catalog.pg_rewrite r
JOIN pg_catalog.pg_class c ON c.oid = r.ev_class
LEFT JOIN pg_catalog.pg_namespace pn ON pn.oid = c.relnamespace
- WHERE c.relkind='v' AND r.rulename != '_RETURN' AND r.rulename ILIKE {$term} {$where}
- ";
+ WHERE c.relkind=\'v\' AND r.rulename != \'_RETURN\' AND r.rulename ILIKE %s %s
+ ',
+ $term,
+ $where,
+ $term,
+ $where,
+ $term,
+ $where,
+ $term,
+ $where,
+ $term,
+ $where,
+ $term,
+ $where,
+ $term,
+ $where,
+ $term,
+ $where,
+ $term,
+ $where,
+ $term,
+ $where
+ );
// Add advanced objects if show_advanced is set
if ($conf['show_advanced']) {
- $sql .= "
+ $sql .= \sprintf(
+ '
UNION ALL
- SELECT CASE WHEN pt.typtype='d' THEN 'DOMAIN' ELSE 'TYPE' END, pt.oid, pn.nspname, NULL,
+ SELECT CASE WHEN pt.typtype=\'d\' THEN \'DOMAIN\' ELSE \'TYPE\' END, pt.oid, pn.nspname, NULL,
pt.typname FROM pg_catalog.pg_type pt, pg_catalog.pg_namespace pn
- WHERE pt.typnamespace=pn.oid AND typname ILIKE {$term}
- AND (pt.typrelid = 0 OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = pt.typrelid))
- {$where}
+ WHERE pt.typnamespace=pn.oid AND typname ILIKE %s
+ AND (pt.typrelid = 0 OR (SELECT c.relkind = \'c\' FROM pg_catalog.pg_class c WHERE c.oid = pt.typrelid))
+ %s
UNION ALL
- SELECT 'OPERATOR', po.oid, pn.nspname, NULL, po.oprname FROM pg_catalog.pg_operator po, pg_catalog.pg_namespace pn
- WHERE po.oprnamespace=pn.oid AND oprname ILIKE {$term} {$where}
+ SELECT \'OPERATOR\', po.oid, pn.nspname, NULL, po.oprname FROM pg_catalog.pg_operator po, pg_catalog.pg_namespace pn
+ WHERE po.oprnamespace=pn.oid AND oprname ILIKE %s %s
UNION ALL
- SELECT 'CONVERSION', pc.oid, pn.nspname, NULL, pc.conname FROM pg_catalog.pg_conversion pc,
- pg_catalog.pg_namespace pn WHERE pc.connamespace=pn.oid AND conname ILIKE {$term} {$where}
+ SELECT \'CONVERSION\', pc.oid, pn.nspname, NULL, pc.conname FROM pg_catalog.pg_conversion pc,
+ pg_catalog.pg_namespace pn WHERE pc.connamespace=pn.oid AND conname ILIKE %s %s
UNION ALL
- SELECT 'LANGUAGE', pl.oid, NULL, NULL, pl.lanname FROM pg_catalog.pg_language pl
- WHERE lanname ILIKE {$term} {$lan_where}
+ SELECT \'LANGUAGE\', pl.oid, NULL, NULL, pl.lanname FROM pg_catalog.pg_language pl
+ WHERE lanname ILIKE %s %s
UNION ALL
- SELECT DISTINCT ON (p.proname) 'AGGREGATE', p.oid, pn.nspname, NULL, p.proname FROM pg_catalog.pg_proc p
+ SELECT DISTINCT ON (p.proname) \'AGGREGATE\', p.oid, pn.nspname, NULL, p.proname FROM pg_catalog.pg_proc p
LEFT JOIN pg_catalog.pg_namespace pn ON p.pronamespace=pn.oid
- WHERE p.proisagg AND p.proname ILIKE {$term} {$where}
+ WHERE p.proisagg AND p.proname ILIKE %s %s
UNION ALL
- SELECT DISTINCT ON (po.opcname) 'OPCLASS', po.oid, pn.nspname, NULL, po.opcname FROM pg_catalog.pg_opclass po,
+ SELECT DISTINCT ON (po.opcname) \'OPCLASS\', po.oid, pn.nspname, NULL, po.opcname FROM pg_catalog.pg_opclass po,
pg_catalog.pg_namespace pn WHERE po.opcnamespace=pn.oid
- AND po.opcname ILIKE {$term} {$where}
- ";
+ AND po.opcname ILIKE %s %s
+ ',
+ $term,
+ $where,
+ $term,
+ $where,
+ $term,
+ $where,
+ $term,
+ $lan_where,
+ $term,
+ $where,
+ $term,
+ $where
+ );
} else {
// Otherwise just add domains
- $sql .= "
+ $sql .= \sprintf(
+ '
UNION ALL
- SELECT 'DOMAIN', pt.oid, pn.nspname, NULL,
+ SELECT \'DOMAIN\', pt.oid, pn.nspname, NULL,
pt.typname FROM pg_catalog.pg_type pt, pg_catalog.pg_namespace pn
- WHERE pt.typnamespace=pn.oid AND pt.typtype='d' AND typname ILIKE {$term}
- AND (pt.typrelid = 0 OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = pt.typrelid))
- {$where}
- ";
+ WHERE pt.typnamespace=pn.oid AND pt.typtype=\'d\' AND typname ILIKE %s
+ AND (pt.typrelid = 0 OR (SELECT c.relkind = \'c\' FROM pg_catalog.pg_class c WHERE c.oid = pt.typrelid))
+ %s
+ ',
+ $term,
+ $where
+ );
}
if ('' !== $filter) {
// We use like to make RULE, CONSTRAINT and COLUMN searches work
- $sql .= ") AS sub WHERE type LIKE '{$filter}%' ";
+ $sql .= \sprintf(
+ ') AS sub WHERE type LIKE \'%s%\' ',
+ $filter
+ );
}
$sql .= 'ORDER BY type, schemaname, relname, name';
@@ -348,7 +447,7 @@ class Postgres extends ADOdbBase
*
* @param bool $all True to get all languages, regardless of show_system
*
- * @return int|\PHPPgAdmin\ADORecordSet A recordset
+ * @return ADORecordSet|int A recordset
*/
public function getLanguages($all = false)
{
@@ -360,15 +459,18 @@ class Postgres extends ADOdbBase
$where = 'WHERE lanispl';
}
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
lanname, lanpltrusted,
lanplcallfoid::pg_catalog.regproc AS lanplcallf
FROM
pg_catalog.pg_language
- {$where}
+ %s
ORDER BY lanname
- ";
+ ',
+ $where
+ );
return $this->selectSet($sql);
}
@@ -458,8 +560,7 @@ class Postgres extends ADOdbBase
* end of quote if matching non-backslashed character.
* backslashes don't count for double quotes, though.
*/
- if (
- \mb_substr($line, $i, 1) === $in_quote &&
+ if (\mb_substr($line, $i, 1) === $in_quote &&
(0 === $bslash_count % 2 || '"' === $in_quote)
) {
$in_quote = 0;
@@ -665,12 +766,12 @@ class Postgres extends ADOdbBase
* @param null|int $page_size The number of rows per page
* @param int $max_pages (return-by-ref) The max number of pages in the relation
*
- * @return int|\PHPPgAdmin\ADORecordSet A recordset on success or an int with error code
- * - -1 transaction error
- * - -2 counting error
- * - -3 page or page_size invalid
- * - -4 unknown type
- * - -5 failed setting transaction read only
+ * @return ADORecordSet|int A recordset on success or an int with error code
+ * - -1 transaction error
+ * - -2 counting error
+ * - -3 page or page_size invalid
+ * - -4 unknown type
+ * - -5 failed setting transaction read only
*/
public function browseQuery($type, $table, $query, $sortkey, $sortdir, $page, $page_size, &$max_pages)
{
@@ -707,7 +808,10 @@ class Postgres extends ADOdbBase
}
// Generate count query
- $count = "SELECT COUNT(*) AS total FROM ({$query}) AS sub";
+ $count = \sprintf(
+ 'SELECT COUNT(*) AS total FROM (%s) AS sub',
+ $query
+ );
// Open a transaction
$status = $this->beginTransaction();
@@ -757,7 +861,10 @@ class Postgres extends ADOdbBase
// Figure out ORDER BY. Sort key is always the column number (based from one)
// of the column to order by. Only need to do this for non-TABLE queries
if ('TABLE' !== $type && \preg_match('/^[0-9]+$/', $sortkey) && 0 < $sortkey) {
- $orderby = " ORDER BY {$sortkey}";
+ $orderby = \sprintf(
+ ' ORDER BY %s',
+ $sortkey
+ );
// Add sort order
if ('desc' === $sortdir) {
$orderby .= ' DESC';
@@ -769,7 +876,12 @@ class Postgres extends ADOdbBase
}
// Actually retrieve the rows, with offset and limit
- $rs = $this->selectSet("SELECT * FROM ({$query}) AS sub {$orderby} LIMIT {$page_size} OFFSET " . ($page - 1) * $page_size);
+ $rs = $this->selectSet(\sprintf(
+ 'SELECT * FROM (%s) AS sub %s LIMIT %s OFFSET ',
+ $query,
+ $orderby,
+ $page_size
+ ) . ($page - 1) * $page_size);
$status = $this->endTransaction();
if (0 !== $status) {
@@ -800,14 +912,20 @@ class Postgres extends ADOdbBase
// If an empty array is passed in, then show all columns
if (0 === \count($show)) {
if ($this->hasObjectID($table)) {
- $sql = "SELECT \"{$this->id}\", * FROM ";
+ $sql = \sprintf(
+ 'SELECT "%s", * FROM ',
+ $this->id
+ );
} else {
$sql = 'SELECT * FROM ';
}
} else {
// Add oid column automatically to results for editing purposes
if (!\in_array($this->id, $show, true) && $this->hasObjectID($table)) {
- $sql = "SELECT \"{$this->id}\", \"";
+ $sql = \sprintf(
+ 'SELECT "%s", "',
+ $this->id
+ );
} else {
$sql = 'SELECT "';
}
@@ -820,9 +938,15 @@ class Postgres extends ADOdbBase
if (isset($_REQUEST['schema'])) {
$f_schema = $_REQUEST['schema'];
$this->fieldClean($f_schema);
- $sql .= "\"{$f_schema}\".";
+ $sql .= \sprintf(
+ '"%s".',
+ $f_schema
+ );
}
- $sql .= "\"{$table}\"";
+ $sql .= \sprintf(
+ '"%s"',
+ $table
+ );
// If we have values specified, add them to the WHERE clause
$first = true;
@@ -845,19 +969,38 @@ class Postgres extends ADOdbBase
// this is because (x), subqueries need to
// to allow 'a','b' as input.
$this->clean($v);
- $sql .= "\"{$k}\" {$ops[$k]} '{$v}'";
+ $sql .= \sprintf(
+ '"%s" %s \'%s\'',
+ $k,
+ $ops[$k],
+ $v
+ );
break;
case 'p':
- $sql .= "\"{$k}\" {$ops[$k]}";
+ $sql .= \sprintf(
+ '"%s" %s',
+ $k,
+ $ops[$k]
+ );
break;
case 'x':
- $sql .= "\"{$k}\" {$ops[$k]} ({$v})";
+ $sql .= \sprintf(
+ '"%s" %s (%s)',
+ $k,
+ $ops[$k],
+ $v
+ );
break;
case 't':
- $sql .= "\"{$k}\" {$ops[$k]}('{$v}')";
+ $sql .= \sprintf(
+ '"%s" %s(\'%s\')',
+ $k,
+ $ops[$k],
+ $v
+ );
break;
diff --git a/src/database/Postgres10.php b/src/database/Postgres10.php
index 364acbdb..47a3ff50 100644
--- a/src/database/Postgres10.php
+++ b/src/database/Postgres10.php
@@ -6,6 +6,9 @@
namespace PHPPgAdmin\Database;
+use PHPPgAdmin\ADORecordSet;
+use PHPPgAdmin\Help\PostgresDoc10;
+
/**
* @file
* PostgreSQL 10.x support
@@ -14,7 +17,6 @@ namespace PHPPgAdmin\Database;
*
* @see https://blog.2ndquadrant.com/postgresql-10-identity-columns/
*/
-
/**
* Class to add support for Postgres10.
*/
@@ -28,12 +30,12 @@ class Postgres10 extends Postgres96
/**
* @var class-string
*/
- public $help_classname = \PHPPgAdmin\Help\PostgresDoc10::class;
+ public $help_classname = PostgresDoc10::class;
/**
* Return all tables in current database (and schema).
*
- * @return int|\PHPPgAdmin\ADORecordSet All tables, sorted alphabetically
+ * @return ADORecordSet|int All tables, sorted alphabetically
*/
public function getTables()
{
@@ -57,12 +59,15 @@ class Postgres10 extends Postgres96
$sql .= " 'N/A' as table_size ";
}
- $sql .= " FROM pg_catalog.pg_class c
+ $sql .= \sprintf(
+ ' FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
LEFT JOIN pg_catalog.pg_tablespace pt ON pt.oid=c.reltablespace
- WHERE c.relkind IN ('r','p')
- AND nspname='{$c_schema}'
- ORDER BY c.relname";
+ WHERE c.relkind IN (\'r\',\'p\')
+ AND nspname=\'%s\'
+ ORDER BY c.relname',
+ $c_schema
+ );
return $this->selectSet($sql);
}
diff --git a/src/database/Postgres11.php b/src/database/Postgres11.php
index 8e420ddc..9dc9192b 100644
--- a/src/database/Postgres11.php
+++ b/src/database/Postgres11.php
@@ -6,6 +6,9 @@
namespace PHPPgAdmin\Database;
+use PHPPgAdmin\ADORecordSet;
+use PHPPgAdmin\Help\PostgresDoc11;
+
/**
* @file
* PostgreSQL 11.x support
@@ -23,7 +26,7 @@ class Postgres11 extends Postgres10
/**
* @var class-string
*/
- public $help_classname = \PHPPgAdmin\Help\PostgresDoc11::class;
+ public $help_classname = PostgresDoc11::class;
/**
* Returns a list of all functions in the database.
@@ -34,7 +37,7 @@ class Postgres11 extends Postgres10
* @param bool $all If true, will find all available functions, if false just those in search path
* @param mixed $type If truthy, will return functions of type trigger
*
- * @return int|\PHPPgAdmin\ADORecordSet All functions
+ * @return ADORecordSet|int All functions
*/
public function getFunctions($all = false, $type = null)
{
@@ -48,32 +51,39 @@ class Postgres11 extends Postgres10
} else {
$c_schema = $this->_schema;
$this->clean($c_schema);
- $where = "n.nspname = '{$c_schema}'";
+ $where = \sprintf(
+ 'n.nspname = \'%s\'',
+ $c_schema
+ );
$distinct = '';
}
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
- {$distinct}
+ %s
p.oid AS prooid,
p.proname,
p.proretset,
pg_catalog.format_type(p.prorettype, NULL) AS proresult,
pg_catalog.oidvectortypes(p.proargtypes) AS proarguments,
pl.lanname AS prolanguage,
- pg_catalog.obj_description(p.oid, 'pg_proc') AS procomment,
- p.proname || ' (' || pg_catalog.oidvectortypes(p.proargtypes) || ')' AS proproto,
- CASE WHEN p.proretset THEN 'setof ' ELSE '' END || pg_catalog.format_type(p.prorettype, NULL) AS proreturns,
+ pg_catalog.obj_description(p.oid, \'pg_proc\') AS procomment,
+ p.proname || \' (\' || pg_catalog.oidvectortypes(p.proargtypes) || \')\' AS proproto,
+ CASE WHEN p.proretset THEN \'setof \' ELSE \'\' END || pg_catalog.format_type(p.prorettype, NULL) AS proreturns,
coalesce(u.usename::text,p.proowner::text) AS proowner
FROM pg_catalog.pg_proc p
INNER JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
INNER JOIN pg_catalog.pg_language pl ON pl.oid = p.prolang
LEFT JOIN pg_catalog.pg_user u ON u.usesysid = p.proowner
- WHERE p.prokind !='a'
- AND {$where}
+ WHERE p.prokind !=\'a\'
+ AND %s
ORDER BY p.proname, proresult
- ";
+ ',
+ $distinct,
+ $where
+ );
return $this->selectSet($sql);
}
diff --git a/src/database/Postgres12.php b/src/database/Postgres12.php
index 82185c50..75f97e8d 100644
--- a/src/database/Postgres12.php
+++ b/src/database/Postgres12.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database;
+use PHPPgAdmin\Help\PostgresDoc12;
+
/**
* @file
* PostgreSQL 12.x support
@@ -23,7 +25,7 @@ class Postgres12 extends Postgres11
/**
* @var class-string
*/
- public $help_classname = \PHPPgAdmin\Help\PostgresDoc12::class;
+ public $help_classname = PostgresDoc12::class;
/**
* Checks to see whether or not a table has a unique id column.
diff --git a/src/database/Postgres13.php b/src/database/Postgres13.php
index 709bcd1a..4179ccae 100644
--- a/src/database/Postgres13.php
+++ b/src/database/Postgres13.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database;
+use PHPPgAdmin\Help\PostgresDoc12;
+
/**
* @file
* PostgreSQL 13.x support
@@ -24,5 +26,5 @@ class Postgres13 extends Postgres12
/**
* @var class-string
*/
- public $help_classname = \PHPPgAdmin\Help\PostgresDoc12::class;
+ public $help_classname = PostgresDoc12::class;
}
diff --git a/src/database/Postgres90.php b/src/database/Postgres90.php
index cf4b6dad..e368bbb9 100644
--- a/src/database/Postgres90.php
+++ b/src/database/Postgres90.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database;
+use PHPPgAdmin\Help\PostgresDoc90;
+
/**
* @file
* PostgreSQL 9.0 support
@@ -22,5 +24,5 @@ class Postgres90 extends Postgres91
/**
* @var class-string
*/
- public $help_classname = \PHPPgAdmin\Help\PostgresDoc90::class;
+ public $help_classname = PostgresDoc90::class;
}
diff --git a/src/database/Postgres91.php b/src/database/Postgres91.php
index 3f2a7950..119246da 100644
--- a/src/database/Postgres91.php
+++ b/src/database/Postgres91.php
@@ -6,11 +6,13 @@
namespace PHPPgAdmin\Database;
+use PHPPgAdmin\ADORecordSet;
+use PHPPgAdmin\Help\PostgresDoc91;
+
/**
* @file
* PostgreSQL 9.1 support
*/
-
/**
* Id: Postgres82.php,v 1.10 2007/12/28 16:21:25 ioguix Exp $.
*/
@@ -24,7 +26,7 @@ class Postgres91 extends Postgres92
/**
* @var class-string
*/
- public $help_classname = \PHPPgAdmin\Help\PostgresDoc91::class;
+ public $help_classname = PostgresDoc91::class;
// Administration functions
@@ -33,7 +35,7 @@ class Postgres91 extends Postgres92
*
* @param null|string $database (optional) Find only connections to specified database
*
- * @return int|\PHPPgAdmin\ADORecordSet A recordset
+ * @return ADORecordSet|int A recordset
*/
public function getProcesses($database = null)
{
@@ -43,10 +45,13 @@ class Postgres91 extends Postgres92
ORDER BY datname, usename, procpid';
} else {
$this->clean($database);
- $sql = "SELECT datname, usename, procpid AS pid, waiting, current_query AS query, query_start
+ $sql = \sprintf(
+ 'SELECT datname, usename, procpid AS pid, waiting, current_query AS query, query_start
FROM pg_catalog.pg_stat_activity
- WHERE datname='{$database}'
- ORDER BY usename, procpid";
+ WHERE datname=\'%s\'
+ ORDER BY usename, procpid',
+ $database
+ );
}
return $this->selectSet($sql);
@@ -59,7 +64,7 @@ class Postgres91 extends Postgres92
*
* @param bool $all Include all tablespaces (necessary when moving objects back to the default space)
*
- * @return int|\PHPPgAdmin\ADORecordSet A recordset
+ * @return ADORecordSet|int A recordset
*/
public function getTablespaces($all = false)
{
@@ -83,15 +88,18 @@ class Postgres91 extends Postgres92
*
* @param string $spcname
*
- * @return int|\PHPPgAdmin\ADORecordSet A recordset
+ * @return ADORecordSet|int A recordset
*/
public function getTablespace($spcname)
{
$this->clean($spcname);
- $sql = "SELECT spcname, pg_catalog.pg_get_userbyid(spcowner) AS spcowner, spclocation,
- (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid AND pd.classoid='pg_tablespace'::regclass) AS spccomment
- FROM pg_catalog.pg_tablespace WHERE spcname='{$spcname}'";
+ $sql = \sprintf(
+ 'SELECT spcname, pg_catalog.pg_get_userbyid(spcowner) AS spcowner, spclocation,
+ (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid AND pd.classoid=\'pg_tablespace\'::regclass) AS spccomment
+ FROM pg_catalog.pg_tablespace WHERE spcname=\'%s\'',
+ $spcname
+ );
return $this->selectSet($sql);
}
diff --git a/src/database/Postgres92.php b/src/database/Postgres92.php
index 2e2eb976..ee3ccade 100644
--- a/src/database/Postgres92.php
+++ b/src/database/Postgres92.php
@@ -6,6 +6,9 @@
namespace PHPPgAdmin\Database;
+use PHPPgAdmin\ADORecordSet;
+use PHPPgAdmin\Help\PostgresDoc92;
+
/**
* @file
* PostgreSQL 9.2 support
@@ -22,14 +25,14 @@ class Postgres92 extends Postgres93
/**
* @var class-string
*/
- public $help_classname = \PHPPgAdmin\Help\PostgresDoc92::class;
+ public $help_classname = PostgresDoc92::class;
/**
* Returns all available process information.
*
* @param null|string $database (optional) Find only connections to specified database
*
- * @return int|\PHPPgAdmin\ADORecordSet A recordset
+ * @return ADORecordSet|int A recordset
*/
public function getProcesses($database = null)
{
@@ -40,11 +43,14 @@ class Postgres92 extends Postgres93
ORDER BY datname, usename, pid";
} else {
$this->clean($database);
- $sql = "SELECT datname, usename, pid, waiting, state_change as query_start,
- case when state='idle in transaction' then '<IDLE> in transaction' when state = 'idle' then '<IDLE>' else query end as query
+ $sql = \sprintf(
+ 'SELECT datname, usename, pid, waiting, state_change as query_start,
+ case when state=\'idle in transaction\' then \'<IDLE> in transaction\' when state = \'idle\' then \'<IDLE>\' else query end as query
FROM pg_catalog.pg_stat_activity
- WHERE datname='{$database}'
- ORDER BY usename, pid";
+ WHERE datname=\'%s\'
+ ORDER BY usename, pid',
+ $database
+ );
}
return $this->selectSet($sql);
@@ -55,7 +61,7 @@ class Postgres92 extends Postgres93
*
* @param bool $all Include all tablespaces (necessary when moving objects back to the default space)
*
- * @return int|\PHPPgAdmin\ADORecordSet A recordset
+ * @return ADORecordSet|int A recordset
*/
public function getTablespaces($all = false)
{
@@ -81,15 +87,18 @@ class Postgres92 extends Postgres93
*
* @param string $spcname
*
- * @return int|\PHPPgAdmin\ADORecordSet A recordset
+ * @return ADORecordSet|int A recordset
*/
public function getTablespace($spcname)
{
$this->clean($spcname);
- $sql = "SELECT spcname, pg_catalog.pg_get_userbyid(spcowner) AS spcowner, pg_catalog.pg_tablespace_location(oid) as spclocation,
- (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid AND pd.classoid='pg_tablespace'::regclass) AS spccomment
- FROM pg_catalog.pg_tablespace WHERE spcname='{$spcname}'";
+ $sql = \sprintf(
+ 'SELECT spcname, pg_catalog.pg_get_userbyid(spcowner) AS spcowner, pg_catalog.pg_tablespace_location(oid) as spclocation,
+ (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid AND pd.classoid=\'pg_tablespace\'::regclass) AS spccomment
+ FROM pg_catalog.pg_tablespace WHERE spcname=\'%s\'',
+ $spcname
+ );
return $this->selectSet($sql);
}
diff --git a/src/database/Postgres93.php b/src/database/Postgres93.php
index 5e2b0b74..215a477d 100644
--- a/src/database/Postgres93.php
+++ b/src/database/Postgres93.php
@@ -6,6 +6,9 @@
namespace PHPPgAdmin\Database;
+use PHPPgAdmin\ADORecordSet;
+use PHPPgAdmin\Help\PostgresDoc93;
+
/**
* @file
* PostgreSQL 9.3 support
@@ -20,7 +23,7 @@ class Postgres93 extends Postgres94
/**
* @var class-string
*/
- public $help_classname = \PHPPgAdmin\Help\PostgresDoc93::class;
+ public $help_classname = PostgresDoc93::class;
/**
* Returns a list of all functions in the database.
@@ -28,7 +31,7 @@ class Postgres93 extends Postgres94
* @param bool $all If true, will find all available functions, if false just those in search path
* @param mixed $type If not null, will find all trigger functions
*
- * @return int|\PHPPgAdmin\ADORecordSet All functions
+ * @return ADORecordSet|int All functions
*/
public function getFunctions($all = false, $type = null)
{
@@ -42,22 +45,26 @@ class Postgres93 extends Postgres94
} else {
$c_schema = $this->_schema;
$this->clean($c_schema);
- $where = "n.nspname = '{$c_schema}'";
+ $where = \sprintf(
+ 'n.nspname = \'%s\'',
+ $c_schema
+ );
$distinct = '';
}
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
- {$distinct}
+ %s
p.oid AS prooid,
p.proname,
p.proretset,
pg_catalog.format_type(p.prorettype, NULL) AS proresult,
pg_catalog.oidvectortypes(p.proargtypes) AS proarguments,
pl.lanname AS prolanguage,
- pg_catalog.obj_description(p.oid, 'pg_proc') AS procomment,
- p.proname || ' (' || pg_catalog.oidvectortypes(p.proargtypes) || ')' AS proproto,
- CASE WHEN p.proretset THEN 'setof ' ELSE '' END || pg_catalog.format_type(p.prorettype, NULL) AS proreturns,
+ pg_catalog.obj_description(p.oid, \'pg_proc\') AS procomment,
+ p.proname || \' (\' || pg_catalog.oidvectortypes(p.proargtypes) || \')\' AS proproto,
+ CASE WHEN p.proretset THEN \'setof \' ELSE \'\' END || pg_catalog.format_type(p.prorettype, NULL) AS proreturns,
coalesce(u.rolname::text,p.proowner::text) AS proowner
FROM pg_catalog.pg_proc p
@@ -65,9 +72,12 @@ class Postgres93 extends Postgres94
INNER JOIN pg_catalog.pg_language pl ON pl.oid = p.prolang
LEFT JOIN pg_catalog.pg_roles u ON u.oid = p.proowner
WHERE NOT p.proisagg
- AND {$where}
+ AND %s
ORDER BY p.proname, proresult
- ";
+ ',
+ $distinct,
+ $where
+ );
return $this->selectSet($sql);
}
diff --git a/src/database/Postgres94.php b/src/database/Postgres94.php
index ab4d8dd1..b1680fa6 100644
--- a/src/database/Postgres94.php
+++ b/src/database/Postgres94.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database;
+use PHPPgAdmin\Help\PostgresDoc94;
+
/**
* @file
* PostgreSQL 9.4 support
@@ -17,7 +19,7 @@ class Postgres94 extends Postgres95
/**
* @var class-string
*/
- public $help_classname = \PHPPgAdmin\Help\PostgresDoc94::class;
+ public $help_classname = PostgresDoc94::class;
/**
* @var float
diff --git a/src/database/Postgres95.php b/src/database/Postgres95.php
index 885150b7..05cfca55 100644
--- a/src/database/Postgres95.php
+++ b/src/database/Postgres95.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database;
+use PHPPgAdmin\Help\PostgresDoc95;
+
/**
* @file
* PostgreSQL 9.5 support
@@ -17,7 +19,7 @@ class Postgres95 extends Postgres96
/**
* @var class-string
*/
- public $help_classname = \PHPPgAdmin\Help\PostgresDoc95::class;
+ public $help_classname = PostgresDoc95::class;
/**
* @var float
diff --git a/src/database/Postgres96.php b/src/database/Postgres96.php
index 289fd295..f3939c74 100644
--- a/src/database/Postgres96.php
+++ b/src/database/Postgres96.php
@@ -6,6 +6,9 @@
namespace PHPPgAdmin\Database;
+use PHPPgAdmin\ADORecordSet;
+use PHPPgAdmin\Help\PostgresDoc96;
+
/**
* @file
* PostgreSQL 9.6 support
@@ -22,7 +25,7 @@ class Postgres96 extends Postgres
/**
* @var class-string
*/
- public $help_classname = \PHPPgAdmin\Help\PostgresDoc96::class;
+ public $help_classname = PostgresDoc96::class;
// Administration functions
@@ -31,7 +34,7 @@ class Postgres96 extends Postgres
*
* @param null|string $database (optional) Find only connections to specified database
*
- * @return int|\PHPPgAdmin\ADORecordSet A recordset
+ * @return ADORecordSet|int A recordset
*/
public function getProcesses($database = null)
{
@@ -45,14 +48,17 @@ class Postgres96 extends Postgres
ORDER BY datname, usename, pid";
} else {
$this->clean($database);
- $sql = "SELECT datid, datname, pid, usename, application_name, client_addr, state, wait_event_type, wait_event, state_change as query_start,
+ $sql = \sprintf(
+ 'SELECT datid, datname, pid, usename, application_name, client_addr, state, wait_event_type, wait_event, state_change as query_start,
CASE
- WHEN state='active' THEN query
+ WHEN state=\'active\' THEN query
ELSE state
END AS query
FROM pg_catalog.pg_stat_activity
- WHERE datname='{$database}'
- ORDER BY usename, pid";
+ WHERE datname=\'%s\'
+ ORDER BY usename, pid',
+ $database
+ );
}
return $this->selectSet($sql);
@@ -75,7 +81,7 @@ class Postgres96 extends Postgres
* @param string $expiry string Format 'YYYY-MM-DD HH:MM:SS'. '' means never expire
* @param array $groups The groups to create the user in
*
- * @return int|\PHPPgAdmin\ADORecordSet 0 if operation was successful
+ * @return ADORecordSet|int 0 if operation was successful
*
* @internal param $group (array) The groups to create the user in
*/
@@ -87,10 +93,16 @@ class Postgres96 extends Postgres
$this->clean($expiry);
$this->fieldArrayClean($groups);
- $sql = "CREATE USER \"{$username}\"";
+ $sql = \sprintf(
+ 'CREATE USER "%s"',
+ $username
+ );
if ('' !== $password) {
- $sql .= " WITH ENCRYPTED PASSWORD '{$enc}'";
+ $sql .= \sprintf(
+ ' WITH ENCRYPTED PASSWORD \'%s\'',
+ $enc
+ );
}
$sql .= $createdb ? ' CREATEDB' : ' NOCREATEDB';
@@ -101,7 +113,10 @@ class Postgres96 extends Postgres
}
if ('' !== $expiry) {
- $sql .= " VALID UNTIL '{$expiry}'";
+ $sql .= \sprintf(
+ ' VALID UNTIL \'%s\'',
+ $expiry
+ );
} else {
$sql .= " VALID UNTIL 'infinity'";
}
diff --git a/src/database/databasetraits/AggregateTrait.php b/src/database/databasetraits/AggregateTrait.php
index 8383d905..91363f98 100644
--- a/src/database/databasetraits/AggregateTrait.php
+++ b/src/database/databasetraits/AggregateTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use PHPPgAdmin\ADORecordSet;
+
/**
* Common trait for aggregates manipulation.
*/
@@ -39,18 +41,34 @@ trait AggregateTrait
$this->beginTransaction();
- $sql = "CREATE AGGREGATE \"{$f_schema}\".\"{$name}\" (BASETYPE = \"{$basetype}\", SFUNC = \"{$sfunc}\", STYPE = \"{$stype}\"";
+ $sql = \sprintf(
+ 'CREATE AGGREGATE "%s"."%s" (BASETYPE = "%s", SFUNC = "%s", STYPE = "%s"',
+ $f_schema,
+ $name,
+ $basetype,
+ $sfunc,
+ $stype
+ );
if ('' !== \trim($ffunc)) {
- $sql .= ", FINALFUNC = \"{$ffunc}\"";
+ $sql .= \sprintf(
+ ', FINALFUNC = "%s"',
+ $ffunc
+ );
}
if ('' !== \trim($initcond)) {
- $sql .= ", INITCOND = \"{$initcond}\"";
+ $sql .= \sprintf(
+ ', INITCOND = "%s"',
+ $initcond
+ );
}
if ('' !== \trim($sortop)) {
- $sql .= ", SORTOP = \"{$sortop}\"";
+ $sql .= \sprintf(
+ ', SORTOP = "%s"',
+ $sortop
+ );
}
$sql .= ')';
@@ -83,7 +101,7 @@ trait AggregateTrait
* @param string $aggrtype The input data type of the aggregate
* @param bool $cascade True to cascade drop, false to restrict
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropAggregate($aggrname, $aggrtype, $cascade)
{
@@ -92,7 +110,12 @@ trait AggregateTrait
$this->fieldClean($aggrname);
$this->fieldClean($aggrtype);
- $sql = "DROP AGGREGATE \"{$f_schema}\".\"{$aggrname}\" (\"{$aggrtype}\")";
+ $sql = \sprintf(
+ 'DROP AGGREGATE "%s"."%s" ("%s")',
+ $f_schema,
+ $aggrname,
+ $aggrtype
+ );
if ($cascade) {
$sql .= ' CASCADE';
@@ -107,7 +130,7 @@ trait AggregateTrait
* @param string $name The name of the aggregate
* @param string $basetype The input data type of the aggregate
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getAggregate($name, $basetype)
{
@@ -116,16 +139,19 @@ trait AggregateTrait
$this->fieldClean($name);
$this->fieldClean($basetype);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT p.proname, CASE p.proargtypes[0]
- WHEN 'pg_catalog.\"any\"'::pg_catalog.regtype THEN NULL
+ WHEN \'pg_catalog."any"\'::pg_catalog.regtype THEN NULL
ELSE pg_catalog.format_type(p.proargtypes[0], NULL) END AS proargtypes,
a.aggtransfn, format_type(a.aggtranstype, NULL) AS aggstype, a.aggfinalfn,
- a.agginitval, a.aggsortop, u.usename, pg_catalog.obj_description(p.oid, 'pg_proc') AS aggrcomment
+ a.agginitval, a.aggsortop, u.usename, pg_catalog.obj_description(p.oid, \'pg_proc\') AS aggrcomment
FROM pg_catalog.pg_proc p, pg_catalog.pg_namespace n, pg_catalog.pg_user u, pg_catalog.pg_aggregate a
WHERE n.oid = p.pronamespace AND p.proowner=u.usesysid AND p.oid=a.aggfnoid
- AND p.proisagg AND n.nspname='{$c_schema}'
- AND p.proname='" . $name . "'
+ AND p.proisagg AND n.nspname=\'%s\'
+ AND p.proname=\'',
+ $c_schema
+ ) . $name . "'
AND CASE p.proargtypes[0]
WHEN 'pg_catalog.\"any\"'::pg_catalog.regtype THEN ''
ELSE pg_catalog.format_type(p.proargtypes[0], NULL)
@@ -137,18 +163,21 @@ trait AggregateTrait
/**
* Gets all aggregates.
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getAggregates()
{
$c_schema = $this->_schema;
$this->clean($c_schema);
- $sql = "SELECT p.proname, CASE p.proargtypes[0] WHEN 'pg_catalog.\"any\"'::pg_catalog.regtype THEN NULL ELSE
+ $sql = \sprintf(
+ 'SELECT p.proname, CASE p.proargtypes[0] WHEN \'pg_catalog."any"\'::pg_catalog.regtype THEN NULL ELSE
pg_catalog.format_type(p.proargtypes[0], NULL) END AS proargtypes, a.aggtransfn, u.usename,
- pg_catalog.obj_description(p.oid, 'pg_proc') AS aggrcomment
+ pg_catalog.obj_description(p.oid, \'pg_proc\') AS aggrcomment
FROM pg_catalog.pg_proc p, pg_catalog.pg_namespace n, pg_catalog.pg_user u, pg_catalog.pg_aggregate a
WHERE n.oid = p.pronamespace AND p.proowner=u.usesysid AND p.oid=a.aggfnoid
- AND p.proisagg AND n.nspname='{$c_schema}' ORDER BY 1, 2";
+ AND p.proisagg AND n.nspname=\'%s\' ORDER BY 1, 2',
+ $c_schema
+ );
return $this->selectSet($sql);
}
@@ -244,7 +273,7 @@ trait AggregateTrait
* @param string $aggrtype The input data type of the aggregate
* @param string $newaggrowner The new owner of the aggregate
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function changeAggregateOwner($aggrname, $aggrtype, $newaggrowner)
{
@@ -252,7 +281,13 @@ trait AggregateTrait
$this->fieldClean($f_schema);
$this->fieldClean($aggrname);
$this->fieldClean($newaggrowner);
- $sql = "ALTER AGGREGATE \"{$f_schema}\".\"{$aggrname}\" (\"{$aggrtype}\") OWNER TO \"{$newaggrowner}\"";
+ $sql = \sprintf(
+ 'ALTER AGGREGATE "%s"."%s" ("%s") OWNER TO "%s"',
+ $f_schema,
+ $aggrname,
+ $aggrtype,
+ $newaggrowner
+ );
return $this->execute($sql);
}
@@ -264,7 +299,7 @@ trait AggregateTrait
* @param string $aggrtype The input data type of the aggregate
* @param string $newaggrschema The new schema for the aggregate
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function changeAggregateSchema($aggrname, $aggrtype, $newaggrschema)
{
@@ -272,7 +307,13 @@ trait AggregateTrait
$this->fieldClean($f_schema);
$this->fieldClean($aggrname);
$this->fieldClean($newaggrschema);
- $sql = "ALTER AGGREGATE \"{$f_schema}\".\"{$aggrname}\" (\"{$aggrtype}\") SET SCHEMA \"{$newaggrschema}\"";
+ $sql = \sprintf(
+ 'ALTER AGGREGATE "%s"."%s" ("%s") SET SCHEMA "%s"',
+ $f_schema,
+ $aggrname,
+ $aggrtype,
+ $newaggrschema
+ );
return $this->execute($sql);
}
@@ -285,12 +326,20 @@ trait AggregateTrait
* @param string $aggrtype The actual input data type of the aggregate
* @param string $newaggrname The new name of the aggregate
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function renameAggregate($aggrschema, $aggrname, $aggrtype, $newaggrname)
{
/* this function is called from alterAggregate where params are cleaned */
- $sql = "ALTER AGGREGATE \"{$aggrschema}\"" . '.' . "\"{$aggrname}\" (\"{$aggrtype}\") RENAME TO \"{$newaggrname}\"";
+ $sql = \sprintf(
+ 'ALTER AGGREGATE "%s"',
+ $aggrschema
+ ) . '.' . \sprintf(
+ '"%s" ("%s") RENAME TO "%s"',
+ $aggrname,
+ $aggrtype,
+ $newaggrname
+ );
return $this->execute($sql);
}
diff --git a/src/database/databasetraits/ColumnTrait.php b/src/database/databasetraits/ColumnTrait.php
index c365b222..4b5778cf 100644
--- a/src/database/databasetraits/ColumnTrait.php
+++ b/src/database/databasetraits/ColumnTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use PHPPgAdmin\ADORecordSet;
+
/**
* Common trait for column manipulation.
*/
@@ -35,7 +37,13 @@ trait ColumnTrait
$this->clean($length);
if ('' === $length) {
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ADD COLUMN \"{$column}\" {$type}";
+ $sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" ADD COLUMN "%s" %s',
+ $f_schema,
+ $table,
+ $column,
+ $type
+ );
} else {
switch ($type) {
// Have to account for weird placing of length for with/without
@@ -43,18 +51,39 @@ trait ColumnTrait
case 'timestamp with time zone':
case 'timestamp without time zone':
$qual = \mb_substr($type, 9);
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ADD COLUMN \"{$column}\" timestamp({$length}){$qual}";
+ $sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" ADD COLUMN "%s" timestamp(%s)%s',
+ $f_schema,
+ $table,
+ $column,
+ $length,
+ $qual
+ );
break;
case 'time with time zone':
case 'time without time zone':
$qual = \mb_substr($type, 4);
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ADD COLUMN \"{$column}\" time({$length}){$qual}";
+ $sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" ADD COLUMN "%s" time(%s)%s',
+ $f_schema,
+ $table,
+ $column,
+ $length,
+ $qual
+ );
break;
default:
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ADD COLUMN \"{$column}\" {$type}({$length})";
+ $sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" ADD COLUMN "%s" %s(%s)',
+ $f_schema,
+ $table,
+ $column,
+ $type,
+ $length
+ );
}
}
@@ -166,15 +195,25 @@ trait ColumnTrait
$toAlter = [];
// Create the command for changing nullability
if ($notnull !== $oldnotnull) {
- $toAlter[] = "ALTER COLUMN \"{$name}\" " . ($notnull ? 'SET' : 'DROP') . ' NOT NULL';
+ $toAlter[] = \sprintf(
+ 'ALTER COLUMN "%s" ',
+ $name
+ ) . ($notnull ? 'SET' : 'DROP') . ' NOT NULL';
}
// Add default, if it has changed
if ($default !== $olddefault) {
if ('' === $default) {
- $toAlter[] = "ALTER COLUMN \"{$name}\" DROP DEFAULT";
+ $toAlter[] = \sprintf(
+ 'ALTER COLUMN "%s" DROP DEFAULT',
+ $name
+ );
} else {
- $toAlter[] = "ALTER COLUMN \"{$name}\" SET DEFAULT {$default}";
+ $toAlter[] = \sprintf(
+ 'ALTER COLUMN "%s" SET DEFAULT %s',
+ $name,
+ $default
+ );
}
}
@@ -188,18 +227,30 @@ trait ColumnTrait
case 'timestamp with time zone':
case 'timestamp without time zone':
$qual = \mb_substr($type, 9);
- $ftype = "timestamp({$length}){$qual}";
+ $ftype = \sprintf(
+ 'timestamp(%s)%s',
+ $length,
+ $qual
+ );
break;
case 'time with time zone':
case 'time without time zone':
$qual = \mb_substr($type, 4);
- $ftype = "time({$length}){$qual}";
+ $ftype = \sprintf(
+ 'time(%s)%s',
+ $length,
+ $qual
+ );
break;
default:
- $ftype = "{$type}({$length})";
+ $ftype = \sprintf(
+ '%s(%s)',
+ $type,
+ $length
+ );
}
}
@@ -209,13 +260,21 @@ trait ColumnTrait
}
if ($ftype !== $oldtype) {
- $toAlter[] = "ALTER COLUMN \"{$name}\" TYPE {$ftype}";
+ $toAlter[] = \sprintf(
+ 'ALTER COLUMN "%s" TYPE %s',
+ $name,
+ $ftype
+ );
}
// Attempt to process the batch alteration, if anything has been changed
if (!empty($toAlter)) {
// Initialise an empty SQL string
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" "
+ $sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" ',
+ $f_schema,
+ $table
+ )
. \implode(',', $toAlter);
$status = $this->execute($sql);
@@ -256,7 +315,13 @@ trait ColumnTrait
$this->fieldClean($column);
$this->fieldClean($newName);
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" RENAME COLUMN \"{$column}\" TO \"{$newName}\"";
+ $sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" RENAME COLUMN "%s" TO "%s"',
+ $f_schema,
+ $table,
+ $column,
+ $newName
+ );
$status = $this->execute($sql);
@@ -270,7 +335,7 @@ trait ColumnTrait
* @param string $column The column name to set
* @param mixed $default The new default value
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function setColumnDefault($table, $column, $default)
{
@@ -279,7 +344,13 @@ trait ColumnTrait
$this->fieldClean($table);
$this->fieldClean($column);
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ALTER COLUMN \"{$column}\" SET DEFAULT {$default}";
+ $sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" ALTER COLUMN "%s" SET DEFAULT %s',
+ $f_schema,
+ $table,
+ $column,
+ $default
+ );
return $this->execute($sql);
}
@@ -291,7 +362,7 @@ trait ColumnTrait
* @param string $column The column to alter
* @param bool $state True to set null, false to set not null
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function setColumnNull($table, $column, $state)
{
@@ -300,7 +371,12 @@ trait ColumnTrait
$this->fieldClean($table);
$this->fieldClean($column);
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ALTER COLUMN \"{$column}\" " . ($state ? 'DROP' : 'SET') . ' NOT NULL';
+ $sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" ALTER COLUMN "%s" ',
+ $f_schema,
+ $table,
+ $column
+ ) . ($state ? 'DROP' : 'SET') . ' NOT NULL';
return $this->execute($sql);
}
@@ -321,7 +397,12 @@ trait ColumnTrait
$this->fieldClean($table);
$this->fieldClean($column);
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" DROP COLUMN \"{$column}\"";
+ $sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" DROP COLUMN "%s"',
+ $f_schema,
+ $table,
+ $column
+ );
if ($cascade) {
$sql .= ' CASCADE';
@@ -338,7 +419,7 @@ trait ColumnTrait
* @param string $table The table from which to drop
* @param string $column The column name to drop default
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropColumnDefault($table, $column)
{
@@ -347,7 +428,12 @@ trait ColumnTrait
$this->fieldClean($table);
$this->fieldClean($column);
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ALTER COLUMN \"{$column}\" DROP DEFAULT";
+ $sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" ALTER COLUMN "%s" DROP DEFAULT',
+ $f_schema,
+ $table,
+ $column
+ );
return $this->execute($sql);
}
diff --git a/src/database/databasetraits/DatabaseTrait.php b/src/database/databasetraits/DatabaseTrait.php
index 84981611..ad17c16d 100644
--- a/src/database/databasetraits/DatabaseTrait.php
+++ b/src/database/databasetraits/DatabaseTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use PHPPgAdmin\ADORecordSet;
+
/**
* Common trait for tables manipulation.
*/
@@ -42,7 +44,10 @@ trait DatabaseTrait
}
}
- $sql = "SELECT usesuper FROM pg_user WHERE usename='{$username}'";
+ $sql = \sprintf(
+ 'SELECT usesuper FROM pg_user WHERE usename=\'%s\'',
+ $username
+ );
$usesuper = $this->selectField($sql, 'usesuper');
@@ -58,7 +63,7 @@ trait DatabaseTrait
*
* @param string $table (optional) The table to analyze
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function analyzeDB($table = '')
{
@@ -67,7 +72,11 @@ trait DatabaseTrait
$this->fieldClean($f_schema);
$this->fieldClean($table);
- $sql = "ANALYZE \"{$f_schema}\".\"{$table}\"";
+ $sql = \sprintf(
+ 'ANALYZE "%s"."%s"',
+ $f_schema,
+ $table
+ );
} else {
$sql = 'ANALYZE';
}
@@ -80,12 +89,15 @@ trait DatabaseTrait
*
* @param string $database The name of the database to retrieve
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getDatabase($database)
{
$this->clean($database);
- $sql = "SELECT * FROM pg_database WHERE datname='{$database}'";
+ $sql = \sprintf(
+ 'SELECT * FROM pg_database WHERE datname=\'%s\'',
+ $database
+ );
return $this->selectSet($sql);
}
@@ -95,7 +107,7 @@ trait DatabaseTrait
*
* @param null|string $currentdatabase database name that should be on top of the resultset
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getDatabases($currentdatabase = null)
{
@@ -107,26 +119,38 @@ trait DatabaseTrait
if (isset($conf['owned_only']) && $conf['owned_only'] && !$this->isSuperUser()) {
$username = $server_info['username'];
$this->clean($username);
- $clause = " AND pr.rolname='{$username}'";
+ $clause = \sprintf(
+ ' AND pr.rolname=\'%s\'',
+ $username
+ );
} else {
$clause = '';
}
if (isset($server_info['useonlydefaultdb']) && $server_info['useonlydefaultdb']) {
$currentdatabase = $server_info['defaultdb'];
- $clause .= " AND pdb.datname = '{$currentdatabase}' ";
+ $clause .= \sprintf(
+ ' AND pdb.datname = \'%s\' ',
+ $currentdatabase
+ );
}
if (isset($server_info['hiddendbs']) && $server_info['hiddendbs']) {
$hiddendbs = $server_info['hiddendbs'];
$not_in = "('" . \implode("','", $hiddendbs) . "')";
- $clause .= " AND pdb.datname NOT IN {$not_in} ";
+ $clause .= \sprintf(
+ ' AND pdb.datname NOT IN %s ',
+ $not_in
+ );
}
if (null !== $currentdatabase) {
$this->clean($currentdatabase);
- $orderby = "ORDER BY pdb.datname = '{$currentdatabase}' DESC, pdb.datname";
+ $orderby = \sprintf(
+ 'ORDER BY pdb.datname = \'%s\' DESC, pdb.datname',
+ $currentdatabase
+ );
} else {
$orderby = 'ORDER BY pdb.datname';
}
@@ -137,13 +161,14 @@ trait DatabaseTrait
$where = ' AND pdb.datallowconn';
}
- $sql = "
+ $sql = \sprintf(
+ '
SELECT pdb.datname AS datname,
pr.rolname AS datowner,
pg_encoding_to_char(encoding) AS datencoding,
- (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pdb.oid=pd.objoid AND pd.classoid='pg_database'::regclass) AS datcomment,
+ (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pdb.oid=pd.objoid AND pd.classoid=\'pg_database\'::regclass) AS datcomment,
(SELECT spcname FROM pg_catalog.pg_tablespace pt WHERE pt.oid=pdb.dattablespace) AS tablespace,
- CASE WHEN pg_catalog.has_database_privilege(current_user, pdb.oid, 'CONNECT')
+ CASE WHEN pg_catalog.has_database_privilege(current_user, pdb.oid, \'CONNECT\')
THEN pg_catalog.pg_database_size(pdb.oid)
ELSE -1 -- set this magic value, which we will convert to no access later
END as dbsize,
@@ -152,9 +177,13 @@ trait DatabaseTrait
FROM pg_catalog.pg_database pdb
LEFT JOIN pg_catalog.pg_roles pr ON (pdb.datdba = pr.oid)
WHERE true
- {$where}
- {$clause}
- {$orderby}";
+ %s
+ %s
+ %s',
+ $where,
+ $clause,
+ $orderby
+ );
return $this->selectSet($sql);
}
@@ -164,16 +193,19 @@ trait DatabaseTrait
*
* @param string $database the name of the database to get the comment for
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getDatabaseComment($database)
{
$this->clean($database);
- $sql = "SELECT description
+ $sql = \sprintf(
+ 'SELECT description
FROM pg_catalog.pg_database
JOIN pg_catalog.pg_shdescription
- ON (oid=objoid AND classoid='pg_database'::regclass)
- WHERE pg_database.datname = '{$database}' ";
+ ON (oid=objoid AND classoid=\'pg_database\'::regclass)
+ WHERE pg_database.datname = \'%s\' ',
+ $database
+ );
return $this->selectSet($sql);
}
@@ -183,12 +215,15 @@ trait DatabaseTrait
*
* @param string $database the name of the database to get the owner for
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getDatabaseOwner($database)
{
$this->clean($database);
- $sql = "SELECT usename FROM pg_user, pg_database WHERE pg_user.usesysid = pg_database.datdba AND pg_database.datname = '{$database}' ";
+ $sql = \sprintf(
+ 'SELECT usename FROM pg_user, pg_database WHERE pg_user.usesysid = pg_database.datdba AND pg_database.datname = \'%s\' ',
+ $database
+ );
return $this->selectSet($sql);
}
@@ -236,22 +271,38 @@ trait DatabaseTrait
$this->clean($lc_collate);
$this->clean($lc_ctype);
- $sql = "CREATE DATABASE \"{$database}\" WITH TEMPLATE=\"{$template}\"";
+ $sql = \sprintf(
+ 'CREATE DATABASE "%s" WITH TEMPLATE="%s"',
+ $database,
+ $template
+ );
if ('' !== $encoding) {
- $sql .= " ENCODING='{$encoding}'";
+ $sql .= \sprintf(
+ ' ENCODING=\'%s\'',
+ $encoding
+ );
}
if ('' !== $lc_collate) {
- $sql .= " LC_COLLATE='{$lc_collate}'";
+ $sql .= \sprintf(
+ ' LC_COLLATE=\'%s\'',
+ $lc_collate
+ );
}
if ('' !== $lc_ctype) {
- $sql .= " LC_CTYPE='{$lc_ctype}'";
+ $sql .= \sprintf(
+ ' LC_CTYPE=\'%s\'',
+ $lc_ctype
+ );
}
if ('' !== $tablespace && $this->hasTablespaces()) {
- $sql .= " TABLESPACE \"{$tablespace}\"";
+ $sql .= \sprintf(
+ ' TABLESPACE "%s"',
+ $tablespace
+ );
}
$status = $this->execute($sql);
@@ -276,12 +327,15 @@ trait DatabaseTrait
*
* @param string $database The name of the database to drop
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropDatabase($database)
{
$this->fieldClean($database);
- $sql = "DROP DATABASE \"{$database}\"";
+ $sql = \sprintf(
+ 'DROP DATABASE "%s"',
+ $database
+ );
return $this->execute($sql);
}
@@ -347,7 +401,7 @@ trait DatabaseTrait
* @param string $oldName name of database to rename
* @param string $newName new name of database
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function alterDatabaseRename($oldName, $newName)
{
@@ -355,7 +409,11 @@ trait DatabaseTrait
$this->fieldClean($newName);
if ($oldName !== $newName) {
- $sql = "ALTER DATABASE \"{$oldName}\" RENAME TO \"{$newName}\"";
+ $sql = \sprintf(
+ 'ALTER DATABASE "%s" RENAME TO "%s"',
+ $oldName,
+ $newName
+ );
return $this->execute($sql);
}
@@ -370,14 +428,18 @@ trait DatabaseTrait
* @param string $dbName database to change ownership of
* @param string $newOwner user that will own the database
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function alterDatabaseOwner($dbName, $newOwner)
{
$this->fieldClean($dbName);
$this->fieldClean($newOwner);
- $sql = "ALTER DATABASE \"{$dbName}\" OWNER TO \"{$newOwner}\"";
+ $sql = \sprintf(
+ 'ALTER DATABASE "%s" OWNER TO "%s"',
+ $dbName,
+ $newOwner
+ );
return $this->execute($sql);
}
@@ -387,7 +449,7 @@ trait DatabaseTrait
*
* @param null|string $database (optional) Find only prepared transactions executed in a specific database
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getPreparedXacts($database = null)
{
@@ -395,8 +457,11 @@ trait DatabaseTrait
$sql = 'SELECT * FROM pg_prepared_xacts';
} else {
$this->clean($database);
- $sql = "SELECT transaction, gid, prepared, owner FROM pg_prepared_xacts
- WHERE database='{$database}' ORDER BY owner";
+ $sql = \sprintf(
+ 'SELECT transaction, gid, prepared, owner FROM pg_prepared_xacts
+ WHERE database=\'%s\' ORDER BY owner',
+ $database
+ );
}
return $this->selectSet($sql);
@@ -407,7 +472,7 @@ trait DatabaseTrait
*
* @param null|string $database (optional) Find only connections to specified database
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getProcesses($database = null)
{
@@ -418,11 +483,14 @@ trait DatabaseTrait
ORDER BY datname, usename, pid";
} else {
$this->clean($database);
- $sql = "SELECT datname, usename, pid, waiting, state_change as query_start,
- case when state='idle in transaction' then '<IDLE> in transaction' when state = 'idle' then '<IDLE>' else query end as query
+ $sql = \sprintf(
+ 'SELECT datname, usename, pid, waiting, state_change as query_start,
+ case when state=\'idle in transaction\' then \'<IDLE> in transaction\' when state = \'idle\' then \'<IDLE>\' else query end as query
FROM pg_catalog.pg_stat_activity
- WHERE datname='{$database}'
- ORDER BY usename, pid";
+ WHERE datname=\'%s\'
+ ORDER BY usename, pid',
+ $database
+ );
}
return $this->selectSet($sql);
@@ -433,7 +501,7 @@ trait DatabaseTrait
/**
* Returns table locks information in the current database.
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getLocks()
{
@@ -445,19 +513,22 @@ trait DatabaseTrait
$where = "AND nspname !~ '^pg_t(emp_[0-9]+|oast)$'";
}
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
pn.nspname, pc.relname AS tablename, pl.pid, pl.mode, pl.granted, pl.virtualtransaction,
- (select transactionid from pg_catalog.pg_locks l2 where l2.locktype='transactionid'
- and l2.mode='ExclusiveLock' and l2.virtualtransaction=pl.virtualtransaction) as transaction
+ (select transactionid from pg_catalog.pg_locks l2 where l2.locktype=\'transactionid\'
+ and l2.mode=\'ExclusiveLock\' and l2.virtualtransaction=pl.virtualtransaction) as transaction
FROM
pg_catalog.pg_locks pl,
pg_catalog.pg_class pc,
pg_catalog.pg_namespace pn
WHERE
pl.relation = pc.oid AND pc.relnamespace=pn.oid
- {$where}
- ORDER BY pid,nspname,tablename";
+ %s
+ ORDER BY pid,nspname,tablename',
+ $where
+ );
return $this->selectSet($sql);
}
@@ -476,9 +547,15 @@ trait DatabaseTrait
$pid = (int) $pid;
if ('CANCEL' === $signal) {
- $sql = "SELECT pg_catalog.pg_cancel_backend({$pid}) AS val";
+ $sql = \sprintf(
+ 'SELECT pg_catalog.pg_cancel_backend(%s) AS val',
+ $pid
+ );
} elseif ('KILL' === $signal) {
- $sql = "SELECT pg_catalog.pg_terminate_backend({$pid}) AS val";
+ $sql = \sprintf(
+ 'SELECT pg_catalog.pg_terminate_backend(%s) AS val',
+ $pid
+ );
} else {
return -1;
}
@@ -527,7 +604,11 @@ trait DatabaseTrait
$f_schema = $this->_schema;
$this->fieldClean($f_schema);
$this->fieldClean($table);
- $sql .= " \"{$f_schema}\".\"{$table}\"";
+ $sql .= \sprintf(
+ ' "%s"."%s"',
+ $f_schema,
+ $table
+ );
}
$status = $this->execute($sql);
@@ -571,7 +652,7 @@ trait DatabaseTrait
/**
* Returns all available variable information.
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getVariables()
{
diff --git a/src/database/databasetraits/DomainTrait.php b/src/database/databasetraits/DomainTrait.php
index 4289a4dc..4d465298 100644
--- a/src/database/databasetraits/DomainTrait.php
+++ b/src/database/databasetraits/DomainTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use PHPPgAdmin\ADORecordSet;
+
/**
* Common trait for domains manipulation.
*/
@@ -16,7 +18,7 @@ trait DomainTrait
*
* @param string $domain The name of the domain to fetch
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getDomain($domain)
{
@@ -24,21 +26,25 @@ trait DomainTrait
$this->clean($c_schema);
$this->clean($domain);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
t.typname AS domname,
pg_catalog.format_type(t.typbasetype, t.typtypmod) AS domtype,
t.typnotnull AS domnotnull,
t.typdefault AS domdef,
pg_catalog.pg_get_userbyid(t.typowner) AS domowner,
- pg_catalog.obj_description(t.oid, 'pg_type') AS domcomment
+ pg_catalog.obj_description(t.oid, \'pg_type\') AS domcomment
FROM
pg_catalog.pg_type t
WHERE
- t.typtype = 'd'
- AND t.typname = '{$domain}'
+ t.typtype = \'d\'
+ AND t.typname = \'%s\'
AND t.typnamespace = (SELECT oid FROM pg_catalog.pg_namespace
- WHERE nspname = '{$c_schema}')";
+ WHERE nspname = \'%s\')',
+ $domain,
+ $c_schema
+ );
return $this->selectSet($sql);
}
@@ -46,28 +52,31 @@ trait DomainTrait
/**
* Return all domains in current schema. Excludes domain constraints.
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getDomains()
{
$c_schema = $this->_schema;
$this->clean($c_schema);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
t.typname AS domname,
pg_catalog.format_type(t.typbasetype, t.typtypmod) AS domtype,
t.typnotnull AS domnotnull,
t.typdefault AS domdef,
pg_catalog.pg_get_userbyid(t.typowner) AS domowner,
- pg_catalog.obj_description(t.oid, 'pg_type') AS domcomment
+ pg_catalog.obj_description(t.oid, \'pg_type\') AS domcomment
FROM
pg_catalog.pg_type t
WHERE
- t.typtype = 'd'
+ t.typtype = \'d\'
AND t.typnamespace = (SELECT oid FROM pg_catalog.pg_namespace
- WHERE nspname='{$c_schema}')
- ORDER BY t.typname";
+ WHERE nspname=\'%s\')
+ ORDER BY t.typname',
+ $c_schema
+ );
return $this->selectSet($sql);
}
@@ -77,7 +86,7 @@ trait DomainTrait
*
* @param string $domain The name of the domain whose constraints to fetch
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getDomainConstraints($domain)
{
@@ -85,7 +94,8 @@ trait DomainTrait
$this->clean($c_schema);
$this->clean($domain);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
conname,
contype,
@@ -95,12 +105,15 @@ trait DomainTrait
WHERE
contypid = (
SELECT oid FROM pg_catalog.pg_type
- WHERE typname='{$domain}'
+ WHERE typname=\'%s\'
AND typnamespace = (
SELECT oid FROM pg_catalog.pg_namespace
- WHERE nspname = '{$c_schema}')
+ WHERE nspname = \'%s\')
)
- ORDER BY conname";
+ ORDER BY conname',
+ $domain,
+ $c_schema
+ );
return $this->selectSet($sql);
}
@@ -116,7 +129,7 @@ trait DomainTrait
* @param string $default Default value for domain
* @param string $check A CHECK constraint if there is one
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function createDomain($domain, $type, $length, $array, $notnull, $default, $check)
{
@@ -124,7 +137,11 @@ trait DomainTrait
$this->fieldClean($f_schema);
$this->fieldClean($domain);
- $sql = "CREATE DOMAIN \"{$f_schema}\".\"{$domain}\" AS ";
+ $sql = \sprintf(
+ 'CREATE DOMAIN "%s"."%s" AS ',
+ $f_schema,
+ $domain
+ );
if ('' === $length) {
$sql .= $type;
@@ -135,18 +152,30 @@ trait DomainTrait
case 'timestamp with time zone':
case 'timestamp without time zone':
$qual = \mb_substr($type, 9);
- $sql .= "timestamp({$length}){$qual}";
+ $sql .= \sprintf(
+ 'timestamp(%s)%s',
+ $length,
+ $qual
+ );
break;
case 'time with time zone':
case 'time without time zone':
$qual = \mb_substr($type, 4);
- $sql .= "time({$length}){$qual}";
+ $sql .= \sprintf(
+ 'time(%s)%s',
+ $length,
+ $qual
+ );
break;
default:
- $sql .= "{$type}({$length})";
+ $sql .= \sprintf(
+ '%s(%s)',
+ $type,
+ $length
+ );
}
}
@@ -160,11 +189,17 @@ trait DomainTrait
}
if ('' !== $default) {
- $sql .= " DEFAULT {$default}";
+ $sql .= \sprintf(
+ ' DEFAULT %s',
+ $default
+ );
}
if ($this->hasDomainConstraints() && '' !== $check) {
- $sql .= " CHECK ({$check})";
+ $sql .= \sprintf(
+ ' CHECK (%s)',
+ $check
+ );
}
return $this->execute($sql);
@@ -197,9 +232,18 @@ trait DomainTrait
// Default
if ('' === $domdefault) {
- $sql = "ALTER DOMAIN \"{$f_schema}\".\"{$domain}\" DROP DEFAULT";
+ $sql = \sprintf(
+ 'ALTER DOMAIN "%s"."%s" DROP DEFAULT',
+ $f_schema,
+ $domain
+ );
} else {
- $sql = "ALTER DOMAIN \"{$f_schema}\".\"{$domain}\" SET DEFAULT {$domdefault}";
+ $sql = \sprintf(
+ 'ALTER DOMAIN "%s"."%s" SET DEFAULT %s',
+ $f_schema,
+ $domain,
+ $domdefault
+ );
}
$status = $this->execute($sql);
@@ -212,9 +256,17 @@ trait DomainTrait
// NOT NULL
if ($domnotnull) {
- $sql = "ALTER DOMAIN \"{$f_schema}\".\"{$domain}\" SET NOT NULL";
+ $sql = \sprintf(
+ 'ALTER DOMAIN "%s"."%s" SET NOT NULL',
+ $f_schema,
+ $domain
+ );
} else {
- $sql = "ALTER DOMAIN \"{$f_schema}\".\"{$domain}\" DROP NOT NULL";
+ $sql = \sprintf(
+ 'ALTER DOMAIN "%s"."%s" DROP NOT NULL',
+ $f_schema,
+ $domain
+ );
}
$status = $this->execute($sql);
@@ -226,7 +278,12 @@ trait DomainTrait
}
// Owner
- $sql = "ALTER DOMAIN \"{$f_schema}\".\"{$domain}\" OWNER TO \"{$domowner}\"";
+ $sql = \sprintf(
+ 'ALTER DOMAIN "%s"."%s" OWNER TO "%s"',
+ $f_schema,
+ $domain,
+ $domowner
+ );
$status = $this->execute($sql);
@@ -245,7 +302,7 @@ trait DomainTrait
* @param string $domain The name of the domain to drop
* @param string $cascade True to cascade drop, false to restrict
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropDomain($domain, $cascade)
{
@@ -253,7 +310,11 @@ trait DomainTrait
$this->fieldClean($f_schema);
$this->fieldClean($domain);
- $sql = "DROP DOMAIN \"{$f_schema}\".\"{$domain}\"";
+ $sql = \sprintf(
+ 'DROP DOMAIN "%s"."%s"',
+ $f_schema,
+ $domain
+ );
if ($cascade) {
$sql .= ' CASCADE';
@@ -269,7 +330,7 @@ trait DomainTrait
* @param string $definition The definition of the check
* @param string $name (optional) The name to give the check, otherwise default name is assigned
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function addDomainCheckConstraint($domain, $definition, $name = '')
{
@@ -278,13 +339,23 @@ trait DomainTrait
$this->fieldClean($domain);
$this->fieldClean($name);
- $sql = "ALTER DOMAIN \"{$f_schema}\".\"{$domain}\" ADD ";
+ $sql = \sprintf(
+ 'ALTER DOMAIN "%s"."%s" ADD ',
+ $f_schema,
+ $domain
+ );
if ('' !== $name) {
- $sql .= "CONSTRAINT \"{$name}\" ";
+ $sql .= \sprintf(
+ 'CONSTRAINT "%s" ',
+ $name
+ );
}
- $sql .= "CHECK ({$definition})";
+ $sql .= \sprintf(
+ 'CHECK (%s)',
+ $definition
+ );
return $this->execute($sql);
}
@@ -296,7 +367,7 @@ trait DomainTrait
* @param string $constraint The constraint to remove
* @param bool $cascade True to cascade, false otherwise
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropDomainConstraint($domain, $constraint, $cascade)
{
@@ -305,7 +376,12 @@ trait DomainTrait
$this->fieldClean($domain);
$this->fieldClean($constraint);
- $sql = "ALTER DOMAIN \"{$f_schema}\".\"{$domain}\" DROP CONSTRAINT \"{$constraint}\"";
+ $sql = \sprintf(
+ 'ALTER DOMAIN "%s"."%s" DROP CONSTRAINT "%s"',
+ $f_schema,
+ $domain,
+ $constraint
+ );
if ($cascade) {
$sql .= ' CASCADE';
diff --git a/src/database/databasetraits/FtsTrait.php b/src/database/databasetraits/FtsTrait.php
index 98149e40..c364842f 100644
--- a/src/database/databasetraits/FtsTrait.php
+++ b/src/database/databasetraits/FtsTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use ADORecordSet;
+
/**
* Common trait for full text search manipulation.
*/
@@ -31,19 +33,34 @@ trait FtsTrait
$this->fieldClean($f_schema);
$this->fieldClean($cfgname);
- $sql = "CREATE TEXT SEARCH CONFIGURATION \"{$f_schema}\".\"{$cfgname}\" (";
+ $sql = \sprintf(
+ 'CREATE TEXT SEARCH CONFIGURATION "%s"."%s" (',
+ $f_schema,
+ $cfgname
+ );
if ('' !== $parser) {
$this->fieldClean($parser['schema']);
$this->fieldClean($parser['parser']);
- $parser = "\"{$parser['schema']}\".\"{$parser['parser']}\"";
- $sql .= " PARSER = {$parser}";
+ $parser = \sprintf(
+ '"%s"."%s"',
+ $parser['schema'],
+ $parser['parser']
+ );
+ $sql .= \sprintf(
+ ' PARSER = %s',
+ $parser
+ );
}
if ('' !== $template) {
$this->fieldClean($template['schema']);
$this->fieldClean($template['name']);
- $sql .= " COPY = \"{$template['schema']}\".\"{$template['name']}\"";
+ $sql .= \sprintf(
+ ' COPY = "%s"."%s"',
+ $template['schema'],
+ $template['name']
+ );
}
$sql .= ')';
@@ -87,7 +104,7 @@ trait FtsTrait
*
* @param bool $all if false, returns schema qualified FTS confs
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function getFtsConfigurations($all = true)
{
@@ -105,7 +122,11 @@ trait FtsTrait
pg_catalog.pg_ts_config_is_visible(c.oid)";
if (!$all) {
- $sql .= " AND n.nspname='{$c_schema}'\n";
+ $sql .= \sprintf(
+ ' AND n.nspname=\'%s\'
+',
+ $c_schema
+ );
}
$sql .= 'ORDER BY name';
@@ -121,7 +142,7 @@ trait FtsTrait
*
* @param string $ftscfg Name of the FTS configuration
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function getFtsConfigurationMap($ftscfg)
{
@@ -129,29 +150,36 @@ trait FtsTrait
$this->clean($c_schema);
$this->fieldClean($ftscfg);
- $oidSet = $this->selectSet("SELECT c.oid
+ $oidSet = $this->selectSet(\sprintf(
+ 'SELECT c.oid
FROM pg_catalog.pg_ts_config AS c
LEFT JOIN pg_catalog.pg_namespace n ON (n.oid = c.cfgnamespace)
- WHERE c.cfgname = '{$ftscfg}'
- AND n.nspname='{$c_schema}'");
+ WHERE c.cfgname = \'%s\'
+ AND n.nspname=\'%s\'',
+ $ftscfg,
+ $c_schema
+ ));
$oid = $oidSet->fields['oid'];
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
(SELECT t.alias FROM pg_catalog.ts_token_type(c.cfgparser) AS t WHERE t.tokid = m.maptokentype) AS name,
(SELECT t.description FROM pg_catalog.ts_token_type(c.cfgparser) AS t WHERE t.tokid = m.maptokentype) AS description,
- c.cfgname AS cfgname, n.nspname ||'.'|| d.dictname as dictionaries
+ c.cfgname AS cfgname, n.nspname ||\'.\'|| d.dictname as dictionaries
FROM
pg_catalog.pg_ts_config AS c, pg_catalog.pg_ts_config_map AS m, pg_catalog.pg_ts_dict d,
pg_catalog.pg_namespace n
WHERE
- c.oid = {$oid}
+ c.oid = %s
AND m.mapcfg = c.oid
AND m.mapdict = d.oid
AND d.dictnamespace = n.oid
ORDER BY name
- ";
+ ',
+ $oid
+ );
return $this->selectSet($sql);
}
@@ -161,7 +189,7 @@ trait FtsTrait
*
* @param bool $all if false, return only Parsers from the current schema
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function getFtsParsers($all = true)
{
@@ -177,7 +205,11 @@ trait FtsTrait
WHERE pg_catalog.pg_ts_parser_is_visible(p.oid)";
if (!$all) {
- $sql .= " AND n.nspname='{$c_schema}'\n";
+ $sql .= \sprintf(
+ ' AND n.nspname=\'%s\'
+',
+ $c_schema
+ );
}
$sql .= 'ORDER BY name';
@@ -190,7 +222,7 @@ trait FtsTrait
*
* @param bool $all if false, return only Dics from the current schema
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function getFtsDictionaries($all = true)
{
@@ -205,7 +237,11 @@ trait FtsTrait
WHERE pg_catalog.pg_ts_dict_is_visible(d.oid)";
if (!$all) {
- $sql .= " AND n.nspname='{$c_schema}'\n";
+ $sql .= \sprintf(
+ ' AND n.nspname=\'%s\'
+',
+ $c_schema
+ );
}
$sql .= 'ORDER BY name;';
@@ -216,7 +252,7 @@ trait FtsTrait
/**
* Returns all FTS dictionary templates available.
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function getFtsDictionaryTemplates()
{
@@ -247,7 +283,7 @@ trait FtsTrait
* @param string $ftscfg The configuration's name
* @param bool $cascade true to Cascade to dependenced objects
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function dropFtsConfiguration($ftscfg, $cascade)
{
@@ -255,7 +291,11 @@ trait FtsTrait
$this->fieldClean($f_schema);
$this->fieldClean($ftscfg);
- $sql = "DROP TEXT SEARCH CONFIGURATION \"{$f_schema}\".\"{$ftscfg}\"";
+ $sql = \sprintf(
+ 'DROP TEXT SEARCH CONFIGURATION "%s"."%s"',
+ $f_schema,
+ $ftscfg
+ );
if ($cascade) {
$sql .= ' CASCADE';
@@ -270,7 +310,7 @@ trait FtsTrait
* @param string $ftsdict The dico's name
* @param bool $cascade Cascade to dependenced objects
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*
* @todo Support of dictionary templates dropping
*/
@@ -281,7 +321,11 @@ trait FtsTrait
$this->fieldClean($ftsdict);
$sql = 'DROP TEXT SEARCH DICTIONARY';
- $sql .= " \"{$f_schema}\".\"{$ftsdict}\"";
+ $sql .= \sprintf(
+ ' "%s"."%s"',
+ $f_schema,
+ $ftsdict
+ );
if ($cascade) {
$sql .= ' CASCADE';
@@ -325,7 +369,12 @@ trait FtsTrait
$this->fieldClean($f_schema);
$this->fieldClean($name);
- $sql = "ALTER TEXT SEARCH CONFIGURATION \"{$f_schema}\".\"{$cfgname}\" RENAME TO \"{$name}\"";
+ $sql = \sprintf(
+ 'ALTER TEXT SEARCH CONFIGURATION "%s"."%s" RENAME TO "%s"',
+ $f_schema,
+ $cfgname,
+ $name
+ );
$status = $this->execute($sql);
if (0 !== $status) {
@@ -371,31 +420,55 @@ trait FtsTrait
$sql = 'CREATE TEXT SEARCH';
if ($isTemplate) {
- $sql .= " TEMPLATE \"{$f_schema}\".\"{$dictname}\" (";
+ $sql .= \sprintf(
+ ' TEMPLATE "%s"."%s" (',
+ $f_schema,
+ $dictname
+ );
if ('' !== $lexize) {
- $sql .= " LEXIZE = {$lexize}";
+ $sql .= \sprintf(
+ ' LEXIZE = %s',
+ $lexize
+ );
}
if ('' !== $init) {
- $sql .= ", INIT = {$init}";
+ $sql .= \sprintf(
+ ', INIT = %s',
+ $init
+ );
}
$sql .= ')';
$whatToComment = 'TEXT SEARCH TEMPLATE';
} else {
- $sql .= " DICTIONARY \"{$f_schema}\".\"{$dictname}\" (";
+ $sql .= \sprintf(
+ ' DICTIONARY "%s"."%s" (',
+ $f_schema,
+ $dictname
+ );
if ('' !== $template) {
$this->fieldClean($template['schema']);
$this->fieldClean($template['name']);
- $template = "\"{$template['schema']}\".\"{$template['name']}\"";
-
- $sql .= " TEMPLATE = {$template}";
+ $template = \sprintf(
+ '"%s"."%s"',
+ $template['schema'],
+ $template['name']
+ );
+
+ $sql .= \sprintf(
+ ' TEMPLATE = %s',
+ $template
+ );
}
if ('' !== $option) {
- $sql .= ", {$option}";
+ $sql .= \sprintf(
+ ', %s',
+ $option
+ );
}
$sql .= ')';
@@ -471,7 +544,12 @@ trait FtsTrait
$this->fieldClean($f_schema);
$this->fieldClean($name);
- $sql = "ALTER TEXT SEARCH DICTIONARY \"{$f_schema}\".\"{$dictname}\" RENAME TO \"{$name}\"";
+ $sql = \sprintf(
+ 'ALTER TEXT SEARCH DICTIONARY "%s"."%s" RENAME TO "%s"',
+ $f_schema,
+ $dictname,
+ $name
+ );
$status = $this->execute($sql);
if (0 !== $status) {
@@ -489,7 +567,7 @@ trait FtsTrait
*
* @param string $ftsdict The name of the FTS dictionary
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function getFtsDictionaryByName($ftsdict)
{
@@ -497,21 +575,25 @@ trait FtsTrait
$this->clean($c_schema);
$this->clean($ftsdict);
- $sql = "SELECT
+ $sql = \sprintf(
+ 'SELECT
n.nspname as schema,
d.dictname as name,
- ( SELECT COALESCE(nt.nspname, '(null)')::pg_catalog.text || '.' || t.tmplname FROM
+ ( SELECT COALESCE(nt.nspname, \'(null)\')::pg_catalog.text || \'.\' || t.tmplname FROM
pg_catalog.pg_ts_template t
LEFT JOIN pg_catalog.pg_namespace nt ON nt.oid = t.tmplnamespace
WHERE d.dicttemplate = t.oid ) AS template,
d.dictinitoption as init,
- pg_catalog.obj_description(d.oid, 'pg_ts_dict') as comment
+ pg_catalog.obj_description(d.oid, \'pg_ts_dict\') as comment
FROM pg_catalog.pg_ts_dict d
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = d.dictnamespace
- WHERE d.dictname = '{$ftsdict}'
+ WHERE d.dictname = \'%s\'
AND pg_catalog.pg_ts_dict_is_visible(d.oid)
- AND n.nspname='{$c_schema}'
- ORDER BY name";
+ AND n.nspname=\'%s\'
+ ORDER BY name',
+ $ftsdict,
+ $c_schema
+ );
return $this->selectSet($sql);
}
@@ -524,7 +606,7 @@ trait FtsTrait
* @param string $action What to do with the mapping: add, alter or drop
* @param string $dictname Dictionary that will process tokens given or null in case of drop action
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*
* @internal param string $cfgname The name of the FTS configuration to alter
*/
@@ -553,11 +635,19 @@ trait FtsTrait
break;
}
- $sql = "ALTER TEXT SEARCH CONFIGURATION \"{$f_schema}\".\"{$ftscfg}\" {$whatToDo} MAPPING FOR ";
+ $sql = \sprintf(
+ 'ALTER TEXT SEARCH CONFIGURATION "%s"."%s" %s MAPPING FOR ',
+ $f_schema,
+ $ftscfg,
+ $whatToDo
+ );
$sql .= \implode(',', $mapping);
if ('drop' !== $action && !empty($dictname)) {
- $sql .= " WITH {$dictname}";
+ $sql .= \sprintf(
+ ' WITH %s',
+ $dictname
+ );
}
return $this->execute($sql);
@@ -572,7 +662,7 @@ trait FtsTrait
* @param string $ftscfg The name of the FTS configuration
* @param string $mapping The name of the mapping
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function getFtsMappingByName($ftscfg, $mapping)
{
@@ -581,27 +671,39 @@ trait FtsTrait
$this->clean($ftscfg);
$this->clean($mapping);
- $oidSet = $this->selectSet("SELECT c.oid, cfgparser
+ $oidSet = $this->selectSet(\sprintf(
+ 'SELECT c.oid, cfgparser
FROM pg_catalog.pg_ts_config AS c
LEFT JOIN pg_catalog.pg_namespace AS n ON n.oid = c.cfgnamespace
- WHERE c.cfgname = '{$ftscfg}'
- AND n.nspname='{$c_schema}'");
+ WHERE c.cfgname = \'%s\'
+ AND n.nspname=\'%s\'',
+ $ftscfg,
+ $c_schema
+ ));
$oid = $oidSet->fields['oid'];
$cfgparser = $oidSet->fields['cfgparser'];
- $tokenIdSet = $this->selectSet("SELECT tokid
- FROM pg_catalog.ts_token_type({$cfgparser})
- WHERE alias = '{$mapping}'");
+ $tokenIdSet = $this->selectSet(\sprintf(
+ 'SELECT tokid
+ FROM pg_catalog.ts_token_type(%s)
+ WHERE alias = \'%s\'',
+ $cfgparser,
+ $mapping
+ ));
$tokid = $tokenIdSet->fields['tokid'];
- $sql = "SELECT
+ $sql = \sprintf(
+ 'SELECT
(SELECT t.alias FROM pg_catalog.ts_token_type(c.cfgparser) AS t WHERE t.tokid = m.maptokentype) AS name,
d.dictname as dictionaries
FROM pg_catalog.pg_ts_config AS c, pg_catalog.pg_ts_config_map AS m, pg_catalog.pg_ts_dict d
- WHERE c.oid = {$oid} AND m.mapcfg = c.oid AND m.maptokentype = {$tokid} AND m.mapdict = d.oid
- LIMIT 1;";
+ WHERE c.oid = %s AND m.mapcfg = c.oid AND m.maptokentype = %s AND m.mapdict = d.oid
+ LIMIT 1;',
+ $oid,
+ $tokid
+ );
return $this->selectSet($sql);
}
@@ -612,15 +714,18 @@ trait FtsTrait
*
* @param string $ftscfg The config's name that use the parser
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function getFtsMappings($ftscfg)
{
$cfg = $this->getFtsConfigurationByName($ftscfg);
- $sql = "SELECT alias AS name, description
- FROM pg_catalog.ts_token_type({$cfg->fields['parser_id']})
- ORDER BY name";
+ $sql = \sprintf(
+ 'SELECT alias AS name, description
+ FROM pg_catalog.ts_token_type(%s)
+ ORDER BY name',
+ $cfg->fields['parser_id']
+ );
return $this->selectSet($sql);
}
@@ -630,26 +735,30 @@ trait FtsTrait
*
* @param string $ftscfg The name of the FTS configuration
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function getFtsConfigurationByName($ftscfg)
{
$c_schema = $this->_schema;
$this->clean($c_schema);
$this->clean($ftscfg);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
n.nspname as schema,
c.cfgname as name,
p.prsname as parser,
c.cfgparser as parser_id,
- pg_catalog.obj_description(c.oid, 'pg_ts_config') as comment
+ pg_catalog.obj_description(c.oid, \'pg_ts_config\') as comment
FROM pg_catalog.pg_ts_config c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.cfgnamespace
LEFT JOIN pg_catalog.pg_ts_parser p ON p.oid = c.cfgparser
WHERE pg_catalog.pg_ts_config_is_visible(c.oid)
- AND c.cfgname = '{$ftscfg}'
- AND n.nspname='{$c_schema}'";
+ AND c.cfgname = \'%s\'
+ AND n.nspname=\'%s\'',
+ $ftscfg,
+ $c_schema
+ );
return $this->selectSet($sql);
}
diff --git a/src/database/databasetraits/FunctionTrait.php b/src/database/databasetraits/FunctionTrait.php
index 5162f4d1..f7cc0d20 100644
--- a/src/database/databasetraits/FunctionTrait.php
+++ b/src/database/databasetraits/FunctionTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use PHPPgAdmin\ADORecordSet;
+
/**
* Common trait for full text search manipulation.
*/
@@ -17,7 +19,7 @@ trait FunctionTrait
* @param bool $all If true, will find all available functions, if false just those in search path
* @param mixed $type If truthy, will return functions of type trigger
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getFunctions($all = false, $type = null)
{
@@ -31,22 +33,26 @@ trait FunctionTrait
} else {
$c_schema = $this->_schema;
$this->clean($c_schema);
- $where = "n.nspname = '{$c_schema}'";
+ $where = \sprintf(
+ 'n.nspname = \'%s\'',
+ $c_schema
+ );
$distinct = '';
}
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
- {$distinct}
+ %s
p.oid AS prooid,
p.proname,
p.proretset,
pg_catalog.format_type(p.prorettype, NULL) AS proresult,
pg_catalog.oidvectortypes(p.proargtypes) AS proarguments,
pl.lanname AS prolanguage,
- pg_catalog.obj_description(p.oid, 'pg_proc') AS procomment,
- p.proname || ' (' || pg_catalog.oidvectortypes(p.proargtypes) || ')' AS proproto,
- CASE WHEN p.proretset THEN 'setof ' ELSE '' END || pg_catalog.format_type(p.prorettype, NULL) AS proreturns,
+ pg_catalog.obj_description(p.oid, \'pg_proc\') AS procomment,
+ p.proname || \' (\' || pg_catalog.oidvectortypes(p.proargtypes) || \')\' AS proproto,
+ CASE WHEN p.proretset THEN \'setof \' ELSE \'\' END || pg_catalog.format_type(p.prorettype, NULL) AS proreturns,
coalesce(u.usename::text,p.proowner::text) AS proowner
FROM pg_catalog.pg_proc p
@@ -54,9 +60,12 @@ trait FunctionTrait
INNER JOIN pg_catalog.pg_language pl ON pl.oid = p.prolang
LEFT JOIN pg_catalog.pg_user u ON u.usesysid = p.proowner
WHERE NOT p.proisagg
- AND {$where}
+ AND %s
ORDER BY p.proname, proresult
- ";
+ ',
+ $distinct,
+ $where
+ );
return $this->selectSet($sql);
}
@@ -64,7 +73,7 @@ trait FunctionTrait
/**
* Returns a list of all functions that can be used in triggers.
*
- * @return \PHPPgAdmin\ADORecordSet Functions that can be used in a trigger
+ * @return ADORecordSet Functions that can be used in a trigger
*/
public function getTriggerFunctions()
{
@@ -177,7 +186,13 @@ trait FunctionTrait
$this->fieldClean($newname);
/* $funcname is escaped in createFunction */
if ($funcname !== $newname) {
- $sql = "ALTER FUNCTION \"{$f_schema}\".\"{$funcname}\"({$args}) RENAME TO \"{$newname}\"";
+ $sql = \sprintf(
+ 'ALTER FUNCTION "%s"."%s"(%s) RENAME TO "%s"',
+ $f_schema,
+ $funcname,
+ $args,
+ $newname
+ );
$status = $this->execute($sql);
if (0 !== $status) {
@@ -194,7 +209,13 @@ trait FunctionTrait
$this->fieldClean($newown);
if ($funcown !== $newown) {
- $sql = "ALTER FUNCTION \"{$f_schema}\".\"{$funcname}\"({$args}) OWNER TO \"{$newown}\"";
+ $sql = \sprintf(
+ 'ALTER FUNCTION "%s"."%s"(%s) OWNER TO "%s"',
+ $f_schema,
+ $funcname,
+ $args,
+ $newown
+ );
$status = $this->execute($sql);
if (0 !== $status) {
@@ -210,7 +231,13 @@ trait FunctionTrait
$this->fieldClean($newschema);
/* $funcschema is escaped in createFunction */
if ($funcschema !== $newschema) {
- $sql = "ALTER FUNCTION \"{$f_schema}\".\"{$funcname}\"({$args}) SET SCHEMA \"{$newschema}\"";
+ $sql = \sprintf(
+ 'ALTER FUNCTION "%s"."%s"(%s) SET SCHEMA "%s"',
+ $f_schema,
+ $funcname,
+ $args,
+ $newschema
+ );
$status = $this->execute($sql);
if (0 !== $status) {
@@ -268,7 +295,11 @@ trait FunctionTrait
$sql .= ' OR REPLACE';
}
- $sql .= " FUNCTION \"{$f_schema}\".\"{$funcname}\" (";
+ $sql .= \sprintf(
+ ' FUNCTION "%s"."%s" (',
+ $f_schema,
+ $funcname
+ );
if ('' !== $args) {
$sql .= $args;
@@ -281,7 +312,10 @@ trait FunctionTrait
$sql .= 'SETOF ';
}
- $sql .= "{$returns} AS ";
+ $sql .= \sprintf(
+ '%s AS ',
+ $returns
+ );
if (\is_array($definition)) {
$this->arrayClean($definition);
@@ -295,15 +329,24 @@ trait FunctionTrait
$sql .= "'" . $definition . "'";
}
- $sql .= " LANGUAGE \"{$language}\"";
+ $sql .= \sprintf(
+ ' LANGUAGE "%s"',
+ $language
+ );
// Add costs
if (!empty($cost)) {
- $sql .= " COST {$cost}";
+ $sql .= \sprintf(
+ ' COST %s',
+ $cost
+ );
}
if (0 !== $rows) {
- $sql .= " ROWS {$rows}";
+ $sql .= \sprintf(
+ ' ROWS %s',
+ $rows
+ );
}
// Add flags
@@ -313,7 +356,7 @@ trait FunctionTrait
continue;
}
- $sql .= "\n{$v}";
+ $sql .= \PHP_EOL . $v;
}
$status = $this->execute($sql);
@@ -325,7 +368,11 @@ trait FunctionTrait
}
/* set the comment */
- $status = $this->setComment('FUNCTION', "\"{$funcname}\"({$args})", null, $comment);
+ $status = $this->setComment('FUNCTION', \sprintf(
+ '"%s"(%s)',
+ $funcname,
+ $args
+ ), null, $comment);
if (0 !== $status) {
$this->rollbackTransaction();
@@ -342,7 +389,7 @@ trait FunctionTrait
* @param int $function_oid The OID of the function to drop
* @param bool $cascade True to cascade drop, false to restrict
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropFunction($function_oid, $cascade)
{
@@ -352,7 +399,12 @@ trait FunctionTrait
$this->fieldClean($f_schema);
$this->fieldClean($fn->fields['proname']);
- $sql = "DROP FUNCTION \"{$f_schema}\".\"{$fn->fields['proname']}\"({$fn->fields['proarguments']})";
+ $sql = \sprintf(
+ 'DROP FUNCTION "%s"."%s"(%s)',
+ $f_schema,
+ $fn->fields['proname'],
+ $fn->fields['proarguments']
+ );
if ($cascade) {
$sql .= ' CASCADE';
@@ -366,7 +418,7 @@ trait FunctionTrait
*
* @param int $function_oid
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*
* @internal param string The $func name of the function to retrieve
*/
@@ -374,7 +426,8 @@ trait FunctionTrait
{
$this->clean($function_oid);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
pc.oid AS prooid, proname,
pg_catalog.pg_get_userbyid(proowner) AS proowner,
@@ -383,7 +436,7 @@ trait FunctionTrait
probin, proretset, proisstrict, provolatile, prosecdef,
pg_catalog.oidvectortypes(pc.proargtypes) AS proarguments,
proargnames AS proargnames,
- pg_catalog.obj_description(pc.oid, 'pg_proc') AS procomment,
+ pg_catalog.obj_description(pc.oid, \'pg_proc\') AS procomment,
proconfig,
(select array_agg( (select typname from pg_type pt
where pt.oid = p.oid) ) from unnest(proallargtypes) p)
@@ -393,9 +446,11 @@ trait FunctionTrait
pg_catalog.pg_proc pc, pg_catalog.pg_language pl,
pg_catalog.pg_namespace pn
WHERE
- pc.oid = '{$function_oid}'::oid AND pc.prolang = pl.oid
+ pc.oid = \'%s\'::oid AND pc.prolang = pl.oid
AND pc.pronamespace = pn.oid
- ";
+ ',
+ $function_oid
+ );
return $this->selectSet($sql);
}
@@ -405,17 +460,18 @@ trait FunctionTrait
*
* @param int $function_oid
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getFunctionDef($function_oid)
{
$this->clean($function_oid);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
f.proname as relname,
n.nspname,
u.usename AS relowner,
- pg_catalog.obj_description(f.oid, 'pg_proc') as relcomment,
+ pg_catalog.obj_description(f.oid, \'pg_proc\') as relcomment,
(SELECT spcname FROM pg_catalog.pg_tablespace pt WHERE pt.oid=f.pronamespace) AS tablespace,
pg_get_functiondef(f.oid),
pl.lanname AS prolanguage
@@ -423,8 +479,10 @@ trait FunctionTrait
JOIN pg_catalog.pg_namespace n ON (f.pronamespace = n.oid)
JOIN pg_catalog.pg_language pl ON pl.oid = f.prolang
LEFT JOIN pg_catalog.pg_user u ON u.usesysid=f.proowner
- WHERE f.oid='{$function_oid}'
- ";
+ WHERE f.oid=\'%s\'
+ ',
+ $function_oid
+ );
return $this->selectSet($sql);
}
diff --git a/src/database/databasetraits/IndexTrait.php b/src/database/databasetraits/IndexTrait.php
index 2913623e..615330aa 100644
--- a/src/database/databasetraits/IndexTrait.php
+++ b/src/database/databasetraits/IndexTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use PHPPgAdmin\ADORecordSet;
+
/**
* Common trait for indexes and constraints manipulation.
*/
@@ -24,13 +26,17 @@ trait IndexTrait
$this->clean($c_schema);
$this->clean($table);
- $sql = "SELECT i.indisclustered
+ $sql = \sprintf(
+ 'SELECT i.indisclustered
FROM pg_catalog.pg_class c, pg_catalog.pg_index i
- WHERE c.relname = '{$table}'
+ WHERE c.relname = \'%s\'
AND c.oid = i.indrelid AND i.indisclustered
AND c.relnamespace = (SELECT oid FROM pg_catalog.pg_namespace
- WHERE nspname='{$c_schema}')
- ";
+ WHERE nspname=\'%s\')
+ ',
+ $table,
+ $c_schema
+ );
$v = $this->selectSet($sql);
@@ -66,9 +72,17 @@ trait IndexTrait
$sql .= $concurrently ? ' CONCURRENTLY ' : '';
- $sql .= $name ? " \"{$name}\" " : '';
+ $sql .= $name ? \sprintf(
+ ' "%s" ',
+ $name
+ ) : '';
- $sql .= " ON \"{$f_schema}\".\"{$table}\" USING {$type} ";
+ $sql .= \sprintf(
+ ' ON "%s"."%s" USING %s ',
+ $f_schema,
+ $table,
+ $type
+ );
if (\is_array($columns)) {
$this->arrayClean($columns);
@@ -80,12 +94,18 @@ trait IndexTrait
// Tablespace
if ($this->hasTablespaces() && '' !== $tablespace) {
$this->fieldClean($tablespace);
- $sql .= " TABLESPACE \"{$tablespace}\"";
+ $sql .= \sprintf(
+ ' TABLESPACE "%s"',
+ $tablespace
+ );
}
// Predicate
if ('' !== \trim($where)) {
- $sql .= " WHERE ({$where})";
+ $sql .= \sprintf(
+ ' WHERE (%s)',
+ $where
+ );
}
$status = $this->execute($sql);
@@ -107,7 +127,11 @@ trait IndexTrait
$this->fieldClean($f_schema);
$this->fieldClean($index);
- $sql = "DROP INDEX \"{$f_schema}\".\"{$index}\"";
+ $sql = \sprintf(
+ 'DROP INDEX "%s"."%s"',
+ $f_schema,
+ $index
+ );
if ($cascade) {
$sql .= ' CASCADE';
@@ -126,7 +150,7 @@ trait IndexTrait
* @param bool $force If true, recreates indexes forcedly in PostgreSQL 7.0-7.1, forces rebuild of system indexes in
* 7.2-7.3, ignored in >=7.4
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function reindex($type, $name, $force = false)
{
@@ -136,7 +160,11 @@ trait IndexTrait
switch ($type) {
case 'DATABASE':
- $sql = "REINDEX {$type} \"{$name}\"";
+ $sql = \sprintf(
+ 'REINDEX %s "%s"',
+ $type,
+ $name
+ );
if ($force) {
$sql .= ' FORCE';
@@ -145,7 +173,12 @@ trait IndexTrait
break;
case 'TABLE':
case 'INDEX':
- $sql = "REINDEX {$type} \"{$f_schema}\".\"{$name}\"";
+ $sql = \sprintf(
+ 'REINDEX %s "%s"."%s"',
+ $type,
+ $f_schema,
+ $name
+ );
if ($force) {
$sql .= ' FORCE';
@@ -179,11 +212,18 @@ trait IndexTrait
$f_schema = $this->_schema;
$this->fieldClean($f_schema);
$this->fieldClean($table);
- $sql .= " \"{$f_schema}\".\"{$table}\"";
+ $sql .= \sprintf(
+ ' "%s"."%s"',
+ $f_schema,
+ $table
+ );
if (!empty($index)) {
$this->fieldClean($index);
- $sql .= " USING \"{$index}\"";
+ $sql .= \sprintf(
+ ' USING "%s"',
+ $index
+ );
}
}
@@ -199,7 +239,7 @@ trait IndexTrait
*
* @param string $table the table where we are looking for fk
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getConstraintsWithFields($table)
{
@@ -208,13 +248,17 @@ trait IndexTrait
$this->clean($table);
// get the max number of col used in a constraint for the table
- $sql = "SELECT DISTINCT
- max(SUBSTRING(array_dims(c.conkey) FROM \$patern\$^\\[.*:(.*)\\]$\$patern\$)) as nb
+ $sql = \sprintf(
+ 'SELECT DISTINCT
+ max(SUBSTRING(array_dims(c.conkey) FROM $patern$^\[.*:(.*)\]$$patern$)) as nb
FROM pg_catalog.pg_constraint AS c
JOIN pg_catalog.pg_class AS r ON (c.conrelid=r.oid)
JOIN pg_catalog.pg_namespace AS ns ON (r.relnamespace=ns.oid)
WHERE
- r.relname = '{$table}' AND ns.nspname='{$c_schema}'";
+ r.relname = \'%s\' AND ns.nspname=\'%s\'',
+ $table,
+ $c_schema
+ );
$rs = $this->selectSet($sql);
@@ -237,7 +281,10 @@ trait IndexTrait
JOIN pg_catalog.pg_attribute AS f1 ON (f1.attrelid=r1.oid AND (f1.attnum=c.conkey[1]';
for ($i = 2; $i <= $rs->fields['nb']; ++$i) {
- $sql .= " OR f1.attnum=c.conkey[{$i}]";
+ $sql .= \sprintf(
+ ' OR f1.attnum=c.conkey[%s]',
+ $i
+ );
}
$sql .= '))
JOIN pg_catalog.pg_namespace AS ns1 ON r1.relnamespace=ns1.oid
@@ -248,7 +295,11 @@ trait IndexTrait
(f2.attrelid=r2.oid AND ((c.confkey[1]=f2.attnum AND c.conkey[1]=f1.attnum)';
for ($i = 2; $i <= $rs->fields['nb']; ++$i) {
- $sql .= " OR (c.confkey[{$i}]=f2.attnum AND c.conkey[{$i}]=f1.attnum)";
+ $sql .= \sprintf(
+ ' OR (c.confkey[%s]=f2.attnum AND c.conkey[%s]=f1.attnum)',
+ $i,
+ $i
+ );
}
$sql .= \sprintf("))
@@ -267,7 +318,7 @@ trait IndexTrait
* @param string $name (optional) The name to give the key, otherwise default name is assigned
* @param string $tablespace (optional) The tablespace for the schema, '' indicates default
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function addPrimaryKey($table, $fields, $name = '', $tablespace = '')
{
@@ -282,16 +333,26 @@ trait IndexTrait
$this->fieldClean($name);
$this->fieldClean($tablespace);
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ADD ";
+ $sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" ADD ',
+ $f_schema,
+ $table
+ );
if ('' !== $name) {
- $sql .= "CONSTRAINT \"{$name}\" ";
+ $sql .= \sprintf(
+ 'CONSTRAINT "%s" ',
+ $name
+ );
}
$sql .= 'PRIMARY KEY ("' . \implode('","', $fields) . '")';
if ('' !== $tablespace && $this->hasTablespaces()) {
- $sql .= " USING INDEX TABLESPACE \"{$tablespace}\"";
+ $sql .= \sprintf(
+ ' USING INDEX TABLESPACE "%s"',
+ $tablespace
+ );
}
return $this->execute($sql);
@@ -305,7 +366,7 @@ trait IndexTrait
* @param string $name (optional) The name to give the key, otherwise default name is assigned
* @param string $tablespace (optional) The tablespace for the schema, '' indicates default
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function addUniqueKey($table, $fields, $name = '', $tablespace = '')
{
@@ -320,16 +381,26 @@ trait IndexTrait
$this->fieldClean($name);
$this->fieldClean($tablespace);
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ADD ";
+ $sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" ADD ',
+ $f_schema,
+ $table
+ );
if ('' !== $name) {
- $sql .= "CONSTRAINT \"{$name}\" ";
+ $sql .= \sprintf(
+ 'CONSTRAINT "%s" ',
+ $name
+ );
}
$sql .= 'UNIQUE ("' . \implode('","', $fields) . '")';
if ('' !== $tablespace && $this->hasTablespaces()) {
- $sql .= " USING INDEX TABLESPACE \"{$tablespace}\"";
+ $sql .= \sprintf(
+ ' USING INDEX TABLESPACE "%s"',
+ $tablespace
+ );
}
return $this->execute($sql);
@@ -344,7 +415,7 @@ trait IndexTrait
* @param string $definition The definition of the check
* @param string $name (optional) The name to give the check, otherwise default name is assigned
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function addCheckConstraint($table, $definition, $name = '')
{
@@ -354,13 +425,23 @@ trait IndexTrait
$this->fieldClean($name);
// @@ How the heck do you clean a definition???
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ADD ";
+ $sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" ADD ',
+ $f_schema,
+ $table
+ );
if ('' !== $name) {
- $sql .= "CONSTRAINT \"{$name}\" ";
+ $sql .= \sprintf(
+ 'CONSTRAINT "%s" ',
+ $name
+ );
}
- $sql .= "CHECK ({$definition})";
+ $sql .= \sprintf(
+ 'CHECK (%s)',
+ $definition
+ );
return $this->execute($sql);
}
@@ -392,7 +473,11 @@ trait IndexTrait
}
// Properly lock the table
- $sql = "LOCK TABLE \"{$f_schema}\".\"{$table}\" IN ACCESS EXCLUSIVE MODE";
+ $sql = \sprintf(
+ 'LOCK TABLE "%s"."%s" IN ACCESS EXCLUSIVE MODE',
+ $f_schema,
+ $table
+ );
$status = $this->execute($sql);
if (0 !== $status) {
@@ -402,9 +487,14 @@ trait IndexTrait
}
// Delete the check constraint
- $sql = "DELETE FROM pg_relcheck WHERE rcrelid=(SELECT oid FROM pg_catalog.pg_class WHERE relname='{$c_table}'
+ $sql = \sprintf(
+ 'DELETE FROM pg_relcheck WHERE rcrelid=(SELECT oid FROM pg_catalog.pg_class WHERE relname=\'%s\'
AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE
- nspname = '{$c_schema}')) AND rcname='{$name}'";
+ nspname = \'%s\')) AND rcname=\'%s\'',
+ $c_table,
+ $c_schema,
+ $name
+ );
$status = $this->execute($sql);
if (0 !== $status) {
@@ -414,11 +504,16 @@ trait IndexTrait
}
// Update the pg_class catalog to reflect the new number of checks
- $sql = "UPDATE pg_class SET relchecks=(SELECT COUNT(*) FROM pg_relcheck WHERE
- rcrelid=(SELECT oid FROM pg_catalog.pg_class WHERE relname='{$c_table}'
+ $sql = \sprintf(
+ 'UPDATE pg_class SET relchecks=(SELECT COUNT(*) FROM pg_relcheck WHERE
+ rcrelid=(SELECT oid FROM pg_catalog.pg_class WHERE relname=\'%s\'
AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE
- nspname = '{$c_schema}')))
- WHERE relname='{$c_table}'";
+ nspname = \'%s\')))
+ WHERE relname=\'%s\'',
+ $c_table,
+ $c_schema,
+ $c_table
+ );
$status = $this->execute($sql);
if (0 !== $status) {
@@ -446,7 +541,7 @@ trait IndexTrait
* @param string $initially The initially parameter for the FK (eg. INITIALLY IMMEDIATE)
* @param string $name [optional] The name to give the key, otherwise default name is assigned
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*
* @internal param \PHPPgAdmin\Database\The $target table that contains the target columns
* @internal param \PHPPgAdmin\Database\The $intially initial deferrability (eg. INITIALLY IMMEDIATE)
@@ -478,34 +573,60 @@ trait IndexTrait
$this->fieldArrayClean($tfields);
$this->fieldClean($name);
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ADD ";
+ $sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" ADD ',
+ $f_schema,
+ $table
+ );
if ('' !== $name) {
- $sql .= "CONSTRAINT \"{$name}\" ";
+ $sql .= \sprintf(
+ 'CONSTRAINT "%s" ',
+ $name
+ );
}
$sql .= 'FOREIGN KEY ("' . \implode('","', $sfields) . '") ';
// Target table needs to be fully qualified
- $sql .= "REFERENCES \"{$targschema}\".\"{$targtable}\"(\"" . \implode('","', $tfields) . '") ';
+ $sql .= \sprintf(
+ 'REFERENCES "%s"."%s"("',
+ $targschema,
+ $targtable
+ ) . \implode('","', $tfields) . '") ';
if ($match !== $this->fkmatches[0]) {
- $sql .= " {$match}";
+ $sql .= \sprintf(
+ ' %s',
+ $match
+ );
}
if ($upd_action !== $this->fkactions[0]) {
- $sql .= " ON UPDATE {$upd_action}";
+ $sql .= \sprintf(
+ ' ON UPDATE %s',
+ $upd_action
+ );
}
if ($del_action !== $this->fkactions[0]) {
- $sql .= " ON DELETE {$del_action}";
+ $sql .= \sprintf(
+ ' ON DELETE %s',
+ $del_action
+ );
}
if ($deferrable !== $this->fkdeferrable[0]) {
- $sql .= " {$deferrable}";
+ $sql .= \sprintf(
+ ' %s',
+ $deferrable
+ );
}
if ($initially !== $this->fkinitial[0]) {
- $sql .= " {$initially}";
+ $sql .= \sprintf(
+ ' %s',
+ $initially
+ );
}
return $this->execute($sql);
@@ -519,7 +640,7 @@ trait IndexTrait
* @param string $type The type of constraint (c, f, u or p)
* @param bool $cascade True to cascade drop, false to restrict
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropConstraint($constraint, $relation, $type, $cascade)
{
@@ -528,7 +649,12 @@ trait IndexTrait
$this->fieldClean($constraint);
$this->fieldClean($relation);
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$relation}\" DROP CONSTRAINT \"{$constraint}\"";
+ $sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" DROP CONSTRAINT "%s"',
+ $f_schema,
+ $relation,
+ $constraint
+ );
if ($cascade) {
$sql .= ' CASCADE';
@@ -542,7 +668,7 @@ trait IndexTrait
*
* @param array $tables multi dimensional assoc array that holds schema and table name
*
- * @return int|\PHPPgAdmin\ADORecordSet recordset of linked tables and columns or -1 if $tables isn't an array
+ * @return ADORecordSet|int recordset of linked tables and columns or -1 if $tables isn't an array
*/
public function getLinkingKeys($tables)
{
@@ -552,22 +678,43 @@ trait IndexTrait
$this->clean($tables[0]['tablename']);
$this->clean($tables[0]['schemaname']);
- $tables_list = "'{$tables[0]['tablename']}'";
- $schema_list = "'{$tables[0]['schemaname']}'";
- $schema_tables_list = "'{$tables[0]['schemaname']}.{$tables[0]['tablename']}'";
+ $tables_list = \sprintf(
+ '\'%s\'',
+ $tables[0]['tablename']
+ );
+ $schema_list = \sprintf(
+ '\'%s\'',
+ $tables[0]['schemaname']
+ );
+ $schema_tables_list = \sprintf(
+ '\'%s.%s\'',
+ $tables[0]['schemaname'],
+ $tables[0]['tablename']
+ );
$tablescount = \count($tables);
for ($i = 1; $i < $tablescount; ++$i) {
$this->clean($tables[$i]['tablename']);
$this->clean($tables[$i]['schemaname']);
- $tables_list .= ", '{$tables[$i]['tablename']}'";
- $schema_list .= ", '{$tables[$i]['schemaname']}'";
- $schema_tables_list .= ", '{$tables[$i]['schemaname']}.{$tables[$i]['tablename']}'";
+ $tables_list .= \sprintf(
+ ', \'%s\'',
+ $tables[$i]['tablename']
+ );
+ $schema_list .= \sprintf(
+ ', \'%s\'',
+ $tables[$i]['schemaname']
+ );
+ $schema_tables_list .= \sprintf(
+ ', \'%s.%s\'',
+ $tables[$i]['schemaname'],
+ $tables[$i]['tablename']
+ );
}
$maxDimension = 1;
- $sql = "
+ $sql = \sprintf(
+ '
SELECT DISTINCT
array_dims(pc.conkey) AS arr_dim,
pgc1.relname AS p_table
@@ -575,10 +722,12 @@ trait IndexTrait
pg_catalog.pg_constraint AS pc,
pg_catalog.pg_class AS pgc1
WHERE
- pc.contype = 'f'
+ pc.contype = \'f\'
AND (pc.conrelid = pgc1.relfilenode OR pc.confrelid = pgc1.relfilenode)
- AND pgc1.relname IN ({$tables_list})
- ";
+ AND pgc1.relname IN (%s)
+ ',
+ $tables_list
+ );
//parse our output to find the highest dimension of foreign keys since pc.conkey is stored in an array
$rs = $this->selectSet($sql);
@@ -595,11 +744,16 @@ trait IndexTrait
$cons_str = '( (pfield.attnum = conkey[1] AND cfield.attnum = confkey[1]) ';
for ($i = 2; $i <= $maxDimension; ++$i) {
- $cons_str .= "OR (pfield.attnum = conkey[{$i}] AND cfield.attnum = confkey[{$i}]) ";
+ $cons_str .= \sprintf(
+ 'OR (pfield.attnum = conkey[%s] AND cfield.attnum = confkey[%s]) ',
+ $i,
+ $i
+ );
}
$cons_str .= ') ';
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
pgc1.relname AS p_table,
pgc2.relname AS f_table,
@@ -613,20 +767,26 @@ trait IndexTrait
pg_catalog.pg_class AS pgc2,
pg_catalog.pg_attribute AS pfield,
pg_catalog.pg_attribute AS cfield,
- (SELECT oid AS ns_id, nspname FROM pg_catalog.pg_namespace WHERE nspname IN ({$schema_list}) ) AS pgns1,
- (SELECT oid AS ns_id, nspname FROM pg_catalog.pg_namespace WHERE nspname IN ({$schema_list}) ) AS pgns2
+ (SELECT oid AS ns_id, nspname FROM pg_catalog.pg_namespace WHERE nspname IN (%s) ) AS pgns1,
+ (SELECT oid AS ns_id, nspname FROM pg_catalog.pg_namespace WHERE nspname IN (%s) ) AS pgns2
WHERE
- pc.contype = 'f'
+ pc.contype = \'f\'
AND pgc1.relnamespace = pgns1.ns_id
AND pgc2.relnamespace = pgns2.ns_id
AND pc.conrelid = pgc1.relfilenode
AND pc.confrelid = pgc2.relfilenode
AND pfield.attrelid = pc.conrelid
AND cfield.attrelid = pc.confrelid
- AND {$cons_str}
- AND pgns1.nspname || '.' || pgc1.relname IN ({$schema_tables_list})
- AND pgns2.nspname || '.' || pgc2.relname IN ({$schema_tables_list})
- ";
+ AND %s
+ AND pgns1.nspname || \'.\' || pgc1.relname IN (%s)
+ AND pgns2.nspname || \'.\' || pgc2.relname IN (%s)
+ ',
+ $schema_list,
+ $schema_list,
+ $cons_str,
+ $schema_tables_list,
+ $schema_tables_list
+ );
return $this->selectSet($sql);
}
@@ -636,7 +796,7 @@ trait IndexTrait
*
* @param string $table The table to find referrers for
*
- * @return int|\PHPPgAdmin\ADORecordSet A recordset or -1 in case of error
+ * @return ADORecordSet|int A recordset or -1 in case of error
*/
public function getReferrers($table)
{
@@ -651,7 +811,8 @@ trait IndexTrait
$c_schema = $this->_schema;
$this->clean($c_schema);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
pn.nspname,
pl.relname,
@@ -664,12 +825,15 @@ trait IndexTrait
WHERE
pc.connamespace = pn.oid
AND pc.conrelid = pl.oid
- AND pc.contype = 'f'
- AND confrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}'
+ AND pc.contype = \'f\'
+ AND confrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname=\'%s\'
AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace
- WHERE nspname='{$c_schema}'))
+ WHERE nspname=\'%s\'))
ORDER BY 1,2,3
- ";
+ ',
+ $table,
+ $c_schema
+ );
return $this->selectSet($sql);
}
diff --git a/src/database/databasetraits/OperatorTrait.php b/src/database/databasetraits/OperatorTrait.php
index b0c258ac..040cb3fb 100644
--- a/src/database/databasetraits/OperatorTrait.php
+++ b/src/database/databasetraits/OperatorTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use PHPPgAdmin\ADORecordSet;
+
/**
* Common trait for operators manipulation.
*/
@@ -14,27 +16,30 @@ trait OperatorTrait
/**
* Returns a list of all operators in the database.
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getOperators()
{
$c_schema = $this->_schema;
$this->clean($c_schema);
// We stick with the subselects here, as you cannot ORDER BY a regtype
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
po.oid, po.oprname,
(SELECT pg_catalog.format_type(oid, NULL) FROM pg_catalog.pg_type pt WHERE pt.oid=po.oprleft) AS oprleftname,
(SELECT pg_catalog.format_type(oid, NULL) FROM pg_catalog.pg_type pt WHERE pt.oid=po.oprright) AS oprrightname,
po.oprresult::pg_catalog.regtype AS resultname,
- pg_catalog.obj_description(po.oid, 'pg_operator') AS oprcomment
+ pg_catalog.obj_description(po.oid, \'pg_operator\') AS oprcomment
FROM
pg_catalog.pg_operator po
WHERE
- po.oprnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname='{$c_schema}')
+ po.oprnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname=\'%s\')
ORDER BY
po.oprname, oprleftname, oprrightname
- ";
+ ',
+ $c_schema
+ );
return $this->selectSet($sql);
}
@@ -45,7 +50,7 @@ trait OperatorTrait
* @param mixed $operator_oid The OID of the operator to drop
* @param bool $cascade True to cascade drop, false to restrict
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropOperator($operator_oid, $cascade)
{
@@ -55,7 +60,11 @@ trait OperatorTrait
$this->fieldClean($f_schema);
$this->fieldClean($opr->fields['oprname']);
- $sql = "DROP OPERATOR \"{$f_schema}\".{$opr->fields['oprname']} (";
+ $sql = \sprintf(
+ 'DROP OPERATOR "%s".%s (',
+ $f_schema,
+ $opr->fields['oprname']
+ );
// Quoting or formatting here???
if (null !== $opr->fields['oprleftname']) {
$sql .= $opr->fields['oprleftname'] . ', ';
@@ -81,13 +90,14 @@ trait OperatorTrait
*
* @param mixed $operator_oid The oid of the operator
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getOperator($operator_oid)
{
$this->clean($operator_oid);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
po.oid, po.oprname,
oprleft::pg_catalog.regtype AS oprleftname,
@@ -103,8 +113,10 @@ trait OperatorTrait
FROM
pg_catalog.pg_operator po
WHERE
- po.oid='{$operator_oid}'
- ";
+ po.oid=\'%s\'
+ ',
+ $operator_oid
+ );
return $this->selectSet($sql);
}
@@ -112,26 +124,29 @@ trait OperatorTrait
/**
* Gets all opclasses.
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getOpClasses()
{
$c_schema = $this->_schema;
$this->clean($c_schema);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
pa.amname, po.opcname,
po.opcintype::pg_catalog.regtype AS opcintype,
po.opcdefault,
- pg_catalog.obj_description(po.oid, 'pg_opclass') AS opccomment
+ pg_catalog.obj_description(po.oid, \'pg_opclass\') AS opccomment
FROM
pg_catalog.pg_opclass po, pg_catalog.pg_am pa, pg_catalog.pg_namespace pn
WHERE
po.opcmethod=pa.oid
AND po.opcnamespace=pn.oid
- AND pn.nspname='{$c_schema}'
+ AND pn.nspname=\'%s\'
ORDER BY 1,2
- ";
+ ',
+ $c_schema
+ );
return $this->selectSet($sql);
}
diff --git a/src/database/databasetraits/PrivilegesTrait.php b/src/database/databasetraits/PrivilegesTrait.php
index 823360c8..fee33a74 100644
--- a/src/database/databasetraits/PrivilegesTrait.php
+++ b/src/database/databasetraits/PrivilegesTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use PHPPgAdmin\ADORecordSet;
+
/**
* Common trait for privileges manipulation.
*/
@@ -33,46 +35,70 @@ trait PrivilegesTrait
switch ($type) {
case 'column':
$this->clean($table);
- $sql = "
- SELECT E'{' || pg_catalog.array_to_string(attacl, E',') || E'}' as acl
+ $sql = \sprintf(
+ '
+ SELECT E\'{\' || pg_catalog.array_to_string(attacl, E\',\') || E\'}\' as acl
FROM pg_catalog.pg_attribute a
LEFT JOIN pg_catalog.pg_class c ON (a.attrelid = c.oid)
LEFT JOIN pg_catalog.pg_namespace n ON (c.relnamespace=n.oid)
- WHERE n.nspname='{$c_schema}'
- AND c.relname='{$table}'
- AND a.attname='{$object}'";
+ WHERE n.nspname=\'%s\'
+ AND c.relname=\'%s\'
+ AND a.attname=\'%s\'',
+ $c_schema,
+ $table,
+ $object
+ );
break;
case 'table':
case 'view':
case 'sequence':
- $sql = "
+ $sql = \sprintf(
+ '
SELECT relacl AS acl FROM pg_catalog.pg_class
- WHERE relname='{$object}'
+ WHERE relname=\'%s\'
AND relnamespace=(SELECT oid FROM pg_catalog.pg_namespace
- WHERE nspname='{$c_schema}')";
+ WHERE nspname=\'%s\')',
+ $object,
+ $c_schema
+ );
break;
case 'database':
- $sql = "SELECT datacl AS acl FROM pg_catalog.pg_database WHERE datname='{$object}'";
+ $sql = \sprintf(
+ 'SELECT datacl AS acl FROM pg_catalog.pg_database WHERE datname=\'%s\'',
+ $object
+ );
break;
case 'function':
// Since we fetch functions by oid, they are already constrained to
// the current schema.
- $sql = "SELECT proacl AS acl FROM pg_catalog.pg_proc WHERE oid='{$object}'";
+ $sql = \sprintf(
+ 'SELECT proacl AS acl FROM pg_catalog.pg_proc WHERE oid=\'%s\'',
+ $object
+ );
break;
case 'language':
- $sql = "SELECT lanacl AS acl FROM pg_catalog.pg_language WHERE lanname='{$object}'";
+ $sql = \sprintf(
+ 'SELECT lanacl AS acl FROM pg_catalog.pg_language WHERE lanname=\'%s\'',
+ $object
+ );
break;
case 'schema':
- $sql = "SELECT nspacl AS acl FROM pg_catalog.pg_namespace WHERE nspname='{$object}'";
+ $sql = \sprintf(
+ 'SELECT nspacl AS acl FROM pg_catalog.pg_namespace WHERE nspname=\'%s\'',
+ $object
+ );
break;
case 'tablespace':
- $sql = "SELECT spcacl AS acl FROM pg_catalog.pg_tablespace WHERE spcname='{$object}'";
+ $sql = \sprintf(
+ 'SELECT spcacl AS acl FROM pg_catalog.pg_tablespace WHERE spcname=\'%s\'',
+ $object
+ );
break;
@@ -108,7 +134,7 @@ trait PrivilegesTrait
* @param bool $cascade True for cascade revoke, false otherwise
* @param string $table the column's table if type=column
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function setPrivileges(
$mode,
@@ -153,7 +179,10 @@ trait PrivilegesTrait
} else {
if ('column' === $type) {
$this->fieldClean($object);
- $sql .= ' ' . \implode(" (\"{$object}\"), ", $privileges);
+ $sql .= ' ' . \implode(\sprintf(
+ ' ("%s"), ',
+ $object
+ ), $privileges);
} else {
$sql .= ' ' . \implode(', ', $privileges);
}
@@ -161,41 +190,65 @@ trait PrivilegesTrait
switch ($type) {
case 'column':
- $sql .= " (\"{$object}\")";
+ $sql .= \sprintf(
+ ' ("%s")',
+ $object
+ );
$object = $table;
// no break
case 'table':
case 'view':
case 'sequence':
$this->fieldClean($object);
- $sql .= " ON \"{$f_schema}\".\"{$object}\"";
+ $sql .= \sprintf(
+ ' ON "%s"."%s"',
+ $f_schema,
+ $object
+ );
break;
case 'database':
$this->fieldClean($object);
- $sql .= " ON DATABASE \"{$object}\"";
+ $sql .= \sprintf(
+ ' ON DATABASE "%s"',
+ $object
+ );
break;
case 'function':
// Function comes in with $object as function OID
$fn = $this->getFunction($object);
$this->fieldClean($fn->fields['proname']);
- $sql .= " ON FUNCTION \"{$f_schema}\".\"{$fn->fields['proname']}\"({$fn->fields['proarguments']})";
+ $sql .= \sprintf(
+ ' ON FUNCTION "%s"."%s"(%s)',
+ $f_schema,
+ $fn->fields['proname'],
+ $fn->fields['proarguments']
+ );
break;
case 'language':
$this->fieldClean($object);
- $sql .= " ON LANGUAGE \"{$object}\"";
+ $sql .= \sprintf(
+ ' ON LANGUAGE "%s"',
+ $object
+ );
break;
case 'schema':
$this->fieldClean($object);
- $sql .= " ON SCHEMA \"{$object}\"";
+ $sql .= \sprintf(
+ ' ON SCHEMA "%s"',
+ $object
+ );
break;
case 'tablespace':
$this->fieldClean($object);
- $sql .= " ON TABLESPACE \"{$object}\"";
+ $sql .= \sprintf(
+ ' ON TABLESPACE "%s"',
+ $object
+ );
break;
@@ -214,19 +267,31 @@ trait PrivilegesTrait
// Dump users
foreach ($usernames as $v) {
if ($first) {
- $sql .= "\"{$v}\"";
+ $sql .= \sprintf(
+ '"%s"',
+ $v
+ );
$first = false;
} else {
- $sql .= ", \"{$v}\"";
+ $sql .= \sprintf(
+ ', "%s"',
+ $v
+ );
}
}
// Dump groups
foreach ($groupnames as $v) {
if ($first) {
- $sql .= "GROUP \"{$v}\"";
+ $sql .= \sprintf(
+ 'GROUP "%s"',
+ $v
+ );
$first = false;
} else {
- $sql .= ", GROUP \"{$v}\"";
+ $sql .= \sprintf(
+ ', GROUP "%s"',
+ $v
+ );
}
}
diff --git a/src/database/databasetraits/RoleTrait.php b/src/database/databasetraits/RoleTrait.php
index d3203c0a..c51243bb 100644
--- a/src/database/databasetraits/RoleTrait.php
+++ b/src/database/databasetraits/RoleTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use PHPPgAdmin\ADORecordSet;
+
/**
* Common trait for roles and users manipulation.
*/
@@ -16,7 +18,7 @@ trait RoleTrait
*
* @param string $rolename (optional) The role name to exclude from the select
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getRoles($rolename = '')
{
@@ -38,7 +40,10 @@ trait RoleTrait
';
if ($rolename) {
- $sql .= " WHERE r.rolname!='{$rolename}'";
+ $sql .= \sprintf(
+ ' WHERE r.rolname!=\'%s\'',
+ $rolename
+ );
}
$sql .= ' ORDER BY r.rolname';
@@ -51,13 +56,14 @@ trait RoleTrait
*
* @param string $rolename The name of the role to retrieve
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getRole($rolename)
{
$this->clean($rolename);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
r.rolname,
r1.rolname as group,
@@ -72,7 +78,9 @@ trait RoleTrait
FROM pg_catalog.pg_roles r
LEFT JOIN pg_catalog.pg_auth_members m ON (m.member = r.oid)
LEFT JOIN pg_roles r1 ON (m.roleid=r1.oid)
- WHERE r.rolname='{$rolename}'";
+ WHERE r.rolname=\'%s\'',
+ $rolename
+ );
return $this->selectSet($sql);
}
@@ -80,7 +88,7 @@ trait RoleTrait
/**
* Returns all users in the database cluster.
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getUsers()
{
@@ -102,13 +110,14 @@ trait RoleTrait
*
* @param string $username The username of the user to retrieve
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getUser($username)
{
$this->clean($username);
- $sql = "SELECT
+ $sql = \sprintf(
+ 'SELECT
r.usename,
r1.rolname as group,
r.usesuper,
@@ -117,7 +126,9 @@ trait RoleTrait
FROM pg_catalog.pg_user r
LEFT JOIN pg_catalog.pg_auth_members m ON (m.member = r.usesysid)
LEFT JOIN pg_roles r1 ON (m.roleid=r1.oid)
- WHERE r.usename='{$username}'";
+ WHERE r.usename=\'%s\'',
+ $username
+ );
return $this->selectSet($sql);
}
@@ -138,7 +149,7 @@ trait RoleTrait
* @param array $new_members_of_role (array) Roles which are automatically added as members of the new role
* @param array $new_admins_of_role (array) Roles which are automatically added as admin members of the new role
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function createRole(
$rolename,
@@ -163,10 +174,16 @@ trait RoleTrait
$this->fieldArrayClean($new_members_of_role);
$this->fieldArrayClean($new_admins_of_role);
- $sql = "CREATE ROLE \"{$rolename}\"";
+ $sql = \sprintf(
+ 'CREATE ROLE "%s"',
+ $rolename
+ );
if ('' !== $password) {
- $sql .= " WITH ENCRYPTED PASSWORD '{$enc}'";
+ $sql .= \sprintf(
+ ' WITH ENCRYPTED PASSWORD \'%s\'',
+ $enc
+ );
}
$sql .= $superuser ? ' SUPERUSER' : ' NOSUPERUSER';
@@ -176,13 +193,19 @@ trait RoleTrait
$sql .= $login ? ' LOGIN' : ' NOLOGIN';
if ('' !== $connlimit) {
- $sql .= " CONNECTION LIMIT {$connlimit}";
+ $sql .= \sprintf(
+ ' CONNECTION LIMIT %s',
+ $connlimit
+ );
} else {
$sql .= ' CONNECTION LIMIT -1';
}
if ('' !== $expiry) {
- $sql .= " VALID UNTIL '{$expiry}'";
+ $sql .= \sprintf(
+ ' VALID UNTIL \'%s\'',
+ $expiry
+ );
} else {
$sql .= " VALID UNTIL 'infinity'";
}
@@ -305,14 +328,18 @@ trait RoleTrait
* @param string $rolename The name of the role to rename
* @param string $newrolename The new name of the role
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function renameRole($rolename, $newrolename)
{
$this->fieldClean($rolename);
$this->fieldClean($newrolename);
- $sql = "ALTER ROLE \"{$rolename}\" RENAME TO \"{$newrolename}\"";
+ $sql = \sprintf(
+ 'ALTER ROLE "%s" RENAME TO "%s"',
+ $rolename,
+ $newrolename
+ );
return $this->execute($sql);
}
@@ -404,14 +431,18 @@ trait RoleTrait
* @param string $rolename The name of the role that will belong to the target role
* @param int $admin (optional) Flag to grant the admin option
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function grantRole($role, $rolename, $admin = 0)
{
$this->fieldClean($role);
$this->fieldClean($rolename);
- $sql = "GRANT \"{$role}\" TO \"{$rolename}\"";
+ $sql = \sprintf(
+ 'GRANT "%s" TO "%s"',
+ $role,
+ $rolename
+ );
if (1 === $admin) {
$sql .= ' WITH ADMIN OPTION';
@@ -428,7 +459,7 @@ trait RoleTrait
* @param int $admin (optional) Flag to revoke only the admin option
* @param string $type (optional) Type of revoke: RESTRICT | CASCADE
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function revokeRole($role, $rolename, $admin = 0, $type = 'RESTRICT')
{
@@ -441,7 +472,12 @@ trait RoleTrait
$sql .= 'ADMIN OPTION FOR ';
}
- $sql .= "\"{$role}\" FROM \"{$rolename}\" {$type}";
+ $sql .= \sprintf(
+ '"%s" FROM "%s" %s',
+ $role,
+ $rolename,
+ $type
+ );
return $this->execute($sql);
}
@@ -451,13 +487,16 @@ trait RoleTrait
*
* @param string $rolename The name of the role to drop
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropRole($rolename)
{
$this->fieldClean($rolename);
- $sql = "DROP ROLE \"{$rolename}\"";
+ $sql = \sprintf(
+ 'DROP ROLE "%s"',
+ $rolename
+ );
return $this->execute($sql);
}
@@ -472,7 +511,7 @@ trait RoleTrait
* @param string $expiry string Format 'YYYY-MM-DD HH:MM:SS'. '' means never expire
* @param array $groups The groups to create the user in
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*
* @internal param $group (array) The groups to create the user in
*/
@@ -484,10 +523,16 @@ trait RoleTrait
$this->clean($expiry);
$this->fieldArrayClean($groups);
- $sql = "CREATE USER \"{$username}\"";
+ $sql = \sprintf(
+ 'CREATE USER "%s"',
+ $username
+ );
if ('' !== $password) {
- $sql .= " WITH ENCRYPTED PASSWORD '{$enc}'";
+ $sql .= \sprintf(
+ ' WITH ENCRYPTED PASSWORD \'%s\'',
+ $enc
+ );
}
$sql .= $createdb ? ' CREATEDB' : ' NOCREATEDB';
@@ -498,7 +543,10 @@ trait RoleTrait
}
if ('' !== $expiry) {
- $sql .= " VALID UNTIL '{$expiry}'";
+ $sql .= \sprintf(
+ ' VALID UNTIL \'%s\'',
+ $expiry
+ );
} else {
$sql .= " VALID UNTIL 'infinity'";
}
@@ -554,14 +602,18 @@ trait RoleTrait
* @param string $username The username of the user to rename
* @param string $newname The new name of the user
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function renameUser($username, $newname)
{
$this->fieldClean($username);
$this->fieldClean($newname);
- $sql = "ALTER USER \"{$username}\" RENAME TO \"{$newname}\"";
+ $sql = \sprintf(
+ 'ALTER USER "%s" RENAME TO "%s"',
+ $username,
+ $newname
+ );
return $this->execute($sql);
}
@@ -577,7 +629,7 @@ trait RoleTrait
* @param bool $createuser boolean Whether or not the user can create other users
* @param string $expiry string Format 'YYYY-MM-DD HH:MM:SS'. '' means never expire.
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function setUser($username, $password, $createdb, $createuser, $expiry)
{
@@ -586,17 +638,26 @@ trait RoleTrait
$this->clean($enc);
$this->clean($expiry);
- $sql = "ALTER USER \"{$username}\"";
+ $sql = \sprintf(
+ 'ALTER USER "%s"',
+ $username
+ );
if ('' !== $password) {
- $sql .= " WITH ENCRYPTED PASSWORD '{$enc}'";
+ $sql .= \sprintf(
+ ' WITH ENCRYPTED PASSWORD \'%s\'',
+ $enc
+ );
}
$sql .= $createdb ? ' CREATEDB' : ' NOCREATEDB';
$sql .= $createuser ? ' CREATEUSER' : ' NOCREATEUSER';
if ('' !== $expiry) {
- $sql .= " VALID UNTIL '{$expiry}'";
+ $sql .= \sprintf(
+ ' VALID UNTIL \'%s\'',
+ $expiry
+ );
} else {
$sql .= " VALID UNTIL 'infinity'";
}
@@ -609,13 +670,16 @@ trait RoleTrait
*
* @param string $username The username of the user to drop
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropUser($username)
{
$this->fieldClean($username);
- $sql = "DROP USER \"{$username}\"";
+ $sql = \sprintf(
+ 'DROP USER "%s"',
+ $username
+ );
return $this->execute($sql);
}
@@ -626,7 +690,7 @@ trait RoleTrait
* @param string $rolename The role name
* @param string $password The new password
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function changePassword($rolename, $password)
{
@@ -634,7 +698,11 @@ trait RoleTrait
$this->fieldClean($rolename);
$this->clean($enc);
- $sql = "ALTER ROLE \"{$rolename}\" WITH ENCRYPTED PASSWORD '{$enc}'";
+ $sql = \sprintf(
+ 'ALTER ROLE "%s" WITH ENCRYPTED PASSWORD \'%s\'',
+ $rolename,
+ $enc
+ );
return $this->execute($sql);
}
@@ -645,14 +713,18 @@ trait RoleTrait
* @param string $groname The name of the group
* @param string $user The name of the user to add to the group
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function addGroupMember($groname, $user)
{
$this->fieldClean($groname);
$this->fieldClean($user);
- $sql = "ALTER GROUP \"{$groname}\" ADD USER \"{$user}\"";
+ $sql = \sprintf(
+ 'ALTER GROUP "%s" ADD USER "%s"',
+ $groname,
+ $user
+ );
return $this->execute($sql);
}
@@ -662,19 +734,22 @@ trait RoleTrait
*
* @param string $rolename The role name
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getMemberOf($rolename)
{
$this->clean($rolename);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT rolname FROM pg_catalog.pg_roles R, pg_auth_members M
WHERE R.oid=M.roleid
AND member IN (
SELECT oid FROM pg_catalog.pg_roles
- WHERE rolname='{$rolename}')
- ORDER BY rolname";
+ WHERE rolname=\'%s\')
+ ORDER BY rolname',
+ $rolename
+ );
return $this->selectSet($sql);
}
@@ -687,18 +762,22 @@ trait RoleTrait
* @param string $rolename The role name
* @param string $admin (optional) Find only admin members
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getMembers($rolename, $admin = 'f')
{
$this->clean($rolename);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT rolname FROM pg_catalog.pg_roles R, pg_auth_members M
- WHERE R.oid=M.member AND admin_option='{$admin}'
+ WHERE R.oid=M.member AND admin_option=\'%s\'
AND roleid IN (SELECT oid FROM pg_catalog.pg_roles
- WHERE rolname='{$rolename}')
- ORDER BY rolname";
+ WHERE rolname=\'%s\')
+ ORDER BY rolname',
+ $admin,
+ $rolename
+ );
return $this->selectSet($sql);
}
@@ -709,14 +788,18 @@ trait RoleTrait
* @param string $groname The name of the group
* @param string $user The name of the user to remove from the group
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropGroupMember($groname, $user)
{
$this->fieldClean($groname);
$this->fieldClean($user);
- $sql = "ALTER GROUP \"{$groname}\" DROP USER \"{$user}\"";
+ $sql = \sprintf(
+ 'ALTER GROUP "%s" DROP USER "%s"',
+ $groname,
+ $user
+ );
return $this->execute($sql);
}
@@ -726,16 +809,19 @@ trait RoleTrait
*
* @param string $groname The name of the group
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getGroup($groname)
{
$this->clean($groname);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT s.usename FROM pg_catalog.pg_user s, pg_catalog.pg_group g
- WHERE g.groname='{$groname}' AND s.usesysid = ANY (g.grolist)
- ORDER BY s.usename";
+ WHERE g.groname=\'%s\' AND s.usesysid = ANY (g.grolist)
+ ORDER BY s.usename',
+ $groname
+ );
return $this->selectSet($sql);
}
@@ -743,7 +829,7 @@ trait RoleTrait
/**
* Returns all groups in the database cluser.
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getGroups()
{
@@ -758,13 +844,16 @@ trait RoleTrait
* @param string $groname The name of the group
* @param array $users An array of users to add to the group
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function createGroup($groname, $users)
{
$this->fieldClean($groname);
- $sql = "CREATE GROUP \"{$groname}\"";
+ $sql = \sprintf(
+ 'CREATE GROUP "%s"',
+ $groname
+ );
if (\is_array($users) && 0 < \count($users)) {
$this->fieldArrayClean($users);
@@ -779,13 +868,16 @@ trait RoleTrait
*
* @param string $groname The name of the group to drop
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropGroup($groname)
{
$this->fieldClean($groname);
- $sql = "DROP GROUP \"{$groname}\"";
+ $sql = \sprintf(
+ 'DROP GROUP "%s"',
+ $groname
+ );
return $this->execute($sql);
}
@@ -906,10 +998,16 @@ trait RoleTrait
$this->clean($connlimit);
$this->clean($expiry);
- $sql = "ALTER ROLE \"{$rolename}\"";
+ $sql = \sprintf(
+ 'ALTER ROLE "%s"',
+ $rolename
+ );
if ('' !== $password) {
- $sql .= " WITH ENCRYPTED PASSWORD '{$enc}'";
+ $sql .= \sprintf(
+ ' WITH ENCRYPTED PASSWORD \'%s\'',
+ $enc
+ );
}
$sql .= $superuser ? ' SUPERUSER' : ' NOSUPERUSER';
@@ -919,13 +1017,19 @@ trait RoleTrait
$sql .= $login ? ' LOGIN' : ' NOLOGIN';
if ('' !== $connlimit) {
- $sql .= " CONNECTION LIMIT {$connlimit}";
+ $sql .= \sprintf(
+ ' CONNECTION LIMIT %s',
+ $connlimit
+ );
} else {
$sql .= ' CONNECTION LIMIT -1';
}
if ('' !== $expiry) {
- $sql .= " VALID UNTIL '{$expiry}'";
+ $sql .= \sprintf(
+ ' VALID UNTIL \'%s\'',
+ $expiry
+ );
} else {
$sql .= " VALID UNTIL 'infinity'";
}
diff --git a/src/database/databasetraits/RowTrait.php b/src/database/databasetraits/RowTrait.php
index 28532a79..fcbd0fed 100644
--- a/src/database/databasetraits/RowTrait.php
+++ b/src/database/databasetraits/RowTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use PHPPgAdmin\ADORecordSet;
+
/**
* Common trait for tables manipulation.
*/
@@ -17,7 +19,7 @@ trait RowTrait
* @param string $table The name of a table
* @param array $key The associative array holding the key to retrieve
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function browseRow($table, $key)
{
@@ -25,7 +27,11 @@ trait RowTrait
$this->fieldClean($f_schema);
$this->fieldClean($table);
- $sql = "SELECT * FROM \"{$f_schema}\".\"{$table}\"";
+ $sql = \sprintf(
+ 'SELECT * FROM "%s"."%s"',
+ $f_schema,
+ $table
+ );
if (\is_array($key) && 0 < \count($key)) {
$sql .= ' WHERE true';
@@ -33,7 +39,11 @@ trait RowTrait
foreach ($key as $k => $v) {
$this->fieldClean($k);
$this->clean($v);
- $sql .= " AND \"{$k}\"='{$v}'";
+ $sql .= \sprintf(
+ ' AND "%s"=\'%s\'',
+ $k,
+ $v
+ );
}
}
@@ -62,17 +72,21 @@ trait RowTrait
// Get the first primary or unique index (sorting primary keys first) that
// is NOT a partial index.
- $sql = "
+ $sql = \sprintf(
+ '
SELECT indrelid, indkey
FROM pg_catalog.pg_index
WHERE indisunique AND indrelid=(
SELECT oid FROM pg_catalog.pg_class
- WHERE relname='{$table}' AND relnamespace=(
+ WHERE relname=\'%s\' AND relnamespace=(
SELECT oid FROM pg_catalog.pg_namespace
- WHERE nspname='{$c_schema}'
+ WHERE nspname=\'%s\'
)
) AND indpred IS NULL AND indexprs IS NULL
- ORDER BY indisprimary DESC LIMIT 1";
+ ORDER BY indisprimary DESC LIMIT 1',
+ $table,
+ $c_schema
+ );
$rs = $this->selectSet($sql);
// If none, check for an OID column. Even though OIDs can be duplicated, the edit and delete row
@@ -112,7 +126,7 @@ trait RowTrait
* @param array $format An array of the data type (VALUE or EXPRESSION)
* @param array $types An array of field types
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function insertRow($table, $fields, $values, $nulls, $format, $types)
{
@@ -142,7 +156,11 @@ trait RowTrait
}
}
- $sql = "INSERT INTO \"{$f_schema}\".\"{$table}\" (\"" . \implode('","', $fields) . '")
+ $sql = \sprintf(
+ 'INSERT INTO "%s"."%s" ("',
+ $f_schema,
+ $table
+ ) . \implode('","', $fields) . '")
VALUES (' . \mb_substr($sql, 1) . ')';
return $this->execute($sql);
@@ -203,13 +221,19 @@ trait RowTrait
}
$this->clean($value);
- return "'{$value}'";
+ return \sprintf(
+ '\'%s\'',
+ $value
+ );
}
if ('VALUE' === $format) {
$this->clean($value);
- return "'{$value}'";
+ return \sprintf(
+ '\'%s\'',
+ $value
+ );
}
return $value;
@@ -253,9 +277,19 @@ trait RowTrait
}
if (0 < \mb_strlen($sql)) {
- $sql .= ", \"{$key}\"={$tmp}";
+ $sql .= \sprintf(
+ ', "%s"=%s',
+ $key,
+ $tmp
+ );
} else {
- $sql = "UPDATE \"{$f_schema}\".\"{$table}\" SET \"{$key}\"={$tmp}";
+ $sql = \sprintf(
+ 'UPDATE "%s"."%s" SET "%s"=%s',
+ $f_schema,
+ $table,
+ $key,
+ $tmp
+ );
}
}
$first = true;
@@ -265,10 +299,18 @@ trait RowTrait
$this->clean($v);
if ($first) {
- $sql .= " WHERE \"{$k}\"='{$v}'";
+ $sql .= \sprintf(
+ ' WHERE "%s"=\'%s\'',
+ $k,
+ $v
+ );
$first = false;
} else {
- $sql .= " AND \"{$k}\"='{$v}'";
+ $sql .= \sprintf(
+ ' AND "%s"=\'%s\'',
+ $k,
+ $v
+ );
}
}
}
diff --git a/src/database/databasetraits/SchemaTrait.php b/src/database/databasetraits/SchemaTrait.php
index 7d48dc57..b22eb6b8 100644
--- a/src/database/databasetraits/SchemaTrait.php
+++ b/src/database/databasetraits/SchemaTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use PHPPgAdmin\ADORecordSet;
+
/**
* Common trait for tables manipulation.
*/
@@ -16,7 +18,7 @@ trait SchemaTrait
/**
* Return all schemas in the current database.
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getSchemas()
{
@@ -43,12 +45,15 @@ trait SchemaTrait
$sql .= " 'N/A' as schema_size ";
}
- $sql .= " FROM pg_catalog.pg_namespace pn
+ $sql .= \sprintf(
+ ' FROM pg_catalog.pg_namespace pn
LEFT JOIN pg_catalog.pg_class ON relnamespace = pn.oid
LEFT JOIN pg_catalog.pg_roles pu ON (pn.nspowner = pu.oid)
- {$where}
- GROUP BY pn.nspname, pu.rolname, pg_catalog.obj_description(pn.oid, 'pg_namespace')
- ORDER BY nspname";
+ %s
+ GROUP BY pn.nspname, pu.rolname, pg_catalog.obj_description(pn.oid, \'pg_namespace\')
+ ORDER BY nspname',
+ $where
+ );
return $this->selectSet($sql);
}
@@ -99,7 +104,7 @@ trait SchemaTrait
*
* @param mixed $paths An array of schemas in required search order
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function setSearchPath($paths)
{
@@ -145,10 +150,16 @@ trait SchemaTrait
$this->fieldClean($schemaname);
$this->fieldClean($authorization);
- $sql = "CREATE SCHEMA \"{$schemaname}\"";
+ $sql = \sprintf(
+ 'CREATE SCHEMA "%s"',
+ $schemaname
+ );
if ('' !== $authorization) {
- $sql .= " AUTHORIZATION \"{$authorization}\"";
+ $sql .= \sprintf(
+ ' AUTHORIZATION "%s"',
+ $authorization
+ );
}
if ('' !== $comment) {
@@ -219,7 +230,11 @@ trait SchemaTrait
$schema_rs = $this->getSchemaByName($schemaname);
/* Only if the owner change */
if ($schema_rs->fields['ownername'] !== $owner) {
- $sql = "ALTER SCHEMA \"{$schemaname}\" OWNER TO \"{$owner}\"";
+ $sql = \sprintf(
+ 'ALTER SCHEMA "%s" OWNER TO "%s"',
+ $schemaname,
+ $owner
+ );
$status = $this->execute($sql);
if (0 !== $status) {
@@ -231,7 +246,11 @@ trait SchemaTrait
// Only if the name has changed
if ($name !== $schemaname) {
- $sql = "ALTER SCHEMA \"{$schemaname}\" RENAME TO \"{$name}\"";
+ $sql = \sprintf(
+ 'ALTER SCHEMA "%s" RENAME TO "%s"',
+ $schemaname,
+ $name
+ );
$status = $this->execute($sql);
if (0 !== $status) {
@@ -249,17 +268,20 @@ trait SchemaTrait
*
* @param string $schema The name of the schema
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getSchemaByName($schema)
{
$this->clean($schema);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT nspname, nspowner, r.rolname AS ownername, nspacl,
- pg_catalog.obj_description(pn.oid, 'pg_namespace') as nspcomment
+ pg_catalog.obj_description(pn.oid, \'pg_namespace\') as nspcomment
FROM pg_catalog.pg_namespace pn
LEFT JOIN pg_roles as r ON pn.nspowner = r.oid
- WHERE nspname='{$schema}'";
+ WHERE nspname=\'%s\'',
+ $schema
+ );
return $this->selectSet($sql);
}
@@ -272,13 +294,16 @@ trait SchemaTrait
* @param string $schemaname The name of the schema to drop
* @param bool $cascade True to cascade drop, false to restrict
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropSchema($schemaname, $cascade)
{
$this->fieldClean($schemaname);
- $sql = "DROP SCHEMA \"{$schemaname}\"";
+ $sql = \sprintf(
+ 'DROP SCHEMA "%s"',
+ $schemaname
+ );
if ($cascade) {
$sql .= ' CASCADE';
diff --git a/src/database/databasetraits/SequenceTrait.php b/src/database/databasetraits/SequenceTrait.php
index 14ceaeb6..47415d48 100644
--- a/src/database/databasetraits/SequenceTrait.php
+++ b/src/database/databasetraits/SequenceTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use ADORecordSet;
+
/**
* Common trait for sequence manipulation.
*/
@@ -16,7 +18,7 @@ trait SequenceTrait
*
* @param bool $all true to get all sequences of all schemas
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function getSequences($all = false)
{
@@ -31,11 +33,14 @@ trait SequenceTrait
} else {
$c_schema = $this->_schema;
$this->clean($c_schema);
- $sql = "SELECT c.relname AS seqname, u.usename AS seqowner, pg_catalog.obj_description(c.oid, 'pg_class') AS seqcomment,
+ $sql = \sprintf(
+ 'SELECT c.relname AS seqname, u.usename AS seqowner, pg_catalog.obj_description(c.oid, \'pg_class\') AS seqcomment,
(SELECT spcname FROM pg_catalog.pg_tablespace pt WHERE pt.oid=c.reltablespace) AS tablespace
FROM pg_catalog.pg_class c, pg_catalog.pg_user u, pg_catalog.pg_namespace n
WHERE c.relowner=u.usesysid AND c.relnamespace=n.oid
- AND c.relkind = 'S' AND n.nspname='{$c_schema}' ORDER BY seqname";
+ AND c.relkind = \'S\' AND n.nspname=\'%s\' ORDER BY seqname',
+ $c_schema
+ );
}
return $this->selectSet($sql);
@@ -46,7 +51,7 @@ trait SequenceTrait
*
* @param string $sequence Sequence name
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function nextvalSequence($sequence)
{
@@ -57,7 +62,11 @@ trait SequenceTrait
$this->fieldClean($sequence);
$this->clean($sequence);
- $sql = "SELECT pg_catalog.NEXTVAL('\"{$f_schema}\".\"{$sequence}\"')";
+ $sql = \sprintf(
+ 'SELECT pg_catalog.NEXTVAL(\'"%s"."%s"\')',
+ $f_schema,
+ $sequence
+ );
return $this->execute($sql);
}
@@ -68,7 +77,7 @@ trait SequenceTrait
* @param string $sequence Sequence name
* @param int $nextvalue The next value
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function setvalSequence($sequence, $nextvalue)
{
@@ -80,7 +89,12 @@ trait SequenceTrait
$this->clean($sequence);
$this->clean($nextvalue);
- $sql = "SELECT pg_catalog.SETVAL('\"{$f_schema}\".\"{$sequence}\"', '{$nextvalue}')";
+ $sql = \sprintf(
+ 'SELECT pg_catalog.SETVAL(\'"%s"."%s"\', \'%s\')',
+ $f_schema,
+ $sequence,
+ $nextvalue
+ );
return $this->execute($sql);
}
@@ -90,7 +104,7 @@ trait SequenceTrait
*
* @param string $sequence Sequence name
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function restartSequence($sequence)
{
@@ -98,7 +112,11 @@ trait SequenceTrait
$this->fieldClean($f_schema);
$this->fieldClean($sequence);
- $sql = "ALTER SEQUENCE \"{$f_schema}\".\"{$sequence}\" RESTART;";
+ $sql = \sprintf(
+ 'ALTER SEQUENCE "%s"."%s" RESTART;',
+ $f_schema,
+ $sequence
+ );
return $this->execute($sql);
}
@@ -108,7 +126,7 @@ trait SequenceTrait
*
* @param string $sequence Sequence name
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function resetSequence($sequence)
{
@@ -127,7 +145,12 @@ trait SequenceTrait
$this->fieldClean($sequence);
$this->clean($sequence);
- $sql = "SELECT pg_catalog.SETVAL('\"{$f_schema}\".\"{$sequence}\"', {$minvalue})";
+ $sql = \sprintf(
+ 'SELECT pg_catalog.SETVAL(\'"%s"."%s"\', %s)',
+ $f_schema,
+ $sequence,
+ $minvalue
+ );
return $this->execute($sql);
}
@@ -137,7 +160,7 @@ trait SequenceTrait
*
* @param string $sequence Sequence name
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function getSequence($sequence)
{
@@ -147,14 +170,19 @@ trait SequenceTrait
$this->fieldClean($sequence);
$this->clean($c_sequence);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT c.relname AS seqname, s.*,
- pg_catalog.obj_description(s.tableoid, 'pg_class') AS seqcomment,
+ pg_catalog.obj_description(s.tableoid, \'pg_class\') AS seqcomment,
u.usename AS seqowner, n.nspname
- FROM \"{$sequence}\" AS s, pg_catalog.pg_class c, pg_catalog.pg_user u, pg_catalog.pg_namespace n
+ FROM "%s" AS s, pg_catalog.pg_class c, pg_catalog.pg_user u, pg_catalog.pg_namespace n
WHERE c.relowner=u.usesysid AND c.relnamespace=n.oid
- AND c.relname = '{$c_sequence}' AND c.relkind = 'S' AND n.nspname='{$c_schema}'
- AND n.oid = c.relnamespace";
+ AND c.relname = \'%s\' AND c.relkind = \'S\' AND n.nspname=\'%s\'
+ AND n.oid = c.relnamespace',
+ $sequence,
+ $c_sequence,
+ $c_schema
+ );
return $this->selectSet($sql);
}
@@ -170,7 +198,7 @@ trait SequenceTrait
* @param int $cachevalue The cache value
* @param bool $cycledvalue True if cycled, false otherwise
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function createSequence(
$sequence,
@@ -190,26 +218,45 @@ trait SequenceTrait
$this->clean($startvalue);
$this->clean($cachevalue);
- $sql = "CREATE SEQUENCE \"{$f_schema}\".\"{$sequence}\"";
+ $sql = \sprintf(
+ 'CREATE SEQUENCE "%s"."%s"',
+ $f_schema,
+ $sequence
+ );
if ('' !== $increment) {
- $sql .= " INCREMENT {$increment}";
+ $sql .= \sprintf(
+ ' INCREMENT %s',
+ $increment
+ );
}
if ('' !== $minvalue) {
- $sql .= " MINVALUE {$minvalue}";
+ $sql .= \sprintf(
+ ' MINVALUE %s',
+ $minvalue
+ );
}
if ('' !== $maxvalue) {
- $sql .= " MAXVALUE {$maxvalue}";
+ $sql .= \sprintf(
+ ' MAXVALUE %s',
+ $maxvalue
+ );
}
if ('' !== $startvalue) {
- $sql .= " START {$startvalue}";
+ $sql .= \sprintf(
+ ' START %s',
+ $startvalue
+ );
}
if ('' !== $cachevalue) {
- $sql .= " CACHE {$cachevalue}";
+ $sql .= \sprintf(
+ ' CACHE %s',
+ $cachevalue
+ );
}
if ($cycledvalue) {
@@ -296,10 +343,10 @@ trait SequenceTrait
/**
* Alter a sequence's owner.
*
- * @param \ADORecordSet $seqrs The sequence RecordSet returned by getSequence()
- * @param string $owner the new owner of the sequence
+ * @param ADORecordSet $seqrs The sequence RecordSet returned by getSequence()
+ * @param string $owner the new owner of the sequence
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*
* @internal string $name new owner for the sequence
*/
@@ -312,7 +359,12 @@ trait SequenceTrait
if (!empty($owner) && ($seqrs->fields['seqowner'] !== $owner)) {
$f_schema = $this->_schema;
$this->fieldClean($f_schema);
- $sql = "ALTER SEQUENCE \"{$f_schema}\".\"{$seqrs->fields['seqname']}\" OWNER TO \"{$owner}\"";
+ $sql = \sprintf(
+ 'ALTER SEQUENCE "%s"."%s" OWNER TO "%s"',
+ $f_schema,
+ $seqrs->fields['seqname'],
+ $owner
+ );
return $this->execute($sql);
}
@@ -323,16 +375,16 @@ trait SequenceTrait
/**
* Alter a sequence's properties.
*
- * @param \ADORecordSet $seqrs The sequence RecordSet returned by getSequence()
- * @param int $increment The sequence incremental value
- * @param int $minvalue The sequence minimum value
- * @param int $maxvalue The sequence maximum value
- * @param int $restartvalue The sequence current value
- * @param int $cachevalue The sequence cache value
- * @param null|bool $cycledvalue Sequence can cycle ?
- * @param int $startvalue The sequence start value when issueing a restart
+ * @param ADORecordSet $seqrs The sequence RecordSet returned by getSequence()
+ * @param int $increment The sequence incremental value
+ * @param int $minvalue The sequence minimum value
+ * @param int $maxvalue The sequence maximum value
+ * @param int $restartvalue The sequence current value
+ * @param int $cachevalue The sequence cache value
+ * @param null|bool $cycledvalue Sequence can cycle ?
+ * @param int $startvalue The sequence start value when issueing a restart
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function alterSequenceProps(
$seqrs,
@@ -347,27 +399,45 @@ trait SequenceTrait
$sql = '';
/* vars are cleaned in _alterSequence */
if (!empty($increment) && ($increment !== $seqrs->fields['increment_by'])) {
- $sql .= " INCREMENT {$increment}";
+ $sql .= \sprintf(
+ ' INCREMENT %s',
+ $increment
+ );
}
if (!empty($minvalue) && ($minvalue !== $seqrs->fields['min_value'])) {
- $sql .= " MINVALUE {$minvalue}";
+ $sql .= \sprintf(
+ ' MINVALUE %s',
+ $minvalue
+ );
}
if (!empty($maxvalue) && ($maxvalue !== $seqrs->fields['max_value'])) {
- $sql .= " MAXVALUE {$maxvalue}";
+ $sql .= \sprintf(
+ ' MAXVALUE %s',
+ $maxvalue
+ );
}
if (!empty($restartvalue) && ($restartvalue !== $seqrs->fields['last_value'])) {
- $sql .= " RESTART {$restartvalue}";
+ $sql .= \sprintf(
+ ' RESTART %s',
+ $restartvalue
+ );
}
if (!empty($cachevalue) && ($cachevalue !== $seqrs->fields['cache_value'])) {
- $sql .= " CACHE {$cachevalue}";
+ $sql .= \sprintf(
+ ' CACHE %s',
+ $cachevalue
+ );
}
if (!empty($startvalue) && ($startvalue !== $seqrs->fields['start_value'])) {
- $sql .= " START {$startvalue}";
+ $sql .= \sprintf(
+ ' START %s',
+ $startvalue
+ );
}
// toggle cycle yes/no
@@ -378,7 +448,12 @@ trait SequenceTrait
if ('' !== $sql) {
$f_schema = $this->_schema;
$this->fieldClean($f_schema);
- $sql = "ALTER SEQUENCE \"{$f_schema}\".\"{$seqrs->fields['seqname']}\" {$sql}";
+ $sql = \sprintf(
+ 'ALTER SEQUENCE "%s"."%s" %s',
+ $f_schema,
+ $seqrs->fields['seqname'],
+ $sql
+ );
return $this->execute($sql);
}
@@ -389,10 +464,10 @@ trait SequenceTrait
/**
* Rename a sequence.
*
- * @param \ADORecordSet $seqrs The sequence RecordSet returned by getSequence()
- * @param string $name The new name for the sequence
+ * @param ADORecordSet $seqrs The sequence RecordSet returned by getSequence()
+ * @param string $name The new name for the sequence
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function alterSequenceName($seqrs, $name)
{
@@ -400,7 +475,12 @@ trait SequenceTrait
if (!empty($name) && ($seqrs->fields['seqname'] !== $name)) {
$f_schema = $this->_schema;
$this->fieldClean($f_schema);
- $sql = "ALTER SEQUENCE \"{$f_schema}\".\"{$seqrs->fields['seqname']}\" RENAME TO \"{$name}\"";
+ $sql = \sprintf(
+ 'ALTER SEQUENCE "%s"."%s" RENAME TO "%s"',
+ $f_schema,
+ $seqrs->fields['seqname'],
+ $name
+ );
$status = $this->execute($sql);
if (0 === $status) {
@@ -416,10 +496,10 @@ trait SequenceTrait
/**
* Alter a sequence's schema.
*
- * @param \ADORecordSet $seqrs The sequence RecordSet returned by getSequence()
- * @param string $schema
+ * @param ADORecordSet $seqrs The sequence RecordSet returned by getSequence()
+ * @param string $schema
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*
* @internal param The $name new schema for the sequence
*/
@@ -429,7 +509,12 @@ trait SequenceTrait
if (!empty($schema) && ($seqrs->fields['nspname'] !== $schema)) {
$f_schema = $this->_schema;
$this->fieldClean($f_schema);
- $sql = "ALTER SEQUENCE \"{$f_schema}\".\"{$seqrs->fields['seqname']}\" SET SCHEMA {$schema}";
+ $sql = \sprintf(
+ 'ALTER SEQUENCE "%s"."%s" SET SCHEMA %s',
+ $f_schema,
+ $seqrs->fields['seqname'],
+ $schema
+ );
return $this->execute($sql);
}
@@ -443,7 +528,7 @@ trait SequenceTrait
* @param string $sequence Sequence name
* @param bool $cascade True to cascade drop, false to restrict
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function dropSequence($sequence, $cascade = false)
{
@@ -451,7 +536,11 @@ trait SequenceTrait
$this->fieldClean($f_schema);
$this->fieldClean($sequence);
- $sql = "DROP SEQUENCE \"{$f_schema}\".\"{$sequence}\"";
+ $sql = \sprintf(
+ 'DROP SEQUENCE "%s"."%s"',
+ $f_schema,
+ $sequence
+ );
if ($cascade) {
$sql .= ' CASCADE';
@@ -482,18 +571,18 @@ trait SequenceTrait
* Protected method which alter a sequence
* SHOULDN'T BE CALLED OUTSIDE OF A TRANSACTION.
*
- * @param \ADORecordSet $seqrs The sequence recordSet returned by getSequence()
- * @param string $name The new name for the sequence
- * @param string $comment The comment on the sequence
- * @param string $owner The new owner for the sequence
- * @param string $schema The new schema for the sequence
- * @param int $increment The increment
- * @param int $minvalue The min value
- * @param int $maxvalue The max value
- * @param int $restartvalue The starting value
- * @param int $cachevalue The cache value
- * @param null|bool $cycledvalue True if cycled, false otherwise
- * @param int $startvalue The sequence start value when issueing a restart
+ * @param ADORecordSet $seqrs The sequence recordSet returned by getSequence()
+ * @param string $name The new name for the sequence
+ * @param string $comment The comment on the sequence
+ * @param string $owner The new owner for the sequence
+ * @param string $schema The new schema for the sequence
+ * @param int $increment The increment
+ * @param int $minvalue The min value
+ * @param int $maxvalue The max value
+ * @param int $restartvalue The starting value
+ * @param int $cachevalue The cache value
+ * @param null|bool $cycledvalue True if cycled, false otherwise
+ * @param int $startvalue The sequence start value when issueing a restart
*
* @return int 0 success
*/
diff --git a/src/database/databasetraits/StatsTrait.php b/src/database/databasetraits/StatsTrait.php
index 85fcab7a..a9228c6a 100644
--- a/src/database/databasetraits/StatsTrait.php
+++ b/src/database/databasetraits/StatsTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use PHPPgAdmin\ADORecordSet;
+
/**
* Common trait to retrieve stats on database objects.
*/
@@ -16,13 +18,16 @@ trait StatsTrait
*
* @param string $database The database to fetch stats for
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getStatsDatabase($database)
{
$this->clean($database);
- $sql = "SELECT * FROM pg_stat_database WHERE datname='{$database}'";
+ $sql = \sprintf(
+ 'SELECT * FROM pg_stat_database WHERE datname=\'%s\'',
+ $database
+ );
return $this->selectSet($sql);
}
@@ -32,7 +37,7 @@ trait StatsTrait
*
* @param string $table The table to fetch stats for
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getStatsTableTuples($table)
{
@@ -40,8 +45,12 @@ trait StatsTrait
$this->clean($c_schema);
$this->clean($table);
- $sql = "SELECT * FROM pg_stat_all_tables
- WHERE schemaname='{$c_schema}' AND relname='{$table}'";
+ $sql = \sprintf(
+ 'SELECT * FROM pg_stat_all_tables
+ WHERE schemaname=\'%s\' AND relname=\'%s\'',
+ $c_schema,
+ $table
+ );
return $this->selectSet($sql);
}
@@ -51,7 +60,7 @@ trait StatsTrait
*
* @param string $table The table to fetch stats for
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getStatsTableIO($table)
{
@@ -59,8 +68,12 @@ trait StatsTrait
$this->clean($c_schema);
$this->clean($table);
- $sql = "SELECT * FROM pg_statio_all_tables
- WHERE schemaname='{$c_schema}' AND relname='{$table}'";
+ $sql = \sprintf(
+ 'SELECT * FROM pg_statio_all_tables
+ WHERE schemaname=\'%s\' AND relname=\'%s\'',
+ $c_schema,
+ $table
+ );
return $this->selectSet($sql);
}
@@ -70,7 +83,7 @@ trait StatsTrait
*
* @param string $table The table to fetch index stats for
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getStatsIndexTuples($table)
{
@@ -78,8 +91,12 @@ trait StatsTrait
$this->clean($c_schema);
$this->clean($table);
- $sql = "SELECT * FROM pg_stat_all_indexes
- WHERE schemaname='{$c_schema}' AND relname='{$table}' ORDER BY indexrelname";
+ $sql = \sprintf(
+ 'SELECT * FROM pg_stat_all_indexes
+ WHERE schemaname=\'%s\' AND relname=\'%s\' ORDER BY indexrelname',
+ $c_schema,
+ $table
+ );
return $this->selectSet($sql);
}
@@ -89,7 +106,7 @@ trait StatsTrait
*
* @param string $table The table to fetch index stats for
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getStatsIndexIO($table)
{
@@ -97,9 +114,13 @@ trait StatsTrait
$this->clean($c_schema);
$this->clean($table);
- $sql = "SELECT * FROM pg_statio_all_indexes
- WHERE schemaname='{$c_schema}' AND relname='{$table}'
- ORDER BY indexrelname";
+ $sql = \sprintf(
+ 'SELECT * FROM pg_statio_all_indexes
+ WHERE schemaname=\'%s\' AND relname=\'%s\'
+ ORDER BY indexrelname',
+ $c_schema,
+ $table
+ );
return $this->selectSet($sql);
}
diff --git a/src/database/databasetraits/TableTrait.php b/src/database/databasetraits/TableTrait.php
index 386fce33..efb7e01d 100644
--- a/src/database/databasetraits/TableTrait.php
+++ b/src/database/databasetraits/TableTrait.php
@@ -6,19 +6,22 @@
namespace PHPPgAdmin\Database\Traits;
+use PHPPgAdmin\ADORecordSet;
+use PHPPgAdmin\ArrayRecordSet;
+
/**
* Common trait for tables manipulation.
*/
trait TableTrait
{
- use \PHPPgAdmin\Database\Traits\ColumnTrait;
- use \PHPPgAdmin\Database\Traits\RowTrait;
- use \PHPPgAdmin\Database\Traits\TriggerTrait;
+ use ColumnTrait;
+ use RowTrait;
+ use TriggerTrait;
/**
* Return all tables in current database excluding schemas 'pg_catalog', 'information_schema' and 'pg_toast'.
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getAllTables()
{
@@ -36,7 +39,7 @@ trait TableTrait
/**
* Return all tables in current database (and schema).
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getTables()
{
@@ -60,12 +63,15 @@ trait TableTrait
$sql .= " 'N/A' as table_size ";
}
- $sql .= " FROM pg_catalog.pg_class c
+ $sql .= \sprintf(
+ ' FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
LEFT JOIN pg_catalog.pg_tablespace pt ON pt.oid=c.reltablespace
- WHERE c.relkind = 'r'
- AND nspname='{$c_schema}'
- ORDER BY c.relname";
+ WHERE c.relkind = \'r\'
+ AND nspname=\'%s\'
+ ORDER BY c.relname',
+ $c_schema
+ );
return $this->selectSet($sql);
}
@@ -75,7 +81,7 @@ trait TableTrait
*
* @param string $table The table to find the parents for
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getTableParents($table)
{
@@ -83,7 +89,8 @@ trait TableTrait
$this->clean($c_schema);
$this->clean($table);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
pn.nspname, relname
FROM
@@ -91,11 +98,14 @@ trait TableTrait
WHERE
pc.oid=pi.inhparent
AND pc.relnamespace=pn.oid
- AND pi.inhrelid = (SELECT oid from pg_catalog.pg_class WHERE relname='{$table}'
- AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = '{$c_schema}'))
+ AND pi.inhrelid = (SELECT oid from pg_catalog.pg_class WHERE relname=\'%s\'
+ AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = \'%s\'))
ORDER BY
pi.inhseqno
- ";
+ ',
+ $table,
+ $c_schema
+ );
return $this->selectSet($sql);
}
@@ -105,7 +115,7 @@ trait TableTrait
*
* @param string $table The table to find the children for
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getTableChildren($table)
{
@@ -113,7 +123,8 @@ trait TableTrait
$this->clean($c_schema);
$this->clean($table);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
pn.nspname, relname
FROM
@@ -121,9 +132,12 @@ trait TableTrait
WHERE
pc.oid=pi.inhrelid
AND pc.relnamespace=pn.oid
- AND pi.inhparent = (SELECT oid from pg_catalog.pg_class WHERE relname='{$table}'
- AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = '{$c_schema}'))
- ";
+ AND pi.inhparent = (SELECT oid from pg_catalog.pg_class WHERE relname=\'%s\'
+ AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = \'%s\'))
+ ',
+ $table,
+ $c_schema
+ );
return $this->selectSet($sql);
}
@@ -207,7 +221,13 @@ trait TableTrait
if (null !== $t->fields['relcomment']) {
$this->clean($t->fields['relcomment']);
$sql .= "\n-- Comment\n\n";
- $sql .= "COMMENT ON TABLE \"{$t->fields['nspname']}\".\"{$t->fields['relname']}\" IS '{$t->fields['relcomment']}';\n";
+ $sql .= \sprintf(
+ 'COMMENT ON TABLE "%s"."%s" IS \'%s\';
+',
+ $t->fields['nspname'],
+ $t->fields['relname'],
+ $t->fields['relcomment']
+ );
}
// Add comments on columns, if any
@@ -242,7 +262,7 @@ trait TableTrait
*
* @param string $table The name of the table
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getTable($table)
{
@@ -263,10 +283,14 @@ trait TableTrait
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace ";
$sql .= ($this->hasRoles() ? ' LEFT JOIN pg_catalog.pg_roles r ON c.relowner = r.oid ' : '') .
- " WHERE c.relkind = 'r'
- AND n.nspname = '{$c_schema}'
+ \sprintf(
+ ' WHERE c.relkind = \'r\'
+ AND n.nspname = \'%s\'
AND n.oid = c.relnamespace
- AND c.relname = '{$table}'";
+ AND c.relname = \'%s\'',
+ $c_schema,
+ $table
+ );
return $this->selectSet($sql);
}
@@ -277,7 +301,7 @@ trait TableTrait
* @param string $table The name of the table
* @param string $field (optional) The name of a field to return
*
- * @return \PHPPgAdmin\ADORecordSet All attributes in order
+ * @return ADORecordSet All attributes in order
*/
public function getTableAttributes($table, $field = '')
{
@@ -301,7 +325,7 @@ trait TableTrait
*
* @param string $table The table to find rules for
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getConstraints($table)
{
@@ -311,11 +335,12 @@ trait TableTrait
// This SQL is greatly complicated by the need to retrieve
// index clustering information for primary and unique constraints
- $sql = "SELECT
+ $sql = \sprintf(
+ 'SELECT
pc.conname,
pg_catalog.pg_get_constraintdef(pc.oid, true) AS consrc,
pc.contype,
- CASE WHEN pc.contype='u' OR pc.contype='p' THEN (
+ CASE WHEN pc.contype=\'u\' OR pc.contype=\'p\' THEN (
SELECT
indisclustered
FROM
@@ -333,12 +358,15 @@ trait TableTrait
FROM
pg_catalog.pg_constraint pc
WHERE
- pc.conrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}'
+ pc.conrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname=\'%s\'
AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace
- WHERE nspname='{$c_schema}'))
+ WHERE nspname=\'%s\'))
ORDER BY
1
- ";
+ ',
+ $table,
+ $c_schema
+ );
return $this->selectSet($sql);
}
@@ -356,8 +384,12 @@ trait TableTrait
$this->clean($c_schema);
$this->clean($table);
- $sql = "SELECT relhasoids FROM pg_catalog.pg_class WHERE relname='{$table}'
- AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname='{$c_schema}')";
+ $sql = \sprintf(
+ 'SELECT relhasoids FROM pg_catalog.pg_class WHERE relname=\'%s\'
+ AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname=\'%s\')',
+ $table,
+ $c_schema
+ );
$rs = $this->selectSet($sql);
@@ -447,19 +479,22 @@ trait TableTrait
* @param string $table The name of a table whose indexes to retrieve
* @param bool $unique Only get unique/pk indexes
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getIndexes($table = '', $unique = false)
{
$this->clean($table);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT c2.relname AS indname, i.indisprimary, i.indisunique, i.indisclustered,
pg_catalog.pg_get_indexdef(i.indexrelid, 0, true) AS inddef
FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i
- WHERE c.relname = '{$table}' AND pg_catalog.pg_table_is_visible(c.oid)
+ WHERE c.relname = \'%s\' AND pg_catalog.pg_table_is_visible(c.oid)
AND c.oid = i.indrelid AND i.indexrelid = c2.oid
- ";
+ ',
+ $table
+ );
if ($unique) {
$sql .= ' AND i.indisunique ';
@@ -475,7 +510,7 @@ trait TableTrait
*
* @param string $table The name of a table whose triggers to retrieve
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getTriggers($table = '')
{
@@ -483,20 +518,24 @@ trait TableTrait
$this->clean($c_schema);
$this->clean($table);
- $sql = "SELECT
+ $sql = \sprintf(
+ 'SELECT
t.tgname, pg_catalog.pg_get_triggerdef(t.oid) AS tgdef,
- CASE WHEN t.tgenabled = 'D' THEN FALSE ELSE TRUE END AS tgenabled, p.oid AS prooid,
- p.proname || ' (' || pg_catalog.oidvectortypes(p.proargtypes) || ')' AS proproto,
+ CASE WHEN t.tgenabled = \'D\' THEN FALSE ELSE TRUE END AS tgenabled, p.oid AS prooid,
+ p.proname || \' (\' || pg_catalog.oidvectortypes(p.proargtypes) || \')\' AS proproto,
ns.nspname AS pronamespace
FROM pg_catalog.pg_trigger t, pg_catalog.pg_proc p, pg_catalog.pg_namespace ns
- WHERE t.tgrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}'
- AND relnamespace=(SELECT oid FROM pg_catalog.pg_namespace WHERE nspname='{$c_schema}'))
+ WHERE t.tgrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname=\'%s\'
+ AND relnamespace=(SELECT oid FROM pg_catalog.pg_namespace WHERE nspname=\'%s\'))
AND ( tgconstraint = 0 OR NOT EXISTS
(SELECT 1 FROM pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c
ON (d.refclassid = c.tableoid AND d.refobjid = c.oid)
- WHERE d.classid = t.tableoid AND d.objid = t.oid AND d.deptype = 'i' AND c.contype = 'f'))
+ WHERE d.classid = t.tableoid AND d.objid = t.oid AND d.deptype = \'i\' AND c.contype = \'f\'))
AND p.oid=t.tgfoid
- AND p.pronamespace = ns.oid";
+ AND p.pronamespace = ns.oid',
+ $table,
+ $c_schema
+ );
return $this->selectSet($sql);
}
@@ -506,7 +545,7 @@ trait TableTrait
*
* @param string $table The table to find rules for
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getRules($table)
{
@@ -514,13 +553,17 @@ trait TableTrait
$this->clean($c_schema);
$this->clean($table);
- $sql = "
+ $sql = \sprintf(
+ '
SELECT *
FROM pg_catalog.pg_rules
WHERE
- schemaname='{$c_schema}' AND tablename='{$table}'
+ schemaname=\'%s\' AND tablename=\'%s\'
ORDER BY rulename
- ";
+ ',
+ $c_schema,
+ $table
+ );
return $this->selectSet($sql);
}
@@ -574,7 +617,11 @@ trait TableTrait
$found = false;
$first = true;
$comment_sql = ''; //Accumulate comments for the columns
- $sql = "CREATE TABLE \"{$f_schema}\".\"{$name}\" (";
+ $sql = \sprintf(
+ 'CREATE TABLE "%s"."%s" (',
+ $f_schema,
+ $name
+ );
for ($i = 0; $i < $fields; ++$i) {
$this->fieldClean($field[$i]);
@@ -593,17 +640,24 @@ trait TableTrait
} else {
$first = false;
}
- $length[$i]=$length[$i] ?? '';
+ $length[$i] = $length[$i] ?? '';
+
switch ($type[$i]) {
// Have to account for weird placing of length for with/without
// time zone types
case 'timestamp with time zone':
case 'timestamp without time zone':
$qual = \mb_substr($type[$i], 9);
- $sql .= "\"{$field[$i]}\" timestamp";
+ $sql .= \sprintf(
+ '"%s" timestamp',
+ $field[$i]
+ );
- if ('' !== $length[$i] ) {
- $sql .= "({$length[$i]})";
+ if ('' !== $length[$i]) {
+ $sql .= \sprintf(
+ '(%s)',
+ $length[$i]
+ );
}
$sql .= $qual;
@@ -612,10 +666,16 @@ trait TableTrait
case 'time with time zone':
case 'time without time zone':
$qual = \mb_substr($type[$i], 4);
- $sql .= "\"{$field[$i]}\" time";
+ $sql .= \sprintf(
+ '"%s" time',
+ $field[$i]
+ );
if ('' !== $length[$i]) {
- $sql .= "({$length[$i]})";
+ $sql .= \sprintf(
+ '(%s)',
+ $length[$i]
+ );
}
$sql .= $qual;
@@ -623,10 +683,17 @@ trait TableTrait
break;
default:
- $sql .= "\"{$field[$i]}\" {$type[$i]}";
+ $sql .= \sprintf(
+ '"%s" %s',
+ $field[$i],
+ $type[$i]
+ );
- if ('' !== $length[$i] ) {
- $sql .= "({$length[$i]})";
+ if ('' !== $length[$i]) {
+ $sql .= \sprintf(
+ '(%s)',
+ $length[$i]
+ );
}
}
// Add array qualifier if necessary
@@ -646,11 +713,20 @@ trait TableTrait
}
if ('' !== $default[$i]) {
- $sql .= " DEFAULT {$default[$i]}";
+ $sql .= \sprintf(
+ ' DEFAULT %s',
+ $default[$i]
+ );
}
if ('' !== $colcomment[$i]) {
- $comment_sql .= "COMMENT ON COLUMN \"{$name}\".\"{$field[$i]}\" IS '{$colcomment[$i]}';\n";
+ $comment_sql .= \sprintf(
+ 'COMMENT ON COLUMN "%s"."%s" IS \'%s\';
+',
+ $name,
+ $field[$i],
+ $colcomment[$i]
+ );
}
$found = true;
@@ -665,7 +741,10 @@ trait TableTrait
for ($i = 0; $i < $fields; ++$i) {
if (isset($primarykey[$i])) {
- $primarykeycolumns[] = "\"{$field[$i]}\"";
+ $primarykeycolumns[] = \sprintf(
+ '"%s"',
+ $field[$i]
+ );
}
}
@@ -685,7 +764,10 @@ trait TableTrait
// Tablespace
if ($this->hasTablespaces() && '' !== $tablespace) {
$this->fieldClean($tablespace);
- $sql .= " TABLESPACE \"{$tablespace}\"";
+ $sql .= \sprintf(
+ ' TABLESPACE "%s"',
+ $tablespace
+ );
}
$status = $this->execute($sql);
@@ -742,7 +824,11 @@ trait TableTrait
$this->fieldClean($name);
$this->fieldClean($like['schema']);
$this->fieldClean($like['table']);
- $like = "\"{$like['schema']}\".\"{$like['table']}\"";
+ $like = \sprintf(
+ '"%s"."%s"',
+ $like['schema'],
+ $like['table']
+ );
$status = $this->beginTransaction();
@@ -750,7 +836,12 @@ trait TableTrait
return -1;
}
- $sql = "CREATE TABLE \"{$f_schema}\".\"{$name}\" (LIKE {$like}";
+ $sql = \sprintf(
+ 'CREATE TABLE "%s"."%s" (LIKE %s',
+ $f_schema,
+ $name,
+ $like
+ );
if ($defaults) {
$sql .= ' INCLUDING DEFAULTS';
@@ -768,7 +859,10 @@ trait TableTrait
if ($this->hasTablespaces() && '' !== $tablespace) {
$this->fieldClean($tablespace);
- $sql .= " TABLESPACE \"{$tablespace}\"";
+ $sql .= \sprintf(
+ ' TABLESPACE "%s"',
+ $tablespace
+ );
}
$status = $this->execute($sql);
@@ -811,7 +905,11 @@ trait TableTrait
return -1;
}
- $sql_sentence = "ALTER TABLE \"{$this->_schema}\".\"{$tblrs->fields['relname']}\" ";
+ $sql_sentence = \sprintf(
+ 'ALTER TABLE "%s"."%s" ',
+ $this->_schema,
+ $tblrs->fields['relname']
+ );
$status = $this->_alterTable($tblrs, $name, $owner, $schema, $comment, $tablespace, !$with_oids, $sql_sentence);
//dump(['_alterTable' => [$status, $sql_sentence.$this->getLastExecutedSQL()]]);
@@ -828,9 +926,9 @@ trait TableTrait
* Enables or disables the oid system column to a table a table's owner
* /!\ this function is called from _alterTable which take care of escaping fields.
*
- * @param \PHPPgAdmin\ADORecordSet $tblrs The table RecordSet returned by getTable()
- * @param null|string $owner
- * @param bool $withoutoids
+ * @param ADORecordSet $tblrs The table RecordSet returned by getTable()
+ * @param null|string $owner
+ * @param bool $withoutoids
*
* @return array{0:int,1:string} [status:0 if successful, change_sql: changed attribute]
*/
@@ -844,7 +942,11 @@ trait TableTrait
$f_schema = $this->_schema;
$this->fieldClean($f_schema);
- $alter_sql = "ALTER TABLE \"{$f_schema}\".\"{$tblrs->fields['relname']}\" ";
+ $alter_sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" ',
+ $f_schema,
+ $tblrs->fields['relname']
+ );
$change_sql = ' SET ';
if ($withoutoids) {
@@ -864,8 +966,8 @@ trait TableTrait
* Alter a table's owner
* /!\ this function is called from _alterTable which take care of escaping fields.
*
- * @param \PHPPgAdmin\ADORecordSet $tblrs The table RecordSet returned by getTable()
- * @param null|string $owner
+ * @param ADORecordSet $tblrs The table RecordSet returned by getTable()
+ * @param null|string $owner
*
* @return array{0:int,1:string} [status:0 if successful, change_sql: changed attribute]
*/
@@ -880,8 +982,15 @@ trait TableTrait
// If owner has been changed, then do the alteration. We are
// careful to avoid this generally as changing owner is a
// superuser only function.
- $alter_sql = "ALTER TABLE \"{$f_schema}\".\"{$tblrs->fields['relname']}\" ";
- $change_sql = " OWNER TO \"{$owner}\"";
+ $alter_sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" ',
+ $f_schema,
+ $tblrs->fields['relname']
+ );
+ $change_sql = \sprintf(
+ ' OWNER TO "%s"',
+ $owner
+ );
$sql = \implode(' ', [$alter_sql, $change_sql]);
$status = $this->execute($sql);
@@ -894,8 +1003,8 @@ trait TableTrait
* Alter a table's tablespace
* /!\ this function is called from _alterTable which take care of escaping fields.
*
- * @param \PHPPgAdmin\ADORecordSet $tblrs The table RecordSet returned by getTable()
- * @param null|string $tablespace
+ * @param ADORecordSet $tblrs The table RecordSet returned by getTable()
+ * @param null|string $tablespace
*
* @return array{0:int,1:string} [status:0 if successful, change_sql: changed attribute]
*/
@@ -910,8 +1019,15 @@ trait TableTrait
// If tablespace has been changed, then do the alteration. We
// don't want to do this unnecessarily.
- $alter_sql = "ALTER TABLE \"{$f_schema}\".\"{$tblrs->fields['relname']}\" ";
- $change_sql = " SET TABLESPACE \"{$tablespace}\"";
+ $alter_sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" ',
+ $f_schema,
+ $tblrs->fields['relname']
+ );
+ $change_sql = \sprintf(
+ ' SET TABLESPACE "%s"',
+ $tablespace
+ );
$sql = \implode(' ', [$alter_sql, $change_sql]);
$status = $this->execute($sql);
@@ -924,8 +1040,8 @@ trait TableTrait
* Alter a table's name
* /!\ this function is called from _alterTable which take care of escaping fields.
*
- * @param \PHPPgAdmin\ADORecordSet $tblrs The table RecordSet returned by getTable()
- * @param string $name The new table's name
+ * @param ADORecordSet $tblrs The table RecordSet returned by getTable()
+ * @param string $name The new table's name
*
* @return array{0:int,1:string} [status:0 if successful, change_sql: changed attribute]
*/
@@ -939,8 +1055,15 @@ trait TableTrait
$f_schema = $this->_schema;
$this->fieldClean($f_schema);
- $alter_sql = "ALTER TABLE \"{$f_schema}\".\"{$tblrs->fields['relname']}\" ";
- $change_sql = " RENAME TO \"{$name}\"";
+ $alter_sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" ',
+ $f_schema,
+ $tblrs->fields['relname']
+ );
+ $change_sql = \sprintf(
+ ' RENAME TO "%s"',
+ $name
+ );
$sql = \implode(' ', [$alter_sql, $change_sql]);
$status = $this->execute($sql);
@@ -958,8 +1081,8 @@ trait TableTrait
* Alter a table's schema
* /!\ this function is called from _alterTable which take care of escaping fields.
*
- * @param \PHPPgAdmin\ADORecordSet $tblrs The table RecordSet returned by getTable()
- * @param null|string $schema
+ * @param ADORecordSet $tblrs The table RecordSet returned by getTable()
+ * @param null|string $schema
*
* @return array{0:int,1:string} [status:0 if successful, change_sql: changed attribute]
*/
@@ -973,8 +1096,15 @@ trait TableTrait
$this->fieldClean($f_schema);
// If tablespace has been changed, then do the alteration. We
// don't want to do this unnecessarily.
- $alter_sql = "ALTER TABLE \"{$f_schema}\".\"{$tblrs->fields['relname']}\" ";
- $change_sql = " SET SCHEMA \"{$schema}\"";
+ $alter_sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" ',
+ $f_schema,
+ $tblrs->fields['relname']
+ );
+ $change_sql = \sprintf(
+ ' SET SCHEMA "%s"',
+ $schema
+ );
$sql = \implode(' ', [$alter_sql, $change_sql]);
$status = $this->execute($sql);
@@ -997,7 +1127,11 @@ trait TableTrait
$this->fieldClean($f_schema);
$this->fieldClean($table);
- $sql = "TRUNCATE TABLE \"{$f_schema}\".\"{$table}\" ";
+ $sql = \sprintf(
+ 'TRUNCATE TABLE "%s"."%s" ',
+ $f_schema,
+ $table
+ );
if ($cascade) {
$sql = $sql . ' CASCADE';
@@ -1014,7 +1148,7 @@ trait TableTrait
* @param string $table The table to drop
* @param bool $cascade True to cascade drop, false to restrict
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropTable($table, $cascade)
{
@@ -1022,7 +1156,11 @@ trait TableTrait
$this->fieldClean($f_schema);
$this->fieldClean($table);
- $sql = "DROP TABLE \"{$f_schema}\".\"{$table}\"";
+ $sql = \sprintf(
+ 'DROP TABLE "%s"."%s"',
+ $f_schema,
+ $table
+ );
if ($cascade) {
$sql .= ' CASCADE';
@@ -1097,7 +1235,7 @@ trait TableTrait
* @param string $relation The name of a relation
* @param bool $oids true to dump also the oids
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dumpRelation($relation, $oids)
{
@@ -1110,7 +1248,11 @@ trait TableTrait
$oid_str = '';
}
- return $this->selectSet("SELECT {$oid_str}* FROM \"{$relation}\"");
+ return $this->selectSet(\sprintf(
+ 'SELECT %s* FROM "%s"',
+ $oid_str,
+ $relation
+ ));
}
/**
@@ -1118,7 +1260,7 @@ trait TableTrait
*
* @param string $table if given, return autovacuum info for the given table or return all informations for all table
*
- * @return \PHPPgAdmin\ArrayRecordSet A recordset
+ * @return ArrayRecordSet A recordset
*/
public function getTableAutovacuum($table = '')
{
@@ -1129,14 +1271,18 @@ trait TableTrait
$c_schema = $this->_schema;
$this->clean($c_schema);
- $sql = "SELECT c.oid, nspname, relname, pg_catalog.array_to_string(reloptions, E',') AS reloptions
+ $sql = \sprintf(
+ 'SELECT c.oid, nspname, relname, pg_catalog.array_to_string(reloptions, E\',\') AS reloptions
FROM pg_class c
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
- WHERE c.relkind = 'r'::\"char\"
- AND n.nspname NOT IN ('pg_catalog','information_schema')
+ WHERE c.relkind = \'r\'::"char"
+ AND n.nspname NOT IN (\'pg_catalog\',\'information_schema\')
AND c.reloptions IS NOT NULL
- AND c.relname = '{$table}' AND n.nspname = '{$c_schema}'
- ORDER BY nspname, relname";
+ AND c.relname = \'%s\' AND n.nspname = \'%s\'
+ ORDER BY nspname, relname',
+ $table,
+ $c_schema
+ );
} else {
$sql = "SELECT c.oid, nspname, relname, pg_catalog.array_to_string(reloptions, E',') AS reloptions
FROM pg_class c
@@ -1169,7 +1315,7 @@ trait TableTrait
$_autovacs->moveNext();
}
- return new \PHPPgAdmin\ArrayRecordSet($autovacs);
+ return new ArrayRecordSet($autovacs);
}
/**
@@ -1183,7 +1329,10 @@ trait TableTrait
{
$this->clean($user);
- return "SET SESSION AUTHORIZATION '{$user}';";
+ return \sprintf(
+ 'SET SESSION AUTHORIZATION \'%s\';',
+ $user
+ );
}
/**
@@ -1198,7 +1347,7 @@ trait TableTrait
* @param int $vaccostdelay vacuum cost delay
* @param int $vaccostlimit vacuum cost limit
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function saveAutovacuum(
$table,
@@ -1216,41 +1365,66 @@ trait TableTrait
$params = [];
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" SET (";
+ $sql = \sprintf(
+ 'ALTER TABLE "%s"."%s" SET (',
+ $f_schema,
+ $table
+ );
if (!empty($vacenabled)) {
$this->clean($vacenabled);
- $params[] = "autovacuum_enabled='{$vacenabled}'";
+ $params[] = \sprintf(
+ 'autovacuum_enabled=\'%s\'',
+ $vacenabled
+ );
}
if (!empty($vacthreshold)) {
$this->clean($vacthreshold);
- $params[] = "autovacuum_vacuum_threshold='{$vacthreshold}'";
+ $params[] = \sprintf(
+ 'autovacuum_vacuum_threshold=\'%s\'',
+ $vacthreshold
+ );
}
if (!empty($vacscalefactor)) {
$this->clean($vacscalefactor);
- $params[] = "autovacuum_vacuum_scale_factor='{$vacscalefactor}'";
+ $params[] = \sprintf(
+ 'autovacuum_vacuum_scale_factor=\'%s\'',
+ $vacscalefactor
+ );
}
if (!empty($anathresold)) {
$this->clean($anathresold);
- $params[] = "autovacuum_analyze_threshold='{$anathresold}'";
+ $params[] = \sprintf(
+ 'autovacuum_analyze_threshold=\'%s\'',
+ $anathresold
+ );
}
if (!empty($anascalefactor)) {
$this->clean($anascalefactor);
- $params[] = "autovacuum_analyze_scale_factor='{$anascalefactor}'";
+ $params[] = \sprintf(
+ 'autovacuum_analyze_scale_factor=\'%s\'',
+ $anascalefactor
+ );
}
if (!empty($vaccostdelay)) {
$this->clean($vaccostdelay);
- $params[] = "autovacuum_vacuum_cost_delay='{$vaccostdelay}'";
+ $params[] = \sprintf(
+ 'autovacuum_vacuum_cost_delay=\'%s\'',
+ $vaccostdelay
+ );
}
if (!empty($vaccostlimit)) {
$this->clean($vaccostlimit);
- $params[] = "autovacuum_vacuum_cost_limit='{$vaccostlimit}'";
+ $params[] = \sprintf(
+ 'autovacuum_vacuum_cost_limit=\'%s\'',
+ $vaccostlimit
+ );
}
$sql = $sql . \implode(',', $params) . ');';
@@ -1265,7 +1439,7 @@ trait TableTrait
*
* @param string $table The table
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropAutovacuum($table)
{
@@ -1274,11 +1448,15 @@ trait TableTrait
$this->fieldClean($table);
return $this->execute(
- "
- ALTER TABLE \"{$f_schema}\".\"{$table}\" RESET (autovacuum_enabled, autovacuum_vacuum_threshold,
+ \sprintf(
+ '
+ ALTER TABLE "%s"."%s" RESET (autovacuum_enabled, autovacuum_vacuum_threshold,
autovacuum_vacuum_scale_factor, autovacuum_analyze_threshold, autovacuum_analyze_scale_factor,
autovacuum_vacuum_cost_delay, autovacuum_vacuum_cost_limit
- );"
+ );',
+ $f_schema,
+ $table
+ )
);
}
@@ -1324,13 +1502,13 @@ trait TableTrait
* Protected method which alter a table
* SHOULDN'T BE CALLED OUTSIDE OF A TRANSACTION.
*
- * @param \PHPPgAdmin\ADORecordSet $tblrs The table recordSet returned by getTable()
- * @param string $name The new name for the table
- * @param string $owner The new owner for the table
- * @param string $schema The new schema for the table
- * @param string $comment The comment on the table
- * @param string $tablespace The new tablespace for the table ('' means leave as is)
- * @param bool $withoutoids If set to TRUE, will drop oids column
+ * @param ADORecordSet $tblrs The table recordSet returned by getTable()
+ * @param string $name The new name for the table
+ * @param string $owner The new owner for the table
+ * @param string $schema The new schema for the table
+ * @param string $comment The comment on the table
+ * @param string $tablespace The new tablespace for the table ('' means leave as is)
+ * @param bool $withoutoids If set to TRUE, will drop oids column
*
* @return int 0 success
*/
@@ -1351,7 +1529,11 @@ trait TableTrait
// Owner
$this->fieldClean($owner);
[$TableOwnerStatus,$TableOwnerSQL] = $this->alterTableOwner($tblrs, $owner);
- $this->lastExecutedSql .= $TableOwnerSQL ? \sprintf('%s%s', \PHP_EOL, $TableOwnerSQL) : '';
+ $this->lastExecutedSql .= $TableOwnerSQL ? \sprintf(
+ '%s%s',
+ \PHP_EOL,
+ $TableOwnerSQL
+ ) : '';
//dump(['alterTableOwner' => [$TableOwnerStatus,$TableOwnerSQL]]);
if (0 !== $TableOwnerStatus) {
@@ -1361,7 +1543,11 @@ trait TableTrait
// Tablespace
$this->fieldClean($tablespace);
[$TableTablespaceStatus,$TableTablespaceSQL] = $this->alterTableTablespace($tblrs, $tablespace);
- $this->lastExecutedSql .= $TableTablespaceSQL ? \sprintf('%s%s', \PHP_EOL, $TableTablespaceSQL) : '';
+ $this->lastExecutedSql .= $TableTablespaceSQL ? \sprintf(
+ '%s%s',
+ \PHP_EOL,
+ $TableTablespaceSQL
+ ) : '';
//dump(['alterTableTablespace' => [$TableTablespaceStatus,$TableTablespaceSQL]]);
if (0 !== $TableTablespaceStatus) {
@@ -1371,7 +1557,11 @@ trait TableTrait
// Rename
$this->fieldClean($name);
[$TableNameStatus,$TableNameSQL] = $this->alterTableName($tblrs, $name);
- $this->lastExecutedSql .= $TableNameSQL ? \sprintf('%s%s', \PHP_EOL, $TableNameSQL) : '';
+ $this->lastExecutedSql .= $TableNameSQL ? \sprintf(
+ '%s%s',
+ \PHP_EOL,
+ $TableNameSQL
+ ) : '';
//dump(['alterTableName' => [$TableNameStatus,$TableNameSQL]]);
if (0 !== $TableNameStatus) {
@@ -1381,14 +1571,22 @@ trait TableTrait
// Schema
$this->fieldClean($schema);
[$TableSchemaStatus,$TableSchemaSQL] = $this->alterTableSchema($tblrs, $schema);
- $this->lastExecutedSql .= $TableSchemaSQL ? \sprintf('%s%s', \PHP_EOL, $TableSchemaSQL) : '';
+ $this->lastExecutedSql .= $TableSchemaSQL ? \sprintf(
+ '%s%s',
+ \PHP_EOL,
+ $TableSchemaSQL
+ ) : '';
//dump(['alterTableSchema' => [$TableSchemaStatus,$TableSchemaSQL]]);
if (0 !== $TableSchemaStatus) {
return -7;
}
[$TableOidsStatus,$TableOidsSQL] = $this->alterTableOids($tblrs, $withoutoids);
- $this->lastExecutedSql .= $TableOidsSQL ? \sprintf('%s%s', \PHP_EOL, $TableOidsSQL) : '';
+ $this->lastExecutedSql .= $TableOidsSQL ? \sprintf(
+ '%s%s',
+ \PHP_EOL,
+ $TableOidsSQL
+ ) : '';
//dump(['alterTableOids' => [$TableOidsStatus,$TableOidsSQL]]);
if (0 !== $TableOidsStatus) {
return -7;
@@ -1400,19 +1598,19 @@ trait TableTrait
/**
* Dumps serial-like columns in the table.
*
- * @param \PHPPgAdmin\ADORecordSet $atts table attributes
- * @param \PHPPgAdmin\ADORecordSet $tblfields table fields object
- * @param string $sql The sql sentence
- * generated so far
- * @param string $col_comments_sql Column comments,
- * passed by reference
- * @param int $i current counter to
- * know if we should
- * append a comma to the
- * sentence
- * @param int $num Table attributes
- * count + table
- * constraints count
+ * @param ADORecordSet $atts table attributes
+ * @param ADORecordSet $tblfields table fields object
+ * @param string $sql The sql sentence
+ * generated so far
+ * @param string $col_comments_sql Column comments,
+ * passed by reference
+ * @param int $i current counter to
+ * know if we should
+ * append a comma to the
+ * sentence
+ * @param int $num Table attributes
+ * count + table
+ * constraints count
*
* @return string original $sql plus appended strings
*/
@@ -1420,7 +1618,10 @@ trait TableTrait
{
while (!$atts->EOF) {
$this->fieldClean($atts->fields['attname']);
- $sql .= " \"{$atts->fields['attname']}\"";
+ $sql .= \sprintf(
+ ' "%s"',
+ $atts->fields['attname']
+ );
// Dump SERIAL and BIGSERIAL columns correctly
if ($this->phpBool($atts->fields['attisserial']) &&
('integer' === $atts->fields['type'] || 'bigint' === $atts->fields['type'])
@@ -1440,7 +1641,10 @@ trait TableTrait
// Add default if necessary
if (null !== $atts->fields['adsrc']) {
- $sql .= " DEFAULT {$atts->fields['adsrc']}";
+ $sql .= \sprintf(
+ ' DEFAULT %s',
+ $atts->fields['adsrc']
+ );
}
}
@@ -1454,7 +1658,13 @@ trait TableTrait
// Does this column have a comment?
if (null !== $atts->fields['comment']) {
$this->clean($atts->fields['comment']);
- $col_comments_sql .= "COMMENT ON COLUMN \"{$tblfields->fields['relname']}\".\"{$atts->fields['attname']}\" IS '{$atts->fields['comment']}';\n";
+ $col_comments_sql .= \sprintf(
+ 'COMMENT ON COLUMN "%s"."%s" IS \'%s\';
+',
+ $tblfields->fields['relname'],
+ $atts->fields['attname'],
+ $atts->fields['comment']
+ );
}
$atts->moveNext();
@@ -1467,20 +1677,23 @@ trait TableTrait
/**
* Dumps constraints.
*
- * @param \PHPPgAdmin\ADORecordSet $cons The table constraints
- * @param string $table The table to define
- * @param string $sql The sql sentence generated so
- * far
- * @param mixed $i
- * @param int $num Table attributes count + table
- * constraints count
+ * @param ADORecordSet $cons The table constraints
+ * @param string $table The table to define
+ * @param string $sql The sql sentence generated so
+ * far
+ * @param mixed $i
+ * @param int $num Table attributes count + table
+ * constraints count
*/
private function _dumpConstraints($cons, $table, $sql, $i, $num): ?string
{
// Output all table constraints
while (!$cons->EOF) {
$this->fieldClean($cons->fields['conname']);
- $sql .= " CONSTRAINT \"{$cons->fields['conname']}\" ";
+ $sql .= \sprintf(
+ ' CONSTRAINT "%s" ',
+ $cons->fields['conname']
+ );
// Nasty hack to support pre-7.4 PostgreSQL
if (null !== $cons->fields['consrc']) {
$sql .= $cons->fields['consrc'];
@@ -1522,9 +1735,9 @@ trait TableTrait
/**
* Dumps col statistics.
*
- * @param \PHPPgAdmin\ADORecordSet $atts table attributes
- * @param \PHPPgAdmin\ADORecordSet $tblfields table field attributes
- * @param string $sql The sql sentence generated so far
+ * @param ADORecordSet $atts table attributes
+ * @param ADORecordSet $tblfields table field attributes
+ * @param string $sql The sql sentence generated so far
*/
private function _dumpColStats($atts, $tblfields, $sql): ?string
{
@@ -1540,7 +1753,14 @@ trait TableTrait
$sql .= "\n";
$first = false;
}
- $sql .= "ALTER TABLE ONLY \"{$tblfields->fields['nspname']}\".\"{$tblfields->fields['relname']}\" ALTER COLUMN \"{$atts->fields['attname']}\" SET STATISTICS {$atts->fields['attstattarget']};\n";
+ $sql .= \sprintf(
+ 'ALTER TABLE ONLY "%s"."%s" ALTER COLUMN "%s" SET STATISTICS %s;
+',
+ $tblfields->fields['nspname'],
+ $tblfields->fields['relname'],
+ $atts->fields['attname'],
+ $atts->fields['attstattarget']
+ );
}
// Then storage
if ($atts->fields['attstorage'] !== $atts->fields['typstorage']) {
@@ -1568,7 +1788,14 @@ trait TableTrait
return null;
}
- $sql .= "ALTER TABLE ONLY \"{$tblfields->fields['nspname']}\".\"{$tblfields->fields['relname']}\" ALTER COLUMN \"{$atts->fields['attname']}\" SET STORAGE {$storage};\n";
+ $sql .= \sprintf(
+ 'ALTER TABLE ONLY "%s"."%s" ALTER COLUMN "%s" SET STORAGE %s;
+',
+ $tblfields->fields['nspname'],
+ $tblfields->fields['relname'],
+ $atts->fields['attname'],
+ $storage
+ );
}
$atts->moveNext();
@@ -1580,9 +1807,9 @@ trait TableTrait
/**
* Dumps privileges.
*
- * @param \PHPPgAdmin\ADORecordSet $privs The table privileges
- * @param \PHPPgAdmin\ADORecordSet $tblfields The table fields definition
- * @param string $sql The sql sentence generated so far
+ * @param ADORecordSet $privs The table privileges
+ * @param ADORecordSet $tblfields The table fields definition
+ * @param string $sql The sql sentence generated so far
*/
private function _dumpPrivileges($privs, $tblfields, $sql): ?string
{
@@ -1595,7 +1822,12 @@ trait TableTrait
* wire-in knowledge about the default public privileges for different
* kinds of objects.
*/
- $sql .= "REVOKE ALL ON TABLE \"{$tblfields->fields['nspname']}\".\"{$tblfields->fields['relname']}\" FROM PUBLIC;\n";
+ $sql .= \sprintf(
+ 'REVOKE ALL ON TABLE "%s"."%s" FROM PUBLIC;
+',
+ $tblfields->fields['nspname'],
+ $tblfields->fields['relname']
+ );
foreach ($privs as $v) {
// Get non-GRANT OPTION privs
@@ -1610,11 +1842,18 @@ trait TableTrait
if ($this->hasGrantOption() && $v[3] !== $tblfields->fields['relowner']) {
$grantor = $v[3];
$this->clean($grantor);
- $sql .= "SET SESSION AUTHORIZATION '{$grantor}';\n";
+ $sql .= \sprintf(
+ 'SET SESSION AUTHORIZATION \'%s\';
+',
+ $grantor
+ );
}
// Output privileges with no GRANT OPTION
- $sql .= 'GRANT ' . \implode(', ', $nongrant) . " ON TABLE \"{$tblfields->fields['relname']}\" TO ";
+ $sql .= 'GRANT ' . \implode(', ', $nongrant) . \sprintf(
+ ' ON TABLE "%s" TO ',
+ $tblfields->fields['relname']
+ );
switch ($v[0]) {
case 'public':
@@ -1624,12 +1863,20 @@ trait TableTrait
case 'user':
case 'role':
$this->fieldClean($v[1]);
- $sql .= "\"{$v[1]}\";\n";
+ $sql .= \sprintf(
+ '"%s";
+',
+ $v[1]
+ );
break;
case 'group':
$this->fieldClean($v[1]);
- $sql .= "GROUP \"{$v[1]}\";\n";
+ $sql .= \sprintf(
+ 'GROUP "%s";
+',
+ $v[1]
+ );
break;
@@ -1656,10 +1903,17 @@ trait TableTrait
if ($this->hasGrantOption() && $v[3] !== $tblfields->fields['relowner']) {
$grantor = $v[3];
$this->clean($grantor);
- $sql .= "SET SESSION AUTHORIZATION '{$grantor}';\n";
+ $sql .= \sprintf(
+ 'SET SESSION AUTHORIZATION \'%s\';
+',
+ $grantor
+ );
}
- $sql .= 'GRANT ' . \implode(', ', $v[4]) . " ON \"{$tblfields->fields['relname']}\" TO ";
+ $sql .= 'GRANT ' . \implode(', ', $v[4]) . \sprintf(
+ ' ON "%s" TO ',
+ $tblfields->fields['relname']
+ );
switch ($v[0]) {
case 'public':
@@ -1669,12 +1923,18 @@ trait TableTrait
case 'user':
case 'role':
$this->fieldClean($v[1]);
- $sql .= "\"{$v[1]}\"";
+ $sql .= \sprintf(
+ '"%s"',
+ $v[1]
+ );
break;
case 'group':
$this->fieldClean($v[1]);
- $sql .= "GROUP \"{$v[1]}\"";
+ $sql .= \sprintf(
+ 'GROUP "%s"',
+ $v[1]
+ );
break;
@@ -1696,24 +1956,39 @@ trait TableTrait
/**
* Dumps a create.
*
- * @param \PHPPgAdmin\ADORecordSet $tblfields table fields object
- * @param string $sql The sql sentence generated so far
- * @param string $cleanprefix set to '-- ' to avoid issuing DROP statement
- * @param mixed $fields
+ * @param ADORecordSet $tblfields table fields object
+ * @param string $sql The sql sentence generated so far
+ * @param string $cleanprefix set to '-- ' to avoid issuing DROP statement
+ * @param mixed $fields
*
* @return string original $sql plus appended strings
*/
private function _dumpCreate($tblfields, $sql, $cleanprefix)
{
// Set schema search path
- $sql .= "SET search_path = \"{$tblfields->fields['nspname']}\", pg_catalog;\n\n";
+ $sql .= \sprintf(
+ 'SET search_path = "%s", pg_catalog;
+
+',
+ $tblfields->fields['nspname']
+ );
// Begin CREATE TABLE definition
$sql .= "-- Definition\n\n";
// DROP TABLE must be fully qualified in case a table with the same name exists
$sql .= $cleanprefix . 'DROP TABLE ';
- $sql .= "\"{$tblfields->fields['nspname']}\".\"{$tblfields->fields['relname']}\";\n";
- $sql .= "CREATE TABLE \"{$tblfields->fields['nspname']}\".\"{$tblfields->fields['relname']}\" (\n";
+ $sql .= \sprintf(
+ '"%s"."%s";
+',
+ $tblfields->fields['nspname'],
+ $tblfields->fields['relname']
+ );
+ $sql .= \sprintf(
+ 'CREATE TABLE "%s"."%s" (
+',
+ $tblfields->fields['nspname'],
+ $tblfields->fields['relname']
+ );
return $sql;
}
@@ -1724,11 +1999,12 @@ trait TableTrait
* @param string $table The name of the table
* @param string $c_schema The name of the schema
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
private function _getTableAttributesAll($table, $c_schema)
{
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
a.attname,
a.attnum,
@@ -1756,15 +2032,18 @@ trait TableTrait
LEFT JOIN pg_catalog.pg_type t ON a.atttypid=t.oid
LEFT JOIN pg_catalog.pg_depend pd ON pd.refobjid=a.attrelid
AND pd.refobjsubid=a.attnum
- AND pd.deptype='i'
+ AND pd.deptype=\'i\'
LEFT JOIN pg_catalog.pg_class pc ON pd.objid=pc.oid
AND pd.classid=pc.tableoid
AND pd.refclassid=pc.tableoid
- AND pc.relkind='S'
- WHERE tbl.tablename='{$table}'
- AND tbl.schemaname='{$c_schema}'
+ AND pc.relkind=\'S\'
+ WHERE tbl.tablename=\'%s\'
+ AND tbl.schemaname=\'%s\'
AND a.attnum > 0 AND NOT a.attisdropped
- ORDER BY a.attnum";
+ ORDER BY a.attnum',
+ $table,
+ $c_schema
+ );
return $this->selectSet($sql);
}
@@ -1776,11 +2055,12 @@ trait TableTrait
* @param string $c_schema The schema of the table
* @param string $field (optional) The name of a field to return
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
private function _getTableAttribute($table, $c_schema, $field)
{
- $sql = "
+ $sql = \sprintf(
+ '
SELECT
a.attname, a.attnum,
pg_catalog.format_type(a.atttypid, a.atttypmod) as type,
@@ -1795,10 +2075,14 @@ trait TableTrait
AND a.attnum=adef.adnum
LEFT JOIN pg_catalog.pg_type t ON a.atttypid=t.oid
WHERE
- a.attrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}'
+ a.attrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname=\'%s\'
AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE
- nspname = '{$c_schema}'))
- AND a.attname = '{$field}'";
+ nspname = \'%s\'))
+ AND a.attname = \'%s\'',
+ $table,
+ $c_schema,
+ $field
+ );
return $this->selectSet($sql);
}
diff --git a/src/database/databasetraits/TablespaceTrait.php b/src/database/databasetraits/TablespaceTrait.php
index 11396e33..f8030426 100644
--- a/src/database/databasetraits/TablespaceTrait.php
+++ b/src/database/databasetraits/TablespaceTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use PHPPgAdmin\ADORecordSet;
+
/**
* Common trait for tablespaces manipulation.
*/
@@ -16,7 +18,7 @@ trait TablespaceTrait
*
* @param bool $all Include all tablespaces (necessary when moving objects back to the default space)
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getTablespaces($all = false)
{
@@ -42,15 +44,15 @@ trait TablespaceTrait
*
* @param string $spcname
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getTablespace($spcname)
{
$this->clean($spcname);
- $sql = "SELECT spcname, pg_catalog.pg_get_userbyid(spcowner) AS spcowner, pg_catalog.pg_tablespace_location(oid) as spclocation,
- (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid AND pd.classoid='pg_tablespace'::regclass) AS spccomment
- FROM pg_catalog.pg_tablespace WHERE spcname='{$spcname}'";
+ $sql = \sprintf('SELECT spcname, pg_catalog.pg_get_userbyid(spcowner) AS spcowner, pg_catalog.pg_tablespace_location(oid) as spclocation,
+ (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pg_tablespace.oid=pd.objoid AND pd.classoid=\'pg_tablespace\'::regclass) AS spccomment
+ FROM pg_catalog.pg_tablespace WHERE spcname=\'%s\'', $spcname);
return $this->selectSet($sql);
}
@@ -70,14 +72,14 @@ trait TablespaceTrait
$this->fieldClean($spcname);
$this->clean($spcloc);
- $sql = "CREATE TABLESPACE \"{$spcname}\"";
+ $sql = \sprintf('CREATE TABLESPACE "%s"', $spcname);
if ('' !== $spcowner) {
$this->fieldClean($spcowner);
- $sql .= " OWNER \"{$spcowner}\"";
+ $sql .= \sprintf(' OWNER "%s"', $spcowner);
}
- $sql .= " LOCATION '{$spcloc}'";
+ $sql .= \sprintf(' LOCATION \'%s\'', $spcloc);
$status = $this->execute($sql);
@@ -120,7 +122,7 @@ trait TablespaceTrait
}
// Owner
- $sql = "ALTER TABLESPACE \"{$spcname}\" OWNER TO \"{$owner}\"";
+ $sql = \sprintf('ALTER TABLESPACE "%s" OWNER TO "%s"', $spcname, $owner);
$status = $this->execute($sql);
if (0 !== $status) {
@@ -131,7 +133,7 @@ trait TablespaceTrait
// Rename (only if name has changed)
if ($name !== $spcname) {
- $sql = "ALTER TABLESPACE \"{$spcname}\" RENAME TO \"{$name}\"";
+ $sql = \sprintf('ALTER TABLESPACE "%s" RENAME TO "%s"', $spcname, $name);
$status = $this->execute($sql);
if (0 !== $status) {
@@ -160,13 +162,13 @@ trait TablespaceTrait
*
* @param string $spcname The name of the domain to drop
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropTablespace($spcname)
{
$this->fieldClean($spcname);
- $sql = "DROP TABLESPACE \"{$spcname}\"";
+ $sql = \sprintf('DROP TABLESPACE "%s"', $spcname);
return $this->execute($sql);
}
diff --git a/src/database/databasetraits/TriggerTrait.php b/src/database/databasetraits/TriggerTrait.php
index e6d8c634..a5e1f898 100644
--- a/src/database/databasetraits/TriggerTrait.php
+++ b/src/database/databasetraits/TriggerTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use PHPPgAdmin\ADORecordSet;
+
/**
* Common trait for trigger and rules manipulation.
*/
@@ -17,7 +19,7 @@ trait TriggerTrait
* @param string $table The name of a table whose triggers to retrieve
* @param string $trigger The name of the trigger to retrieve
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getTrigger($table, $trigger)
{
@@ -26,12 +28,12 @@ trait TriggerTrait
$this->clean($table);
$this->clean($trigger);
- $sql = "
+ $sql = \sprintf('
SELECT * FROM pg_catalog.pg_trigger t, pg_catalog.pg_class c
- WHERE t.tgrelid=c.oid AND c.relname='{$table}' AND t.tgname='{$trigger}'
+ WHERE t.tgrelid=c.oid AND c.relname=\'%s\' AND t.tgname=\'%s\'
AND c.relnamespace=(
SELECT oid FROM pg_catalog.pg_namespace
- WHERE nspname='{$c_schema}')";
+ WHERE nspname=\'%s\')', $table, $trigger, $c_schema);
return $this->selectSet($sql);
}
@@ -47,7 +49,7 @@ trait TriggerTrait
* @param string $tgfrequency
* @param string $tgargs The function arguments
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function createTrigger($tgname, $table, $tgproc, $tgtime, $tgevent, $tgfrequency, $tgargs)
{
@@ -58,9 +60,9 @@ trait TriggerTrait
$this->fieldClean($tgproc);
/* No Statement Level Triggers in PostgreSQL (by now) */
- $sql = "CREATE TRIGGER \"{$tgname}\" {$tgtime}
- {$tgevent} ON \"{$f_schema}\".\"{$table}\"
- FOR EACH {$tgfrequency} EXECUTE PROCEDURE \"{$tgproc}\"({$tgargs})";
+ $sql = \sprintf('CREATE TRIGGER "%s" %s
+ %s ON "%s"."%s"
+ FOR EACH %s EXECUTE PROCEDURE "%s"(%s)', $tgname, $tgtime, $tgevent, $f_schema, $table, $tgfrequency, $tgproc, $tgargs);
return $this->execute($sql);
}
@@ -72,7 +74,7 @@ trait TriggerTrait
* @param string $trigger The name of the trigger to alter
* @param string $name The new name for the trigger
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function alterTrigger($table, $trigger, $name)
{
@@ -82,7 +84,7 @@ trait TriggerTrait
$this->fieldClean($trigger);
$this->fieldClean($name);
- $sql = "ALTER TRIGGER \"{$trigger}\" ON \"{$f_schema}\".\"{$table}\" RENAME TO \"{$name}\"";
+ $sql = \sprintf('ALTER TRIGGER "%s" ON "%s"."%s" RENAME TO "%s"', $trigger, $f_schema, $table, $name);
return $this->execute($sql);
}
@@ -94,7 +96,7 @@ trait TriggerTrait
* @param string $table The table from which to drop the trigger
* @param bool $cascade True to cascade drop, false to restrict
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropTrigger($tgname, $table, $cascade)
{
@@ -103,7 +105,7 @@ trait TriggerTrait
$this->fieldClean($tgname);
$this->fieldClean($table);
- $sql = "DROP TRIGGER \"{$tgname}\" ON \"{$f_schema}\".\"{$table}\"";
+ $sql = \sprintf('DROP TRIGGER "%s" ON "%s"."%s"', $tgname, $f_schema, $table);
if ($cascade) {
$sql .= ' CASCADE';
@@ -118,7 +120,7 @@ trait TriggerTrait
* @param string $tgname The name of the trigger to enable
* @param string $table The table in which to enable the trigger
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function enableTrigger($tgname, $table)
{
@@ -127,7 +129,7 @@ trait TriggerTrait
$this->fieldClean($tgname);
$this->fieldClean($table);
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" ENABLE TRIGGER \"{$tgname}\"";
+ $sql = \sprintf('ALTER TABLE "%s"."%s" ENABLE TRIGGER "%s"', $f_schema, $table, $tgname);
return $this->execute($sql);
}
@@ -138,7 +140,7 @@ trait TriggerTrait
* @param string $tgname The name of the trigger to disable
* @param string $table The table in which to disable the trigger
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function disableTrigger($tgname, $table)
{
@@ -147,7 +149,7 @@ trait TriggerTrait
$this->fieldClean($tgname);
$this->fieldClean($table);
- $sql = "ALTER TABLE \"{$f_schema}\".\"{$table}\" DISABLE TRIGGER \"{$tgname}\"";
+ $sql = \sprintf('ALTER TABLE "%s"."%s" DISABLE TRIGGER "%s"', $f_schema, $table, $tgname);
return $this->execute($sql);
}
@@ -189,7 +191,7 @@ trait TriggerTrait
* @param bool $replace (optional) True to replace existing rule, false
* otherwise
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function createRule($name, $event, $table, $where, $instead, $type, $action, $replace = false)
{
@@ -208,10 +210,10 @@ trait TriggerTrait
$sql .= ' OR REPLACE';
}
- $sql .= " RULE \"{$name}\" AS ON {$event} TO \"{$f_schema}\".\"{$table}\"";
+ $sql .= \sprintf(' RULE "%s" AS ON %s TO "%s"."%s"', $name, $event, $f_schema, $table);
// Can't escape WHERE clause
if ('' !== $where) {
- $sql .= " WHERE {$where}";
+ $sql .= \sprintf(' WHERE %s', $where);
}
$sql .= ' DO';
@@ -223,7 +225,7 @@ trait TriggerTrait
if ('NOTHING' === $type) {
$sql .= ' NOTHING';
} else {
- $sql .= " ({$action})";
+ $sql .= \sprintf(' (%s)', $action);
}
return $this->execute($sql);
@@ -236,7 +238,7 @@ trait TriggerTrait
* @param string $relation The relation from which to drop
* @param string $cascade True to cascade drop, false to restrict
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropRule($rule, $relation, $cascade)
{
@@ -245,7 +247,7 @@ trait TriggerTrait
$this->fieldClean($rule);
$this->fieldClean($relation);
- $sql = "DROP RULE \"{$rule}\" ON \"{$f_schema}\".\"{$relation}\"";
+ $sql = \sprintf('DROP RULE "%s" ON "%s"."%s"', $rule, $f_schema, $relation);
if ($cascade) {
$sql .= ' CASCADE';
diff --git a/src/database/databasetraits/TypeTrait.php b/src/database/databasetraits/TypeTrait.php
index b52b28f3..2aa7dd93 100644
--- a/src/database/databasetraits/TypeTrait.php
+++ b/src/database/databasetraits/TypeTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use ADORecordSet;
+
/**
* Common trait for types manipulation.
*/
@@ -39,7 +41,7 @@ trait TypeTrait
$temp = 'character';
if (1 < $len) {
- $temp .= "({$len})";
+ $temp .= \sprintf('(%s)', $len);
}
} elseif ('varchar' === $typname) {
$temp = 'character varying';
@@ -54,7 +56,7 @@ trait TypeTrait
$tmp_typmod = $typmod - $varhdrsz;
$precision = ($tmp_typmod >> 16) & 0xffff;
$scale = $tmp_typmod & 0xffff;
- $temp .= "({$precision}, {$scale})";
+ $temp .= \sprintf('(%s, %s)', $precision, $scale);
}
} else {
$temp = $typname;
@@ -73,14 +75,14 @@ trait TypeTrait
*
* @param string $typname The name of the view to retrieve
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function getType($typname)
{
$this->clean($typname);
- $sql = "SELECT typtype, typbyval, typname, typinput AS typin, typoutput AS typout, typlen, typalign
- FROM pg_type WHERE typname='{$typname}'";
+ $sql = \sprintf('SELECT typtype, typbyval, typname, typinput AS typin, typoutput AS typout, typlen, typalign
+ FROM pg_type WHERE typname=\'%s\'', $typname);
return $this->selectSet($sql);
}
@@ -92,7 +94,7 @@ trait TypeTrait
* @param bool $tabletypes If true, will include table types
* @param bool $domains If true, will include domains
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function getTypes($all = false, $tabletypes = false, $domains = false)
{
@@ -101,7 +103,7 @@ trait TypeTrait
} else {
$c_schema = $this->_schema;
$this->clean($c_schema);
- $where = "n.nspname = '{$c_schema}'";
+ $where = \sprintf('n.nspname = \'%s\'', $c_schema);
}
// Never show system table types
$where2 = "AND c.relnamespace NOT IN (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname LIKE 'pg@_%' ESCAPE '@')";
@@ -118,20 +120,20 @@ trait TypeTrait
$where .= " AND t.typtype != 'd'";
}
- $sql = "SELECT
+ $sql = \sprintf('SELECT
t.typname AS basename,
pg_catalog.format_type(t.oid, NULL) AS typname,
pu.usename AS typowner,
t.typtype,
- pg_catalog.obj_description(t.oid, 'pg_type') AS typcomment
+ pg_catalog.obj_description(t.oid, \'pg_type\') AS typcomment
FROM (pg_catalog.pg_type t
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace)
LEFT JOIN pg_catalog.pg_user pu ON t.typowner = pu.usesysid
- WHERE (t.typrelid = 0 OR (SELECT c.relkind IN ({$tqry}) FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid {$where2}))
- AND t.typname !~ '^_'
- AND {$where}
+ WHERE (t.typrelid = 0 OR (SELECT c.relkind IN (%s) FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid %s))
+ AND t.typname !~ \'^_\'
+ AND %s
ORDER BY typname
- ";
+ ', $tqry, $where2, $where);
return $this->selectSet($sql);
}
@@ -150,7 +152,7 @@ trait TypeTrait
* @param string $typalign
* @param string $typstorage
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*
* @internal param $ ...
*/
@@ -172,22 +174,22 @@ trait TypeTrait
$this->fieldClean($typin);
$this->fieldClean($typout);
- $sql = "
- CREATE TYPE \"{$f_schema}\".\"{$typname}\" (
- INPUT = \"{$typin}\",
- OUTPUT = \"{$typout}\",
- INTERNALLENGTH = {$typlen}";
+ $sql = \sprintf('
+ CREATE TYPE "%s"."%s" (
+ INPUT = "%s",
+ OUTPUT = "%s",
+ INTERNALLENGTH = %s', $f_schema, $typname, $typin, $typout, $typlen);
if ('' !== $typdef) {
- $sql .= ", DEFAULT = {$typdef}";
+ $sql .= \sprintf(', DEFAULT = %s', $typdef);
}
if ('' !== $typelem) {
- $sql .= ", ELEMENT = {$typelem}";
+ $sql .= \sprintf(', ELEMENT = %s', $typelem);
}
if ('' !== $typdelim) {
- $sql .= ", DELIMITER = {$typdelim}";
+ $sql .= \sprintf(', DELIMITER = %s', $typdelim);
}
if ($typbyval) {
@@ -195,11 +197,11 @@ trait TypeTrait
}
if ('' !== $typalign) {
- $sql .= ", ALIGNMENT = {$typalign}";
+ $sql .= \sprintf(', ALIGNMENT = %s', $typalign);
}
if ('' !== $typstorage) {
- $sql .= ", STORAGE = {$typstorage}";
+ $sql .= \sprintf(', STORAGE = %s', $typstorage);
}
$sql .= ')';
@@ -213,7 +215,7 @@ trait TypeTrait
* @param string $typname The name of the type to drop
* @param bool $cascade True to cascade drop, false to restrict
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function dropType($typname, $cascade)
{
@@ -221,7 +223,7 @@ trait TypeTrait
$this->fieldClean($f_schema);
$this->fieldClean($typname);
- $sql = "DROP TYPE \"{$f_schema}\".\"{$typname}\"";
+ $sql = \sprintf('DROP TYPE "%s"."%s"', $f_schema, $typname);
if ($cascade) {
$sql .= ' CASCADE';
@@ -263,7 +265,7 @@ trait TypeTrait
$this->clean($values[$i]);
}
- $sql = "CREATE TYPE \"{$f_schema}\".\"{$name}\" AS ENUM ('";
+ $sql = \sprintf('CREATE TYPE "%s"."%s" AS ENUM (\'', $f_schema, $name);
$sql .= \implode("','", $values);
$sql .= "')";
@@ -293,15 +295,15 @@ trait TypeTrait
*
* @param string $name
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function getEnumValues($name)
{
$this->clean($name);
- $sql = "SELECT enumlabel AS enumval
+ $sql = \sprintf('SELECT enumlabel AS enumval
FROM pg_catalog.pg_type t JOIN pg_catalog.pg_enum e ON (t.oid=e.enumtypid)
- WHERE t.typname = '{$name}' ORDER BY e.oid";
+ WHERE t.typname = \'%s\' ORDER BY e.oid', $name);
return $this->selectSet($sql);
}
@@ -337,7 +339,7 @@ trait TypeTrait
$found = false;
$first = true;
$comment_sql = ''; // Accumulate comments for the columns
- $sql = "CREATE TYPE \"{$f_schema}\".\"{$name}\" AS (";
+ $sql = \sprintf('CREATE TYPE "%s"."%s" AS (', $f_schema, $name);
for ($i = 0; $i < $fields; ++$i) {
$this->fieldClean($field[$i]);
@@ -363,10 +365,10 @@ trait TypeTrait
case 'timestamp with time zone':
case 'timestamp without time zone':
$qual = \mb_substr($type[$i], 9);
- $sql .= "\"{$field[$i]}\" timestamp";
+ $sql .= \sprintf('"%s" timestamp', $field[$i]);
if ('' !== $length[$i]) {
- $sql .= "({$length[$i]})";
+ $sql .= \sprintf('(%s)', $length[$i]);
}
$sql .= $qual;
@@ -375,10 +377,10 @@ trait TypeTrait
case 'time with time zone':
case 'time without time zone':
$qual = \mb_substr($type[$i], 4);
- $sql .= "\"{$field[$i]}\" time";
+ $sql .= \sprintf('"%s" time', $field[$i]);
if ('' !== $length[$i]) {
- $sql .= "({$length[$i]})";
+ $sql .= \sprintf('(%s)', $length[$i]);
}
$sql .= $qual;
@@ -386,10 +388,10 @@ trait TypeTrait
break;
default:
- $sql .= "\"{$field[$i]}\" {$type[$i]}";
+ $sql .= \sprintf('"%s" %s', $field[$i], $type[$i]);
if ('' !== $length[$i]) {
- $sql .= "({$length[$i]})";
+ $sql .= \sprintf('(%s)', $length[$i]);
}
}
// Add array qualifier if necessary
@@ -398,7 +400,8 @@ trait TypeTrait
}
if ('' !== $colcomment[$i]) {
- $comment_sql .= "COMMENT ON COLUMN \"{$f_schema}\".\"{$name}\".\"{$field[$i]}\" IS '{$colcomment[$i]}';\n";
+ $comment_sql .= \sprintf('COMMENT ON COLUMN "%s"."%s"."%s" IS \'%s\';
+', $f_schema, $name, $field[$i], $colcomment[$i]);
}
$found = true;
@@ -444,7 +447,7 @@ trait TypeTrait
/**
* Returns a list of all casts in the database.
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function getCasts()
{
@@ -460,14 +463,14 @@ trait TypeTrait
';
}
- $sql = "
+ $sql = \sprintf('
SELECT
c.castsource::pg_catalog.regtype AS castsource,
c.casttarget::pg_catalog.regtype AS casttarget,
CASE WHEN c.castfunc=0 THEN NULL
ELSE c.castfunc::pg_catalog.regprocedure END AS castfunc,
c.castcontext,
- obj_description(c.oid, 'pg_cast') as castcomment
+ obj_description(c.oid, \'pg_cast\') as castcomment
FROM
(pg_catalog.pg_cast c LEFT JOIN pg_catalog.pg_proc p ON c.castfunc=p.oid JOIN pg_catalog.pg_namespace n3 ON p.pronamespace=n3.oid),
pg_catalog.pg_type t1,
@@ -479,9 +482,9 @@ trait TypeTrait
AND c.casttarget=t2.oid
AND t1.typnamespace=n1.oid
AND t2.typnamespace=n2.oid
- {$where}
+ %s
ORDER BY 1, 2
- ";
+ ', $where);
return $this->selectSet($sql);
}
@@ -489,24 +492,24 @@ trait TypeTrait
/**
* Returns a list of all conversions in the database.
*
- * @return \ADORecordSet|int
+ * @return ADORecordSet|int
*/
public function getConversions()
{
$c_schema = $this->_schema;
$this->clean($c_schema);
- $sql = "
+ $sql = \sprintf('
SELECT
c.conname,
pg_catalog.pg_encoding_to_char(c.conforencoding) AS conforencoding,
pg_catalog.pg_encoding_to_char(c.contoencoding) AS contoencoding,
c.condefault,
- pg_catalog.obj_description(c.oid, 'pg_conversion') AS concomment
+ pg_catalog.obj_description(c.oid, \'pg_conversion\') AS concomment
FROM pg_catalog.pg_conversion c, pg_catalog.pg_namespace n
WHERE n.oid = c.connamespace
- AND n.nspname='{$c_schema}'
+ AND n.nspname=\'%s\'
ORDER BY 1;
- ";
+ ', $c_schema);
return $this->selectSet($sql);
}
diff --git a/src/database/databasetraits/ViewTrait.php b/src/database/databasetraits/ViewTrait.php
index 41fe4c2a..ed74aace 100644
--- a/src/database/databasetraits/ViewTrait.php
+++ b/src/database/databasetraits/ViewTrait.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Database\Traits;
+use PHPPgAdmin\ADORecordSet;
+
/**
* Common trait for views manipulation.
*/
@@ -14,19 +16,19 @@ trait ViewTrait
/**
* Returns a list of all views in the database.
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getViews()
{
$c_schema = $this->_schema;
$this->clean($c_schema);
- $sql = "
+ $sql = \sprintf('
SELECT c.relname, pg_catalog.pg_get_userbyid(c.relowner) AS relowner,
- pg_catalog.obj_description(c.oid, 'pg_class') AS relcomment
+ pg_catalog.obj_description(c.oid, \'pg_class\') AS relcomment
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON (n.oid = c.relnamespace)
- WHERE (n.nspname='{$c_schema}') AND (c.relkind = 'v'::\"char\")
- ORDER BY relname";
+ WHERE (n.nspname=\'%s\') AND (c.relkind = \'v\'::"char")
+ ORDER BY relname', $c_schema);
return $this->selectSet($sql);
}
@@ -34,19 +36,19 @@ trait ViewTrait
/**
* Returns a list of all materialized views in the database.
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getMaterializedViews()
{
$c_schema = $this->_schema;
$this->clean($c_schema);
- $sql = "
+ $sql = \sprintf('
SELECT c.relname, pg_catalog.pg_get_userbyid(c.relowner) AS relowner,
- pg_catalog.obj_description(c.oid, 'pg_class') AS relcomment
+ pg_catalog.obj_description(c.oid, \'pg_class\') AS relcomment
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON (n.oid = c.relnamespace)
- WHERE (n.nspname='{$c_schema}') AND (c.relkind = 'm'::\"char\")
- ORDER BY relname";
+ WHERE (n.nspname=\'%s\') AND (c.relkind = \'m\'::"char")
+ ORDER BY relname', $c_schema);
return $this->selectSet($sql);
}
@@ -97,7 +99,7 @@ trait ViewTrait
$obj_type = $materialized ? ' MATERIALIZED VIEW ' : ' VIEW ';
- $sql .= $obj_type . " \"{$f_schema}\".\"{$viewname}\" AS {$definition}";
+ $sql .= $obj_type . \sprintf(' "%s"."%s" AS %s', $f_schema, $viewname, $definition);
$status = $this->execute($sql);
@@ -163,7 +165,7 @@ trait ViewTrait
*
* @param string $view The name of the view or materialized to retrieve
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function getView($view)
{
@@ -171,14 +173,14 @@ trait ViewTrait
$this->clean($c_schema);
$this->clean($view);
- $sql = "
+ $sql = \sprintf('
SELECT c.relname, n.nspname, pg_catalog.pg_get_userbyid(c.relowner) AS relowner,
pg_catalog.pg_get_viewdef(c.oid, true) AS vwdefinition,
- pg_catalog.obj_description(c.oid, 'pg_class') AS relcomment,
+ pg_catalog.obj_description(c.oid, \'pg_class\') AS relcomment,
c.relkind
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON (n.oid = c.relnamespace)
- WHERE (c.relname = '{$view}') AND n.nspname='{$c_schema}'";
+ WHERE (c.relname = \'%s\') AND n.nspname=\'%s\'', $view, $c_schema);
return $this->selectSet($sql);
}
@@ -186,10 +188,10 @@ trait ViewTrait
/**
* Alter a view's owner.
*
- * @param \PHPPgAdmin\ADORecordSet $vwrs The view recordSet returned by getView()
- * @param null|string $owner
+ * @param ADORecordSet $vwrs The view recordSet returned by getView()
+ * @param null|string $owner
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*
* @internal param $name new view's owner
*/
@@ -203,7 +205,7 @@ trait ViewTrait
// If owner has been changed, then do the alteration. We are
// careful to avoid this generally as changing owner is a
// superuser only function.
- $sql = "ALTER {$type} \"{$f_schema}\".\"{$vwrs->fields['relname']}\" OWNER TO \"{$owner}\"";
+ $sql = \sprintf('ALTER %s "%s"."%s" OWNER TO "%s"', $type, $f_schema, $vwrs->fields['relname'], $owner);
return $this->execute($sql);
}
@@ -214,10 +216,10 @@ trait ViewTrait
/**
* Rename a view.
*
- * @param \PHPPgAdmin\ADORecordSet $vwrs The view recordSet returned by getView()
- * @param string $name The new view's name
+ * @param ADORecordSet $vwrs The view recordSet returned by getView()
+ * @param string $name The new view's name
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function alterViewName($vwrs, $name)
{
@@ -227,7 +229,7 @@ trait ViewTrait
if (!empty($name) && ($name !== $vwrs->fields['relname'])) {
$f_schema = $this->_schema;
$this->fieldClean($f_schema);
- $sql = "ALTER {$type} \"{$f_schema}\".\"{$vwrs->fields['relname']}\" RENAME TO \"{$name}\"";
+ $sql = \sprintf('ALTER %s "%s"."%s" RENAME TO "%s"', $type, $f_schema, $vwrs->fields['relname'], $name);
$status = $this->execute($sql);
if (0 === $status) {
@@ -243,10 +245,10 @@ trait ViewTrait
/**
* Alter a view's schema.
*
- * @param \PHPPgAdmin\ADORecordSet $vwrs The view recordSet returned by getView()
- * @param string $schema
+ * @param ADORecordSet $vwrs The view recordSet returned by getView()
+ * @param string $schema
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*
* @internal param The $name new view's schema
*/
@@ -260,7 +262,7 @@ trait ViewTrait
$this->fieldClean($f_schema);
// If tablespace has been changed, then do the alteration. We
// don't want to do this unnecessarily.
- $sql = "ALTER {$type} \"{$f_schema}\".\"{$vwrs->fields['relname']}\" SET SCHEMA \"{$schema}\"";
+ $sql = \sprintf('ALTER %s "%s"."%s" SET SCHEMA "%s"', $type, $f_schema, $vwrs->fields['relname'], $schema);
return $this->execute($sql);
}
@@ -274,7 +276,7 @@ trait ViewTrait
* @param string $viewname The name of the view to drop
* @param string $cascade True to cascade drop, false to restrict
*
- * @return int|\PHPPgAdmin\ADORecordSet
+ * @return ADORecordSet|int
*/
public function dropView($viewname, $cascade)
{
@@ -285,7 +287,7 @@ trait ViewTrait
$this->fieldClean($f_schema);
$this->fieldClean($viewname);
- $sql = "DROP {$type} \"{$f_schema}\".\"{$viewname}\"";
+ $sql = \sprintf('DROP %s "%s"."%s"', $type, $f_schema, $viewname);
if ($cascade) {
$sql .= ' CASCADE';
@@ -316,11 +318,11 @@ trait ViewTrait
* Protected method which alter a view
* SHOULDN'T BE CALLED OUTSIDE OF A TRANSACTION.
*
- * @param \PHPPgAdmin\ADORecordSet $vwrs The view recordSet returned by getView()
- * @param string $name The new name for the view
- * @param string $owner The new owner for the view
- * @param string $schema Schema name
- * @param string $comment The comment on the view
+ * @param ADORecordSet $vwrs The view recordSet returned by getView()
+ * @param string $name The new name for the view
+ * @param string $owner The new owner for the view
+ * @param string $schema Schema name
+ * @param string $comment The comment on the view
*
* @return int 0 success
*/
diff --git a/src/decorators/CallbackDecorator.php b/src/decorators/CallbackDecorator.php
index 4c4d0cc9..f6cd2bd5 100644
--- a/src/decorators/CallbackDecorator.php
+++ b/src/decorators/CallbackDecorator.php
@@ -6,9 +6,11 @@
namespace PHPPgAdmin\Decorators;
+use Closure;
+
class CallbackDecorator extends Decorator
{
- public function __construct(\Closure $callback, $param = null)
+ public function __construct(Closure $callback, $param = null)
{
$this->fn = $callback;
$this->p = $param;
diff --git a/src/decorators/Decorator.php b/src/decorators/Decorator.php
index c23f75d8..14bddc0e 100644
--- a/src/decorators/Decorator.php
+++ b/src/decorators/Decorator.php
@@ -6,9 +6,12 @@
namespace PHPPgAdmin\Decorators;
+use Closure;
+use PHPPgAdmin\Traits\HelperTrait;
+
class Decorator
{
- use \PHPPgAdmin\Traits\HelperTrait;
+ use HelperTrait;
public $container;
@@ -56,10 +59,10 @@ class Decorator
}
/**
- * @param \Closure $callback
- * @param (mixed|string)[]|null $params
+ * @param Closure $callback
+ * @param ((mixed|string)[]|null) $params
*/
- public static function callback(\Closure $callback, ?array $params = null)
+ public static function callback(Closure $callback, ?array $params = null)
{
return new CallbackDecorator($callback, $params);
}
@@ -75,7 +78,7 @@ class Decorator
public static function concat(/* ... */)
{
- return new \PHPPgAdmin\Decorators\ConcatDecorator(\func_get_args());
+ return new ConcatDecorator(\func_get_args());
}
/**
@@ -84,7 +87,7 @@ class Decorator
*/
public static function replace(string $str, array $params)
{
- return new \PHPPgAdmin\Decorators\ReplaceDecorator($str, $params);
+ return new ReplaceDecorator($str, $params);
}
/**
diff --git a/src/decorators/RedirectUrlDecorator.php b/src/decorators/RedirectUrlDecorator.php
index cfb2570d..3ff70003 100644
--- a/src/decorators/RedirectUrlDecorator.php
+++ b/src/decorators/RedirectUrlDecorator.php
@@ -36,7 +36,7 @@ class RedirectUrlDecorator extends Decorator
$varvalue = Decorator::value_url($value, $fields);
if ('subject' === $varname) {
- $url = \str_replace('redirect?', 'redirect/' . $varvalue . '?', $url);
+ $url = \str_replace('redirect?', 'redirect/' . $varvalue . '?', $url);
} else {
$url .= $sep . $varname . '=' . $varvalue;
}
@@ -46,7 +46,7 @@ class RedirectUrlDecorator extends Decorator
}
if ('' !== containerInstance()->subFolder && (0 === \mb_strpos($url, '/')) && (false === \mb_strpos($url, \containerInstance()->subFolder))) {
- // $url = \str_replace('//', '/', \containerInstance()->subFolder . '/' . $url);
+ // $url = \str_replace('//', '/', \containerInstance()->subFolder . '/' . $url);
}
return \str_replace('.php', '', $url);
diff --git a/src/help/PostgresDoc.php b/src/help/PostgresDoc.php
index cfea2190..27d7ad08 100644
--- a/src/help/PostgresDoc.php
+++ b/src/help/PostgresDoc.php
@@ -6,6 +6,8 @@
namespace PHPPgAdmin\Help;
+use PHPPgAdmin\Traits\HelperTrait;
+
/**
* Help links for PostgreSQL 7.4 documentation.
*
@@ -13,7 +15,7 @@ namespace PHPPgAdmin\Help;
*/
class PostgresDoc
{
- use \PHPPgAdmin\Traits\HelperTrait;
+ use HelperTrait;
/**
* @var float
diff --git a/src/lib.inc.php b/src/lib.inc.php
index 65be07a9..b8c81cbb 100644
--- a/src/lib.inc.php
+++ b/src/lib.inc.php
@@ -4,7 +4,15 @@
* PHPPgAdmin 6.1.3
*/
-function getAppInstance(): \Slim\App
+use PHPPgAdmin\ContainerUtils;
+use Slim\App;
+use Slim\Http\Request;
+use Slim\Http\Response;
+
+/**
+ * PHPPgAdmin 6.1.3.
+ */
+function getAppInstance(): App
{
$subfolder = '';
// Check to see if the configuration file exists, if not, explain
@@ -47,29 +55,29 @@ function getAppInstance(): \Slim\App
$conf['IN_TEST'] = IN_TEST;
// Fetch App and DI Container
- $app = \PHPPgAdmin\ContainerUtils::getAppInstance($conf);
+ $app = ContainerUtils::getAppInstance($conf);
return $app;
}
-function containerInstance(): \PHPPgAdmin\ContainerUtils
+function containerInstance(): ContainerUtils
{
$app = getAppInstance();
$container = $app->getContainer();
- if (!$container instanceof \PHPPgAdmin\ContainerUtils) {
+ if (!$container instanceof ContainerUtils) {
\trigger_error('App Container must be an instance of \\Slim\\Container', \E_USER_ERROR);
}
return $container;
}
-function requestInstance(): \Slim\Http\Request
+function requestInstance(): Request
{
return \containerInstance()->request;
}
-function responseInstance(): \Slim\Http\Response
+function responseInstance(): Response
{
return \containerInstance()->response;
}
diff --git a/src/middleware/Middleware.php b/src/middleware/Middleware.php
index 9b0b0939..d514f4e5 100644
--- a/src/middleware/Middleware.php
+++ b/src/middleware/Middleware.php
@@ -6,9 +6,11 @@
namespace PHPPgAdmin\Middleware;
+use PHPPgAdmin\Traits\HelperTrait;
+
class Middleware
{
- use \PHPPgAdmin\Traits\HelperTrait;
+ use HelperTrait;
protected $container;
diff --git a/src/middleware/PopulateRequestResponse.php b/src/middleware/PopulateRequestResponse.php
index 84e55aee..d3a7f5c6 100644
--- a/src/middleware/PopulateRequestResponse.php
+++ b/src/middleware/PopulateRequestResponse.php
@@ -6,17 +6,24 @@
namespace PHPPgAdmin\Middleware;
+use PHPPgAdmin\ContainerUtils;
+use PHPPgAdmin\Traits\HelperTrait;
+use PHPPgAdmin\ViewManager;
+use Slim\Http\Request;
+use Slim\Http\Response;
+use Slim\Http\Uri;
+
/**
* Set the requestobj and responseobj properties of the container
* as the value of $request and $response, which already contain the route.
*/
class PopulateRequestResponse extends Middleware
{
- use \PHPPgAdmin\Traits\HelperTrait;
+ use HelperTrait;
public function __invoke(
- \Slim\Http\Request $request,
- \Slim\Http\Response $response,
+ Request $request,
+ Response $response,
$next
) {
$container = $this->container;
@@ -88,12 +95,12 @@ class PopulateRequestResponse extends Middleware
return $response;
}
- private function getUri(\Slim\Http\Request $request): \Slim\Http\Uri
+ private function getUri(Request $request): Uri
{
return $request->getUri();
}
- private function getViewManager(\PHPPgAdmin\ContainerUtils $container): \PHPPgAdmin\ViewManager
+ private function getViewManager(ContainerUtils $container): ViewManager
{
return $container->get('view');
}
diff --git a/src/traits/AdminTrait.php b/src/traits/AdminTrait.php
index 4f46029d..0890b083 100644
--- a/src/traits/AdminTrait.php
+++ b/src/traits/AdminTrait.php
@@ -38,7 +38,10 @@ trait AdminTrait
foreach ($_REQUEST['ma'] as $v) {
$a = \unserialize(\htmlspecialchars_decode($v, \ENT_QUOTES));
- echo '<p>', \sprintf($this->lang['strconfclustertable'], $this->misc->printVal($a['table'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfclustertable'],
+ $this->misc->printVal($a['table'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="table[]" value="', \htmlspecialchars($a['table']), '" />' . \PHP_EOL;
} // END if multi cluster
} else {
@@ -48,10 +51,16 @@ trait AdminTrait
echo '<form action="' . \containerInstance()->subFolder . "/src/views/{$script}\" method=\"post\">" . \PHP_EOL;
if ('table' === $type) {
- echo '<p>', \sprintf($this->lang['strconfclustertable'], $this->misc->printVal($_REQUEST['object'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfclustertable'],
+ $this->misc->printVal($_REQUEST['object'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="table" value="', \htmlspecialchars($_REQUEST['object']), '" />' . \PHP_EOL;
} else {
- echo '<p>', \sprintf($this->lang['strconfclusterdatabase'], $this->misc->printVal($_REQUEST['object'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfclusterdatabase'],
+ $this->misc->printVal($_REQUEST['object'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="table" value="" />' . \PHP_EOL;
}
}
@@ -90,7 +99,10 @@ trait AdminTrait
foreach ($_REQUEST['ma'] as $v) {
$a = \unserialize(\htmlspecialchars_decode($v, \ENT_QUOTES));
- echo '<p>', \sprintf($this->lang['strconfreindextable'], $this->misc->printVal($a['table'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfreindextable'],
+ $this->misc->printVal($a['table'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="table[]" value="', \htmlspecialchars($a['table']), '" />' . \PHP_EOL;
} // END if multi reindex
} else {
@@ -100,10 +112,16 @@ trait AdminTrait
echo '<form action="' . \containerInstance()->subFolder . "/src/views/{$script}\" method=\"post\">" . \PHP_EOL;
if ('table' === $type) {
- echo '<p>', \sprintf($this->lang['strconfreindextable'], $this->misc->printVal($_REQUEST['object'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfreindextable'],
+ $this->misc->printVal($_REQUEST['object'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="table" value="', \htmlspecialchars($_REQUEST['object']), '" />' . \PHP_EOL;
} else {
- echo '<p>', \sprintf($this->lang['strconfreindexdatabase'], $this->misc->printVal($_REQUEST['object'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfreindexdatabase'],
+ $this->misc->printVal($_REQUEST['object'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="table" value="" />' . \PHP_EOL;
}
}
@@ -145,7 +163,10 @@ trait AdminTrait
foreach ($_REQUEST['ma'] as $v) {
$a = \unserialize(\htmlspecialchars_decode($v, \ENT_QUOTES));
- echo '<p>', \sprintf($this->lang['strconfanalyzetable'], $this->misc->printVal($a['table'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfanalyzetable'],
+ $this->misc->printVal($a['table'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="table[]" value="', \htmlspecialchars($a['table']), '" />' . \PHP_EOL;
} // END if multi analyze
} else {
@@ -155,10 +176,16 @@ trait AdminTrait
echo '<form action="' . \containerInstance()->subFolder . "/src/views/{$script}\" method=\"post\">" . \PHP_EOL;
if ('table' === $type) {
- echo '<p>', \sprintf($this->lang['strconfanalyzetable'], $this->misc->printVal($_REQUEST['object'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfanalyzetable'],
+ $this->misc->printVal($_REQUEST['object'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="table" value="', \htmlspecialchars($_REQUEST['object']), '" />' . \PHP_EOL;
} else {
- echo '<p>', \sprintf($this->lang['strconfanalyzedatabase'], $this->misc->printVal($_REQUEST['object'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfanalyzedatabase'],
+ $this->misc->printVal($_REQUEST['object'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="table" value="" />' . \PHP_EOL;
}
}
@@ -193,7 +220,10 @@ trait AdminTrait
foreach ($_REQUEST['ma'] as $v) {
$a = \unserialize(\htmlspecialchars_decode($v, \ENT_QUOTES));
- echo '<p>', \sprintf($this->lang['strconfvacuumtable'], $this->misc->printVal($a['table'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfvacuumtable'],
+ $this->misc->printVal($a['table'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="table[]" value="', \htmlspecialchars($a['table']), '" />' . \PHP_EOL;
}
} else {
@@ -204,10 +234,16 @@ trait AdminTrait
echo '<form action="' . \containerInstance()->subFolder . "/src/views/{$script}\" method=\"post\">" . \PHP_EOL;
if ('table' === $type) {
- echo '<p>', \sprintf($this->lang['strconfvacuumtable'], $this->misc->printVal($_REQUEST['object'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfvacuumtable'],
+ $this->misc->printVal($_REQUEST['object'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="table" value="', \htmlspecialchars($_REQUEST['object']), '" />' . \PHP_EOL;
} else {
- echo '<p>', \sprintf($this->lang['strconfvacuumdatabase'], $this->misc->printVal($_REQUEST['object'])), '</p>' . \PHP_EOL;
+ echo '<p>', \sprintf(
+ $this->lang['strconfvacuumdatabase'],
+ $this->misc->printVal($_REQUEST['object'])
+ ), '</p>' . \PHP_EOL;
echo '<input type="hidden" name="table" value="" />' . \PHP_EOL;
}
}
@@ -622,7 +658,10 @@ trait AdminTrait
);
if (0 === $status) {
- $this->doAdmin($type, \sprintf($this->lang['strsetvacuumtablesaved'], $_REQUEST['table']));
+ $this->doAdmin($type, \sprintf(
+ $this->lang['strsetvacuumtablesaved'],
+ $_REQUEST['table']
+ ));
} else {
$this->confirmEditAutovacuum($type, $this->lang['strsetvacuumtablefail']);
}
@@ -646,9 +685,15 @@ trait AdminTrait
$status = $data->dropAutovacuum($_POST['table']);
if (0 === $status) {
- $this->doAdmin($type, \sprintf($this->lang['strvacuumtablereset'], $this->misc->printVal($_POST['table'])));
+ $this->doAdmin($type, \sprintf(
+ $this->lang['strvacuumtablereset'],
+ $this->misc->printVal($_POST['table'])
+ ));
} else {
- $this->doAdmin($type, \sprintf($this->lang['strdelvacuumtablefail'], $this->misc->printVal($_POST['table'])));
+ $this->doAdmin($type, \sprintf(
+ $this->lang['strdelvacuumtablefail'],
+ $this->misc->printVal($_POST['table'])
+ ));
}
}