PHPMaker 2023 is another huge upgrade from previous version, it includes a long list of new features. If you upgrade from v2021 or newer, there are no big changes. However, if you upgrade from version prior to v2019, please be reminded that v2019-2022 introduced some new features which are not fully compatible with old versions, make sure you read the following first:
Migrating to v2019
Migrating to v2020
Migrating to v2021
Migrating to v2022
Migrating to v2023
When opening an old project in v2023, PHPMaker will try to convert the changes for you. However, the conversion cannot be 100% and you'll need to do some updates yourself. Please read the follows carefully, review your code, update and test it before deploying the new scripts to your production server.
PHP >= 7.4
Requires PHP 7.4 or higher. Since security support for PHP 7.4 will end on 2022/11/28 (see Supported Versions on PHP official site), using PHP 8.x is highly recommended.
Bootstrap 5.2.1
PHPMaker 2023 uses Bootstrap 5.2.1, so the theme variables are different from previous versions. When opening an old project in v2023, PHPMaker will try to update the variables for you. In most cases it should be fine. If not, you should go to the HTML -> Theme tab to re-select a theme. If you have added any custom CSS styles in your project (under the HTML -> Styles -> User tab) for Bootstrap 4 or 5.1 previously, you may need to update your styles.
There are some major changes in Bootstrap 5.2, see Migrating to v5.2.
WebView2 Runtime
The default preview window (under HTML tab) now requires Webview2 Runtime, please install Webview2 Runtime to use the new preview window. The new code editor (introduced in v2022) also requires Webview2 Runtime to work.
Import Data
The import feature is greatly improved, please read Import Data for details. You can do much more with Page_Importing server event now, but the side effect is, the arguments of the Page_Importing and Page_Imported server events are changed, if you use these server events, you should review and update your code.
Export API
The export feature is also greatly improved, Export API and logging are introduced, please read Export API for details. You have more control on the export object with Page_Exporting, Row_Export, and Page_Exported server events now. To make it easier to use, the arguments of these server events are changed, the export object is passed to them as argument directly. If you use these server events, make sure you review and update your code.
If you used to set the global variable $ExportFileName to change the file name of the exported file, you need to update your code and set the $doc->FileName property in Page_Exporting server event.
If you use User Level Security, note that the Export permission is added. If you use Static User Levels, make sure you update your permissions in the project before generating scripts. If you use Dynamic User Levels, make sure you login as Adminitrator to the generated site after first generation and update the User Level permissions for each User Level.
Quick Search URL Parameters
It is worth remembering this although it might be a little trivial. Due to historical reason we used "psearch" and "psearchtype" as the URL parameters for Quick Search. For backward compatibility we have been keeping them unchanged. However, we believe it is time to normalize them as "search" and "searchtype". If you used to search by URL parameters like "psearch=foo&psearchtype=bar", make sure you remove the prefix "p" from this version, i.e. use "search=foo&searchtype=bar" instead.
Fixed Header Table
The fixed header table feature has been integrated into the default template, the Fixed Header Table Extension is NOT required anymore. To enable fixed header table for your project, just enable the new advanced setting Use fixed header table. By default the CSS class for table height is "mh-400px" (i.e. max-height: 400px), which you can customize by modifying the advanced setting Fixed header table height (CSS class). If you prefer different settings for some tables, you can use Page_Load server event and use the table object's setFixedHeaderTable() method, e.g.
$this->setFixedHeaderTable(true, "vh-50"); // Enable fixed header table and set the height to 50vh
$this->setFixedHeaderTable(false); // Disable fixed header table
For your convenience, PHPMaker provides utility CSS classes from "h-50px" to "h-1000px" (height, at 50px intervals), from "mh-50px" to "mh-1000px" (max-height, at 50px intervals) and from "vh-10" to "vh-100" (viewport height, at 5vh intervals). Needless to say, you can also use your own CSS classes.
Font Awesome 6
Font Awesome has been upgraded to v6, the class names are changed, some icon names are different from v5. See What's Changed for details. If you use Font Awesome icons (e.g. in Menu Editor), you may need to update your classes.
Language Files
As usual there are new phrases in new major version, make sure you update your non-English language files, otherwise some phrases will be missing. The new or changed phrases are marked with <!-- v2023 --> in the default language file.
Also See
Migrating to v2022
Migrating to v2021
Migrating to v2020
Migrating to v2019