Refactor ConfigStorage\RelationCleanup::database()
- Replaces escapeString() with quoteString() Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
This commit is contained in:
parent
bddaa399af
commit
b4f9063ceb
@ -188,100 +188,130 @@ class RelationCleanup
|
||||
*
|
||||
* @param string $db database name
|
||||
*/
|
||||
public function database($db): void
|
||||
public function database(string $db): void
|
||||
{
|
||||
$relationParameters = $this->relation->getRelationParameters();
|
||||
if ($relationParameters->db === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($relationParameters->columnCommentsFeature !== null) {
|
||||
$remove_query = 'DELETE FROM '
|
||||
. Util::backquote($relationParameters->columnCommentsFeature->database)
|
||||
. '.' . Util::backquote($relationParameters->columnCommentsFeature->columnInfo)
|
||||
. ' WHERE db_name = \'' . $this->dbi->escapeString($db) . '\'';
|
||||
$this->dbi->queryAsControlUser($remove_query);
|
||||
$columnCommentsFeature = $relationParameters->columnCommentsFeature;
|
||||
$bookmarkFeature = $relationParameters->bookmarkFeature;
|
||||
$displayFeature = $relationParameters->displayFeature;
|
||||
$pdfFeature = $relationParameters->pdfFeature;
|
||||
$relationFeature = $relationParameters->relationFeature;
|
||||
$uiPreferencesFeature = $relationParameters->uiPreferencesFeature;
|
||||
$navigationItemsHidingFeature = $relationParameters->navigationItemsHidingFeature;
|
||||
$savedQueryByExampleSearchesFeature = $relationParameters->savedQueryByExampleSearchesFeature;
|
||||
$centralColumnsFeature = $relationParameters->centralColumnsFeature;
|
||||
|
||||
if ($columnCommentsFeature !== null) {
|
||||
$statement = sprintf(
|
||||
'DELETE FROM %s.%s WHERE db_name = %s',
|
||||
Util::backquote($columnCommentsFeature->database),
|
||||
Util::backquote($columnCommentsFeature->columnInfo),
|
||||
$this->dbi->quoteString($db),
|
||||
);
|
||||
$this->dbi->queryAsControlUser($statement);
|
||||
}
|
||||
|
||||
if ($relationParameters->bookmarkFeature !== null) {
|
||||
$remove_query = 'DELETE FROM '
|
||||
. Util::backquote($relationParameters->bookmarkFeature->database)
|
||||
. '.' . Util::backquote($relationParameters->bookmarkFeature->bookmark)
|
||||
. ' WHERE dbase = \'' . $this->dbi->escapeString($db) . '\'';
|
||||
$this->dbi->queryAsControlUser($remove_query);
|
||||
if ($bookmarkFeature !== null) {
|
||||
$statement = sprintf(
|
||||
'DELETE FROM %s.%s WHERE dbase = %s',
|
||||
Util::backquote($bookmarkFeature->database),
|
||||
Util::backquote($bookmarkFeature->bookmark),
|
||||
$this->dbi->quoteString($db),
|
||||
);
|
||||
$this->dbi->queryAsControlUser($statement);
|
||||
}
|
||||
|
||||
if ($relationParameters->displayFeature !== null) {
|
||||
$remove_query = 'DELETE FROM '
|
||||
. Util::backquote($relationParameters->displayFeature->database)
|
||||
. '.' . Util::backquote($relationParameters->displayFeature->tableInfo)
|
||||
. ' WHERE db_name = \'' . $this->dbi->escapeString($db) . '\'';
|
||||
$this->dbi->queryAsControlUser($remove_query);
|
||||
if ($displayFeature !== null) {
|
||||
$statement = sprintf(
|
||||
'DELETE FROM %s.%s WHERE db_name = %s',
|
||||
Util::backquote($displayFeature->database),
|
||||
Util::backquote($displayFeature->tableInfo),
|
||||
$this->dbi->quoteString($db),
|
||||
);
|
||||
$this->dbi->queryAsControlUser($statement);
|
||||
}
|
||||
|
||||
if ($relationParameters->pdfFeature !== null) {
|
||||
$remove_query = 'DELETE FROM '
|
||||
. Util::backquote($relationParameters->pdfFeature->database)
|
||||
. '.' . Util::backquote($relationParameters->pdfFeature->pdfPages)
|
||||
. ' WHERE db_name = \'' . $this->dbi->escapeString($db) . '\'';
|
||||
$this->dbi->queryAsControlUser($remove_query);
|
||||
if ($pdfFeature !== null) {
|
||||
$statement = sprintf(
|
||||
'DELETE FROM %s.%s WHERE db_name = %s',
|
||||
Util::backquote($pdfFeature->database),
|
||||
Util::backquote($pdfFeature->pdfPages),
|
||||
$this->dbi->quoteString($db),
|
||||
);
|
||||
$this->dbi->queryAsControlUser($statement);
|
||||
|
||||
$remove_query = 'DELETE FROM '
|
||||
. Util::backquote($relationParameters->pdfFeature->database)
|
||||
. '.' . Util::backquote($relationParameters->pdfFeature->tableCoords)
|
||||
. ' WHERE db_name = \'' . $this->dbi->escapeString($db) . '\'';
|
||||
$this->dbi->queryAsControlUser($remove_query);
|
||||
$statement = sprintf(
|
||||
'DELETE FROM %s.%s WHERE db_name = %s',
|
||||
Util::backquote($pdfFeature->database),
|
||||
Util::backquote($pdfFeature->tableCoords),
|
||||
$this->dbi->quoteString($db),
|
||||
);
|
||||
$this->dbi->queryAsControlUser($statement);
|
||||
}
|
||||
|
||||
if ($relationParameters->relationFeature !== null) {
|
||||
$remove_query = 'DELETE FROM '
|
||||
. Util::backquote($relationParameters->relationFeature->database)
|
||||
. '.' . Util::backquote($relationParameters->relationFeature->relation)
|
||||
. ' WHERE master_db = \''
|
||||
. $this->dbi->escapeString($db) . '\'';
|
||||
$this->dbi->queryAsControlUser($remove_query);
|
||||
if ($relationFeature !== null) {
|
||||
$statement = sprintf(
|
||||
'DELETE FROM %s.%s WHERE master_db = %s',
|
||||
Util::backquote($relationFeature->database),
|
||||
Util::backquote($relationFeature->relation),
|
||||
$this->dbi->quoteString($db),
|
||||
);
|
||||
$this->dbi->queryAsControlUser($statement);
|
||||
|
||||
$remove_query = 'DELETE FROM '
|
||||
. Util::backquote($relationParameters->relationFeature->database)
|
||||
. '.' . Util::backquote($relationParameters->relationFeature->relation)
|
||||
. ' WHERE foreign_db = \'' . $this->dbi->escapeString($db)
|
||||
. '\'';
|
||||
$this->dbi->queryAsControlUser($remove_query);
|
||||
$statement = sprintf(
|
||||
'DELETE FROM %s.%s WHERE foreign_db = %s',
|
||||
Util::backquote($relationFeature->database),
|
||||
Util::backquote($relationFeature->relation),
|
||||
$this->dbi->quoteString($db),
|
||||
);
|
||||
$this->dbi->queryAsControlUser($statement);
|
||||
}
|
||||
|
||||
if ($relationParameters->uiPreferencesFeature !== null) {
|
||||
$remove_query = 'DELETE FROM '
|
||||
. Util::backquote($relationParameters->uiPreferencesFeature->database)
|
||||
. '.' . Util::backquote($relationParameters->uiPreferencesFeature->tableUiPrefs)
|
||||
. ' WHERE db_name = \'' . $this->dbi->escapeString($db) . '\'';
|
||||
$this->dbi->queryAsControlUser($remove_query);
|
||||
if ($uiPreferencesFeature !== null) {
|
||||
$statement = sprintf(
|
||||
'DELETE FROM %s.%s WHERE db_name = %s',
|
||||
Util::backquote($uiPreferencesFeature->database),
|
||||
Util::backquote($uiPreferencesFeature->tableUiPrefs),
|
||||
$this->dbi->quoteString($db),
|
||||
);
|
||||
$this->dbi->queryAsControlUser($statement);
|
||||
}
|
||||
|
||||
if ($relationParameters->navigationItemsHidingFeature !== null) {
|
||||
$remove_query = 'DELETE FROM '
|
||||
. Util::backquote($relationParameters->navigationItemsHidingFeature->database)
|
||||
. '.' . Util::backquote($relationParameters->navigationItemsHidingFeature->navigationHiding)
|
||||
. ' WHERE db_name = \'' . $this->dbi->escapeString($db) . '\'';
|
||||
$this->dbi->queryAsControlUser($remove_query);
|
||||
if ($navigationItemsHidingFeature !== null) {
|
||||
$statement = sprintf(
|
||||
'DELETE FROM %s.%s WHERE db_name = %s',
|
||||
Util::backquote($navigationItemsHidingFeature->database),
|
||||
Util::backquote($navigationItemsHidingFeature->navigationHiding),
|
||||
$this->dbi->quoteString($db),
|
||||
);
|
||||
$this->dbi->queryAsControlUser($statement);
|
||||
}
|
||||
|
||||
if ($relationParameters->savedQueryByExampleSearchesFeature !== null) {
|
||||
$remove_query = 'DELETE FROM '
|
||||
. Util::backquote($relationParameters->savedQueryByExampleSearchesFeature->database)
|
||||
. '.' . Util::backquote($relationParameters->savedQueryByExampleSearchesFeature->savedSearches)
|
||||
. ' WHERE db_name = \'' . $this->dbi->escapeString($db) . '\'';
|
||||
$this->dbi->queryAsControlUser($remove_query);
|
||||
if ($savedQueryByExampleSearchesFeature !== null) {
|
||||
$statement = sprintf(
|
||||
'DELETE FROM %s.%s WHERE db_name = %s',
|
||||
Util::backquote($savedQueryByExampleSearchesFeature->database),
|
||||
Util::backquote($savedQueryByExampleSearchesFeature->savedSearches),
|
||||
$this->dbi->quoteString($db),
|
||||
);
|
||||
$this->dbi->queryAsControlUser($statement);
|
||||
}
|
||||
|
||||
if ($relationParameters->centralColumnsFeature === null) {
|
||||
if ($centralColumnsFeature === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
$remove_query = 'DELETE FROM '
|
||||
. Util::backquote($relationParameters->centralColumnsFeature->database)
|
||||
. '.' . Util::backquote($relationParameters->centralColumnsFeature->centralColumns)
|
||||
. ' WHERE db_name = \'' . $this->dbi->escapeString($db) . '\'';
|
||||
$this->dbi->queryAsControlUser($remove_query);
|
||||
$statement = sprintf(
|
||||
'DELETE FROM %s.%s WHERE db_name = %s',
|
||||
Util::backquote($centralColumnsFeature->database),
|
||||
Util::backquote($centralColumnsFeature->centralColumns),
|
||||
$this->dbi->quoteString($db),
|
||||
);
|
||||
$this->dbi->queryAsControlUser($statement);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -1390,17 +1390,6 @@
|
||||
<code>escapeString</code>
|
||||
<code>escapeString</code>
|
||||
<code>escapeString</code>
|
||||
<code>escapeString</code>
|
||||
<code>escapeString</code>
|
||||
<code>escapeString</code>
|
||||
<code>escapeString</code>
|
||||
<code>escapeString</code>
|
||||
<code>escapeString</code>
|
||||
<code>escapeString</code>
|
||||
<code>escapeString</code>
|
||||
<code>escapeString</code>
|
||||
<code>escapeString</code>
|
||||
<code>escapeString</code>
|
||||
</DeprecatedMethod>
|
||||
</file>
|
||||
<file src="libraries/classes/ConfigStorage/UserGroups.php">
|
||||
@ -3268,8 +3257,6 @@
|
||||
</InvalidArrayOffset>
|
||||
<MixedArgument>
|
||||
<code>$database</code>
|
||||
<code>$database</code>
|
||||
<code>$database</code>
|
||||
</MixedArgument>
|
||||
<MixedAssignment>
|
||||
<code><![CDATA[$GLOBALS['errorUrl']]]></code>
|
||||
@ -16220,7 +16207,6 @@
|
||||
<file src="test/classes/ConfigStorage/RelationCleanupTest.php">
|
||||
<DeprecatedMethod>
|
||||
<code>withConsecutive</code>
|
||||
<code>withConsecutive</code>
|
||||
</DeprecatedMethod>
|
||||
</file>
|
||||
<file src="test/classes/ConfigStorage/RelationTest.php">
|
||||
|
||||
@ -128,8 +128,8 @@ class RelationCleanupTest extends AbstractTestCase
|
||||
|
||||
public function testDatabaseWithRelations(): void
|
||||
{
|
||||
$_SESSION['relation'] = [];
|
||||
$_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([
|
||||
$relation = $this->createStub(Relation::class);
|
||||
$relation->method('getRelationParameters')->willReturn(RelationParameters::fromArray([
|
||||
'user' => 'user',
|
||||
'db' => 'pmadb',
|
||||
'commwork' => true,
|
||||
@ -151,26 +151,27 @@ class RelationCleanupTest extends AbstractTestCase
|
||||
'navigationhiding' => 'navigationhiding',
|
||||
'savedsearches' => 'savedsearches',
|
||||
'central_columns' => 'central_columns',
|
||||
])->toArray();
|
||||
]));
|
||||
|
||||
$dbi = $this->createPartialMock(DatabaseInterface::class, ['queryAsControlUser']);
|
||||
$dbi->expects($this->exactly(11))
|
||||
->method('queryAsControlUser')
|
||||
->withConsecutive(
|
||||
[$this->equalTo("DELETE FROM `pmadb`.`column_info` WHERE db_name = 'database'")],
|
||||
[$this->equalTo("DELETE FROM `pmadb`.`bookmark` WHERE dbase = 'database'")],
|
||||
[$this->equalTo("DELETE FROM `pmadb`.`table_info` WHERE db_name = 'database'")],
|
||||
[$this->equalTo("DELETE FROM `pmadb`.`pdf_pages` WHERE db_name = 'database'")],
|
||||
[$this->equalTo("DELETE FROM `pmadb`.`table_coords` WHERE db_name = 'database'")],
|
||||
[$this->equalTo("DELETE FROM `pmadb`.`relation` WHERE master_db = 'database'")],
|
||||
[$this->equalTo("DELETE FROM `pmadb`.`relation` WHERE foreign_db = 'database'")],
|
||||
[$this->equalTo("DELETE FROM `pmadb`.`table_uiprefs` WHERE db_name = 'database'")],
|
||||
[$this->equalTo("DELETE FROM `pmadb`.`navigationhiding` WHERE db_name = 'database'")],
|
||||
[$this->equalTo("DELETE FROM `pmadb`.`savedsearches` WHERE db_name = 'database'")],
|
||||
[$this->equalTo("DELETE FROM `pmadb`.`central_columns` WHERE db_name = 'database'")]
|
||||
);
|
||||
$dbi = $this->createMock(DatabaseInterface::class);
|
||||
$dbi->expects($this->any())->method('quoteString')
|
||||
->will($this->returnCallback(static fn (string $string): string => "'" . $string . "'"));
|
||||
$result = $this->createStub(ResultInterface::class);
|
||||
$dbi->expects($this->exactly(11))->method('queryAsControlUser')->willReturnMap([
|
||||
["DELETE FROM `pmadb`.`column_info` WHERE db_name = 'database'", $result],
|
||||
["DELETE FROM `pmadb`.`bookmark` WHERE dbase = 'database'", $result],
|
||||
["DELETE FROM `pmadb`.`table_info` WHERE db_name = 'database'", $result],
|
||||
["DELETE FROM `pmadb`.`pdf_pages` WHERE db_name = 'database'", $result],
|
||||
["DELETE FROM `pmadb`.`table_coords` WHERE db_name = 'database'", $result],
|
||||
["DELETE FROM `pmadb`.`relation` WHERE master_db = 'database'", $result],
|
||||
["DELETE FROM `pmadb`.`relation` WHERE foreign_db = 'database'", $result],
|
||||
["DELETE FROM `pmadb`.`table_uiprefs` WHERE db_name = 'database'", $result],
|
||||
["DELETE FROM `pmadb`.`navigationhiding` WHERE db_name = 'database'", $result],
|
||||
["DELETE FROM `pmadb`.`savedsearches` WHERE db_name = 'database'", $result],
|
||||
["DELETE FROM `pmadb`.`central_columns` WHERE db_name = 'database'", $result],
|
||||
]);
|
||||
|
||||
(new RelationCleanup($dbi, new Relation($dbi)))->database('database');
|
||||
(new RelationCleanup($dbi, $relation))->database('database');
|
||||
}
|
||||
|
||||
public function testUserWithoutRelations(): void
|
||||
|
||||
Loading…
Reference in New Issue
Block a user