Open Preprint Systems  3.3.0
UsageEventPlugin.inc.php
1 <?php
2 
16 import('lib.pkp.plugins.generic.usageEvent.PKPUsageEventPlugin');
17 
19 
20 
21  //
22  // Implement methods from PKPUsageEventPlugin.
23  //
27  function getEventHooks() {
28  return array_merge(parent::getEventHooks(), array(
29  'PreprintHandler::download',
30  'HtmlArticleGalleyPlugin::articleDownload',
31  'HtmlArticleGalleyPlugin::articleDownloadFinished'
32  ));
33  }
34 
38  protected function getDownloadFinishedEventHooks() {
39  return array_merge(parent::getDownloadFinishedEventHooks(), array(
40  'HtmlArticleGalleyPlugin::articleDownloadFinished'
41  ));
42  }
43 
47  protected function getUsageEventData($hookName, $hookArgs, $request, $router, $templateMgr, $context) {
48  list($pubObject, $downloadSuccess, $assocType, $idParams, $canonicalUrlPage, $canonicalUrlOp, $canonicalUrlParams) =
49  parent::getUsageEventData($hookName, $hookArgs, $request, $router, $templateMgr, $context);
50 
51  if (!$pubObject) {
52  switch ($hookName) {
53  // Press index page and preprint abstract.
54  case 'TemplateManager::display':
55  $page = $router->getRequestedPage($request);
56  $op = $router->getRequestedOp($request);
57  $args = $router->getRequestedArgs($request);
58 
59  $wantedPages = array('preprint');
60  $wantedOps = array('index', 'view');
61 
62  if (!in_array($page, $wantedPages) || !in_array($op, $wantedOps)) break;
63 
64  // View requests with 1 argument might relate to server
65  // or preprint. With more than 1 is related with other objects
66  // that we are not interested in or that are counted using a
67  // different hook.
68  if ($op == 'view' && count($args) > 1) break;
69 
70  $journal = $templateMgr->getTemplateVars('currentContext');
71  $submission = $templateMgr->getTemplateVars('preprint');
72 
73  // No published objects, no usage event.
74  if (!$journal && !$submission) break;
75 
76  if ($journal) {
77  $pubObject = $journal;
78  $assocType = ASSOC_TYPE_JOURNAL;
79  $canonicalUrlOp = '';
80  }
81 
82  if ($submission) {
83  $pubObject = $submission;
84  $assocType = ASSOC_TYPE_SUBMISSION;
85  $canonicalUrlParams = array($pubObject->getId());
86  $idParams = array('m' . $pubObject->getId());
87  }
88 
89  $downloadSuccess = true;
90  $canonicalUrlOp = $op;
91  break;
92 
93  // Preprint file.
94  case 'PreprintHandler::download':
95  case 'HtmlArticleGalleyPlugin::articleDownload':
96  $assocType = ASSOC_TYPE_SUBMISSION_FILE;
97  $preprint = $hookArgs[0];
98  $galley = $hookArgs[1];
99  $fileId = $hookArgs[2];
100  // if file is not a gallay file (e.g. CSS or images), there is no usage event.
101  if ($galley->getFileId() != $fileId) return false;
102  $canonicalUrlOp = 'download';
103  $canonicalUrlParams = array($preprint->getId(), $galley->getId(), $fileId);
104  $idParams = array('a' . $preprint->getId(), 'g' . $galley->getId(), 'f' . $fileId);
105  $downloadSuccess = false;
106  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO');
107  $pubObject = $submissionFileDao->getLatestRevision($fileId);
108  break;
109  default:
110  // Why are we called from an unknown hook?
111  assert(false);
112  }
113  }
114 
115  return array($pubObject, $downloadSuccess, $assocType, $idParams, $canonicalUrlPage, $canonicalUrlOp, $canonicalUrlParams);
116  }
117 
121  protected function getHtmlPageAssocTypes() {
122  return array(
123  ASSOC_TYPE_JOURNAL,
124  ASSOC_TYPE_SUBMISSION,
125  );
126  }
127 
131  protected function isPubIdObjectType($pubObject) {
132  return is_a($pubObject, 'Submission');
133  }
134 
135 }
136 
$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
Implement application specifics for generating usage events.
Definition: UsageEventPlugin.inc.php:18
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
UsageEventPlugin\isPubIdObjectType
isPubIdObjectType($pubObject)
Definition: UsageEventPlugin.inc.php:131
UsageEventPlugin\getDownloadFinishedEventHooks
getDownloadFinishedEventHooks()
Definition: UsageEventPlugin.inc.php:38
UsageEventPlugin\getEventHooks
getEventHooks()
Definition: UsageEventPlugin.inc.php:27
UsageEventPlugin\getUsageEventData
getUsageEventData($hookName, $hookArgs, $request, $router, $templateMgr, $context)
Definition: UsageEventPlugin.inc.php:47
Plugin\$request
$request
Definition: Plugin.inc.php:68
UsageEventPlugin\getHtmlPageAssocTypes
getHtmlPageAssocTypes()
Definition: UsageEventPlugin.inc.php:121