Open Monograph Press  3.3.0
SalesRightsForm.inc.php
1 <?php
2 
16 import('lib.pkp.classes.form.Form');
17 
18 class SalesRightsForm extends Form {
21 
24 
28  public function __construct($submission, $publication, $salesRights) {
29  parent::__construct('controllers/grid/catalogEntry/form/salesRightsForm.tpl');
30  $this->setSubmission($submission);
31  $this->setPublication($publication);
32  $this->setSalesRights($salesRights);
33 
34  // Validation checks for this form
35  $form = $this;
36  $this->addCheck(new FormValidator($this, 'type', 'required', 'grid.catalogEntry.typeRequired'));
37  $this->addCheck(new FormValidator($this, 'representationId', 'required', 'grid.catalogEntry.publicationFormatRequired'));
38  $this->addCheck(new FormValidatorCustom(
39  $this, 'ROWSetting', 'optional', 'grid.catalogEntry.oneROWPerFormat',
40  function($ROWSetting) use ($form, $salesRights) {
41  $salesRightsDao = DAORegistry::getDAO('SalesRightsDAO'); /* @var $salesRightsDao SalesRightsDAO */
42  $pubFormatId = $form->getData('representationId');
43  return $ROWSetting == '' || $salesRightsDao->getROWByPublicationFormatId($pubFormatId) == null ||
44  ($salesRights != null && $salesRightsDao->getROWByPublicationFormatId($pubFormatId)->getId() == $salesRights->getId());
45  }
46  ));
47 
48  $this->addCheck(new FormValidatorPost($this));
49  $this->addCheck(new FormValidatorCSRF($this));
50  }
51 
52  //
53  // Getters and Setters
54  //
59  public function getSalesRights() {
60  return $this->_salesRights;
61  }
62 
67  public function setSalesRights($salesRights) {
68  $this->_salesRights = $salesRights;
69  }
70 
75  public function getSubmission() {
76  return $this->_submission;
77  }
78 
83  public function setSubmission($submission) {
84  $this->_submission = $submission;
85  }
86 
91  public function getPublication() {
92  return $this->_publication;
93  }
94 
99  public function setPublication($publication) {
100  $this->_publication = $publication;
101  }
102 
103 
104  //
105  // Overridden template methods
106  //
110  public function initData() {
111  $salesRights = $this->getSalesRights();
112 
113  if ($salesRights) {
114  $this->_data = array(
115  'salesRightsId' => $salesRights->getId(),
116  'type' => $salesRights->getType(),
117  'ROWSetting' => $salesRights->getROWSetting(),
118  'countriesIncluded' => $salesRights->getCountriesIncluded(),
119  'countriesExcluded' => $salesRights->getCountriesExcluded(),
120  'regionsIncluded' => $salesRights->getRegionsIncluded(),
121  'regionsExcluded' => $salesRights->getRegionsExcluded(),
122  );
123  }
124  }
125 
129  public function fetch($request, $template = null, $display = false) {
130  $templateMgr = TemplateManager::getManager($request);
131  $submission = $this->getSubmission();
132  $templateMgr->assign('submissionId', $submission->getId());
133  $templateMgr->assign('publicationId', $this->getPublication()->getId());
134  $salesRights = $this->getSalesRights();
135  $onixCodelistItemDao = DAORegistry::getDAO('ONIXCodelistItemDAO'); /* @var $onixCodelistItemDao ONIXCodelistItemDAO */
136  $templateMgr->assign('countryCodes', $onixCodelistItemDao->getCodes('List91')); // countries (CA, US, GB, etc)
137  $templateMgr->assign('regionCodes', $onixCodelistItemDao->getCodes('List49')); // regions (British Columbia, England, etc)
138 
139  if ($salesRights) {
140  $templateMgr->assign('salesRightsId', $salesRights->getId());
141  $templateMgr->assign('type', $salesRights->getType());
142  $templateMgr->assign('ROWSetting', $salesRights->getROWSetting());
143  $templateMgr->assign('countriesIncluded', $salesRights->getCountriesIncluded());
144  $templateMgr->assign('countriesExcluded', $salesRights->getCountriesExcluded());
145  $templateMgr->assign('regionsIncluded', $salesRights->getRegionsIncluded());
146  $templateMgr->assign('regionsExcluded', $salesRights->getRegionsExcluded());
147 
148  $representationId = $salesRights->getPublicationFormatId();
149  } else { // loading a blank form
150  $representationId = (int) $request->getUserVar('representationId');
151  }
152 
153  $publicationFormatDao = DAORegistry::getDAO('PublicationFormatDAO'); /* @var $publicationFormatDao PublicationFormatDAO */
154  $publicationFormat = $publicationFormatDao->getById($representationId, $this->getPublication()->getId());
155 
156  if ($publicationFormat) { // the format exists for this submission
157  $templateMgr->assign('representationId', $representationId);
158  // SalesRightsType values are not normally used more than once per PublishingDetail block, so filter used ones out.
159  $assignedSalesRights = $publicationFormat->getSalesRights();
160  $assignedTypes = array_keys($assignedSalesRights->toAssociativeArray('type')); // currently assigned types
161 
162  if ($salesRights) $assignedTypes = array_diff($assignedTypes, array($salesRights->getType())); // allow existing codes to keep their value
163 
164  $types = $onixCodelistItemDao->getCodes('List46', $assignedTypes); // ONIX list for these
165  $templateMgr->assign('salesRights', $types);
166  } else {
167  fatalError('Format not in authorized submission');
168  }
169 
170  return parent::fetch($request, $template, $display);
171  }
172 
177  public function readInputData() {
178  $this->readUserVars(array(
179  'salesRightsId',
180  'representationId',
181  'type',
182  'ROWSetting',
183  'countriesIncluded',
184  'countriesExcluded',
185  'regionsIncluded',
186  'regionsExcluded',
187  ));
188  }
189 
193  public function execute(...$functionArgs) {
194  parent::execute(...$functionArgs);
195  $salesRightsDao = DAORegistry::getDAO('SalesRightsDAO'); /* @var $salesRightsDao SalesRightsDAO */
196  $publicationFormatDao = DAORegistry::getDAO('PublicationFormatDAO'); /* @var $publicationFormatDao PublicationFormatDAO */
197 
198  $submission = $this->getSubmission();
199  $salesRights = $this->getSalesRights();
200  $publicationFormat = $publicationFormatDao->getById($this->getData('representationId'), $this->getPublication()->getId());
201 
202  if (!$salesRights) {
203  // this is a new assigned format to this published submission
204  $salesRights = $salesRightsDao->newDataObject();
205  $existingFormat = false;
206  if ($publicationFormat != null) { // ensure this assigned format is in this submission
207  $salesRights->setPublicationFormatId($publicationFormat->getId());
208  } else {
209  fatalError('This assigned format not in authorized submission context!');
210  }
211  } else {
212  $existingFormat = true;
213  if ($publicationFormat->getId() !== $salesRights->getPublicationFormatId()) fatalError('Invalid format!');
214  }
215 
216  $salesRights->setType($this->getData('type'));
217  $salesRights->setROWSetting($this->getData('ROWSetting')?true:false);
218  $salesRights->setCountriesIncluded($this->getData('countriesIncluded') ? $this->getData('countriesIncluded') : array());
219  $salesRights->setCountriesExcluded($this->getData('countriesExcluded') ? $this->getData('countriesExcluded') : array());
220  $salesRights->setRegionsIncluded($this->getData('regionsIncluded') ? $this->getData('regionsIncluded') : array());
221  $salesRights->setRegionsExcluded($this->getData('regionsExcluded') ? $this->getData('regionsExcluded') : array());
222 
223  if ($existingFormat) {
224  $salesRightsDao->updateObject($salesRights);
225  $salesRightsId = $salesRights->getId();
226  } else {
227  $salesRightsId = $salesRightsDao->insertObject($salesRights);
228  }
229 
230  return $salesRightsId;
231  }
232 }
233 
SalesRightsForm\$_submission
$_submission
Definition: SalesRightsForm.inc.php:20
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
SalesRightsForm
Form for adding/editing a sales rights entry.
Definition: SalesRightsForm.inc.php:18
SalesRightsForm\fetch
fetch($request, $template=null, $display=false)
Definition: SalesRightsForm.inc.php:129
SalesRightsForm\execute
execute(... $functionArgs)
Definition: SalesRightsForm.inc.php:193
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
SalesRightsForm\getPublication
getPublication()
Definition: SalesRightsForm.inc.php:91
SalesRightsForm\__construct
__construct($submission, $publication, $salesRights)
Definition: SalesRightsForm.inc.php:28
SalesRightsForm\initData
initData()
Definition: SalesRightsForm.inc.php:110
SalesRightsForm\getSalesRights
getSalesRights()
Definition: SalesRightsForm.inc.php:59
SalesRightsForm\$_salesRights
$_salesRights
Definition: SalesRightsForm.inc.php:23
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
SalesRightsForm\setSalesRights
setSalesRights($salesRights)
Definition: SalesRightsForm.inc.php:67
SalesRightsForm\setSubmission
setSubmission($submission)
Definition: SalesRightsForm.inc.php:83
SalesRightsForm\setPublication
setPublication($publication)
Definition: SalesRightsForm.inc.php:99
SalesRightsForm\getSubmission
getSubmission()
Definition: SalesRightsForm.inc.php:75
FormValidator
Class to represent a form validation check.
Definition: FormValidator.inc.php:23
SalesRightsForm\readInputData
readInputData()
Definition: SalesRightsForm.inc.php:177
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
fatalError
if(!function_exists('import')) fatalError($reason)
Definition: functions.inc.php:32
FormValidatorCustom
Form validation check with a custom user function performing the validation check.
Definition: FormValidatorCustom.inc.php:18