Changes tracking data of a table.
public static changeTrackingData ( string $dbname, string $tablename, string $version, string $type, string | array $new_data ) : boolean | ||
$dbname | string | name of database |
$tablename | string | name of table |
$version | string | version |
$type | string | type of data(DDL || DML) |
$new_data | string | array | the new tracking data |
Результат | boolean | result of change |
/** * Function to delete from a tracking report log * * @param array &$data tracked data * @param string $which_log ddlog|dmlog * @param string $type DDL|DML * @param string $message success message * * @return string HTML for the message */ function PMA_deleteFromTrackingReportLog(&$data, $which_log, $type, $message) { $html = ''; $delete_id = $_REQUEST['delete_' . $which_log]; // Only in case of valid id if ($delete_id == (int) $delete_id) { unset($data[$which_log][$delete_id]); $successfullyDeleted = Tracker::changeTrackingData($_REQUEST['db'], $_REQUEST['table'], $_REQUEST['version'], $type, $data[$which_log]); if ($successfullyDeleted) { $msg = Message::success($message); } else { $msg = Message::rawError(__('Query error')); } $html .= $msg->getDisplay(); } return $html; }
/** * Test for Tracker::testChangeTrackingData() * * @return void * @test */ public function testChangeTrackingData() { if (!setupForTestsUsingDate()) { $this->markTestSkipped("Cannot override internal function date()"); } $this->assertFalse(Tracker::changeTrackingData("", "", "", "", "")); $GLOBALS['controllink'] = null; $dbi = $this->getMockBuilder('PMA\\libraries\\DatabaseInterface')->disableOriginalConstructor()->getMock(); $sql_query_1 = " UPDATE `pmadb`.`tracking`" . " SET `schema_sql` = '# new_data_processed' " . " WHERE `db_name` = 'pma_db' " . " AND `table_name` = 'pma_table' " . " AND `version` = '1.0' "; $date = date('Y-m-d H:i:s'); $new_data = array(array('username' => 'user1', 'statement' => 'test_statement1'), array('username' => 'user2', 'statement' => 'test_statement2')); $sql_query_2 = " UPDATE `pmadb`.`tracking`" . " SET `data_sql` = '# log {$date} user1test_statement1\n" . "# log {$date} user2test_statement2\n' " . " WHERE `db_name` = 'pma_db' " . " AND `table_name` = 'pma_table' " . " AND `version` = '1.0' "; $dbi->expects($this->at(0))->method('query')->with($sql_query_1, null, 0, false)->will($this->returnValue("executed_1")); $dbi->expects($this->at(1))->method('query')->with($sql_query_2, null, 0, false)->will($this->returnValue("executed_2")); $GLOBALS['dbi'] = $dbi; $this->assertEquals(true, Tracker::changeTrackingData('pma_db', 'pma_table', '1.0', 'DDL', "# new_data_processed")); $this->assertEquals(true, Tracker::changeTrackingData('pma_db', 'pma_table', '1.0', 'DML', $new_data)); tearDownForTestsUsingDate(); }