bcit-ci/CodeIgniter
49.3
Weak · 5 August 2026
56.7k
lines of production code
PHP
primary language
4
measurements over time
What this system is
This system is a PHP-based web application framework that provides a modular architecture for building web applications. It features a comprehensive database abstraction layer supporting multiple SQL and NoSQL backends, alongside a suite of core libraries for caching, session management, and form validation. The framework also includes a modernized documentation system and a robust unit testing infrastructure to ensure code reliability.
How it got here
2006 — Database layer modernization and cleanup
29 changes.
This period focused on modernizing the framework's architecture by removing legacy PHP 4 compatibility, deprecated plugins, and outdated HTML-based documentation. The database abstraction layer was significantly refactored into a cleaner class structure, and support for multiple database engines including MySQL, PostgreSQL, Oracle, and MSSQL was introduced or updated.
2008–2012 — Framework modernization and test infrastructure
30 changes.
This period focused on modernizing the CodeIgniter framework by introducing a comprehensive caching system, expanding database support with PDO and new drivers, and updating the Session library for PHP 8 compatibility. Concurrently, the project established a robust unit testing infrastructure using virtual file systems and mocks to ensure the stability of the core components and helpers.
2014 — PHP compatibility and documentation UI
5 changes.
The project introduced a compatibility layer to support older PHP versions by backporting essential functions like password hashing and mbstring utilities, accompanied by comprehensive test coverage. Simultaneously, the documentation was modernized with a responsive Sphinx theme that improved mobile usability and layout consistency.
Features
Added CodeIgniter lexer for Pygments/Sphinx documentation
The user guide source now includes a Python-based lexer (cilexer) for the Pygments syntax highlighting engine, enabling proper code highlighting for CodeIgniter templates in the Sphinx-managed documentation. This addition supports the transition from the old HTML-based user guide to a Sphinx-based system, allowing for improved rendering of PHP, HTML, and CSS code blocks in the official documentation.
_user\_guide\src/cilexer · high confidence
Added Interbase/Firebird database driver
Users can now connect to Interbase and Firebird databases using the new 'ibase' driver. This addition provides full database connectivity, schema management (forge), result handling, and utility functions (such as backups) for these database systems.
system/database/drivers/ibase · high confidence
Added MySQL database driver and supporting classes
Introduced the MySQL database driver, including the main adapter (mysql\_driver.php), the table structure generator (mysql\_forge.php), the result set handler (mysql\_result.php), and the database utility class (mysql\_utility.php). These files implement the core database connection, schema management, and backup/restore functionality for MySQL, enabling the framework to interact with MySQL databases.
system/database/drivers/mysql, system/database/drivers/odbc · high confidence
Added PDO database driver
The PDO database driver has been added to the framework, introducing a new database connection and result handling implementation. This includes the main PDO driver class for managing connections and queries, a forge class for database schema operations, a result class for handling query results, and a utility class for database maintenance tasks. This enables developers to use PHP's PDO extension for database interactions within the framework.
system/database/drivers/cubrid, system/database/drivers/pdo, system/database/drivers/sqlite3 · high confidence
Added PDO database drivers for 4D, CUBRID, DBLIB, Firebird, IBM DB2, and Informix
The database layer now includes new PDO subdrivers for 4D, CUBRID, DBLIB (SQL Server), Firebird, IBM DB2, and Informix. Each driver provides database-specific SQL generation and schema management, enabling the use of these database systems through the unified PDO interface.
system/database/drivers/pdo/subdrivers · high confidence
Added PHP 5.5/5.6 compatibility layers for password, hash, mbstring, and standard functions
The framework now includes a new \system/core/compat\ directory containing backports of several PHP functions for older environments. This includes \hash\_equals\ and \hash\_pbkdf2\ (with byte-safety and DoS mitigation), \password\_hash\/\password\_get\_info\/\password\_needs\_rehash\ using bcrypt, \mb\_strlen\/\mb\_strpos\/\mb\_substr\ with iconv fallbacks, and \array\_column\. These functions are automatically loaded when running on PHP versions older than 5.5 or 5.6, ensuring consistent behavior across supported PHP versions.
system/core/compat · high confidence
Added SQLSRV database driver for Microsoft SQL Server
The SQLSRV database driver has been added to CodeIgniter, enabling support for Microsoft SQL Server via the SQLSRV extension. This includes the main driver class, a database forge class for schema management, a result class for handling query results, and a utility class for database maintenance. The driver supports features such as connection pooling, encrypted connections, and specific SQL Server behaviors like using brackets for identifier escaping and handling auto-incrementing identity columns.
system/database/drivers/sqlsrv · high confidence
Default application structure and configuration files added
The application directory now includes the default configuration files (config.php, constants.php, database.php, mimes.php, etc.) and view templates (error pages, welcome message) required to run a CodeIgniter project. This provides a complete, ready-to-use application skeleton with sensible defaults for database connectivity, file MIME types, and error handling.
application · high confidence
Introduced PostgreSQL database driver
Added the PostgreSQL (Postgre) database driver, including the main driver, forge, result, and utility classes, enabling the framework to connect to and manage PostgreSQL databases.
system/database/drivers/postgre · high confidence
Introduced new MSSQL database driver
Added the MSSQL database driver, including the main driver, forge, result, and utility classes, enabling support for Microsoft SQL Server databases.
system/database/drivers/mssql · high confidence
Introduction of the Cache library with support for multiple backends
The Cache library is now available in the system/libraries/Cache directory, providing a unified interface for caching data. It supports multiple backends including APC, APCu, Dummy, File, Memcached, Redis, and WinCache. The library allows setting a key prefix for cache keys, handles fallback to a backup driver if the primary one is unavailable, and provides methods for getting, saving, deleting, incrementing, and decrementing cached values.
system/libraries/Cache · high confidence
Modernized project configuration and release tooling
Added .editorconfig, .gitattributes, and .gitignore to standardize editor settings, control file exports for Composer, and exclude development artifacts. Introduced a build-release.sh script to automate release validation and documentation building. Updated the license from the original CodeIgniter license to MIT, and updated the README to reflect current project status and PHP 5.6+ requirements.
(repo-wide) · high confidence
New cache drivers for APCu, Memcached, Redis, and WinCache
The caching library now supports multiple backends out of the box. Users can now utilize file-based, APCu, Memcached, Redis, and WinCache drivers for caching. Each driver implements the standard cache interface (get, save, delete, increment, decrement, clean, cache\_info, and get\_metadata), allowing for flexible configuration of storage mechanisms depending on the server environment.
system/libraries/Cache/drivers · high confidence
New session storage drivers for database, files, Memcached, and Redis
The Session library now supports multiple storage backends. The diff introduces four new driver classes—Session\_database\_driver, Session\_files\_driver, Session\_memcached\_driver, and Session\_redis\_driver—allowing sessions to be persisted in a database, on the local filesystem, in Memcached, or in Redis. Each driver implements the session handler interface, handling open, read, write, and lock acquisition specific to its storage medium.
system/libraries/Session/drivers · high confidence
Oracle (OCI8) database driver and related classes added
The Oracle (OCI8) database driver, along with its associated result, forge, and utility classes, have been added to the framework. This introduces full support for connecting to and interacting with Oracle databases, including table creation, modification, and data retrieval via the OCI8 extension.
system/database/drivers/oci8 · high confidence
User guide migrated to Sphinx and updated to version 3.2.0
The user guide source files have been converted from the legacy HTML format to Sphinx-managed RST format, including a new DCO.rst file and an updated changelog.rst reflecting the 3.2.0 release. The changelog documents significant framework changes such as dropping support for PHP versions below 5.4.8, removing deprecated libraries (Encrypt, Cart, Javascript), and adding new features like WebP image support and SameSite cookie attributes.
_user\_guide\src/source · high confidence
Removals
Removal of the legacy Scaffolding class
The legacy Scaffolding class, which provided a basic interface for adding, viewing, and editing database records, has been removed from the system. This change eliminates the built-in scaffolding functionality, meaning users can no longer use this specific class for rapid database management tasks.
system/scaffolding · high confidence
Removed CodeIgniter 1.4.0 database user guide pages
The HTML documentation files for the CodeIgniter 1.4.0 Database Library have been removed. This includes the index page, as well as specific guides for Active Record, configuration, connecting to the database, queries, results, fields, table data, and custom function calls. Users will no longer have access to the legacy HTML-based documentation for these database features.
_user\guide/libraries/database · high confidence
Removed PHP 4-specific base class files
The framework removed the \Base4.php\ and \Base5.php\ files, which previously provided separate base class implementations for PHP 4 and PHP 5. This change eliminates the legacy PHP 4 compatibility layer, indicating that the framework no longer supports PHP 4 and relies on a unified, modern PHP 5+ architecture for the base controller and instance management.
system/codeigniter · high confidence
Removed deprecated captcha and js\_calendar plugins
The captcha and js\_calendar plugins have been removed from the system/plugins directory. Users relying on these legacy plugins will need to migrate to the current helper-based implementations or alternative solutions, as the original plugin files (captcha\_pi.php and js\_calendar\_pi.php) are no longer available.
system/plugins · high confidence
Removed legacy CodeIgniter 1.x installation and upgrade documentation
The static HTML files for the installation guide, download page, and all version-specific upgrade instructions (from Beta 1.0 through 1.4.0) have been deleted from the user guide. This removes the legacy installation and upgrade instructions for CodeIgniter 1.x versions, likely as part of a broader migration to a new documentation system.
_user\guide/installation · high confidence
Removed legacy JavaScript libraries and navigation script from user guide
The \user\_guide/scripts\ directory has been removed, deleting \hacks.txt\, \moo.fx.js\, \moo.fx.pack.js\, \nav.js\, and \prototype.lite.js\. These files contained the Moo.fx animation library, a custom navigation menu generator, and a stripped-down version of the Prototype JavaScript framework, all of which are no longer included in the user guide.
_user\guide/scripts · high confidence
Removed legacy database driver files
The \system/drivers\ directory has been deleted, removing the legacy database adapter classes for MySQL, MySQLi, MS SQL Server, PostgreSQL, SQLite, and ODBC, as well as the base \DB\_driver\ and \DB\_active\_record\ classes. This removes the old database abstraction layer from the application.
system/drivers · high confidence
Security
Added .htaccess and index.html to system directory to prevent directory access
A new .htaccess file has been added to the system directory to block public access to its contents using Apache 2.4+ safe deny statements. Additionally, an index.html file has been introduced in the same directory to return a 403 Forbidden response, ensuring that direct access to the system folder is prevented if the application is installed in a web root.
system · high confidence
Added directory access protection for database drivers
A new index.html file has been added to the system/database/drivers directory. This file returns a 403 Forbidden status, preventing direct browser access to the directory contents and protecting sensitive database driver files from unauthorized viewing.
system/database/drivers · high confidence
Architecture
Core framework files reorganized into system/core
The framework's core classes—including Benchmark, CodeIgniter, Common, Config, Controller, Hooks, Input, Lang, Loader, Log, Output, Router, Security, URI, and Utf8—have been moved into the system/core directory. This structural change groups all internal framework components together, separating them from application-level libraries and helpers, which should not affect existing applications but may require updates to any code that directly included or referenced these files by their previous paths.
system/core · high confidence
Database layer refactored into new class structure
The database component has been reorganized into a new class hierarchy. The core database loader (DB.php) now handles configuration loading, DSN parsing, and driver instantiation, while the database cache logic is handled by a dedicated CI\_DB\_Cache class. The base driver, query builder, forge, result, and utility classes have all been restructured into their own dedicated files (DB\_driver.php, DB\_query\_builder.php, DB\_forge.php, DB\_result.php, DB\_utility.php), providing a cleaner separation of concerns and improved maintainability for database interactions.
system/database · high confidence
Behavioural changes
Added full-width view toggle and cookie-based navigation state for the user guide
The theme's JavaScript was updated to include a 'Full Width' toggle button that allows users to hide the side navigation bar and expand the content area. This state is persisted using a 'ciNav' cookie, ensuring the user's preference is remembered across sessions. The script also handles responsive layout adjustments, showing or hiding the side navigation based on screen width and the stored cookie state.
_user\_guide\_src/source/\_themes/sphinx\_rtd\theme/static/js · high confidence
Comprehensive bug fixes and security improvements across all libraries
This release addresses numerous bugs and security vulnerabilities across the framework's core libraries. Key improvements include enhanced XSS cleaning in the Security library to block malicious scripts and data URIs, and stricter file upload validation in the Upload library to prevent MIME-type injection. The Email library now supports TLS/SSL connections and includes fixes for header formatting and attachment handling. The Form Validation library has been improved with new rules (e.g., valid\_mac, is\_unique) and better error messaging. Other fixes include correcting the Pagination library's handling of page numbers and anchor attributes, fixing the Image library's transparency and watermarking issues, and resolving routing errors for subfolders. The Zip library was rewritten for better performance, and the Profiler was updated to display POST data and query times. Additionally, the Migrations library was introduced to manage database schema changes.
system/libraries · high confidence
Migration to a new user guide structure
The legacy HTML-based user guide has been replaced with a new documentation system. This change removes the old static HTML files for all library references, including the Benchmark, Calendar, Config, Email, Encryption, File Uploading, Image Manipulation, and Input classes, among others, signaling a shift in how the framework's documentation is generated and served.
_user\guide/libraries · high confidence
New Session library with PHP 8 compatibility wrappers
The Session library has been refactored to support PHP 8. A new \CI\_Session\ class manages session initialization and configuration, delegating to driver implementations via a wrapper strategy. Two new wrapper classes, \OldSessionWrapper\ and \PHP8SessionWrapper\, are introduced to handle differences in the \SessionHandlerInterface\ between PHP versions, ensuring consistent behavior across PHP 5, 7, and 8. The \CI\_Session\_driver\_interface\ and \SessionUpdateTimestampHandlerInterface\ are added to define the contract for session drivers, allowing for extensible and version-specific session handling.
system/libraries/Session · medium confidence
Refactored and modernized core helper files
The helper files in system/helpers have been refactored to modernize the codebase. This includes updating headers to the MIT license and adding function existence checks. Specific changes include adding the 'img\_class' option to the CAPTCHA helper, supporting arbitrary attributes in the 'anchor\_popup' function of the URL helper, and updating the 'create\_captcha' function to use 'random\_int' for better randomness. The download helper now supports MIME type detection and handles Android 2.1 specific headers. The array helper's 'element' and 'elements' functions have been improved to handle default values and array inputs more robustly.
system/helpers · high confidence
Removal of core library initializers
The automatic loading and instantiation of several core libraries—specifically Calendar, Email, Encrypt, Image Library, Pagination, Parser, Session, Trackback, Unit Test, Upload, Validation, XML-RPC, and XML-RPCs—have been removed from the system's initialization process. This change means these components will no longer be loaded by default, requiring explicit configuration or manual instantiation if they are needed.
system/init · high confidence
Removal of default application configuration files
The default configuration files for the application—specifically config.php, database.php, and mimes.php—have been removed from the system/application/config directory. This change eliminates the pre-configured settings for base URL, database connectivity, and MIME type mappings, requiring users to provide their own configuration files or rely on system defaults.
system/application/config · medium confidence
Removal of legacy HTML user guide pages
The entire legacy HTML-based user guide in the general section has been removed. This includes pages for alternative PHP syntax, ancillary classes, auto-loading resources, base classes, caching, changelogs, controllers, creating libraries, credits, and error handling. This change likely reflects a migration to a new documentation system (such as Sphinx or Markdown), rendering the old HTML files obsolete.
_user\guide/general · high confidence
Removal of legacy HTML-based helper documentation
The static HTML documentation files for the Array, Cookie, Date, Directory, File, Form, HTML, Security, and String helpers have been removed from the user guide. This change indicates a migration away from the previous manual format, likely to a new documentation system or structure, as all listed helper pages are deleted in this diff.
_user\guide/helpers · high confidence
Removed default error template files
The default error template files for 404, database, general, and PHP errors have been removed from the application. This change eliminates the built-in HTML/CSS error pages, meaning the application will no longer render these specific error views by default.
system/application/errors · high confidence
Removed default welcome message view
The default welcome message view template (welcome\_message.php) has been removed from the application's view directory. This eliminates the default landing page that previously displayed a 'Welcome to Code Igniter' message with associated styling and instructions for new users.
system/application/views · high confidence
Removed legacy HTML user guide pages
The static HTML files for the CodeIgniter user guide overview section (including at\_a\_glance, features, appflow, mvc, goals, and index) have been removed. This change reflects the migration from the old HTML-based documentation to a new Sphinx-managed user guide system, as indicated by the commit messages and the deletion of these specific HTML files.
_user\guide/overview · high confidence
Removed legacy scaffolding view templates
The legacy scaffolding view templates (add, delete, edit, footer, header, no\_data, stylesheet.css, and view) have been removed from the system. This eliminates the default scaffolding UI that was previously rendered by these PHP and CSS files, meaning the framework will no longer generate these specific interface elements for database-driven pages.
system/scaffolding/views · high confidence
Replaced the legacy HTML-based user guide with a new documentation structure
The previous static HTML user guide files (index.html, license.html, toc.html, and userguide.css) have been removed. This change reflects a shift away from the old manual format, likely to accommodate a new documentation generation system or structure, as indicated by the removal of these specific legacy files.
_user\guide · high confidence
Standardized HTML structure in system directory index pages
The index.html files in the system/fonts and system/language directories have been updated to include a proper \<!DOCTYPE html\> declaration, an \<html lang="en"\> root element, and a closing \</p\> tag for the 'Directory access is forbidden' message, replacing the previous minimal HTML structure.
system/fonts, system/language · medium confidence
Updated English language files for form validation, FTP, migration, and other core components
The English language files for form validation, FTP, migration, profiler, pagination, and unit testing were added or updated with new or corrected error messages and labels. Additionally, the scaffolding and validation language files were removed, and the calendar, date, database, email, image library, and upload language files were updated with new keys, fixed typos, and improved error descriptions. The index.html file in the English language directory was also updated to use modern HTML5 structure.
system/language/english · high confidence
Updated MySQLi database driver for PHP 8.1 compatibility
The MySQLi database driver has been updated to ensure compatibility with PHP 8.1. This update includes adjustments to error handling modes and connection logic to accommodate changes in the PHP 8.1 release, ensuring stable database interactions for users upgrading their PHP environment.
system/database/drivers/mysqli · high confidence
Updated documentation theme CSS for improved layout and mobile responsiveness
The \sphinx\_rtd\_theme\ static CSS files (\badge\_only.css\, \citheme.css\, \theme.css\) have been updated to improve the visual consistency and layout of the user guide. Key changes include enabling word-wrapping in tables, adjusting the pulldown menu styling and column layout, and hiding the pulldown menu on mobile devices (screens under 768px) to improve mobile usability. Additionally, the theme's color palette and typography have been refined for better readability and print formatting.
_user\_guide\_src/source/\_themes/sphinx\_rtd\theme/static/css · medium confidence
Updated to Sphinx ReadTheDocs theme
The user guide now uses the 'sphinx\_rtd\_theme' for rendering documentation pages. This introduces a modern, responsive layout with a collapsible side navigation, a mobile-friendly pulldown menu for table of contents, and updated footer and breadcrumb components. The theme includes its own license file and configuration, replacing the previous theme structure.
_user\_guide\_src/source/\_themes/sphinx\_rtd\theme · high confidence
Test coverage
Add compatibility layer tests for hash, mbstring, password, and standard functions; Add database configuration mocks for MySQL, MySQLi, PostgreSQL, and SQLite; Add unit test infrastructure with VFS-based test environment; Add unit tests for the database Query Builder; Added PDO database configuration mocks for MySQL, PostgreSQL, and SQLite; Added database schema mock for unit tests; Added mock autoloader and test case base classes; Added mock classes for testing internal library methods; Added mock database class for testing; Added mock database driver classes for testing; Added mock database driver for testing; Added mock implementations for core framework functions and classes; Added unit tests for CodeIgniter bootstrap constants; Added unit tests for all CodeIgniter helpers; Added unit tests for core framework classes; Added unit tests for core libraries; Added unit tests for database connection handling.
Dependencies
Add Composer configuration for CodeIgniter framework
The project now includes a composer.json file that defines the CodeIgniter framework as a project-type package, requiring PHP 5.4.8 or higher. It specifies suggested packages for improved randomness, configures PHPUnit and vfsStream as development dependencies, and includes scripts for running code coverage tests.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 49 → 49 (-0.1)
- Rubric changed (rubric-2026.08.18 → rubric-2026.08.19) — scores are not directly comparable.
Lenses
- Code Health 70 → 70 (+0.0)
- Architecture 100 → 100 (+0.0)
- Maturity 45 → 45 (+0.0)
- Readiness 46 → 46 (+0.0)
- Security 57 → 57 (+0.0)
- Accessibility 52 → 52 (-0.4)
Findings
- No change — the same findings as the prior survey.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
bcit-ci/CodeIgniter was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 5 August 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 3658d731eaabe6117298a105ffb5b9dd59e190ce — the exact code this score is about.
- Scored under rubric-2026.08.19 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer latest.