Overview
Comment: | Vérification des clés étrangères à l'import |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | dev |
Files: | files | file ages | folders |
SHA1: |
9d57ccacf4d9bff39dab7ebd92eb178b |
User & Date: | bohwaz on 2019-02-15 10:13:29 |
Original Comment: | Suppression espaces supplémentaires |
Other Links: | branch diff | manifest | tags |
Context
2019-02-15
| ||
10:15 | Suppression espaces supplémentaires check-in: 11ae7223d0 user: bohwaz tags: dev | |
10:13 | Vérification des clés étrangères à l'import check-in: 9d57ccacf4 user: bohwaz tags: dev | |
2019-02-14
| ||
17:11 | Débuts de la màj 0.10.0 check-in: 636b063ed2 user: bohwaz tags: dev | |
Changes
Modified src/include/lib/Garradin/Sauvegarde.php from [66b6709354] to [df83bd896f].
︙ | ︙ | |||
223 224 225 226 227 228 229 | } elseif ($integrity === false) { throw new UserException('Le fichier fourni a été modifié par un programme externe.', self::INTEGRITY_FAIL); } } | | | 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 | } elseif ($integrity === false) { throw new UserException('Le fichier fourni a été modifié par un programme externe.', self::INTEGRITY_FAIL); } } $r = $this->restoreDB($file['tmp_name'], $user_id, true); if ($r) { Utils::safe_unlink($file['tmp_name']); } return $r; |
︙ | ︙ | |||
285 286 287 288 289 290 291 | /** * Restauration de base de données, la fonction qui le fait vraiment * @param string $file Chemin absolu vers la base de données à utiliser * @return mixed true si rien ne va plus, ou self::NEED_UPGRADE si la version de la DB * ne correspond pas à la version de Garradin (mise à jour nécessaire). */ | | | | 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 | /** * Restauration de base de données, la fonction qui le fait vraiment * @param string $file Chemin absolu vers la base de données à utiliser * @return mixed true si rien ne va plus, ou self::NEED_UPGRADE si la version de la DB * ne correspond pas à la version de Garradin (mise à jour nécessaire). */ protected function restoreDB($file, $user_id = false, $check_foreign_keys = false) { $return = 1; // Essayons déjà d'ouvrir la base de données à restaurer en lecture try { $db = new \SQLite3($file, \SQLITE3_OPEN_READONLY); } catch (\Exception $e) { throw new UserException('Le fichier fourni n\'est pas une base de données valide. ' . 'Message d\'erreur de SQLite : ' . $e->getMessage(), self::NOT_A_DB); } |
︙ | ︙ | |||
314 315 316 317 318 319 320 321 322 323 324 325 326 327 | 'Message d\'erreur de SQLite : ' . $e->getMessage(), self::NOT_A_DB); } if (strtolower(trim($check)) != 'ok') { throw new UserException('Le fichier fourni est corrompu. SQLite a trouvé ' . $check . ' erreurs.'); } // On ne peut pas faire de vérifications très poussées sur la structure de la base de données, // celle-ci pouvant changer d'une version à l'autre et on peut vouloir importer une base // un peu vieille, mais on vérifie quand même que ça ressemble un minimum à une base garradin $table = $db->querySingle('SELECT 1 FROM sqlite_master WHERE type=\'table\' AND tbl_name=\'config\';'); if (!$table) | > > > > > > > > > > | 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 | 'Message d\'erreur de SQLite : ' . $e->getMessage(), self::NOT_A_DB); } if (strtolower(trim($check)) != 'ok') { throw new UserException('Le fichier fourni est corrompu. SQLite a trouvé ' . $check . ' erreurs.'); } if ($check_foreign_keys) { $check = $db->querySingle('PRAGMA foreign_key_check;'); if ($check) { throw new UserException('Le fichier fourni est corrompu. Certaines clés étrangères référencent des lignes qui n\'existent pas.'); } } // On ne peut pas faire de vérifications très poussées sur la structure de la base de données, // celle-ci pouvant changer d'une version à l'autre et on peut vouloir importer une base // un peu vieille, mais on vérifie quand même que ça ressemble un minimum à une base garradin $table = $db->querySingle('SELECT 1 FROM sqlite_master WHERE type=\'table\' AND tbl_name=\'config\';'); if (!$table) |
︙ | ︙ |