aboutsummaryrefslogtreecommitdiff
path: root/src/controller/MaintenanceController.php
blob: c60ca1ccfa7d9feace278fb1c26a8771577f9aff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
// src/controller/MaintenanceController.php

declare(strict_types=1);

use Doctrine\ORM\EntityManager;
use App\Entity\log;
use Symfony\Component\Process\Exception\ProcessFailedException;

class MaintenanceController
{
	static public function getLogs(EntityManager $entityManager): void
	{
		$data = $entityManager->getRepository(Log::class)->findAll();
		if(empty($data)){
			echo json_encode(['success' => false]);
		}
		else{
			$view = '<h4>Table ' . TABLE_PREFIX . 'log de la BDD</h4>
				<table>
					<thead>
						<tr>
	                        <th>date et heure (Greenwich)</th>
	                        <th>connexion réussie</th>
	                    </tr>
	                </thead>
	                <tbody>';
            foreach($data as $entry){
            	$view .= '<tr>
            		<td>' . $entry->getFormatedDate() . '</td>
            		<td>' . ($entry->getSuccess() ? 'oui' : 'non') . '</td>
            	</tr>';
            }
            $view .= '</tbody></table>';
			echo json_encode(['success' => true, 'view' => $view]);
		}
		die;
	}
	static public function eraseLogs(EntityManager $entityManager): void
	{
		try{
			$table = $entityManager->getClassMetadata(Log::class)->getTableName();
			$entityManager->getConnection()->executeStatement("TRUNCATE TABLE {$table}"); // SQL donné à DBAL
			echo json_encode(['success' => true]);
		}
		catch(Exception $e){
			echo json_encode(['success' => false]);
		}
		die;
	}

	static public function getLastDump(EntityManager $entityManager): void
	{
		try{
			$file_path = Backup::getLastBackupName();
			header('Content-Type: application/octet-stream'); // signifie fichier quelconque, du binaire quoi!
			header('Content-Disposition: attachment; filename="' . basename($file_path) . '"'); // pour provoquer un téléchargement et non pour afficher
			header('Content-Length: ' . filesize($file_path)); // peut servir côté client (barre de progression...)
			readfile($file_path);
			die;
		}
		// exeptions lancées dans Backup::mySQLdump
		catch(ProcessFailedException $e){ // pas d'info $e pour le client
			header('Location: ' . new URL(['page' => 'maintenance', 'error' => '500']));
			die;
		}
		die;
	}
}