Upgrading to 3.0 from 2.6
SupportPal 3.0 is a major release containing a completely revamped interface. The interface has been designed for better functionality and mobile support, and includes a dark mode option.
Estimated Upgrade Time: 1-2 Hours.
Before attempting an upgrade, please take a backup of both your SupportPal database and all associated SupportPal files, then verify the backup is valid (not corrupt).
What's New?
View the 3.0 Release Notes for the new features and improvements in this series.
New System Requirements
-
The new minimum PHP version is now 7.2.0.
PHP 7.0 and 7.1 have reached end of life and support for them have been dropped in this release. - The Ctype PHP extension is now required.
- libxml 2.7.0 or above is now required.
Email Template Changes
The upgrader will attempt to automatically update email templates that have not been modified. If you see a message statingUnable to update email template
when running database upgrades then you'll need to update the
template mentioned manually:
- Browse to Settings > General > Email Templates and find the template mentioned
- In the text editor, click on the
<>
button (view HTML) - Replace all content with the relevant email template from the list below
- Repeat for any translated versions
- Click Save
Ticket feedback request
The 'Ticket feedback request' email template has been updated to add a neutral feedback option.
<table width="450" style="width:450px;">
<tbody>
<tr>
<td align="center" style="text-align: center">
<a href="{{ route('ticket.frontend.ticket.feedback', [ ticket.number, token ]) }}?rating=1">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAABqlBMVEUAAAAuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEeM3AYAAAAjXRSTlMAAQIDBAUGBwgJCgsMDg8QERITFBUWFxgaGxwdHh8gIiQmKSorLC4vMDIzNDY4OTo8Pj9BQ0RFR0lKS0xOT1RVVldYWVtcXV5hYmNmaG9zdHV4fH5/hYiLjo+UlZeYmp6gpaaoqqutr7C1t7q8vsHDxcfIzM7P0dPV19na3ODi5Obo6evt7/Hz9ff5+/3xUOGfAAACRklEQVQYGYXBiSOTYQDH8d+z7Z0iYpPpkhrpPuhS6dKlRBedohKx7kQpraKY7fs/9zzvsA2tz0cFvH3dbzJYk73Hy/VPdQPke3/YaDWxUZabOqgVTCfOrzv7akrDayvj18dwnq5RIe8V1qt65VT1Ys3ElK/0CzDZpEKRZ0A6rpzQZ+BxQCucBtK1WmRGgA6tpn4WZkq1oB3o1OrqgGFlVWagX5ZpaIlokWloicg6ARyVrx9+BiWFx4CLygqPAVdkPYTpgKwo0CyrByciXw9OtaR1wClZt2HCyEritMiXxDkm6yZMSTKzsF9OAqdBvgROk6y1QEzaCpmgnEasMSNfI9a4kTME16Q2eK6sxkSyJ6wFjYlkT1i+VngpPYBzKq4G5qW3sFPFeYCnKdik4gxQpnmo1n8AVfoBG1WcAdbpA8RVXAgI6wm0ybf+zUBQeZon2+WLQMboAvTJdxfOKMfLQEhOM7yWtsOckdMGyYCWXIXv8vXBDSmQhrickjT0atGmDJyR4wF1kh5AQr7LwP2gfLtTMBWQ0w4zRtJWoEGOGQamr26piB4YAdIxOV4KOuSMwoSRExwkZ3abfF2Q8uRsBm7JZ86mWfCiTL4dwCVl3QKOKMs7OZiC8a6Ysirm4KNRVmAC2K8lRksqvkI6qkVl00CnVorPAbuUs+E3MBxVIa8bq1X5yr9h3StXTuh8CsjsUSGvDyfRVhs2Uqjq0KMM1qdqrbD3O8vNdxitwrRMku9PZ1j/Er08lML3rrveqDivrKq8xGi5v+9pCmPJArjSAAAAAElFTkSuQmCC" alt="Good, I'm satisfied">
</a><br>
Good, I'm satisfied
</td>
<td align="center" style="text-align: center">
<a href="{{ route('ticket.frontend.ticket.feedback', [ ticket.number, token ]) }}?rating=2">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAABmFBMVEUAAADxxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/4+wrwAAAAh3RSTlMAAQIDBAUGBwgJCgsMDQ4PERITFBUWFxgaGxwdHyAkJikqKywuLzAzNDY4Ojw+P0FDREVHSUpMTk9SVFZXWFlcXV5iY2Zob3BzdHV4fH6ChYaIiYuPlJWXmJqeoKWmqK2vsLK1t7q8vsHDxcfIzM7P0dPV19na3ODi5Obo6evt7/Hz9ff5+/36/rmZAAACCUlEQVQYGYXBCUNMUQCG4e9M3aFFNU2apIYpoVBZIkWIKNkiVKJQ2SMiad/m/dvOuVNqVs+jJF5j3/s41uzA+RJlVfuCvT6dMcokMkGquVNKY3pwFu83VhYGC8pit6ZxRvcrmTeFNRXVrtAA1nJEexX+AGYblKz8JbAV067878DzgNJcAraqtMO8BbqVSXQNlgu1rQvoUWa1wLgSyuIwIsvUtYT1T7S1WtYF4Kx8I7CQJyk4DdxQgnkDPJb1FJYCssJAs6yHOBXydeI0SCoGLsq6BzNG1jzOOflGce7IugtzkswaNMmZxGmQ7wHOZVkFQESqgXienHqsb0a+MNZKUM4Y3JTa4ZUS6ifnHwW1rWpsYfiAfG3wWhqETuVWCZvSBzim3DzA0xxUKzcDFGkTKvQfQEh/4JByM0CxPkNMueUDQQ1DuxICXgojXznEja7CkHwdpFqNyGmGd9IRWDdyFknTK2cIbkuBLYjJ6SDVWkSWB9RKGoRJ+QJeCiOnC5aNpBqgTtl5G9AtZwJmjLLqhQ1PzmGgX9kcBa4poR9oVWal6/DFKCEwAzQpk9KfsBXWjqIloEfpYuvAce06uAKMh5XM68Nq014lv7CelGhX/pUNIH5CybwhnMn2qqCR8kOnn8WxvlYozcnfpNrsNsrAtMyy12pPUNmEr49t4PvYFzXKzSsKlewzSvUXTrn3Jn1lbwAAAAAASUVORK5CYII=" alt="I'm not sure">
</a><br>
I'm not sure
</td>
<td align="center" style="text-align: center">
<a href="{{ route('ticket.frontend.ticket.feedback', [ ticket.number, token ]) }}?rating=0">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAABpFBMVEUAAADnTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDw8vlXlAAAAi3RSTlMAAQIDBAUGBwgJCgsMDQ4PERITFBUWFxgaGxwdHh8gJCYpKissLi8wMzQ2ODo8PT4/QUNERUZHSUpMTk9QUlZXWFlbXF1eYmNmaG9zdHV4fH6ChYiJi4+UlZeYmpudnqClpqitr7C1t7q8vsHDxcfIzM7P0dPV19na3N7g4uTm6Onr7e/x8/X3+fv9/9BgVAAAAkNJREFUGBmFwYlDi2EAx/Hfs/a+UUmtlLPYcuXMGbkSURJCyC20co4ICRVb7ftPe553W9tq5vNREa994FUaa+rmsVr9U8tjCr09YFRK8xjLTe/VCqYP59f19qYqf3Vd9HIC58kqFfPGscZblVd/E2uuWYWqPgNTO1Qs8hRYjCov/Am4F9IKJ4HF9coxL4FeldL6B+aqlNUN9Km0FuC5MurS8EiWiXVElGNiHRFZx4HDCjyCnxWS/ARwXhl+Argo6w7MhmQ1AAdlDeFEFBjCaZRUA5yQdQ0mjawZnA4FZnCOyLoK05LMH9gjJ44TUyCOs0PWaqBZ2gLpCjltWAmjQBvWRyNnFC5JXfBMGW3xmSFfWW3xmSFfgU54IQ3DGZXXBAvSa9iu8jzA0zRsVHkGqNYCNOo/gHr9gA0qzwA1egdR5YXab00mv492r1FeGPB1H7q0ZP88WcO+ciKQNjoHI8oyd8j72aSsgzAhbYWkUcZDYGEw1rz5RAJI1iljBPql0CJEFTgFPKlU4GgaPhs5HtAiaRjicrwUPFBOFOiU0w1zRtIWICbrGMyFtaQfpmR5KeiVMwaTRtIN6FFeJeBJugIpT84mYFBS47eJsAqcTvVL2gb0KGMQOKTS1ibhvVFGaBLYo1LWfoHFBuVUzwJ9WimaBHYqb9088LxBxbwBrE4Vqv2KdbtWeeGzKSC9S8W8EZx413rfSOH6fXfTWB8atcLu7yy30GtUgumYotDvPl//0nBhNEXgzUCrUXledX1tpdFyfwF8RgXXQ7P1gQAAAABJRU5ErkJggg==" alt="Bad, I'm unsatisfied">
</a><br>
Bad, I'm unsatisfied
</td>
</tr>
</tbody>
</table>
Development Changes
Database changes
The following tables have been changed:
- All
feedback_*
tables have been renamed and prefixed byticket_
article_rating
table renamed toarticle_feedback_log
article_rating.score
column renamed toarticle_feedback_log.rating
article.positive_rating
andarticle.total_rating
columns have dropped. The information is still available in thearticle_feedback_log
table
API changes
The following API functions have backward incompatible changes:
- The
default_icon
parameter on thePOST
andPUT /api/selfservice/type
endpoints has been renamed toicon
, and now accepts FontAwesome icon names as values, such as 'fa-book
'. - The
score
parameter on thePOST /api/selfservice/article/{id}/rating
endpoint has been renamed torating
Framework
We've upgraded the core framework (laravel/framework
) from version 5.5 to 6. Some of these releases have
breaking changes which may break any code you've written.
Notable changes
str_*
functions have been replaced by\Illuminate\Support\Str::*
array_*
functions have been replaced by\Illuminate\Support\Arr::*
Event::fire
is nowEvent::dispatch
Cache::*
saving items to the cache for a certain period of time now uses seconds instead of minutes- The
Input
facade, which was primarily a duplicate of theRequest
facade, has been removed. If you are using theInput::get
method, you should now call theRequest::input
method. All other calls to theInput
facade may simply be updated to use theRequest
facade. - Route parameters which do not match the route definition are no longer replaced and instead added as query parameters. For more information please read: URL Generation.
For a full list of changes, please read through the Laravel upgrade guides:
We recommend to test your plugin on a development installation before upgrading your help desk. Please contact us for a development license key if you don't already have one.
Views
Any jQuery code used before the scripts_footer
block must be moved to the body end
. jQuery is now loaded later to improve page rendering times.
The extendedViews
and overriddenViews
options have now also been removed. These have not been documented since being replaced with View Hooks in 2.4.0, we recommend to read over the extending templates plugin documentation if your plugin makes use of either of these.
Template Changes
Both the operator and frontend templates have been completely rewritten and many JavaScript libraries updated or removed. If you've made template modifications please review your files.
If you were using of the below functions in canned responses, email templates or your own custom portal templates then please read on:
-
array_get
Thearray_get
function no longer exists. Please use the|get
filter instead.
For examplemy_var|get('foo.bar', 'default')
-
str_limit
Thestr_limit
function no longer exists. Please use the|limit
filter instead.
For examplemy_var|limit(100)
.
Config File Changes
config/app.php
The following logging related configuration options have been removed:
log
log_max_files
log_level
config/trustedproxy.php
The config file refers to class constants which are no longer available - this may result in fatal PHP errors if not
replaced. We recommend to compare your trusted proxy configuration with our new default and copy over any changes. View
the /config/trustedproxy.php
file and
Configuring a Trusted Proxy section for more information.
Other Important Changes
-
Self-service type frontend icons
The self-service section now utilises FontAwesome for the type frontend icon option, making it much easier to set a custom icon. All existing custom icons will be wiped on upgrade, and we would recommend to review your self-service type settings after in case you wish to set different icons. -
LDAP accounts
LDAP linked operator accounts are now restricted to authentication via the LDAP service. If you need to login via both your help desk email / password and also the LDAP service then we've added a backwards compatible configuration option. -
configureMonologUsing
function removed
The$app->configureMonologUsing
function has been removed. If you had made any modifications to our core unencoded files then you may be affected. Logging can be now configured via a new/config/logging.php
file. See Logging Configuration for more information on how to edit the new configuration file. -
Email commands
HTML is no longer supported in email commands; any HTML will be removed. For example if you enter{% note <strong>Hello</strong> %}
thenHello
is not going to be bold and the<strong>
tag will be removed.