CMSB v3.78 Beta Released (PHP 8.1 Required, Plugin and Debug Tools)
5 posts by 3 authors in: Forums > CMS Builder
Last Post: Yesterday at 7:25pm (RSS)
By Dave - Friday at 1:05pm
Hi everyone,
We've just released v3.78 beta! We're already running this version on our site, and it has some new plugin and debugging features.
What's New
- PHP 8.1+ Required: PHP 8.0 reached end-of-life in December 2023 and no longer receives security updates
- Plugins > Disable Plugins: New toggle switch to temporarily disable all plugin hooks for troubleshooting
- Admin > General > Admin Debug Mode: New toggle lets admins see debug information in the view-source footer of HTML pages (see below)
- Modernized Plugin API with 33% performance improvement and support for PHP 8.1 first-class callables (existing plugins work unchanged)
- Developer Console: Long data values now scroll within 75px containers for better readability
- A number of bug fixes and other UI improvements.
The updated debug footers make it easier to see where the current page is loading additional files from, the available plugin hooks, and the page load impact of existing plugins.
Here's an example of what you'd see on a frontend page when you view-source and scroll to the bottom when logged in as an Admin with Debug Mode on. Especially for when using permalinks, this lets you track down the files to edit very quickly.
This is for: https://interactivetools.com/showcase/
<!-- DEBUG FOOTER (visible to admins only)
PERFORMANCE PLUGIN ACTIVITY
Execution: 0.007s Total Hooks: 11 calls
Memory: 1.18 MB (peak: 1.39 MB) Total Time: 0.001s
CMS Version: 3.78 (build 2901) Avg/Hook: 0.0ms
Included Files Available Plugin Hooks (call count)
--------------------------------------------------------- -----------------------------------
/showcase/index.php
/_init.php
/showcase/_showcase_functions.php
/_footer.php
Plugin Hooks Called Hook Calls Avg Time Total Time
--------------------------------------------------------- ------------------------------------ ----- -------- ----------
/cmsb/plugins/websiteMembership/websiteMembership.php:37 viewer_postinit 1 0.6ms 0.001s
/cmsb/plugins/facebookLogin/facebookLogin.php:23 _websiteLogin_init.pre_actionHandler 1 0.0ms 0.000s
/cmsb/plugins/permalinks/permalinks.php:29 viewer_output_rows 5 0.0ms 0.000s
/cmsb/plugins/permalinks/permalinks.php:27 init_complete 1 0.0ms 0.000s
/cmsb/plugins/simpleCart/simpleCart.php:18 viewer_postinit 1 0.0ms 0.000s
/cmsb/plugins/simpleCart/customCart.php:78 viewer_postinit 1 0.0ms 0.000s
/cmsb/plugins/facebookLogin/facebookLogin.php:24 _websiteLogin_init.pre_actionHandler 1 0.0ms 0.000s
--------------------------------------------------------- ------------------------------------ ----- -------- ----------
TOTAL 11 0.0ms 0.001s
-->
Here's an example of the updated debug footer you'll see on a CMS page. Very useful for when you want to know which plugin hooks are available and where.
This is for: /cmsb/admin.php?menu=test
<!-- DEBUG FOOTER (visible to admins only)
PERFORMANCE PLUGIN ACTIVITY
Execution: 0.004s Total Hooks: 121 calls
Memory: 621.98 KB (peak: 692.38 KB) Total Time: 0.001s
CMS Version: 3.78 (build 2901) Avg/Hook: 0.0ms
Included Files Available Plugin Hooks (call count)
----------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------
/cmsb/admin.php admin_prelogin, admin_postlogin
/cmsb/lib/init.php init_complete
/cmsb/lib/common.php admin_getRequestedAction (3), includeCDN (17)
/cmsb/lib/schema_functions.php post_loadSchema (3)
/cmsb/lib/admin_functions.php userSectionAccess (42), userHasFieldAccess (3)
/cmsb/lib/adminUI_functions.php adminUI_args, admin_footer_preButtons
/cmsb/lib/menus/default/actionHandler.php section_init, viewerOnly_allowed_actions, section_preDispatch
/cmsb/lib/menus/default/common.php
/cmsb/lib/menus/default/list.php list_postselect, list_advancedCommands, list_postAdvancedSearch, list_preListTable, list_postListTable_inner
/cmsb/lib/menus/default/list.php (cont'd) list_postListTable
/cmsb/lib/menus/default/list_functions.php list_where, record_access_where, list_orderBy, list_addSelectExpr, list_having, list_showListSchema
/cmsb/lib/menus/default/list_functions.php (cont'd) list_showListRecords, listHeader_checkAll, listHeader_thAttributes (2), listHeader_displayLabel (2), listRow_record
/cmsb/lib/menus/default/list_functions.php (cont'd) listRow_trStyle, listRow_trClass, listRow_displayValue (2), listRow_tdAttributes (2), listRow_showView
/cmsb/lib/menus/default/list_functions.php (cont'd) listRow_showModify, listRow_showErase, listRow_actionLinks, listRow_html
/cmsb/lib/viewer_functions.php viewer_postinit, viewer_link_field_content, viewer_output_rows
/cmsb/lib/menus/header.php headers, admin_head
/cmsb/lib/menus/header_functions.php tableList, menulinks_array, menulinks_myAccount (2), menulinks_rowHtml (70)
/cmsb/lib/menus/header_css.php
/cmsb/lib/menus/footer.php execute_seconds, admin_footer, admin_footer_final
Plugin Hooks Called Hook Calls Avg Time Total Time
----------------------------------------------------------------- -------------------------- ----- -------- ----------
/cmsb/plugins/simpleCart/simpleCart.php:17 admin_postlogin 1 0.4ms 0.000s
/cmsb/plugins/reportBuilder/reportBuilder.php:23 menulinks_rowHtml 70 0.0ms 0.000s
/cmsb/plugins/reportBuilder/reportBuilder.php:21 admin_postlogin 1 0.0ms 0.000s
/cmsb/plugins/newletterBuilder/newsletterBuilder_cmsMenus.php:7 listRow_displayValue 2 0.0ms 0.000s
/cmsb/plugins/developerConsole.php:26 admin_footer_final 1 0.0ms 0.000s
/cmsb/plugins/newletterBuilder/newsletterBuilder_cmsMenus.php:10 userHasFieldAccess 3 0.0ms 0.000s
/cmsb/plugins/simpleForum/simpleForum.php:40 listRow_actionLinks 1 0.0ms 0.000s
...
/cmsb/plugins/permalinks/permalinks_cmsMenus.php:20 listRow_displayValue 2 0.0ms 0.000s
/cmsb/plugins/permalinks/permalinks_cmsMenus.php:19 adminUI_args 1 0.0ms 0.000s
/cmsb/plugins/reportBuilder/reportBuilder.php:24 admin_head 1 0.0ms 0.000s
----------------------------------------------------------------- -------------------------- ----- -------- ----------
TOTAL 121 0.0ms 0.001s
-->
The full changelog for this release is as follows:
*** June 12, 2025 - Version 3.78 (PHP 8.1 Required, Plugin and Debug Tools)
SERVER REQUIREMENTS (Since Jun 2025): PHP 8.1+ and MySQL 5.7+ (or MariaDB 10.2+)
IMPORTANT: PHP 8.1 NOW REQUIRED
- PHP 8.1+ is now required (PHP 8.0 reached end-of-life in December 2023 and no longer receives security updates)
- Upgrading provides ongoing security patches and improved performanceNEW FEATURES
- Admin > General Settings: Added "Admin Debug Mode" toggle for development diagnostics
- Plugins > Disable Plugins: New toggle switch to temporarily disable all plugins for troubleshooting
- Enhanced Debug Footer: Performance monitoring for developers
- Displays execution time, memory usage, and per-plugin hook performance metrics
- Shows time spent in each plugin hook to identify bottlenecks
- Lists all available plugin hooks on current page
- Works in both admin interface and frontend pagesPLUGIN SYSTEM IMPROVEMENTS
- Modernized Plugin API with 33% performance improvement
- New method names (old methods still work):
- Plugin::on() replaces addAction()/addFilter()
- Plugin::action() replaces doAction()
- Plugin::filter() replaces applyFilters()
- Full backward compatibility - existing plugins work unchanged
- Added support for PHP 8.1 first-class callables
- Traditional: pluginAction_addHandler('functionName', 'admins')
- Modern: pluginAction_addHandler(functionName(...), 'admins')MINOR CHANGES
- Developer Console: Long data values now scroll within 75px containers for better readability
- Source Files: Converted all line endings from Windows (CRLF) to Unix (LF) formatFOR PROGRAMMERS
- Server::pathToUrl(): Converts absolute file paths to web URLs, with optional ?t=timestamp for cache-busting
- adminUI(): New BUTTONS_HEADER and BUTTONS_FOOTER arrays for positioning action buttons above or below content
- adminUI(): Button definitions now accept 'rawHtml' => '<custom html>' for complex button layouts
- adminUI_toggleSwitch(): Creates Bootstrap-style toggle switches for binary settings in admin formsBUG FIXES
- formatBytes(): Fixed inconsistent decimal display and missing thousands separators in file sizes
- Database Editor: Fixed menu cache not updating after manually creating schema tables
- Admin > Server Info: Improved display of very long open_basedir paths with proper line breaks
- Field Editor: Fixed default values incorrectly showing for blank upload info fields
- Related Records: Fixed colspan issue in "No records found" messages
- Admin > Server Info: Fixed error when php_ini_loaded_file() returns false
- Misc code and other minor improvements
You can download the latest beta here:https://www.interactivetools.com/download/
Please post (or email) any feedback, questions, concerns, or bugs you find. Your help with beta testing allows us to release new features even faster.
Thanks. We look forward to your feedback! :)
interactivetools.com
By kitsguru - Sunday at 6:49am
Just checked out the showcase page. The category links in the left column are broken. Always displays all records.
yaadev.com
By Dave - Yesterday at 1:32pm
Thanks Jeff, That was actually related to a very obscure bug, so we found it and fixed it.
interactivetools.com
By Dave - Yesterday at 1:51pm - edited: Yesterday at 1:52pm
Hi All,
We just released v3.78 beta 2! This update has some minor bug fixes (include the above issue) and some UI improvements for Debug Footers:
Here's what we updated in the header:
- Total plugin time shows as seconds and percentage, so you can see at a glance how much of your page load is spent in plugins
- PHP settings show max seconds, memory, and OpCache status, so you know what you're working with and how long you need to wait for OpCache to refresh the cache after changes
- Remote IP is displayed to make it easy to copy and paste when writing debug code, e.g., if ($_SERVER['REMOTE_ADRR'] === '156.51.31.129') { ... }
<!-- DEBUG FOOTER (visible to admins only)
PAGE PERFORMANCE PHP SETTINGS SYSTEM
---------------- ------------ ------
Total Time: 0.007s PHP Version: 8.4.8 CMS: v3.78 (build 2902)
- CMS Core: 0.006s (92%) Max Time: 120s Remote IP: 156.51.31.129
- Plugins: 0.001s (8%) Max Memory: 128M
Peak Memory: 1.40 MB OpCache: On (2s)
And under Plugin hooks we added a Total (ms) column to make it extra clear what's what without having to do mental math to convert averages into totals. For reference, 1.000 ms equals 0.001s.
Plugin Hooks Called Hook Calls Avg Time Total (ms) Total (s)
--------------------------------------------------------- ------------------------------------ ----- ---------- ---------- ---------
/cmsb/plugins/websiteMembership/websiteMembership.php:37 viewer_postinit 1 0.495ms 0.495ms 0.000s
/cmsb/plugins/facebookLogin/facebookLogin.php:23 _websiteLogin_init.pre_actionHandler 1 0.025ms 0.025ms 0.000s
/cmsb/plugins/permalinks/permalinks.php:29 viewer_output_rows 5 0.003ms 0.013ms 0.000s
/cmsb/plugins/permalinks/permalinks.php:27 init_complete 1 0.005ms 0.005ms 0.000s
/cmsb/plugins/simpleCart/simpleCart.php:18 viewer_postinit 1 0.003ms 0.003ms 0.000s
/cmsb/plugins/simpleCart/customCart.php:78 viewer_postinit 1 0.001ms 0.001ms 0.000s
/cmsb/plugins/facebookLogin/facebookLogin.php:24 _websiteLogin_init.pre_actionHandler 1 0.000ms 0.000ms 0.000s
--------------------------------------------------------- ------------------------------------ ----- ---------- ---------- ---------
TOTAL 11 0.049ms 0.542ms 0.001s
Thanks to these tools, we’ve already halved our CMS load time by half, by moving slower plugin setup from the per-page hook (admin_postlogin) into the plugin menu initialization (plugin_menu_init) and applying a few other tweaks.
Give it a try and share any feedback; otherwise, we’ll publish v3.78 as stable within the next few days.
Thanks for your help!
interactivetools.com
Awesome :-)
Does this release include the inclusion of columnEncryptionKey into the Env variables? And, the return of the login_isValidLogin hook (or similar) so we can add third party 2FA?
Cheers
Rob