| 1 |
<?php |
| 2 |
namespace Mgleis\DiskUsageInsights\Frontend\Controller; |
| 3 |
|
| 4 |
use Mgleis\DiskUsageInsights\Domain\Database; |
| 5 |
use Mgleis\DiskUsageInsights\Domain\DatabaseRepository; |
| 6 |
use Mgleis\DiskUsageInsights\Frontend\Table; |
| 7 |
use Mgleis\DiskUsageInsights\Plugin; |
| 8 |
use Mgleis\DiskUsageInsights\WpHelper; |
| 9 |
|
| 10 |
class ShowResultsController { |
| 11 |
|
| 12 |
private Database $database; |
| 13 |
|
| 14 |
public function execute() { |
| 15 |
// TODO Validate |
| 16 |
$snapshotName = sanitize_file_name(wp_unslash($_GET['snapshot'] ?? '')); |
| 17 |
|
| 18 |
$this->database = (new DatabaseRepository())->loadDatabase($snapshotName); |
| 19 |
$sn = $this->database->snapshotRepository->load(); |
| 20 |
if ($sn->collectPhaseFinished !== 1) { |
| 21 |
echo "Cannot read database because it is corrupt/incomplete. Please create a new snapshot."; |
| 22 |
exit; |
| 23 |
} |
| 24 |
|
| 25 |
// TODO validate |
| 26 |
$snapshot = sanitize_file_name(wp_unslash($_GET['snapshot'] ?? '')); |
| 27 |
$root = $this->database->snapshotRepository->load()->root; |
| 28 |
$totalSize = $this->selectInt("SELECT SUM(size) FROM fileentries;"); |
| 29 |
|
| 30 |
$WP_PLUGIN_URL = WpHelper::getPluginUrl(); |
| 31 |
$WP_NONCE = wp_create_nonce(Plugin::NONCE); |
| 32 |
$WP_ADMIN_AJAX_URL = admin_url('admin-ajax.php'); |
| 33 |
$WP_SNAPSHOT_FILE = $snapshot; |
| 34 |
|
| 35 |
include_once __DIR__ . '/../../../views/results.php'; |
| 36 |
} |
| 37 |
|
| 38 |
private function selectInt(string $sql) { |
| 39 |
$stmt = $this->database->q->db->prepare($sql); |
| 40 |
$stmt->execute(); |
| 41 |
$result = $stmt->fetch(); |
| 42 |
|
| 43 |
return $result[0]; |
| 44 |
} |
| 45 |
|
| 46 |
private function fetchAssoc(string $sql): array { |
| 47 |
$stmt = $this->database->q->db->prepare($sql); |
| 48 |
$stmt->execute(); |
| 49 |
$rows = $stmt->fetchAll(\PDO::FETCH_ASSOC); |
| 50 |
|
| 51 |
return $rows; |
| 52 |
} |
| 53 |
} |
| 54 |
|