Public Member Functions | |
ilDBUpdate ($a_db_handler=0, $tmp_flag=false) | |
constructor | |
_DBUpdate () | |
destructor | |
readDBUpdateFile () | |
getCurrentVersion () | |
setCurrentVersion ($a_version) | |
getFileVersion () | |
execQuery ($db, $str) | |
execute a query | |
applyUpdate () | |
applyUpdateNr ($nr) | |
apply an update | |
getDBVersionStatus () | |
getTables () | |
getTableStatus ($table) | |
optimizeTables ($tables) | |
Data Fields | |
$DB_UPDATE_FILE | |
db update file | |
$currentVersion | |
$fileVersion |
Definition at line 35 of file class.ilDBUpdate.php.
ilDBUpdate::_DBUpdate | ( | ) |
destructor
Definition at line 90 of file class.ilDBUpdate.php.
{ $this->db->disconnect(); }
ilDBUpdate::applyUpdate | ( | ) |
Definition at line 190 of file class.ilDBUpdate.php.
References $ilCtrlStructureReader, and applyUpdateNr().
{ global $ilCtrlStructureReader; $f = $this->fileVersion; $c = $this->currentVersion; if ($c < $f) { $msg = array(); for ($i=($c+1); $i<=$f; $i++) { if ($this->applyUpdateNr($i) == false) { $msg[] = array( "msg" => "update_error: ".$this->error, "nr" => $i ); $this->updateMsg = $msg; return false; } else { $msg[] = array( "msg" => "update_applied", "nr" => $i ); } } $this->updateMsg = $msg; } else { $this->updateMsg = "no_changes"; } // read module and service information into db require_once "./classes/class.ilModuleReader.php"; require_once "./classes/class.ilServiceReader.php"; require_once "./classes/class.ilCtrlStructureReader.php"; $ilModuleReader = new ilModuleReader(); $ilModuleReader->getModules(); $ilServiceReader = new ilServiceReader(); $ilServiceReader->getServices(); $ilCtrlStructureReader->readStructure(); return true; }
ilDBUpdate::applyUpdateNr | ( | $ | nr | ) |
apply an update
int | nr number what patch to apply |
Definition at line 246 of file class.ilDBUpdate.php.
References $ilCtrlStructureReader, $ilErr, $row, execQuery(), and setCurrentVersion().
Referenced by applyUpdate().
{ global $ilDB,$ilErr,$ilUser,$ilCtrlStructureReader,$ilModuleReader; //search for desired $nr reset($this->filecontent); //init $i = 0; //go through filecontent while (!ereg("^<#".$nr.">", $this->filecontent[$i]) && $i<count($this->filecontent)) { $i++; } //update not found if ($i == count($this->filecontent)) { $this->error = "update_not_found"; return false; } $i++; //update found, now extract this update to a new array $update = array(); while ($i<count($this->filecontent) && !ereg("^<#".($nr+1).">", $this->filecontent[$i])) { $update[] = trim($this->filecontent[$i]); $i++; } //now you have the update, now process it $sql = array(); $php = array(); $mode = "sql"; foreach ($update as $row) { if (ereg("<\?php", $row)) { if (count($sql)>0) { if ($this->execQuery($this->db, implode("\n", $sql)) == false) { $this->error = "dump_error: ".$this->error; return false; } $sql = array(); } $mode = "php"; } elseif (ereg("\?>", $row)) { if (count($php)>0) { eval(implode("\n", $php)); $php = array(); } $mode = "sql"; } else { if ($mode == "sql") { $sql[] = $row; } if ($mode == "php") { $php[] = $row; } } //else } //foreach if ($mode == "sql" && count($sql) > 0) { if ($this->execQuery($this->db, implode("\n", $sql)) == false) { $this->error = "dump_error: ".$this->error; return false; } } //increase db_Version number $this->setCurrentVersion($nr); //$this->currentVersion = $ilias->getSetting("db_version"); return true; }
ilDBUpdate::execQuery | ( | $ | db, | |
$ | str | |||
) |
execute a query
object | DB | |
string | query |
Definition at line 158 of file class.ilDBUpdate.php.
References $q.
Referenced by applyUpdateNr().
{ $sql = explode("\n",trim($str)); for ($i=0; $i<count($sql); $i++) { $sql[$i] = trim($sql[$i]); if ($sql[$i] != "" && substr($sql[$i],0,1)!="#") { //take line per line, until last char is ";" if (substr($sql[$i],-1)==";") { //query is complete $q .= " ".substr($sql[$i],0,-1); $r = $db->query($q); if (DB::isError($r)) { $this->error = $r->getMessage(); return false; } unset($q); } //if else { $q .= " ".$sql[$i]; } //else } //if } //for if ($q != "") echo "incomplete_statement: ".$q."<br>"; return true; }
ilDBUpdate::getCurrentVersion | ( | ) |
Definition at line 108 of file class.ilDBUpdate.php.
Referenced by ilDBUpdate().
{ $q = "SELECT value FROM settings ". "WHERE keyword = 'db_version'"; $r = $this->db->query($q); $row = $r->fetchRow(DB_FETCHMODE_OBJECT); $this->currentVersion = (integer) $row->value; return $this->currentVersion; }
ilDBUpdate::getDBVersionStatus | ( | ) |
Definition at line 340 of file class.ilDBUpdate.php.
{ if ($this->fileVersion > $this->currentVersion) return false; else return true; }
ilDBUpdate::getFileVersion | ( | ) |
Definition at line 135 of file class.ilDBUpdate.php.
References $row.
Referenced by ilDBUpdate().
{ //go through filecontent and search for last occurence of <#x> reset($this->filecontent); $regs = array(); foreach ($this->filecontent as $row) { if (ereg("^<#([0-9]+)>", $row, $regs)) { $version = $regs[1]; } } $this->fileVersion = (integer) $version; return $this->fileVersion; }
ilDBUpdate::getTables | ( | ) |
Definition at line 348 of file class.ilDBUpdate.php.
References $query, $res, $row, and getTableStatus().
{ $a = array(); $query = "SHOW TABLES"; $res = $this->db->query($query); while ($row = $res->fetchRow()) { $status = $this->getTableStatus($row[0]); $a[] = array( "name" => $status["Table"], "table" => $row[0], "status" => $status["Msg_text"] ); } return $a; }
ilDBUpdate::getTableStatus | ( | $ | table | ) |
ilDBUpdate::ilDBUpdate | ( | $ | a_db_handler = 0 , |
|
$ | tmp_flag = false | |||
) |
constructor
Definition at line 57 of file class.ilDBUpdate.php.
References $mySetup, getCurrentVersion(), getFileVersion(), and readDBUpdateFile().
{ // workaround to allow setup migration if ($a_db_handler) { $this->db =& $a_db_handler; if ($tmp_flag) { $this->DB_UPDATE_FILE = "./sql/dbupdate.php"; } else { $this->DB_UPDATE_FILE = "../sql/dbupdate.php"; } } else { global $mySetup; $this->db = $mySetup->db; $this->DB_UPDATE_FILE = "./sql/dbupdate.php"; } $this->readDBUpdateFile(); $this->getFileVersion(); $this->getCurrentVersion(); }
ilDBUpdate::optimizeTables | ( | $ | tables | ) |
ilDBUpdate::readDBUpdateFile | ( | ) |
Definition at line 95 of file class.ilDBUpdate.php.
Referenced by ilDBUpdate().
{ if (!file_exists($this->DB_UPDATE_FILE)) { $this->error = "no_db_update_file"; $this->filecontent = array(); return false; } $this->filecontent = @file($this->DB_UPDATE_FILE); return true; }
ilDBUpdate::setCurrentVersion | ( | $ | a_version | ) |
Definition at line 121 of file class.ilDBUpdate.php.
References $q.
Referenced by applyUpdateNr().
{ { $q = "UPDATE settings SET ". "value = '".$a_version."' ". "WHERE keyword = 'db_version'"; } $this->db->query($q); $this->currentVersion = $a_version; return true; }
ilDBUpdate::$currentVersion |
Definition at line 46 of file class.ilDBUpdate.php.
ilDBUpdate::$DB_UPDATE_FILE |
db update file
Definition at line 40 of file class.ilDBUpdate.php.
ilDBUpdate::$fileVersion |
Definition at line 52 of file class.ilDBUpdate.php.