changeTrackingData() public static method

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
return boolean result of change
Beispiel #1
0
/**
 * 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();
 }