Open Monograph Press  3.3.0
PublicationFormatMetadataForm.inc.php
1 <?php
2 
16 import('lib.pkp.classes.form.Form');
17 import('lib.pkp.classes.plugins.PKPPubIdPluginHelper');
18 
20 
22  var $_submission;
23 
26 
28  var $_stageId;
29 
32 
35 
38 
40  var $_remoteURL;
41 
44 
55  public function __construct($submission, $publication, $representation, $isPhysicalFormat = true, $remoteURL = null, $stageId = null, $formParams = null) {
56  parent::__construct('controllers/tab/catalogEntry/form/publicationMetadataFormFields.tpl');
57  $this->_submission = $submission;
58  $this->_publication = $publication;
59  $this->_publicationFormat = $representation;
60 
61  if (!$this->_submission || !$this->_publication || !$this->_publicationFormat) {
62  throw new Exception('PublicationFormatMetadataForm was instantiated without required dependencies.');
63  }
64 
65  $this->_pubIdPluginHelper = new PKPPubIdPluginHelper();
66 
67  $this->_stageId = $stageId;
68  $this->_isPhysicalFormat = $isPhysicalFormat;
69  $this->_remoteURL = $remoteURL;
70  $this->_formParams = $formParams;
71 
72  $this->addCheck(new FormValidator($this, 'productAvailabilityCode', 'required', 'grid.catalogEntry.productAvailabilityRequired'));
73  $this->addCheck(new FormValidatorRegExp($this, 'directSalesPrice', 'optional', 'grid.catalogEntry.validPriceRequired', '/^[0-9]*(\.[0-9]+)?$/'));
74  $this->addCheck(new FormValidator($this, 'productCompositionCode', 'required', 'grid.catalogEntry.productCompositionRequired'));
75  $this->addCheck(new FormValidatorPost($this));
76  $this->addCheck(new FormValidatorCSRF($this));
77  }
78 
82  public function fetch($request, $template = null, $display = false) {
83  $publicationFormat = $this->getPublicationFormat();
84  $context = $request->getContext();
85 
86  $templateMgr = TemplateManager::getManager($request);
87  $templateMgr->assign('submissionId', $this->getSubmission()->getId());
88  $templateMgr->assign('publicationId', $this->getPublication()->getId());
89  $templateMgr->assign('representationId', (int) $publicationFormat->getId());
90 
91  // included to load format-specific templates
92  $templateMgr->assign('isPhysicalFormat', (bool) $this->getPhysicalFormat());
93  $templateMgr->assign('remoteURL', $this->getRemoteURL());
94 
95  $templateMgr->assign('stageId', $this->getStageId());
96  $templateMgr->assign('formParams', $this->getFormParams());
97 
98  $onixCodelistItemDao = DAORegistry::getDAO('ONIXCodelistItemDAO'); /* @var $onixCodelistItemDao ONIXCodelistItemDAO */
99 
100  // Check if e-commerce is available
101  $paymentManager = Application::getPaymentManager($context);
102  if ($paymentManager->isConfigured()) {
103  $templateMgr->assign('paymentConfigured', true);
104  $templateMgr->assign('currency', $context->getSetting('currency'));
105  }
106 
107  // get the lists associated with the select elements on these publication format forms.
108  $codes = array(
109  'productCompositionCodes' => 'List2', // single item, multiple item, trade-only, etc
110  'measurementUnitCodes' => 'List50', // grams, inches, millimeters
111  'weightUnitCodes' => 'List95', // pounds, grams, ounces
112  'measurementTypeCodes' => 'List48', // height, width, depth
113  'productFormDetailCodes' => 'List175', // refinement of product form (SACD, Mass market (rack) paperback, etc)
114  'productAvailabilityCodes' => 'List65', // Available, In Stock, Print On Demand, Not Yet Available, etc
115  'technicalProtectionCodes' => 'List144', // None, DRM, Apple DRM, etc
116  'returnableIndicatorCodes' => 'List66', // No, not returnable, Yes, full copies only, (required for physical items only)
117  'countriesIncludedCodes' => 'List91', // country region codes
118  );
119 
120  foreach ($codes as $templateVarName => $list) {
121  $templateMgr->assign($templateVarName, $onixCodelistItemDao->getCodes($list));
122  }
123 
124  // consider public identifiers
125  $pubIdPlugins = PluginRegistry::loadCategory('pubIds', true);
126  $templateMgr->assign('pubIdPlugins', $pubIdPlugins);
127  $templateMgr->assign('pubObject', $publicationFormat);
128 
129  $templateMgr->assign('notificationRequestOptions', array(
130  NOTIFICATION_LEVEL_NORMAL => array(
131  NOTIFICATION_TYPE_CONFIGURE_PAYMENT_METHOD => array(ASSOC_TYPE_PRESS, $context->getId()),
132  ),
133  NOTIFICATION_LEVEL_TRIVIAL => array()
134  ));
135 
136  return parent::fetch($request, $template, $display);
137  }
138 
142  public function initData() {
144  LOCALE_COMPONENT_APP_COMMON,
145  LOCALE_COMPONENT_PKP_SUBMISSION,
146  LOCALE_COMPONENT_APP_SUBMISSION
147  );
148 
149  $submission = $this->getSubmission();
150  $publicationFormat = $this->getPublicationFormat();
151 
152  $this->_data = array(
153  'fileSize' => (boolean) $publicationFormat->getFileSize() ? $publicationFormat->getFileSize() : $publicationFormat->getCalculatedFileSize(),
154  'override' => (boolean) $publicationFormat->getData('fileSize') ? true : false,
155  'frontMatter' => $publicationFormat->getFrontMatter(),
156  'backMatter' => $publicationFormat->getBackMatter(),
157  'height' => $publicationFormat->getHeight(),
158  'heightUnitCode' => $publicationFormat->getHeightUnitCode() != '' ? $publicationFormat->getHeightUnitCode() : 'mm',
159  'width' => $publicationFormat->getWidth(),
160  'widthUnitCode' => $publicationFormat->getWidthUnitCode() != '' ? $publicationFormat->getWidthUnitCode() : 'mm',
161  'thickness' => $publicationFormat->getThickness(),
162  'thicknessUnitCode' => $publicationFormat->getThicknessUnitCode() != '' ? $publicationFormat->getThicknessUnitCode() : 'mm',
163  'weight' => $publicationFormat->getWeight(),
164  'weightUnitCode' => $publicationFormat->getWeightUnitCode() != '' ? $publicationFormat->getWeightUnitCode() : 'gr',
165  'productCompositionCode' => $publicationFormat->getProductCompositionCode(),
166  'productFormDetailCode' => $publicationFormat->getProductFormDetailCode(),
167  'countryManufactureCode' => $publicationFormat->getCountryManufactureCode() != '' ? $publicationFormat->getCountryManufactureCode() : 'CA',
168  'imprint' => $publicationFormat->getImprint(),
169  'productAvailabilityCode' => $publicationFormat->getProductAvailabilityCode() != '' ? $publicationFormat->getProductAvailabilityCode() : '20',
170  'technicalProtectionCode' => $publicationFormat->getTechnicalProtectionCode() != '' ? $publicationFormat->getTechnicalProtectionCode() : '00',
171  'returnableIndicatorCode' => $publicationFormat->getReturnableIndicatorCode() != '' ? $publicationFormat->getReturnableIndicatorCode() : 'Y',
172  // the pubId plugin needs the format object.
173  'publicationFormat' => $publicationFormat
174  );
175 
176  // initialize the pubId fields.
177  $pubIdPluginHelper = $this->_getPubIdPluginHelper();
178  $pubIdPluginHelper->init($submission->getContextId(), $this, $publicationFormat);
179  $pubIdPluginHelper->setLinkActions($submission->getContextId(), $this, $publicationFormat);
180 
181  }
182 
186  public function readInputData() {
187  $submission = $this->getSubmission();
188  $this->readUserVars(array(
189  'directSalesPrice',
190  'fileSize',
191  'override',
192  'frontMatter',
193  'backMatter',
194  'height',
195  'heightUnitCode',
196  'width',
197  'widthUnitCode',
198  'thickness',
199  'thicknessUnitCode',
200  'weight',
201  'weightUnitCode',
202  'productCompositionCode',
203  'productFormDetailCode',
204  'countryManufactureCode',
205  'imprint',
206  'productAvailabilityCode',
207  'technicalProtectionCode',
208  'returnableIndicatorCode',
209  ));
210 
211  // consider the additional field names from the public identifer plugins
212  $pubIdPluginHelper = $this->_getPubIdPluginHelper();
213  $pubIdPluginHelper->readInputData($submission->getContextId(), $this);
214 
215  }
216 
220  public function validate($callHooks = true) {
221  $submission = $this->getSubmission();
222  $publicationFormat = $this->getPublicationFormat();
223  $pubIdPluginHelper = $this->_getPubIdPluginHelper();
224  $pubIdPluginHelper->validate($submission->getContextId(), $this, $publicationFormat);
225  return parent::validate($callHooks);
226  }
227 
231  public function execute(...$functionArgs) {
232  parent::execute(...$functionArgs);
233 
234  $submission = $this->getSubmission();
235  $publicationFormat = $this->getPublicationFormat();
236 
237  // populate the published submission with the cataloging metadata
238  $publicationFormat->setFileSize($this->getData('override') ? $this->getData('fileSize'):null);
239  $publicationFormat->setFrontMatter($this->getData('frontMatter'));
240  $publicationFormat->setBackMatter($this->getData('backMatter'));
241  $publicationFormat->setHeight($this->getData('height'));
242  $publicationFormat->setHeightUnitCode($this->getData('heightUnitCode'));
243  $publicationFormat->setWidth($this->getData('width'));
244  $publicationFormat->setWidthUnitCode($this->getData('widthUnitCode'));
245  $publicationFormat->setThickness($this->getData('thickness'));
246  $publicationFormat->setThicknessUnitCode($this->getData('thicknessUnitCode'));
247  $publicationFormat->setWeight($this->getData('weight'));
248  $publicationFormat->setWeightUnitCode($this->getData('weightUnitCode'));
249  $publicationFormat->setProductCompositionCode($this->getData('productCompositionCode'));
250  $publicationFormat->setProductFormDetailCode($this->getData('productFormDetailCode'));
251  $publicationFormat->setCountryManufactureCode($this->getData('countryManufactureCode'));
252  $publicationFormat->setImprint($this->getData('imprint'));
253  $publicationFormat->setProductAvailabilityCode($this->getData('productAvailabilityCode'));
254  $publicationFormat->setTechnicalProtectionCode($this->getData('technicalProtectionCode'));
255  $publicationFormat->setReturnableIndicatorCode($this->getData('returnableIndicatorCode'));
256 
257  // consider the additional field names from the public identifer plugins
258  $pubIdPluginHelper = $this->_getPubIdPluginHelper();
259  $pubIdPluginHelper->execute($submission->getContextId(), $this, $publicationFormat);
260 
261  $publicationFormatDao = DAORegistry::getDAO('PublicationFormatDAO'); /* @var $publicationFormatDao PublicationFormatDAO */
262  $publicationFormatDao->updateObject($publicationFormat);
263  }
264 
265  //
266  // Getters and Setters
267  //
272  public function getSubmission() {
273  return $this->_submission;
274  }
275 
280  public function getPublication() {
281  return $this->_publication;
282  }
283 
288  public function getStageId() {
289  return $this->_stageId;
290  }
291 
296  public function getPhysicalFormat() {
298  }
299 
304  public function getRemoteURL() {
305  return $this->_remoteURL;
306  }
307 
312  public function getPublicationFormat() {
314  }
315 
319  public function getFormParams() {
321  }
322 
327  public function _getPubIdPluginHelper() {
329  }
330 }
331 
PublicationFormatMetadataForm\$_publicationFormat
$_publicationFormat
Definition: PublicationFormatMetadataForm.inc.php:43
PublicationFormatMetadataForm\getPublicationFormat
getPublicationFormat()
Definition: PublicationFormatMetadataForm.inc.php:336
PublicationFormatMetadataForm\__construct
__construct($submission, $publication, $representation, $isPhysicalFormat=true, $remoteURL=null, $stageId=null, $formParams=null)
Definition: PublicationFormatMetadataForm.inc.php:79
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
PublicationFormatMetadataForm\getSubmission
getSubmission()
Definition: PublicationFormatMetadataForm.inc.php:296
PublicationFormatMetadataForm\validate
validate($callHooks=true)
Definition: PublicationFormatMetadataForm.inc.php:244
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
PublicationFormatMetadataForm\fetch
fetch($request, $template=null, $display=false)
Definition: PublicationFormatMetadataForm.inc.php:106
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
Application\getPaymentManager
static getPaymentManager($context)
Definition: Application.inc.php:212
PublicationFormatMetadataForm\$_stageId
$_stageId
Definition: PublicationFormatMetadataForm.inc.php:37
PublicationFormatMetadataForm\initData
initData()
Definition: PublicationFormatMetadataForm.inc.php:166
PublicationFormatMetadataForm\execute
execute(... $functionArgs)
Definition: PublicationFormatMetadataForm.inc.php:255
PKPPubIdPluginHelper
Helper class for public identifiers plugins.
Definition: PKPPubIdPluginHelper.inc.php:17
PublicationFormatMetadataForm\getPublication
getPublication()
Definition: PublicationFormatMetadataForm.inc.php:304
PublicationFormatMetadataForm\getStageId
getStageId()
Definition: PublicationFormatMetadataForm.inc.php:312
PublicationFormatMetadataForm\$_isPhysicalFormat
$_isPhysicalFormat
Definition: PublicationFormatMetadataForm.inc.php:55
PluginRegistry\loadCategory
static loadCategory($category, $enabledOnly=false, $mainContextId=null)
Definition: PluginRegistry.inc.php:103
PublicationFormatMetadataForm\$_remoteURL
$_remoteURL
Definition: PublicationFormatMetadataForm.inc.php:61
PublicationFormatMetadataForm\$_publication
$_publication
Definition: PublicationFormatMetadataForm.inc.php:31
PublicationFormatMetadataForm\$_formParams
$_formParams
Definition: PublicationFormatMetadataForm.inc.php:67
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
PublicationFormatMetadataForm\getFormParams
getFormParams()
Definition: PublicationFormatMetadataForm.inc.php:343
PublicationFormatMetadataForm\getRemoteURL
getRemoteURL()
Definition: PublicationFormatMetadataForm.inc.php:328
FormValidator
Class to represent a form validation check.
Definition: FormValidator.inc.php:23
FormValidatorRegExp
Form validation check using a regular expression.
Definition: FormValidatorRegExp.inc.php:18
PublicationFormatMetadataForm\_getPubIdPluginHelper
_getPubIdPluginHelper()
Definition: PublicationFormatMetadataForm.inc.php:351
PublicationFormatMetadataForm\$_pubIdPluginHelper
$_pubIdPluginHelper
Definition: PublicationFormatMetadataForm.inc.php:49
PublicationFormatMetadataForm
Form to edit a publication format's metadata.
Definition: PublicationFormatMetadataForm.inc.php:19
Form\addCheck
addCheck($formValidator)
Definition: Form.inc.php:395
PublicationFormatMetadataForm\$_submission
$_submission
Definition: PublicationFormatMetadataForm.inc.php:25
FormValidatorCSRF
Form validation check to make sure the CSRF token is correct.
Definition: FormValidatorCSRF.inc.php:18
PublicationFormatMetadataForm\readInputData
readInputData()
Definition: PublicationFormatMetadataForm.inc.php:210
Form
Class defining basic operations for handling HTML forms.
Definition: Form.inc.php:47
PublicationFormatMetadataForm\getPhysicalFormat
getPhysicalFormat()
Definition: PublicationFormatMetadataForm.inc.php:320