Taglib für Piwik-API: Benutzer und Klicks

Dieser Bereich dient dazu, neue Features zu diskutieren und für die Entwicklung zu dokumentieren. // This area is dedicated to new features including proposals and documentation.
Gesperrt
Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

Taglib für Piwik-API: Benutzer und Klicks

Beitrag von jwlighting » 01.03.2013, 22:17:11

Moin!

Ich habe mir für ein aktuelles Projekt mal eine Taglib gebaut, die mir Besucher oder Klicks über die Piwik-API ausliest und anzeigt:

Code: Alles auswählen

<?php
/**
 *
 * @package BFOW
 * @author: Jan Wiese <jan.wiese@adventure-php-framework.org>
 * @version: v0.1 (11.11.12)
 *
 */
class PiwikUserCountTaglib extends Document {

   const PATH_TO_PIWIK = 'piwik';
   
   const TOKEN_AUTH = 'this is secret ;)';
   
   const OFFSET_VISITS = 0;
   
   const OFFSET_ACTIONS = 0;


   public function transform() {
      
      // dont load piwik data in local development
      if (preg_match('/localhost/', $_SERVER['SERVER_NAME'])) {
         return 'LOCAL';
      }

      // define/load piwik environment
      if (!defined('PIWIK_ENV')) {

         define('PIWIK_INCLUDE_PATH', realpath(self::PATH_TO_PIWIK));
         define('PIWIK_USER_PATH', realpath(self::PATH_TO_PIWIK));
         define('PIWIK_ENABLE_DISPATCH', false);
         define('PIWIK_ENABLE_ERROR_HANDLER', false);
         define('PIWIK_ENABLE_SESSION_START', false);
         require_once PIWIK_INCLUDE_PATH . "/index.php";
         require_once PIWIK_INCLUDE_PATH . "/core/API/Request.php";
         define('PIWIK_ENV', 0);

      }

      Piwik_FrontController::getInstance()->init();

      // This inits the API Request with the specified parameters
      $request = new Piwik_API_Request('
            method=Live.getCounters
            &idSite=1
            &lastMinutes=10000000
            &format=original
            &filter_limit=3
            &token_auth='.self::TOKEN_AUTH
      );

      // Calls the API and fetch data back
      $result = $request->process();



      $clicks = $this->getAttribute('actions');
      if (!empty($clicks)) { // return actions instead of visits
         return self::OFFSET_ACTIONS + $result[0]['actions'];
      }

      return self::OFFSET_VISITS + $result[0]['visits'];
   }
}

 
Der Offset ist praktisch, wenn man von einem anderen Counter auf Piwik umgestellt habt und den alten Zählerstand nicht "verlieren" wollt.

Was haltet ihr davon, und was könnte ich noch verbessern?

LG :)
Jan

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: Taglib für Piwik-API: Benutzer und Klicks

Beitrag von dr.e. » 01.03.2013, 23:48:09

Idee finde ich sehr gut. Code-technisch finde ich die Konstanten etwas schwierig. Einfacher/schöner fände ich die Taglib direkt per Attribute zu konfigurieren.
Viele Grüße,
Christian

Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

Re: Taglib für Piwik-API: Benutzer und Klicks

Beitrag von jwlighting » 03.03.2013, 16:30:18

Einfacher/schöner fände ich die Taglib direkt per Attribute zu konfigurieren.
Das ist eine gute Idee. Einzig beim token_auth finde ich etwas problematisch, wenn an den Templates auch Leute Schreibrechte haben, die das token_auth nix angeht.

Willst du die Taglib ins APF aufnehmen? Dann würde ich sie nochmal etwas verfeinern (und evtl. flexibler machen).

LG :)

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: Taglib für Piwik-API: Benutzer und Klicks

Beitrag von dr.e. » 03.03.2013, 16:32:23

Hi Jan,
Willst du die Taglib ins APF aufnehmen?
Wenn du sie zur Verfügung stellen möchtest, sehr gerne.
Dann würde ich sie nochmal etwas verfeinern (und evtl. flexibler machen).
... und eine Dokumentation schreiben. ;) Ich habe auch in diesem Release an einigen Stellen Doku vermisst und (gestern) nach getragen. :)
Viele Grüße,
Christian

Gesperrt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast