Add db backup/restore
This commit is contained in:
25
inc/db.php
25
inc/db.php
@@ -122,6 +122,29 @@ class Db extends PhpObject
|
||||
@array_walk($this->getInstallQueries(), array($this, 'setQuery'));
|
||||
}
|
||||
|
||||
public function getBackup() {
|
||||
$sBackupFile = uniqid('backup_').'.sql';
|
||||
|
||||
$sAppPath = '';
|
||||
if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') $sAppPath = 'C:\ProgramData\xampp\mysql\bin\\';
|
||||
exec($sAppPath.'mysqldump --user='.Settings::DB_LOGIN.' --password='.Settings::DB_PASS.' --databases '.Settings::DB_NAME.' --add-drop-database --result-file='.$sBackupFile);
|
||||
if(file_exists($sBackupFile)) {
|
||||
$sBackup = file_get_contents($sBackupFile);
|
||||
unlink($sBackupFile);
|
||||
return $sBackup;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
public function restoreBackup($sBackupFile) {
|
||||
$sAppPath = '';
|
||||
if(file_exists($sBackupFile)) {
|
||||
if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') $sAppPath = 'C:\ProgramData\xampp\mysql\bin\\';
|
||||
return exec($sAppPath.'mysql --user='.Settings::DB_LOGIN.' --password='.Settings::DB_PASS.' '.Settings::DB_NAME.' < '.$sBackupFile);
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
public function loadFile($sFilePath) {
|
||||
set_time_limit(0);
|
||||
$bResult = false;
|
||||
@@ -474,7 +497,7 @@ class Db extends PhpObject
|
||||
//linked tables
|
||||
switch($sTableName)
|
||||
{
|
||||
case array_key_exists($sTableName, $this->asOptions['cascading_delete']) :
|
||||
case (array_key_exists('cascading_delete', $this->asOptions) && array_key_exists($sTableName, $this->asOptions['cascading_delete'])) :
|
||||
$asTables = array_merge(is_array($sTableName)?array_values($sTableName):array($sTableName), array_values($this->asOptions['cascading_delete'][$sTableName]));
|
||||
break;
|
||||
case is_string($sTableName) :
|
||||
|
||||
Reference in New Issue
Block a user