Open Journal Systems  3.3.0
MarkupBatchConversionHelper.inc.php
1 <?php
2 
19  protected $_outFile = null;
20 
24  public function __construct() {
25  $this->_outFile = sys_get_temp_dir() . '/markupBatch.out';
26  }
31  public function isRunning() {
32  return file_exists($this->_outFile);
33  }
34 
40  public function createOutFile($data) {
41  if (file_exists($this->_outFile)) {
42  throw new Exception(__('plugins.generic.markup.file-exists', array('file' => $this->_outFile)));
43  }
44  else {
45  file_put_contents($this->_outFile, serialize($data));
46  }
47  }
48 
53  public function updateOutFile($data) {
54  file_put_contents($this->_outFile, serialize($data), LOCK_EX);
55  }
56 
61  public function readOutFile() {
62  if ($this->isRunning()) {
63  $content = file_get_contents($this->_outFile);
64  return unserialize($content);
65  }
66  return null;
67  }
68 
72  public function deleteOutFile() {
73  if (file_exists($this->_outFile)) {
74  unlink($this->_outFile);
75  }
76  }
77 
86  public function errorHandler($errno, $errstr, $errfile, $errline) {
87  $this->deleteOutFile();
88  // returning false because we still want PHP internal error handler to run
89  return false;
90  }
91 
92 
98  public function buildSubmissionMetadataByContext($contextId) {
99  $metadata = array();
100  $locale = AppLocale::getLocale();
101  $genreDao = DAORegistry::getDAO('GenreDAO');
102  $submissionDao = DAORegistry::getDAO('ArticleDAO');
103  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO');
104  $submissions = $submissionDao->getByContextId($contextId);
105  import('lib.pkp.classes.file.SubmissionFileManager');
106  $validFileExtensions = array('pdf','doc','docx','xml');
107  $pdfGalleyFileId = null;
108  $pdfProductionReadyFileId = null;
109  $xmlProductionReadyFileId = null;
110 
111  import('lib.pkp.classes.submission.SubmissionFile'); // Bring in const
112  // TODO Validate this with Alec
113  // do we need more const here?
114  // Do these values make sense?
115  // Unable to find titles for SUBMISSION_FILE_FAIR_COPY and SUBMISSION_FILE_PUBLIC
116  $fileStageNames = array(
117  SUBMISSION_FILE_SUBMISSION => __('submission.submit.submissionFiles'),
118  SUBMISSION_FILE_REVIEW_FILE => __('reviewer.submission.reviewFiles'),
119  SUBMISSION_FILE_COPYEDIT => __('submission.copyedited'),
120  SUBMISSION_FILE_PROOF => __('submission.pageProofs'),
121  SUBMISSION_FILE_PRODUCTION_READY => __('editor.submission.production.productionReadyFiles'),
122  SUBMISSION_FILE_ATTACHMENT => __('grid.reviewAttachments.title'),
123  SUBMISSION_FILE_FAIR_COPY => 'SUBMISSION_FILE_FAIR_COPY',//__(''),
124  SUBMISSION_FILE_QUERY => __('submission.queries.attachedFiles'),
125  SUBMISSION_FILE_REVIEW_ATTACHMENT => __('grid.reviewAttachments.title'),
126  SUBMISSION_FILE_REVIEW_REVISION => __('editor.submission.revisions'),
127  SUBMISSION_FILE_PUBLIC => 'SUBMISSION_FILE_PUBLIC',//__(''),
128  );
129 
130  while ($submission = $submissions->next()) {
131  $pdfGalleyFileId = null;
132  //Exclude incomplete submissions
133  if ($submission->getSubmissionProgress() != 0) {
134  continue;
135  }
136  $hasXmlInProductionReady = false;
137  $sMetadata = array(
138  'id' => $submission->getId(),
139  'stage' => $submission->getStageId(),
140  'title' => $submission->getFullTitle($locale),
141  'files' => array(),
142  );
143  $submissionFileManager = new SubmissionFileManager($contextId, $submission->getId());
144  $submissionFiles = $submissionFileDao->getBySubmissionId($submission->getId());
145  foreach ($submissionFiles as $submissionFile) {
146  $genre = $genreDao->getById($submissionFile->getGenreId());
147  $fileStage = $submissionFile->getFileStage();
148  $fileExtension = strtolower($submissionFile->getExtension());
149  if (!$genre || (intval($genre->getCategory()) != GENRE_CATEGORY_DOCUMENT))
150  continue;
151  if (!in_array($fileExtension, $validFileExtensions))
152  continue;
153  // check whether xml file is present in production ready
154  if (($fileExtension == 'xml') && ($fileStage == SUBMISSION_FILE_PRODUCTION_READY)) {
155  $hasXmlInProductionReady = true;
156  }
157 
158  // check if there's a publish pdf in galleys or production ready
159  if ($fileExtension == 'pdf') {
160  if ($fileStage == SUBMISSION_FILE_PROOF) {
161  $pdfGalleyFileId = $submissionFile->getFileId();
162  }
163  if ($fileStage == SUBMISSION_FILE_PRODUCTION_READY) {
164  $pdfProductionReadyFileId = $submissionFile->getFileId();
165  }
166  }
167  if (in_array($fileExtension, array('doc','docx'))) {
168  if ($fileStage == SUBMISSION_FILE_PRODUCTION_READY) {
169  $xmlProductionReadyFileId = $submissionFile->getFileId();
170  }
171  }
172  $sMetadata['files'][] = array(
173  'fileId' => $submissionFile->getFileId(),
174  'filename' => $submissionFile->getName($locale),
175  'fileStage' => $fileStageNames[$fileStage],
176  );
177  }
178 
179  // decide on submission file to select by default
180  $defaultSubmissionFileId = 0;
181  if (!$hasXmlInProductionReady) {
182  if (!is_null($pdfGalleyFileId)) {
183  $defaultSubmissionFileId = $pdfGalleyFileId;
184  }
185  elseif (!is_null($pdfProductionReadyFileId)) {
186  $defaultSubmissionFileId = $pdfProductionReadyFileId;
187  }
188  elseif (!is_null($xmlProductionReadyFileId)) {
189  $defaultSubmissionFileId = $xmlProductionReadyFileId;
190  }
191  else {
192  $defaultSubmissionFileId = 0;
193  }
194  }
195  $sMetadata['defaultSubmissionFileId'] = $defaultSubmissionFileId;
196  $sMetadata['pdfGalleyFileId'] = $pdfGalleyFileId;
197  $sMetadata['pdfProductionReadyFileId'] = $pdfProductionReadyFileId;
198  $sMetadata['xmlProductionReadyFileId'] = $xmlProductionReadyFileId;
199  $metadata[] = $sMetadata;
200  }
201  return $metadata;
202  }
203 }
SubmissionFileManager
Helper class for database-backed submission file management tasks.
Definition: SubmissionFileManager.inc.php:30
MarkupBatchConversionHelper\updateOutFile
updateOutFile($data)
Definition: MarkupBatchConversionHelper.inc.php:56
MarkupBatchConversionHelper\$_outFile
$_outFile
Definition: MarkupBatchConversionHelper.inc.php:22
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
MarkupBatchConversionHelper
Definition: MarkupBatchConversionHelper.inc.php:17
MarkupBatchConversionHelper\__construct
__construct()
Definition: MarkupBatchConversionHelper.inc.php:27
MarkupBatchConversionHelper\createOutFile
createOutFile($data)
Definition: MarkupBatchConversionHelper.inc.php:43
MarkupBatchConversionHelper\errorHandler
errorHandler($errno, $errstr, $errfile, $errline)
Definition: MarkupBatchConversionHelper.inc.php:89
MarkupBatchConversionHelper\buildSubmissionMetadataByContext
buildSubmissionMetadataByContext($contextId)
Definition: MarkupBatchConversionHelper.inc.php:101
MarkupBatchConversionHelper\deleteOutFile
deleteOutFile()
Definition: MarkupBatchConversionHelper.inc.php:75
MarkupBatchConversionHelper\isRunning
isRunning()
Definition: MarkupBatchConversionHelper.inc.php:34
AppLocale\getLocale
static getLocale()
Definition: env1/MockAppLocale.inc.php:40
MarkupBatchConversionHelper\readOutFile
readOutFile()
Definition: MarkupBatchConversionHelper.inc.php:64