Open Journal Systems  3.3.0
GoogleAnalyticsPlugin.inc.php
1 <?php
2 
16 import('lib.pkp.classes.plugins.GenericPlugin');
17 
22  function register($category, $path, $mainContextId = null) {
23  $success = parent::register($category, $path, $mainContextId);
24  if (!Config::getVar('general', 'installed') || defined('RUNNING_UPGRADE')) return true;
25  if ($success && $this->getEnabled($mainContextId)) {
26  // Insert Google Analytics page tag to footer
27  HookRegistry::register('TemplateManager::display', array($this, 'registerScript'));
28  }
29  return $success;
30  }
31 
35  function getDisplayName() {
36  return __('plugins.generic.googleAnalytics.displayName');
37  }
38 
42  function getDescription() {
43  return __('plugins.generic.googleAnalytics.description');
44  }
45 
49  function getActions($request, $verb) {
50  $router = $request->getRouter();
51  import('lib.pkp.classes.linkAction.request.AjaxModal');
52  return array_merge(
53  $this->getEnabled()?array(
54  new LinkAction(
55  'settings',
56  new AjaxModal(
57  $router->url($request, null, null, 'manage', null, array('verb' => 'settings', 'plugin' => $this->getName(), 'category' => 'generic')),
58  $this->getDisplayName()
59  ),
60  __('manager.plugins.settings'),
61  null
62  ),
63  ):array(),
64  parent::getActions($request, $verb)
65  );
66  }
67 
71  function manage($args, $request) {
72  switch ($request->getUserVar('verb')) {
73  case 'settings':
74  $context = $request->getContext();
75 
76  AppLocale::requireComponents(LOCALE_COMPONENT_APP_COMMON, LOCALE_COMPONENT_PKP_MANAGER);
77  $templateMgr = TemplateManager::getManager($request);
78  $templateMgr->registerPlugin('function', 'plugin_url', array($this, 'smartyPluginUrl'));
79 
80  $this->import('GoogleAnalyticsSettingsForm');
81  $form = new GoogleAnalyticsSettingsForm($this, $context->getId());
82 
83  if ($request->getUserVar('save')) {
84  $form->readInputData();
85  if ($form->validate()) {
86  $form->execute();
87  return new JSONMessage(true);
88  }
89  } else {
90  $form->initData();
91  }
92  return new JSONMessage(true, $form->fetch($request));
93  }
94  return parent::manage($args, $request);
95  }
96 
102  function registerScript($hookName, $params) {
103  $request = Application::get()->getRequest();
104  $context = $request->getContext();
105  if (!$context) return false;
106  $router = $request->getRouter();
107  if (!is_a($router, 'PKPPageRouter')) return false;
108 
109  $googleAnalyticsSiteId = $this->getSetting($context->getId(), 'googleAnalyticsSiteId');
110  if (empty($googleAnalyticsSiteId)) return false;
111 
112  $googleAnalyticsCode = "
113 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
114 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
115 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
116 })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
117 
118 ga('create', '$googleAnalyticsSiteId', 'auto');
119 ga('send', 'pageview');
120 ";
121 
122  $templateMgr = TemplateManager::getManager($request);
123  $templateMgr->addJavaScript(
124  'googleanalytics',
125  $googleAnalyticsCode,
126  array(
127  'priority' => STYLE_SEQUENCE_LAST,
128  'inline' => true,
129  )
130  );
131 
132  return false;
133  }
134 }
135 
GoogleAnalyticsSettingsForm
Form for journal managers to modify Google Analytics plugin settings.
Definition: GoogleAnalyticsSettingsForm.inc.php:18
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
GoogleAnalyticsPlugin\registerScript
registerScript($hookName, $params)
Definition: GoogleAnalyticsPlugin.inc.php:102
GoogleAnalyticsPlugin\getActions
getActions($request, $verb)
Definition: GoogleAnalyticsPlugin.inc.php:49
GoogleAnalyticsPlugin\getDescription
getDescription()
Definition: GoogleAnalyticsPlugin.inc.php:42
Plugin\getEnabled
getEnabled()
Definition: Plugin.inc.php:868
JSONMessage
Class to represent a JSON (Javascript Object Notation) message.
Definition: JSONMessage.inc.php:18
Plugin\getSetting
getSetting($contextId, $name)
Definition: Plugin.inc.php:473
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
GoogleAnalyticsPlugin\getDisplayName
getDisplayName()
Definition: GoogleAnalyticsPlugin.inc.php:35
AjaxModal
A modal that retrieves its content from via AJAX.
Definition: AjaxModal.inc.php:18
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
LazyLoadPlugin\getName
getName()
Definition: LazyLoadPlugin.inc.php:40
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
GoogleAnalyticsPlugin
Google Analytics plugin class.
Definition: GoogleAnalyticsPlugin.inc.php:18
Plugin\$request
$request
Definition: Plugin.inc.php:68
HookRegistry\register
static register($hookName, $callback, $hookSequence=HOOK_SEQUENCE_NORMAL)
Definition: HookRegistry.inc.php:70
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
GenericPlugin
Abstract class for generic plugins.
Definition: GenericPlugin.inc.php:18
GoogleAnalyticsPlugin\manage
manage($args, $request)
Definition: GoogleAnalyticsPlugin.inc.php:71