Posts by "David Leffler"

Exponent in 2024?

What does the new year hold in store for Exponent? Hard to say but implementations and usage has dropped off. There will be a patch or version release near the beginning of 2024. In addition to updating many 3rd party libraries, it will include:

  • add multi-column form controls for BS 4/5
  • add meta_fb to events so they offer the attached event image when pasted to Facebook
  • better date sorting forms showall view
  • add mutlti-select option for dropdown controls in form design
  • regression fix (v271p2) site crash on older php versions due to forms coding error
  • regression fix (v271p2) upgrade could sometimes automatically be triggered
  • fatal error forms view with order dropdown all
  • regression fix old file manager image editor

It should be noted all PHP versions prior to v8.1 are considered obsolete though many servers are still running them. The biggest issue is recent 3rd party libraries will only support newer versions of PHP (v8+). That being said, v2.7.2 will be the last Exponent version to support PHP v5 & v7. Though Exponent v3.0.2 will have deprecated support for PHP v7.4 & v8.0, they will likely be dropped in the future. There are NO planned patches or updates to the 2.x branch after the next release 

    PHP Version        
Exponent   5.2 5.3 5.4 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
  3.0.2                   x x x x x
  3.0.1                   x x x x  
  2.7.2         x x x x x x x x x x
  2.7.1         x x x x x x x x x  
  2.7.0         x x x x x x x x    
  2.6.0         x x x x x x x      



2.5.1p1         x x x x x x        
2.5.0         x x x x x          
2.4.2       x x x x x            
2.3.7   x x x x x x              
2.3.3   x x x x                  
2.3.1 x x x x x                  
2.2.1 x x x x                    
2.0.7 x x x                      
2.0.0 x x                        
  x - Deprecated or Support not fully tested        

Plans for v2.7.1patch3/v3.0.1patch3

Giving you a summer forecast...the main things we'll be working on this summer should include the following of  which several will manifest itself as a patch #3:

  • Multi-column form controls - this will only be available for Bootstrap 4 & 5 and then only with standard labels (not side labels). This feature is mostly completed, but needs some testing in all scenarios before release.
  • Cleaner checkbox and radio controls - again only for Bootstrap 4 & 5, but should benefit Bootstrap 3 and maybe Traditional or YUI controls. This will include an attempt to correctly display the label on the requested side of the control. We will also attempt to implement organic 'inline' controls instead of using tables and columns. Additionally an attempt to implement a 'required' option for a radio group. P.S. we added a 'required' checkbox option in v2.7.1/v3.0.1 patch #2.
  • TinyMCE v6 - perhaps we'll upgrade our v5 support with the latest v6 release. Though it doesn't have as many features as v5. A reminder we added the TinyMCE v5 option in the last version.
  • CKEditor v5 - now that CKEditor v4 is 'End or Life' we should do the heavy lifting required to implement v5? Though it's a different paradigm with seemingly fewer features, it is the future. Must come up with a method to include our custom 'Insert Field' plugin!
  • Bootstrap v5.3 - though just released as final and working locally, our swatches haven't been updated to add the new 'dark' mode feature yet.


Exponent is still hanging on with at least one update and a new major version planned for 2023! Some features you can expect within v2.7.1 in addition to rolling up the previous patch to 2.7.0 include:

  • PHP v8.2 support
  • activate file manager trash feature
  • allow file manager theme selection from file manager preferences
  • add tinymce v5 editor (functional with new tinymce v4/v5 file manager implementation)
  • add optional selection of store home page, or page after adding item to cart
  • update non-bs datatables views to use standard styling instead of jqueryui
  • add object type name to db manager unserialized info
  • update control types for better styling, includes upgrade script
  • add/fix maintenance view countdown clock (never worked), use proper theme framework view
  • add asc/desc to sort forms records after grouping
  • add forms portfolio view user dropdown filter option
  • add option to export all form columns in CSV instead of only those selected for display
  • add smtp option to only use the smtp username as 'from' address for very strict smtp servers

Some fixes in this patch will include:

  • regression fix (v270p1) calendar month selector popup
  • fix tinymce5 support in bs4/5 broken & had no file manager support
  • fix multiple issues with tinymce/tinymce5 custom configurations
  • fix editing existing blog, filedownload, or news item (view) may crash on php v8 
  • clean form control styling and processing, esp. bs5
  • update expUnserialize function to include 'message' in countdownController
  • fix multiple errors in countdownController default view and with newer smarty/php versions
  • fix file manger root files and folders were locked for super-admins and coundn't be removed
  • remove links from Workflow Revisions list to prevent issues
  • (v270) regression fix Forms search cumulating records issue
  • fix bootstrap.js v5 cdn wrong version
  • fix extraneous datatables styles were being loaded
  • fix turning off antispam causes views with antipam to crash (reset password, etc...)

Additionally, many 3rd party libraries will be updated.

Furthermore, there will be a new major version 3.0.0alpha1 released as unstable which completely removes support for obsolete PHP versions (5.6, 7.0, 7.1, 7.2 & 7.3). This deprecation will also take with it some double-versioned libraries required to support those obsolete PHP versions. Otherwise, they'll be no code changes from the 2.7.1 release except a firm requirement to run on PHP version 7.4, 8.0, 8.1, or 8.2 and a slight reduction is size.

Exponent in 2020

2020Yes, Exponent CMS is still alive and being updated. Though development has taken a much slower pace, bugs are still being squashed and new features are being added. You can expect v2.5.1 to be released by the end of winter 2020 (March). This is actually a minor patch update to v2.5.0patch2, but due to the copyright being updated to 2020 it affects almost every file and would be a very large patch, therefore it'll be a full version release.

What are some changes can you expect from Exponent CMS in 2020?

  • Become PHP v7.4 compliant...Exponent v2.5.1 will not be fully PHP v7.4 compliant and may not even run under a server using that version of PHP
  • Attempt to integrate Twitter Bootstrap 5 when released. There is no date set for its release, but when integrated will likely move the Exponent version to 3.0.x.
  • Remove PHP v5.6, v7.0 and v7.1 compatibility. Many 3rd party libraries no longer work under these obsolete (unsupported and no longer updated) PHP versions.
  • Become MySQL v5.7 'Strict' Mode compliant. Exponent currently requires turning the default 'strict' mode of MySQL v5.7.x off or Exponent will NOT be able to create ANY new objects such as modules, items, or users. Some web providers will not modify their MySQL settings to allow this. This will be a pretty labor intensive code update and may require overhauling much of the code. Therefore it may be as easy to move to a PDO database interface.

Exponent in 2018

New Year 2018As we wind down 2017 and move into 2018, Exponent version 2.4.2 is being polished for release. What does the future of Exponent CMS hold in store? If you've read recent posts (here and here), you'll get a feel for what you can expect in the next version. So how can you prepare for the next version of Exponent?

  • Ensure your web server is running at least PHP version 5.5 (though v7.x is highly recommended for speed) since the next version of Exponent will NOT run/upgrade on older versions of PHP since they are so obsolete. Therefore, if your web server is ancient and running a long-ago version of PHP, do NOT attempt to update/upgrade your site since it will come to a screeching halt!
  • Decide if you still want to support obsolete browsers. We will still include the 'shims' used to support very old browsers, but that feature must be turned on, but you'll have that opportunity during the upgrade process. An additional factor is that we've moved to jQuery v3. If you still need support for older versions of jQuery, you'll also want to turn on the obsolete browser support.
  • And though Bootstrap v4 and FontAwesome v5 won't be fully integrated, nor included with the next release (since Bootstrap v4 hasn't been release yet itself), we have most of the underpinnings in place. Nonetheless, we'll have a special Christmas gift of a 'preview addon' which will give you a feel for what a Bootstrap v4 theme will look like. This MAY give you a head start into designing or converting some existing themes.

As a note for which supported theme frameworks align with which library versions:

  • Bootstrap v2 is tied to FontAwesome v3 and autoloads Normalize.css v7
  • Bootstrap v3 is tied to FontAwesome v4 and Normalize.css v3.0.3 is integrated into Bootstrap v3
  • Bootstrap v4 will be tied to FontAwesome v5 and an enhanced variation of Normalize.css (Reboot) in integrated into Bootstrap v4 (all this is based on Bootstrap v4 stable not greatly changing from its beta2 release)

We wish you a Blessed 2018 and still strive to keep your Exponent web site in the modern age.

Integrating Bootstrap 4 into Exponent

TBootstraphe primary theme framework for Exponent CMS is Twitter Bootstrap, currently at version 3 (actually 3.3.7). The next Bootstrap release, version 4 should be available in the near future and is currently in the beta 2 stage. It would be good to integrate support for the Bootstrap 4 framework, but there are several obstacles:

  • Bootstrap 4 requires SASS/SCSS stylesheet compilation, where previous versions were based on LESS...and there is only one PHP based SCSS compiler available which chokes on some of our needed stylesheets. However, we've developed a 'hack' to compile them on the fly.
  • Bootstrap 4 also leans toward needing 'autoprefixer' support to add additional 'browser-specific' styles into the compiled stylesheets. There is currently no PHP based autoprefixer (except for some which require node.js be running on the server). This may not be an issue since most modern browsers are supposed to be moving away from vendor specific style properties.
  • Bootstrap 4 is a much greater departure (change) from the previous version (3) than in the past (e.g., v2 to v3). While not insurmountable, it will require updating a lot of Exponent code to produce compatible output for auto-generated form controls and menus, etc...

Now having said that, preliminary support for Bootstrap 4 (beta 2) is already being integrated into Exponent, which in turn also requires a new theme. Though the initial integration at this point is limited to functional navbars/menus and chrome, it is usable (if you can get past some of the odd styling on the page). It is expected this initial integration will be included in the next release of Exponent.

Once Bootstrap 4 is released as final AND we have fully integrated it with a functional theme, it will be released...most likely as Exponent v3. The roadmap to Exponent v3 will also throw off the shackles created by a need to support obsolete browsers and ancient PHP versions, both of which should not be used if security is of any importance. You can expect to see the next release of Exponent (either v2.4.1patch7, v2.4.2, or v3.0.0) around the end of the year.

PHP and Exponent in 2017 (and Browsers too)

PHP LogoThis article is a follow up to PHP AND EXPONENT IN 2016. Roughly one year after that previous article, PHP development is proceeding at breakneck speeds and we have seen two minor versions pass (though v7.2 is in release candidate status). Here's how it affects Exponent CMS.

The current release of Exponent (v2.4.1) is compatible with PHP v5.3 through v7.1. However, it is not compatible with PHP v7.2 (this will be corrected in the v2.4.2 release). The next release of Exponent (v2.4.2) will be compatible with PHP v5.5 through v7.2. We'll drop support for PHP v5.3 and v5.4 in that release because they are simply too insecure and should not be used in a production environment. And even though we will support PHP v5.5 in the next release, it is no longer recommended for production use since it was marked 'end of life' over one year ago. PHP v5.6 and v7.0 will be supported by their organization through the end of 2018, at which point only PHP v7.1 or later would be recommended. Another reason to remove old PHP version support in Exponent is that many of our 3rd party libraries simply no longer support ancient versions of PHP.

While we're on the subject of obsolete software, many browser software versions have also been termed 'end of life' and it is strongly encouraged they NOT be used! This would include Internet Explorer versions less than v11 (Edge in Windows 10 is considered Internet Explorer v12/v13). A beneficial side effect to this is that recommended browser versions are all now HTML5 compliant...which means that Exponent shouldn't need to use patches/tweaks to support HTML5 non-compliant browsers.Therefore, in the near future (though not in v2.4.2), we will drop support for obsolete/ancient browsers, which in turn should speed up page loading a bit.

Making your Custom Theme more Accessible

We're recently added better 'accessibility' support to Exponent so it may be used with a screen reader. This is mandated with some public website due to the Americans with Disabilities Act. While the code shipped with Exponent v2.4.0 includes these changes, they may need to be integrated into your custom theme. Though you can check your theme/subtheme templates and custom views with the ones we ship, here are some things to look for:

  • The theme/subtheme templates must contain a 'language' in the html tag
    • from
      <html lang="<?php echo (substr(LOCALE,0,2)) ?>">
  • any {img ...} tag found in any template view (.tpl file), must include a 'alt=xxx' entry
  • any button or input area with NO label, or any with only an icon must include 
     aria-label="{'button label'|gettext}"

While this is not an all-encompassing list, it will get you through most of the errors that an accessibility plugin for your browser would report

PHP and Exponent in 2016

PHP LogoThe primary scripting language used in Exponent CMS is PHP, just as with most other CMS packages such as W***P****, J***la, and D***pal. PHP is a scripting processor running on the web server which parses the PHP scripts to perform a task or output a page. Unlike javascript which is processed within the browser on the viewer's device. PHP development has been advancing at break-neck speed over recent months, and here's how it affects Exponent CMS.

Exponent CMS v2.0 was originally released supporting PHP version 5.2.1 or later, which at the time was v5.3.x. Support for PHP v5.4 was added in Exponent v2.0.7. Support for PHP v5.5 was added in Exponent v2.2.1. Support for PHP v5.6 was added in Exponent v2.3.1. Support for PHP version 5.2.x was DROPPED in Exponent v2.3.2 because several of the supporting libraries no longer supported such an old version of PHP. And support for PHP version 7.0, the current stable release was added in Exponent v2.3.7.

Most site administrators have little control over which version of PHP their web host server is running, but some hosts do offer a selection within their 'control panel' settings. Therefore, you have to trust your web host provider in keeping your PHP versions up to date since many of the updates remove security vulnerabilities. PHP version 5.2.x has been obsolete for quite some time. PHP version 5.3.x was termed 'end of life' meaning it was no longer updated in August 2014. PHP version 5.4.x was termed 'end of life' September 2015 and PHP version 5.5 reached 'end of life' a few months ago. With that being said, PHP versions 5.6.x and v7.0.x are the only recommended and supported versions available, both of which will be supported until at least late 2018. PHP version 7.1.x should be released before the end of 2016 and is in beta testing now.

Therefore, if you have a new enough version of Exponent to support a newer version of PHP, you should probably encourage your web host provider to move to it to prevent security attacks from harming your site or data. Furthermore, running PHP v7.0.x will give your site a tremendous speed increase because it is so much more efficient. The next version of Exponent (v2.3.9) will be released in a few days and supports PHP versions 5.3.x, 5.4.x, 5.5.x, 5.6.x, and 7.0.x and likely supports 7.1.x though testing isn't complete. You can expect Exponent to drop support for PHP v5.3.x very soon, with v5.4.x support not being provided too much longer either.

New Bootstrap3 Dynamic/Drag-n-Drop Form Designer

New Form DesignerThe new v2.3.8 Patch #4 contains an updated form designer for Bootstrap 3 based themes (sorry we're still running into issues on the non-Bootstrap 3 themes). This allows for much easier and quicker form creation and editing. Whereas the previous interface required going back and forth through various screens (page loads), everything now takes place on the main form designer page with updates being performed in the background. What's more...the form designer looks and operates very similar to the previous version.

To add a new control to the form: you simply select a control from the list of controls to the right (or you can change the theme style to place this list on the left if you use a left sidebar) and drag it onto the form in the location you wish to place it. This opens a dialog on the page to enter the details about that control...or you may cancel the action to add the control.

To move a control to a new location: you simply select the control and drag it either up or down and drop it into it's new place.

To remove a control from the form: you can simply select the control and drag it into the trash can above the list of available controls. You may also remove a control by clicking on the red 'delete' button on that control.

New Form Designer​To edit a control on the form: hover over the control and click on the 'edit' button to bring up the control details.

Some other new features include a button to remove the 'design grid' from the display to provide a better idea of what the form will actually look like (this feature is also available on the non-Bootstrap 3 form designer). We've also added a 'switch styles' button to switch between the two basic form styles of having the label above the control or the labels to the left of the controls

All in all this should be a great improvement for those users dealing with the form module.