diff --git a/Account/Account.php b/Account/Account.php index 40714ce2c..906955f64 100755 --- a/Account/Account.php +++ b/Account/Account.php @@ -341,13 +341,7 @@ class Account implements \JsonSerializable */ public function generatePassword(string $password) : void { - $temp = \password_hash($password, \PASSWORD_BCRYPT); - - if ($temp === false) { - throw new \Exception('Internal password_hash error.'); // @codeCoverageIgnore - } - - $this->password = $temp; + $this->password = \password_hash($password, \PASSWORD_BCRYPT); } /** @@ -396,15 +390,24 @@ class Account implements \JsonSerializable ]; } + /** + * Fill object from array + * + * @param array{id:int, name:array{0:string, 1:string, 2:string}, email:string, login:string, type:int, status:int, groups:array, permissions:array, l11n:array} $account Account data + * + * @return void + * + * @since 1.0.0 + */ public function from (array $account) : void { - $this->id = $account['id']; - $this->name1 = $account['name'][0]; - $this->name2 = $account['name'][1]; - $this->name3 = $account['name'][2]; - $this->email = $account['email']; - $this->login = $account['login']; - $this->type = $account['type']; + $this->id = $account['id']; + $this->name1 = $account['name'][0]; + $this->name2 = $account['name'][1]; + $this->name3 = $account['name'][2]; + $this->email = $account['email']; + $this->login = $account['login']; + $this->type = $account['type']; $this->status = $account['status']; $this->l11n = Localization::fromJson($account['l11n']); diff --git a/Account/Group.php b/Account/Group.php index 30f08eac9..0c09e0d22 100755 --- a/Account/Group.php +++ b/Account/Group.php @@ -110,7 +110,7 @@ class Group implements \JsonSerializable 'permissions' => $this->permissions, 'members' => $this->members, 'parents' => $this->parents, - 'status' => $this->status, + 'status' => $this->status, ]; } @@ -130,16 +130,25 @@ class Group implements \JsonSerializable return $this->toArray(); } + /** + * Create object from array + * + * @param array{id:int, name:string, description:string, members:array, parents:array, status:int, permissions?:array} $group Group data + * + * @return self + * + * @since 1.0.0 + */ public static function fromJson(array $group) : self { $new = new self(); - $new->id = $group['id']; - $new->name = $group['name']; + $new->id = $group['id']; + $new->name = $group['name']; $new->description = $group['description']; - $new->members = $group['members']; - $new->parents = $group['parents']; - $new->status = $group['status']; + $new->members = $group['members']; + $new->parents = $group['parents']; + $new->status = $group['status']; foreach (($group['permissions'] ?? []) as $permission) { $new->permissions[] = PermissionAbstract::fromJson($permission); diff --git a/Account/PermissionAbstract.php b/Account/PermissionAbstract.php index 0e5b442e8..4e3bdb89a 100755 --- a/Account/PermissionAbstract.php +++ b/Account/PermissionAbstract.php @@ -352,42 +352,51 @@ class PermissionAbstract implements \JsonSerializable public function jsonSerialize() : mixed { return [ - 'id' => $this->id, - 'unit' => $this->unit, - 'app' => $this->app, - 'module' => $this->module, - 'from' => $this->from, - 'category' => $this->category, - 'element' => $this->element, - 'component' => $this->component, - 'hasRead' => $this->hasRead, - 'hasModify' => $this->hasModify, - 'hasCreate' => $this->hasCreate, - 'hasDelete' => $this->hasDelete, - 'defaultCPermissions' => $this->defaultCPermissions, - 'hasPermission' => $this->hasPermission, - 'defaultPPermissions' => $this->defaultPPermissions, + 'id' => $this->id, + 'unit' => $this->unit, + 'app' => $this->app, + 'module' => $this->module, + 'from' => $this->from, + 'category' => $this->category, + 'element' => $this->element, + 'component' => $this->component, + 'hasRead' => $this->hasRead, + 'hasModify' => $this->hasModify, + 'hasCreate' => $this->hasCreate, + 'hasDelete' => $this->hasDelete, + 'defaultCPermissions' => $this->defaultCPermissions, + 'hasPermission' => $this->hasPermission, + 'defaultPPermissions' => $this->defaultPPermissions, ]; } + /** + * Create object from json string + * + * @param array{id:int, unit:?int, app:?int, module:?string, from:?string, category:?int, element:?int, component:?int, hasRead:bool, hasModify:bool, hasCreate:bool, hasDelete:bool, defaultCPermissions:?string, hasPermission:bool, defaultPPermissions:?string} $permission Permission + * + * @return self + * + * @since 1.0.0 + */ public static function fromJson(array $permission) : self { $new = new self(); - $new->id = $permission['id']; - $new->unit = $permission['unit']; - $new->app = $permission['app']; - $new->module = $permission['module']; - $new->from = $permission['from']; - $new->category = $permission['category']; - $new->element = $permission['element']; - $new->component = $permission['component']; - $new->hasRead = $permission['hasRead']; - $new->hasModify = $permission['hasModify']; - $new->hasCreate = $permission['hasCreate']; - $new->hasDelete = $permission['hasDelete']; + $new->id = $permission['id']; + $new->unit = $permission['unit']; + $new->app = $permission['app']; + $new->module = $permission['module']; + $new->from = $permission['from']; + $new->category = $permission['category']; + $new->element = $permission['element']; + $new->component = $permission['component']; + $new->hasRead = $permission['hasRead']; + $new->hasModify = $permission['hasModify']; + $new->hasCreate = $permission['hasCreate']; + $new->hasDelete = $permission['hasDelete']; $new->defaultCPermissions = $permission['defaultCPermissions']; - $new->hasPermission = $permission['hasPermission']; + $new->hasPermission = $permission['hasPermission']; $new->defaultPPermissions = $permission['defaultPPermissions']; return $new; diff --git a/Algorithm/Clustering/Point.php b/Algorithm/Clustering/Point.php index e33e54c90..a269171d9 100755 --- a/Algorithm/Clustering/Point.php +++ b/Algorithm/Clustering/Point.php @@ -89,7 +89,7 @@ class Point implements PointInterface /** * {@inheritdoc} */ - public function isEquals(Point $point) : bool + public function isEquals(self $point) : bool { return $this->name === $point->name && $this->coordinates === $point->coordinates; } diff --git a/Algorithm/Clustering/PointInterface.php b/Algorithm/Clustering/PointInterface.php index 4e84f88a8..60e1db41a 100755 --- a/Algorithm/Clustering/PointInterface.php +++ b/Algorithm/Clustering/PointInterface.php @@ -27,8 +27,8 @@ namespace phpOMS\Algorithm\Clustering; * @since 1.0.0 * * @property array $coordinates - * @property string $name - * @property int $group + * @property string $name + * @property int $group */ interface PointInterface { diff --git a/Api/Shipping/DHL/DHLParcelDEShipping.php b/Api/Shipping/DHL/DHLParcelDEShipping.php index 1430cd05b..08e31776f 100644 --- a/Api/Shipping/DHL/DHLParcelDEShipping.php +++ b/Api/Shipping/DHL/DHLParcelDEShipping.php @@ -617,10 +617,10 @@ final class DHLParcelDEShipping implements ShippingInterface return [ 'date' => $response->getDataDateTime('manifestDate'), - 'b64' => $response->getDataArray('manifest')['b64'], - 'zpl2' => $response->getDataArray('manifest')['zpl2'], - 'url' => $response->getDataArray('manifest')['url'], - 'format' => $response->getDataArray('manifest')['printFormat'], + 'b64' => $response->getDataArray('manifest')['b64'] ?? '', + 'zpl2' => $response->getDataArray('manifest')['zpl2'] ?? '', + 'url' => $response->getDataArray('manifest')['url'] ?? '', + 'format' => $response->getDataArray('manifest')['printFormat'] ?? '', ]; } diff --git a/Application/ApplicationInfo.php b/Application/ApplicationInfo.php index 16bf6f102..5991cf945 100755 --- a/Application/ApplicationInfo.php +++ b/Application/ApplicationInfo.php @@ -112,9 +112,9 @@ final class ApplicationInfo /** * Set data * - * @param string $path Value path - * @param mixed $data Scalar or array of data to set - * @param string $delim Delimiter of path + * @param string $path Value path + * @param mixed $data Scalar or array of data to set + * @param non-empty-string $delim Delimiter of path * * @return void * diff --git a/Application/ApplicationManager.php b/Application/ApplicationManager.php index 55d5e26a9..438bf96e5 100755 --- a/Application/ApplicationManager.php +++ b/Application/ApplicationManager.php @@ -173,10 +173,6 @@ final class ApplicationManager public function reInit(string $appPath) : void { $info = $this->loadInfo($appPath . '/info.json'); - if ($info === null) { - return; - } - if (($path = \realpath($appPath)) === false) { return; // @codeCoverageIgnore } diff --git a/Business/Recommendation/MemoryCF.php b/Business/Recommendation/MemoryCF.php index d8d1578d9..bf0aaccc7 100644 --- a/Business/Recommendation/MemoryCF.php +++ b/Business/Recommendation/MemoryCF.php @@ -152,7 +152,6 @@ final class MemoryCF /** * Find similar users * - * * @param array $ranking Array of item ratings (e.g. products, movies, ...) * * @return array diff --git a/DataStorage/Database/GrammarAbstract.php b/DataStorage/Database/GrammarAbstract.php index 54d171c1f..77cf1a91b 100755 --- a/DataStorage/Database/GrammarAbstract.php +++ b/DataStorage/Database/GrammarAbstract.php @@ -149,7 +149,7 @@ abstract class GrammarAbstract * * @since 1.0.0 */ - public function expressionizeTableColumn(array $elements, BuilderAbstract $query = null, bool $column = true) : string + public function expressionizeTableColumn(array $elements, ?BuilderAbstract $query = null, bool $column = true) : string { $expression = ''; @@ -166,7 +166,7 @@ abstract class GrammarAbstract // If we have a subquery, we need to copy the binds over foreach ($element->binds as $bind) { $query->bind($bind); - }; + } } } elseif ($element instanceof \Closure) { $expression .= $element() . (\is_string($key) ? ' AS ' . $key : '') . ', '; @@ -243,18 +243,18 @@ abstract class GrammarAbstract protected function compileValue(BuilderAbstract $query, mixed $value) : string { $compiled = ''; - $type = -1; + $type = -1; if (\is_string($value)) { if ($query->usePreparedStmt) { - $type = \PDO::PARAM_STR; + $type = \PDO::PARAM_STR; $compiled = $value; } else { $compiled = $query->quote($value); } } elseif (\is_int($value)) { if ($query->usePreparedStmt) { - $type = \PDO::PARAM_INT; + $type = \PDO::PARAM_INT; $compiled = $value; } else { $compiled = (string) $value; @@ -271,7 +271,7 @@ abstract class GrammarAbstract $compiled = $values . $this->compileValue($query, $value[$count]) . ')'; } elseif ($value instanceof \DateTimeInterface) { if ($query->usePreparedStmt) { - $type = \PDO::PARAM_STR; + $type = \PDO::PARAM_STR; $compiled = $value->format($this->datetimeFormat); } else { $compiled = $query->quote($value->format($this->datetimeFormat)); @@ -280,7 +280,7 @@ abstract class GrammarAbstract $compiled = 'NULL'; } elseif (\is_bool($value)) { if ($query->usePreparedStmt) { - $type = \PDO::PARAM_BOOL; + $type = \PDO::PARAM_BOOL; $compiled = $value; } else { $compiled = (string) ((int) $value); @@ -298,7 +298,7 @@ abstract class GrammarAbstract $encoded = \json_encode($value); if ($query->usePreparedStmt) { - $type = $encoded ? \PDO::PARAM_STR : \PDO::PARAM_STR; + $type = $encoded ? \PDO::PARAM_STR : \PDO::PARAM_STR; $compiled = $encoded ? $value : null; } else { $compiled = $encoded ? $query->quote($encoded) : 'NULL'; @@ -320,7 +320,7 @@ abstract class GrammarAbstract } else { $query->bind([ 'value' => $compiled, - 'type' => $type, + 'type' => $type, ]); $compiled = '?'; diff --git a/DataStorage/Database/Query/Builder.php b/DataStorage/Database/Query/Builder.php index e774febc0..9aef03b64 100755 --- a/DataStorage/Database/Query/Builder.php +++ b/DataStorage/Database/Query/Builder.php @@ -1463,9 +1463,9 @@ class Builder extends BuilderAbstract } elseif ($column instanceof SerializableInterface) { return $column->serialize(); } elseif ($column instanceof self) { - $tmp = $column->usePreparedStmt; + $tmp = $column->usePreparedStmt; $column->usePreparedStmt = false; - $hash = \md5($column->toSql()); + $hash = \md5($column->toSql()); $column->usePreparedStmt = $tmp; return $hash; diff --git a/DataStorage/Database/Query/Grammar/Grammar.php b/DataStorage/Database/Query/Grammar/Grammar.php index ebed6718d..a59ac33c0 100755 --- a/DataStorage/Database/Query/Grammar/Grammar.php +++ b/DataStorage/Database/Query/Grammar/Grammar.php @@ -270,7 +270,7 @@ class Grammar extends GrammarAbstract foreach ($wheres as $where) { foreach ($where as $element) { $expression = ''; - $prefix = ''; + $prefix = ''; if (!$first) { $prefix = ' ' . \strtoupper($element['boolean']) . ' '; @@ -286,7 +286,7 @@ class Grammar extends GrammarAbstract // BUT we are only allowed to do this once per wheres builder foreach ($element['column']->binds as $bind) { $query->bind($bind); - }; + } } } elseif ($element['column'] instanceof \Closure) { $expression .= $element['column'](); @@ -308,7 +308,7 @@ class Grammar extends GrammarAbstract if (isset($element['value']) && (!empty($element['value']) || !$isArray)) { if ($isArray && \count($element['value']) === 1) { - $element['value'] = \reset($element['value']); + $element['value'] = \reset($element['value']); $element['operator'] = '='; } @@ -323,7 +323,7 @@ class Grammar extends GrammarAbstract } $outer .= $prefix . $expression; - $first = false; + $first = false; } } @@ -347,10 +347,9 @@ class Grammar extends GrammarAbstract protected function compileLimit(Builder $query, int $limit) : string { if ($query->usePreparedStmt) { - $query->bind([ 'value' => $limit, - 'type' => \PDO::PARAM_INT, + 'type' => \PDO::PARAM_INT, ]); $limit = '?'; @@ -372,10 +371,9 @@ class Grammar extends GrammarAbstract protected function compileOffset(Builder $query, int $offset) : string { if ($query->usePreparedStmt) { - $query->bind([ 'value' => $offset, - 'type' => \PDO::PARAM_INT, + 'type' => \PDO::PARAM_INT, ]); $offset = '?'; @@ -412,7 +410,7 @@ class Grammar extends GrammarAbstract // If we have a subquery, we need to copy the binds over foreach ($join['table']->binds as $bind) { $query->bind($bind); - }; + } } } @@ -482,7 +480,7 @@ class Grammar extends GrammarAbstract // If we have a subquery, we need to copy the binds over foreach ($element['column']->binds as $bind) { $query->bind($bind); - }; + } } } elseif ($element['column'] instanceof \Closure) { $expression .= $element['column'](); diff --git a/DataStorage/Database/Schema/Builder.php b/DataStorage/Database/Schema/Builder.php index f3a331ee2..e5365c3b1 100755 --- a/DataStorage/Database/Schema/Builder.php +++ b/DataStorage/Database/Schema/Builder.php @@ -199,7 +199,7 @@ class Builder extends BuilderAbstract */ public static function createFromSchema(array $definition, ConnectionAbstract $connection) : self { - $builder = new self($connection); + $builder = new self($connection); $builder->usePreparedStmt = false; $builder->createTable($definition['name'] ?? ''); diff --git a/DataStorage/Database/tableDefinition.json b/DataStorage/Database/tableDefinition.json index 9d1e23c33..3c624c1a1 100755 --- a/DataStorage/Database/tableDefinition.json +++ b/DataStorage/Database/tableDefinition.json @@ -1,7 +1,7 @@ { ".*": { "name": "[a-z\\_]+", - ".*?description": ".*", + ".*?comment": ".*", "fields": { ".*": { "name": "[a-z0-9\\_]+", @@ -15,7 +15,7 @@ ".*?foreignTable": "[a-z0-9\\_]+", ".*?foreignKey": "[a-z0-9\\_]+", ".*?annotations": ".*", - ".*?description": ".*" + ".*?comment": ".*" } } } diff --git a/Dispatcher/Dispatcher.php b/Dispatcher/Dispatcher.php index a3254f1af..df47f3afb 100755 --- a/Dispatcher/Dispatcher.php +++ b/Dispatcher/Dispatcher.php @@ -87,21 +87,21 @@ final class Dispatcher implements DispatcherInterface /** @var \Closure $function */ $function = $dispatch[0] . '::' . $dispatch[2]; - $views[$controller] = $data === null ? $function() : $function(...$data); + $views[$controller] = empty($data) ? $function() : $function(...$data); } elseif ($c === 2) { $obj = $this->getController($dispatch[0]); - $views[$controller] = $data === null + $views[$controller] = empty($data) ? $obj->{$dispatch[1]}() : $obj->{$dispatch[1]}(...$data); } } elseif (\is_array($controller)) { foreach ($controller as $controllerSingle) { - $views += $data === null + $views += empty($data) ? $this->dispatch($controllerSingle) : $this->dispatch($controllerSingle, ...$data); } } else { - $views[] = $data === null + $views[] = empty($data) ? $controller($this->app) : $controller($this->app, ...$data); } diff --git a/Image/Kernel.php b/Image/Kernel.php index 7d80eb9e3..2ce23638d 100755 --- a/Image/Kernel.php +++ b/Image/Kernel.php @@ -65,7 +65,7 @@ final class Kernel /** * Kernel matrix for blurring * - * @var array + * @var array * @since 1.0.0 */ public const KERNEL_BOX_BLUR = [ @@ -77,7 +77,7 @@ final class Kernel /** * Kernel matrix for gaussian blurring * - * @var array + * @var array * @since 1.0.0 */ public const KERNEL_GAUSSUAN_BLUR_3 = [ @@ -101,7 +101,7 @@ final class Kernel /** * Kernel matrix for unsharpening * - * @var array + * @var array * @since 1.0.0 */ public const KERNEL_UNSHARP_MASKING = [ diff --git a/Localization/LanguageDetection/LanguageResult.php b/Localization/LanguageDetection/LanguageResult.php index 82225a0e1..1d46f7c43 100755 --- a/Localization/LanguageDetection/LanguageResult.php +++ b/Localization/LanguageDetection/LanguageResult.php @@ -27,7 +27,7 @@ class LanguageResult implements \ArrayAccess, \IteratorAggregate, \JsonSerializa /** * Match threshold * - * @var int + * @var float * @since 1.0.0 */ private const THRESHOLD = .025; diff --git a/Log/FileLogger.php b/Log/FileLogger.php index 81f797cc8..6a566ea59 100755 --- a/Log/FileLogger.php +++ b/Log/FileLogger.php @@ -549,7 +549,7 @@ final class FileLogger implements LoggerInterface while (($line = \fgetcsv($this->fp, 0, ';')) !== false && $current <= $id) { ++$current; - if ($current < $id || $line === null) { + if ($current < $id) { continue; } diff --git a/Math/Geometry/ConvexHull/GrahamScan.php b/Math/Geometry/ConvexHull/GrahamScan.php index 1909af8db..639122fcc 100644 --- a/Math/Geometry/ConvexHull/GrahamScan.php +++ b/Math/Geometry/ConvexHull/GrahamScan.php @@ -49,8 +49,7 @@ final class GrahamScan return $points; } - $min = 1; - $points = \array_merge([null], $points); + $min = 1; for ($i = 2; $i < $n; ++$i) { if ($points[$i]['y'] < $points[$min]['y'] diff --git a/Math/Matrix/Matrix.php b/Math/Matrix/Matrix.php index 122a2171b..6aa930267 100755 --- a/Math/Matrix/Matrix.php +++ b/Math/Matrix/Matrix.php @@ -24,8 +24,8 @@ use phpOMS\Math\Matrix\Exception\InvalidDimensionException; * @link https://jingga.app * @since 1.0.0 * - * @phpstan-implements \ArrayAccess - * @phpstan-implements \Iterator + * @phpstan-implements \ArrayAccess + * @phpstan-implements \Iterator */ class Matrix implements \ArrayAccess, \Iterator { @@ -867,7 +867,7 @@ class Matrix implements \ArrayAccess, \Iterator /** * {@inheritdoc} */ - public function current() : int + public function current() : int|float { $row = (int) ($this->position / $this->m); diff --git a/Math/Number/Numbers.php b/Math/Number/Numbers.php index af7576006..0b7945724 100755 --- a/Math/Number/Numbers.php +++ b/Math/Number/Numbers.php @@ -74,10 +74,6 @@ final class Numbers $n = (string) $n; $split = \str_split($n); - if ($split === false) { - return false; // @codeCoverageIgnore - } - foreach ($split as $place => $value) { if (\substr_count($n, (string) $place) != $value) { return false; @@ -143,7 +139,7 @@ final class Numbers } $exponent = ($number / $max) * $exp; - $mapped = (exp($exponent) - 1) / (exp($exp) - 1) * 100; + $mapped = (\exp($exponent) - 1) / (\exp($exp) - 1) * 100; return $mapped; } @@ -151,8 +147,8 @@ final class Numbers /** * Remap numbers between 0 and X to 0 and 100 * - * @param int $number Number to remap - * @param int $max Max possible number + * @param int $number Number to remap + * @param int $max Max possible number * * @return float * @@ -164,6 +160,6 @@ final class Numbers $number = $max; } - return (log($number + 1) / log($max + 1)) * 100; + return (\log($number + 1) / \log($max + 1)) * 100; } } diff --git a/Math/Number/Prime.php b/Math/Number/Prime.php index 606a9974e..54fe37c1d 100755 --- a/Math/Number/Prime.php +++ b/Math/Number/Prime.php @@ -104,26 +104,18 @@ final class Prime $a = \mt_rand(2, $n - 1); $x = \bcpowmod((string) $a, (string) $d, (string) $n); - if ($x === false) { - return false; - } - if ($x == 1 || $x == $n - 1) { continue; } for ($j = 1; $j < $s; ++$j) { - if ($x === null) { - return false; - } - $mul = \bcmul($x, $x); /*if ($mul === null) { return false; }*/ $x = \bcmod($mul, (string) $n); - if ($x == 1 || $x === null) { + if ($x == 1) { return false; } @@ -153,10 +145,6 @@ final class Prime $range = \range(2, $n); $primes = \array_combine($range, $range); - if ($primes === false) { - return []; // @codeCoverageIgnore - } - while ($number * $number < $n) { for ($i = $number; $i <= $n; $i += $number) { if ($i === $number) { diff --git a/Math/Statistic/Average.php b/Math/Statistic/Average.php index c45fd1c52..9a450c184 100755 --- a/Math/Statistic/Average.php +++ b/Math/Statistic/Average.php @@ -81,7 +81,7 @@ final class Average * @var float[] * @since 1.0.0 */ - public const MAH13 = [-0.019, -0.028, 0, 0.66, 0.147, 0.214, 0.240, 0.214, 0.147, 0.66, 0, -0.028, -0.019]; + public const MAH13 = [-0.019, -0.028, 0.0, 0.66, 0.147, 0.214, 0.240, 0.214, 0.147, 0.66, 0.0, -0.028, -0.019]; /** * Moving average weights diff --git a/Message/Http/HttpRequest.php b/Message/Http/HttpRequest.php index 34ec93a0b..a0fa0a53c 100755 --- a/Message/Http/HttpRequest.php +++ b/Message/Http/HttpRequest.php @@ -33,7 +33,7 @@ use phpOMS\Uri\HttpUri; * @SuppressWarnings(PHPMD.Superglobals) * * @property HttpHeader $header - * @property HttpUri $uri + * @property HttpUri $uri */ final class HttpRequest extends RequestAbstract { diff --git a/Message/Http/Rest.php b/Message/Http/Rest.php index 67ba9485b..e9e0f4418 100755 --- a/Message/Http/Rest.php +++ b/Message/Http/Rest.php @@ -146,7 +146,7 @@ final class Rest \curl_close($curl); - $raw = \substr(\is_bool($result) ? '' : $result, $len === false ? 0 : $len); + $raw = \substr(\is_bool($result) ? '' : $result, $len); if (\stripos(\implode('', $response->header->get('Content-Type')), MimeType::M_JSON) !== false) { $temp = \json_decode($raw, true); if (!\is_array($temp)) { diff --git a/Message/RequestAbstract.php b/Message/RequestAbstract.php index 9c049c06c..795d2fea6 100755 --- a/Message/RequestAbstract.php +++ b/Message/RequestAbstract.php @@ -251,11 +251,9 @@ abstract class RequestAbstract implements MessageInterface { $key = \mb_strtolower($key); - $timestamp = empty($this->data[$key] ?? null) + return empty($this->data[$key] ?? null) ? null : (int) \strtotime((string) $this->data[$key]); - - return $timestamp === false ? null : $timestamp; } /** @@ -299,9 +297,6 @@ abstract class RequestAbstract implements MessageInterface /* @phpstan-ignore-next-line */ $list = \explode($delim, (string) $this->data[$key]); - if ($list === false) { - return []; // @codeCoverageIgnore - } foreach ($list as $i => $e) { $list[$i] = \trim($e); diff --git a/Message/ResponseAbstract.php b/Message/ResponseAbstract.php index d5b01a14c..cc052e307 100755 --- a/Message/ResponseAbstract.php +++ b/Message/ResponseAbstract.php @@ -241,10 +241,6 @@ abstract class ResponseAbstract implements \JsonSerializable, MessageInterface /* @phpstan-ignore-next-line */ $list = \explode($delim, $this->data[$key]); - if ($list === false) { - return []; // @codeCoverageIgnore - } - foreach ($list as $i => $e) { $list[$i] = \trim($e); } diff --git a/Module/ModuleInfo.php b/Module/ModuleInfo.php index fda636573..9ef490c55 100755 --- a/Module/ModuleInfo.php +++ b/Module/ModuleInfo.php @@ -112,9 +112,9 @@ final class ModuleInfo /** * Set data * - * @param string $path Value path - * @param mixed $data Scalar or array of data to set - * @param string $delim Delimiter of path + * @param string $path Value path + * @param mixed $data Scalar or array of data to set + * @param non-empty-string $delim Delimiter of path * * @return void * diff --git a/Security/Guard.php b/Security/Guard.php index eb0e2dc0d..c78854ca7 100755 --- a/Security/Guard.php +++ b/Security/Guard.php @@ -115,6 +115,15 @@ final class Guard return true; } + /** + * Checks if a file is "safe" + * + * @param string $path File path + * + * @return bool + * + * @since 1.0.0 + */ public static function isSafeFile(string $path) : bool { if (!\str_ends_with($path, '.exe') && !self::isSafeNoneExecutable($path)) { @@ -131,21 +140,34 @@ final class Guard return true; } + /** + * Checks if a xml file is "safe" + * + * @param string $path File path + * + * @return bool + * + * @since 1.0.0 + */ public static function isSafeXml(string $path) : bool { $maxEntityDepth = 7; - $xml = \file_get_contents($path); + $xml = \file_get_contents($path); + + if ($xml === false) { + return true; + } // Detect injections $injectionPatterns = [ '//', '//', '//', - '//' + '//', ]; foreach ($injectionPatterns as $pattern) { - if (\preg_match($pattern, $xml) !== false) { + if (\preg_match($pattern, $xml) === 1) { return false; } } @@ -156,7 +178,7 @@ final class Guard $reader->setParserProperty(\XMLReader::SUBST_ENTITIES, true); $foundBillionLaughsAttack = false; - $entityCount = 0; + $entityCount = 0; while ($reader->read()) { if ($reader->nodeType === \XMLReader::ENTITY_REF) { @@ -172,6 +194,15 @@ final class Guard return !$foundBillionLaughsAttack; } + /** + * Checks if a CSV file is "safe" + * + * @param string $path File path + * + * @return bool + * + * @since 1.0.0 + */ public static function isSafeCsv(string $path) : bool { $input = \fopen($path, 'r'); @@ -198,6 +229,15 @@ final class Guard return true; } + /** + * Checks if a file that shouldn't be executable is not executable + * + * @param string $path File path + * + * @return bool + * + * @since 1.0.0 + */ public static function isSafeNoneExecutable(string $path) : bool { $input = \fopen($path, 'r'); diff --git a/Stdlib/Base/Address.php b/Stdlib/Base/Address.php index 2da189a52..8112269e5 100755 --- a/Stdlib/Base/Address.php +++ b/Stdlib/Base/Address.php @@ -64,21 +64,30 @@ class Address extends Location return \array_merge( parent::toArray(), [ - 'id' => $this->id, + 'id' => $this->id, 'name' => $this->name, 'fao' => $this->fao, ] ); } + /** + * Create object from array + * + * @param array{id:int, name:string, fao:string, type:int, postal:string, city:string, country:string, address:string, state:string, lat:float, lon:float} $address Address data + * + * @return self + * + * @since 1.0.0 + */ public static function fromJson(array $address) : self { $new = new self(); $new->from($address); - $new->id = $address['id']; + $new->id = $address['id']; $new->name = $address['name']; - $new->fao = $address['fao']; + $new->fao = $address['fao']; return $new; } diff --git a/Stdlib/Base/FloatInt.php b/Stdlib/Base/FloatInt.php index bc88e7cc6..d4180a74b 100755 --- a/Stdlib/Base/FloatInt.php +++ b/Stdlib/Base/FloatInt.php @@ -179,11 +179,10 @@ class FloatInt implements SerializableInterface $left = \substr($value, 0, -self::MAX_DECIMALS); - /** @var string $left */ - $left = $left === false ? '0' : $left; + $left = $left === '' ? '0' : $left; $right = \substr($value, -self::MAX_DECIMALS); - if ($right === false) { + if ($right === '') { throw new \Exception(); // @codeCoverageIgnore } @@ -212,12 +211,10 @@ class FloatInt implements SerializableInterface : (string) \round($this->value, -self::MAX_DECIMALS + $decimals); $left = \substr($value, 0, -self::MAX_DECIMALS); - - /** @var string $left */ - $left = $left === false ? '0' : $left; + $left = $left === '' ? '0' : $left; $right = \substr($value, -self::MAX_DECIMALS); - if ($right === false) { + if ($right === '') { throw new \Exception(); // @codeCoverageIgnore } @@ -380,6 +377,15 @@ class FloatInt implements SerializableInterface return \json_encode($this->getInt()); } + /** + * Create object from string serialization + * + * @param string $json Json representation + * + * @return self + * + * @since 1.0.0 + */ public static function fromJson(string $json) : self { return new self((int) $json); diff --git a/Stdlib/Base/Iban.php b/Stdlib/Base/Iban.php index b339a3c55..ea9e2d074 100755 --- a/Stdlib/Base/Iban.php +++ b/Stdlib/Base/Iban.php @@ -128,9 +128,7 @@ class Iban implements SerializableInterface return ''; } - $sequence = \substr($this->iban, $start, $end - $start + 1); - - return $sequence === false ? '' : $sequence; + return \substr($this->iban, $start, $end - $start + 1); } /** @@ -142,9 +140,7 @@ class Iban implements SerializableInterface */ public function getCountry() : string { - $country = \substr($this->iban, 0, 2); - - return $country === false ? '?' : $country; + return \substr($this->iban, 0, 2); } /** diff --git a/Stdlib/Base/Location.php b/Stdlib/Base/Location.php index a99c16501..dd7aa42ee 100755 --- a/Stdlib/Base/Location.php +++ b/Stdlib/Base/Location.php @@ -157,8 +157,8 @@ class Location implements \JsonSerializable, SerializableInterface public function toArray() : array { return [ - 'id' => $this->id, - 'type' => $this->type, + 'id' => $this->id, + 'type' => $this->type, 'postal' => $this->postal, 'city' => $this->city, 'country' => $this->country, @@ -169,17 +169,26 @@ class Location implements \JsonSerializable, SerializableInterface ]; } + /** + * Fill object from array + * + * @param array{id:int, type:int, postal:string, city:string, country:string, address:string, state:string, lat:float, lon:float} $location Location data + * + * @return void + * + * @since 1.0.0 + */ public function from(array $location) : void { - $this->id = $location['id']; - $this->type = $location['type']; - $this->postal = $location['postal']; - $this->city = $location['city']; + $this->id = $location['id']; + $this->type = $location['type']; + $this->postal = $location['postal']; + $this->city = $location['city']; $this->country = $location['country']; $this->address = $location['address']; - $this->state = $location['state']; - $this->lat = $location['lat']; - $this->lon = $location['lon']; + $this->state = $location['state']; + $this->lat = $location['lat']; + $this->lon = $location['lon']; } /** diff --git a/Stdlib/Graph/Graph.php b/Stdlib/Graph/Graph.php index a6f8af2d5..ed24dd593 100755 --- a/Stdlib/Graph/Graph.php +++ b/Stdlib/Graph/Graph.php @@ -1152,7 +1152,7 @@ class Graph ? $edge->node2 : $edge->node1; - if ($colors[$adj->getId()] === -1) { + if ($colors[$adj->getId()] === 0) { $colors[$adj->getId()] = 1 - $colors[$node->getId()]; $stack[] = $adj; } elseif ($colors[$adj->getId()] === $colors[$node->getId()]) { diff --git a/System/File/Ftp/Directory.php b/System/File/Ftp/Directory.php index ecd8a51c7..946e041e1 100755 --- a/System/File/Ftp/Directory.php +++ b/System/File/Ftp/Directory.php @@ -339,7 +339,7 @@ class Directory extends FileAbstract implements DirectoryInterface $changed = new \DateTime(); $time = \ftp_mdtm($con, $path); - $changed->setTimestamp($time === false ? 0 : $time); + $changed->setTimestamp($time); return $changed; } diff --git a/System/File/Ftp/File.php b/System/File/Ftp/File.php index 876a86330..049eb67a3 100755 --- a/System/File/Ftp/File.php +++ b/System/File/Ftp/File.php @@ -268,7 +268,7 @@ class File extends FileAbstract implements FileInterface $changed = new \DateTime(); $time = \ftp_mdtm($con, $path); - $changed->setTimestamp($time === false ? 0 : $time); + $changed->setTimestamp($time); return $changed; } diff --git a/System/File/Ftp/FileAbstract.php b/System/File/Ftp/FileAbstract.php index 8fca31fb4..3d393bedd 100755 --- a/System/File/Ftp/FileAbstract.php +++ b/System/File/Ftp/FileAbstract.php @@ -224,8 +224,8 @@ abstract class FileAbstract implements FtpContainerInterface $mtime = \ftp_mdtm($this->con, $this->path); $ctime = \ftp_mdtm($this->con, $this->path); - $this->createdAt = (new \DateTimeImmutable())->setTimestamp($mtime === false ? 0 : $mtime); - $this->changedAt->setTimestamp($ctime === false ? 0 : $ctime); + $this->createdAt = (new \DateTimeImmutable())->setTimestamp($mtime); + $this->changedAt->setTimestamp($ctime); $this->owner = ''; $this->permission = 0; diff --git a/System/File/SearchUtils.php b/System/File/SearchUtils.php index 29fcebd2f..d1574577a 100644 --- a/System/File/SearchUtils.php +++ b/System/File/SearchUtils.php @@ -24,6 +24,19 @@ namespace phpOMS\System\File; */ final class SearchUtils { + /** + * Find text in file. + * + * All keywords must be found within a certain distance to the first and last find. + * + * @param string $path File path + * @param array $keywords Keywords to find + * @param int $distance Distance + * + * @return array + * + * @since 1.0.0 + */ public static function findInFile(string $path, array $keywords, int $distance = 500) : array { $fp = \fopen($path, "r"); @@ -35,14 +48,9 @@ final class SearchUtils $globalPos = 0; - while (!\feof($fp)) { - $line = \fgets($fp); - + while (($line = \fgets($fp)) !== false) { foreach ($keywords as $keyword) { $pos = \stripos($line, $keyword); - if ($pos === false) { - continue; - } while ($pos !== false) { $positions[$keyword][] = $globalPos + $pos; @@ -60,30 +68,22 @@ final class SearchUtils return []; } - $start = \reset($keywords); + $start = \reset($keywords); $distances = []; foreach ($positions[$start] as $pos) { - if ($pos < 0) { - continue; - } - $distance = [ - 'start' => $pos, - 'end' => $pos, + 'start' => $pos, + 'end' => $pos, 'distance' => 0, ]; foreach ($positions as $keyword => $found) { $closestStart = null; - $closestEnd = null; - $inBetween = null; + $closestEnd = null; + $inBetween = null; foreach ($found as $pos2) { - if ($pos2 < 0) { - continue 2; - } - if ($pos2 >= $distance['start'] && $pos2 <= $distance['end']) { $inBetween = $pos2; @@ -110,18 +110,14 @@ final class SearchUtils continue; // Perfect } elseif ($closestStart < $distance['start'] && (\abs($closestStart - $distance['start']) <= \abs($closestEnd - $distance['end']) || $closestEnd > $distance['end'])) { - $distance['start'] = \min($distance['start'], $closestStart); + $distance['start'] = \min($distance['start'], $closestStart ?? 0); } else { - $distance['end'] = \max($distance['end'], $closestEnd); + $distance['end'] = \max($distance['end'], $closestEnd ?? 0); } } $distance['distance'] = $distance['end'] - $distance['start']; - $distances[] = $distance; - } - - if (empty($distances)) { - return []; + $distances[] = $distance; } \uasort($distances, function (array $a, array $b) { @@ -131,11 +127,25 @@ final class SearchUtils return $distances; } + /** + * Create a text extract from a file from a position and a start and end needle + * + * This allows to return for example text extracts from a html file starting with

and ending with

+ * + * @param string $path File path + * @param int $pos Anchor point for the text extract (e.g. found through stripos or findInFile) + * @param string $start Start needle + * @param string $end End needle + * + * @return string + * + * @since 1.0.0 + */ public static function getTextExtract(string $path, int $pos, string $start, string $end) : string { $fp = \fopen($path, "r"); if ($fp === false) { - return []; + return ''; } $startPos = -1; @@ -155,7 +165,10 @@ final class SearchUtils } } - if ($startPos < 0 || $endPos < 0) { + if ($startPos === false || $endPos === false + || $startPos < 0 || $endPos < 0 + || $startPos > $endPos + ) { \fclose($fp); return ''; } @@ -165,6 +178,6 @@ final class SearchUtils \fclose($fp); - return $extract; + return $extract === false ? '' : $extract; } } diff --git a/UnhandledHandler.php b/UnhandledHandler.php index 2c6f64cac..e9c1c3ad0 100755 --- a/UnhandledHandler.php +++ b/UnhandledHandler.php @@ -44,8 +44,6 @@ final class UnhandledHandler 'line' => $e->getLine(), 'file' => $e->getFile(), ]); - - $_SERVER = []; } /** diff --git a/Uri/Argument.php b/Uri/Argument.php index b312594de..baf63bc92 100755 --- a/Uri/Argument.php +++ b/Uri/Argument.php @@ -193,12 +193,7 @@ final class Argument implements UriInterface return; } - $result = \explode(' ', $uri); - if ($result === false) { - return; - } - - $this->query = $result; + $this->query = \explode(' ', $uri); $this->queryString = $uri; } diff --git a/Uri/HttpUri.php b/Uri/HttpUri.php index 1b346e437..62b66d3d7 100755 --- a/Uri/HttpUri.php +++ b/Uri/HttpUri.php @@ -206,7 +206,7 @@ final class HttpUri implements UriInterface if (StringUtils::endsWith($this->path, '.php')) { $path = \substr($this->path, 0, -4); - if ($path === false) { + if ($path === '') { throw new \Exception(); // @codeCoverageIgnore } diff --git a/Utils/ArrayUtils.php b/Utils/ArrayUtils.php index 24b35a9d2..ad96e3139 100755 --- a/Utils/ArrayUtils.php +++ b/Utils/ArrayUtils.php @@ -37,9 +37,9 @@ final class ArrayUtils /** * Check if needle exists in multidimensional array. * - * @param string $path Path to element - * @param array $data Array - * @param string $delim Delimiter for path + * @param string $path Path to element + * @param array $data Array + * @param non-empty-string $delim Delimiter for path * * @return array * @@ -54,10 +54,6 @@ final class ArrayUtils $el = &$data; $node = null; - if ($nodes === false) { - throw new \Exception(); // @codeCoverageIgnore - } - foreach ($nodes as $node) { $prevEl = &$el; @@ -92,11 +88,11 @@ final class ArrayUtils /** * Set element in array by path * - * @param string $path Path to element - * @param array $data Array - * @param mixed $value Value to add - * @param string $delim Delimiter for path - * @param bool $overwrite Overwrite if existing + * @param string $path Path to element + * @param array $data Array + * @param mixed $value Value to add + * @param non-empty-string $delim Delimiter for path + * @param bool $overwrite Overwrite if existing * * @return array * @@ -109,10 +105,6 @@ final class ArrayUtils $pathParts = \explode($delim, \trim($path, $delim)); $current = &$data; - if ($pathParts === false) { - throw new \Exception(); // @codeCoverageIgnore - } - foreach ($pathParts as $key) { $current = &$current[$key]; } @@ -135,9 +127,9 @@ final class ArrayUtils /** * Get element of array by path * - * @param string $path Path to element - * @param array $data Array - * @param string $delim Delimiter for path + * @param string $path Path to element + * @param array $data Array + * @param non-empty-string $delim Delimiter for path * * @return mixed * @@ -150,10 +142,6 @@ final class ArrayUtils $pathParts = \explode($delim, \trim($path, $delim)); $current = $data; - if ($pathParts === false) { - throw new \Exception(); // @codeCoverageIgnore - } - foreach ($pathParts as $key) { if (!isset($current[$key])) { return null; diff --git a/Utils/Encoding/Huffman/Dictionary.php b/Utils/Encoding/Huffman/Dictionary.php index 1f7da2ed3..4675abee6 100755 --- a/Utils/Encoding/Huffman/Dictionary.php +++ b/Utils/Encoding/Huffman/Dictionary.php @@ -88,6 +88,11 @@ final class Dictionary while (\count($count) > 1) { $row1 = \array_shift($count); $row2 = \array_shift($count); + + if ($row1 == null || $row2 === null) { + break; + } + $count[] = [$row1[0] + $row2[0], [$row1, $row2]]; \sort($count); diff --git a/Utils/Encoding/Huffman/Huffman.php b/Utils/Encoding/Huffman/Huffman.php index 9278d3ff7..349ab833a 100755 --- a/Utils/Encoding/Huffman/Huffman.php +++ b/Utils/Encoding/Huffman/Huffman.php @@ -85,10 +85,6 @@ final class Huffman $splittedBinaryString = \str_split('1' . $binary . '1', 8); $binary = ''; - if ($splittedBinaryString === false) { - return $binary; // @codeCoverageIgnore - } - foreach ($splittedBinaryString as $i => $c) { while (\strlen($c) < 8) { $c .= '0'; @@ -136,9 +132,6 @@ final class Huffman } $decbin = \substr($decbin, $pos + 1); - if ($decbin === false) { - throw new \Exception(); // @codeCoverageIgnore - } } if ($i + 1 === $rawLength) { @@ -149,9 +142,6 @@ final class Huffman } $decbin = \substr($decbin, 0, $pos); - if ($decbin === false) { - throw new \Exception(); // @codeCoverageIgnore - } } $binary .= $decbin; diff --git a/Utils/Git/Repository.php b/Utils/Git/Repository.php index 88e9ccf3c..c7e0e06da 100755 --- a/Utils/Git/Repository.php +++ b/Utils/Git/Repository.php @@ -702,7 +702,7 @@ class Repository \preg_match('/^[0-9]*/', $line, $matches); $author = \substr($line, \strlen($matches[0]) + 1); - $contributor = new Author($author === false ? '' : $author); + $contributor = new Author($author); $contributor->setCommitCount($this->getCommitsCount($start, $end)[$contributor->name]); $addremove = $this->getAdditionsRemovalsByContributor($contributor, $start, $end); @@ -863,9 +863,6 @@ class Repository $author = \count($author) < 2 ? ['none', 'none'] : \explode('<', \trim($author[1] ?? '')); $date = \substr($lines[2] ?? '', 6); - if ($date === false) { - $date = 'now'; - } $commit = new Commit($matches[0]); $commit->setAuthor(new Author(\trim($author[0] ?? ''), \rtrim($author[1] ?? '', '>'))); diff --git a/Utils/IO/Csv/CsvDatabaseMapper.php b/Utils/IO/Csv/CsvDatabaseMapper.php index f606436b8..c74666072 100644 --- a/Utils/IO/Csv/CsvDatabaseMapper.php +++ b/Utils/IO/Csv/CsvDatabaseMapper.php @@ -40,7 +40,7 @@ final class CsvDatabaseMapper implements IODatabaseMapper /** * Constructor. * - * @param ConnectionAbstract $con Database connection + * @param ConnectionAbstract $con Database connection * * @since 1.0.0 */ @@ -75,6 +75,10 @@ final class CsvDatabaseMapper implements IODatabaseMapper $title = \strtr(\trim($title), ' ', '_'); $title = \preg_replace('/[^a-zA-Z0-9_]/', '', $title); + if ($title === null) { + return ''; + } + return \strtr($title, ' ', '_'); }, $titles); @@ -130,6 +134,10 @@ final class CsvDatabaseMapper implements IODatabaseMapper $title = \strtr(\trim($title), ' ', '_'); $title = \preg_replace('/[^a-zA-Z0-9_]/', '', $title); + if ($title === null) { + return ''; + } + return \strtr($title, ' ', '_'); }, $titles); @@ -240,6 +248,10 @@ final class CsvDatabaseMapper implements IODatabaseMapper $title = \strtr(\trim($title), ' ', '_'); $title = \preg_replace('/[^a-zA-Z0-9_]/', '', $title); + if ($title === null) { + return ''; + } + return \strtr($title, ' ', '_'); }, $titles); diff --git a/Utils/IO/Spreadsheet/SpreadsheetDatabaseMapper.php b/Utils/IO/Spreadsheet/SpreadsheetDatabaseMapper.php index b108e37c0..e3d41d7c1 100755 --- a/Utils/IO/Spreadsheet/SpreadsheetDatabaseMapper.php +++ b/Utils/IO/Spreadsheet/SpreadsheetDatabaseMapper.php @@ -41,13 +41,13 @@ final class SpreadsheetDatabaseMapper implements IODatabaseMapper /** * Constructor. * - * @param ConnectionAbstract $con Database connection + * @param ConnectionAbstract $con Database connection * * @since 1.0.0 */ public function __construct(ConnectionAbstract $con) { - $this->con = $con; + $this->con = $con; } /** @@ -78,8 +78,17 @@ final class SpreadsheetDatabaseMapper implements IODatabaseMapper // get column titles $column = 1; while (!empty($value = $workSheet->getCell(StringUtils::intToAlphabet($column) . 1)->getCalculatedValue())) { + if (!\is_string($value)) { + continue; + } + $value = \strtr(\trim($value), ' ', '_'); $value = \preg_replace('/[^a-zA-Z0-9_]/', '', $value); + + if ($value === null) { + continue; + } + $titles[] = $value; ++$column; @@ -140,8 +149,12 @@ final class SpreadsheetDatabaseMapper implements IODatabaseMapper // get column titles $column = 1; while (!empty($value = $workSheet->getCell(StringUtils::intToAlphabet($column) . 1)->getCalculatedValue())) { - $value = \strtr(\trim($value), ' ', '_'); - $value = \preg_replace('/[^a-zA-Z0-9_]/', '', $value); + if (!\is_string($value)) { + continue; + } + + $value = \strtr(\trim($value), ' ', '_'); + $value = \preg_replace('/[^a-zA-Z0-9_]/', '', $value); $titles[] = $value; ++$column; @@ -278,8 +291,12 @@ final class SpreadsheetDatabaseMapper implements IODatabaseMapper // get column titles $column = 1; while (!empty($value = $workSheet->getCell(StringUtils::intToAlphabet($column) . 1)->getCalculatedValue())) { - $value = \strtr(\trim($value), ' ', '_'); - $value = \preg_replace('/[^a-zA-Z0-9_]/', '', $value); + if (!\is_string($value)) { + continue; + } + + $value = \strtr(\trim($value), ' ', '_'); + $value = \preg_replace('/[^a-zA-Z0-9_]/', '', $value); $titles[] = $value; ++$column; diff --git a/Utils/IO/Zip/Gz.php b/Utils/IO/Zip/Gz.php index b4479f603..4bd21a39d 100755 --- a/Utils/IO/Zip/Gz.php +++ b/Utils/IO/Zip/Gz.php @@ -42,8 +42,7 @@ final class Gz implements ArchiveInterface public static function pack(string | array $source, string $destination, bool $overwrite = false) : bool { $destination = \strtr($destination, '\\', '/'); - if ($destination === false - || \is_array($source) + if (\is_array($source) || (!$overwrite && \is_file($destination)) || !\is_file($source) ) { diff --git a/Utils/ImageUtils.php b/Utils/ImageUtils.php index b21857953..0cf00f179 100755 --- a/Utils/ImageUtils.php +++ b/Utils/ImageUtils.php @@ -150,7 +150,7 @@ final class ImageUtils $dst = \imagecreatetruecolor($width, $height); - if ($src === null || $src === false || $dst === null || $dst === false) { + if ($src === false || $dst === false) { throw new \InvalidArgumentException(); } @@ -166,6 +166,12 @@ final class ImageUtils \imagesavealpha($dst, true); } + if ($src === null) { + \imagedestroy($dst); + + return; + } + \imagecopyresampled($dst, $src, 0, 0, 0, 0, $width, $height, $imageDim[0], $imageDim[1]); if (\stripos($srcPath, '.jpg') || \stripos($srcPath, '.jpeg')) { diff --git a/Utils/Parser/Markdown/Markdown.php b/Utils/Parser/Markdown/Markdown.php index c7df8daba..dd18e747d 100755 --- a/Utils/Parser/Markdown/Markdown.php +++ b/Utils/Parser/Markdown/Markdown.php @@ -414,14 +414,14 @@ class Markdown */ public function clean() : void { - $this->definitionData = []; - $this->contentsListArray = []; - $this->contentsListString = ''; - $this->firstHeadLevel = 0; - $this->anchorDuplicates = []; - $this->footnoteCount = 0; + $this->definitionData = []; + $this->contentsListArray = []; + $this->contentsListString = ''; + $this->firstHeadLevel = 0; + $this->anchorDuplicates = []; + $this->footnoteCount = 0; $this->currentAbbreviation = ''; - $this->currentMeaning = ''; + $this->currentMeaning = ''; } /** @@ -851,8 +851,12 @@ class Markdown return null; } - $link = $this->inlineLinkParent($excerpt); - $remainder = $link !== null ? \substr($excerpt['text'], $link['extent']) : ''; + $link = $this->inlineLinkParent($excerpt); + if ($link === null) { + return null; + } + + $remainder = \substr($excerpt['text'], $link['extent']); if (\preg_match('/^[ ]*{(' . $this->regexAttribute . '+)}/', $remainder, $matches)) { $link['extent'] += \strlen($matches[0]); @@ -1980,9 +1984,12 @@ class Markdown } // Get the text of the heading + $text = $block['element']['handler']['argument']; + /* if (isset($block['element']['handler']['argument'])) { $text = $block['element']['handler']['argument']; } + */ // Get the heading level. Levels are h1, h2, ..., h6 $level = $block['element']['name']; @@ -2054,9 +2061,11 @@ class Markdown if ($name !== 'ul') { $markerWithoutWhitespace = \substr($markerWithoutWhitespace, -1); + /* if ($markerWithoutWhitespace === false) { $markerWithoutWhitespace = $matches[1]; } + */ } $block = [ @@ -3567,7 +3576,7 @@ class Markdown foreach ($this->definitionData['Abbreviation'] as $abbreviation => $meaning) { $this->currentAbbreviation = $abbreviation; - $this->currentMeaning = $meaning; + $this->currentMeaning = $meaning; $inline['element'] = $this->elementApplyRecursiveDepthFirst( 'insertAbbreviation', @@ -3728,7 +3737,7 @@ class Markdown // http://stackoverflow.com/q/11309194/200145 // $elementMarkup = \mb_convert_encoding($elementMarkup, 'HTML-ENTITIES', 'UTF-8'); // Deprecated - $elementMarkup = \mb_encode_numericentity($elementMarkup, [0x80, 0x10FFFF, 0, ~0], 'UTF-8' ); + $elementMarkup = \mb_encode_numericentity($elementMarkup, [0x80, 0x10FFFF, 0, ~0], 'UTF-8'); // http://stackoverflow.com/q/4879946/200145 $dom->loadHTML($elementMarkup); diff --git a/Utils/Parser/Pdf/PdfParser.php b/Utils/Parser/Pdf/PdfParser.php index fd61854ce..4ac957653 100755 --- a/Utils/Parser/Pdf/PdfParser.php +++ b/Utils/Parser/Pdf/PdfParser.php @@ -139,7 +139,7 @@ final class PdfParser if ($files === false) { \unlink($out); - return $text === false ? '' : $text; + return $text; } foreach ($files as $file) { diff --git a/Utils/Parser/Xml/XmlParser.php b/Utils/Parser/Xml/XmlParser.php index c872e6e82..4ae4aa0d0 100644 --- a/Utils/Parser/Xml/XmlParser.php +++ b/Utils/Parser/Xml/XmlParser.php @@ -50,7 +50,7 @@ final class XmlParser $doc->formatOutput = true; $xml = \file_get_contents($path); - if ($xml === false || $xml === null) { + if ($xml === false) { return ''; } diff --git a/Utils/StringUtils.php b/Utils/StringUtils.php index deea46ac8..9be13b63c 100755 --- a/Utils/StringUtils.php +++ b/Utils/StringUtils.php @@ -242,15 +242,13 @@ final class StringUtils $splitOld = empty($delim) ? \str_split($old) : \explode($delim, $old); $splitNew = empty($delim) ? \str_split($new) : \explode($delim, $new); - if ($splitOld === false - || (empty($old) && !empty($new)) + if ((empty($old) && !empty($new)) || (!empty($delim) && \count($splitOld) === 1 && $splitOld[0] === '') ) { return '' . $new . ''; } - if ($splitNew === false - || (!empty($old) && empty($new)) + if ((!empty($old) && empty($new)) || (!empty($delim) && \count($splitNew) === 1 && $splitNew[0] === '') ) { return '' . $old . ''; diff --git a/Validation/Finance/Iban.php b/Validation/Finance/Iban.php index 110da4815..640efb2de 100755 --- a/Validation/Finance/Iban.php +++ b/Validation/Finance/Iban.php @@ -35,13 +35,8 @@ final class Iban extends ValidatorAbstract return false; } - $value = \str_replace(' ', '', \strtolower($value)); - - $temp = \substr($value, 0, 2); - if ($temp === false) { - return false; // @codeCoverageIgnore - } - + $value = \str_replace(' ', '', \strtolower($value)); + $temp = \substr($value, 0, 2); $enumName = '_' . \strtoupper($temp); if (!IbanEnum::isValidName($enumName)) { diff --git a/Views/View.php b/Views/View.php index 335dafb96..d16984dfb 100755 --- a/Views/View.php +++ b/Views/View.php @@ -249,10 +249,6 @@ class View extends ViewAbstract } $this->module = \substr($this->template, $start, $end - $start); - - if ($this->module === false) { - $this->module = '0'; // @codeCoverageIgnore - } } /** @@ -285,10 +281,6 @@ class View extends ViewAbstract } $this->theme = \substr($this->template, $start, $end - $start); - - if ($this->theme === false) { - $this->theme = '0'; // @codeCoverageIgnore - } } /** diff --git a/tests/Application/Testapp/info.json b/tests/Application/Testapp/info.json index 96bc7c4f2..7d3a498e8 100755 --- a/tests/Application/Testapp/info.json +++ b/tests/Application/Testapp/info.json @@ -12,7 +12,7 @@ }, "creator": { "name": "Jingga", - "website": "jingga.app" + "website": "https://jingga.app" }, "directory": "Admin", "providing": { diff --git a/tests/Application/info-test.json b/tests/Application/info-test.json index 8b8fe302f..f9c83215a 100755 --- a/tests/Application/info-test.json +++ b/tests/Application/info-test.json @@ -12,7 +12,7 @@ }, "creator": { "name": "Jingga", - "website": "jingga.app" + "website": "https://jingga.app" }, "directory": "Admin", "providing": { diff --git a/tests/DataStorage/Database/Query/BuilderTest.php b/tests/DataStorage/Database/Query/BuilderTest.php index 09906588e..663b35747 100755 --- a/tests/DataStorage/Database/Query/BuilderTest.php +++ b/tests/DataStorage/Database/Query/BuilderTest.php @@ -64,42 +64,42 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] AS t FROM [a] AS b WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] AS t FROM [a] AS b WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->selectAs('a.test', 't')->fromAs('a', 'b')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT DISTINCT [a].[test] FROM [a] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT DISTINCT [a].[test] FROM [a] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->distinct()->from('a')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test], [b].[test] FROM [a], [b] WHERE [a].[test] = \'abc\';'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test], [b].[test] FROM [a], [b] WHERE [a].[test] = \'abc\';'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test', 'b.test')->from('a', 'b')->where('a.test', '=', 'abc')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $datetime = new \DateTime('now'); - $sql = 'SELECT [a].[test], [b].[test] FROM [a], [b] WHERE [a].[test] = \'' . $datetime->format('Y-m-d H:i:s') + $datetime = new \DateTime('now'); + $sql = 'SELECT [a].[test], [b].[test] FROM [a], [b] WHERE [a].[test] = \'' . $datetime->format('Y-m-d H:i:s') . '\';'; $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test', 'b.test')->from('a', 'b')->where('a.test', '=', $datetime)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test], [b].[test] FROM [a], [b] WHERE [a].[test] = \'abc\' ORDER BY [a].[test] ASC, [b].[test] DESC;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test], [b].[test] FROM [a], [b] WHERE [a].[test] = \'abc\' ORDER BY [a].[test] ASC, [b].[test] DESC;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test', 'b.test') ->from('a', 'b') @@ -108,10 +108,10 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase ->toSql() ); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test], [b].[test] FROM [a], [b] WHERE [a].[test] = :abcValue ORDER BY [a].[test] ASC, [b].[test] DESC;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test], [b].[test] FROM [a], [b] WHERE [a].[test] = :abcValue ORDER BY [a].[test] ASC, [b].[test] DESC;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test', 'b.test') ->from('a', 'b') @@ -130,10 +130,10 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] AS b WHERE [a].[test] = 1 ORDER BY RAND() LIMIT 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] AS b WHERE [a].[test] = 1 ORDER BY RAND() LIMIT 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->random('a.test')->fromAs('a', 'b')->where('a.test', '=', 1)->toSql()); } @@ -144,10 +144,10 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] AS b ORDER BY RANDOM() LIMIT 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] AS b ORDER BY RANDOM() LIMIT 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->random('a.test')->fromAs('a', 'b')->where('a.test', '=', 1)->toSql()); } @@ -158,10 +158,10 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] AS b ORDER BY RANDOM() LIMIT 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] AS b ORDER BY RANDOM() LIMIT 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->random('a.test')->fromAs('a', 'b')->where('a.test', '=', 1)->toSql()); } @@ -172,10 +172,10 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT TOP 1 [a].[test] FROM [a] AS b ORDER BY IDX FETCH FIRST 1 ROWS ONLY;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT TOP 1 [a].[test] FROM [a] AS b ORDER BY IDX FETCH FIRST 1 ROWS ONLY;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->random('a.test')->fromAs('a', 'b')->where('a.test', '=', 1)->toSql()); } @@ -193,40 +193,40 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 ORDER BY [a].[test] DESC;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 ORDER BY [a].[test] DESC;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->newest('a.test')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 ORDER BY [a].[test] ASC;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 ORDER BY [a].[test] ASC;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->oldest('a.test')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 ORDER BY [a].[test] DESC;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 ORDER BY [a].[test] DESC;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->orderBy('a.test', 'DESC')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 ORDER BY [a].[test] ASC;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 ORDER BY [a].[test] ASC;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->orderBy('a.test', 'ASC')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 ORDER BY [a].[test] DESC, [a].[test2] DESC;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 ORDER BY [a].[test] DESC, [a].[test2] DESC;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->orderBy(['a.test', 'a.test2'], ['DESC', 'DESC'])->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 ORDER BY [a].[test] ASC, [a].[test2] ASC;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 ORDER BY [a].[test] ASC, [a].[test2] ASC;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->orderBy(['a.test', 'a.test2'], 'ASC')->toSql()); } @@ -244,16 +244,16 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 LIMIT 3;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 LIMIT 3;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->limit(3)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 OFFSET 3;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 OFFSET 3;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->offset(3)->toSql()); } @@ -271,26 +271,26 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 GROUP BY [a];'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 GROUP BY [a];'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->groupBy('a')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 GROUP BY [a], [b];'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 GROUP BY [a], [b];'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->groupBy('a')->groupBy('b')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->groupBy('a', 'b')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = :test GROUP BY [a], [b];'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = :test GROUP BY [a], [b];'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', new Parameter('test'))->groupBy('a', 'b')->toSql()); } @@ -308,88 +308,88 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 0;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 0;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', false)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', true)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = \'string\';'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = \'string\';'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 'string')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1.23;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1.23;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1.23)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 AND [a].[test2] = 2;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 AND [a].[test2] = 2;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->where('a.test2', '=', 2, 'and')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 AND [a].[test2] = 2;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 AND [a].[test2] = 2;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->andWhere('a.test2', '=', 2)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 OR [a].[test2] = 2;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 OR [a].[test2] = 2;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->where('a.test2', '=', 2, 'or')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 OR [a].[test2] = 2;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 OR [a].[test2] = 2;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->orWhere('a.test2', '=', 2)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 OR [a].[test2] IS NULL;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 OR [a].[test2] IS NULL;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->whereNull('a.test2', 'or')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 OR [a].[test2] IS NOT NULL;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 OR [a].[test2] IS NOT NULL;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->whereNotNull('a.test2', 'or')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 OR [a].[test2] IN (1, 2, 3);'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 OR [a].[test2] IN (1, 2, 3);'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->whereIn('a.test2', [1, 2, 3], 'or')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 OR [a].[test2] IN (\'a\', \'b\', \'c\');'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1 OR [a].[test2] IN (\'a\', \'b\', \'c\');'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->whereIn('a.test2', ['a', 'b', 'c'], 'or')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = :testWhere OR [a].[test2] IN (\'a\', :bValue, \'c\');'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = :testWhere OR [a].[test2] IN (\'a\', :bValue, \'c\');'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', new Parameter('testWhere'))->whereIn('a.test2', ['a', new Parameter('bValue'), 'c'], 'or')->toSql()); } @@ -407,88 +407,88 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->join('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] JOIN [b] ON [a].[id] = [b].[id] OR [a].[id2] = [b].[id2] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] JOIN [b] ON [a].[id] = [b].[id] OR [a].[id2] = [b].[id2] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->join('b')->on('a.id', '=', 'b.id')->orOn('a.id2', '=', 'b.id2')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] JOIN [b] ON [a].[id] = [b].[id] AND [a].[id2] = [b].[id2] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] JOIN [b] ON [a].[id] = [b].[id] AND [a].[id2] = [b].[id2] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->join('b')->on('a.id', '=', 'b.id')->andOn('a.id2', '=', 'b.id2')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] LEFT JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] LEFT JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->leftJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] LEFT OUTER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] LEFT OUTER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->leftOuterJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] LEFT INNER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] LEFT INNER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->leftInnerJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] RIGHT JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] RIGHT JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->rightJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] RIGHT OUTER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] RIGHT OUTER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->rightOuterJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] RIGHT INNER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] RIGHT INNER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->rightInnerJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] OUTER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] OUTER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->outerJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] INNER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] INNER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->innerJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] CROSS JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] CROSS JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->crossJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] FULL JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] FULL JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->fullJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'SELECT [a].[test] FROM [a] FULL OUTER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] FULL OUTER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->fullOuterJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); } @@ -506,35 +506,35 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'INSERT INTO [a] VALUES (1, \'test\');'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'INSERT INTO [a] VALUES (1, \'test\');'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->insert()->into('a')->values(1, 'test')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'INSERT INTO [a] VALUES (1, \'test\');'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'INSERT INTO [a] VALUES (1, \'test\');'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->insert()->into('a')->value([1, 'test'])->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'INSERT INTO [a] ([test], [test2]) VALUES (1, \'test\');'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'INSERT INTO [a] ([test], [test2]) VALUES (1, \'test\');'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->insert('test', 'test2')->into('a')->values(1, 'test')->toSql()); self::assertEquals([[1, 'test']], $query->getValues()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'INSERT INTO [a] ([test], [test2]) VALUES (1, \'test\'), (2, \'test2\');'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'INSERT INTO [a] ([test], [test2]) VALUES (1, \'test\'), (2, \'test2\');'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->insert('test', 'test2')->into('a')->values(1, 'test')->values(2, 'test2')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'INSERT INTO [a] ([test], [test2]) VALUES (:test, :test2);'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'INSERT INTO [a] ([test], [test2]) VALUES (:test, :test2);'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->insert('test', 'test2')->into('a')->values(new Parameter('test'), new Parameter('test2'))->toSql()); } @@ -552,16 +552,16 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'DELETE FROM [a] WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'DELETE FROM [a] WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->delete()->from('a')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'DELETE FROM [a] WHERE [a].[test] = :testVal;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'DELETE FROM [a] WHERE [a].[test] = :testVal;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->delete()->from('a')->where('a.test', '=', new Parameter('testVal'))->toSql()); } @@ -579,22 +579,22 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'UPDATE [a] SET [test] = 1, [test2] = 2 WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'UPDATE [a] SET [test] = 1, [test2] = 2 WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->update('a')->set(['test' => 1])->set(['test2' => 2])->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'UPDATE [a] SET [test] = 1, [test2] = 2 WHERE [a].[test] = 1;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'UPDATE [a] SET [test] = 1, [test2] = 2 WHERE [a].[test] = 1;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->update('a')->sets('test', 1)->sets('test2', 2)->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = false; - $sql = 'UPDATE [a] SET [test] = 1, [test2] = :test2 WHERE [a].[test] = :test3;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'UPDATE [a] SET [test] = 1, [test2] = :test2 WHERE [a].[test] = :test3;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->update('a')->set(['test' => 1])->set(['test2' => new Parameter('test2')])->where('a.test', '=', new Parameter('test3'))->toSql()); } @@ -612,41 +612,41 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] AS t FROM [a] AS b WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] AS t FROM [a] AS b WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->selectAs('a.test', 't')->fromAs('a', 'b')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT DISTINCT [a].[test] FROM [a] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT DISTINCT [a].[test] FROM [a] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->distinct()->from('a')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test], [b].[test] FROM [a], [b] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test], [b].[test] FROM [a], [b] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test', 'b.test')->from('a', 'b')->where('a.test', '=', 'abc')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $datetime = new \DateTime('now'); - $sql = 'SELECT [a].[test], [b].[test] FROM [a], [b] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $datetime = new \DateTime('now'); + $sql = 'SELECT [a].[test], [b].[test] FROM [a], [b] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test', 'b.test')->from('a', 'b')->where('a.test', '=', $datetime)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test], [b].[test] FROM [a], [b] WHERE [a].[test] = ? ORDER BY [a].[test] ASC, [b].[test] DESC;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test], [b].[test] FROM [a], [b] WHERE [a].[test] = ? ORDER BY [a].[test] ASC, [b].[test] DESC;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test', 'b.test') ->from('a', 'b') @@ -655,10 +655,10 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase ->toSql() ); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test], [b].[test] FROM [a], [b] WHERE [a].[test] = :abcValue ORDER BY [a].[test] ASC, [b].[test] DESC;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test], [b].[test] FROM [a], [b] WHERE [a].[test] = :abcValue ORDER BY [a].[test] ASC, [b].[test] DESC;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test', 'b.test') ->from('a', 'b') @@ -677,10 +677,10 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] AS b WHERE [a].[test] = ? ORDER BY RAND() LIMIT ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] AS b WHERE [a].[test] = ? ORDER BY RAND() LIMIT ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->random('a.test')->fromAs('a', 'b')->where('a.test', '=', 1)->toSql()); } @@ -691,10 +691,10 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] AS b ORDER BY RANDOM() LIMIT ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] AS b ORDER BY RANDOM() LIMIT ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->random('a.test')->fromAs('a', 'b')->where('a.test', '=', 1)->toSql()); } @@ -705,10 +705,10 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] AS b ORDER BY RANDOM() LIMIT ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] AS b ORDER BY RANDOM() LIMIT ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->random('a.test')->fromAs('a', 'b')->where('a.test', '=', 1)->toSql()); } @@ -719,10 +719,10 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT TOP 1 [a].[test] FROM [a] AS b ORDER BY IDX FETCH FIRST 1 ROWS ONLY;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT TOP 1 [a].[test] FROM [a] AS b ORDER BY IDX FETCH FIRST 1 ROWS ONLY;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->random('a.test')->fromAs('a', 'b')->where('a.test', '=', 1)->toSql()); } @@ -740,40 +740,40 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? ORDER BY [a].[test] DESC;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? ORDER BY [a].[test] DESC;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->newest('a.test')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? ORDER BY [a].[test] ASC;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? ORDER BY [a].[test] ASC;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->oldest('a.test')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? ORDER BY [a].[test] DESC;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? ORDER BY [a].[test] DESC;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->orderBy('a.test', 'DESC')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? ORDER BY [a].[test] ASC;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? ORDER BY [a].[test] ASC;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->orderBy('a.test', 'ASC')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? ORDER BY [a].[test] DESC, [a].[test2] DESC;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? ORDER BY [a].[test] DESC, [a].[test2] DESC;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->orderBy(['a.test', 'a.test2'], ['DESC', 'DESC'])->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? ORDER BY [a].[test] ASC, [a].[test2] ASC;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? ORDER BY [a].[test] ASC, [a].[test2] ASC;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->orderBy(['a.test', 'a.test2'], 'ASC')->toSql()); } @@ -791,16 +791,16 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? LIMIT ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? LIMIT ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->limit(3)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? OFFSET ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? OFFSET ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->offset(3)->toSql()); } @@ -818,26 +818,26 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? GROUP BY [a];'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? GROUP BY [a];'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->groupBy('a')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? GROUP BY [a], [b];'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? GROUP BY [a], [b];'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->groupBy('a')->groupBy('b')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->groupBy('a', 'b')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = :test GROUP BY [a], [b];'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = :test GROUP BY [a], [b];'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', new Parameter('test'))->groupBy('a', 'b')->toSql()); } @@ -855,88 +855,88 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', false)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', true)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 'string')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1.23;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = 1.23;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1.23)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? AND [a].[test2] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? AND [a].[test2] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->where('a.test2', '=', 2, 'and')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? AND [a].[test2] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? AND [a].[test2] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->andWhere('a.test2', '=', 2)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? OR [a].[test2] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? OR [a].[test2] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->where('a.test2', '=', 2, 'or')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? OR [a].[test2] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? OR [a].[test2] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->orWhere('a.test2', '=', 2)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? OR [a].[test2] IS NULL;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? OR [a].[test2] IS NULL;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->whereNull('a.test2', 'or')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? OR [a].[test2] IS NOT NULL;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? OR [a].[test2] IS NOT NULL;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->whereNotNull('a.test2', 'or')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? OR [a].[test2] IN (?, ?, ?);'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? OR [a].[test2] IN (?, ?, ?);'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->whereIn('a.test2', [1, 2, 3], 'or')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? OR [a].[test2] IN (?, ?, ?);'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = ? OR [a].[test2] IN (?, ?, ?);'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', 1)->whereIn('a.test2', ['a', 'b', 'c'], 'or')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = :testWhere OR [a].[test2] IN (?, :bValue, ?);'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] WHERE [a].[test] = :testWhere OR [a].[test2] IN (?, :bValue, ?);'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->where('a.test', '=', new Parameter('testWhere'))->whereIn('a.test2', ['a', new Parameter('bValue'), 'c'], 'or')->toSql()); } @@ -954,88 +954,88 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->join('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] JOIN [b] ON [a].[id] = [b].[id] OR [a].[id2] = [b].[id2] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] JOIN [b] ON [a].[id] = [b].[id] OR [a].[id2] = [b].[id2] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->join('b')->on('a.id', '=', 'b.id')->orOn('a.id2', '=', 'b.id2')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] JOIN [b] ON [a].[id] = [b].[id] AND [a].[id2] = [b].[id2] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] JOIN [b] ON [a].[id] = [b].[id] AND [a].[id2] = [b].[id2] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->join('b')->on('a.id', '=', 'b.id')->andOn('a.id2', '=', 'b.id2')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] LEFT JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] LEFT JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->leftJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] LEFT OUTER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] LEFT OUTER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->leftOuterJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] LEFT INNER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] LEFT INNER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->leftInnerJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] RIGHT JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] RIGHT JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->rightJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] RIGHT OUTER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] RIGHT OUTER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->rightOuterJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] RIGHT INNER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] RIGHT INNER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->rightInnerJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] OUTER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] OUTER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->outerJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] INNER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] INNER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->innerJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] CROSS JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] CROSS JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->crossJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] FULL JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] FULL JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->fullJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'SELECT [a].[test] FROM [a] FULL OUTER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'SELECT [a].[test] FROM [a] FULL OUTER JOIN [b] ON [a].[id] = [b].[id] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->select('a.test')->from('a')->fullOuterJoin('b')->on('a.id', '=', 'b.id')->where('a.test', '=', 1)->toSql()); } @@ -1053,35 +1053,35 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'INSERT INTO [a] VALUES (?, ?);'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'INSERT INTO [a] VALUES (?, ?);'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->insert()->into('a')->values(1, 'test')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'INSERT INTO [a] VALUES (?, ?);'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'INSERT INTO [a] VALUES (?, ?);'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->insert()->into('a')->value([1, 'test'])->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'INSERT INTO [a] ([test], [test2]) VALUES (?, ?);'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'INSERT INTO [a] ([test], [test2]) VALUES (?, ?);'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->insert('test', 'test2')->into('a')->values(1, 'test')->toSql()); self::assertEquals([[1, 'test']], $query->getValues()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'INSERT INTO [a] ([test], [test2]) VALUES (?, ?), (?, ?);'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'INSERT INTO [a] ([test], [test2]) VALUES (?, ?), (?, ?);'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->insert('test', 'test2')->into('a')->values(1, 'test')->values(2, 'test2')->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'INSERT INTO [a] ([test], [test2]) VALUES (:test, :test2);'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'INSERT INTO [a] ([test], [test2]) VALUES (:test, :test2);'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->insert('test', 'test2')->into('a')->values(new Parameter('test'), new Parameter('test2'))->toSql()); } @@ -1099,16 +1099,16 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'DELETE FROM [a] WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'DELETE FROM [a] WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->delete()->from('a')->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'DELETE FROM [a] WHERE [a].[test] = :testVal;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'DELETE FROM [a] WHERE [a].[test] = :testVal;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->delete()->from('a')->where('a.test', '=', new Parameter('testVal'))->toSql()); } @@ -1126,22 +1126,22 @@ final class BuilderTest extends \PHPUnit\Framework\TestCase $iS = $con->getGrammar()->systemIdentifierStart; $iE = $con->getGrammar()->systemIdentifierEnd; - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'UPDATE [a] SET [test] = ?, [test2] = ? WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'UPDATE [a] SET [test] = ?, [test2] = ? WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->update('a')->set(['test' => 1])->set(['test2' => 2])->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'UPDATE [a] SET [test] = ?, [test2] = ? WHERE [a].[test] = ?;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'UPDATE [a] SET [test] = ?, [test2] = ? WHERE [a].[test] = ?;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->update('a')->sets('test', 1)->sets('test2', 2)->where('a.test', '=', 1)->toSql()); - $query = new Builder($con); + $query = new Builder($con); $query->usePreparedStmt = true; - $sql = 'UPDATE [a] SET [test] = ?, [test2] = :test2 WHERE [a].[test] = :test3;'; - $sql = \strtr($sql, '[]', $iS . $iE); + $sql = 'UPDATE [a] SET [test] = ?, [test2] = :test2 WHERE [a].[test] = :test3;'; + $sql = \strtr($sql, '[]', $iS . $iE); self::assertEquals($sql, $query->update('a')->set(['test' => 1])->set(['test2' => new Parameter('test2')])->where('a.test', '=', new Parameter('test3'))->toSql()); } diff --git a/tests/Module/Testmodule/Application/Moduletestapplication/info.json b/tests/Module/Testmodule/Application/Moduletestapplication/info.json index 48331b8c8..8bf8c7b07 100755 --- a/tests/Module/Testmodule/Application/Moduletestapplication/info.json +++ b/tests/Module/Testmodule/Application/Moduletestapplication/info.json @@ -12,7 +12,7 @@ }, "creator": { "name": "Jingga", - "website": "jingga.app" + "website": "https://jingga.app" }, "description": "The backend application.", "directory": "{APPNAME}", diff --git a/tests/Module/Testmodule/info.json b/tests/Module/Testmodule/info.json index 8972b2201..7afdf2c22 100755 --- a/tests/Module/Testmodule/info.json +++ b/tests/Module/Testmodule/info.json @@ -12,7 +12,7 @@ }, "creator": { "name": "Jingga", - "website": "jingga.app" + "website": "https://jingga.app" }, "description": "Testmodule module.", "directory": "Testmodule", diff --git a/tests/Module/info-test.json b/tests/Module/info-test.json index 92998de85..f7d7b950a 100755 --- a/tests/Module/info-test.json +++ b/tests/Module/info-test.json @@ -12,7 +12,7 @@ }, "creator": { "name": "Jingga", - "website": "jingga.app" + "website": "https://jingga.app" }, "directory": "Admin", "dependencies": [], diff --git a/tests/Validation/Base/json/additional.json b/tests/Validation/Base/json/additional.json index 7573cb5d5..73fc60c9b 100755 --- a/tests/Validation/Base/json/additional.json +++ b/tests/Validation/Base/json/additional.json @@ -12,7 +12,7 @@ }, "creator": { "name": "Jingga", - "website": "jingga.app" + "website": "https://jingga.app" }, "tooMuch": 1, "description": "Tasks module.", diff --git a/tests/Validation/Base/json/incomplete.json b/tests/Validation/Base/json/incomplete.json index 4a30ee7d9..73534a1da 100755 --- a/tests/Validation/Base/json/incomplete.json +++ b/tests/Validation/Base/json/incomplete.json @@ -11,7 +11,7 @@ }, "creator": { "name": "Jingga", - "website": "jingga.app" + "website": "https://jingga.app" }, "description": "Tasks module.", "directory": "Tasks", diff --git a/tests/Validation/Base/json/invalid.json b/tests/Validation/Base/json/invalid.json index 08d2513c4..bb27084fd 100755 --- a/tests/Validation/Base/json/invalid.json +++ b/tests/Validation/Base/json/invalid.json @@ -12,7 +12,7 @@ }, "creator": { "name": "Jingga", - "website": "jingga.app" + "website": "https://jingga.app" }, "description": "Tasks module.", "directory": "Tasks", diff --git a/tests/Validation/Base/json/valid.json b/tests/Validation/Base/json/valid.json index 6a4e95095..8252e75ec 100755 --- a/tests/Validation/Base/json/valid.json +++ b/tests/Validation/Base/json/valid.json @@ -12,7 +12,7 @@ }, "creator": { "name": "Jingga", - "website": "jingga.app" + "website": "https://jingga.app" }, "description": "Tasks module.", "directory": "Tasks", diff --git a/tests/config.php b/tests/config.php index 684f71d97..4bdc6cb55 100644 --- a/tests/config.php +++ b/tests/config.php @@ -1,4 +1,4 @@ - [ @@ -296,4 +296,4 @@ return [ ], 'apis' => [ ], -]; \ No newline at end of file +];