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>2021-11-25 06:08:15 +0300
committerFelipe Figueroa <amenadiel@gmail.com>2021-11-25 06:08:15 +0300
commitb74660b55e38fd359732a441eb14652dec65e067 (patch)
tree816dcba16c6356bf8fa5c312714def4eecb75fd9 /src/controllers/SchemasController.php
parentf7b0193500faec8da57a29e907d9cf445b8356a8 (diff)
renames folders to align with namespacesHEADdevelop
Diffstat (limited to 'src/controllers/SchemasController.php')
-rw-r--r--src/controllers/SchemasController.php614
1 files changed, 0 insertions, 614 deletions
diff --git a/src/controllers/SchemasController.php b/src/controllers/SchemasController.php
deleted file mode 100644
index e8dbc174..00000000
--- a/src/controllers/SchemasController.php
+++ /dev/null
@@ -1,614 +0,0 @@
-<?php
-
-/**
- * PHPPgAdmin6
- */
-
-namespace PHPPgAdmin\Controller;
-
-use PHPPgAdmin\Decorators\Decorator;
-use PHPPgAdmin\Traits\ExportTrait;
-use Slim\Http\Response;
-
-/**
- * Base controller class.
- */
-class SchemasController extends BaseController
-{
- use ExportTrait;
-
- public $controller_title = 'strschemas';
-
- /**
- * Default method to render the controller according to the action parameter.
- *
- * @return null|Response|string
- */
- public function render()
- {
- if ('tree' === $this->action) {
- return $this->doTree();
- }
-
- if ('subtree' === $this->action) {
- return $this->doSubTree();
- }
-
- if (null !== $this->getPostParam('cancel')) {
- $this->action = '';
- }
-
- $header_template = 'header.twig';
-
- \ob_start();
-
- switch ($this->action) {
- case 'create':
- if (null !== $this->getPostParam('create')) {
- $this->doSaveCreate();
- } else {
- $this->doCreate();
- }
-
- break;
- case 'alter':
- if (null !== $this->getPostParam('alter')) {
- $this->doSaveAlter();
- } else {
- $this->doAlter();
- }
-
- break;
- case 'drop':
- if (null !== $this->getPostParam('drop')) {
- $this->doDrop(false);
- } else {
- $this->doDrop(true);
- }
-
- break;
- case 'export':
- $this->doExport();
-
- break;
-
- default:
- $header_template = 'header_datatables.twig';
- $this->doDefault();
-
- break;
- }
-
- $output = \ob_get_clean();
-
- $this->printHeader($this->headerTitle(), null, true, $header_template);
- $this->printBody();
-
- echo $output;
-
- return $this->printFooter();
- }
-
- /**
- * Show default list of schemas in the database.
- *
- * @param mixed $msg
- */
- public function doDefault($msg = '')
- {
- $data = $this->misc->getDatabaseAccessor();
-
- $this->printTrail('database');
- $this->printTabs('database', 'schemas');
- $this->printMsg($msg);
-
- // Check that the DB actually supports schemas
- $schemas = $data->getSchemas();
- $destination = $this->container->getDestinationWithLastTab('schema');
-
- $columns = [
- 'schema' => [
- 'title' => $this->lang['strschema'],
- 'field' => Decorator::field('nspname'),
- 'url' => \containerInstance()->subFolder . \sprintf(
- '%s&amp;',
- $destination
- ),
- 'vars' => ['schema' => 'nspname'],
- ],
- 'owner' => [
- 'title' => $this->lang['strowner'],
- 'field' => Decorator::field('nspowner'),
- ],
- ];
-
- if ((bool) ($this->conf['display_sizes']['schemas'] ?? false)) {
- $columns['schema_size'] = [
- 'title' => $this->lang['strsize'],
- 'field' => Decorator::field('schema_size'),
- ];
- }
- $columns = \array_merge($columns, [
- 'actions' => [
- 'title' => $this->lang['stractions'],
- ],
- 'comment' => [
- 'title' => $this->lang['strcomment'],
- 'field' => Decorator::field('nspcomment'),
- ],
- ]);
-
- $actions = [
- 'multiactions' => [
- 'keycols' => ['nsp' => 'nspname'],
- 'url' => 'schemas',
- ],
- 'drop' => [
- 'content' => $this->lang['strdrop'],
- 'attr' => [
- 'href' => [
- 'url' => 'schemas',
- 'urlvars' => [
- 'action' => 'drop',
- 'nsp' => Decorator::field('nspname'),
- ],
- ],
- ],
- 'multiaction' => 'drop',
- ],
- 'privileges' => [
- 'content' => $this->lang['strprivileges'],
- 'attr' => [
- 'href' => [
- 'url' => 'privileges',
- 'urlvars' => [
- 'subject' => 'schema',
- 'schema' => Decorator::field('nspname'),
- ],
- ],
- ],
- ],
- 'alter' => [
- 'content' => $this->lang['stralter'],
- 'attr' => [
- 'href' => [
- 'url' => 'schemas',
- 'urlvars' => [
- 'action' => 'alter',
- 'schema' => Decorator::field('nspname'),
- ],
- ],
- ],
- ],
- ];
-
- if (!$data->hasAlterSchema()) {
- unset($actions['alter']);
- }
-
- if (self::isRecordset($schemas)) {
- echo $this->printTable($schemas, $columns, $actions, 'schemas-schemas', $this->lang['strnoschemas']);
- }
-
-return $this->printNavLinks(['create' => [
- 'attr' => [
- 'href' => [
- 'url' => 'schemas',
- 'urlvars' => [
- 'action' => 'create',
- 'server' => $_REQUEST['server'],
- 'database' => $_REQUEST['database'],
- ],
- ],
- ],
- 'content' => $this->lang['strcreateschema'],
- ]], 'schemas-schemas', \get_defined_vars());
- }
-
- /**
- * Generate XML for the browser tree.
- *
- * @return Response|string
- */
- public function doTree()
- {
- $data = $this->misc->getDatabaseAccessor();
-
- $schemas = $data->getSchemas();
-
- $reqvars = $this->misc->getRequestVars('schema');
-
- $attrs = [
- 'text' => Decorator::field('nspname'),
- 'icon' => 'Schema',
- 'toolTip' => Decorator::field('nspcomment'),
- 'action' => Decorator::redirecturl(
- 'redirect',
- $reqvars,
- [
- 'subject' => 'schema',
- 'schema' => Decorator::field('nspname'),
- ]
- ),
- 'branch' => Decorator::url(
- 'schemas',
- $reqvars,
- [
- 'action' => 'subtree',
- 'schema' => Decorator::field('nspname'),
- ]
- ),
- ];
-
- return $this->printTree($schemas, $attrs, 'schemas');
- }
-
- /**
- * @return Response|string
- */
- public function doSubTree()
- {
- $tabs = $this->misc->getNavTabs('schema');
-
- $items = $this->adjustTabsForTree($tabs);
-
- $reqvars = $this->misc->getRequestVars('schema');
-
- $attrs = [
- 'text' => Decorator::field('title'),
- 'icon' => Decorator::field('icon'),
- 'action' => Decorator::actionurl(
- Decorator::field('url'),
- $reqvars,
- Decorator::field('urlvars', [])
- ),
- 'branch' => Decorator::url(
- Decorator::field('url'),
- $reqvars,
- Decorator::field('urlvars'),
- ['action' => 'tree']
- ),
- ];
-
- return $this->printTree($items, $attrs, 'schema');
- }
-
- /**
- * Displays a screen where they can enter a new schema.
- *
- * @param mixed $msg
- */
- public function doCreate($msg = '')
- {
- $data = $this->misc->getDatabaseAccessor();
-
- $server_info = $this->misc->getServerInfo();
-
- $this->coalesceArr($_POST, 'formName', '');
-
- $this->coalesceArr($_POST, 'formAuth', $server_info['username']);
-
- $this->coalesceArr($_POST, 'formSpc', '');
-
- $this->coalesceArr($_POST, 'formComment', '');
-
- // Fetch all users from the database
- $users = $data->getUsers();
-
- $this->printTrail('database');
- $this->printTitle($this->lang['strcreateschema'], 'pg.schema.create');
- $this->printMsg($msg);
-
- echo '<form action="schemas" method="post">' . \PHP_EOL;
- echo '<table style="width: 100%">' . \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;
- // Owner
- 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 \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 \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;
-
- echo '</table>' . \PHP_EOL;
- echo '<p>' . \PHP_EOL;
- 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 \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;
- }
-
- /**
- * Actually creates the new schema in the database.
- */
- public function doSaveCreate(): void
- {
- $data = $this->misc->getDatabaseAccessor();
-
- // Check that they've given a name
- if ('' === $_POST['formName']) {
- $this->doCreate($this->lang['strschemaneedsname']);
- } else {
- $status = $data->createSchema($_POST['formName'], $_POST['formAuth'], $_POST['formComment']);
-
- if (0 === $status) {
- $this->view->setReloadBrowser(true);
- $this->doDefault($this->lang['strschemacreated']);
- } else {
- $this->doCreate($this->lang['strschemacreatedbad']);
- }
- }
- }
-
- /**
- * Display a form to permit editing schema properies.
- * TODO: permit changing owner.
- *
- * @param mixed $msg
- */
- public function doAlter($msg = '')
- {
- $data = $this->misc->getDatabaseAccessor();
-
- $this->printTrail('schema');
- $this->printTitle($this->lang['stralter'], 'pg.schema.alter');
- $this->printMsg($msg);
-
- $schema = $data->getSchemaByName($_REQUEST['schema']);
-
- if (0 < $schema->RecordCount()) {
- $this->coalesceArr($_POST, 'comment', $schema->fields['nspcomment']);
-
- $this->coalesceArr($_POST, 'schema', $_REQUEST['schema']);
-
- $this->coalesceArr($_POST, 'name', $_REQUEST['schema']);
-
- $this->coalesceArr($_POST, 'owner', $schema->fields['ownername']);
-
- echo '<form action="schemas" method="post">' . \PHP_EOL;
- echo '<table>' . \PHP_EOL;
-
- echo "\t<tr>" . \PHP_EOL;
- echo \sprintf(
- ' <th class="data left required">%s</th>',
- $this->lang['strname']
- ) . \PHP_EOL;
- echo "\t\t<td class=\"data1\">";
- 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 \sprintf(
- '<tr><th class="data left required">%s</th>',
- $this->lang['strowner']
- ) . \PHP_EOL;
- echo '<td class="data2"><select name="owner">';
-
- while (!$users->EOF) {
- $uname = $users->fields['usename'];
- echo '<option value="', \htmlspecialchars($uname), '"', ($uname === $_POST['owner']) ? ' selected="selected"' : '', '>', \htmlspecialchars($uname), '</option>' . \PHP_EOL;
- $users->MoveNext();
- }
- echo '</select></td></tr>' . \PHP_EOL;
- } else {
- echo \sprintf(
- '<input name="owner" value="%s" type="hidden" />',
- $_POST['owner']
- );
- }
-
- echo "\t<tr>" . \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 \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 \sprintf(
- '<p>%s</p>',
- $this->lang['strnodata']
- ) . \PHP_EOL;
- }
- }
-
- /**
- * Save the form submission containing changes to a schema.
- */
- public function doSaveAlter(): void
- {
- $data = $this->misc->getDatabaseAccessor();
-
- $status = $data->updateSchema($_POST['schema'], $_POST['comment'], $_POST['name'], $_POST['owner']);
-
- if (0 === $status) {
- $this->view->setReloadBrowser(true);
- $this->doDefault($this->lang['strschemaaltered']);
- } else {
- $this->doAlter($this->lang['strschemaalteredbad']);
- }
- }
-
- /**
- * Show confirmation of drop and perform actual drop.
- *
- * @param mixed $confirm
- */
- public function doDrop($confirm)
- {
- $data = $this->misc->getDatabaseAccessor();
-
- if (empty($_REQUEST['nsp']) && empty($_REQUEST['ma'])) {
- return $this->doDefault($this->lang['strspecifyschematodrop']);
- }
-
- if ($confirm) {
- $this->printTrail('schema');
- $this->printTitle($this->lang['strdrop'], 'pg.schema.drop');
- echo '<form action="schemas" method="post">' . \PHP_EOL;
- //If multi drop
- 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 '<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 '<input type="hidden" name="nsp" value="', \htmlspecialchars($_REQUEST['nsp']), '" />' . \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 \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;
- } elseif (\is_array($_POST['nsp'])) {
- $msg = '';
- $status = $data->beginTransaction();
-
- if (0 === $status) {
- foreach ($_POST['nsp'] as $s) {
- $status = $data->dropSchema($s, isset($_POST['cascade']));
-
- if (0 === $status) {
- $msg .= \sprintf(
- '%s: %s<br />',
- \htmlentities($s, \ENT_QUOTES, 'UTF-8'),
- $this->lang['strschemadropped']
- );
- } else {
- $data->endTransaction();
- $this->doDefault(\sprintf(
- '%s%s: %s<br />',
- $msg,
- \htmlentities($s, \ENT_QUOTES, 'UTF-8'),
- $this->lang['strschemadroppedbad']
- ));
-
- return;
- }
- }
- }
-
- if (0 === $data->endTransaction()) {
- // Everything went fine, back to the Default page....
- $this->view->setReloadBrowser(true);
- $this->doDefault($msg);
- } else {
- $this->doDefault($this->lang['strschemadroppedbad']);
- }
- } else {
- $status = $data->dropSchema($_POST['nsp'], isset($_POST['cascade']));
-
- if (0 === $status) {
- $this->view->setReloadBrowser(true);
- $this->doDefault($this->lang['strschemadropped']);
- } else {
- $this->doDefault($this->lang['strschemadroppedbad']);
- }
- }
- }
-
- /**
- * Displays options for database download.
- *
- * @param mixed $msg
- */
- public function doExport($msg = '')
- {
- $this->printTrail('schema');
- $this->printTabs('schema', 'export');
- $this->printMsg($msg);
-
- $subject = 'schema';
- $object = $_REQUEST['schema'];
-
- echo $this->formHeader('dbexport');
-
- echo $this->dataOnly(true, true);
-
- echo $this->structureOnly();
-
- echo $this->structureAndData(true);
-
- echo $this->displayOrDownload(!(\mb_strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE') && isset($_SERVER['HTTPS'])));
-
- echo $this->formFooter($subject, $object);
- }
-}