| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- <?php
- /* vim: set expandtab sw=4 ts=4 sts=4: */
- /**
- * Central Columns view/edit
- *
- * @package PhpMyAdmin\Controllers
- */
- declare(strict_types=1);
- namespace PhpMyAdmin\Controllers\Database;
- use PhpMyAdmin\CentralColumns;
- use PhpMyAdmin\Core;
- use PhpMyAdmin\DatabaseInterface;
- use PhpMyAdmin\Message;
- use PhpMyAdmin\Response;
- use PhpMyAdmin\Template;
- /**
- * Class CentralColumnsController
- * @package PhpMyAdmin\Controllers\Database
- */
- class CentralColumnsController extends AbstractController
- {
- /**
- * @var CentralColumns
- */
- private $centralColumns;
- /**
- * CentralColumnsController constructor.
- *
- * @param Response $response Response instance
- * @param DatabaseInterface $dbi DatabaseInterface instance
- * @param Template $template Template object
- * @param string $db Database name
- * @param CentralColumns $centralColumns CentralColumns instance
- */
- public function __construct($response, $dbi, Template $template, $db, $centralColumns)
- {
- parent::__construct($response, $dbi, $template, $db);
- $this->centralColumns = $centralColumns;
- }
- /**
- * @param array $params Request parameters
- * @return string HTML
- */
- public function index(array $params): string
- {
- global $pmaThemeImage, $text_dir;
- if (! empty($params['total_rows'])
- && Core::isValid($params['total_rows'], 'integer')
- ) {
- $totalRows = (int) $params['total_rows'];
- } else {
- $totalRows = $this->centralColumns->getCount($this->db);
- }
- $pos = 0;
- if (Core::isValid($params['pos'], 'integer')) {
- $pos = (int) $params['pos'];
- }
- return $this->centralColumns->getHtmlForMain(
- $this->db,
- $totalRows,
- $pos,
- $pmaThemeImage,
- $text_dir
- );
- }
- /**
- * @param array $params Request parameters
- * @return array JSON
- */
- public function getColumnList(array $params): array
- {
- return $this->centralColumns->getListRaw(
- $this->db,
- $params['cur_table'] ?? ''
- );
- }
- /**
- * @param array $params Request parameters
- * @return string HTML
- */
- public function populateColumns(array $params): string
- {
- return $this->centralColumns->getHtmlForColumnDropdown(
- $this->db,
- $params['selectedTable']
- );
- }
- /**
- * @param array $params Request parameters
- * @return true|Message
- */
- public function editSave(array $params)
- {
- $columnDefault = $params['col_default'];
- if ($columnDefault === 'NONE' && $params['col_default_sel'] !== 'USER_DEFINED') {
- $columnDefault = '';
- }
- return $this->centralColumns->updateOneColumn(
- $this->db,
- $params['orig_col_name'],
- $params['col_name'],
- $params['col_type'],
- $params['col_attribute'],
- $params['col_length'],
- isset($params['col_isNull']) ? 1 : 0,
- $params['collation'],
- $params['col_extra'] ?? '',
- $columnDefault
- );
- }
- /**
- * @param array $params Request parameters
- * @return true|Message
- */
- public function addNewColumn(array $params)
- {
- $columnDefault = $params['col_default'];
- if ($columnDefault === 'NONE' && $params['col_default_sel'] !== 'USER_DEFINED') {
- $columnDefault = '';
- }
- return $this->centralColumns->updateOneColumn(
- $this->db,
- '',
- $params['col_name'],
- $params['col_type'],
- $params['col_attribute'],
- $params['col_length'],
- isset($params['col_isNull']) ? 1 : 0,
- $params['collation'],
- $params['col_extra'] ?? '',
- $columnDefault
- );
- }
- /**
- * @param array $params Request parameters
- * @return true|Message
- */
- public function addColumn(array $params)
- {
- return $this->centralColumns->syncUniqueColumns(
- [$params['column-select']],
- false,
- $params['table-select']
- );
- }
- /**
- * @param array $params Request parameters
- * @return string HTML
- */
- public function editPage(array $params): string
- {
- return $this->centralColumns->getHtmlForEditingPage(
- $params['selected_fld'],
- $params['db']
- );
- }
- /**
- * @param array $params Request parameters
- * @return true|Message
- */
- public function updateMultipleColumn(array $params)
- {
- return $this->centralColumns->updateMultipleColumn($params);
- }
- /**
- * @param array $params Request parameters
- * @return true|Message
- */
- public function deleteSave(array $params)
- {
- $name = [];
- parse_str($params['col_name'], $name);
- return $this->centralColumns->deleteColumnsFromList(
- $params['db'],
- $name['selected_fld'],
- false
- );
- }
- }
|