2017 © Pedro Peláez
 

symfony-bundle piwik-bundle

integration of devhelp/piwik-api into symfony. Allows to create services for piwik api methods

image

devhelp/piwik-bundle

integration of devhelp/piwik-api into symfony. Allows to create services for piwik api methods

  • Sunday, February 25, 2018
  • by devhelp
  • Repository
  • 4 Watchers
  • 6 Stars
  • 17,765 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 8 Versions
  • 9 % Grown

The README.md

Build Status Scrutinizer Code Quality, (*1)

Purpose

Bundle provides integration with Piwik API. Adds services to the dependency injection container that allows to use Piwik API methods as services. It uses devhelp/piwik-api library - check its documentation for more advanced usage., (*2)

Installation

$ composer require devhelp/piwik-bundle

For more information please check composer website., (*3)

Add the bundle to AppKernel, (*4)

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            //...
            new \Devhelp\PiwikBundle\DevhelpPiwikBundle(),
            //...
        );

        //...

        return $bundles;
    }

    //...
}

Sandbox

Full working example can be found at devhelp/piwik-bundle-sandbox, (*5)

Usage

Define API connection in config.yml

devhelp_piwik:
    client: my_piwik.client
    api:
        reader:
            url: http://my_piwik_instance.piwik.pro
            default_params:
                token_auth: %piwik_token_auth%
                idSite: %piwik_site_id%

Create piwik client service that is used in config.yml

This example uses PiwikGuzzleClient class that is responsible for making http request to Piwik. You can include this extension by including devhelp/piwik-api-guzzle in your project, (*6)

my_piwik.client:
    class: Devhelp\Piwik\Api\Guzzle\Client\PiwikGuzzleClient
    arguments:
        # guzzle service must implement GuzzleHttp\ClientInterface
        - '@guzzle'

Use API method in your use case

service configuration, (*7)

my_service:
    class: Acme\DemoBundle\Service\MyService
    arguments:
        # it is an alias of first configured api (in this case it equals devhelp_piwik.api.reader service)
        - '@devhelp_piwik.api'

service definition, (*8)

namespace Acme\DemoBundle\Service;


use Devhelp\Piwik\Api\Api;

class MyService
{

    /**
     * @var Api
     */
    private $piwikApi;

    public function __construct(Api $piwikApi)
    {
        $this->piwikApi = $piwikApi;
    }

    public function doSomething()
    {
        //...
        $this->piwikApi->getMethod('PiwikPlugin.pluginAction')->call();
        //...
    }
}

Define API parameters resolved at runtime

You are allowed to set services as a params. If you do that then the service will be used to resolve the parameter at runtime. For example have a service that would return token_auth of logged in user, (*9)

devhelp_piwik:
    client: my_piwik.client
    api:
        reader:
            url: http://my_piwik_instance.piwik.pro
            default_params:
                token_auth: my_token_auth_provider
                idSite: %piwik_site_id%

my_token_auth_provider service definition, (*10)

my_token_auth_provider:
    class: Acme\DemoBundle\Param\MyTokenAuthProvider
    arguments:
        - '@security.token_storage'

MyTokenAuthProvider class definition (assumes that User class has getPiwikToken method), (*11)

namespace Acme\DemoBundle\Param;

use Devhelp\Piwik\Api\Param\Param;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;

class MyTokenAuthProvider implements Param
{

    /**
     * @var TokenStorageInterface
     */
    private $tokenStorage;

    public function __construct(TokenStorageInterface $tokenStorage)
    {
        $this->tokenStorage = $tokenStorage;
    }

    public function value()
    {
        $token = $this->tokenStorage->getToken();

        return $token instanceof TokenInterface ? $token->getUser()->getPiwikToken() : null;
    }
}

Define API methods as services

my_piwik_method:
    class: Devhelp\Piwik\Api\Method\Method
    factory:
        - '@devhelp_piwik.api'
        - getMethod
    arguments:
        - VisitFrequency.get

This depends on your Symfony version (check here), (*12)

Calling API using Symfony command

devhelp_piwik:api:call command allows you to call the API from command line. You can do it either by specifying method service id or by passing method name together with api name (or use the default), (*13)

for more information please run, (*14)

$ console devhelp_piwik:api:call --help

Feedback/Requests

Feel free to create an issue if you think that something is missing or needs fixing. Feedback is more than welcome!, (*15)

Credits

Brought to you by: devhelp.pl, (*16)

The Versions

25/02 2018

dev-master

9999999-dev http://devhelp.pl

integration of devhelp/piwik-api into symfony. Allows to create services for piwik api methods

  Sources   Download

MIT

The Requires

 

The Development Requires

by Paweł Barański
by devhelp.pl

piwik

25/02 2018

1.1

1.1.0.0 http://devhelp.pl

integration of devhelp/piwik-api into symfony. Allows to create services for piwik api methods

  Sources   Download

MIT

The Requires

 

The Development Requires

by Paweł Barański
by devhelp.pl

piwik

16/12 2015

0.3.2

0.3.2.0 http://devhelp.pl

integration of devhelp/piwik-api into symfony. Allows to create services for piwik api methods

  Sources   Download

MIT

The Requires

 

The Development Requires

by Paweł Barański
by devhelp.pl

piwik

16/12 2015

1.0

1.0.0.0 http://devhelp.pl

integration of devhelp/piwik-api into symfony. Allows to create services for piwik api methods

  Sources   Download

MIT

The Requires

 

The Development Requires

by Paweł Barański
by devhelp.pl

piwik

04/12 2015

0.3.1

0.3.1.0 http://devhelp.pl

integration of devhelp/piwik-api into symfony. Allows to create services for piwik api methods

  Sources   Download

MIT

The Requires

 

The Development Requires

by Paweł Barański
by devhelp.pl

piwik

23/11 2015

0.3

0.3.0.0 http://devhelp.pl

integration of devhelp/piwik-api into symfony. Allows to create services for piwik api methods

  Sources   Download

MIT

The Requires

 

The Development Requires

by Paweł Barański
by devhelp.pl

piwik

19/11 2015

0.2

0.2.0.0 http://devhelp.pl

integration of devhelp/piwik-api into symfony. Allows to create services for piwik api methods

  Sources   Download

MIT

The Requires

 

The Development Requires

by Paweł Barański
by devhelp.pl

piwik

25/04 2015

0.1

0.1.0.0 http://devhelp.pl

integration of devhelp/piwik-api into symfony. Allows to create services for piwik api methods

  Sources   Download

MIT

The Requires

 

The Development Requires

by Paweł Barański
by devhelp.pl

piwik