19 declare(strict_types=1);
29 return hash(
"sha256", implode(
"-", [
31 $this->config->getHost(),
32 $this->config->getPort(),
33 $this->config->getDatabase()
39 return "The database is populated with ILIAS-tables.";
52 if ($environment->getResource(Setup\Environment::RESOURCE_DATABASE)) {
56 new \ilDatabaseExistsObjective($this->config)
60 public function achieve(Setup\
Environment $environment): Setup\Environment
66 $db = $environment->getResource(Setup\Environment::RESOURCE_DATABASE);
67 $io = $environment->getResource(Setup\Environment::RESOURCE_ADMIN_INTERACTION);
72 $io->text(
"Default DB engine is $default");
77 $io->text(
"reading dump file, this may take a while...");
82 throw new Setup\UnachievableException(
83 "Cannot determine database default engine, must be InnoDB, `$default` given." 95 $db = $environment->getResource(Setup\Environment::RESOURCE_DATABASE);
102 $probe_tables = [
'usr_data',
'object_data',
'object_reference'];
103 $number_of_probe_tables = count($probe_tables);
105 $number_of_tables = count($tables);
108 $number_of_tables > self::MIN_NUMBER_OF_ILIAS_TABLES
109 && count(array_intersect($tables, $probe_tables)) === $number_of_probe_tables;
117 $path_to_db_dump = $this->config->getPathToDBDump();
118 if (!is_file(realpath($path_to_db_dump)) ||
119 !is_readable(realpath($path_to_db_dump))) {
120 throw new Setup\UnachievableException(
121 "Cannot read database dump file: $path_to_db_dump" 129 throw new Setup\UnachievableException(
130 "Cannot populate database with dump file: $path_to_db_dump. Query failed: $query wih message " . $e->getMessage(
140 $handle = fopen($path_to_db_dump,
"r");
141 while (($line = fgets($handle)) !==
false) {
142 if (preg_match(
'/^--/', $line)) {
145 if (preg_match(
'/^\/\*/', $line)) {
150 if (!preg_match(
'/;$/', trim($line))) {
169 case 'pdo-mysql-innodb':
173 $db->
manipulate(
'SET default_storage_engine=InnoDB;');
181 $r = $db->
query(
'SHOW ENGINES ');
185 if (strtoupper(
$d->Support) ===
'DEFAULT') {
186 $default =
$d->Engine;
190 return strtolower($default);
getPreconditions(Setup\Environment $environment)
setDefaultEngine(ilDBInterface $db)
queryReader(string $path_to_db_dump)
readDumpFile(ilDBInterface $db)
getDefaultEngine(ilDBInterface $db)
execute(ilDBStatement $stmt, array $data=[])
isDatabasePopulated(ilDBInterface $db)
fetchObject(ilDBStatement $query_result)
const MIN_NUMBER_OF_ILIAS_TABLES
query(string $query)
Run a (read-only) Query on the database.
isApplicable(Setup\Environment $environment)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
prepareManip(string $a_query, ?array $a_types=null)
An environment holds resources to be used in the setup process.
manipulate(string $query)
Run a (write) Query on the database.
for($i=6; $i< 13; $i++) for($i=1; $i< 13; $i++) $d