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 applyUpdateNr().
{
$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";
}
return true;
}
Here is the call graph for this function:| ilDBUpdate::applyUpdateNr | ( | $ | nr | ) |
apply an update
| int | nr number what patch to apply |
Definition at line 234 of file class.ilDBUpdate.php.
References $ilCtrlStructureReader, $ilErr, $ilModuleReader, $ilUser, $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;
}
Here is the call graph for this function:
Here is the caller graph for this function:| 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;
}
Here is the caller graph for this function:| 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;
}
Here is the caller graph for this function:| ilDBUpdate::getDBVersionStatus | ( | ) |
Definition at line 328 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;
}
Here is the caller graph for this function:| ilDBUpdate::getTables | ( | ) |
Definition at line 336 of file class.ilDBUpdate.php.
References $query, $res, $row, $status, 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;
}
Here is the call graph for this function:| 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();
}
Here is the call graph for this function:| 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;
}
Here is the caller graph for this function:| 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;
}
Here is the caller graph for this function:| 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.
1.7.1