Open Journal Systems  3.3.0
MarkupConversionHelper.inc.php
1 <?php
2 
19  protected $_xmlpsWrapper = null;
21  protected $_plugin = null;
23  protected $_params = null;
25  protected static $_otsWrapper = null;
26 
33  public function __construct($plugin, $xmlpsWrapper, $user) {
34  $this->_plugin = $plugin;
35  $this->user = $user;
36  $this->_xmlpsWrapper = $xmlpsWrapper;
37  }
38 
46  protected function buildSubmissionMetadata($journal, $submission) {
47  AppLocale::requireComponents(LOCALE_COMPONENT_PKP_SUBMISSION);
48  $locale = ($submission->getLanguage() != '') ? $submission->getLanguage() : $journal->getPrimaryLocale();
49 
50  $publishedArticleDao = DAORegistry::getDAO('PublishedArticleDAO');
51  $issueDao = DAORegistry::getDAO('IssueDAO');
52  $sectionDao = DAORegistry::getDAO('SectionDAO');
53  $userGroupDao = DAORegistry::getDAO('UserGroupDAO');
54 
55  /* Authors */
56  $count = 0;
57  foreach ($submission->getAuthors() as $author) {
58  $authors[$count]['firstName'] = $author->getFirstName();
59  $authors[$count]['lastName'] = $author->getLastName();
60  $authors[$count]['email'] = $author->getEmail();
61  $authors[$count]['orcid'] = $author->getOrcid();
62  $authors[$count]['affiliation'] = $author->getLocalizedAffiliation();
63  $authors[$count]['country'] = $author->getCountry();
64  $authors[$count]['bio'] = $author->getLocalizedBiography();
65  $userGroup = $userGroupDao->getById($author->getUserGroupId());
66  $authors[$count]['contribType'] = $userGroup->getLocalizedName();
67  $count++;
68  }
69 
70  /* Issue information, if available*/
71  $issueDetails = null;
72  $publishedArticle = $publishedArticleDao->getByArticleId($submission->getId());
73  if ($publishedArticle){
74  $issue = $issueDao->getById($publishedArticle->getIssueId());
75  $issueDetails = array (
76  'issue-year' => $issue->getYear(),
77  'issue-volume' => $issue->getVolume(),
78  'issue-number' => $issue->getNumber(),
79  'issue-title' => $issue->getLocalizedTitle(),
80  );
81  }
82 
83  /* Page numbers */
84  $matches = null;
85  if (PKPString::regexp_match_get('/^[Pp][Pp]?[.]?[ ]?(\d+)$/', $submission->getPages(), $matches)) {
86  $matchedPage = $matches[1];
87  $fpage = $matchedPage;
88  $lpage = $matchedPage;
89  $pageCount = 1;
90  } elseif (PKPString::regexp_match_get('/^[Pp][Pp]?[.]?[ ]?(\d+)[ ]?(-|–)[ ]?([Pp][Pp]?[.]?[ ]?)?(\d+)$/', $submission->getPages(), $matches)) {
91  $fpage = $matches[1];
92  $lpage = $matches[4];
93  $pageCount = $fpage - $lpage + 1;
94  }
95 
96  /* Localized journal titles */
97  foreach ($journal->getName(null) as $loc => $title) {
98  $journalTitles[strtoupper(substr($loc, 0, 2))] = htmlspecialchars($title);
99  }
100 
101  /* Localized article titles */
102  foreach ($submission->getTitle(null) as $loc => $title) {
103  $articleTitles[strtoupper(substr($loc, 0, 2))] = htmlspecialchars($title);
104  }
105 
106  /* Localized abstracts */
107  $abstracts = array();
108  if (is_array($submission->getAbstract(null))) foreach ($submission->getAbstract(null) as $loc => $abstract) {
109  $abstract = htmlspecialchars(strip_tags($abstract));
110  if (empty($abstract)) continue;
111  $abstracts[strtoupper(substr($loc, 0, 2))] = $abstract;
112  }
113 
114  /* TODO: keywords and other classifications */
115 
116  return array (
117  'locale' => $locale,
118  'article-titles' => $articleTitles,
119  'abstracts' => $abstracts,
120  'journal-titles' => $journalTitles,
121  'journal-id' => htmlspecialchars($journal->getSetting('abbreviation', $locale) ? $journal->getSetting('abbreviation', $locale) : $journal->getSetting('acronym', $locale)),
122  'institution' => $journal->getSetting('publisherInstitution'),
123  'contributors' => $authors,
124  'issue-details' => $issueDetails,
125  'online-ISSN' => $journal->getSetting('onlineIssn'),
126  'print-ISSN' => $journal->getSetting('printIssn'),
127  'doi' => $submission->getStoredPubId('doi'),
128  'article-id' => $submission->getBestArticleId(),
129  'copyright-year' => $submission->getCopyrightYear(),
130  'copyright-statement' => htmlspecialchars(__('submission.copyrightStatement', array('copyrightYear' => $submission->getCopyrightYear(), 'copyrightHolder' => $submission->getLocalizedCopyrightHolder()))),
131  'license-url' => $submission->getLicenseURL(),
132  'license' => Application::getCCLicenseBadge($submission->getLicenseURL()),
133  'fpage' => isset($fpage) ? $fpage: '',
134  'lpage' => isset($lpage) ? $lpage: '',
135  'page-count' => isset($pageCount) ? $pageCount: '',
136  'date-published' => $submission->getDatePublished(),
137  'subj-group-heading' => $sectionDao->getById($submission->getSectionId()),
138  );
139  }
140 
146  public function getCitationStyleHash($contextId) {
147  if (!is_null($citationStyleHash = Config::getVar('markup', 'ots_citation_style_hash'))) {
148  return $citationStyleHash;
149  }
150  return $this->_plugin->getSetting($contextId, 'cslStyle');
151  }
152 
163  public function triggerConversion($journal, $submissionFile, $stage, $target, $jobInfoId) {
164  $submissionDao = DAORegistry::getDAO('SubmissionDAO'); /* @var $submissionDao SubmissionDAO */
165  $submission = $submissionDao->getById($submissionFile->getSubmissionId());
166 
167  // submit file to markup server
168  $filePath = $submissionFile->getFilePath();
169  $filename = basename($filePath);
170  $fileContent = file_get_contents($filePath);
171  $citationStyle = $this->getCitationStyleHash($journal->getId());
172 
173  $metadata = $this->buildSubmissionMetadata($journal, $submission);
174  $jobId = $this->_xmlpsWrapper->submitJob($filename, $fileContent, $citationStyle, $metadata);
175 
176  // link XML job id with markup job
177  $markupJobInfoDao = DAORegistry::getDAO('MarkupJobInfoDAO');
178  $this->_plugin->import('classes.MarkupJobInfo');
179  $markupJobInfo = $markupJobInfoDao->getMarkupJobInfo($jobInfoId);
180  $markupJobInfo->setXmlJobId($jobId);
181  $markupJobInfoDao->updateMarkupJobInfo($markupJobInfo);
182 
183  return $jobId;
184  }
185 
196  public function retrieveConversionJobArchive($submissionFile, $jobId, $statusCallbackFn = null, $maxReq = 180, $sleep = 5) {
197  $i = 0;
198  $jobStatus = null;
199  while($i++ < $maxReq) {
200  $jobStatus = $this->_xmlpsWrapper->getJobStatus($jobId);
201  if (!is_null($statusCallbackFn) && is_callable($statusCallbackFn)) {
202  $statusCallbackFn($jobStatus);
203  }
204  if (($jobStatus != XMLPSWrapper::JOB_STATUS_PENDING) && ($jobStatus != XMLPSWrapper::JOB_STATUS_PROCESSING)) break;
205  sleep($sleep);
206  }
207  // Return FALSE if the job didn't complete
208  if ($jobStatus != XMLPSWrapper::JOB_STATUS_COMPLETED)
209  return false;
210 
211  // make sure submission file has not been deleted (for instance when user cancel out of wizard)
212  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO');
213  $submissionFile = $submissionFileDao->getLatestRevision($submissionFile->getFileId());
214  if (empty($submissionFile)) {
215  return false;
216  }
217  // Download the Zip archive.
218  $tmpZipFile = $this->_xmlpsWrapper->downloadFile($jobId);
219 
220  return $tmpZipFile;
221  }
222 
230  public function unzipArchive($zipFile) {
231 
232  $validFiles = array(
233  'document.pdf',
234  'document.xml',
235  'document.epub',
236  'html.zip',
237  );
238 
239  // Extract the zip archive to a markup subdirectory
240  $message = '';
241  $destination = sys_get_temp_dir() . '/' . uniqid();
242  if (!$this->zipArchiveExtract($zipFile, $destination, $message, $validFiles)) {
243  echo __(
244  'plugins.generic.markup.archive.badZip',
245  array(
246  'file' => $zipFile,
247  'error' => $message
248  )
249  );
250  return false;
251  }
252 
253  return $destination;
254  }
255 
266  public function zipArchiveExtract($zipFile, $destination, &$message, $validFiles = array()) {
267  $zip = new ZipArchive;
268  if (!$zip->open($zipFile, ZIPARCHIVE::CHECKCONS)) {
269  $message = $zip->getStatusString();
270  return false;
271  }
272 
273  if (!empty($validFiles)) {
274  // Restrict which files to extract
275  $extractFiles = array();
276  foreach ($validFiles as $validFile) {
277  if ($zip->locateName($validFile) !== false) {
278  $extractFiles[] = $validFile;
279  }
280  }
281  $status = $zip->extractTo($destination, $extractFiles);
282  } else {
283  // Extract the entire archive
284  $status = $zip->extractTo($destination);
285  }
286 
287  if ($status === false && $zip->getStatusString() != 'No error') {
288  $zip->close();
289  $message = $zip->getStatusString();
290  return false;
291  }
292 
293  $zip->close();
294 
295  return true;
296  }
297 
308  public function addXmlDocumentToSubmissionFileList($journal, $submission, $filePath, $params) {
309  $journalId = $journal->getId();
310  $submissionId = $submission->getId();
311  $genreDao = DAORegistry::getDAO('GenreDAO');
312  $genre = $genreDao->getByKey('SUBMISSION', $journalId);
313  $genreId = $genre->getId();
314 
315  $fileName = isset($params['filename']) ? "{$params['filename']}.xml" :'document.xml';
316  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO');
317  $submissionFile = $submissionFileDao->newDataObjectByGenreId($genreId);
318  $submissionFile->setUploaderUserId($this->user->getId());
319  $submissionFile->setSubmissionId($submissionId);
320  $submissionFile->setGenreId($genreId);
321  $submissionFile->setFileSize(filesize($filePath));
322  $submissionFile->setFileStage($params['fileStage']);
323  $submissionFile->setDateUploaded(Core::getCurrentDate());
324  $submissionFile->setDateModified(Core::getCurrentDate());
325  $submissionFile->setOriginalFileName($fileName);
326  $submissionFile->setFileType('text/xml');
327  $submissionFile->setViewable(true);
328  $submissionFile->setSubmissionLocale($submission->getLocale());
329  $submissionFile->setName($fileName, AppLocale::getLocale());
330 
331  $submissionFile->setAssocType($params['assocType']);
332  $submissionFile->setAssocId($params['assocId']);
333  $insertedFile = $submissionFileDao->insertObject($submissionFile, $filePath, false);
334  return $insertedFile;
335  }
336 
347  protected function _addDependentImageToXmlDocument($journal, $submission, $filePath, $params) {
348  $journalId = $journal->getId();
349  $submissionId = $submission->getId();
350 
351  $genreDao = DAORegistry::getDAO('GenreDAO');
352  $genre = $genreDao->getByKey('IMAGE', $journalId);
353  $genreId = $genre->getId();
354 
355  $fileName = basename($filePath);
356 
357  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO');
358  $submissionFile = $submissionFileDao->newDataObjectByGenreId($genreId);
359  $submissionFile->setUploaderUserId($this->user->getId());
360  $submissionFile->setSubmissionId($submissionId);
361  $submissionFile->setGenreId($genreId);
362  $submissionFile->setFileSize(filesize($filePath));
363  $submissionFile->setFileStage(SUBMISSION_FILE_DEPENDENT);
364  $submissionFile->setDateUploaded(Core::getCurrentDate());
365  $submissionFile->setDateModified(Core::getCurrentDate());
366  $submissionFile->setOriginalFileName($fileName);
367  $submissionFile->setFileType(mime_content_type($filePath));
368  $submissionFile->setViewable(true);
369  $submissionFile->setSubmissionLocale($submission->getLocale());
370  $submissionFile->setName($fileName, AppLocale::getLocale());
371 
372  $submissionFile->setAssocType($params['assocType']);
373  $submissionFile->setAssocId($params['assocId']);
374  $insertedFile = $submissionFileDao->insertObject($submissionFile, $filePath, false);
375  return $insertedFile;
376  }
377 
389  public function addFileToSubmissionGalley($existing_galley_by_labels, $submission, $genreId, $format, $filePath, $params = array()) {
390  $submissionId = $submission->getId();
391 
392  $galleyFiles = [];
393  $articleGalley = null;
394  $articleGalleyDao = DAORegistry::getDAO('ArticleGalleyDAO');
395  $label = 'XMLPS-' . strtoupper($format) . '-' . date("MdSY@H:i",time());
396 
397  $fileName = isset($params['filename']) ? "{$params['filename']}.{$format}" : "document.{$format}";
398 
399  // create new galley
400  $articleGalley = $articleGalleyDao->newDataObject();
401  $articleGalley->setSubmissionId($submissionId);
402  $articleGalley->setLabel($label);
403  $articleGalley->setLocale($submission->getLocale());
404  $articleGalleyDao->insertObject($articleGalley);
405 
406  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO');
407  $submissionFile = $submissionFileDao->newDataObjectByGenreId($genreId);
408  $submissionFile->setUploaderUserId($this->user->getId());
409  $submissionFile->setSubmissionId($submissionId);
410  $submissionFile->setGenreId($genreId);
411  $submissionFile->setFileSize(filesize($filePath));
412  $submissionFile->setFileStage(SUBMISSION_FILE_PROOF);
413  $submissionFile->setDateUploaded(Core::getCurrentDate());
414  $submissionFile->setDateModified(Core::getCurrentDate());
415  $submissionFile->setOriginalFileName($fileName);
416  $submissionFile->setSubmissionLocale($submission->getLocale());
417  $submissionFile->setName($fileName, AppLocale::getLocale());
418 
419  switch($format) {
420  case 'pdf':
421  $submissionFile->setFileType('application/pdf');
422  break;
423  case 'epub':
424  $submissionFile->setFileType('application/epub+zip');
425  break;
426  case 'xml':
427  $submissionFile->setFileType('text/xml');
428  break;
429  }
430 
431  $submissionFile->setAssocType(ASSOC_TYPE_GALLEY);
432  $submissionFile->setAssocId($articleGalley->getId());
433  $insertedFile = $submissionFileDao->insertObject($submissionFile, $filePath, false);
434 
435  // attach file id to galley
436  $articleGalley->setFileId($submissionFile->getFileId());
437  $articleGalleyDao->updateObject($articleGalley);
438 
439  return $insertedFile;
440  }
441 
454  protected function _processHtmlMediaFiles($context, $submission, $submissionFile, $stage, $htmlArchiveFilePath) {
455  // Extract the html zip archive
456  $message = '';
457  $destination = sys_get_temp_dir() . '/' . uniqid();
458  if (!$this->zipArchiveExtract($htmlArchiveFilePath, $destination, $message)) {
459  $errorMessage = __(
460  'plugins.generic.markup.archive.badZip',
461  array(
462  'file' => $htmlArchiveFilePath,
463  'error' => $message
464  )
465  );
466  fatalError($errorMessage);
467  }
468 
469  foreach (glob("{$destination}/media/*.png") as $filePath) {
470  $params = array(
471  'assocType' => ASSOC_TYPE_SUBMISSION_FILE,
472  'assocId' => $submissionFile->getFileId(),
473  );
474  $this->_addDependentImageToXmlDocument($context, $submission, $filePath, $params);
475  }
476  }
477 
488  public function handleArchiveExtractionAfterXmlConversion($extractionPath, $journal, $submission, $submissionFile, $fileStage, $fileName) {
489  $params = array(
490  'fileStage' => $fileStage,
491  'assocType' => (int)$submissionFile->getAssocType(),
492  'assocId' => (int)$submissionFile->getAssocId(),
493  'filename' => $fileName,
494  );
495  $xmlSubmissionFile = $this->addXmlDocumentToSubmissionFileList($journal, $submission, "{$extractionPath}/document.xml", $params);
496  $htmlZilePath = "{$extractionPath}/html.zip";
497  $this->_processHtmlMediaFiles($journal, $submission, $xmlSubmissionFile, $stage, $htmlZilePath);
498  return true;
499  }
500 
510  public function handleArchiveExtractionAfterGalleyGenerate($extractionPath, $journal, $submission, $submissionFile, $fileName) {
511  $journalId = $journal->getId();
512  // Always populate production ready files with xml document.
513  $params = array(
514  'fileStage' => SUBMISSION_FILE_PRODUCTION_READY,
515  'assocType' => (int)$submissionFile->getAssocType(),
516  'assocId' => (int)$submissionFile->getAssocId(),
517  'filename' => $fileName
518  );
519  $this->addXmlDocumentToSubmissionFileList($journal, $submission, "{$extractionPath}/document.xml", $params);
520  $wantedFormats = $this->_plugin->getSetting($journalId, 'wantedFormats');
521  $genreDao = DAORegistry::getDAO('GenreDAO');
522  $genre = $genreDao->getByKey('SUBMISSION', $journalId);
523 
524  // retrieve galleys
525  $articleGalleyDao = DAORegistry::getDAO('ArticleGalleyDAO');
526  $galleys = $articleGalleyDao->getBySubmissionId($submission->getId());
527  $existing_galley_by_labels = array();
528  while ($galley = $galleys->next()) {
529  $existing_galley_by_labels[$galley->getLabel()] = $galley;
530  }
531 
532  $gParams = array(
533  'filename' => $fileName,
534  );
535  if (in_array('pdf', $wantedFormats)) {
536  $this->addFileToSubmissionGalley($existing_galley_by_labels, $submission, $genre->getId(), 'pdf', "{$extractionPath}/document.pdf", $gParams);
537  }
538  if (in_array('xml', $wantedFormats)) {
539  $this->addFileToSubmissionGalley($existing_galley_by_labels, $submission, $genre->getId(), 'xml', "{$extractionPath}/document.xml", $gParams);
540  }
541  if (in_array('epub', $wantedFormats)) {
542  $this->addFileToSubmissionGalley($existing_galley_by_labels, $submission, $genre->getId(), 'epub', "{$extractionPath}/document.epub", $gParams);
543  }
544  return true;
545  }
546 
554  public static function createConversionJobInfo($journal, $user, $fileId) {
555  $jobId = uniqid();
556  $markupJobInfoDao = DAORegistry::getDAO('MarkupJobInfoDAO');
557  // using require_once here because I can't use `$this->import('MarkupJobInfo');` since we are in static function
558  // and I don't want to use `import('plugins.generic.markup.classes.MarkupJobInfo');` because I cannot
559  // guarantee the plugin folder will always be `markup`. e.g The repo name is ojs3-markup
560  require_once(dirname(__FILE__) . '/MarkupJobInfo.inc.php');
561  $jobInfo = new MarkupJobInfo();
562  $jobInfo->setId($jobId);
563  $jobInfo->setFileId($fileId);
564  $jobInfo->setUserId($user->getId());
565  $jobInfo->setJournalId($journal->getId());
566  $jobInfo->setXmlJobId(NULL);
567  $markupJobInfoDao->insertMarkupJobInfo($jobInfo);
568 
569  return $jobId;
570  }
571 
581  public static function getOTSWrapperInstance($plugin, $journal, $userObject, $reuseCached = true) {
582  // Note: passing $userObject instead of calling $request->getUser() because this
583  // method is often called from gateway plugin and it seems that user session is not available
584  if (!is_null(self::$_otsWrapper) && $reuseCached) {
585  return self::$_otsWrapper;
586  }
587  $journalId = $journal->getId();
588  // Import host, user and password variables into the current symbol table from an array
589  extract($plugin->getOTSLoginParametersForJournal($journal->getId(), $userObject));
590  // using require_once here because I can't use `$this->import('XMLPSWrapper');` since we are in static function
591  // and I don't want to use `import('plugins.generic.markup.classes.XMLPSWrapper');` because I cannot
592  // guarantee the plugin folder will always be `markup`. e.g The repo name is ojs3-markup
593  require_once(dirname(__FILE__) . '/XMLPSWrapper.inc.php');
594  self::$_otsWrapper = new XMLPSWrapper($host, $user, $password);
595  return self::$_otsWrapper;
596  }
597 
602  public static function readCredentialsFromConfig() {
603  return array(
604  'host' => Config::getVar('markup', 'ots_host'),
605  'user' => Config::getVar('markup', 'ots_login_email'),
606  'password' => Config::getVar('markup', 'ots_api_token'),
607  );
608  }
609 
615  public static function canUseCredentialsFromConfig($creds) {
616  if (!isset($creds['host']) || empty($creds['host'])) {
617  return false;
618  }
619  if (!isset($creds['user']) || empty($creds['user'])) {
620  return false;
621  }
622  if (!isset($creds['password']) || empty($creds['password'])) {
623  return false;
624  }
625  return true;
626  }
627 
633  public static function makeAccessToken($user) {
634  import('lib.pkp.classes.security.AccessKeyManager');
635  $accessKeyManager = new AccessKeyManager();
636  $accessKey = $accessKeyManager->createKey('MarkupContext', $user->getId(), null, 1);
637  return $accessKey;
638  }
639 
646  public static function validateAccessToken($user, $accessKey) {
647  import('lib.pkp.classes.security.AccessKeyManager');
648  $accessKeyManager = new AccessKeyManager();
649  $accessKeyHash = AccessKeyManager::generateKeyHash($accessKey);
650  $accessKey = $accessKeyManager->validateKey(
651  'MarkupContext',
652  $user->getId(),
653  $accessKeyHash
654  );
655  return !is_null($accessKey);
656  }
657 }
MarkupConversionHelper\handleArchiveExtractionAfterGalleyGenerate
handleArchiveExtractionAfterGalleyGenerate($extractionPath, $journal, $submission, $submissionFile, $fileName)
Definition: MarkupConversionHelper.inc.php:519
MarkupConversionHelper\addXmlDocumentToSubmissionFileList
addXmlDocumentToSubmissionFileList($journal, $submission, $filePath, $params)
Definition: MarkupConversionHelper.inc.php:317
MarkupConversionHelper\triggerConversion
triggerConversion($journal, $submissionFile, $stage, $target, $jobInfoId)
Definition: MarkupConversionHelper.inc.php:172
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
MarkupConversionHelper\$_xmlpsWrapper
$_xmlpsWrapper
Definition: MarkupConversionHelper.inc.php:22
PKPString\regexp_match_get
static regexp_match_get($pattern, $subject, &$matches)
Definition: PKPString.inc.php:256
MarkupConversionHelper\validateAccessToken
static validateAccessToken($user, $accessKey)
Definition: MarkupConversionHelper.inc.php:655
MarkupConversionHelper\getCitationStyleHash
getCitationStyleHash($contextId)
Definition: MarkupConversionHelper.inc.php:155
MarkupConversionHelper\_addDependentImageToXmlDocument
_addDependentImageToXmlDocument($journal, $submission, $filePath, $params)
Definition: MarkupConversionHelper.inc.php:356
MarkupConversionHelper\createConversionJobInfo
static createConversionJobInfo($journal, $user, $fileId)
Definition: MarkupConversionHelper.inc.php:563
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
MarkupConversionHelper
Markup conversion Helper class.
Definition: MarkupConversionHelper.inc.php:17
MarkupConversionHelper\$_plugin
$_plugin
Definition: MarkupConversionHelper.inc.php:27
AccessKeyManager
Class defining operations for AccessKey management.
Definition: AccessKeyManager.inc.php:18
PKPApplication\getCCLicenseBadge
getCCLicenseBadge($ccLicenseURL, $locale=null)
Definition: PKPApplication.inc.php:704
MarkupConversionHelper\retrieveConversionJobArchive
retrieveConversionJobArchive($submissionFile, $jobId, $statusCallbackFn=null, $maxReq=180, $sleep=5)
Definition: MarkupConversionHelper.inc.php:205
MarkupConversionHelper\__construct
__construct($plugin, $xmlpsWrapper, $user)
Definition: MarkupConversionHelper.inc.php:42
MarkupConversionHelper\unzipArchive
unzipArchive($zipFile)
Definition: MarkupConversionHelper.inc.php:239
MarkupConversionHelper\$_params
$_params
Definition: MarkupConversionHelper.inc.php:32
XMLPSWrapper\JOB_STATUS_PROCESSING
const JOB_STATUS_PROCESSING
Definition: XMLPSWrapper.inc.php:20
MarkupConversionHelper\zipArchiveExtract
zipArchiveExtract($zipFile, $destination, &$message, $validFiles=array())
Definition: MarkupConversionHelper.inc.php:275
MarkupConversionHelper\getOTSWrapperInstance
static getOTSWrapperInstance($plugin, $journal, $userObject, $reuseCached=true)
Definition: MarkupConversionHelper.inc.php:590
XMLPSWrapper
Wrapper class for XML Parsing Service.
Definition: XMLPSWrapper.inc.php:16
MarkupJobInfo
class containing metadata about a job triggered
Definition: MarkupJobInfo.inc.php:16
MarkupConversionHelper\readCredentialsFromConfig
static readCredentialsFromConfig()
Definition: MarkupConversionHelper.inc.php:611
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
MarkupConversionHelper\buildSubmissionMetadata
buildSubmissionMetadata($journal, $submission)
Definition: MarkupConversionHelper.inc.php:55
MarkupConversionHelper\handleArchiveExtractionAfterXmlConversion
handleArchiveExtractionAfterXmlConversion($extractionPath, $journal, $submission, $submissionFile, $fileStage, $fileName)
Definition: MarkupConversionHelper.inc.php:497
MarkupConversionHelper\canUseCredentialsFromConfig
static canUseCredentialsFromConfig($creds)
Definition: MarkupConversionHelper.inc.php:624
MarkupConversionHelper\addFileToSubmissionGalley
addFileToSubmissionGalley($existing_galley_by_labels, $submission, $genreId, $format, $filePath, $params=array())
Definition: MarkupConversionHelper.inc.php:398
XMLPSWrapper\JOB_STATUS_PENDING
const JOB_STATUS_PENDING
Definition: XMLPSWrapper.inc.php:19
MarkupConversionHelper\$_otsWrapper
static $_otsWrapper
Definition: MarkupConversionHelper.inc.php:34
AccessKeyManager\generateKeyHash
generateKeyHash($key)
Definition: AccessKeyManager.inc.php:35
Core\getCurrentDate
static getCurrentDate($ts=null)
Definition: Core.inc.php:63
fatalError
if(!function_exists('import')) fatalError($reason)
Definition: functions.inc.php:32
XMLPSWrapper\JOB_STATUS_COMPLETED
const JOB_STATUS_COMPLETED
Definition: XMLPSWrapper.inc.php:21
AppLocale\getLocale
static getLocale()
Definition: env1/MockAppLocale.inc.php:40
MarkupConversionHelper\makeAccessToken
static makeAccessToken($user)
Definition: MarkupConversionHelper.inc.php:642
MarkupConversionHelper\_processHtmlMediaFiles
_processHtmlMediaFiles($context, $submission, $submissionFile, $stage, $htmlArchiveFilePath)
Definition: MarkupConversionHelper.inc.php:463