From fa6222bdeef652523b1a921b3536e7a6695e2552 Mon Sep 17 00:00:00 2001 From: Matthew Bucci Date: Mon, 30 Oct 2023 21:02:50 -0700 Subject: [PATCH] correct regex for insert matching --- pg4wp/driver_pgsql_rewrite.php | 24 ++++++++++++++++-------- readme.md | 2 ++ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/pg4wp/driver_pgsql_rewrite.php b/pg4wp/driver_pgsql_rewrite.php index 8841a6c..83fe2d6 100644 --- a/pg4wp/driver_pgsql_rewrite.php +++ b/pg4wp/driver_pgsql_rewrite.php @@ -71,18 +71,26 @@ function pg4wp_rewrite($sql) // Put back the end of the query if it was separated $sql .= $end; - // For insert ID catching + // For insert ID caching if($logto == 'INSERT') { - $pattern = '/INSERT INTO (\w+)\s+\([ a-zA-Z_"]+/'; + $pattern = '/INSERT INTO "?([\w_]+)"? \(([^)]+)\)/i'; preg_match($pattern, $sql, $matches); - $GLOBALS['pg4wp_ins_table'] = $matches[1]; - $match_list = explode(' ', $matches[0]); - if($GLOBALS['pg4wp_ins_table']) { - $GLOBALS['pg4wp_ins_field'] = trim($match_list[3], ' () '); - if(!$GLOBALS['pg4wp_ins_field']) { - $GLOBALS['pg4wp_ins_field'] = trim($match_list[4], ' () '); + + if (isset($matches[1])) { + $GLOBALS['pg4wp_ins_table'] = $matches[1]; + } + + if (isset($matches[2])) { + $columns_str = $matches[2]; + $columns = explode(',', $columns_str); + $columns = array_map(function ($column) { + return trim(trim($column), '"'); + }, $columns); + if (isset($columns[0])) { + $GLOBALS['pg4wp_ins_field'] = $columns[0]; } } + $GLOBALS['pg4wp_last_insert'] = $sql; } elseif(isset($GLOBALS['pg4wp_queued_query'])) { pg_query($GLOBALS['pg4wp_queued_query']); diff --git a/readme.md b/readme.md index 9ef1f7c..0f99a17 100644 --- a/readme.md +++ b/readme.md @@ -42,6 +42,8 @@ PG4WP 2.0 will have a mechanism to add plugin support. | Theme | Version | Working | | ----------- | ----------- | --------- | | Twenty Twenty-Three | 1.2 | Confirmed | +| Twenty Twenty-Two | 1.5 | Confirmed | +| Twenty Twenty-One | 1.9 | Confirmed | ### Installation