Skip to content

Commit

Permalink
Merge pull request #9358 from codeigniter4/develop
Browse files Browse the repository at this point in the history
4.5.7 Ready code
  • Loading branch information
paulbalandan authored Dec 31, 2024
2 parents 51cdd7d + e8cd894 commit daf65f9
Show file tree
Hide file tree
Showing 69 changed files with 315 additions and 180 deletions.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ blank_issues_enabled: false
contact_links:
- name: CodeIgniter Forum
url: https://forum.codeigniter.com/forum-30.html
about: Please ask your support questions in the forums. Thanks!
about: Please ask your support questions and/or feature requests in the forums. Thanks!

- name: CodeIgniter Slack channel
url: https://codeigniterchat.slack.com
Expand Down
11 changes: 0 additions & 11 deletions .github/ISSUE_TEMPLATE/feature_request.md

This file was deleted.

4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/planned-work.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
name: Planned work
about: Approved work planning
about: Maintainers' space. DO NOT use this for your bug reports!
title: 'Dev: '
labels: dev
assignees: ''

---

Repo maintainers will create "issues" for planned work, so it can be tracked.
Maintainers will create "issues" for planned work, so it can be tracked.
41 changes: 41 additions & 0 deletions .github/mergeable.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# https://mergeable.readthedocs.io/en/latest/configuration.html

version: 2
mergeable:
- when: issues.opened
validate:
- do: description
and:
- must_include:
regex: '^### PHP Version'
- must_include:
regex: '^### CodeIgniter4 Version'
- do: author
and:
- must_exclude:
regex: 'kenjis'
- must_exclude:
regex: 'lonnieezell'
- must_exclude:
regex: 'MGatner'
- must_exclude:
regex: 'michalsn'
- must_exclude:
regex: 'paulbalandan'
- must_exclude:
regex: 'samsonasik'
fail:
- do: comment
payload: |
Hi there! :wave:
It looks like you opened an issue without following the bug report template:
Bug report ([open an issue](https://github.com/codeigniter4/CodeIgniter4/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=Bug%3A+))
If you are opening a feature request or support question, please do so in the [forums](https://forum.codeigniter.com/forum-30.html).
The current issue will be closed. This is a precaution to save maintainers' time, I hope you'll understand.
Sincerely, the mergeable bot 🤖
- do: close
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
# Changelog

## [v4.5.7](https://github.com/codeigniter4/CodeIgniter4/tree/v4.5.7) (2024-12-31)
[Full Changelog](https://github.com/codeigniter4/CodeIgniter4/compare/v4.5.6...v4.5.7)

### Fixed Bugs

* fix: handle namespaced helper found on Common helper by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9354
* fix: `Forge::dropColumn()` always returns `false` on SQLite3 driver by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9351

### Refactoring

* refactor: enable AddArrowFunctionReturnTypeRector by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9343

## [v4.5.6](https://github.com/codeigniter4/CodeIgniter4/tree/v4.5.6) (2024-12-28)
[Full Changelog](https://github.com/codeigniter4/CodeIgniter4/compare/v4.5.5...v4.5.6)

Expand Down
2 changes: 1 addition & 1 deletion app/Views/errors/cli/error_exception.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
$function .= $padClass . $error['function'];
}

$args = implode(', ', array_map(static fn ($value) => match (true) {
$args = implode(', ', array_map(static fn ($value): string => match (true) {
is_object($value) => 'Object(' . $value::class . ')',
is_array($value) => $value !== [] ? '[...]' : '[]',
$value === null => 'null', // return the lowercased version
Expand Down
2 changes: 1 addition & 1 deletion phpdoc.dist.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<output>api/build/</output>
<cache>api/cache/</cache>
</paths>
<version number="4.5.6">
<version number="4.5.7">
<api format="php">
<source dsn=".">
<path>system</path>
Expand Down
2 changes: 2 additions & 0 deletions rector.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
use Rector\Privatization\Rector\Property\PrivatizeFinalClassPropertyRector;
use Rector\Strict\Rector\Empty_\DisallowedEmptyRuleFixerRector;
use Rector\Strict\Rector\If_\BooleanInIfConditionRuleFixerRector;
use Rector\TypeDeclaration\Rector\ArrowFunction\AddArrowFunctionReturnTypeRector;
use Rector\TypeDeclaration\Rector\ClassMethod\AddMethodCallBasedStrictParamTypeRector;
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnNeverTypeRector;
use Rector\TypeDeclaration\Rector\Closure\AddClosureVoidReturnTypeWhereNoReturnRector;
Expand Down Expand Up @@ -201,6 +202,7 @@
TypedPropertyFromAssignsRector::class,
ClosureReturnTypeRector::class,
FlipTypeControlToUseExclusiveTypeRector::class,
AddArrowFunctionReturnTypeRector::class,
])
->withConfiguredRule(StringClassNameToClassConstantRector::class, [
// keep '\\' prefix string on string '\Foo\Bar'
Expand Down
2 changes: 1 addition & 1 deletion system/CLI/CLI.php
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ public static function promptByMultipleKeys(string $text, array $options): array
$pattern = preg_match_all('/^\d+(,\d+)*$/', trim($input));

// separate input by comma and convert all to an int[]
$inputToArray = array_map(static fn ($value) => (int) $value, explode(',', $input));
$inputToArray = array_map(static fn ($value): int => (int) $value, explode(',', $input));
// find max from key of $options
$maxOptions = array_key_last($options);
// find max from input
Expand Down
2 changes: 1 addition & 1 deletion system/CodeIgniter.php
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ class CodeIgniter
/**
* The current version of CodeIgniter Framework
*/
public const CI_VERSION = '4.5.6';
public const CI_VERSION = '4.5.7';

/**
* App startup time.
Expand Down
2 changes: 1 addition & 1 deletion system/Commands/Utilities/Routes.php
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ public function run(array $params)

// Sort by Handler.
if ($sortByHandler) {
usort($tbody, static fn ($handler1, $handler2) => strcmp($handler1[3], $handler2[3]));
usort($tbody, static fn ($handler1, $handler2): int => strcmp($handler1[3], $handler2[3]));
}

if ($host !== null) {
Expand Down
2 changes: 1 addition & 1 deletion system/Common.php
Original file line number Diff line number Diff line change
Expand Up @@ -598,7 +598,7 @@ function helper($filenames): void
if (str_contains($filename, '\\')) {
$path = $loader->locateFile($filename, 'Helpers');

if ($path !== '') {
if ($path === false) {
throw FileNotFoundException::forFileNotFound($filename);
}

Expand Down
18 changes: 9 additions & 9 deletions system/Database/BaseBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -2018,7 +2018,7 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri
$sql = 'INSERT INTO ' . $table . ' (' . implode(', ', $keys) . ")\n{:_table_:}ON DUPLICATE KEY UPDATE\n" . implode(
",\n",
array_map(
static fn ($key, $value) => $table . '.' . $key . ($value instanceof RawSql ?
static fn ($key, $value): string => $table . '.' . $key . ($value instanceof RawSql ?
' = ' . $value :
' = VALUES(' . $value . ')'),
array_keys($updateFields),
Expand Down Expand Up @@ -2108,7 +2108,7 @@ public function onConstraint($set)
if (is_string($set)) {
$set = explode(',', $set);

$set = array_map(static fn ($key) => trim($key), $set);
$set = array_map(static fn ($key): string => trim($key), $set);
}

if ($set instanceof RawSql) {
Expand Down Expand Up @@ -2152,7 +2152,7 @@ public function setQueryAsData($query, ?string $alias = null, $columns = null):
if (is_string($query)) {
if ($columns !== null && is_string($columns)) {
$columns = explode(',', $columns);
$columns = array_map(static fn ($key) => trim($key), $columns);
$columns = array_map(static fn ($key): string => trim($key), $columns);
}

$columns = (array) $columns;
Expand Down Expand Up @@ -2190,7 +2190,7 @@ protected function fieldsFromQuery(string $sql): array
*/
protected function formatValues(array $values): array
{
return array_map(static fn ($index) => '(' . implode(',', $index) . ')', $values);
return array_map(static fn ($index): string => '(' . implode(',', $index) . ')', $values);
}

/**
Expand Down Expand Up @@ -2649,7 +2649,7 @@ protected function _updateBatch(string $table, array $keys, array $values): stri
$sql .= implode(
",\n",
array_map(
static fn ($key, $value) => $key . ($value instanceof RawSql ?
static fn ($key, $value): string => $key . ($value instanceof RawSql ?
' = ' . $value :
' = ' . $alias . '.' . $value),
array_keys($updateFields),
Expand Down Expand Up @@ -2691,8 +2691,8 @@ protected function _updateBatch(string $table, array $keys, array $values): stri
$data = implode(
" UNION ALL\n",
array_map(
static fn ($value) => 'SELECT ' . implode(', ', array_map(
static fn ($key, $index) => $index . ' ' . $key,
static fn ($value): string => 'SELECT ' . implode(', ', array_map(
static fn ($key, $index): string => $index . ' ' . $key,
$keys,
$value
)),
Expand Down Expand Up @@ -2946,8 +2946,8 @@ protected function _deleteBatch(string $table, array $keys, array $values): stri
$data = implode(
" UNION ALL\n",
array_map(
static fn ($value) => 'SELECT ' . implode(', ', array_map(
static fn ($key, $index) => $index . ' ' . $key,
static fn ($value): string => 'SELECT ' . implode(', ', array_map(
static fn ($key, $index): string => $index . ' ' . $key,
$keys,
$value
)),
Expand Down
4 changes: 2 additions & 2 deletions system/Database/Forge.php
Original file line number Diff line number Diff line change
Expand Up @@ -778,7 +778,7 @@ public function addColumn(string $table, $fields): bool
}

/**
* @param array|string $columnNames column names to DROP
* @param list<string>|string $columnNames column names to DROP
*
* @return bool
*
Expand Down Expand Up @@ -861,7 +861,7 @@ protected function _alterTable(string $alterType, string $table, $processedField
$columnNamesToDrop = explode(',', $columnNamesToDrop);
}

$columnNamesToDrop = array_map(fn ($field) => 'DROP COLUMN ' . $this->db->escapeIdentifiers(trim($field)), $columnNamesToDrop);
$columnNamesToDrop = array_map(fn ($field): string => 'DROP COLUMN ' . $this->db->escapeIdentifiers(trim($field)), $columnNamesToDrop);

return $sql . implode(', ', $columnNamesToDrop);
}
Expand Down
6 changes: 3 additions & 3 deletions system/Database/MySQLi/Builder.php
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ protected function _updateBatch(string $table, array $keys, array $values): stri
$sql .= implode(
",\n",
array_map(
static fn ($key, $value) => $table . '.' . $key . ($value instanceof RawSql ?
static fn ($key, $value): string => $table . '.' . $key . ($value instanceof RawSql ?
' = ' . $value :
' = ' . $alias . '.' . $value),
array_keys($updateFields),
Expand All @@ -132,8 +132,8 @@ protected function _updateBatch(string $table, array $keys, array $values): stri
$data = implode(
" UNION ALL\n",
array_map(
static fn ($value) => 'SELECT ' . implode(', ', array_map(
static fn ($key, $index) => $index . ' ' . $key,
static fn ($value): string => 'SELECT ' . implode(', ', array_map(
static fn ($key, $index): string => $index . ' ' . $key,
$keys,
$value
)),
Expand Down
34 changes: 17 additions & 17 deletions system/Database/OCI8/Builder.php
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,8 @@ protected function _insertBatch(string $table, array $keys, array $values): stri
$data = implode(
" FROM DUAL UNION ALL\n",
array_map(
static fn ($value) => 'SELECT ' . implode(', ', array_map(
static fn ($key, $index) => $index . ' ' . $key,
static fn ($value): string => 'SELECT ' . implode(', ', array_map(
static fn ($key, $index): string => $index . ' ' . $key,
$keys,
$value
)),
Expand All @@ -107,7 +107,7 @@ protected function _insertBatch(string $table, array $keys, array $values): stri
*/
protected function _replace(string $table, array $keys, array $values): string
{
$fieldNames = array_map(static fn ($columnName) => trim($columnName, '"'), $keys);
$fieldNames = array_map(static fn ($columnName): string => trim($columnName, '"'), $keys);

$uniqueIndexes = array_filter($this->db->getIndexData($table), static function ($index) use ($fieldNames): bool {
$hasAllFields = count(array_intersect($index->fields, $fieldNames)) === count($index->fields);
Expand All @@ -126,24 +126,24 @@ protected function _replace(string $table, array $keys, array $values): string

$sql = 'MERGE INTO ' . $table . "\n USING (SELECT ";

$sql .= implode(', ', array_map(static fn ($columnName, $value) => $value . ' ' . $columnName, $keys, $values));
$sql .= implode(', ', array_map(static fn ($columnName, $value): string => $value . ' ' . $columnName, $keys, $values));

$sql .= ' FROM DUAL) "_replace" ON ( ';

$onList = [];
$onList[] = '1 != 1';

foreach ($uniqueIndexes as $index) {
$onList[] = '(' . implode(' AND ', array_map(static fn ($columnName) => $table . '."' . $columnName . '" = "_replace"."' . $columnName . '"', $index->fields)) . ')';
$onList[] = '(' . implode(' AND ', array_map(static fn ($columnName): string => $table . '."' . $columnName . '" = "_replace"."' . $columnName . '"', $index->fields)) . ')';
}

$sql .= implode(' OR ', $onList) . ') WHEN MATCHED THEN UPDATE SET ';

$sql .= implode(', ', array_map(static fn ($columnName) => $columnName . ' = "_replace".' . $columnName, $replaceableFields));
$sql .= implode(', ', array_map(static fn ($columnName): string => $columnName . ' = "_replace".' . $columnName, $replaceableFields));

$sql .= ' WHEN NOT MATCHED THEN INSERT (' . implode(', ', $replaceableFields) . ') VALUES ';

return $sql . (' (' . implode(', ', array_map(static fn ($columnName) => '"_replace".' . $columnName, $replaceableFields)) . ')');
return $sql . (' (' . implode(', ', array_map(static fn ($columnName): string => '"_replace".' . $columnName, $replaceableFields)) . ')');
}

/**
Expand Down Expand Up @@ -298,7 +298,7 @@ protected function _updateBatch(string $table, array $keys, array $values): stri
$sql .= implode(
",\n",
array_map(
static fn ($key, $value) => $table . '.' . $key . ($value instanceof RawSql ?
static fn ($key, $value): string => $table . '.' . $key . ($value instanceof RawSql ?
' = ' . $value :
' = ' . $alias . '.' . $value),
array_keys($updateFields),
Expand All @@ -315,8 +315,8 @@ protected function _updateBatch(string $table, array $keys, array $values): stri
$data = implode(
" UNION ALL\n",
array_map(
static fn ($value) => 'SELECT ' . implode(', ', array_map(
static fn ($key, $index) => $index . ' ' . $key,
static fn ($value): string => 'SELECT ' . implode(', ', array_map(
static fn ($key, $index): string => $index . ' ' . $key,
$keys,
$value
)) . ' FROM DUAL',
Expand All @@ -342,7 +342,7 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri
$constraints = $this->QBOptions['constraints'] ?? [];

if (empty($constraints)) {
$fieldNames = array_map(static fn ($columnName) => trim($columnName, '"'), $keys);
$fieldNames = array_map(static fn ($columnName): string => trim($columnName, '"'), $keys);

$uniqueIndexes = array_filter($this->db->getIndexData($table), static function ($index) use ($fieldNames): bool {
$hasAllFields = count(array_intersect($index->fields, $fieldNames)) === count($index->fields);
Expand Down Expand Up @@ -401,7 +401,7 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri
$sql .= implode(
",\n",
array_map(
static fn ($key, $value) => $key . ($value instanceof RawSql ?
static fn ($key, $value): string => $key . ($value instanceof RawSql ?
" = {$value}" :
" = {$alias}.{$value}"),
array_keys($updateFields),
Expand All @@ -412,7 +412,7 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri
$sql .= "\nWHEN NOT MATCHED THEN INSERT (" . implode(', ', $keys) . ")\nVALUES ";

$sql .= (' ('
. implode(', ', array_map(static fn ($columnName) => "{$alias}.{$columnName}", $keys))
. implode(', ', array_map(static fn ($columnName): string => "{$alias}.{$columnName}", $keys))
. ')');

$this->QBOptions['sql'] = $sql;
Expand All @@ -424,8 +424,8 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri
$data = implode(
" FROM DUAL UNION ALL\n",
array_map(
static fn ($value) => 'SELECT ' . implode(', ', array_map(
static fn ($key, $index) => $index . ' ' . $key,
static fn ($value): string => 'SELECT ' . implode(', ', array_map(
static fn ($key, $index): string => $index . ' ' . $key,
$keys,
$value
)),
Expand Down Expand Up @@ -503,8 +503,8 @@ protected function _deleteBatch(string $table, array $keys, array $values): stri
$data = implode(
" FROM DUAL UNION ALL\n",
array_map(
static fn ($value) => 'SELECT ' . implode(', ', array_map(
static fn ($key, $index) => $index . ' ' . $key,
static fn ($value): string => 'SELECT ' . implode(', ', array_map(
static fn ($key, $index): string => $index . ' ' . $key,
$keys,
$value
)),
Expand Down
2 changes: 1 addition & 1 deletion system/Database/OCI8/Result.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public function getFieldCount(): int
*/
public function getFieldNames(): array
{
return array_map(fn ($fieldIndex) => oci_field_name($this->resultID, $fieldIndex), range(1, $this->getFieldCount()));
return array_map(fn ($fieldIndex): false|string => oci_field_name($this->resultID, $fieldIndex), range(1, $this->getFieldCount()));
}

/**
Expand Down
Loading

0 comments on commit daf65f9

Please sign in to comment.