DB IO Placeholder regex fix for JSON/JSONB placeholders
This commit is contained in:
@@ -21,7 +21,8 @@
|
|||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"egrajp/smarty-extended": "^4.3",
|
"egrajp/smarty-extended": "^4.3",
|
||||||
"gullevek/dotenv": "dev-master"
|
"gullevek/dotenv": "dev-master",
|
||||||
|
"phpunit/phpunit": "^9"
|
||||||
},
|
},
|
||||||
"repositories": {
|
"repositories": {
|
||||||
"git.egplusww.jp.Composer": {
|
"git.egplusww.jp.Composer": {
|
||||||
|
|||||||
@@ -39,9 +39,11 @@ class ConvertPlaceholder
|
|||||||
): array {
|
): array {
|
||||||
$convert_to = strtolower($convert_to);
|
$convert_to = strtolower($convert_to);
|
||||||
$matches = [];
|
$matches = [];
|
||||||
|
$query_split = '[(=,?-]|->|->>|#>|#>>|@>|<@|\?\|\?\&|\|\||#-';
|
||||||
$pattern = '/'
|
$pattern = '/'
|
||||||
// prefix string part, must match towards
|
// prefix string part, must match towards
|
||||||
. '(?:\'.*?\')?\s*(?:\?\?|[(=,])\s*'
|
// seperator for ( = , ? - [and json/jsonb in pg doc section 9.15]
|
||||||
|
. '(?:\'.*?\')?\s*(?:\?\?|' . $query_split . ')\s*'
|
||||||
// match for replace part
|
// match for replace part
|
||||||
. '(?:'
|
. '(?:'
|
||||||
// digit -> ignore
|
// digit -> ignore
|
||||||
@@ -96,7 +98,10 @@ class ConvertPlaceholder
|
|||||||
$type = 'named';
|
$type = 'named';
|
||||||
$matches_return = $named_matches;
|
$matches_return = $named_matches;
|
||||||
// only check for :named
|
// only check for :named
|
||||||
$pattern_replace = '/((?:\'.*?\')?\s*(?:\?\?|[(=,])\s*)(\d+|(?:\'.*?\')|(:\w+))/s';
|
$pattern_replace = '/'
|
||||||
|
. '((?:\'.*?\')?\s*(?:\?\?|' . $query_split . ')\s*)'
|
||||||
|
. '(\d+|(?:\'.*?\')|(:\w+))'
|
||||||
|
. '/s';
|
||||||
// 0: full
|
// 0: full
|
||||||
// 1: pre part
|
// 1: pre part
|
||||||
// 2: keep part UNLESS '3' is set
|
// 2: keep part UNLESS '3' is set
|
||||||
@@ -134,7 +139,10 @@ class ConvertPlaceholder
|
|||||||
// order and data stays the same
|
// order and data stays the same
|
||||||
$params_new = $params;
|
$params_new = $params;
|
||||||
// only check for ?
|
// only check for ?
|
||||||
$pattern_replace = '/((?:\'.*?\')?\s*(?:\?\?|[(=,])\s*)(\d+|(?:\'.*?\')|(?:(?:\?\?)?\s*(\?{1})))/s';
|
$pattern_replace = '/'
|
||||||
|
. '((?:\'.*?\')?\s*(?:\?\?|' . $query_split . ')\s*)'
|
||||||
|
. '(\d+|(?:\'.*?\')|(?:(?:\?\?)?\s*(\?{1})))'
|
||||||
|
. '/s';
|
||||||
// 0: full
|
// 0: full
|
||||||
// 1: pre part
|
// 1: pre part
|
||||||
// 2: keep part UNLESS '3' is set
|
// 2: keep part UNLESS '3' is set
|
||||||
@@ -163,7 +171,10 @@ class ConvertPlaceholder
|
|||||||
$type = 'numbered';
|
$type = 'numbered';
|
||||||
$matches_return = $numbered_matches;
|
$matches_return = $numbered_matches;
|
||||||
// only check for $n
|
// only check for $n
|
||||||
$pattern_replace = '/((?:\'.*?\')?\s*(?:\?\?|[(=,])\s*)(\d+|(?:\'.*?\')|(\$[1-9]{1}(?:[0-9]{1,})?))/s';
|
$pattern_replace = '/'
|
||||||
|
. '((?:\'.*?\')?\s*(?:\?\?|' . $query_split . ')\s*)'
|
||||||
|
. '(\d+|(?:\'.*?\')|(\$[1-9]{1}(?:[0-9]{1,})?))'
|
||||||
|
. '/s';
|
||||||
// 0: full
|
// 0: full
|
||||||
// 1: pre part
|
// 1: pre part
|
||||||
// 2: keep part UNLESS '3' is set
|
// 2: keep part UNLESS '3' is set
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ class CachedFileReader extends \CoreLibs\Language\Core\StringReader
|
|||||||
if (!is_resource($fd)) {
|
if (!is_resource($fd)) {
|
||||||
$this->error = 3; // Cannot read file, probably permissions
|
$this->error = 3; // Cannot read file, probably permissions
|
||||||
} else {
|
} else {
|
||||||
$this->fd_str = fread($fd, filesize($filename) ?: 0) ?: '';
|
$this->fd_str = fread($fd, filesize($filename) ?: 1) ?: '';
|
||||||
fclose($fd);
|
fclose($fd);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ class SmartyExtend extends \Smarty
|
|||||||
// call basic smarty
|
// call basic smarty
|
||||||
// or Smarty::__construct();
|
// or Smarty::__construct();
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
// iinit lang
|
// init lang
|
||||||
$this->l10n = $l10n;
|
$this->l10n = $l10n;
|
||||||
// parse and read, legacy stuff
|
// parse and read, legacy stuff
|
||||||
$locale = $this->l10n->getLocaleAsArray();
|
$locale = $this->l10n->getLocaleAsArray();
|
||||||
|
|||||||
Reference in New Issue
Block a user