You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Application-Web/sql/database.php

40 lines
1.0 KiB

<?php
/**
* @return PDO The PDO instance of the configuration's database connexion.
*/
function get_database(): PDO {
// defined by profiles.
global $data_source_name;
// The presence of the .guard file says that the database has already been initialized.
$database_exists = file_exists(__DIR__ . "/.guard");
$pdo = new PDO($data_source_name, DATABASE_USER, DATABASE_PASSWORD);
if ($database_exists) {
return $pdo;
}
foreach (scandir(__DIR__) as $file) {
if (preg_match("/.*\.sql$/i", $file)) {
$content = file_get_contents(__DIR__ . "/" . $file);
foreach (preg_split("/;\s*/", $content) as $req) {
if ($req === "")
break;
$pdo->query($req);
}
}
}
//FIXME Server will need to explicitly set permissions to the `sql` folder
// in order for the touch to work
//
// Workaround in CI by setting permissions to 777 to the folder
touch(__DIR__ . "/.guard");
return $pdo;
}