v4.0 Release Notes
Release Date: 02 January 2025
Note: The primary focus of this release was to a) reach full PHP 8.x compatibility and b) reach full MySQL 8.x compatbility. All other aspects were secondary to those.
Downloading & Installing
The only official distribution site is Github. Check out the Installation page to get started.
Reporting Problems
For more information, support, or to discussion upcoming features, please visit our Support Forums.
Any and all issues discovered should be added to our our Issue Tracking System. Feature requests should be marked as such and not described as issues. Please remember to mark Feature Requests as requests and not bugs.
If you’re not familiar with submitting a bug, please read my post: How To Submit a Bug
New Features
- Added carbon to handle date/timezone processing
Fixes/Bugs Closed
- Updated array references, curly braces, and method signatures for PHP 8.x compatibility
- Applied database schema updates for mysql 5.6 compatibility
- Updated database calls for mysql 8.x compatibility - mostly bad date formats (0000-00-00)
Misc Changes/Improvements
- Removed the
/vendor
directory and let Composer handle it - Updated the phing build script to use updated versions of phploc and phpstan
- Removed ADODB as our needed functionality has moved into core PHP
- Updated jpgraph to a more recent version
- Cleaned up the Search module to use the hook_search properly
- Fixes to numerous views for tables (index), views, and similar to fix warnings
- Cleaned up a ton of PHP error log warnings
- Lots of other cleanups throughout, some provided by Opto in the old 3.4 branch
Open/Known Issues
- Removed the File Explorer from the Files module
- Removed the file versioning from the Files module
System Metrics
There are some core metrics that may be of interest to the geekier among us. We generate these by using ‘phing metrics’ using the unit_tests/build.xml file:
- Lines of Code: 64089 (9030 of comments, 55059 of code)
- Cyclomatic Complexity:
- Per Class: 18.48 (min: 1.0, max: 242.0)
- Per Method: 2.46 (min: 1.0, max: 64.0)
- Per Line of Code: 0.25
- Interfaces: 2
- Traits: 0
- Classes: 133 (128 Concrete, 5 Abstract)
- Lines of Code/Class: 84
- Class Constants: 6
- Methods: 1619 (48 static, 1571 non-static)
- Public: 1502
- Protected: 108
- Private: 9
- Lines of Code/Method: 6
- Functions: 203
- Constants: 72