/
home
/
obinna
/
html
/
restaurants
/
var
/
phpmyadmin
/
src
/
Controllers
/
Database
/
Structure
/
Upload File
HOME
<?php declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database\Structure; use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; use function __; /** * Handles request for real row count on database level view page. */ final class RealRowCountController extends AbstractController { public function __construct( ResponseRenderer $response, Template $template, private DatabaseInterface $dbi, private readonly DbTableExists $dbTableExists, ) { parent::__construct($response, $template); } public function __invoke(ServerRequest $request): void { $GLOBALS['errorUrl'] ??= null; $parameters = [ 'real_row_count_all' => $_REQUEST['real_row_count_all'] ?? null, 'table' => $_REQUEST['table'] ?? null, ]; if (! $this->checkParameters(['db'])) { return; } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( Config::getInstance()->settings['DefaultTabDatabase'], 'database', ); $GLOBALS['errorUrl'] .= Url::getCommon(['db' => Current::$database], '&'); if (! $request->isAjax()) { return; } $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); return; } // If there is a request to update all table's row count. if (! isset($parameters['real_row_count_all'])) { // Get the real row count for the table. $realRowCount = (int) $this->dbi ->getTable(Current::$database, (string) $parameters['table']) ->getRealRowCountTable(); // Format the number. $realRowCount = Util::formatNumber($realRowCount, 0); $this->response->addJSON(['real_row_count' => $realRowCount]); return; } // Array to store the results. $realRowCountAll = []; // Iterate over each table and fetch real row count. foreach ($this->dbi->getTables(Current::$database) as $table) { $rowCount = $this->dbi ->getTable(Current::$database, $table) ->getRealRowCountTable(); $realRowCountAll[] = ['table' => $table, 'row_count' => Util::formatNumber($rowCount, 0)]; } $this->response->addJSON(['real_row_count_all' => $realRowCountAll]); } }