4
0
causefx 7 жил өмнө
parent
commit
fb22a04028

+ 40 - 29
api/functions/api-functions.php

@@ -221,39 +221,50 @@ function updateDB($oldVerNum = false)
 		$backupDB = $pathDigest['dirname'] . '/' . $pathDigest['filename'] . '[' . date('Y-m-d_H-i-s') . ']' . ($oldVerNum ? '[' . $oldVerNum . ']' : '') . '.bak.db';
 		copy($GLOBALS['dbLocation'] . $GLOBALS['dbName'], $backupDB);
 		$success = createDB($GLOBALS['dbLocation'], $migrationDB);
-		try {
-			$connectOldDB = new Dibi\Connection([
-				'driver' => 'sqlite3',
-				'database' => $backupDB,
-			]);
-			$connectNewDB = new Dibi\Connection([
-				'driver' => 'sqlite3',
-				'database' => $GLOBALS['dbLocation'] . $migrationDB,
-			]);
-			$tables = $connectOldDB->fetchAll('SELECT name FROM sqlite_master WHERE type="table"');
-			foreach ($tables as $table) {
-				$data = $connectOldDB->fetchAll('SELECT * FROM ' . $table['name']);
-				foreach ($data as $row) {
-					$connectNewDB->query('INSERT into ' . $table['name'], $row);
+		if ($success) {
+			try {
+				$connectOldDB = new Dibi\Connection([
+					'driver' => 'sqlite3',
+					'database' => $backupDB,
+				]);
+				$connectNewDB = new Dibi\Connection([
+					'driver' => 'sqlite3',
+					'database' => $GLOBALS['dbLocation'] . $migrationDB,
+				]);
+				$tables = $connectOldDB->fetchAll('SELECT name FROM sqlite_master WHERE type="table"');
+				foreach ($tables as $table) {
+					$data = $connectOldDB->fetchAll('SELECT * FROM ' . $table['name']);
+					foreach ($data as $row) {
+						$connectNewDB->query('INSERT into ' . $table['name'], $row);
+					}
 				}
+				$connectOldDB->disconnect();
+				$connectNewDB->disconnect();
+				// Remove Current Database
+				if (file_exists($GLOBALS['dbLocation'] . $migrationDB)) {
+					$oldFileSize = filesize($GLOBALS['dbLocation'] . $GLOBALS['dbName']);
+					$newFileSize = filesize($GLOBALS['dbLocation'] . $migrationDB);
+					if ($newFileSize >= $oldFileSize) {
+						@unlink($GLOBALS['dbLocation'] . $GLOBALS['dbName']);
+						copy($GLOBALS['dbLocation'] . $migrationDB, $GLOBALS['dbLocation'] . $GLOBALS['dbName']);
+						@unlink($GLOBALS['dbLocation'] . $migrationDB);
+						writeLog('success', 'Update Function -  Migrated Old Info to new Database', 'Database');
+						unlink($tempLock);
+						return true;
+					}
+				}
+				unlink($tempLock);
+				return false;
+			} catch (Dibi\Exception $e) {
+				writeLog('error', 'Update Function -  Error [' . $e . ']', 'Database');
+				unlink($tempLock);
+				return false;
 			}
-			$connectOldDB->disconnect();
-			$connectNewDB->disconnect();
-			// Remove Current Database
-			if (file_exists($GLOBALS['dbLocation'] . $migrationDB)) {
-				@unlink($GLOBALS['dbLocation'] . $GLOBALS['dbName']);
-				copy($GLOBALS['dbLocation'] . $migrationDB, $GLOBALS['dbLocation'] . $GLOBALS['dbName']);
-				@unlink($GLOBALS['dbLocation'] . $migrationDB);
-			}
-			writeLog('success', 'Update Function -  Migrated Old Info to new Database', 'Database');
-			unlink($tempLock);
-			return true;
-		} catch (Dibi\Exception $e) {
-			writeLog('error', 'Update Function -  Error [' . $e . ']', 'Database');
-			unlink($tempLock);
-			return false;
 		}
+		unlink($tempLock);
+		return false;
 	}
+	return false;
 }
 
 function createFirstAdmin($path, $filename, $username, $password, $email)