Upgrading to Central 2
Patch application and upgrade information
Prerequisites
Before attempting to upgrade a Jadu Central instance to Jadu Central 2.0.0, please confirm the following prerequisites are in place:
- A snapshot of the server has been taken, there is no rollback process for this upgrade
- If applicable, forms have been taken offline
- The PHP version installed is PHP 8.1
- If used, MariaDB version is MariaDB 10.5
- Email configuration for Jadu Central is set to “SMTP” not “mail”
- Any customisations to
microsites/templates/apache/ssl_block.cfg
have been backed up - this file will be overwritten by the patch process - Jadu Central 2.0.0 incorporates breaking changes that may require compatibility changes to be made to any extensions or customisations you have maintained. Before patching a production system, you should confirm that any changes documented within this guide have been implemented and any extensions you maintain are compatible with:
- PHP 8.1
- Meteor 4
- Symfony 5.4
- Twig 2
Patching
- As Jadu Central 1.3 and below do not support PHP 8.1, the PHP upgrade and Jadu Central patch should be applied in the same maintenance window. As a result, some downtime will be required for this upgrade.
- Forms should be disabled while the application is running PHP 7.4 prior to commencing the upgrade process
- Deployer supported upgrades are not possible for this release. Upgrading to PHP 8.1 will cause incompatibilities in the Jadu Central 1.x or CMS 21.x platform such that the Deployer Client will not work.
- We recommend the patch process is followed on your UAT environment, before application to a production environment.
- Confirm the pre-requisites above have been met
- Start by building and downloading a Jadu Central 2.0.0 package for your environment from Deployer
- Turn off forms by logging into the application and navigating to “Forms > Settings” in the Control Center
- Windows only: Stop IIS
- Upgrade PHP to PHP 8.1
- Install the package via Meteor
- Copy the package to the server and unzip the file
- From the command line, cd to the unzipped folder and run the following command. Answer yes to run the migrations:
php -d memory_limit=-1 meteor.phar patch:apply --path=<<JADU-HOME>>
- Once the package has been applied, warm the cache using the following command line commands:
- Linux System:
sudo -u jadu-www /usr/bin/php -d memory_limit=-1 /var/www/jadu/cli.php cache:warmup --kernel=cc
sudo -u jadu-www /usr/bin/php -d memory_limit=-1 /var/www/jadu/cli.php cache:warmup --kernel=frontend
- Windows System (run as Administrator user, where the Jadu installation directory is
C:\inetput\wwwroot\jadu
):php -d memory_limit=-1 C:\inetpub\wwwroot\cli.php cache:warmup --kernel=cc
php -d memory_limit=-1 C:\inetpub\wwwroot\cli.php cache:warmup --kernel=frontend
- Linux System:
- If Galaxies Sites are in service, also warm their cache using the following command line commands:
- Linux System:
sudo -u jadu-www /usr/bin/php -d memory_limit=-1 /var/www/jadu/cli.php cache:warmup --kernel=galaxy
- Windows System (run as Administrator user, where the Jadu installation directory is
C:\inetput\wwwroot\jadu
):php -d memory_limit=-1 C:\inetpub\wwwroot\cli.php cache:warmup --kernel=galaxy
- Linux System:
- Windows only: Start IIS
- Verify the upgrade by logging in to the application and confirming the website can be accessed without encountering an error
- Turn on forms via “Forms > Settings” in the Control Center
Rollback
We recommend that rollback of the upgrade is undertaken if:
- The site is down and can not be brought up
- A critical issue is present on the site that will affect the organisation in a business critical way and does not have an immediate or imminent resolution
- Forms have not been returned online
Once forms are online any rollback activities will affect data integrity and are to be avoided.
Symfony 5.4
This upgrade includes Symfony 5.4. This is 2 major versions above the version of Symfony in Central 1.0. Please refer to the upgrade notes provided by the Symfony project to update any custom developments that rely on Symfony components embedded in Jadu Central.
- Symfony 4.0 upgrade notes
- Symfony 4.1 upgrade notes
- Symfony 4.2 upgrade notes
- Symfony 4.3 upgrade notes
- Symfony 4.4 upgrade notes
- Symfony 5.0 upgrade notes
- Symfony 5.1 upgrade notes
- Symfony 5.2 upgrade notes
- Symfony 5.3 upgrade notes
- Symfony 5.4 upgrade notes
Symfony dependency
In line with Symfony guidance, Jadu Central now pulls individual dependencies from Symfony, rather than the full Symfony/Symfony package.
Peer verification in SMTP
By default, SMTP transports now perform TLS peer verification.
This may cause the following error to appear in logs where a self-signed SSL certificate is in use for the SMTP server:
Unable to connect with STARTTLS: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
This behavior is configurable by defining the VERIFY_PEER
element in mail.xml and setting the value to 0
.
<system xmlns:config="http://www.jadu.co.uk/schema/config">
<type>smtp</type>
<host>localhost</host>
<port>25</port>
<ssl></ssl>
<username></username>
<password></password>
<verify_peer>0</verify_peer>
</system>
Although it's not recommended to disable this verification for security reasons, it can be useful while developing the application or when using a self-signed certificate.
https://symfony.com/doc/5.4/mailer.html#tls-peer-verification
Use of mailer service in Photon controllers
Services in Symfony now default to being private. As a result, controllers that sent email by calling the mailer service directly will now fail. This may cause the following error to appear in logs:
The "mailer" service or alias has been removed or inlined when the container was compiled. You should either make it public, or stop using the container directly and use dependency injection instead.
The mailer service should now be passed using dependency injection to the controller constructor. Due to this requirement, the constructor signature of the following Photon controllers have changed:
- Photon\CmsProject\Page\MarketingContent\User\ForgetPasswordController
- Photon\BlogProject\Component\CommentSubmissionFormController
- Photon\CmsProject\Page\PublishingContent\Directory\DirectoryRecordEditController
- Photon\CmsProject\Page\PublishingContent\Directory\DirectorySubmitController
Services.yml example:
Photon\CmsProject\Page\MarketingContent\User\ForgetPasswordController:
parent: photon.controller.page
public: true
arguments:
- '@Photon\CmsEngineCore\Repository\Marketing\User\CoreUserRepository'
- '@Photon\Core\Service\EmailService'
tags:
- { name: photon.page, page_name: user_account_forgot_password }
Controller example:
use Photon\Core\Service\EmailService;
/**
* @var EmailService
*/
protected $mailer;
/**
* PasswordResetController constructor.
*/
public function __construct(
UserRepository $userRepository,
EmailService $mailer
)
{
$this->userRepository = $userRepository;
$this->mailer = $mailer;
parent::__construct();
}
Email is sent using the sendEmail method of the EmailService class.
$this->mailer->sendEmail(
$toEmail,
$fromEmail,
$emailSubject,
$emailTemplate,
$templateParameters
);
Change in behaviour for custom Symfony console commands
The Symfony console Command::execute() method must now return an integer. We recommend returning one of the available constants: Command::SUCCESS, Command::FAILURE or Command::INVALID.
Twig 2.11 compatibility
Prior to Twig 2.11, it was possible to use macros imported in a block in a “sub-block”. These macros must now either be imported in the global scope or reimported explicitly in the “sub-blocks”. Where the macro is unavailable in the sub-block, components may be missing and not displayed.
Retirement of mail transport support
The mail transport service will no longer be supported by Jadu Central from Jadu Central 2.0.0. An alternative SMTP service will be required to ensure continued email delivery from the application.
If you are currently sending email via SMTP, or a customer of Jadu’s managed server service, no further action is required. However, if you are currently using mail transport, you should plan to move to an SMTP service prior to applying Jadu Central 2.0.0.
The following line should be removed from bundles.xml if present:
<item key="symfony-swiftmailer">Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle</item>
Extending module twig templates
If the implementation extends bundles using the method of adding a path to the twig environment; the twig extension will need updating to a slightly different syntax.
Identify any children twig templates and update them to the new syntax:
- {% extends 'MyAccountWidgetProjectBundle:widgets:myaccount/sign-in.html.twig' %}
+ {% extends '@!MyAccountWidgetProject/widgets/myaccount/sign-in.html.twig' %}
PHP 8.1
This upgrade includes support for PHP 8.1, which will receive security support until 25 November 2024. PHP 8.1 is a major update of the PHP language, and contains many new features. Unfortunately, due to the degree of change between versions, Jadu Central 2.0.0 does not retain support for PHP 7.4. PHP must be upgraded to PHP 8.1 prior to applying the Jadu Central 2.0.0 patch. No specific testing has been completed on PHP versions between PHP 7.4 and 8.1, we recommend moving directly to PHP 8.1 rather than upgrading to PHP 8.0, for example.
Documentation for PHP 8.1 and its new features are available on the php.net website.
Support for PHP 7.2 and 7.4 has now been ended and we will no longer be ensuring compatibility with PHP 7.2 or PHP 7.4 in our releases.
Change of repository
PHP 8.1 packages are unavailable on CentOS 7 when using the IUS repository (https://ius.io/). As a result Jadu documentation will now refer to the Remi repository (https://rpms.remirepo.net/) for PHP packages instead.
Klein router removal
Use of the Klein.php router has been deprecated and will be removed in a future release of Jadu Central. Going forward, we recommend moving all routes to Symfony routing.
ArrayAccess type hinting
Classes implementing ArrayAccess interface must not hint return types. The following Jadu classes have been amended to implement Scala style type hinting of return values.
- jadu/Abstracts/Container.php
- jadu/Config/Decorator/Item.php
- jadu/Config/Item.php
- jadu/FriendlyUrls/Entity/Import.php
- jadu/directoryBuilder/Directory/Entry.php
- jadu/directoryBuilder/Directory/Import.php
- jadu/marketing/JaduUsers.php
- jadu/Config.php
- jadu/Session.php
Classic template changes
A compatibility change has been found to be required in 404.php:
27 - $searchQuery = encodeHtml(trim(implode($terms, ' ')));
27 + $searchQuery = encodeHtml(trim(implode(' ', $terms)));
GuzzleHTTP deprecation messages
A known issue has been reported in the Guzzle library relating deprecation notices appearing in PHP logs. Jadu recommends disabling deprecation errors after UAT testing with Jadu Central 2 to ensure PHP logs are not flooded in production.
https://github.com/guzzle/guzzle/issues/2971#issuecomment-1146150001
[17-May-2023 12:24:26 Europe/London] PHP Deprecated: Return type of GuzzleHttp\Cookie\CookieJar::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/jadu/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php on line 220
[17-May-2023 12:24:26 Europe/London] PHP Deprecated: Return type of GuzzleHttp\Cookie\CookieJar::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/jadu/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php on line 225
Fileinfo extension
During testing we found it was required to add the fileinfo PHP extension to php.ini on Windows environments.
- To enable this extension:
- Navigate to C:\php\php.ini
- Open the file and search for ;extension=fileinfo
- Remove the semicolon to uncomment out the line (enable the extension)
- Save the file and restart IIS
Enchant spelling library
Additional setup is required for the Enchant spelling library in a Windows environment. It is now necessary to copy at least one of the shipped providers in lib\enchant
to \usr\local\lib\enchant-2
, which is an absolute path from the root of the current drive.
For example, libenchant2_hunspell.dll
must be copied from php/lib/enchant to /usr/local/lib/enchant-2/libenchant2_hunspell.dll
.
.dic
and .aff
files should be located in usr/local/share/enchant/hunspell
.
See https://www.php.net/manual/en/enchant.installation.php for further information.
Running pre-2.0 under PHP 8.1
If you attempt to run a version of Central prior to 2.0 under PHP 8.1 it will cause a 500 error:
PHP Fatal error: Array and string offset access syntax with curly braces is no longer supported in /var/www/jadu/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php on line 399
We can workaround this temporarily by fixing the braces used on that line.
Upgrading PHP on a Windows Server
The following instructions are a reference only, and are the steps taken by the Jadu Development team to maintain their servers. We're unable to offer specific advice relating to maintenance of self-hosted systems.
- Update Microsoft Visual C++ Redistributable
- Download the latest version of C++ Redistributable (x64)
- Install VC_redist.x64.exe
- Restart the system
- Download PHP 8.1 package
- Stop the server
- Open IIS and stop the server
- Extract PHP
- Rename
C:\\php
toC:\\php_old
- Extract the PHP 8.1 Zip package into
C:\\php
- Inside
C:\\
, copyphp.ini-production
intophp.ini
- Rename
- Download the Microsoft Drivers for PHP for SQL Server
- Download the Microsoft Drivers for PHP for SQL Server
- Unzip the package
- Copy the files
php_pdo_sqlsrv_81_nts_x64.dll
andphp_sqlsrv_81_nts_x64.dll
intoC:\\php\ext
- Rename the files to
php_pdo_sqlsrv.dll
andphp_sqlsrv.dll
respectively
- Download XML-RPC
- Download XML-RPC (8.1 Non Thread Safe (NTS) x64)
- Copy
php_xmlrpc.dll
into theC:\\php\ext
- Configure php.ini
- Open
php.ini
in a text editor - Uncomment the following lines:
- extension=curl
- extension=ldap
- extension=gd
- extension=mbstring
- zend_extension=opcache
- Jadu Central Forms customers should also uncomment
intl
,soap
andapcu
- Add the following lines:
- extension=sqlsrv
- extension=pdo_sqlsrv
- extension=enchant
- extension=xmlrpc
- Set the following values:
- user_ini.filename =
- expose_php = Off
- error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
- display_errors = Off
- display_startup_errors = Off
- date.timezone = Europe/London
- mysqlnd.collect_memory_statistics = Off
- opcache.enable=1
- opcache.enable_cli=1
- At the end of the php.ini add
- include_path=C:\inetpub\wwwroot\jadu\jadu
- error_log= C:\inetpub\wwwroot\jadu\logs\php_log
- session.save_path= C:\inetpub\wwwroot\jadu\var\sessions
- upload_tmp_dir= C:\inetpub\wwwroot\jadu\var\tmp
- Open
- Start the server
- Open IIS and start the server
- The site should load, and you can now delete
C:\\php_old
Changes to Twig templates and Controllers
A number of changes have been made in our modern template library (Photon) to improve compatibility with WCAG 2.1 AA criteria. Some of these changes may interact with customer template implementations, and may require changes to customer template implementations.
We recommend an appropriate time is set aside to review interactions on a “dev” environment prior to proceeding with patching your “live” environment.
Global changes
- Sidebar block level element has been changed from
<aside&rt;
to<div&rt;
and the aria-label attribute has been removed in base.html.twig - References to swfobject.min.js have been removed from article.html.twig and modular.html.twig
- Page title is now prefixed with “Error: “ if errors are found in submitted form values
- An additional partial is now included above forms to display a summary of errors in submitted form values and JavaScript is included to move focus to the error summary
- Aria-describedby attribute has been added to relevant form fields
- Checkbox form fields have been updated such that the label follows the input element
- Form field error indicator has been changed from “!” to “⚠”
- Span containing form field help has been updated to include an id attribute, referenced by the aria-describedby attribute of the associated form field
- Visually hidden text, “Error: “ now prefixes inline error messages
- P containing form field inline error messages has been updated to include an id attribute, referenced by the aria-describedby attribute of the associated form field
- Radio button form fields have been updated such that the label follows the input element
- Site search form has been updated to include a role attribute with value “search”
- JavaScript related to the display of Flash multimedia items has been removed, and a placeholder will only be shown if included
- Aria label of breadcrumb navigation has been amended to “Breadcrumb”
- Previous/Next pagination has been updated to remove previous and next options if those options are disabled
- Page number pagination has been updated to include visually hidden text “page” as well as the page number
- Current page link in page number pagination now has aria-current attribute with value “page”
- Alert title will now replace newline characters with br tags where included
- Aria label of footer navigation has been amended to “Footer”
- Aria label of site navigation has been amended to “Primary navigation”
- Aria label of main navigation has been amended to “Main”
- Aria label of skip link navigation has been amended to “Skip link”
- Share links now include visually hidden text “Share on” in addition to the service name
- Event calendar widget now includes abbr elements wrapping day label text
- Visually hidden caption text has been added to the event calendar widget table
- Links in the event calendar widget table have been given an aria-label attribute
- Middle advert widget link now only wraps the advert title, not the whole advert block
- Caption element and scope attributes added to website statistics table
- Location form component no longer disables autocomplete on the locale field
Page specific changes
- EGov
- Councillor list
- Filter button value has been changed from “Go” to “Apply filter”
- Meeting list
- Filter button value has been changed from “Go” to “Apply filter”
- Meeting details
- References to swfobject.min.js have been removed
- A to Z service list
- Each A-Z navigation link now includes visually hidden text “A to Z of records”
- Councillor list
- Marketing
- Sign in form
- Autocomplete value of the email field has been changed to “username”
- Autocomplete value of the password field has been changed to “password”
- API key application form
- An inline error message is displayed when submitting the form without agreeing to site terms and conditions
- Change password form
- Inline error messages are displayed describing issues in mandatory or validated fields
- Forgot password form
- An inline error message is shown when submitting the form without an email address entered
- Password reset form
- Inline error messages are displayed describing issues in mandatory or validated fields
- Registration form
- Inline error messages are displayed describing issues in mandatory or validated fields
- Sign in form
- Publishing
- Directory record submission form
- Inline error messages are displayed describing issues in mandatory or validated fields
- Directory A to Z record list
- Each A-Z navigation link now includes visually hidden text “A to Z of records”
- Download details
- H2 heading now wraps file title
- A element has been moved to wrap H2 and file metadata list
- File metadata list has been updated to remove additional call-to-action text and link
- Event list
- Filter button value has been changed from “Go” to “Apply filter”
- Event submission form
- Inline error messages are displayed describing issues in mandatory or validated fields
- A element now only wraps the title of articles in the list, not the whole article summary
- News list
- Filter button value has been changed from “Go” to “Apply filter”
- A element now only wraps the title of articles in the list, not the whole article summary
- Search result list
- Heading now uses “search-results-label” language pack value rather than “search-label”
- A element now only wraps the title of articles in the list, not the whole article summary
- Directory record submission form
- Galaxies sites
- Restricted site login form
- Page title has been updated to include “Sign in”
- Autocomplete attribute has been added to username field
- Autocomplete attribute has been added to password field
- Amendments made to CSS in style element
- Restricted site login form
- PayBridge
- Basket summary
- Additional visually hidden text added to remove button
- Basket summary
- Forms
- Form pages
- Page heading is set as form page title where defined
- Form pages
Amended files
The following files have been amended, and any changes may need reflecting in your own developments if you have extended or overridden them:
Twig templates:
- src/BlogProject/Resources/templates/base/pages/offline.html.twig
- src/CmsProject/Resources/templates/base/layouts/article.html.twig
- src/CmsProject/Resources/templates/base/layouts/base.html.twig
- src/CmsProject/Resources/templates/base/layouts/form.html.twig
- src/CmsProject/Resources/templates/base/layouts/modular.html.twig
- src/CmsProject/Resources/templates/base/pages/egov_content/meeting/article.html.twig
- src/CmsProject/Resources/templates/base/pages/publishing_content/download/article.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/form/aria-describedby.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/form/checkbox.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/form/error_indicator.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/form/error_summary.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/form/esri.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/form/file.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/form/google_map.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/form/help_text.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/form/hidden.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/form/image_upload.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/form/inline_error.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/form/input.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/form/radio.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/form/select.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/form/textarea.html.twig
- src/CmsProject/Resources/templates/base/partials/molecules/article/summary.html.twig
- src/CmsProject/Resources/templates/base/partials/molecules/form/error_summary.html.twig
- src/CmsProject/Resources/templates/base/partials/molecules/form/search.html.twig
- src/CmsProject/Resources/templates/base/partials/molecules/form/single_field.html.twig
- src/CmsProject/Resources/templates/base/partials/molecules/image/multimedia_item.html.twig
- src/CmsProject/Resources/templates/base/partials/molecules/list/az.html.twig
- src/CmsProject/Resources/templates/base/partials/molecules/list/breadcrumb.html.twig
- src/CmsProject/Resources/templates/base/partials/molecules/navigation/pagination.html.twig
- src/CmsProject/Resources/templates/base/partials/molecules/navigation/pagination_complex.html.twig
- src/CmsProject/Resources/templates/base/partials/molecules/supplement/supplement.html.twig
- src/CmsProject/Resources/templates/base/partials/molecules/text/alert.html.twig
- src/CmsProject/Resources/templates/base/partials/organisms/footer.html.twig
- src/CmsProject/Resources/templates/base/partials/organisms/footer_section.html.twig
- src/CmsProject/Resources/templates/base/partials/organisms/form/form.html.twig
- src/CmsProject/Resources/templates/base/partials/organisms/menu.html.twig
- src/CmsProject/Resources/templates/base/partials/organisms/primary_navigation.html.twig
- src/CmsProject/Resources/templates/base/partials/organisms/share.html.twig
- src/CmsProject/Resources/templates/base/partials/organisms/skip_links.html.twig
- src/CmsProject/Resources/templates/base/widgets/events_calendar.html.twig
- src/CmsProject/Resources/templates/base/widgets/middle_advert.html.twig
- src/CmsProject/Resources/templates/base/widgets/website_statistics.html.twig
- src/CmsProject/Resources/templates/base/widgets/whats_new.html.twig
- src/GalaxyProject/Resources/templates/base/layouts/base.html.twig
- src/GalaxyProject/Resources/templates/base/pages/login.html.twig
- jadu/PayBridge/Bundle/PayBridgeProject/Resources/templates/base/partials/organisms/payment/basket_summary.html.twig
- jadu/XFormsPro/Bundle/CoreBundle/Resources/views/Form/Component/location.html.twig
- jadu/XFormsPro/Bundle/XfpProject/Resources/templates/base/layouts/legacy.html.twig
- jadu/XFormsPro/Bundle/XfpProject/Resources/templates/base/partials/atoms/form/aria-describedby.html.twig
- jadu/XFormsPro/Bundle/XfpProject/Resources/templates/base/partials/atoms/form/checkbox.html.twig
- jadu/XFormsPro/Bundle/XfpProject/Resources/templates/base/partials/atoms/form/help_text.html.twig
- jadu/XFormsPro/Bundle/XfpProject/Resources/templates/base/partials/atoms/form/input_date.html.twig
- jadu/XFormsPro/Bundle/XfpProject/Resources/templates/base/partials/atoms/form/radio.html.twig
- jadu/XFormsPro/Bundle/XfpProject/Resources/templates/base/partials/atoms/form/select.html.twig
- jadu/XFormsPro/Bundle/XfpProject/Resources/templates/base/partials/molecules/form/file_upload.html.twig
- jadu/XFormsPro/Bundle/XfpProject/Resources/templates/base/partials/molecules/form/integrated_component.html.twig
- jadu/XFormsPro/Bundle/XfpProject/Resources/templates/base/partials/molecules/form/matrix.html.twig
Controllers:
- src/BlogProject/Component/CommentSubmissionFormController.php
- src/CmsProject/Component/Directory/SearchClassController.php
- src/CmsProject/Component/NavigationWidgetController.php
- src/CmsProject/Page/EgovContent/Atoz/AtozListController.php
- src/CmsProject/Page/EgovContent/Councillor/CouncillorListController.php
- src/CmsProject/Page/EgovContent/Meeting/MeetingListController.php
- src/CmsProject/Page/MarketingContent/User/AccountSignInController.php
- src/CmsProject/Page/MarketingContent/User/ApiApplyController.php
- src/CmsProject/Page/MarketingContent/User/ChangeDetailController.php
- src/CmsProject/Page/MarketingContent/User/ChangePasswordController.php
- src/CmsProject/Page/MarketingContent/User/ForgetPasswordController.php
- src/CmsProject/Page/MarketingContent/User/PasswordResetController.php
- src/CmsProject/Page/MarketingContent/User/RegistrationController.php
- src/CmsProject/Page/MarketingContent/User/UnsubscribeController.php
- src/CmsProject/Page/PublishingContent/Directory/DirectoryRecordEditController.php
- src/CmsProject/Page/PublishingContent/Directory/DirectorySubmitController.php
- src/CmsProject/Page/PublishingContent/Event/EventListController.php
- src/CmsProject/Page/PublishingContent/Event/EventSubmissionController.php
- src/CmsProject/Page/PublishingContent/News/NewsListController.php
- src/CmsProject/Page/RedirectController.php
- src/CmsProject/Page/UtilitiesContent/Search/SearchListController.php
- src/Core/Controller/Component.php
- src/Core/Controller/Page.php
- src/GalaxyProject/Page/LoginController.php
- jadu/XFormsPro/Bundle/XfpProject/Component/Legacy/HeaderController.php
Twig Extensions:
- src/CmsProject/Twig/Extension/ClassNameEscaping.php
- src/CmsProject/Twig/Extension/HomepageAssetLinkExtension.php
- src/CmsProject/Twig/Extension/IntegrationValueExtension.php
- src/CmsProject/Twig/Extension/LazyImageConversion.php
- src/CmsProject/Twig/Extension/SilktideMetadataExtension.php
- src/Core/Twig/Extension/ComponentExtension.php
- src/Core/Twig/Extension/WidgetExtension.php
Other PHP classes:
- src/CmsEngine/Model/Element/FormControl.php
- src/CmsEngine/Model/Marketing/User/JaduUser.php
- src/CmsEngineCore/Repository/BlogContent/CoreBlogTemplateRepository.php
- src/CmsEngineCore/Repository/Marketing/User/CoreUserRepository.php
- src/CmsEngineFake/Repository/Marketing/User/FakeUserRepository.php
- src/CmsProject/Authentication/AuthenticationFactory.php
- src/CmsProject/Authentication/AuthenticationListener.php
- src/CmsProject/Authentication/UserSessionInactiveListener.php
- src/CmsProject/Event/Marketing/User/UserRegisterEvent.php
- src/CmsProject/Event/Marketing/User/UserUpdateEvent.php
- src/CmsProject/Service/MarketingContent/User/UserEmailService.php
- src/Core/DependencyInjection/Compiler/RoutingPass.php
- src/Core/DependencyInjection/Configuration.php
- src/Core/Fixture/FixtureLoader.php
- src/Core/PhotonCoreBundle.php
- src/Core/Service/EmailService.php
- src/Core/Twig/Loader/ThemeLoader.php
- src/GalaxyProject/EventListener/WebsiteAccountListener.php
Removed files
The following files have been deleted and should be removed from any themes where they have been added:
- src/CmsProject/Resources/public/js/swfobject.js
- src/CmsProject/Resources/templates/base/Exception/exception_full.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/styleguide/global/colors.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/styleguide/global/fonts.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/styleguide/global/visibility.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/styleguide/lists/definition.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/styleguide/lists/ordered.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/styleguide/lists/unordered.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/styleguide/tables/table.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/styleguide/text/blockquote.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/styleguide/text/headings.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/styleguide/text/hr.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/styleguide/text/inline-elements.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/styleguide/text/paragraph.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/styleguide/text/preformatted-text.html.twig
- src/CmsProject/Resources/templates/base/partials/atoms/styleguide/text/time.html.twig
- src/Core/Twig/Extension/RoutingExtension.php
- src/GalaxyProject/Resources/public/js/swfobject.min.js
- jadu/XFormsPro/Bundle/XfpProject/Resources/templates/base/partials/atoms/form/hidden.html.twig
Retirement of Flash video
Since Adobe no longer supports Flash Player after December 31, 2020 and blocked Flash content from running in Flash Player beginning January 12, 2021, Adobe strongly recommends all users immediately uninstall Flash Player to help protect their systems. https://www.adobe.com/products/flashplayer/end-of-life.html
As a consequence, Jadu have removed flash-associated functionality from Jadu Central in Jadu Central 2.0.0. Video and audio content that previously would be displayed with a flash player, now defaults to an image placeholder.
Multimedia allowed mime types
The following mime types have been removed from the allowed_multimedia_types
element in var/config/globals.xml
:
- video/avi
- video/msvideo
- video/x-msvideo
- video/x-ms-wmv
- video/quicktime
- video/mp4
- video/mpeg
- video/x-mpeg
- video/x-m4v
- video/x-flv
- video/vnd.mpegurl
- video/x-sgi-movie
- video/x-ms-asf
- audio/mp3
- audio/mpeg3
- audio/x-mpeg-3
- audio/mpg
- audio/mpeg
- audio/wav
- audio/x-wav
- audio/x-ms-wma
- audio/m4a
- audio/mp4
Removed classes, methods and files
The following multimedia associated classes have been removed:
- jadu/queue/JaduQueueJobHandlerMultimedia.php
The following Control Center page has been removed:
- public_html/jadu/multimedia/preset_video_sizes.php
Classic templates
The JavaScript file associated with flash transformation of video and audio content has been removed from Galaxies site templates on classic installs. New sites will no longer be published including these files where the site is using the “empty” dataset.
- microsites/datasets/empty/public_html/site/javascript/swfobject.js
- microsites/datasets/empty/public_html_photon/site/js/mediaplayer/player.swf
- microsites/datasets/empty/public_html_photon/site/js/swfobject.min.js
- microsites/public_html_templates/default/site/includes/mediaplayer.php
The following files have been updated to remove references to swfobject.js:
- microsites/public_html_templates/default/site/scripts/documents_info.php
- microsites/public_html_templates/default/site/scripts/events_index.php
- microsites/public_html_templates/default/site/scripts/events_info.php
- microsites/public_html_templates/default/site/scripts/news_article.php
The multimedia widget (id 25) should be updated on classic template installations to remove reference to flash resources.
- var/widgets/25/secure.php
Photon templates
The JavaScript file associated with flash transformation of video and audio content has been removed from CmsProject and GalaxyProject themes.
- src/CmsProject/Resources/public/js/swfobject.js
- src/GalaxyProject/Resources/public/js/swfobject.min.js
The following files have been updated to remove references to swfobject.js:
- src/CmsProject/Resources/templates/base/partials/molecules/image/multimedia_item.html.twig
- src/CmsProject/Resources/templates/base/pages/egov_content/meeting/article.html.twig
- src/CmsProject/Resources/templates/base/layouts/modular.html.twig
- src/CmsProject/Resources/templates/base/layouts/article.html.twig
Multimedia conversion queue
The multimedia file conversion queue handler has been removed:
- jadu/queue/JaduQueueJobHandlerMultimedia.php
As a consequence a migration has been added to the application to remove the associated entry in JaduQueues and any related queue jobs:
$this->addSql("DELETE FROM JaduQueues WHERE name='multimedia';");
$this->addSql("DELETE FROM JaduQueueJobs WHERE handler='multimedia';");
As this migration is destructive, any deleted data will not be restored on triggering the down()
method of the migration.
Other changes
SQL Server Driver 5.10 column type issue
The actual issue is due to MSSQL driver (introduced in 5.10) and it happens for consecutive inserts done by ORM (not able to replicate without ORM).
https://github.com/microsoft/msphpsql/issues/1448
Retirement of TLS 1.0 and 1.1 support
TLS 1.0 and 1.1 have been removed from Apache configuration templates for Galaxies sites. Please republish any sites with SSL configured to ensure the latest changes are reflected in their configuration.
Additional constants have been added for configuration of Galaxies site Apache SSL configuration options and should be defined in config/constants.xml
where required. Default values have been defined in var/config/constants.xml
as follows:
<ssl_options>+StrictRequire</ssl_options>
<ssl_protocol>All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1</ssl_protocol>
<ssl_cipher_suite>EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH</ssl_cipher_suite>
The following versions of Internet Explorer support TLS v1.2:
- IE v8 or above on Microsoft Windows 7
- IE v10 on Microsoft Windows 8
- IE v8 or above on Windows Server 2008 R2 Standard (64-bit only)
- IE v8 or above on Windows Server 2008 R2 Enterprise (64-bit only)
- IE v10 on Windows Server 2012 Standard
- Manual changes to browser configuration may be required to enable support of TLS v1.2 in these versions.
Configuration of Read-only Redis instance
Jadu Central now supports an architecture featuring read-only Redis nodes, used for application cache. This will mitigate instances where latency between a web server instance and a Redis instance causes degraded performance.
Configuration of a read-only Redis instance should be added to config/datastore.xml as follows
<datastore>
<redis>
<servers>
<server host="1.2.3.4" port="6379"/> <!-- a read/write instance of redis -->
<serverRO host="1.2.3.4" port="6379"/><!-- a read only instance of redis -->
</servers>
</redis>
</datastore>
Meteor
The Meteor deployment tool has also undergone some updates in this Jadu Central release.
The following dependency changes are notable:
- Symfony is updated to 5.4 (see notes above)
- Doctrine DBAL is updated to 2.13
- Doctrine Migrations is updated to 2.3
Breaking changes
The new version of Doctrine Migrations changes the namespace and method signatures of the migration classes. This means that all migration files will need to be adjusted to be compatible with this new version. A utility script has been created to automate the updates to these class files. This change should be applied in the version of packages / projects that are being updated for Jadu Central 2.0.
Behaviour changes
In this new version, the migration method addSql()
no longer outputs anything to the terminal when a migration executes.
PHP_uname
php_uname must be removed from the disabled functions configuration file (usually config/php-fpm/conf.d/20-disable_functions.conf
)
Change in behaviour of admin service
The function getCurrentAdminID()
defined in jadu/Service/Administrator.php
is documented to return an integer, however it has previously returned a string in some circumstances. The function will now always return an int value.
Changes to JaduXFPPageSection
Form section functionality has been refactored to remove cases where JSON structure for a page section could become corrupted. The structure
column of the JaduXFPPageSection
table has been removed.
In-App notifications
A new notifications tool has been added to the user interface of Jadu Central to syndicate release notes from new releases. As a result the old notifications functionality has been removed
Removed classes, constants and routes
The following Notifications associated classes have been removed:
- jadu/Notifications/Drivers/SqlDriver.php
- jadu/Notifications/Drivers/VoidDriver.php
- jadu/Notifications/Interfaces/DriverInterface.php
- jadu/Notifications/Interfaces/NotificationContainerInterface.php
- jadu/Notifications/Interfaces/NotificationInterface.php
- jadu/Notifications/Container.php
- jadu/Notifications/Controller.php
- jadu/Notifications/DataMapper.php
- jadu/Notifications/Notifications.php
- jadu/Notifications/Service.php
In addition, the configuration files var/config/notifications.xml
and config/notifications.xml
will no longer affect in-app notification behaviour.
The database tables JaduNotifications
and JaduNotificationsRead
have been dropped, with their associated content. If the migration is rolled back, read notifications data will be lost.
The constant NOTIFICATIONS_ENABLED
has been removed from the application. If the migration is rolled back, the value will default to true
.
Unit tests related to the previous notifications functionality have been removed.
The route /jadu/notifications
will now result in a 404 response when requested.
Disabling in application notifications
Notifications can be disabled in the application by appending the following element to constants.xml:
<hn_notifications_enabled>0</hn_notifications_enabled>
Planned changes in Jadu Central 3.0.0
Please note that this will be the last major release of Jadu Central which supports the Classic Form Builder and the GoCardless integration. Both items are planned for removal, including deletion of associated data in Jadu Central 3.0.0.
Customer submission data for Classic Form Builder can be exported using the existing data management functionality of the application.