This is a changelog for Piwik platform developers. All changes for our HTTP API's, Plugins, Themes, etc will be listed here.
- The pivotBy and related query parameters can be used to pivot reports by another dimension. Read more about the new query parameters here.
- Updated AngularJS from 1.2.13 to 1.2.25
generate:angular-directiveLet's you easily generate a template for a new angular directive for any plugin.
- Several APIs will now expose a new metric
nb_userswhich measures the number of unique users when a User ID is set. - New APIs have been added for Content Tracking feature: Contents.getContentNames, Contents.getContentPieces
- The
Piwik\Menu\MenuAbstract::add()method is deprecated in favor ofaddItem(). Read more about this here: #6140. We do not plan to remove the deprecated method before Piwik 3.0.
- It is now easier to generate the URL for a menu item see #6140, urlForDefaultAction(), urlForAction(), urlForModuleAction()
core:clear-cachesLets you easily delete all caches. This command can be useful for instance after updating Piwik files manually.
- The
'json'API format is considered deprecated. We ask all new code to use the'json2'format. Eventually when Piwik 3.0 is released the'json'format will be replaced with'json2'. Differences in the json2 format include:- A bug in JSON formatting was fixed so API methods that return simple associative arrays like
array('name' => 'value', 'name2' => 'value2')will now appear correctly as{"name":"value","name2":"value2"}in JSON API output instead of[{"name":"value","name2":"value2"}]. API methods like SitesManager.getSiteFromId & UsersManager.getUser are affected.
- A bug in JSON formatting was fixed so API methods that return simple associative arrays like
- If an API returns an indexed array, it is now possible to use
filter_limitandfilter_offset. This was before only possible if an API returned a DataTable. - The Live API now returns only visitor information of activated plugins. So if for instance the Referrers plugin is deactivated a visitor won't contain any referrers related properties. This is a bugfix as the API was crashing before if some core plugins were deactivated. Affected methods are for instance
getLastVisitDetailsorgetVisitorProfile. If all core plugins are enabled as by default there will be no change at all except the order of the properties within one visitor.
core:run-scheduled-tasksLet's you run all scheduled tasks due to run at this time. Useful for instance when testing tasks.
- We removed our own autoloader that was used to load Piwik files in favor of the composer autoloader which we already have been using for some libraries. This means the file
core/Loader.phpwill no longer exist. In case you are using Piwik from Git make sure to runphp composer.phar self-update && php composer.phar installto make your Piwik work again. Also make sure to no longer includecore/Loader.phpin case it is used in any custom script. - We do no longer store the list of plugins that are used during tracking in the config file. They are dynamically detect instead. The detection of a tracker plugin works the same as before. A plugin has to either listen to any
Tracker.*orRequest.initAuthenticationObjectevent or it has to define dimensions in order to be detected as a tracker plugin.
- Javascript Tracking API: if you are using
getCustomVariablefunction to access custom variables values that were set on previous page views, you now must also callstoreCustomVariablesInCookiebefore the first call totrackPageView. Read more about Javascript Tracking here. - The settings API will receive the actual entered value and will no longer convert characters like
&to&. If you still want this behavior - for instance to prevent XSS - you can define a filter by setting thetransformproperty like this:$setting->transform = function ($value) { return Common::sanitizeInputValue($value); } - Config setting
disable_merged_assetsmoved fromDebugsection toDevelopment. The updater will automatically change the section for you. API.getRowEvolutionwill throw an exception if a report is requested that does not have a dimension, for instanceVisitsSummary.get. This is a fix as an invalid format was returned before see #5951MultiSites.getAllreturns from now on always an array of websites. In the past it returned a single object and it didn't contain all properties in case only one website was found which was a bug see #5987
The following events are considered as deprecated and the new structure should be used in the future. We have not scheduled when those events will be removed but probably in Piwik 3.0 which is not scheduled yet and won't be soon. New features will be added only to the new classes.
API.getReportMetadata,API.getSegmentDimensionMetadata,Goals.getReportsWithGoalMetrics,ViewDataTable.configure,ViewDataTable.getDefaultType: use Report class instead to define new reports. There is an updated guide as well Part1WidgetsList.addWidgets: use Widgets class instead to define new widgetsMenu.Admin.addItems,Menu.Reporting.addItems,Menu.Top.addItems: use Menu class insteadTaskScheduler.getScheduledTasks: use Tasks class instead to define new tasksTracker.recordEcommerceGoal,Tracker.recordStandardGoals,Tracker.newConversionInformation: use Conversion Dimension class insteadTracker.existingVisitInformation,Tracker.newVisitorInformation,Tracker.getVisitFieldsToPersist: use Visit Dimension class insteadViewDataTable.addViewDataTable: This event is no longer needed. Visualizations are automatically discovered if they are placed within aVisualizationsdirectory inside the plugin.
As a plugin developer you might want to reuse existing translation keys. You can now find all available translations and translation keys by opening the page "Settings => Development:Translation search" in your Piwik installation. Read more about internationalization here.
It is now possible to use the filter_sort_column parameter when requesting Live.getLastVisitDetails. For instance &filter_sort_column=visitCount.
We are using @since annotations in case we are introducing new API's to make it easy to see in which Piwik version a new method was added. This information is now displayed in the Classes API-Reference.
- Report to add a new report
- Action Dimension to add a dimension that tracks action related information
- Visit Dimension to add a dimension that tracks visit related information
- Conversion Dimension to add a dimension that tracks conversion related information
- Dimension to add a basic non tracking dimension that can be used in
Reports - Widgets to add or modfiy widgets
- These Menu classes got new methods that make it easier to add new items to a specific section
- MenuAdmin to add or modify admin menu items.
- MenuReporting to add or modify reporting menu items
- MenuUser to add or modify user menu items
- Tasks to add scheduled tasks
generate:themeLet's you easily generate a new theme and customize colors, see the Theming guidegenerate:updateLet's you generate an update filegenerate:reportLet's you generate a reportgenerate:dimensionLet's you enhance the tracking by adding new dimensionsgenerate:menuLet's you generate a menu class to add or modify menu itemsgenerate:widgetsLet's you generate a widgets class to add or modify widgetsgenerate:tasksLet's you generate a tasks class to add or modify tasksdevelopment:enableLet's you enable the development mode which will will disable some caching to make code changes directly visible and it will assist developers by performing additional checks to prevent for instance typos. Should not be used in production.development:disableLet's you disable the development mode