SondesPiwik » Historique » Version 5
Version 4 (Christophe Deseure, 11/10/2011 14:31) → Version 5/10 (Arnaud FORNEROT, 01/04/2014 10:39)
h1. Mise en place d'une sonde dans une application
h2. Insertion __document de la sonde travail__
L'appel Une application doit être enregistrée sur le serveur piwik comme un site.
On renseigne un nom d'application et une url d'accès (ou plus).
En échange, on obtient l'identifiant piwik de l'application.
Il existe plusieurs moyens de remonter des statistiques côté client :
- en javascript : http://piwik.org/docs/javascript-tracking/
- à l'aide d'une API PHP : http://piwik.org/docs/tracking-api/
h2. Utilisation du javascript
Côté application, la sonde a besoin de 2 paramètres afin d'identifier le serveur piwik est à présent normalisé.
En premier lieu votre application doit être CASsifié pour récupérer utiliser :
- son url sans le profil protocole "http"
- l'identifiant de l'utilisateur. l'application
En second lieu vous devez localiser dans votre application, Et, il faut pouvoir en désactiver l'utilisation.
Pour une sonde simple, consistant à enregistrer tout accès à une page spécifique, il suffit d'ajouter un emplacement bloc de javascript.
Le client piwik va notamment envoyer l'url de la page et son titre qui sera toujours exécuter sont comptabilisés dans l'onglet "Actions".
Pour une sonde donnée, la page peut varier car les paramètres fournis en GET sont présents.
De plus, le titre de la page peut ne pas être représentatif.
Je propose donc qu'une sonde redéfinisse ces valeurs afin d'avoir des remontées parlantes.
Cela donnerait (PIWIK_URL et ID_SITE étant des variables à gérer) : comme un header ou un footer.
Et insérer le code php suivant
<pre>
include("/var/www/html/piwik/envoleProfil.php"); <!-- Piwik -->
echo "<script src='/piwik/envoleTrackeur.js.php?appli=monappli&profil=$profil'></script>"; <script type="text/javascript">
var pkBaseURL = ("https:" == document.location.protocol) ? "https://" : "http://";
pkBaseURL += PIWIK_URL;
document.write(unescape("%3Cscript src=\'" + pkBaseURL + "piwik.js\' type=\'text/javascript\'%3E%3C/script%3E"));
</script><script type="text/javascript">
try {
var piwikTracker = Piwik.getTracker(pkBaseURL+"piwik.php",ID_SITE);
piwikTracker.setDocumentTitle("...");
piwikTracker.setCustomUrl("...");
piwikTracker.trackPageView();
} catch( err ) {}
</script>
<!-- End Piwik Code -->
</pre>
*include("/var/www/html/piwik/envoleProfil.php");*
Permet Pour prendre l'exemple de récupérer la procédure adoptée dans le profil cahier de l'utilisateur textes (cdt), les 2 variables sont à enregistrer dans la variable $profil
En fonction de l'application, l'emplacement que vous utiliserez pourrait table "cdt_params".
Si elles ne plus avoir l'objet phpCAS nécessaire au calcul de profil. sont pas fournies ou sont vides, les sondes sont inactives.
Dans ce cas, il vous suffira de Celles-ci sont récupérées ensuite en session par le réinitialiser via les commandes suivantes script "inc/sessions_params.php" :
<pre>
require_once('CAS-1.3.1/eoleCAS.php');
require_once('configCAS/cas.inc.php');
// Chargement client CAS
eolephpCAS::client(__CAS_VERSION, __CAS_SERVER, __CAS_PORT, __CAS_URL, false);
if (__CAS_VALIDER_CA) if(mysql_num_rows($piwik_url_db)>0)
{
eolephpCAS::setCasServerCACert(__CAS_CA_LOCATION);
$row_piwik_url_db = mysql_fetch_assoc($piwik_url_db);
$_SESSION['piwik_url'] = trim($row_piwik_url_db['param_val']);
if(!empty($_SESSION['piwik_url']) && substr($_SESSION['piwik_url'], -1)!="/") $_SESSION['piwik_url'] .= "/"; //précaution
}
else $_SESSION['piwik_url'] = '';
if(mysql_num_rows($piwik_idsite_db)>0)
{
if (method_exists("eolephpCAS", "setNoCasServerValidation")){
eolephpCAS::setNoCasServerValidation();
$row_piwik_idsite_db = mysql_fetch_assoc($piwik_idsite_db);
$_SESSION['piwik_idsite'] = intval($row_piwik_idsite_db['param_val']);
}
} else $_SESSION['piwik_idsite'] = 0;
</pre>
*echo "<script src='/piwik/envoleTrackeur.js.php?appli=monappli&profil=$profil'></script>";*
Permet d’exécuter Puis, la sonde en elle-même. ressemble à ceci dans le cas d'une consultation :
<pre>
En remplaçant monappli par if(!empty($_SESSION['piwik_url']) && !empty($_SESSION['piwik_idsite'])) //sonde active dès que les 2 paramètres sont valides
{
echo '
<!-- Piwik -->
<script type="text/javascript">
var pkBaseURL = ("https:" == document.location.protocol) ? "https://" : "http://";
pkBaseURL += "'.$_SESSION['piwik_url'].'";
document.write(unescape("%3Cscript src=\'" + pkBaseURL + "piwik.js\' type=\'text/javascript\'%3E%3C/script%3E"));
</script><script type="text/javascript">
try {
var piwikTracker = Piwik.getTracker(pkBaseURL+"piwik.php",'.$_SESSION['piwik_idsite'].');
piwikTracker.setDocumentTitle("consultation/'.$row_RsClasse['nom_classe'].'");
piwikTracker.setCustomUrl("cdt/consulter.php");
piwikTracker.trackPageView();
} catch( err ) {}
</script>
<!-- End Piwik Code -->';
}
</pre>
L'utilisation du "/" dans le véritable nom du titre ou de votre application.
Ce script exécutera la sonde sur les serveurs page permet une catégorisation dans piwik potentiellement paramétrés sur votre serveur.
* Dans tout les cas le serveur piwik présent sur votre serveur.
* Un serveur centralisé soit au niveau académique, régionale, groupe d'école comme vous le souhaitez.
* Un serveur national qui regroupe l'ensemble des Envole et l'affichage d'une arborescence.
h2. Paramétrer un serveur centralisé
Pour cela aller plus loin, on peut enregistrer aussi l'utilisation de liens externes et le chargement de fichiers mais dans ce cas, il vous suffira d'installer un Envole qui devra évidemment être visible sur faut veiller à priori à ce que le net et posséder un certificat valide. code javascript s'exécute après le chargement de la page.
Il vous suffira pas la suite dans l'ensemble des Envole sondée d'y paramétrer l'adresse du piwik centralisé. faut alors ajouter ceci :
<pre>
!!
piwikTracker.enableLinkTracking();
</pre>
h2. Insertion __document de la sonde travail__
L'appel Une application doit être enregistrée sur le serveur piwik comme un site.
On renseigne un nom d'application et une url d'accès (ou plus).
En échange, on obtient l'identifiant piwik de l'application.
Il existe plusieurs moyens de remonter des statistiques côté client :
- en javascript : http://piwik.org/docs/javascript-tracking/
- à l'aide d'une API PHP : http://piwik.org/docs/tracking-api/
h2. Utilisation du javascript
Côté application, la sonde a besoin de 2 paramètres afin d'identifier le serveur piwik est à présent normalisé.
En premier lieu votre application doit être CASsifié pour récupérer utiliser :
- son url sans le profil protocole "http"
- l'identifiant de l'utilisateur. l'application
En second lieu vous devez localiser dans votre application, Et, il faut pouvoir en désactiver l'utilisation.
Pour une sonde simple, consistant à enregistrer tout accès à une page spécifique, il suffit d'ajouter un emplacement bloc de javascript.
Le client piwik va notamment envoyer l'url de la page et son titre qui sera toujours exécuter sont comptabilisés dans l'onglet "Actions".
Pour une sonde donnée, la page peut varier car les paramètres fournis en GET sont présents.
De plus, le titre de la page peut ne pas être représentatif.
Je propose donc qu'une sonde redéfinisse ces valeurs afin d'avoir des remontées parlantes.
Cela donnerait (PIWIK_URL et ID_SITE étant des variables à gérer) : comme un header ou un footer.
Et insérer le code php suivant
<pre>
include("/var/www/html/piwik/envoleProfil.php"); <!-- Piwik -->
echo "<script src='/piwik/envoleTrackeur.js.php?appli=monappli&profil=$profil'></script>"; <script type="text/javascript">
var pkBaseURL = ("https:" == document.location.protocol) ? "https://" : "http://";
pkBaseURL += PIWIK_URL;
document.write(unescape("%3Cscript src=\'" + pkBaseURL + "piwik.js\' type=\'text/javascript\'%3E%3C/script%3E"));
</script><script type="text/javascript">
try {
var piwikTracker = Piwik.getTracker(pkBaseURL+"piwik.php",ID_SITE);
piwikTracker.setDocumentTitle("...");
piwikTracker.setCustomUrl("...");
piwikTracker.trackPageView();
} catch( err ) {}
</script>
<!-- End Piwik Code -->
</pre>
*include("/var/www/html/piwik/envoleProfil.php");*
Permet Pour prendre l'exemple de récupérer la procédure adoptée dans le profil cahier de l'utilisateur textes (cdt), les 2 variables sont à enregistrer dans la variable $profil
En fonction de l'application, l'emplacement que vous utiliserez pourrait table "cdt_params".
Si elles ne plus avoir l'objet phpCAS nécessaire au calcul de profil. sont pas fournies ou sont vides, les sondes sont inactives.
Dans ce cas, il vous suffira de Celles-ci sont récupérées ensuite en session par le réinitialiser via les commandes suivantes script "inc/sessions_params.php" :
<pre>
require_once('CAS-1.3.1/eoleCAS.php');
require_once('configCAS/cas.inc.php');
// Chargement client CAS
eolephpCAS::client(__CAS_VERSION, __CAS_SERVER, __CAS_PORT, __CAS_URL, false);
if (__CAS_VALIDER_CA) if(mysql_num_rows($piwik_url_db)>0)
{
eolephpCAS::setCasServerCACert(__CAS_CA_LOCATION);
$row_piwik_url_db = mysql_fetch_assoc($piwik_url_db);
$_SESSION['piwik_url'] = trim($row_piwik_url_db['param_val']);
if(!empty($_SESSION['piwik_url']) && substr($_SESSION['piwik_url'], -1)!="/") $_SESSION['piwik_url'] .= "/"; //précaution
}
else $_SESSION['piwik_url'] = '';
if(mysql_num_rows($piwik_idsite_db)>0)
{
if (method_exists("eolephpCAS", "setNoCasServerValidation")){
eolephpCAS::setNoCasServerValidation();
$row_piwik_idsite_db = mysql_fetch_assoc($piwik_idsite_db);
$_SESSION['piwik_idsite'] = intval($row_piwik_idsite_db['param_val']);
}
} else $_SESSION['piwik_idsite'] = 0;
</pre>
*echo "<script src='/piwik/envoleTrackeur.js.php?appli=monappli&profil=$profil'></script>";*
Permet d’exécuter Puis, la sonde en elle-même. ressemble à ceci dans le cas d'une consultation :
<pre>
En remplaçant monappli par if(!empty($_SESSION['piwik_url']) && !empty($_SESSION['piwik_idsite'])) //sonde active dès que les 2 paramètres sont valides
{
echo '
<!-- Piwik -->
<script type="text/javascript">
var pkBaseURL = ("https:" == document.location.protocol) ? "https://" : "http://";
pkBaseURL += "'.$_SESSION['piwik_url'].'";
document.write(unescape("%3Cscript src=\'" + pkBaseURL + "piwik.js\' type=\'text/javascript\'%3E%3C/script%3E"));
</script><script type="text/javascript">
try {
var piwikTracker = Piwik.getTracker(pkBaseURL+"piwik.php",'.$_SESSION['piwik_idsite'].');
piwikTracker.setDocumentTitle("consultation/'.$row_RsClasse['nom_classe'].'");
piwikTracker.setCustomUrl("cdt/consulter.php");
piwikTracker.trackPageView();
} catch( err ) {}
</script>
<!-- End Piwik Code -->';
}
</pre>
L'utilisation du "/" dans le véritable nom du titre ou de votre application.
Ce script exécutera la sonde sur les serveurs page permet une catégorisation dans piwik potentiellement paramétrés sur votre serveur.
* Dans tout les cas le serveur piwik présent sur votre serveur.
* Un serveur centralisé soit au niveau académique, régionale, groupe d'école comme vous le souhaitez.
* Un serveur national qui regroupe l'ensemble des Envole et l'affichage d'une arborescence.
h2. Paramétrer un serveur centralisé
Pour cela aller plus loin, on peut enregistrer aussi l'utilisation de liens externes et le chargement de fichiers mais dans ce cas, il vous suffira d'installer un Envole qui devra évidemment être visible sur faut veiller à priori à ce que le net et posséder un certificat valide. code javascript s'exécute après le chargement de la page.
Il vous suffira pas la suite dans l'ensemble des Envole sondée d'y paramétrer l'adresse du piwik centralisé. faut alors ajouter ceci :
<pre>
!!
piwikTracker.enableLinkTracking();
</pre>