Skip to content

Commit

Permalink
Factories and bring config from module.php to module.config.php
Browse files Browse the repository at this point in the history
  • Loading branch information
snapshotpl committed Oct 13, 2013
1 parent b33e167 commit 7a361ec
Show file tree
Hide file tree
Showing 5 changed files with 213 additions and 67 deletions.
70 changes: 3 additions & 67 deletions Module.php
Expand Up @@ -43,11 +43,11 @@
use Zend\Http\Request as HttpRequest;
use Zend\ModuleManager\Feature;
use Zend\Mvc\MvcEvent;
use SlmGoogleAnalytics\Analytics;
use SlmGoogleAnalytics\View\Helper;

class Module implements
Feature\AutoloaderProviderInterface, Feature\ConfigProviderInterface, Feature\ViewHelperProviderInterface, Feature\ServiceProviderInterface, Feature\BootstrapListenerInterface
Feature\AutoloaderProviderInterface,
Feature\ConfigProviderInterface,
Feature\BootstrapListenerInterface
{

public function getAutoloaderConfig()
Expand All @@ -69,70 +69,6 @@ public function getConfig()
return include __DIR__ . '/config/module.config.php';
}

public function getViewHelperConfig()
{
return array(
'factories' => array(
'googleAnalytics' => function($sm) {
$script = $sm->getServiceLocator()->get('google-analytics-script');
$helper = new Helper\GoogleAnalytics($script);

return $helper;
},
),
);
}

public function getServiceConfig()
{
return array(
'aliases' => array(
'google-analytics' => 'SlmGoogleAnalytics\Analytics\Tracker',
),
'invokables' => array(
'google-analytics-script-analytics-js' => 'SlmGoogleAnalytics\View\Helper\Script\Analyticsjs',
'google-analytics-script-ga-js' => 'SlmGoogleAnalytics\View\Helper\Script\Gajs',
),
'factories' => array(
'SlmGoogleAnalytics\Analytics\Tracker' => function($sm) {
$config = $sm->get('config');
$config = $config['google_analytics'];

$tracker = new Analytics\Tracker($config['id']);

if (isset($config['domain_name'])) {
$tracker->setDomainName($config['domain_name']);
}

if (isset($config['allow_linker'])) {
$tracker->setAllowLinker($config['allow_linker']);
}

if (true === $config['anonymize_ip']) {
$tracker->setAnonymizeIp(true);
}

if (false === $config['enable']) {
$tracker->setEnableTracking(false);
}

return $tracker;
},
'google-analytics-script' => function($sm) {
$config = $sm->get('config');
$scriptName = $config['google_analytics']['script'];

$script = $sm->get($scriptName);
$ga = $sm->get('google-analytics');

$script->setTracker($ga);

return $script;
},
),
);
}

/**
* When the render event is triggered, we invoke the view helper to
* render the javascript code.
Expand Down
18 changes: 18 additions & 0 deletions config/module.config.php
Expand Up @@ -47,4 +47,22 @@
'anonymize_ip' => false,
'script' => 'google-analytics-script-ga-js',
),
'service_manager' => array(
'aliases' => array(
'google-analytics' => 'SlmGoogleAnalytics\Analytics\Tracker',
),
'invokables' => array(
'google-analytics-script-analytics-js' => 'SlmGoogleAnalytics\View\Helper\Script\Analyticsjs',
'google-analytics-script-ga-js' => 'SlmGoogleAnalytics\View\Helper\Script\Gajs',
),
'factories' => array(
'SlmGoogleAnalytics\Analytics\Tracker' => 'SlmGoogleAnalytics\Service\TrackerFactory',
'google-analytics-script' => 'SlmGoogleAnalytics\Service\ScriptFactory',
),
),
'view_helpers' => array(
'factories' => array(
'googleAnalytics' => 'SlmGoogleAnalytics\Service\GoogleAnalyticsFactory',
),
)
);
56 changes: 56 additions & 0 deletions src/SlmGoogleAnalytics/Service/GoogleAnalyticsFactory.php
@@ -0,0 +1,56 @@
<?php
/**
* Copyright (c) 2012-2013 Jurian Sluiman.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* * Neither the names of the copyright holders nor the names of the
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* @author Witold Wasiczko <witold@wasiczko.pl>
* @copyright 2012-2013 Jurian Sluiman.
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
* @link http://www.psd2html.pl
*/
namespace SlmGoogleAnalytics\Service;

use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
use SlmGoogleAnalytics\View\Helper\GoogleAnalytics;

class GoogleAnalyticsFactory implements FactoryInterface
{
public function createService(ServiceLocatorInterface $serviceLocator)
{
$sm = $serviceLocator->getServiceLocator();
$script = $sm->get('google-analytics-script');
$helper = new GoogleAnalytics($script);

return $helper;
}
}
62 changes: 62 additions & 0 deletions src/SlmGoogleAnalytics/Service/ScriptFactory.php
@@ -0,0 +1,62 @@
<?php
/**
* Copyright (c) 2012-2013 Jurian Sluiman.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* * Neither the names of the copyright holders nor the names of the
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* @author Witold Wasiczko <witold@wasiczko.pl>
* @copyright 2012-2013 Jurian Sluiman.
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
* @link http://www.psd2html.pl
*/
namespace SlmGoogleAnalytics\Service;

use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

class ScriptFactory implements FactoryInterface
{

public function createService(ServiceLocatorInterface $serviceLocator)
{
$config = $serviceLocator->get('config');
$scriptName = $config['google_analytics']['script'];


$script = $serviceLocator->get($scriptName);
/* @var $script \SlmGoogleAnalytics\View\Helper\Script\ScriptInterface */
$ga = $serviceLocator->get('google-analytics');

$script->setTracker($ga);

return $script;
}
}
74 changes: 74 additions & 0 deletions src/SlmGoogleAnalytics/Service/TrackerFactory.php
@@ -0,0 +1,74 @@
<?php
/**
* Copyright (c) 2012-2013 Jurian Sluiman.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* * Neither the names of the copyright holders nor the names of the
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* @author Witold Wasiczko <witold@wasiczko.pl>
* @copyright 2012-2013 Jurian Sluiman.
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
* @link http://www.psd2html.pl
*/
namespace SlmGoogleAnalytics\Service;

use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
use SlmGoogleAnalytics\Analytics\Tracker;

class TrackerFactory implements FactoryInterface
{

public function createService(ServiceLocatorInterface $serviceLocator)
{
$config = $serviceLocator->get('config');
$gaConfig = $config['google_analytics'];

$tracker = new Tracker($gaConfig['id']);

if (isset($gaConfig['domain_name'])) {
$tracker->setDomainName($gaConfig['domain_name']);
}

if (isset($gaConfig['allow_linker'])) {
$tracker->setAllowLinker($gaConfig['allow_linker']);
}

if (true === $gaConfig['anonymize_ip']) {
$tracker->setAnonymizeIp(true);
}

if (false === $gaConfig['enable']) {
$tracker->setEnableTracking(false);
}

return $tracker;
}
}

0 comments on commit 7a361ec

Please sign in to comment.