mirror of https://github.com/FreshRSS/FreshRSS.git
Windows: release SQLite (#6285)
* Windows: release SQLite fix https://github.com/FreshRSS/FreshRSS/issues/6275 * Do not use sharedPdo for deleting user * Case of same user * Help PHPStan
This commit is contained in:
parent
b37404cce7
commit
90fbb524ce
|
@ -389,8 +389,10 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
|
||||||
$ok &= is_dir($user_data);
|
$ok &= is_dir($user_data);
|
||||||
if ($ok) {
|
if ($ok) {
|
||||||
FreshRSS_fever_Util::deleteKey($username);
|
FreshRSS_fever_Util::deleteKey($username);
|
||||||
|
Minz_ModelPdo::$usesSharedPdo = false;
|
||||||
$oldUserDAO = FreshRSS_Factory::createUserDao($username);
|
$oldUserDAO = FreshRSS_Factory::createUserDao($username);
|
||||||
$ok &= $oldUserDAO->deleteUser();
|
$ok &= $oldUserDAO->deleteUser();
|
||||||
|
Minz_ModelPdo::$usesSharedPdo = true;
|
||||||
$ok &= recursive_unlink($user_data);
|
$ok &= recursive_unlink($user_data);
|
||||||
$filenames = glob(PSHB_PATH . '/feeds/*/' . $username . '.txt');
|
$filenames = glob(PSHB_PATH . '/feeds/*/' . $username . '.txt');
|
||||||
if (!empty($filenames)) {
|
if (!empty($filenames)) {
|
||||||
|
|
|
@ -32,6 +32,7 @@ class FreshRSS_UserDAO extends Minz_ModelPdo {
|
||||||
$ok = $this->pdo->exec($GLOBALS['SQL_DROP_TABLES']) !== false;
|
$ok = $this->pdo->exec($GLOBALS['SQL_DROP_TABLES']) !== false;
|
||||||
|
|
||||||
if ($ok) {
|
if ($ok) {
|
||||||
|
$this->close();
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
$info = $this->pdo->errorInfo();
|
$info = $this->pdo->errorInfo();
|
||||||
|
|
|
@ -18,7 +18,7 @@ class Minz_ModelPdo {
|
||||||
|
|
||||||
private static ?Minz_Pdo $sharedPdo = null;
|
private static ?Minz_Pdo $sharedPdo = null;
|
||||||
|
|
||||||
private static ?string $sharedCurrentUser;
|
private static string $sharedCurrentUser = '';
|
||||||
|
|
||||||
protected Minz_Pdo $pdo;
|
protected Minz_Pdo $pdo;
|
||||||
|
|
||||||
|
@ -78,7 +78,9 @@ class Minz_ModelPdo {
|
||||||
$db['user'], Minz_Exception::ERROR
|
$db['user'], Minz_Exception::ERROR
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
self::$sharedPdo = $this->pdo;
|
if (self::$usesSharedPdo) {
|
||||||
|
self::$sharedPdo = $this->pdo;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -97,7 +99,7 @@ class Minz_ModelPdo {
|
||||||
$this->pdo = $currentPdo;
|
$this->pdo = $currentPdo;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ($currentUser == '') {
|
if ($currentUser == null) {
|
||||||
throw new Minz_PDOConnectionException('Current user must not be empty!', '', Minz_Exception::ERROR);
|
throw new Minz_PDOConnectionException('Current user must not be empty!', '', Minz_Exception::ERROR);
|
||||||
}
|
}
|
||||||
if (self::$usesSharedPdo && self::$sharedPdo !== null && $currentUser === self::$sharedCurrentUser) {
|
if (self::$usesSharedPdo && self::$sharedPdo !== null && $currentUser === self::$sharedCurrentUser) {
|
||||||
|
@ -106,7 +108,9 @@ class Minz_ModelPdo {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$this->current_user = $currentUser;
|
$this->current_user = $currentUser;
|
||||||
self::$sharedCurrentUser = $currentUser;
|
if (self::$usesSharedPdo) {
|
||||||
|
self::$sharedCurrentUser = $currentUser;
|
||||||
|
}
|
||||||
|
|
||||||
$ex = null;
|
$ex = null;
|
||||||
//Attempt a few times to connect to database
|
//Attempt a few times to connect to database
|
||||||
|
@ -155,6 +159,15 @@ class Minz_ModelPdo {
|
||||||
self::$sharedCurrentUser = '';
|
self::$sharedCurrentUser = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function close(): void {
|
||||||
|
if ($this->current_user === self::$sharedCurrentUser) {
|
||||||
|
self::clean();
|
||||||
|
}
|
||||||
|
$this->current_user = '';
|
||||||
|
unset($this->pdo);
|
||||||
|
gc_collect_cycles();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array<string,int|string|null> $values
|
* @param array<string,int|string|null> $values
|
||||||
* @phpstan-return ($mode is PDO::FETCH_ASSOC ? array<array<string,int|string|null>>|null : array<int|string|null>|null)
|
* @phpstan-return ($mode is PDO::FETCH_ASSOC ? array<array<string,int|string|null>>|null : array<int|string|null>|null)
|
||||||
|
|
Loading…
Reference in New Issue