Add db backup/restore

This commit is contained in:
2019-10-05 00:51:46 +02:00
parent c2fd2401a5
commit 06798d8a3b
3 changed files with 54 additions and 5 deletions

View File

@@ -122,6 +122,29 @@ class Db extends PhpObject
@array_walk($this->getInstallQueries(), array($this, 'setQuery')); @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) { public function loadFile($sFilePath) {
set_time_limit(0); set_time_limit(0);
$bResult = false; $bResult = false;
@@ -474,7 +497,7 @@ class Db extends PhpObject
//linked tables //linked tables
switch($sTableName) 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])); $asTables = array_merge(is_array($sTableName)?array_values($sTableName):array($sTableName), array_values($this->asOptions['cascading_delete'][$sTableName]));
break; break;
case is_string($sTableName) : case is_string($sTableName) :

View File

@@ -93,13 +93,13 @@ abstract class Main extends PhpObject
$this->setMasks(); $this->setMasks();
} }
public static function addTimestampToFilePath($sFile) public static function addTimestampToFilePath($sFilePath)
{ {
//Remove timestamp //Remove timestamp
$sFilePath = preg_replace('/(.*)\?[\d]{14}$/', '$1', $sFile); $sCleanedFilePath = preg_replace('/(.*)\?[\d]{14}$/', '$1', $sFilePath);
//Add timestamp //Add timestamp
return file_exists($sFilePath)?$sFilePath.'?'.date("YmdHis", filemtime($sFilePath)):$sFile; return file_exists($sCleanedFilePath)?$sCleanedFilePath.'?'.date("YmdHis", filemtime($sCleanedFilePath)):$sFilePath;
} }
public function addUncaughtError($sError) public function addUncaughtError($sError)

View File

@@ -40,7 +40,7 @@ class ToolBox
if(defined('STDIN')) mb_parse_str(implode('&', array_slice($argv, 1)), $_GET); if(defined('STDIN')) mb_parse_str(implode('&', array_slice($argv, 1)), $_GET);
$_REQUEST = array_merge($_GET, $_REQUEST); $_REQUEST = array_merge($_GET, $_REQUEST);
} }
public static function array_map_encapsulate($oData, $sChar) public static function array_map_encapsulate($oData, $sChar)
{ {
if(is_array($oData)) if(is_array($oData))
@@ -126,6 +126,32 @@ class ToolBox
return json_encode($asData); return json_encode($asData);
} }
public static function curl($sUrl, $bHeader=false, $asPostData=array(), $sCookie='', $sCreds='') {
$oCurl = curl_init();
curl_setopt($oCurl, CURLOPT_URL, $sUrl);
curl_setopt($oCurl, CURLOPT_VERBOSE, false);
curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($oCurl, CURLOPT_HEADER, $bHeader);
if($bHeader) curl_setopt($oCurl, CURLOPT_FOLLOWLOCATION, true);
if(!empty($asPostData)) {
curl_setopt($oCurl, CURLOPT_POST, 1);
curl_setopt($oCurl, CURLOPT_POSTFIELDS, $asPostData);
}
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($oCurl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
if($sCookie!='') curl_setopt($oCurl, CURLOPT_COOKIE, $sCookie);
if($sCreds!='') curl_setopt($oCurl, CURLOPT_USERPWD, $sCreds);
$sContent = curl_exec($oCurl);
curl_close($oCurl);
return $sContent;
}
public static function getMimeType($sPath, $bSubTypeOnly=false) public static function getMimeType($sPath, $bSubTypeOnly=false)
{ {
$sMimetype = ''; $sMimetype = '';