ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
All Data Structures Namespaces Files Functions Variables Modules Pages
ilDbSetup Class Reference

Class ilDbSetup. More...

+ Collaboration diagram for ilDbSetup:

Public Member Functions

 createDatabase ($a_collation)
 
 provideGlobalDB ()
 
 revokeGlobalDB ()
 
 installDatabase ()
 
 isDatabaseExisting ()
 
 isConnectable ($keep_connection=false)
 
 isDatabaseConnectable ()
 
 isDatabaseInstalled ()
 
 getClient ()
 
 setClient ($client)
 
 getStatus ()
 
 setStatus ($status)
 
 getSqlDumpFile ()
 
 setSqlDumpFile ($sql_dump_file)
 
 dropTables ()
 
 getIlDBInterface ()
 
 setIlDBInterface ($ilDBInterface)
 

Static Public Member Functions

static getInstanceForClient (\ilClient $client)
 
static getNewInstanceForClient (\ilClient $client)
 
static getInstanceForNewClient ($client_name, $dbname, $host='localhost', $username='root', $password='', $type=ilDBConstants::TYPE_PDO_MYSQL_INNODB)
 

Data Fields

const STATUS_OK = 1
 
const STATUS_FAILURE = 2
 

Protected Member Functions

 __construct (\ilClient $client)
 ilDbSetup constructor. More...
 
 getline ($fp, $delim)
 
 readDumpUltraSmall ()
 
 canDatabaseBeInstalled ()
 

Protected Attributes

 $client
 
 $status = self::STATUS_FAILURE
 
 $ilDBInterface
 
 $sql_dump_file = './setup/sql/ilias3.sql'
 

Static Protected Attributes

static $instances = array()
 

Detailed Description

Class ilDbSetup.

Author
Fabian Schmid fs@st.nosp@m.uder.nosp@m.-raim.nosp@m.ann..nosp@m.ch

Definition at line 8 of file class.ilDbSetup.php.

Constructor & Destructor Documentation

◆ __construct()

ilDbSetup::__construct ( \ilClient  $client)
protected

ilDbSetup constructor.

Parameters
\ilClient$client

Definition at line 39 of file class.ilDbSetup.php.

References $client, ilClient\getDbType(), ilDBWrapperFactory\getWrapper(), and ilDBInterface\initFromIniFile().

40  {
41  $this->client = $client;
43  $this->ilDBInterface->initFromIniFile($this->client->ini);
44  }
initFromIniFile($tmpClientIniFile=null)
Interface ilDBInterface.
+ Here is the call graph for this function:

Member Function Documentation

◆ canDatabaseBeInstalled()

ilDbSetup::canDatabaseBeInstalled ( )
protected
Returns
bool

Definition at line 287 of file class.ilDbSetup.php.

References isDatabaseConnectable(), and isDatabaseInstalled().

Referenced by installDatabase().

288  {
289  $connectable = $this->isDatabaseConnectable();
290  $installed = $this->isDatabaseInstalled();
291 
292  return ($connectable && !$installed);
293  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createDatabase()

ilDbSetup::createDatabase (   $a_collation)
Parameters
$a_collation
Returns
bool|mixed

Definition at line 100 of file class.ilDbSetup.php.

References ilDBInterface\connect(), ilDBInterface\createDatabase(), getClient(), ilDBInterface\getDBType(), ilDBInterface\initFromIniFile(), isConnectable(), ilDBConstants\TYPE_GALERA, ilDBConstants\TYPE_INNODB, ilDBConstants\TYPE_MYSQL, ilDBConstants\TYPE_PDO_MYSQL_INNODB, ilDBConstants\TYPE_PDO_MYSQL_MYISAM, and ilDBConstants\TYPE_PDO_POSTGRE.

101  {
102  if ($this->isConnectable()) {
103  switch ($this->ilDBInterface->getDBType()) {
110  $clientIniFile = $this->client->ini;
111 
112  if (!$this->ilDBInterface->createDatabase($clientIniFile->readVariable("db", "name"), 'utf8', $a_collation)) {
113  return false;
114  }
115  $this->ilDBInterface->initFromIniFile($this->getClient()->ini);
116 
117  return $this->ilDBInterface->connect();
118  break;
119  }
120  }
121 
122  return false;
123  }
initFromIniFile($tmpClientIniFile=null)
connect($return_false_on_error=false)
isConnectable($keep_connection=false)
Interface ilDBInterface.
createDatabase($a_name, $a_charset="utf8", $a_collation="")
getDBType()
Get DSN.
+ Here is the call graph for this function:

◆ dropTables()

ilDbSetup::dropTables ( )

Definition at line 350 of file class.ilDbSetup.php.

References ilDBInterface\listTables(), and ilDBInterface\manipulate().

351  {
352  foreach ($this->ilDBInterface->listTables() as $table) {
353  $this->ilDBInterface->manipulate('DROP TABLE ' . $table);
354  }
355  }
Interface ilDBInterface.
manipulate($query)
Run a (write) Query on the database.
+ Here is the call graph for this function:

◆ getClient()

ilDbSetup::getClient ( )
Returns
ilClient

Definition at line 299 of file class.ilDbSetup.php.

References $client.

Referenced by createDatabase(), and installDatabase().

300  {
301  return $this->client;
302  }
+ Here is the caller graph for this function:

◆ getIlDBInterface()

ilDbSetup::getIlDBInterface ( )
Returns

Definition at line 361 of file class.ilDbSetup.php.

References $ilDBInterface.

362  {
363  return $this->ilDBInterface;
364  }

◆ getInstanceForClient()

static ilDbSetup::getInstanceForClient ( \ilClient  $client)
static
Parameters
\ilClient$client
Returns
ilDbSetup

Definition at line 51 of file class.ilDbSetup.php.

References $client, and ilClient\getId().

52  {
53  if (empty(self::$instances[$client->getId()])) {
54  self::$instances[$client->getId()] = new self($client);
55  }
56 
57  return self::$instances[$client->getId()];
58  }
+ Here is the call graph for this function:

◆ getInstanceForNewClient()

static ilDbSetup::getInstanceForNewClient (   $client_name,
  $dbname,
  $host = 'localhost',
  $username = 'root',
  $password = '',
  $type = ilDBConstants::TYPE_PDO_MYSQL_INNODB 
)
static
Parameters
$client_name
$dbname
string$host
string$username
string$password
string$type
Returns

Definition at line 78 of file class.ilDbSetup.php.

References $password, and $type.

79  {
80  require_once('./setup/classes/class.ilClient.php');
81  require_once('./Services/Init/classes/class.ilIniFile.php');
82 
83  $ilClient = new ilClient($client_name, new ilDBConnections());
84  $ilClient->init();
85  $ilClient->setDbHost($host);
86  $ilClient->setDbName($dbname);
87  $ilClient->setDbUser($username);
88  $ilClient->setDbPass($password);
89  $ilClient->setDbType($type);
90  $ilClient->writeIni();
91 
92  return self::getInstanceForClient($ilClient);
93  }
$type
$password
Definition: cron.php:14
Client Management.

◆ getline()

ilDbSetup::getline (   $fp,
  $delim 
)
protected
Parameters
$fp
$delim
Returns
string

Definition at line 152 of file class.ilDbSetup.php.

References $result.

153  {
154  $result = "";
155  while (!feof($fp)) {
156  $tmp = fgetc($fp);
157  if ($tmp == $delim) {
158  return $result;
159  }
160  $result .= $tmp;
161  }
162 
163  return $result;
164  }
$result

◆ getNewInstanceForClient()

static ilDbSetup::getNewInstanceForClient ( \ilClient  $client)
static
Parameters
\ilClient$client
Returns

Definition at line 64 of file class.ilDbSetup.php.

References $client.

Referenced by ilClient\getDBSetup().

64  : \ilDbSetup
65  {
66  return new self($client);
67  }
Class ilDbSetup.
+ Here is the caller graph for this function:

◆ getSqlDumpFile()

ilDbSetup::getSqlDumpFile ( )
Returns
string

Definition at line 335 of file class.ilDbSetup.php.

References $sql_dump_file.

Referenced by readDumpUltraSmall().

336  {
337  return $this->sql_dump_file;
338  }
+ Here is the caller graph for this function:

◆ getStatus()

ilDbSetup::getStatus ( )
Returns
mixed

Definition at line 317 of file class.ilDbSetup.php.

References $status.

318  {
319  return $this->status;
320  }

◆ installDatabase()

ilDbSetup::installDatabase ( )
Returns
bool

Definition at line 182 of file class.ilDbSetup.php.

References canDatabaseBeInstalled(), ilDBInterface\connect(), getClient(), ilDBInterface\getDBType(), provideGlobalDB(), readDumpUltraSmall(), ilDBConstants\TYPE_GALERA, ilDBConstants\TYPE_INNODB, ilDBConstants\TYPE_MYSQL, ilDBConstants\TYPE_PDO_MYSQL_INNODB, ilDBConstants\TYPE_PDO_MYSQL_MYISAM, ilDBConstants\TYPE_PDO_POSTGRE, and ilDBConstants\TYPE_POSTGRES.

183  {
184  if ($this->canDatabaseBeInstalled()) {
185  $this->provideGlobalDB();
186  switch ($this->ilDBInterface->getDBType()) {
189  $this->ilDBInterface->connect();
190  //$this->dropTables();
191  $this->readDumpUltraSmall();
192  $this->getClient()->db_installed = true;
193 
194  return true;
195 
196  break;
202  include_once("./setup/sql/ilDBTemplate.php");
203  setupILIASDatabase();
204 
205  return true;
206  break;
207  }
208  }
209 
210  return false;
211  }
connect($return_false_on_error=false)
Interface ilDBInterface.
getDBType()
Get DSN.
+ Here is the call graph for this function:

◆ isConnectable()

ilDbSetup::isConnectable (   $keep_connection = false)
Returns
bool|mixed

Definition at line 233 of file class.ilDbSetup.php.

References Vendor\Package\$e, ilDBInterface\connect(), ilDBInterface\getDBType(), and provideGlobalDB().

Referenced by createDatabase(), isDatabaseConnectable(), and isDatabaseExisting().

234  {
235  switch ($this->ilDBInterface->getDBType()) {
236  default:
237  try {
238  $connect = $this->ilDBInterface->connect();
239  } catch (PDOException $e) {
240  $connect = ($e->getCode() == 1049);
241  }
242  break;
243  }
244  if ($keep_connection && $connect) {
245  $this->provideGlobalDB();
246  }
247 
248  if (!$connect) {
249  $this->client->setError('Database can\'t be reached. Please check the credentials and if database exists');
250  }
251 
252  return $connect;
253  }
connect($return_false_on_error=false)
Interface ilDBInterface.
getDBType()
Get DSN.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isDatabaseConnectable()

ilDbSetup::isDatabaseConnectable ( )
Returns
bool

Definition at line 259 of file class.ilDbSetup.php.

References ilDBInterface\connect(), and isConnectable().

Referenced by canDatabaseBeInstalled(), and isDatabaseExisting().

260  {
261  if (!$this->isConnectable()) {
262  return false;
263  }
264 
265  return $this->ilDBInterface->connect(true);
266  }
connect($return_false_on_error=false)
isConnectable($keep_connection=false)
Interface ilDBInterface.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isDatabaseExisting()

ilDbSetup::isDatabaseExisting ( )
Returns
bool

Definition at line 217 of file class.ilDbSetup.php.

References isConnectable(), and isDatabaseConnectable().

Referenced by isDatabaseInstalled().

218  {
219  if (!$this->isConnectable()) {
220  return false;
221  }
222  if (!$this->isDatabaseConnectable()) {
223  return false;
224  }
225 
226  return true;
227  }
isConnectable($keep_connection=false)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isDatabaseInstalled()

ilDbSetup::isDatabaseInstalled ( )
Returns
bool

Definition at line 272 of file class.ilDbSetup.php.

References isDatabaseExisting(), and ilDBInterface\listTables().

Referenced by canDatabaseBeInstalled().

273  {
274  if (!$this->isDatabaseExisting()) {
275  return false;
276  }
277 
278  $target = array( 'usr_data', 'object_data', 'object_reference' );
279 
280  return count(array_intersect($this->ilDBInterface->listTables(), $target)) == count($target);
281  }
Interface ilDBInterface.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ provideGlobalDB()

ilDbSetup::provideGlobalDB ( )

Definition at line 126 of file class.ilDbSetup.php.

References $DIC, $GLOBALS, and $ilDBInterface.

Referenced by installDatabase(), and isConnectable().

127  {
128  global $DIC;
129 
130  if ($DIC->offsetExists('ilDB')) {
131  $DIC->offsetUnset('ilDB');
132  }
133 
134  $GLOBALS["ilDB"] = $this->ilDBInterface;
135  $DIC["ilDB"] = $this->ilDBInterface;
136  $this->client->db = $this->ilDBInterface; // TODO ugly and dirty, but ilClient requires it
137  }
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
Definition: PEAR.php:64
$DIC
Definition: xapitoken.php:46
+ Here is the caller graph for this function:

◆ readDumpUltraSmall()

ilDbSetup::readDumpUltraSmall ( )
protected
Returns
bool

Definition at line 169 of file class.ilDbSetup.php.

References ilDBInterface\execute(), getSqlDumpFile(), and ilDBInterface\prepareManip().

Referenced by installDatabase().

170  {
171  $sql = file_get_contents($this->getSqlDumpFile());
172  $re = $this->ilDBInterface->prepareManip($sql);
173  $this->ilDBInterface->execute($re);
174 
175  return true;
176  }
prepareManip($a_query, $a_types=null)
execute($stmt, $data=array())
Interface ilDBInterface.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ revokeGlobalDB()

ilDbSetup::revokeGlobalDB ( )

Definition at line 140 of file class.ilDbSetup.php.

References $GLOBALS.

141  {
142  $GLOBALS["ilDB"] = null;
143  $this->client->db = null; // TODO ugly and dirty, but ilClient requires it
144  }
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
Definition: PEAR.php:64

◆ setClient()

ilDbSetup::setClient (   $client)
Parameters
ilClient$client

Definition at line 308 of file class.ilDbSetup.php.

References $client.

309  {
310  $this->client = $client;
311  }

◆ setIlDBInterface()

ilDbSetup::setIlDBInterface (   $ilDBInterface)
Parameters
\ilDBInterface$ilDBInterface

Definition at line 370 of file class.ilDbSetup.php.

References $ilDBInterface.

371  {
372  $this->ilDBInterface = $ilDBInterface;
373  }
Interface ilDBInterface.

◆ setSqlDumpFile()

ilDbSetup::setSqlDumpFile (   $sql_dump_file)
Parameters
string$sql_dump_file

Definition at line 344 of file class.ilDbSetup.php.

References $sql_dump_file.

345  {
346  $this->sql_dump_file = $sql_dump_file;
347  }

◆ setStatus()

ilDbSetup::setStatus (   $status)
Parameters
mixed$status

Definition at line 326 of file class.ilDbSetup.php.

References $status.

327  {
328  $this->status = $status;
329  }

Field Documentation

◆ $client

ilDbSetup::$client
protected

◆ $ilDBInterface

ilDbSetup::$ilDBInterface
protected

Definition at line 27 of file class.ilDbSetup.php.

Referenced by getIlDBInterface(), provideGlobalDB(), and setIlDBInterface().

◆ $instances

ilDbSetup::$instances = array()
staticprotected

Definition at line 23 of file class.ilDbSetup.php.

◆ $sql_dump_file

ilDbSetup::$sql_dump_file = './setup/sql/ilias3.sql'
protected

Definition at line 31 of file class.ilDbSetup.php.

Referenced by getSqlDumpFile(), and setSqlDumpFile().

◆ $status

ilDbSetup::$status = self::STATUS_FAILURE
protected

Definition at line 19 of file class.ilDbSetup.php.

Referenced by getStatus(), and setStatus().

◆ STATUS_FAILURE

const ilDbSetup::STATUS_FAILURE = 2

Definition at line 11 of file class.ilDbSetup.php.

◆ STATUS_OK

const ilDbSetup::STATUS_OK = 1

Definition at line 10 of file class.ilDbSetup.php.


The documentation for this class was generated from the following file: