Skip to content
Snippets Groups Projects
Commit 01b34d48 authored by Jerome Chauveau's avatar Jerome Chauveau
Browse files

ajustements divers pour fonctionnement du plugin sur les galleys / publications

parent 6f4e9be9
Branches
No related tags found
No related merge requests found
......@@ -8,70 +8,22 @@ class ArticleImageDataHandler extends ArticleHandler
/**
* @param array $args
* @param Request $request
* @return mixed
*/
public function image(array $args, Request $request)
{
$fileId = $args[1];
import('lib.pkp.classes.submission.SubmissionFile');
$dependentFilesIterator = Services::get('submissionFile')->getMany([
'assocTypes' => [ASSOC_TYPE_SUBMISSION_FILE],
'submissionIds' => [$this->article->getId()],
'fileStages' => [SUBMISSION_FILE_DEPENDENT],
'includeDependentFiles' => true,
]);
$submissionFile = null;
foreach ($dependentFilesIterator as $dependentFile) {
if ($fileId == $dependentFile->getData('fileId')) {
$submissionFile = $dependentFile;
break;
}
}
// Download file if exists
if (!Services::get('file')->fs->has($submissionFile->getData('path'))) {
$request->getDispatcher()->handle404();
}
$filename = Services::get('file')
->formatFilename($submissionFile->getData('path'), $submissionFile->getLocalizedData('name'));
return Services::get('file')->download($submissionFile->getData('path'), $filename);
}
/**
* Image from zip archive submission file
* Image from zip archive galley file
* @param array $args
* @param Request $request
* @return mixed
*/
public function zimage(array $args, Request $request)
{
import('lib.pkp.classes.submission.SubmissionFile');
$imgName = $args[1];
$dependentFilesIterator = Services::get('submissionFile')->getMany([
'submissionIds' => [$this->article->getId()],
'fileStages' => [SUBMISSION_FILE_SUBMISSION],
]);
$submissionFile = null;
$result = iterator_to_array($dependentFilesIterator);
if(sizeof($result) != 1) {
$request->getDispatcher()->handle404();
}
else {
$submissionFile = $result[0];
$galleyId = $args[1];
$imgName = $args[2];
$galley = Services::get('galley')->get($galleyId);
$file = $galley->getFile();
$filename = Services::get('file')
->formatFilename($submissionFile->getData('path'), $submissionFile->getLocalizedData('path'));
->formatFilename($file->getData('path'), $file->getLocalizedData('path'));
$pathInfo = pathinfo($filename);
$imagePath = $pathInfo['dirname'] . DIRECTORY_SEPARATOR . $pathInfo['filename'] . DIRECTORY_SEPARATOR . $imgName;
return Services::get('file')->download($imagePath, $imgName);
}
}
......
......@@ -7,41 +7,41 @@ class BookImageDataHandler extends CatalogBookHandler
{
/**
* @param array $args
* @param Request $request
* @return mixed
*/
public function image(array $args, Request $request)
{
$fileId = $args[1];
$submission = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION);
import('lib.pkp.classes.submission.SubmissionFile');
$dependentFilesIterator = Services::get('submissionFile')->getMany([
'assocTypes' => [ASSOC_TYPE_SUBMISSION_FILE],
'submissionIds' => [$submission->getId()],
'fileStages' => [SUBMISSION_FILE_DEPENDENT],
'includeDependentFiles' => true,
]);
$submissionFile = null;
foreach ($dependentFilesIterator as $dependentFile) {
if ($fileId == $dependentFile->getData('fileId')) {
$submissionFile = $dependentFile;
break;
}
}
// Download file if exists
if (!Services::get('file')->fs->has($submissionFile->getData('path'))) {
$request->getDispatcher()->handle404();
}
$filename = Services::get('file')
->formatFilename($submissionFile->getData('path'), $submissionFile->getLocalizedData('name'));
return Services::get('file')->download($submissionFile->getData('path'), $filename);
}
// /**
// * @param array $args
// * @param Request $request
// * @return mixed
// */
// public function image(array $args, Request $request)
// {
// $fileId = $args[1];
// $submission = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION);
// import('lib.pkp.classes.submission.SubmissionFile');
// $dependentFilesIterator = Services::get('submissionFile')->getMany([
// 'assocTypes' => [ASSOC_TYPE_SUBMISSION_FILE],
// 'submissionIds' => [$submission->getId()],
// 'fileStages' => [SUBMISSION_FILE_DEPENDENT],
// 'includeDependentFiles' => true,
// ]);
//
// $submissionFile = null;
// foreach ($dependentFilesIterator as $dependentFile) {
// if ($fileId == $dependentFile->getData('fileId')) {
// $submissionFile = $dependentFile;
// break;
// }
// }
//
// // Download file if exists
// if (!Services::get('file')->fs->has($submissionFile->getData('path'))) {
// $request->getDispatcher()->handle404();
// }
//
// $filename = Services::get('file')
// ->formatFilename($submissionFile->getData('path'), $submissionFile->getLocalizedData('name'));
//
// return Services::get('file')->download($submissionFile->getData('path'), $filename);
// }
/**
* Image from zip archive submission file
......@@ -51,31 +51,28 @@ class BookImageDataHandler extends CatalogBookHandler
*/
public function zimage(array $args, Request $request)
{
import('lib.pkp.classes.submission.SubmissionFile');
$imgName = $args[1];
$pubId= $args[1];
$imgName = $args[2];
$submission = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION);
$dependentFilesIterator = Services::get('submissionFile')->getMany([
$pubFormatFiles = Services::get('submissionFile')->getMany([
'submissionIds' => [$submission->getId()],
'fileStages' => [SUBMISSION_FILE_SUBMISSION],
'assocTypes' => [ASSOC_TYPE_PUBLICATION_FORMAT],
]);
$submissionFile = null;
$result = iterator_to_array($dependentFilesIterator);
if(sizeof($result) != 1) {
$request->getDispatcher()->handle404();
$publicationFile = NULL;
foreach ($pubFormatFiles as $file){
if($file->getData('assocId') == $pubId) {
$publicationFile = $file;
}
}
else {
$submissionFile = $result[0];
$filename = Services::get('file')
->formatFilename($submissionFile->getData('path'), $submissionFile->getLocalizedData('path'));
->formatFilename($publicationFile->getData('path'), $publicationFile->getLocalizedData('path'));
$pathInfo = pathinfo($filename);
$imagePath = $pathInfo['dirname'] . DIRECTORY_SEPARATOR . $pathInfo['filename'] . DIRECTORY_SEPARATOR . $imgName;
return Services::get('file')->download($imagePath, $imgName);
}
}
}
......@@ -43,7 +43,7 @@ class XML2HTMLPlugin extends GenericPlugin
//handle only on zip galleys - supposed to be an xml archive (source + images)
$zipMode = $galley && $galley->getFileType() === 'application/zip';
if ($zipMode) {
$this->archiveView($galley->getFile()->getData('path'), $submission->getId(), 'article');
$this->archiveView($galley->getFile()->getData('path'), $submission->getId(), $galley->getId(),'article');
return true;
} else return false;
}
......@@ -52,23 +52,25 @@ class XML2HTMLPlugin extends GenericPlugin
{
$submission = &$params[1];
$galley =& $params[2];
$submissionFile =& $params[3];
$zipMode = $submissionFile->getData('mimetype') === "application/zip";
if ($zipMode) {
$this->archiveView($submissionFile->getData('path'), $submission->getId(), 'catalog');
$this->archiveView($submissionFile->getData('path'), $submission->getId(), $galley->getId(),'catalog');
return true;
} else
return false;
}
private function archiveView(string $filePath, int $submissionId, string $op)
private function archiveView(string $filePath, int $submissionId, int $galleyId, string $op)
{
$templateMgr = TemplateManager::getManager($this->getRequest());
$xmlFilePath = XML2HTMLPlugin::unzipXMLArchive($filePath);
$html = $this->resolveZipImagePaths(
XML2HTMLPlugin::transform($xmlFilePath),
$submissionId,
$galleyId,
$xmlFilePath, $this->getRequest(),
$op);
$baseUrl = $this->getRequest()->getBaseUrl() . '/' . $this->getPluginPath();
......@@ -185,68 +187,20 @@ class XML2HTMLPlugin extends GenericPlugin
$page = $args[0];
$op = $args[1];
if ($page == 'article' && ($op == 'image' || $op == 'zimage')) {
if ($page == 'article' && (/*$op == 'image' || */$op == 'zimage')) {
define('HANDLER_CLASS', 'ArticleImageDataHandler');
import('plugins.generic.xml2html.ArticleImageDataHandler');
} else if (($page == 'catalog') && ($op == 'image' || $op == 'zimage')) {
} else if (($page == 'catalog') && (/*$op == 'image' || */$op == 'zimage')) {
define('HANDLER_CLASS', 'BookImageDataHandler');
import('plugins.generic.xml2html.BookImageDataHandler');
}
}
/**
* @param string $htmlString
* @param SubmissionFile $submissionFile
* @return string
* @brief Substitute path to attached images in html source
*/
static function resolveImagePaths(
string $htmlString, SubmissionFile $submissionFile, Request $request)
{
$dependentFilesIterator = Services::get('submissionFile')->getMany([
'assocTypes' => [ASSOC_TYPE_SUBMISSION_FILE],
'assocIds' => [$submissionFile->getId()],
'submissionIds' => [$submissionFile->getData('submissionId')],
'fileStages' => [SUBMISSION_FILE_DEPENDENT],
'includeDependentFiles' => true,
]);
foreach ($dependentFilesIterator as $dependentFile) {
$filePath = $request->url(
null, 'article',
'image',
array(
$submissionFile->getData('submissionId'),
$dependentFile->getData('fileId')
)
);
// Solution from HtmlArticleGalleyPlugin::_getHTMLContents
$imageFiles = [];
$imageFileNames = array_values($dependentFile->getData('name')); // localized
foreach ($imageFileNames as $imageFileName) {
if (empty($imageFileName)) continue;
if (array_key_exists($imageFileName, $imageFiles)) continue;
$imageFiles[$imageFileName] = $filePath;
$pattern = preg_quote(rawurlencode($imageFileName));
$htmlString = preg_replace(
'/([Ss][Rr][Cc]|[Hh][Rr][Ee][Ff]|[Dd][Aa][Tt][Aa])\s*=\s*"([^"]*' . $pattern . ')"/',
'\1="' . $filePath . '"',
$htmlString);
}
}
return $htmlString;
}
static function resolveZipImagePaths(
string $htmlString,
int $submissionId,
int $galleyId,
string $xmlFilePath,
Request $request,
string $op = 'article')
......@@ -265,6 +219,7 @@ class XML2HTMLPlugin extends GenericPlugin
'zimage',
array(
$submissionId,
$galleyId,
$file
)
);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment