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 |
public static function changeTrackingData($dbname, $tablename, $version, $type, $new_data)
{
if ($type == 'DDL') {
$save_to = 'schema_sql';
} elseif ($type == 'DML') {
$save_to = 'data_sql';
} else {
return false;
}
$date = date('Y-m-d H:i:s');
$new_data_processed = '';
if (is_array($new_data)) {
foreach ($new_data as $data) {
$new_data_processed .= '# log ' . $date . ' ' . $data['username'] . $GLOBALS['dbi']->escapeString($data['statement']) . "\n";
}
} else {
$new_data_processed = $new_data;
}
$sql_query = " UPDATE " . self::_getTrackingTable() . " SET `" . $save_to . "` = '" . $new_data_processed . "' " . " WHERE `db_name` = '" . $GLOBALS['dbi']->escapeString($dbname) . "' " . " AND `table_name` = '" . $GLOBALS['dbi']->escapeString($tablename) . "' " . " AND `version` = '" . $GLOBALS['dbi']->escapeString($version) . "' ";
$result = PMA_queryAsControlUser($sql_query);
return (bool) $result;
}
/** * 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; }