Add LogTypeEnum
Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>
This commit is contained in:
parent
89fb8ee371
commit
3e5fe772b2
39
libraries/classes/Tracking/LogTypeEnum.php
Normal file
39
libraries/classes/Tracking/LogTypeEnum.php
Normal file
@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace PhpMyAdmin\Tracking;
|
||||
|
||||
use function __;
|
||||
|
||||
enum LogTypeEnum
|
||||
{
|
||||
case DDL;
|
||||
case DML;
|
||||
|
||||
/** @psalm-return literal-string */
|
||||
public function getColumnName(): string
|
||||
{
|
||||
return match ($this) {
|
||||
LogTypeEnum::DDL => 'schema_sql',
|
||||
LogTypeEnum::DML => 'data_sql',
|
||||
};
|
||||
}
|
||||
|
||||
/** @psalm-return literal-string */
|
||||
public function getLogName(): string
|
||||
{
|
||||
return match ($this) {
|
||||
LogTypeEnum::DDL => 'ddlog',
|
||||
LogTypeEnum::DML => 'dmlog',
|
||||
};
|
||||
}
|
||||
|
||||
public function getSuccessMessage(): string
|
||||
{
|
||||
return match ($this) {
|
||||
LogTypeEnum::DDL => __('Tracking data definition successfully deleted'),
|
||||
LogTypeEnum::DML => __('Tracking data manipulation successfully deleted'),
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -810,28 +810,12 @@ class Tracking
|
||||
$html = '';
|
||||
if ($deleteDdlog) {
|
||||
// Delete ddlog row data
|
||||
$html .= $this->deleteFromTrackingReportLog(
|
||||
$db,
|
||||
$table,
|
||||
$version,
|
||||
$data,
|
||||
'ddlog',
|
||||
'DDL',
|
||||
__('Tracking data definition successfully deleted'),
|
||||
);
|
||||
$html .= $this->deleteFromTrackingReportLog($db, $table, $version, $data, LogTypeEnum::DDL);
|
||||
}
|
||||
|
||||
if ($deleteDmlog) {
|
||||
// Delete dmlog row data
|
||||
$html .= $this->deleteFromTrackingReportLog(
|
||||
$db,
|
||||
$table,
|
||||
$version,
|
||||
$data,
|
||||
'dmlog',
|
||||
'DML',
|
||||
__('Tracking data manipulation successfully deleted'),
|
||||
);
|
||||
$html .= $this->deleteFromTrackingReportLog($db, $table, $version, $data, LogTypeEnum::DML);
|
||||
}
|
||||
|
||||
return $html;
|
||||
@ -840,10 +824,8 @@ class Tracking
|
||||
/**
|
||||
* Function to delete from a tracking report log
|
||||
*
|
||||
* @param mixed[] $data tracked data
|
||||
* @param string $whichLog ddlog|dmlog
|
||||
* @param string $type DDL|DML
|
||||
* @param string $message success message
|
||||
* @param mixed[] $data tracked data
|
||||
* @param LogTypeEnum $logType DDL|DML
|
||||
*
|
||||
* @return string HTML for the message
|
||||
*/
|
||||
@ -852,20 +834,19 @@ class Tracking
|
||||
string $table,
|
||||
string $version,
|
||||
array &$data,
|
||||
string $whichLog,
|
||||
string $type,
|
||||
string $message,
|
||||
LogTypeEnum $logType,
|
||||
): string {
|
||||
$html = '';
|
||||
$whichLog = $logType->getLogName();
|
||||
$deleteId = $_POST['delete_' . $whichLog];
|
||||
|
||||
// Only in case of valid id
|
||||
if ($deleteId == (int) $deleteId) {
|
||||
unset($data[$whichLog][$deleteId]);
|
||||
|
||||
$successfullyDeleted = $this->changeTrackingData($db, $table, $version, $type, $data[$whichLog]);
|
||||
$successfullyDeleted = $this->changeTrackingData($db, $table, $version, $logType, $data[$whichLog]);
|
||||
if ($successfullyDeleted) {
|
||||
$msg = Message::success($message);
|
||||
$msg = Message::success($logType->getSuccessMessage());
|
||||
} else {
|
||||
$msg = Message::rawError(__('Query error'));
|
||||
}
|
||||
@ -882,24 +863,16 @@ class Tracking
|
||||
* @param string $dbName name of database
|
||||
* @param string $tableName name of table
|
||||
* @param string $version version
|
||||
* @param string $type type of data(DDL || DML)
|
||||
* @param LogTypeEnum $logType type of data(DDL || DML)
|
||||
* @param string|mixed[] $newData the new tracking data
|
||||
*/
|
||||
public function changeTrackingData(
|
||||
string $dbName,
|
||||
string $tableName,
|
||||
string $version,
|
||||
string $type,
|
||||
LogTypeEnum $logType,
|
||||
string|array $newData,
|
||||
): bool {
|
||||
if ($type === 'DDL') {
|
||||
$saveTo = 'schema_sql';
|
||||
} elseif ($type === 'DML') {
|
||||
$saveTo = 'data_sql';
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
$date = Util::date('Y-m-d H:i:s');
|
||||
|
||||
$newDataProcessed = '';
|
||||
@ -920,7 +893,7 @@ class Tracking
|
||||
'UPDATE %s.%s SET `%s` = %s WHERE `db_name` = %s AND `table_name` = %s AND `version` = %s',
|
||||
Util::backquote($trackingFeature->database),
|
||||
Util::backquote($trackingFeature->tracking),
|
||||
$saveTo,
|
||||
$logType->getColumnName(),
|
||||
$this->dbi->quoteString($newDataProcessed, Connection::TYPE_CONTROL),
|
||||
$this->dbi->quoteString($dbName, Connection::TYPE_CONTROL),
|
||||
$this->dbi->quoteString($tableName, Connection::TYPE_CONTROL),
|
||||
|
||||
@ -12,6 +12,7 @@ use PhpMyAdmin\SqlQueryForm;
|
||||
use PhpMyAdmin\Template;
|
||||
use PhpMyAdmin\Tests\AbstractTestCase;
|
||||
use PhpMyAdmin\Tests\Stubs\DummyResult;
|
||||
use PhpMyAdmin\Tracking\LogTypeEnum;
|
||||
use PhpMyAdmin\Tracking\Tracking;
|
||||
use PhpMyAdmin\Tracking\TrackingChecker;
|
||||
use PhpMyAdmin\Url;
|
||||
@ -586,10 +587,6 @@ class TrackingTest extends AbstractTestCase
|
||||
*/
|
||||
public function testChangeTrackingData(): void
|
||||
{
|
||||
$this->assertFalse(
|
||||
$this->tracking->changeTrackingData('', '', '', '', ''),
|
||||
);
|
||||
|
||||
$dbi = $this->getMockBuilder(DatabaseInterface::class)
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
@ -640,7 +637,7 @@ class TrackingTest extends AbstractTestCase
|
||||
'pma_db',
|
||||
'pma_table',
|
||||
'1.0',
|
||||
'DDL',
|
||||
LogTypeEnum::DDL,
|
||||
'# new_data_processed',
|
||||
),
|
||||
);
|
||||
@ -650,7 +647,7 @@ class TrackingTest extends AbstractTestCase
|
||||
'pma_db',
|
||||
'pma_table',
|
||||
'1.0',
|
||||
'DML',
|
||||
LogTypeEnum::DML,
|
||||
$newData,
|
||||
),
|
||||
);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user