Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
6f1342f
Fix PHP 8.1 E_DEPRECATED issue when the page has no output.
pocketarc Jun 8, 2023
32dcc1d
Make the PDO driver always throw exceptions on failed queries.
pocketarc Jun 9, 2023
72786e4
Make query builder variables accessible to end-user code.
pocketarc Jun 9, 2023
55d7657
Add debugbar code back.
pocketarc Jun 13, 2023
dedd7a6
Fix issue with previous commit.
pocketarc Jun 13, 2023
6bff588
Merge PHP 8.2 support from gxgpet
pocketarc Jun 19, 2023
7cb9d54
Update package name for release in Packagist.
pocketarc Nov 3, 2023
7b34f8b
Fixes backward incompatibility caused by the upgrade from CI 3.1 to 3…
pocketarc Feb 25, 2024
cec56c5
Fix PHP 8.x compatibility (#5)
pocketarc Feb 25, 2024
ad09d76
Fixes backward incompatibility caused by the upgrade from CI 3.1 to 3…
pocketarc Feb 25, 2024
25a96c4
Fix deprecated dynamic property creation in CI_Profiler Library.
ajdunn2 Oct 27, 2024
ab8b010
Fix warning and ignored TTL in Redis cache driver.
siemova Oct 27, 2024
96fcced
Adds compatibility with PHP 8.4.
pocketarc Oct 29, 2024
28467ba
Fixes a few more PHP 8.4 compatibility issues.
pocketarc Oct 29, 2024
ba2bafc
Improve timezones() return type.
P2GR Dec 21, 2024
59d8cff
Fix #28: Fix Postgres DB forge deprecation notice.
pocketarc Sep 13, 2025
9f7bec3
Fix #25: Resolve dynamic property deprecation notice for CI models.
pocketarc Sep 13, 2025
e87d383
Fix #27: Clarify installation instructions and update CI_VERSION to f…
pocketarc Sep 13, 2025
62c8463
Fix #24: Fix deprecation notice in db->join().
pocketarc Sep 13, 2025
b008b9a
Fix #23: Fix deprecation notice in db->order_by().
pocketarc Sep 13, 2025
d68db8c
Fix #19: Fix PDO Postgres DB forge deprecation notice.
pocketarc Sep 13, 2025
f043617
Fix #16: Add the email helper back to the repo to reduce backward com…
pocketarc Sep 13, 2025
3dd7680
Add wording to the README explaining this is based on CI 3.2.
pocketarc Sep 13, 2025
a2d200e
Add PHP 8.3/8.4/8.5 to the test matrix in CI.
pocketarc Sep 13, 2025
1be9a6c
Update readme to clarify version support and maintenance policy.
pocketarc Sep 13, 2025
7a583c5
Fix PHP 8.5 compatibility issue with MySQL driver.
pocketarc Sep 13, 2025
91bb1b5
fix: remove deprecated MYSQLI_TYPE_INTERVAL constant for PHP 8.4+ com…
pocketarc Dec 27, 2025
baeaad2
fix(upload): add PHP 8.1+ compatibility for finfo_close() deprecation…
pocketarc Dec 27, 2025
91a3d80
fix: handle null values in Encryption library for PHP 8.1+ compatibil…
pocketarc Dec 27, 2025
93cd584
Merge gxgpet's XML-RPC fixes.
pocketarc Dec 27, 2025
c46e9a2
fix(log): restore log_file_extension config for backward compatibilit…
pocketarc Dec 27, 2025
ea3b4f9
fix(tests): update highlight_code test for PHP 8.4+ compatibility. PH…
pocketarc Dec 27, 2025
e486ffe
fix: handle null language line key in Lang::line() for PHP 8.5+.
pocketarc Dec 27, 2025
5300de4
fix(image): add PHP 8.0+ compatibility for imagedestroy() deprecation…
pocketarc Dec 27, 2025
5276118
fix(tests): conditionally call setAccessible() for PHP 8.1+ compatibi…
pocketarc Dec 27, 2025
b245092
fix(tests): add PHPUnit compatibility shim for assertObjectHasPropert…
pocketarc Dec 27, 2025
397a8b8
mimes: add support for webp image type
RedDragonWebDesign Dec 27, 2025
3fea824
Update DB_query_builder.php
Kaabi Dec 27, 2025
849eaea
Merge remote-tracking branch 'origin/develop' into develop
pocketarc Dec 27, 2025
d7ccac0
fix(xmlrpc): Replace deprecated xml_set_object() + string callback pa…
pocketarc Dec 27, 2025
746767e
fix(ci): replace deprecated set-output with $GITHUB_OUTPUT.
pocketarc Dec 27, 2025
fa7e9fe
fix(tests): correct PHP version check for highlight_string() format c…
pocketarc Dec 27, 2025
b7a984d
docs: add badges for PHPUnit tests, PHP compatibility, Packagist vers…
pocketarc Dec 27, 2025
5466331
docs: inline images
pocketarc Dec 27, 2025
eb3ac6b
docs: update project description for Packagist.
pocketarc Dec 27, 2025
1d7cc44
docs: update project description for Packagist.
pocketarc Dec 27, 2025
f534bc3
feat: restore Cart library removed in CI 3.2.
pocketarc Jan 19, 2026
1aa03c7
chore: Update version number.
pocketarc Jan 19, 2026
dca1348
docs: update upgrade guide and readme to reflect restored functionali…
pocketarc Jan 19, 2026
a39221a
fix: cast ctype_digit() arguments to string to resolve PHP 8.1+ depre…
pocketarc Feb 22, 2026
0204160
fix: cast mt_rand() arguments to int to resolve PHP 8.1+ deprecation …
pocketarc Feb 22, 2026
a87d76d
Fix deprecation notice for passing a null to preg_replace (#39)
kissit Feb 22, 2026
dfa6f32
fix: add PHPUnit 8.x to composer.json to restore PHP 7.2 test support.
pocketarc Feb 22, 2026
6ff5717
chore: bump version to 3.4.2.
pocketarc Feb 22, 2026
17ea1c6
Fix Redis session driver returning success on failed connection.
czirosan Mar 11, 2026
adc059a
fix: restore form_prep() removed in 3.2.0-dev.
pocketarc Mar 18, 2026
d9a6c4c
fix: restore do_hash() removed in 3.2.0-dev.
pocketarc Mar 19, 2026
f5cc5c7
fix: restore br() and nbs() removed in 3.2.0-dev.
pocketarc Mar 19, 2026
5273897
fix: restore trim_slashes() and repeater() removed in 3.2.0-dev.
pocketarc Mar 19, 2026
74f6dfc
fix: restore standard_date() and nice_date() removed in 3.2.0-dev.
pocketarc Mar 19, 2026
ebce706
fix: restore is_cli_request() removed in 3.2.0-dev.
pocketarc Mar 19, 2026
9ae1d9a
fix: restore prep_for_form() removed in 3.2.0-dev.
pocketarc Mar 19, 2026
4a80a3b
fix: restore system_url() removed in 3.2.0-dev.
pocketarc Mar 19, 2026
e62bacd
docs: rework upgrade guide and README for the 3.2+ maintenance fork.
pocketarc Mar 19, 2026
56504ca
fix: restore 'unique' and 'encrypt' aliases in random_string() remove…
pocketarc Mar 19, 2026
c3fb46d
fix: restore 'dash' and 'underscore' aliases in url_title() removed i…
pocketarc Mar 19, 2026
cb11ea1
fix: restore 'anchor_class' option in Pagination removed in 3.2.0-dev.
pocketarc Mar 19, 2026
34340cc
fix: restore $_after parameter in add_column() removed in 3.2.0-dev.
pocketarc Mar 19, 2026
53115e6
docs: remove restored items from 3.2+ upgrade removal list.
pocketarc Mar 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
287 changes: 178 additions & 109 deletions .github/workflows/test-phpunit.yml
Original file line number Diff line number Diff line change
@@ -1,122 +1,191 @@
name: PHPUnit

on: [push, pull_request]
on: [ push, pull_request ]

permissions:
contents: read
contents: read

jobs:
tests:
runs-on: ubuntu-22.04
if: "!contains(github.event.head_commit.message, '[ci skip]')"
env:
PHP_INI_VALUES: assert.exception=1, zend.assertions=1
tests:
runs-on: ubuntu-22.04
if: "!contains(github.event.head_commit.message, '[ci skip]')"
env:
PHP_INI_VALUES: assert.exception=1, zend.assertions=1

strategy:
fail-fast: false
matrix:
php: [ '8.1', '8.0', '7.4', '7.3', '7.2', '7.1', '7.0', '5.6', '5.5', '5.4']
DB: [ 'pdo/mysql', 'pdo/pgsql', 'pdo/sqlite', 'mysqli', 'pgsql', 'sqlite' ]
compiler: [ default ]
include:
- php: '8.1'
DB: 'pdo/mysql'
compiler: jit
- php: '8.1'
DB: 'pdo/pgsql'
compiler: jit
- php: '8.1'
DB: 'pdo/sqlite'
compiler: jit
- php: '8.1'
DB: 'mysqli'
compiler: jit
- php: '8.1'
DB: 'pgsql'
compiler: jit
- php: '8.1'
DB: 'sqlite'
compiler: jit
- php: '8.0'
DB: 'pdo/mysql'
compiler: jit
- php: '8.0'
DB: 'pdo/pgsql'
compiler: jit
- php: '8.0'
DB: 'pdo/sqlite'
compiler: jit
- php: '8.0'
DB: 'mysqli'
compiler: jit
- php: '8.0'
DB: 'pgsql'
compiler: jit
- php: '8.0'
DB: 'sqlite'
compiler: jit
- php: '5.6'
DB: 'mysql'
compiler: default
- php: '5.5'
DB: 'mysql'
compiler: default
- php: '5.4'
DB: 'mysql'
compiler: default
strategy:
fail-fast: false
matrix:
php: [ '8.5', '8.4', '8.3', '8.2', '8.1', '8.0', '7.4', '7.3', '7.2', '7.1', '7.0', '5.6', '5.5', '5.4' ]
DB: [ 'pdo/mysql', 'pdo/pgsql', 'pdo/sqlite', 'mysqli', 'pgsql', 'sqlite' ]
compiler: [ default ]
include:
- php: '8.5'
DB: 'pdo/mysql'
compiler: jit
- php: '8.5'
DB: 'pdo/pgsql'
compiler: jit
- php: '8.5'
DB: 'pdo/sqlite'
compiler: jit
- php: '8.5'
DB: 'mysqli'
compiler: jit
- php: '8.5'
DB: 'pgsql'
compiler: jit
- php: '8.5'
DB: 'sqlite'
- php: '8.4'
DB: 'pdo/mysql'
compiler: jit
- php: '8.4'
DB: 'pdo/pgsql'
compiler: jit
- php: '8.4'
DB: 'pdo/sqlite'
compiler: jit
- php: '8.4'
DB: 'mysqli'
compiler: jit
- php: '8.4'
DB: 'pgsql'
compiler: jit
- php: '8.4'
DB: 'sqlite'
- php: '8.3'
DB: 'pdo/mysql'
compiler: jit
- php: '8.3'
DB: 'pdo/pgsql'
compiler: jit
- php: '8.3'
DB: 'pdo/sqlite'
compiler: jit
- php: '8.3'
DB: 'mysqli'
compiler: jit
- php: '8.3'
DB: 'pgsql'
compiler: jit
- php: '8.3'
DB: 'sqlite'
- php: '8.2'
DB: 'pdo/mysql'
compiler: jit
- php: '8.2'
DB: 'pdo/pgsql'
compiler: jit
- php: '8.2'
DB: 'pdo/sqlite'
compiler: jit
- php: '8.2'
DB: 'mysqli'
compiler: jit
- php: '8.2'
DB: 'pgsql'
compiler: jit
- php: '8.2'
DB: 'sqlite'
compiler: jit
- php: '8.1'
DB: 'pdo/mysql'
compiler: jit
- php: '8.1'
DB: 'pdo/pgsql'
compiler: jit
- php: '8.1'
DB: 'pdo/sqlite'
compiler: jit
- php: '8.1'
DB: 'mysqli'
compiler: jit
- php: '8.1'
DB: 'pgsql'
compiler: jit
- php: '8.1'
DB: 'sqlite'
compiler: jit
- php: '8.0'
DB: 'pdo/mysql'
compiler: jit
- php: '8.0'
DB: 'pdo/pgsql'
compiler: jit
- php: '8.0'
DB: 'pdo/sqlite'
compiler: jit
- php: '8.0'
DB: 'mysqli'
compiler: jit
- php: '8.0'
DB: 'pgsql'
compiler: jit
- php: '8.0'
DB: 'sqlite'
compiler: jit
- php: '5.6'
DB: 'mysql'
compiler: default
- php: '5.5'
DB: 'mysql'
compiler: default
- php: '5.4'
DB: 'mysql'
compiler: default

services:
postgres:
image: postgres:12
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: ci_test
ports:
- 5432:5432
options: --health-cmd=pg_isready --health-interval=10s --health-timeout=5s --health-retries=3
services:
postgres:
image: postgres:12
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: ci_test
ports:
- 5432:5432
options: --health-cmd=pg_isready --health-interval=10s --health-timeout=5s --health-retries=3

mysql:
image: mysql:5.7
env:
MYSQL_ALLOW_EMPTY_PASSWORD: true
MYSQL_USER: travis
MYSQL_PASSWORD: travis
MYSQL_DATABASE: ci_test
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
mysql:
image: mysql:5.7
env:
MYSQL_ALLOW_EMPTY_PASSWORD: true
MYSQL_USER: travis
MYSQL_PASSWORD: travis
MYSQL_DATABASE: ci_test
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

steps:
- name: Checkout
uses: actions/checkout@v2
- name: Override PHP ini values for JIT compiler
if: matrix.compiler == 'jit'
run: echo "PHP_INI_VALUES::assert.exception=1, zend.assertions=1, opcache.enable=1, opcache.enable_cli=1, opcache.optimization_level=-1, opcache.jit=1255, opcache.jit_buffer_size=64M" >> $GITHUB_ENV
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Override PHP ini values for JIT compiler
if: matrix.compiler == 'jit'
run: echo "PHP_INI_VALUES::assert.exception=1, zend.assertions=1, opcache.enable=1, opcache.enable_cli=1, opcache.optimization_level=-1, opcache.jit=1255, opcache.jit_buffer_size=64M" >> $GITHUB_ENV

- name: Install PHP${{ matrix.php }} - DB ${{ matrix.DB }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
tools: composer, pecl
extensions: imagick, sqlite3, pgsql, mysqli, pdo, pdo_mysql, pdo_pgsql, pdo_sqlite, mbstring
ini-values: ${{ env.PHP_INI_VALUES }}
coverage: xdebug
- name: Install PHP${{ matrix.php }} - DB ${{ matrix.DB }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
tools: composer, pecl
extensions: imagick, sqlite3, pgsql, mysqli, pdo, pdo_mysql, pdo_pgsql, pdo_sqlite, mbstring
ini-values: ${{ env.PHP_INI_VALUES }}
coverage: xdebug

- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache composer dependencies
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Install composer dependencies
run: composer install --no-progress --prefer-dist --optimize-autoloader
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache composer dependencies
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Install composer dependencies
run: composer install --no-progress --prefer-dist --optimize-autoloader

- name: PHPUnit Test
run: |
php -d error_reporting=E_ALL -d zend.enable_gc=0 -d date.timezone=UTC -d mbstring.func_overload=7 -d mbstring.internal_encoding=UTF-8 vendor/bin/phpunit --coverage-text --configuration tests/travis/${{ matrix.DB }}.phpunit.xml
env:
XDEBUG_MODE: coverage
- name: PHPUnit Test
run: |
php -d error_reporting=E_ALL -d zend.enable_gc=0 -d date.timezone=UTC -d mbstring.func_overload=7 -d mbstring.internal_encoding=UTF-8 vendor/bin/phpunit --coverage-text --configuration tests/travis/${{ matrix.DB }}.phpunit.xml
env:
XDEBUG_MODE: coverage
14 changes: 14 additions & 0 deletions application/config/config.php
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,20 @@
*/
$config['log_filename'] = '';

/*
|--------------------------------------------------------------------------
| Log File Extension (DEPRECATED)
|--------------------------------------------------------------------------
|
| This option is deprecated. Use 'log_filename' instead.
| Kept for backward compatibility with CI 3.1.x configurations.
|
| If 'log_filename' is set, this option is ignored.
| Example: 'txt' or 'log' (without leading dot)
|
*/
$config['log_file_extension'] = '';

/*
|--------------------------------------------------------------------------
| Log File Permissions
Expand Down
3 changes: 2 additions & 1 deletion application/config/mimes.php
Original file line number Diff line number Diff line change
Expand Up @@ -182,5 +182,6 @@
'odt' => 'application/vnd.oasis.opendocument.text',
'odm' => 'application/vnd.oasis.opendocument.text-master',
'ott' => 'application/vnd.oasis.opendocument.text-template',
'oth' => 'application/vnd.oasis.opendocument.text-web'
'oth' => 'application/vnd.oasis.opendocument.text-web',
'webp' => 'image/webp'
);
13 changes: 5 additions & 8 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
{
"description": "The CodeIgniter framework",
"name": "codeigniter/framework",
"description": "Actively maintained CodeIgniter 3 fork with support for PHP 5.4 - PHP 8.5 (and beyond). Fully backward compatible.",
"name": "pocketarc/codeigniter",
"type": "project",
"homepage": "https://codeigniter.com",
"homepage": "https://github.com/pocketarc/codeigniter",
"license": "MIT",
"support": {
"forum": "https://forum.codeigniter.com/",
"wiki": "https://github.com/bcit-ci/CodeIgniter/wiki",
"slack": "https://codeigniterchat.slack.com",
"source": "https://github.com/bcit-ci/CodeIgniter"
"source": "https://github.com/pocketarc/codeigniter"
},
"require": {
"php": ">=5.4.8"
Expand All @@ -30,6 +27,6 @@
},
"require-dev": {
"mikey179/vfsstream": "1.6.*",
"phpunit/phpunit": "4.* || 5.* || 9.*"
"phpunit/phpunit": "4.* || 5.* || 8.* || 9.*"
}
}
6 changes: 5 additions & 1 deletion index.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,11 @@
case 'testing':
case 'production':
ini_set('display_errors', 0);
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED);
if (version_compare(PHP_VERSION, '8.4', '>=')) {
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_USER_NOTICE & ~E_USER_DEPRECATED);
} else {
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED);
}
break;

default:
Expand Down
Loading