CMSB v3.64 Released - MySQL 5.7+ now required

6 posts by 3 authors in: Forums > CMS Builder
Last Post: January 15   (RSS)

By Dave - December 8 - edited: January 3

Hi all!

We're pleased to announce the arrival of the v3.64!

We've increased the version of MySQL required to v5.7.32+ so be sure to check your version before you upgrade.  We also support MySQL 5.7+ compatible database servers (MariaDB, Percona, etc.).  In general, if your database server has been updated in the last 3 years it should be compatible.

This is mostly a maintenance release, but also sets us up to add more features in future that take advantage of newer MySQL features.  More on that to come!  

Here's the complete changelog:

*** December 8, 2023 - Version 3.64 (MySQL 5.7 Required)

SERVER REQUIREMENTS: PHP 8.0+ and MySQL 5.7+ (or MariaDB 10.2+)

- This version now requires: MySQL 5.7.32+ or MariaDB 10.2+ (increased from MySQL 5.5+)
- Please check with your hosting provider to ensure you have these installed BEFORE upgrading.

- Admin Menu > Security: Added option to ignore PHP development warnings (E_STRICT, E_DEPRECATED)
- Admin Menu > Server Info: Display PHP Caching Modules to help debug caching issues
- Admin Menu > Server Info: Display CMS Folder and chroot status (to help debug filesystem issues)
- Section Editors: Renamed "Section Editors" to "Database Editor" in CMS Setup menu
- Database: Newly created fields have default values in MySQL now so values don't have to be specified on INSERT
- Database: New createdDate and updatedDate fields now default to current datetime (not 0000-00-00 00:00:00)
- Database: "MySQL Type" is now displayed in its own column under: Admin > Database

ZenDB Improvements
- ZenDB: Added DB::identifier() for `quoting` and escaping MySQL identifiers such as table and column names
- ZenDB: Added $row->toArray() to get an array structure of HTML-encoded values
- ZenDB: Added $resultSet->toArray() to get an array structure of HTML-encoded values
- ZenDB: Added $resultSet->getColumn() to get values from a single column
- ZenDB: Added $resultSet->indexBy() for a column to record map, e.g. $emailToRecord = $resultSet->indexBy('email')
- ZenDB: Added $resultSet->groupBy() for a nested column to record map, e.g. $cityToUsers = $resultSet->groupBy('city')
- ZenDB: Brackets and "get" prefix are now optional for chainable methods, e.g. ->getValues() can be called as ->values

BUG FIXES & Minor Changes
- PHP 8.2 compatibility fixes
- Install: Fixed issue where restoring from backup on install required new admin account info to be entered
- MySQL 8.0: Fixed error when SET innodb_strict_mode was called without SESSION_VARIABLES_ADMIN access
- Error Logging: Improved how error logging catches and logs fatal errors that halt script execution
- View Menus & Tab Groups: Fixed issue where first tab in a tab group wouldn't display currently
- View Menus & Tab Groups: Fixed issue where upload lists wouldn't automatically resize on tab switch
- View Menus: Fixed issue where non-displaying fields with internal category menu fields were incorrectly showing
- View Menus > Advanced Commands: Resolved double HTML-encoding issue that caused actions to not function correctly
- Misc Code and other minor improvements.

You can download the latest version here:

Please post any feedback, questions, or bugs you find!

Thanks! :)

Dave Edis - Senior Developer

By Dave - December 8 - edited: January 3

And... We added one more post-release fix an open_basedir() warning that could popup on some servers under: Admin > General.

You can download here:


Dave Edis - Senior Developer

By Dave - January 3 - edited: January 3

Ahh yes, you're right.  I've fixed that so it's not confusing for anyone.  Thanks! :-)

Dave Edis - Senior Developer

I spotted a problem when upgrading. Because my database name contained hyphens, it was no longer recognised by the system.

To fix this I found the line in the file:


        if (!preg_match('/^\w+$/', $identifier)) {
            throw new InvalidArgumentException("Invalid database name '$identifier', can only contain (a-z, A-Z, 0-9, _)");

and change it to

if (!preg_match('/^[\w\-]+$/', $identifier)) {

So that hyphens are recognised in the database name.

Thanks Zaba!  I've updated that code for the next release.  Cheers!

Dave Edis - Senior Developer