diff --git a/composer.json b/composer.json index 6867202..8cb94ee 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,8 @@ }, "require-dev": { "egrajp/smarty-extended": "^4.3", - "gullevek/dotenv": "dev-master" + "gullevek/dotenv": "dev-master", + "phpunit/phpunit": "^9" }, "repositories": { "git.egplusww.jp.Composer": { diff --git a/src/DB/Support/ConvertPlaceholder.php b/src/DB/Support/ConvertPlaceholder.php index bcfd561..6e652ac 100644 --- a/src/DB/Support/ConvertPlaceholder.php +++ b/src/DB/Support/ConvertPlaceholder.php @@ -39,9 +39,11 @@ class ConvertPlaceholder ): array { $convert_to = strtolower($convert_to); $matches = []; + $query_split = '[(=,?-]|->|->>|#>|#>>|@>|<@|\?\|\?\&|\|\||#-'; $pattern = '/' // 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 . '(?:' // digit -> ignore @@ -96,7 +98,10 @@ class ConvertPlaceholder $type = 'named'; $matches_return = $named_matches; // only check for :named - $pattern_replace = '/((?:\'.*?\')?\s*(?:\?\?|[(=,])\s*)(\d+|(?:\'.*?\')|(:\w+))/s'; + $pattern_replace = '/' + . '((?:\'.*?\')?\s*(?:\?\?|' . $query_split . ')\s*)' + . '(\d+|(?:\'.*?\')|(:\w+))' + . '/s'; // 0: full // 1: pre part // 2: keep part UNLESS '3' is set @@ -134,7 +139,10 @@ class ConvertPlaceholder // order and data stays the same $params_new = $params; // only check for ? - $pattern_replace = '/((?:\'.*?\')?\s*(?:\?\?|[(=,])\s*)(\d+|(?:\'.*?\')|(?:(?:\?\?)?\s*(\?{1})))/s'; + $pattern_replace = '/' + . '((?:\'.*?\')?\s*(?:\?\?|' . $query_split . ')\s*)' + . '(\d+|(?:\'.*?\')|(?:(?:\?\?)?\s*(\?{1})))' + . '/s'; // 0: full // 1: pre part // 2: keep part UNLESS '3' is set @@ -163,7 +171,10 @@ class ConvertPlaceholder $type = 'numbered'; $matches_return = $numbered_matches; // 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 // 1: pre part // 2: keep part UNLESS '3' is set diff --git a/src/Language/Core/CachedFileReader.php b/src/Language/Core/CachedFileReader.php index 95721bb..1160c45 100644 --- a/src/Language/Core/CachedFileReader.php +++ b/src/Language/Core/CachedFileReader.php @@ -46,7 +46,7 @@ class CachedFileReader extends \CoreLibs\Language\Core\StringReader if (!is_resource($fd)) { $this->error = 3; // Cannot read file, probably permissions } else { - $this->fd_str = fread($fd, filesize($filename) ?: 0) ?: ''; + $this->fd_str = fread($fd, filesize($filename) ?: 1) ?: ''; fclose($fd); } } else { diff --git a/src/Template/SmartyExtend.php b/src/Template/SmartyExtend.php index c8cb48c..9487066 100644 --- a/src/Template/SmartyExtend.php +++ b/src/Template/SmartyExtend.php @@ -185,7 +185,7 @@ class SmartyExtend extends \Smarty // call basic smarty // or Smarty::__construct(); parent::__construct(); - // iinit lang + // init lang $this->l10n = $l10n; // parse and read, legacy stuff $locale = $this->l10n->getLocaleAsArray();