123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- <?php
-
- $ENV = ENV::go();
-
- // View schemas
- if (!empty($_GET['table'])) {
- $DB->query('SHOW TABLES');
- $Tables =$DB->collect('Tables_in_'.$ENV->getPriv('SQLDB'));
-
- if (!in_array($_GET['table'], $Tables)) {
- error(0);
- }
-
- $DB->query('SHOW CREATE TABLE '.db_string($_GET['table']));
- list(, $Schema) = $DB->next_record(MYSQLI_NUM, false);
- header('Content-type: text/plain');
- error($Schema);
- }
-
- // Cache the tables for 4 hours, makes sorting faster
- if (!$Tables = $Cache->get_value('database_table_stats')) {
- $DB->query('SHOW TABLE STATUS');
- $Tables =$DB->to_array();
- $Cache->cache_value('database_table_stats', $Tables, 3600 * 4);
- }
-
- # todo: Remove Google Charts dependency
- require SERVER_ROOT.'/classes/charts.class.php';
- $Pie = new PIE_CHART(750, 400, array('Other'=>1,'Percentage'=>1,'Sort'=>1));
-
- // Begin sorting
- $Sort = [];
- switch (empty($_GET['order_by']) ? '' : $_GET['order_by']) {
- case 'name':
- foreach ($Tables as $Key => $Value) {
- $Pie->add($Value[0], $Value[6] + $Value[8]);
- $Sort[$Key] = $Value[0];
- }
- break;
-
- case 'engine':
- foreach ($Tables as $Key => $Value) {
- $Pie->add($Value[0], $Value[6] + $Value[8]);
- $Sort[$Key] = $Value[1];
- }
- break;
-
- case 'rows':
- foreach ($Tables as $Key => $Value) {
- $Pie->add($Value[0], $Value[4]);
- $Sort[$Key] = $Value[4];
- }
- break;
-
- case 'rowsize':
- foreach ($Tables as $Key => $Value) {
- $Pie->add($Value[0], $Value[5]);
- $Sort[$Key] = $Value[5];
- }
- break;
-
- case 'datasize':
- foreach ($Tables as $Key => $Value) {
- $Pie->add($Value[0], $Value[6]);
- $Sort[$Key] = $Value[6];
- }
- break;
-
- case 'indexsize':
- foreach ($Tables as $Key => $Value) {
- $Pie->add($Value[0], $Value[8]);
- $Sort[$Key] = $Value[8];
- }
- break;
-
- case 'totalsize':
- default:
- foreach ($Tables as $Key => $Value) {
- $Pie->add($Value[0], $Value[6] + $Value[8]);
- $Sort[$Key] = $Value[6] + $Value[8];
- }
- }
- $Pie->generate();
-
- if (!empty($_GET['order_way']) && $_GET['order_way'] === 'asc') {
- $SortWay = SORT_ASC;
- } else {
- $SortWay = SORT_DESC;
- }
-
- array_multisort($Sort, $SortWay, $Tables);
- // End sorting
- ?>
-
- <h3>Database</h3>
- <div class="box pad center">
- <img src="<?=$Pie->url()?>" />
- </div>
- <br />
-
- <?php
- # Staff Only: Detailed schema info / table dumps
- if (check_perms('site_debug')) { ?>
-
- <h3>Specifics</h3>
- <div class="box pad center">
- <table>
- <tr class="colhead">
- <td>
- <a
- href="stats.php?action=torrents&order_by=name&order_way=<?=(!empty($_GET['order_by']) && $_GET['order_by'] === 'name' && !empty($_GET['order_way']) && $_GET['order_way'] === 'desc') ? 'asc' : 'desc'?>">Name</a>
- </td>
-
- <td>
- <a
- href="stats.php?action=torrents&order_by=engine&order_way=<?=(!empty($_GET['order_by']) && $_GET['order_by'] === 'engine' && !empty($_GET['order_way']) && $_GET['order_way'] === 'desc') ? 'asc' : 'desc'?>">Engine</a>
- </td>
-
- <td>
- <a
- href="stats.php?action=torrents&order_by=rows&order_way=<?=(!empty($_GET['order_by']) && $_GET['order_by'] === 'rows' && !empty($_GET['order_way']) && $_GET['order_way'] === 'desc') ? 'asc' : 'desc'?>">Rows
- </td>
-
- <td>
- <a
- href="stats.php?action=torrents&order_by=rowsize&order_way=<?=(!empty($_GET['order_by']) && $_GET['order_by'] === 'rowsize' && !empty($_GET['order_way']) && $_GET['order_way'] === 'desc') ? 'asc' : 'desc'?>">Row
- Size</a>
- </td>
-
- <td>
- <a
- href="stats.php?action=torrents&order_by=datasize&order_way=<?=(!empty($_GET['order_by']) && $_GET['order_by'] === 'datasize' && !empty($_GET['order_way']) && $_GET['order_way'] === 'desc') ? 'asc' : 'desc'?>">Data
- Size</a>
- </td>
-
- <td>
- <a
- href="stats.php?action=torrents&order_by=indexsize&order_way=<?=(!empty($_GET['order_by']) && $_GET['order_by'] === 'indexsize' && !empty($_GET['order_way']) && $_GET['order_way'] === 'desc') ? 'asc' : 'desc'?>">Index
- Size</a>
- </td>
-
- <td>
- <a
- href="stats.php?action=torrents&order_by=totalsize&order_way=<?=(!empty($_GET['order_by']) && $_GET['order_by'] === 'totalsize' && !empty($_GET['order_way']) && $_GET['order_way'] === 'desc') ? 'asc' : 'desc'?>">Total
- Size
- </td>
-
- <td>
- Tools
- </td>
- </tr>
-
- <?php
- $TotalRows = 0;
- $TotalDataSize = 0;
- $TotalIndexSize = 0;
-
- foreach ($Tables as $Table) {
- list($Name, $Engine, , , $Rows, $RowSize, $DataSize, , $IndexSize) = $Table;
- $TotalRows += $Rows;
- $TotalDataSize += $DataSize;
- $TotalIndexSize += $IndexSize; ?>
-
- <tr class="row">
- <td>
- <?=display_str($Name)?>
- </td>
-
- <td>
- <?=display_str($Engine)?>
- </td>
-
- <td>
- <?=number_format($Rows)?>
- </td>
-
- <td>
- <?=Format::get_size($RowSize)?>
- </td>
-
- <td>
- <?=Format::get_size($DataSize)?>
- </td>
-
- <td>
- <?=Format::get_size($IndexSize)?>
- </td>
-
- <td>
- <?=Format::get_size($DataSize + $IndexSize)?>
- </td>
-
- <td>
- <a href="tools.php?action=database_specifics&table=<?=display_str($Name)?>"
- class="brackets">Schema</a>
- </td>
- </tr>
- <?php
- }
- ?>
-
- <tr>
- <td></td>
-
- <td></td>
-
- <td>
- <?=number_format($TotalRows)?>
- </td>
-
- <td></td>
-
- <td>
- <?=Format::get_size($TotalDataSize)?>
- </td>
-
- <td>
- <?=Format::get_size($TotalIndexSize)?>
- </td>
-
- <td>
- <?=Format::get_size($TotalDataSize + $TotalIndexSize)?>
- </td>
-
- <td></td>
- </tr>
- </table>
- </div>
- <?php
- } # end if check_perms()
|