Category: Thrift

Getting Kayako V4 (Classic) to work with PHP7

I bought an owned licence for Kayako V3 around 2006. I paid $500 for a perpetual Kayako “Fusion” licence, which was the licence that included helpdesk and live chat. I also paid a smaller amount, I believe around $150, to be able to whitelabel it.

At the time, it seemed like a lot of money (aside from inflation, I was 15), but it turned out to be one of the best investments I’ve ever made. V4 was released a few years later and Kayako allowed V3 perpetual licence holders to upgrade free of charge.

Nowadays, Kayako is, like most of its competitors, embracing the SaaS model, no doubt because it is much more lucrative. It has renamed V4 to Kayako Classic. They tried to persuade those in the same position as me to upgrade the new Kayako, which is SaaS only, found that most people didn’t want to, and eventually decided to maintain Kayako Classic alongside the new SaaS product but have required perpetual licence holders to move onto a subscription to obtain upgrades, at a price slightly below their core product’s price.

I have no idea what the uptake on this is. I would have guessed it would be very small given how hard it is to persuade a company to give up an perpetual licence in exchange for a subscription, but to be fair to them, they are still developing Kayako Classic and I understand that doesn’t come cheap.

In January 2016, the community requested PHP7 support. I didn’t give it much thought until recently because PHP5.6 is due to become end of life in December. We are avoiding PHP5.6 wherever possible but there are several good reasons to keep Kayako for a little while longer, including that some of its advanced features help us with ISO9001 compliance.

On their forum, Kayako made it sound like PHP7 support would involve major changes, but I wanted to see what was really involved, so I switched out PHP5.6 for PHP7.1* and made a few small tweaks inspired by one forum member’s comments.

It is worth noting at this point that I chose PHP7.1 because the mcrypt PHP module has been deprecated since PHP7.2. It will be moving to PECL but this is something that I wanted to explore separately. That said, PHP7.1 will become end of life in December 2019 and by that time, I would imagine we’d look to replace Kayako anyway.

Changes I Made (take a backup first!)

1. Open __swift/library/Exception/class.SWIFT_Exception.php and look for public function GlobalErrorHandler around line 160. Change the first if statement to:

2. Replace the __swift/thirdparty/adodb5 with the latest release from ADOdb.

3. Inside __swift/thirdparty/adodb5, copy datadict-mysql.inc.php to datadict-mysqli.inc.php

4. Open datadict-mysqli.inc.php and change:

to:

5. Clear your cache by removing everything inside __swift/cache

What Doesn’t Work

We’ve been using this setup for about a week now and I have only encountered one thing that is broken – ticket billing.

This also looks like an easy fix but it’s not something we use.

Conclusion

Remember that your mileage may vary and, it it does, Kayako won’t be there to help you! However, it looks like almost everything works these minor changes.