-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDb.php
108 lines (84 loc) · 3.04 KB
/
Db.php
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
require_once '../config/config.php';
/* Connect to database */
class Db {
private static $instance;
private static $host;
private static $db;
private static $user;
private static $pass;
private static $file;
private function __construct() {}
private static function connect() {
self::$host = constant('DB_HOST');
self::$db = constant('DB');
self::$user = constant('DB_USER');
self::$pass = constant('DB_PASS');
self::$file = constant('DB_BACKUPFILE');
try {
$conection = new PDO('mysql:host='.self::$host.'; dbname='.self::$db, self::$user, self::$pass);
} catch (PDOException $e) {
echo $e->getMessage();
exit();
}
return $conection;
}
public static function getInstance() {
if (!self::$instance)
self::$instance = self::connect();
return self::$instance;
}
public static function crearCopiaDeSeguridad() {
$command = "mysqldump --opt --host=".self::$host. " --user=". self::$user. " --password=" .self::$pass. " " .self::$db. " > " . self::$file;
exec($command, $output, $returnVar);
if ($returnVar === 0) {
return true;
} else {
return false;
}
}
public static function restaurarCopiaDeSeguridad($sql) {
try {
$pdo = self::$instance;
// Iniciar una transacción
$pdo->beginTransaction();
// Ejecutar las instrucciones SQL
$pdo->exec($sql);
// Confirmar la transacción
$pdo->commit();
return true;
} catch (PDOException $e) {
// Revertir la transacción en caso de error
$pdo->rollBack();
echo "Error al restaurar la base de datos: " . $e->getMessage();
return false;
}
}
public static function borrarDb() {
try {
// Establecer la conexión con la base de datos utilizando PDO
$pdo = self::$instance;
// Obtener el nombre de la base de datos
$database = self::$db;
// Obtener las tablas de la base de datos
$query = "SHOW TABLES";
$statement = $pdo->query($query);
$tables = $statement->fetchAll(PDO::FETCH_COLUMN);
// Desactivar el modo estricto de SQL para evitar errores durante la eliminación de las tablas
$pdo->exec("SET sql_mode = ''");
// Eliminar cada tabla de la base de datos
foreach ($tables as $table) {
$pdo->exec("DROP TABLE IF EXISTS $table");
}
$pdo->exec("DROP TABLE IF EXISTS incidencias");
$pdo->exec("DROP TABLE IF EXISTS usuarios");
return true;
} catch (PDOException $e) {
echo "Error al borrar las tablas de la base de datos: " . $e->getMessage();
return false;
}
// Cerrar la conexión con la base de datos
$pdo = null;
}
}
?>