CMSB v3.78 Beta Released (PHP 8.1 Required, Plugin and Debug Tools)

5 posts by 3 authors in: Forums > CMS Builder
Last Post: 2 hours ago   (RSS)

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 performance

NEW 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 pages

PLUGIN 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) format

FOR 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 forms

BUG 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! :)

Dave Edis - Senior Developer
interactivetools.com

Just checked out the showcase page. The category links in the left column are broken. Always displays all records.

Jeff Shields
yaadev.com

Thanks Jeff,  That was actually related to a very obscure bug, so we found it and fixed it.

Dave Edis - Senior Developer
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