Open Monograph Press  3.3.0
PdfJsViewerPlugin.inc.php
1 <?php
2 
16 import('lib.pkp.classes.plugins.GenericPlugin');
17 
22  function register($category, $path, $mainContextId = null) {
23  if (parent::register($category, $path, $mainContextId)) {
24  if ($this->getEnabled($mainContextId)) {
25  HookRegistry::register('CatalogBookHandler::view', array($this, 'viewCallback'), HOOK_SEQUENCE_LATE);
26  HookRegistry::register('CatalogBookHandler::download', array($this, 'downloadCallback'), HOOK_SEQUENCE_LATE);
27  }
28  return true;
29  }
30  return false;
31  }
32 
38  return $this->getPluginPath() . '/settings.xml';
39  }
40 
45  function getDisplayName() {
46  return __('plugins.generic.pdfJsViewer.displayName');
47  }
48 
52  function getDescription() {
53  return __('plugins.generic.pdfJsViewer.description');
54  }
55 
62  function viewCallback($hookName, $args) {
63  $submission =& $args[1];
64  $publicationFormat =& $args[2];
65  $submissionFile =& $args[3];
66 
67  if ($submissionFile->getFileType() == 'application/pdf') {
68  foreach ($submission->getData('publications') as $publication) {
69  if ($publication->getId() === $publicationFormat->getData('publicationId')) {
70  $filePublication = $publication;
71  break;
72  }
73  }
74  $request = Application::get()->getRequest();
75  $router = $request->getRouter();
76  $dispatcher = $request->getDispatcher();
77  $templateMgr = TemplateManager::getManager($request);
78  $templateMgr->assign(array(
79  'pluginUrl' => $request->getBaseUrl() . DIRECTORY_SEPARATOR . $this->getPluginPath(),
80  'isLatestPublication' => $submission->getData('currentPublicationId') === $publicationFormat->getData('publicationId'),
81  'filePublication' => $filePublication,
82  ));
83 
84  $templateMgr->display($this->getTemplateResource('display.tpl'));
85  return true;
86  }
87 
88  return false;
89  }
90 
97  function downloadCallback($hookName, $params) {
98  $submission =& $params[1];
99  $publicationFormat =& $params[2];
100  $submissionFile =& $params[3];
101  $inline =& $params[4];
102 
103  $request = Application::get()->getRequest();
104  if ($submissionFile->getFileType() == 'application/pdf' && $request->getUserVar('inline')) {
105  // Turn on the inline flag to ensure that the content
106  // disposition header doesn't foil the PDF embedding
107  // plugin.
108  $inline = true;
109  }
110 
111  // Return to regular handling
112  return false;
113  }
114 
120  private function _getPluginUrl($request) {
121  return $request->getBaseUrl() . '/' . $this->getPluginPath();
122  }
123 }
124 
125 
PdfJsViewerPlugin\viewCallback
viewCallback($hookName, $args)
Definition: PdfJsViewerPlugin.inc.php:62
PdfJsViewerPlugin\getDisplayName
getDisplayName()
Definition: PdfJsViewerPlugin.inc.php:45
PdfJsViewerPlugin\downloadCallback
downloadCallback($hookName, $params)
Definition: PdfJsViewerPlugin.inc.php:97
Plugin\getEnabled
getEnabled()
Definition: Plugin.inc.php:868
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
Plugin\getTemplateResource
getTemplateResource($template=null, $inCore=false)
Definition: Plugin.inc.php:349
Plugin\getPluginPath
getPluginPath()
Definition: Plugin.inc.php:330
PdfJsViewerPlugin
Class for PdfJsViewer plugin.
Definition: PdfJsViewerPlugin.inc.php:18
PdfJsViewerPlugin\getContextSpecificPluginSettingsFile
getContextSpecificPluginSettingsFile()
Definition: PdfJsViewerPlugin.inc.php:37
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
PdfJsViewerPlugin\getDescription
getDescription()
Definition: PdfJsViewerPlugin.inc.php:52