Squiz Labs Blog - The latest news from the R&D division of Squiz®

Subscribe to our RSS feeds

Squiz Matrix Newsletter #503

Welcome back! It's 2015 and the year ahead is set to be a busy one for the Squiz Labs team. We already have some exciting developments in the works and trust me, there is a lot to look forward to!

Unfortunately, all can not be revealed just yet... but we have some nice goodies to tide you over.

Our first releases of the year will be out next week and we already have some new features to report, including enhancements to the system's Purge Trash tool.

Continue reading below for more information on all this weeks developments. 

Purge Trash Tool Enhancements

Due for release in version (TBA)

The Purge Trash tool in Squiz Matrix allows you to remove the assets on your system that are currently in the trash.

Previously, the Purge Trash screen allowed you to purge either all assets in the trash, or those from a certain selection(s) of these assets (based on root node).

This feature introduces a new field to purge assets based on their age, as well as new scheduling options.

The Link Age field allows you to specify a time period value. If this field is set, when a user selects to purge the trash and clicks Commit, only links in the trash that are older than the specified time period will be purged.

The new Link Age field 

The Link Age field allows you to specify a time period value in either minutes, hours, days, weeks, months or years.

Additionally, a new Purge Trash Job Scheduling section has been added on the Purge Trash screen, allowing users to set a scheduled job for purging trash, where you can also specify the root nodes and/or link ages to purge.

You can set the time the purge should be scheduled, and can then specify whether or not to repeat the job at a selected time interval (minutes, hours, days, etc.).

These enhancements have been added to aid in the purging of trash on systems with large numbers of assets in their trash. These tools should help streamline the purging process and allow users to more accurately identify and select the assets they want to purge.

New Exiftool Tool for Metadata Extraction

Due for release in version (TBA)

Squiz Matrix will now use Exiftool for metadata extraction, which supports different image metadata formats such as EXIF, XMP, IPTC, etc.  The previous tool used by Matrix, the PHP JPEG Metadata Toolkit was used for extracting XMP data only.

Once upgrading to Matrix 5.2, systems using the old PHP JPEG Metadata Toolkit tool will receive a warning regarding the missing Exiftool when attempting to create or upload new image files.

Additionally, previously extracted image metadata using the old tool will remain unaffected, until the metadata is re-extracted using the new Exiftool tool.

Squiz Matrix Newsletter #502: The Year That Was...

While Squiz Labs has been as busy this year as we ever have, 2014 was a year headlined by a few major announcements and releases, rather than a constant stream of news. This meant that throughout the majority of the year, we've were working hard towards what has been some of the most significant developments ever for our Squiz Matrix product, headlined by the release of Matrix 5.

In this week's newsletter, we take a look back at the year that was. So grab yourself a cup of coffee, make sure your comfortable and let's relive 2014.

Squiz Labs 2014

As is the norm, the year began with a string of our first Matrix releases of 2014 on January 6th. Versions 4.16.6 and 4.18.2 were the first two of fifty-six releases of Squiz Matrix this year!  Head over to our Release Information page for a full list of this year's releases.

Squiz Matrix 5 

In March, the upcoming release of Squiz Matrix 5 was announced for late April. With months of development, Matrix 5 was poised to be the most significant leap in the history of our product, with notable updates and improvements to almost every aspect of the system. Two of the most apparent changes were our new Administration and Edit+ for Squiz Matrix interfaces, which we headlined in our announcement blog post.

Later in March, Matrix 5 went into testing and a release date of Monday, April 28 was set. 

Also in late March, Labs celebrated Harmony Day with a multicultural bring-and-share lunch. It was a delicious melting pot of cuisines, with main dishes including baked macaroni, stir-fried beef, prawn noodles, pastizzi, chicken curry, spinach cob dip, pierogi, momo dumplings, not to mention lemon semolina cake, profiteroles, and bread and butter pudding for dessert. So good!

Squiz Labs Harmony Day

April was an extremely busy month, leading up to the release of Matrix 5. We kicked off the month by announcing that, as of Matrix 5, the Edit+ for Squiz Matrix WYSIWYG editor would be available for use within the administration interface for Squiz Plus customers.

We also made changes to the way we distributed access to our Matrix code versioning system, with Matrix moving to Git from the release of Matrix 5.

Later in April, we outlined a new release schedule for Squiz Matrix and updated versioning system. As of Matrix 5, Labs moved to a more ad hoc release system, releasing new versions as they were warranted.

It was also time to say farewell to the trusty Bug Tracker, that had been around since the launch of Matrix and had seen almost 7000 bugs reviewed and resolved. With Matrix 5, bug management moved to Squiz's internal Roadmap system, Squizmap.

Finally, at the end of April, Squiz Matrix 5 had arrived! Matrix 5 welcomed new, completely revamped interfaces for both the Administration and Edit modes, as well as new Marketo integration tools, conditional content rules, and support for the Edit+ Editor in the back-end.

In May, Squiz Labs revealed our brand new logo. It was pretty similar to our previous logo, except ... better. We made some minor adjustments to bring Labs more inline with the rest of Squiz. Did you know that the Labs logo is an ambigram, meaning that it can be turned 180° and still look the same? I think that's kind of awesome.

Squiz Labs Logo

Towards the end of June, we announced a new Maintenance Mode for Squiz Matrix designed to assist in the system upgrade process. This mode, when enabled, would disable the functionality of specified assets on the front-end, instead printing a maintenance message for your users.

The Maintenance Mode Enabled Message

News for July was headlined by our announcement of Matrix 5.1 and, as as we approached the September release, we detailed much of the exciting new functionality that could be looked forward to.

In August, we presented our new depreciation system for old and unused assets and features, which was to be implemented with out Matrix 5.1 release. We also announced a number of assets that would be moving into the first phase of the deprecation process in the upcoming release.

Also in August, we released v.1.7.0 of Squiz Roadmap, containing a bunch of great new functionality, including a new Batch Edit interface, a new way to easily move ideas between projects, and a new project creation system. To read more, check out the What's New in the Latest Release of Squiz Roadmap? blog post.

On the 1st of September, Squiz Matrix 5.1 was made available, our first minor release since we had unveiled Matrix 5 back in April. It would be an overstatement to say that Matrix 5.1 was jam-packed with functionality, with over sixty brand new features and enhancements!

In early December, the Squiz Matrix Newsletter celebrated our 500th edition. We celebrated with some cool facts about the Matrix newsletter (Did you know it's been running for over 10 years now?) as well as some of our favourite past newsletters.

We wrapped up the year this week with our Labs end-of-year celebration lunch, and a Christmas morning tea, complete with secret santa gifts! It has certainly been a fun way to cap off the busy year.

Xmas Morning Tea

2014 was a year of development and growth for Squiz Labs, most notably for our Squiz Matrix product. We're definitely proud of the leaps and bounds that Matrix has made over the past year, along with our other products and releases.

We do have a lot of other exciting developments just hanging in the wings, waiting for their moment to shine! 2015 is sure to be another big year for Squiz Labs, so stay tuned!

2013 Xmas Logo

On behalf of the Squiz Labs team, we want to wish all our readers a very Merry Christmas and a Happy New Year. Have an enjoyable and safe holiday break. We'll see you all again in 2015!

Squiz Matrix Newsletter #501

As we near the end of the year, the busy elves here in the Squiz Labs office have been hard at work, crafting up two new releases of Squiz Matrix this week! Versions and are patch releases, each containing a variety of bug fixes, as well as a minor enhancement for our 5.1 release.

Xmas Tree 

Next week will be our last full working week of the year. We'll be releasing our final Matrix releases of the year, versions and on Wednesday, December 17th.

It will also be our last newsletter of the year. As usual, we'll be taking a look back at the year's highlights in our Squiz Labs 2014 retrospective. Be sure to check back next week for that!


This week we have one new feature to report, the ability to clone assets within the Edit+ for Squiz Matrix interface. Continue reading below for more information on all this week's developments.

Edit+ for Squiz Matrix: Clone Asset Tool

Due for release in version (TBA)

Along with moving and link assets, Squiz Matrix's Administration Interface allows users to clone assets, creating a copy of the asset and any of its dependent assets in another area of your system.

Learn more about cloning an asset.

This functionality, however, was not previously available when using the Edit+ for Squiz Matrix editing interface. 

This feature introduces the ability to clone assets within Edit+ via a new Clone Existing Asset button in the Asset Creation Wizard pop-up (accessed when creating a new asset).

The Clone Existing Asset pop-up 

Clicking this button will display the Clone Existing Asset pop-up, allowing you to select the asset you want to clone, enter a name for the cloned asset and specify where in the system you want to create the asset.

When you have configured these settings, clicking the Clone button will create a clone of your asset.

Cloning an asset 

This feature has been added to further enhance the Edit+ for Squiz Matrix interface and the functionality available. 

Squiz Matrix Newsletter #500

Today, we've reached a rather big milestone for the Squiz Matrix Newsletter, our 500th issue!

In order to commemorate this achievement, we've created one of those fancy wall plate things that you always see available at truly momentous occasions. We've tried to maintain the gaudiness extravagance that you often see in these beautiful pieces.

This special Squiz Matrix Newsletter Quincentenary plates are available now, in a strictly limited run of infinite. To order your plate, simply right click on the image below and select Save ;)


If you hover over the plate (and the stars align) you might get another little surprise ... gotta love Grumpy Cat! (If you see nothing, you might need to clear your browser cache).

In all seriousness though, five hundred is a pretty big stack of newsletters, so before we get to this week's features, let's take a look at some fast facts about the history of the Squiz Matrix Newsletter.

Extra! Extra! Read all about it

  • It's been almost exactly ten years ago that we released the first issue of the newsletter, back on December 10th, 2004.
  • The newsletter was originally titled the MySource Matrix Developer Newsletter and used to be sent to subscribers via email.
  • It wasn't until our 280th issue, back in June 2012, that we began posting the newsletters here on the Squiz Labs blog.
  • Four different people have been in charge of writing the newsletter.
  • Over the years we've reported on ... well, we don't know exactly how many features and enhancements we've written up. We'd guess in the thousands ... let's just say 'a lot'.
  • Based on the first release of the newsletter, we should be up to issue #522 this week. So we've misplaced twenty-two issues somewhere... oops.

 If you've just joined us, here's a list of some our more noteworthy newsletters:

Well, enough with all the newsletter talk... we've got a great new features to get to!


This week we have one new feature to report, new Copy/Paste from Word and Drag & Drop Image functionality on the Edit+ WYSIWYG editing area. Continue reading below for more information on all this week's developments. 

Edit+ WYSIWYG: Copy/Paste from Word and Drag & Drop Image

Due for release in version (TBA)

This feature introduces a new extension that will allow you to copy and paste, or drag and drop and image located on your local computer or inside a Word document, into the Edit+ WYSIWYG editing area.

Once an image has been copied into the WYSIWYG, a temporary image preview will be displayed, marked with a dotted blue border, along with the inline Image plugin tool.

Copied image preview

The image preview will maintain the original image's width and height, so that you can visualise how the image will look amongst your content.

The inline Image tool allows users to specify the settings of the image, including its URL and location, before uploading it to your system.

The inline Image plugin tool

One an image has been uploaded, you can click Commit to save your changes on the page. If click Commit before uploading the image you have dropped or copied into your content, Matrix will remind you that you of this and prompt you to upload your image.  

The Drag and Drop Image functionality is currently available on all latest Firefox, Chrome and Safari browsers, as well as IE10 and 11.

The Copy/Paste from Word functionality is available on the latest version of Chrome and IE11. 

PHP_CodeSniffer 2.0.0 released

Nineteen months ago, I started work on a project to allow PHP_CodeSniffer to fix the problems that it finds. Doing this required a lot of changes to the core classes, a lot of iteration and refactoring of the fixing and testing code, and an enormous amount of time and testing across many PHP projects to ensure I am confident enough to release something that actually modifies code. I could keep writing unit tests forever, but I've finally got to a point where I am happy to release this first version of the PHP Code Beautifier and Fixer (PHPCBF), for when you just can't be bothered fixing coding standard errors yourself.

I originally started with a goal of being able to fix the most commonly found errors when checking PHP projects using the PSR2 coding standard, but I expanded that goal to include all coding standards (including custom standards) and supported file types (PHP, JS and CSS). So as of version 2.0.0, when you run PHP_CodeSniffer and get  your standard report of the errors found, you will now be able to see which of those errors can be automatically corrected by PHPCBF. Sample report output can be seen on the wiki: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Fixing-Errors-Automatically

Custom Coding Standards

If you have a custom coding standard that uses the sniffs included with PHP_CodeSniffer, you will find that many of the errors your standard finds are already fixable with PHPCBF. PHP_CodeSniffer comes with just over 600 unique errors and PHPCBF is able to fix just over half of those. The rest of the errors are almost entirely made up of things that cannot be automatically fixed, such as variable names and changes to comparison operators.

If you have your own custom sniffs, you are able to add auto-fixing code to them using the new auto-fixing tools built into PHP_CodeSniffer. You have access to all the normal token-based functions you are used to, as well as some new fixer-specific functions to do things like replacing token content and adding content and newlines to tokens. PHPCBF is also able to group a set of changes so that they are all applied or rejected together, detect sniffs trying to fix the same piece of code in the same run, and detect and resolve conflicting changes that are being applied.

The Diff Report

Along with the new PHPCBF script, PHP_CodeSniffer adds a new report type; the diff report. If you don't like the idea of a script fixing errors automatically, you can instead ask PHP_CodeSniffer to output a diff of the fixes that it would make using the command line argument --report=diff. If you like what you see, you can simply change the phpcs command to phpcbf, leave all the command line options the same, and let PHPCBF patch your files.

More Features

Version 2.0.0 brings a lot more changes that just auto-fixing, including:

View the full 2.0.0 changelog at PEAR or Github

Thank You

So many developers have helped test this auto-fixing code over the last year and half. More than twenty developers have directly contributed code to make the auto-fixing more accurate and more still have reported bugs to help diagnose issues with the fixing.

But I'd like to send special thanks to Alexander Obuhovich (@aik099 on Github and Twitter) for both testing PHPCBF and for being so active on Github issues and PRs, and to the developers working on the WordPress coding standards (https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards) for working with me to find solutions for running and testing complex custom coding standards and for trying out the auto-fixing code in their standard.

Version 1.5.6

I've also released version 1.5.6 today and I'm keeping the 1.5 branch around for a little while longer to make it easier to upgrade to 2.0, especially for developers who need to change custom coding standards. If you have having problems with the 2.0 version, please use 1.5.6 in the meantime.

View the full 1.5.6 changelog at PEAR or Github.

Stay up to date on all PHP_CodeSniffer changes, including new features and releases, by subscribing to the RSS feed or following me on Twitter.

Squiz Labs

R & D division of Squiz Pty Ltd

Open source web experience management solutions

Squiz Labs is the research and development division of Squiz, the company behind the Squiz Suite of web experience management and development tools.

Our PHP and JavaScript developers are responsible for producing innovative enterprise-quality software while our interface designers and testing team ensure our products both look great and are easy to use.