Open Monograph Press  3.3.0
UsageEventPlugin.inc.php
1 <?php
2 
16 import('lib.pkp.plugins.generic.usageEvent.PKPUsageEventPlugin');
17 
22  function __construct() {
23  parent::__construct();
24  }
25 
26 
27  //
28  // Protected methods.
29  //
33  protected function getEventHooks() {
34  $hooks = parent::getEventHooks();
35  $ompHooks = array(
36  'CatalogBookHandler::view',
37  'CatalogBookHandler::download',
38  'HtmlMonographFilePlugin::monographDownload',
39  'HtmlMonographFilePlugin::monographDownloadFinished',
40  );
41 
42  return array_merge($hooks, $ompHooks);
43  }
44 
48  protected function getDownloadFinishedEventHooks() {
49  return array_merge(parent::getDownloadFinishedEventHooks(), array(
50  'HtmlMonographFilePlugin::monographDownloadFinished'
51  ));
52  }
53 
57  protected function getUsageEventData($hookName, $hookArgs, $request, $router, $templateMgr, $context) {
58  list($pubObject, $downloadSuccess, $assocType, $idParams, $canonicalUrlPage, $canonicalUrlOp, $canonicalUrlParams) =
59  parent::getUsageEventData($hookName, $hookArgs, $request, $router, $templateMgr, $context);
60 
61  if (!$pubObject) {
62  switch ($hookName) {
63  // Press index page, series content page and monograph abstract.
64  case 'TemplateManager::display':
65  $page = $router->getRequestedPage($request);
66  $op = $router->getRequestedOp($request);
67 
68  $wantedPages = array('catalog');
69  $wantedOps = array('index', 'book', 'series');
70 
71  if (!in_array($page, $wantedPages) || !in_array($op, $wantedOps)) break;
72 
73  $press = $templateMgr->getTemplateVars('currentContext'); /* @var $press Press */
74  $series = $templateMgr->getTemplateVars('series'); /* @var $series Series */
75  $submission = $templateMgr->getTemplateVars('submission');
76 
77  // No published objects, no usage event.
78  if (!$press && !$series && !$submission) break;
79 
80  if ($press) {
81  $pubObject = $press;
82  $assocType = ASSOC_TYPE_PRESS;
83  $canonicalUrlOp = '';
84  }
85 
86  if ($series) {
87  $pubObject = $series;
88  $assocType = ASSOC_TYPE_SERIES;
89  $canonicalUrlParams = array($series->getPath());
90  $idParams = array('s' . $series->getId());
91  }
92 
93  if ($submission) {
94  $pubObject = $submission;
95  $assocType = ASSOC_TYPE_MONOGRAPH;
96  $canonicalUrlParams = array($pubObject->getId());
97  $idParams = array('m' . $pubObject->getId());
98  }
99 
100  $downloadSuccess = true;
101  $canonicalUrlOp = $op;
102  break;
103 
104  // Publication format file.
105  case 'CatalogBookHandler::view':
106  case 'CatalogBookHandler::download':
107  case 'HtmlMonographFilePlugin::monographDownload':
108  $pubObject = $hookArgs[3];
109  $assocType = ASSOC_TYPE_SUBMISSION_FILE;
110  $canonicalUrlOp = 'download';
111  $submission = $hookArgs[1];
112  $publicationFormat = $hookArgs[2];
113  // if file is not a publication format file (e.g. CSS or images), there is no usage event.
114  if ($pubObject->getAssocId() != $publicationFormat->getId()) return false;
115  $canonicalUrlParams = array($submission->getId(), $pubObject->getAssocId(), $pubObject->getFileId() . '-' . $pubObject->getRevision());
116  $idParams = array('m' . $submission->getId(), 'f' . $pubObject->getId());
117  $downloadSuccess = false;
118  break;
119  default:
120  // Why are we called from an unknown hook?
121  assert(false);
122  }
123  }
124 
125  switch ($assocType) {
126  case ASSOC_TYPE_PRESS:
127  case ASSOC_TYPE_SERIES:
128  case ASSOC_TYPE_MONOGRAPH:
129  case ASSOC_TYPE_SUBMISSION_FILE:
130  $canonicalUrlPage = 'catalog';
131  break;
132  }
133 
134  return array($pubObject, $downloadSuccess, $assocType, $idParams, $canonicalUrlPage, $canonicalUrlOp, $canonicalUrlParams);
135  }
136 
140  protected function getHtmlPageAssocTypes() {
141  return array(
142  ASSOC_TYPE_PRESS,
143  ASSOC_TYPE_SERIES,
144  ASSOC_TYPE_MONOGRAPH
145  );
146  }
147 
151  protected function isPubIdObjectType($pubObject) {
152  return is_a($pubObject, 'Submission');
153  }
154 }
155 
156 
$op
$op
Definition: lib/pkp/pages/help/index.php:18
PKPUsageEventPlugin
Base class for usage event plugin. Provide usage events to other statistics plugins.
Definition: PKPUsageEventPlugin.inc.php:24
UsageEventPlugin
Implements application specifics for usage event generation.
Definition: UsageEventPlugin.inc.php:18
UsageEventPlugin\__construct
__construct()
Definition: UsageEventPlugin.inc.php:22
UsageEventPlugin\isPubIdObjectType
isPubIdObjectType($pubObject)
Definition: UsageEventPlugin.inc.php:151
UsageEventPlugin\getDownloadFinishedEventHooks
getDownloadFinishedEventHooks()
Definition: UsageEventPlugin.inc.php:48
UsageEventPlugin\getEventHooks
getEventHooks()
Definition: UsageEventPlugin.inc.php:33
UsageEventPlugin\getUsageEventData
getUsageEventData($hookName, $hookArgs, $request, $router, $templateMgr, $context)
Definition: UsageEventPlugin.inc.php:57
Plugin\$request
$request
Definition: Plugin.inc.php:68
UsageEventPlugin\getHtmlPageAssocTypes
getHtmlPageAssocTypes()
Definition: UsageEventPlugin.inc.php:140