Mojolicious::Plugin::Piwik - Use Piwik in Mojolicious
# On startup plugin 'Piwik' => { url => 'piwik.khm.li', site_id => 1 }; # In Template %= piwik_tag # In controller my $json = $c->piwik_api('API.getPiwikVersion');
Mojolicious::Plugin::Piwik is a simple plugin for embedding Piwik Analysis in your Mojolicious app. Please respect the privacy of your visitors and do not track more information than necessary!
Mojolicious::Plugin::Piwik inherits all methods from Mojolicious::Plugin and implements the following new ones.
# Mojolicious $app->plugin(Piwik => { url => 'piwik.khm.li', site_id => 1 }); # Mojolicious::Lite plugin 'Piwik' => { url => 'piwik.khm.li', site_id => 1 }; # Or in your config file { Piwik => { url => 'piwik.khm.li', site_id => 1 } }
Called when registering the plugin. Accepts the following parameters:
url - URL of your Piwik instance.
url
site_id - The id of the site to monitor. Defaults to 1.
site_id
embed - Activates or deactivates the embedding of the script tag. Defaults to true if Mojolicious is in production mode, defaults to false otherwise.
embed
true
false
token_auth - Token for authentication. Used only for the Piwik API.
token_auth
All parameters can be set either on registration or as part of the configuration file with the key Piwik.
Piwik
%= piwik_tag %= piwik_tag 1 %= piwik_tag 1, 'piwik.khm.li'
Renders a script tag that asynchronously loads the Piwik javascript file from your Piwik instance. Accepts optionally a site id and the url of your Piwik instance. Defaults to the site id and the url given when the plugin was registered.
This tag should be included at the bottom of the body tag of each website you want to analyse.
%= piwik_tag 'opt-out', width => 400
The special opt-out tag renders an iframe helping your visitors to disallow tracking via javascript. See the default tag helper for explanation of usage.
opt-out
<%= piwik_tag 'opt-out-link', begin %>Opt Out<% end %> # <a href="..." rel="nofollow">Opt Out</a>
The special opt-out-link renders an anchor link to the opt-out page to be used if the visitor does not allow third party cookies. See the default tag helper for explanation of usage.
opt-out-link
The 'opt-out' and 'opt-out-link' options are EXPERIMENTAL and may change in further releases!
# In Controller - blocking ... my $json = $c->piwik_api( 'Actions.getPageUrl' => { token_auth => 'MyToken', idSite => [4,7], period => 'day', date => 'today' } ); # ... or async $c->piwik_api( 'Actions.getPageUrl' => { token_auth => 'MyToken', idSite => [4,7], period => 'day', date => 'today' } => sub { my $json = shift; # ... } );
Sends an API request and returns the response as a hash or array reference (the decoded JSON response). Accepts the API method, a hash reference with request parameters as described in the Piwik API, and optionally a callback, if the request is meant to be non-blocking.
The Tracking API uses the method name Track and will forward user agent and referrer information based on the controller request as well as the url of the requested resource, unless Do-Not-Track is activated. The ip address is not forwarded.
Track
$c->piwik_api( Track => { idsite => '4', res => [1024, 768], action_url => 'http://khm.li/12', action_name => 'Märchen/Rapunzel' });
As the url parameter is used to define the Piwik instance, the url of the requested resource has to be named action_url.
action_url
Please remember that cookie-based opt-out can't be supported for the non-javascript Tracking API.
In addition to the parameters of the API references, the following parameters are allowed:
url - The url of your Piwik instance. Defaults to the url given when the plugin was registered.
secure - Boolean value that indicates a request using the https scheme. Defaults to false.
secure
idSite is an alias of site_id and idsite and defaults to the id of the plugin registration. Some parameters are allowed to be array references instead of string values, for example idSite (for analysis), date (for ranges) and res (for tracking).
idSite
idsite
date
res
my $json = $c->piwik_api( 'API.get' => { site_id => [4,5], period => 'range', date => ['2012-11-01', '2012-12-01'], secure => 1 });
In case of an error, piwik_api tries to response with a meaningsful description in the hash value of error. If an image is expected instead of a JSON object (as for the Tracking or the ImageGraph API), the image is base64 encoded and mime-type prefixed in the hash value of image, ready to be embedded as the src of an <img /> tag.
piwik_api
error
ImageGraph
image
src
<img />
my $src_url = $c->piwik_api_url( 'ImageGraph.get' => { apiModule => 'VisitsSummary', apiAction => 'get', graphType => 'evolution', period => 'day', date => 'last30', width => 500, height => 250 }); # In template <img src="<%= $src_url %>" alt="Piwik analysis" />
Creates the URL of an API request and returns the Mojo::URL object. Accepts the same parameters as the piwik_api helper, excluding the callback.
This helper is EXPERIMENTAL and may change without warnings!
The plugin currently lacks support for eCommerce tracking.
To test the plugin against your Piwik instance, create a configuration file with the necessary information as a perl data structure in t/auth.pl and run make test, for example:
t/auth.pl
make test
{ token_auth => '123456abcdefghijklmnopqrstuvwxyz', url => 'http://piwik.khm.li/', site_id => 1, action_url => 'http://khm.li/Test', action_name => 'Märchen/Test' };
The user agent to be ignored in your Piwik instance is called Mojo-Test.
Mojo-Test
Mojolicious.
https://github.com/Akron/Mojolicious-Plugin-Piwik
Copyright (C) 2012-2014, Nils Diewald.
This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.
Please make sure you are using Piwik in compliance to the law. For german users, this information (last accessed on 2013-03-03) may help you to design your service correctly.
This plugin was developed for khm.li - Kinder- und Hausmärchen der Brüder Grimm.
To install Mojolicious::Plugin::Piwik, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Mojolicious::Plugin::Piwik
CPAN shell
perl -MCPAN -e shell install Mojolicious::Plugin::Piwik
For more information on module installation, please visit the detailed CPAN module installation guide.