Open Journal Systems  3.3.0
ArticleGalleyForm.inc.php
1 <?php
2 
17 import('lib.pkp.classes.form.Form');
18 
19 class ArticleGalleyForm extends Form {
21  var $_submission = null;
22 
24  var $_publication = null;
25 
27  var $_articleGalley = null;
28 
35  function __construct($request, $submission, $publication, $articleGalley = null) {
36  parent::__construct('controllers/grid/articleGalleys/form/articleGalleyForm.tpl');
37  $this->_submission = $submission;
38  $this->_publication = $publication;
39  $this->_articleGalley = $articleGalley;
40 
41  AppLocale::requireComponents(LOCALE_COMPONENT_APP_EDITOR, LOCALE_COMPONENT_PKP_SUBMISSION);
42 
43  $this->addCheck(new FormValidator($this, 'label', 'required', 'editor.issues.galleyLabelRequired'));
44  $this->addCheck(new FormValidatorRegExp($this, 'urlPath', 'optional', 'validator.alpha_dash', '/^[-_a-z0-9]*$/'));
45  $this->addCheck(new FormValidatorPost($this));
46  $this->addCheck(new FormValidatorCSRF($this));
47 
48  // Ensure a locale is provided and valid
49  $journal = $request->getJournal();
50  $this->addCheck(
51  new FormValidator(
52  $this,
53  'galleyLocale',
54  'required',
55  'editor.issues.galleyLocaleRequired'
56  ),
57  function($galleyLocale) use ($journal) {
58  return in_array($galleyLocale, $journal->getSupportedSubmissionLocaleNames());
59  }
60  );
61  }
62 
66  function fetch($request, $template = null, $display = false) {
67  $templateMgr = TemplateManager::getManager($request);
68  if ($this->_articleGalley) $templateMgr->assign(array(
69  'representationId' => $this->_articleGalley->getId(),
70  'articleGalley' => $this->_articleGalley,
71  'articleGalleyFile' => $this->_articleGalley->getFile(),
72  ));
73  $context = $request->getContext();
74  $templateMgr->assign(array(
75  'supportedLocales' => $context->getSupportedSubmissionLocaleNames(),
76  'submissionId' => $this->_submission->getId(),
77  'publicationId' => $this->_publication->getId(),
78  ));
79 
80  return parent::fetch($request, $template, $display);
81  }
82 
86  function validate($callHooks = true) {
87 
88  // Check if urlPath is already being used
89  if ($this->getData('urlPath')) {
90  if (ctype_digit((string) $this->getData('urlPath'))) {
91  $this->addError('urlPath', __('publication.urlPath.numberInvalid'));
92  $this->addErrorField('urlPath');
93  } else {
94  $articleGalley = Application::get()->getRepresentationDAO()->getByBestGalleyId($this->getData('urlPath'), $this->_publication->getId());
95  if ($articleGalley &&
96  (!$this->_articleGalley || $this->_articleGalley->getId() !== $articleGalley->getId())
97  ) {
98  $this->addError('urlPath', __('publication.urlPath.duplicate'));
99  $this->addErrorField('urlPath');
100  }
101  }
102  }
103 
104  return parent::validate($callHooks);
105  }
106 
110  function initData() {
111  if ($this->_articleGalley) {
112  $this->_data = array(
113  'label' => $this->_articleGalley->getLabel(),
114  'galleyLocale' => $this->_articleGalley->getLocale(),
115  'urlPath' => $this->_articleGalley->getData('urlPath'),
116  'urlRemote' => $this->_articleGalley->getData('urlRemote'),
117  );
118  } else {
119  $this->_data = array();
120  }
121  }
122 
126  function readInputData() {
127  $this->readUserVars(
128  array(
129  'label',
130  'galleyLocale',
131  'urlPath',
132  'urlRemote',
133  )
134  );
135  }
136 
141  function execute(...$functionArgs) {
142  import('classes.file.IssueFileManager');
143 
144  $articleGalley = $this->_articleGalley;
145  $articleGalleyDao = DAORegistry::getDAO('ArticleGalleyDAO'); /* @var $articleGalleyDao ArticleGalleyDAO */
146 
147  if ($articleGalley) {
148  $articleGalley->setLabel($this->getData('label'));
149  $articleGalley->setLocale($this->getData('galleyLocale'));
150  $articleGalley->setData('urlPath', $this->getData('urlPath'));
151  $articleGalley->setData('urlRemote', $this->getData('urlRemote'));
152 
153  // Update galley in the db
154  $articleGalleyDao->updateObject($articleGalley);
155  } else {
156  // Create a new galley
157  $articleGalley = $articleGalleyDao->newDataObject();
158  $articleGalley->setData('publicationId', $this->_publication->getId());
159  $articleGalley->setLabel($this->getData('label'));
160  $articleGalley->setLocale($this->getData('galleyLocale'));
161  $articleGalley->setData('urlPath', $this->getData('urlPath'));
162  $articleGalley->setData('urlRemote', $this->getData('urlRemote'));
163 
164  // Insert new galley into the db
165  $articleGalleyDao->insertObject($articleGalley);
166  $this->_articleGalley = $articleGalley;
167  }
168 
169  parent::execute(...$functionArgs);
170 
171  return $articleGalley;
172  }
173 }
174 
175 
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
ArticleGalleyForm\__construct
__construct($request, $submission, $publication, $articleGalley=null)
Definition: ArticleGalleyForm.inc.php:44
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
ArticleGalleyForm\validate
validate($callHooks=true)
Definition: ArticleGalleyForm.inc.php:95
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
Form\addError
addError($field, $message)
Definition: Form.inc.php:404
ArticleGalleyForm\$_submission
$_submission
Definition: ArticleGalleyForm.inc.php:24
ArticleGalleyForm\$_articleGalley
$_articleGalley
Definition: ArticleGalleyForm.inc.php:36
ArticleGalleyForm\initData
initData()
Definition: ArticleGalleyForm.inc.php:119
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
ArticleGalleyForm
Article galley editing form.
Definition: ArticleGalleyForm.inc.php:19
FormValidator
Class to represent a form validation check.
Definition: FormValidator.inc.php:23
ArticleGalleyForm\$_publication
$_publication
Definition: ArticleGalleyForm.inc.php:30
ArticleGalleyForm\readInputData
readInputData()
Definition: ArticleGalleyForm.inc.php:135
FormValidatorRegExp
Form validation check using a regular expression.
Definition: FormValidatorRegExp.inc.php:18
Form\addCheck
addCheck($formValidator)
Definition: Form.inc.php:395
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\get
static get()
Definition: PKPApplication.inc.php:235
Form\addErrorField
addErrorField($field)
Definition: Form.inc.php:412
ArticleGalleyForm\execute
execute(... $functionArgs)
Definition: ArticleGalleyForm.inc.php:150
ArticleGalleyForm\fetch
fetch($request, $template=null, $display=false)
Definition: ArticleGalleyForm.inc.php:75