16 import(
'lib.pkp.classes.plugins.GenericPlugin');
22 function register($category, $path, $mainContextId =
null) {
23 if (parent::register($category, $path, $mainContextId)) {
46 return __(
'plugins.generic.htmlMonographFile.displayName');
53 return __(
'plugins.generic.htmlMonographFile.description');
63 $submission =& $params[1];
64 $publicationFormat =& $params[2];
65 $submissionFile =& $params[3];
66 $inline =& $params[4];
69 if ($submissionFile && $submissionFile->getFileType() ==
'text/html') {
70 foreach ($submission->getData(
'publications') as $publication) {
71 if ($publication->getId() === $publicationFormat->getData(
'publicationId')) {
72 $filePublication = $publication;
77 $templateMgr->assign(array(
78 'pluginUrl' =>
$request->getBaseUrl() .
'/' . $this->getPluginPath(),
79 'monograph' => $submission,
80 'publicationFormat' => $publicationFormat,
81 'downloadFile' => $submissionFile,
82 'isLatestPublication' => $submission->getData(
'currentPublicationId') === $publicationFormat->getData(
'publicationId'),
83 'filePublication' => $filePublication,
98 $submission =& $params[1];
99 $publicationFormat =& $params[2];
100 $submissionFile =& $params[3];
101 $inline =& $params[4];
104 if ($submissionFile && $submissionFile->getFileType() ==
'text/html') {
105 if (!
HookRegistry::call(
'HtmlMonographFilePlugin::monographDownload', array(&$this, &$submission, &$publicationFormat, &$submissionFile, &$inline))) {
108 HookRegistry::call(
'HtmlMonographFilePlugin::monographDownloadFinished', array(&$returner));
125 $contents = file_get_contents($submissionFile->getFilePath());
129 import(
'lib.pkp.classes.submission.SubmissionFile');
130 $embeddableFiles = array_merge(
131 $submissionFileDao->getLatestRevisions($submissionFile->getSubmissionId(), SUBMISSION_FILE_PROOF),
132 $submissionFileDao->getLatestRevisionsByAssocId(ASSOC_TYPE_SUBMISSION_FILE, $submissionFile->getFileId(), $submissionFile->getSubmissionId(), SUBMISSION_FILE_DEPENDENT)
135 foreach ($embeddableFiles as $embeddableFile) {
136 $fileUrl =
$request->url(
null,
'catalog',
'download', array($monograph->getBestId(), $publicationFormat->getBestId(), $embeddableFile->getBestId()), array(
'inline' =>
true));
137 $pattern = preg_quote($embeddableFile->getOriginalFileName());
139 $contents = preg_replace(
140 '/([Ss][Rr][Cc]|[Hh][Rr][Ee][Ff]|[Dd][Aa][Tt][Aa])\s*=\s*"([^"]*' . $pattern .
')"/',
141 '\1="' . $fileUrl .
'"',
146 $contents = preg_replace(
147 '/[Uu][Rr][Ll]\s*\:\s*\'(' . $pattern .
')\'/',
148 'url:\'' . $fileUrl .
'\'',
153 $contents = preg_replace(
154 '/[Uu][Rr][Ll]=([^"]*' . $pattern .
')/',
162 $contents = preg_replace_callback(
163 '/(<[^<>]*")[Oo][Mm][Pp]:\/\/([^"]+)("[^<>]*>)/',
164 array(&$this,
'_handleOmpUrl'),
169 $contents = $templateMgr->loadHtmlGalleyStyles($contents, $embeddableFiles);
176 'pressTitle' => $press->getLocalizedName(),
177 'siteTitle' => $site->getLocalizedTitle(),
178 'currentUrl' =>
$request->getRequestUrl()
181 foreach ($paramArray as $key => $value) {
182 $contents = str_replace(
'{$' . $key .
'}', $value, $contents);
190 $url = $matchArray[2];
192 if (($i = strpos($url,
'#')) !==
false) {
193 $anchor = substr($url, $i+1);
194 $url = substr($url, 0, $i);
196 $urlParts = explode(
'/', $url);
200 isset($urlParts[1]) ? $urlParts[1] :
$request->getRequestedPressPath(),
201 null,
null,
null,
null, $anchor
205 if (isset($urlParts[1])) {
207 null,
'catalog',
'book',
208 $urlParts[1],
null, $anchor
213 array_shift($urlParts);
214 import (
'classes.file.PublicFileManager');
216 $url =
$request->getBaseUrl() .
'/' . $publicFileManager->getSiteFilesPath() .
'/' . implode(
'/', $urlParts) . ($anchor?
'#' . $anchor:
'');
219 array_shift($urlParts);
221 import (
'classes.file.PublicFileManager');
223 $url =
$request->getBaseUrl() .
'/' . $publicFileManager->getContextFilesPath($press->getId()) .
'/' . implode(
'/', $urlParts) . ($anchor?
'#' . $anchor:
'');
226 return $matchArray[1] . $url . $matchArray[3];