Open Journal Systems  3.3.0
TextureArticleGalleyForm.inc.php
1 <?php
2 
17 import('lib.pkp.classes.form.Form');
18 
21  var $_submission = null;
22 
29  function __construct($request, $plugin, $submission) {
30  $this->_submission = $submission;
31 
32  parent::__construct($plugin->getTemplateResource('TextureArticleGalley.tpl'));
33 
34  PKPLocale::requireComponents(LOCALE_COMPONENT_APP_EDITOR, LOCALE_COMPONENT_PKP_SUBMISSION);
35 
36  $this->addCheck(new FormValidator($this, 'label', 'required', 'editor.issues.galleyLabelRequired'));
37  $this->addCheck(new FormValidatorPost($this));
38  $this->addCheck(new FormValidatorCSRF($this));
39 
40  // Ensure a locale is provided and valid
41  $journal = $request->getJournal();
42  $this->addCheck(
43  new FormValidator(
44  $this,
45  'galleyLocale',
46  'required',
47  'editor.issues.galleyLocaleRequired'
48  ),
49  function ($galleyLocale) use ($journal) {
50  return in_array($galleyLocale, $journal->getSupportedSubmissionLocaleNames());
51  }
52  );
53  }
54 
60  function fetch($request) {
61  $journal = $request->getJournal();
62  $templateMgr = TemplateManager::getManager($request);
63 
64  $templateMgr->assign(array(
65  'supportedLocales' => $journal->getSupportedSubmissionLocaleNames(),
66  'submissionId' => $this->getSubmission()->getId(),
67  'stageId' => $request->getUserVar('stageId'),
68  'fileStage' => $request->getUserVar('fileStage'),
69  'fileId' => $request->getUserVar('fileId')
70 
71  ));
72 
73  return parent::fetch($request);
74  }
75 
79  function readInputData() {
80  $this->readUserVars(
81  array(
82  'label',
83  'galleyLocale',
84  'fileId',
85  'fileStage'
86  )
87  );
88  }
89 
94  function execute(...$functionArgs) {
95  $context = Application::getRequest()->getJournal();
96  $submissionId = $this->getSubmission()->getId();
97 
98  // Create new galley
99  $articleGalleyDao = DAORegistry::getDAO('ArticleGalleyDAO');
100  $articleGalley = $articleGalleyDao->newDataObject();
101  $articleGalley->setSubmissionId($this->getSubmission()->getId());
102  $articleGalley->setLabel($this->getData('label'));
103  $articleGalley->setLocale($this->getData('galleyLocale'));
104  $newGalleyId = $articleGalleyDao->insertObject($articleGalley);
105 
106  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO');
107  $fileStage = $this->getData('fileStage');
108  $submissionFile = $submissionFileDao->getLatestRevision( $this->getData('fileId'), $fileStage, $submissionId);
109 
110  // Create galley XML file from the production XML source file
111  import('lib.pkp.classes.file.SubmissionFileManager');
112  $submissionFileManager = new SubmissionFileManager($context->getId(), $submissionFile);
113  $fileId = $submissionFile->getFileId();
114  $revision = $submissionFile->getRevision();
115 
116  list($newFileId, $newRevision) = $submissionFileManager->copyFileToFileStage($fileId, $revision, $fileStage, null, true);
117  $newSubmissionFile = $submissionFileDao->getLatestRevision($newFileId, $fileStage, $submissionId);
118  $newSubmissionFile->setAssocType(ASSOC_TYPE_REPRESENTATION);
119  $newSubmissionFile->setAssocId($newGalleyId);
120  $newSubmissionFile->setFileStage(SUBMISSION_FILE_PROOF);
121  $submissionFileDao->updateObject($newSubmissionFile);
122 
123  // Associate XML file into galley
124  if ($articleGalley) {
125  $articleGalley->setFileId($newSubmissionFile->getFileId());
126  $articleGalleyDao->updateObject($articleGalley);
127  }
128 
129  // Get dependent files of the XML source file
130  $dependentFiles = $submissionFileDao->getLatestRevisionsByAssocId(
131  ASSOC_TYPE_SUBMISSION_FILE,
132  $submissionFile->getFileId(),
133  $submissionFile->getSubmissionId(),
134  SUBMISSION_FILE_DEPENDENT
135  );
136 
137  // Copy dependent files to the galley XML file
138  foreach ($dependentFiles as $dependentFile) {
139  $dependentFileId = $dependentFile->getFileId();
140  $dependentFileRevision = $dependentFile->getRevision();
141  $dependentFileStage = $dependentFile->getFileStage();
142 
143  list($newDependentFileId, $newDependentFileRevision) = $submissionFileManager->copyFileToFileStage($dependentFileId, $dependentFileRevision, $dependentFileStage, null, true);
144  $newDependentFile = $submissionFileDao->getLatestRevision($newDependentFileId, SUBMISSION_FILE_DEPENDENT, $submissionId);
145  $newDependentFile->setAssocId($newFileId);
146  $submissionFileDao->updateObject($newDependentFile);
147  }
148 
149  parent::execute(...$functionArgs);
150 
151  return $articleGalley;
152  }
153 
158  private function getSubmission() {
159  return $this->_submission;
160  }
161 }
162 
163 
164 
165 
SubmissionFileManager
Helper class for database-backed submission file management tasks.
Definition: SubmissionFileManager.inc.php:30
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
Form\readUserVars
readUserVars($vars)
Definition: Form.inc.php:378
Form\getData
getData($key)
Definition: Form.inc.php:220
FormValidatorPost
Form validation check to make sure the form is POSTed.
Definition: FormValidatorPost.inc.php:18
TextureArticleGalleyForm\execute
execute(... $functionArgs)
Definition: TextureArticleGalleyForm.inc.php:97
TextureArticleGalleyForm\$_submission
$_submission
Definition: TextureArticleGalleyForm.inc.php:24
TextureArticleGalleyForm
Article galley editing form.
Definition: TextureArticleGalleyForm.inc.php:19
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
FormValidator
Class to represent a form validation check.
Definition: FormValidator.inc.php:23
TextureArticleGalleyForm\fetch
fetch($request)
Definition: TextureArticleGalleyForm.inc.php:63
Form\addCheck
addCheck($formValidator)
Definition: Form.inc.php:395
TextureArticleGalleyForm\__construct
__construct($request, $plugin, $submission)
Definition: TextureArticleGalleyForm.inc.php:32
FormValidatorCSRF
Form validation check to make sure the CSRF token is correct.
Definition: FormValidatorCSRF.inc.php:18
Form
Class defining basic operations for handling HTML forms.
Definition: Form.inc.php:47
PKPApplication\getRequest
getRequest()
Definition: PKPApplication.inc.php:270
PKPLocale\requireComponents
static requireComponents()
Definition: PKPLocale.inc.php:374
TextureArticleGalleyForm\readInputData
readInputData()
Definition: TextureArticleGalleyForm.inc.php:82