Open Journal Systems  3.3.0
PKPPublicIdentifiersForm.inc.php
1 <?php
2 
16 import('lib.pkp.classes.form.Form');
17 import('lib.pkp.classes.plugins.PKPPubIdPluginHelper');
18 
20 
22  var $_contextId;
23 
27  var $_pubObject;
28 
30  var $_stageId;
31 
35  var $_formParams;
36 
44  function __construct($pubObject, $stageId = null, $formParams = null) {
45  parent::__construct('controllers/tab/pubIds/form/publicIdentifiersForm.tpl');
46 
47  $this->_pubObject = $pubObject;
48  $this->_stageId = $stageId;
49  $this->_formParams = $formParams;
50 
51  $request = Application::get()->getRequest();
52  $context = $request->getContext();
53  $this->_contextId = $context->getId();
54 
55  AppLocale::requireComponents(LOCALE_COMPONENT_PKP_EDITOR);
56 
57  $this->addCheck(new FormValidatorPost($this));
58  $this->addCheck(new FormValidatorCSRF($this));
59 
60  // action links for pub id reset requests
61  $pubIdPluginHelper = new PKPPubIdPluginHelper();
62  $pubIdPluginHelper->setLinkActions($this->getContextId(), $this, $pubObject);
63  }
64 
68  function fetch($request, $template = null, $display = false) {
69  $templateMgr = TemplateManager::getManager($request);
70  $templateMgr->assign(array(
71  'pubIdPlugins' => PluginRegistry::loadCategory('pubIds', true, $this->getContextId()),
72  'pubObject' => $this->getPubObject(),
73  'stageId' => $this->getStageId(),
74  'formParams' => $this->getFormParams(),
75  ));
76  if (is_a($this->getPubObject(), 'Representation') || is_a($this->getPubObject(), 'Chapter')) {
77  $publicationId = $this->getPubObject()->getData('publicationId');
78  $publication = Services::get('publication')->get($publicationId);
79  $templateMgr->assign([
80  'submissionId' => $publication->getData('submissionId'),
81  ]);
82  }
83  // consider JavaScripts
84  $pubIdPluginHelper = new PKPPubIdPluginHelper();
85  $pubIdPluginHelper->addJavaScripts($this->getContextId(), $request, $templateMgr);
86  return parent::fetch($request, $template, $display);
87  }
88 
92  function initData() {
93  $pubObject = $this->getPubObject();
94  $this->setData('publisherId', $pubObject->getStoredPubId('publisher-id'));
95  $pubIdPluginHelper = new PKPPubIdPluginHelper();
96  $pubIdPluginHelper->init($this->getContextId(), $this, $pubObject);
97  return parent::initData();
98  }
99 
100 
101  //
102  // Getters
103  //
108  function getPubObject() {
109  return $this->_pubObject;
110  }
111 
116  function getStageId() {
117  return $this->_stageId;
118  }
119 
124  function getContextId() {
125  return $this->_contextId;
126  }
127 
132  function getFormParams() {
133  return $this->_formParams;
134  }
135 
136 
137  //
138  // Form methods
139  //
143  function readInputData() {
144  $this->readUserVars(array('publisherId'));
145  $pubIdPluginHelper = new PKPPubIdPluginHelper();
146  $pubIdPluginHelper->readInputData($this->getContextId(), $this);
147  }
148 
152  function validate($callHooks = true) {
153  $pubObject = $this->getPubObject();
154  $assocType = $this->getAssocType($pubObject);
155  $publisherId = $this->getData('publisherId');
156  $pubObjectId = $pubObject->getId();
157  if ($assocType == ASSOC_TYPE_SUBMISSION_FILE) {
158  $pubObjectId = $pubObject->getFileId();
159  }
160  $contextDao = Application::getContextDAO();
161  if ($publisherId) {
162  if (ctype_digit((string) $publisherId)) {
163  $this->addError('publisherId', __('editor.publicIdentificationNumericNotAllowed', array('publicIdentifier' => $publisherId)));
164  $this->addErrorField('$publisherId');
165  } elseif (count(explode('/', $publisherId)) > 1) {
166  $this->addError('publisherId', __('editor.publicIdentificationPatternNotAllowed', array('pattern' => '"/"')));
167  $this->addErrorField('$publisherId');
168  } elseif (is_a($pubObject, 'SubmissionFile') && preg_match('/^(\d+)-(\d+)$/', $publisherId)) {
169  $this->addError('publisherId', __('editor.publicIdentificationPatternNotAllowed', array('pattern' => '\'/^(\d+)-(\d+)$/\' i.e. \'number-number\'')));
170  $this->addErrorField('$publisherId');
171  } elseif ($contextDao->anyPubIdExists($this->getContextId(), 'publisher-id', $publisherId, $assocType, $pubObjectId, true)) {
172  $this->addError('publisherId', __('editor.publicIdentificationExistsForTheSameType', array('publicIdentifier' => $publisherId)));
173  $this->addErrorField('$publisherId');
174  }
175  }
176  $pubIdPluginHelper = new PKPPubIdPluginHelper();
177  $pubIdPluginHelper->validate($this->getContextId(), $this, $this->getPubObject());
178  return parent::validate($callHooks);
179  }
180 
185  function execute(...$functionArgs) {
186  parent::execute(...$functionArgs);
187 
188  $pubObject = $this->getPubObject();
189  $pubObject->setStoredPubId('publisher-id', $this->getData('publisherId'));
190 
191  $pubIdPluginHelper = new PKPPubIdPluginHelper();
192  $pubIdPluginHelper->execute($this->getContextId(), $this, $pubObject);
193 
194  if (is_a($pubObject, 'Representation')) {
195  $representationDao = Application::getRepresentationDAO();
196  $representationDao->updateObject($pubObject);
197  } elseif (is_a($pubObject, 'SubmissionFile')) {
198  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */
199  $submissionFileDao->updateObject($pubObject);
200  }
201  }
202 
207  function clearPubId($pubIdPlugInClassName) {
208  $pubIdPluginHelper = new PKPPubIdPluginHelper();
209  $pubIdPluginHelper->clearPubId($this->getContextId(), $pubIdPlugInClassName, $this->getPubObject());
210  }
211 
217  function getAssocType($pubObject) {
218  $assocType = null;
219  if (is_a($pubObject, 'Submission')) {
220  $assocType = ASSOC_TYPE_SUBMISSION;
221  } elseif (is_a($pubObject, 'Publication')) {
222  $assocType = ASSOC_TYPE_PUBLICATION;
223  } elseif (is_a($pubObject, 'Representation')) {
224  $assocType = ASSOC_TYPE_REPRESENTATION;
225  } elseif (is_a($pubObject, 'SubmissionFile')) {
226  $assocType = ASSOC_TYPE_SUBMISSION_FILE;
227  }
228  return $assocType;
229  }
230 }
PKPPublicIdentifiersForm\$_pubObject
$_pubObject
Definition: PKPPublicIdentifiersForm.inc.php:33
PKPPublicIdentifiersForm\$_stageId
$_stageId
Definition: PKPPublicIdentifiersForm.inc.php:39
Application\getContextDAO
static getContextDAO()
Definition: Application.inc.php:137
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
PKPPublicIdentifiersForm\clearPubId
clearPubId($pubIdPlugInClassName)
Definition: PKPPublicIdentifiersForm.inc.php:219
Application\getRepresentationDAO
static getRepresentationDAO()
Definition: Application.inc.php:162
PKPPublicIdentifiersForm\validate
validate($callHooks=true)
Definition: PKPPublicIdentifiersForm.inc.php:164
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
PKPPublicIdentifiersForm\getAssocType
getAssocType($pubObject)
Definition: PKPPublicIdentifiersForm.inc.php:229
Form\setData
setData($key, $value=null)
Definition: Form.inc.php:229
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
PKPPubIdPluginHelper
Helper class for public identifiers plugins.
Definition: PKPPubIdPluginHelper.inc.php:17
Form\addError
addError($field, $message)
Definition: Form.inc.php:404
PKPPublicIdentifiersForm\initData
initData()
Definition: PKPPublicIdentifiersForm.inc.php:104
PKPPublicIdentifiersForm\getFormParams
getFormParams()
Definition: PKPPublicIdentifiersForm.inc.php:144
PluginRegistry\loadCategory
static loadCategory($category, $enabledOnly=false, $mainContextId=null)
Definition: PluginRegistry.inc.php:103
PKPPublicIdentifiersForm\getContextId
getContextId()
Definition: PKPPublicIdentifiersForm.inc.php:136
PKPPublicIdentifiersForm\getPubObject
getPubObject()
Definition: PKPPublicIdentifiersForm.inc.php:120
PKPPublicIdentifiersForm\$_formParams
$_formParams
Definition: PKPPublicIdentifiersForm.inc.php:47
PKPPublicIdentifiersForm\readInputData
readInputData()
Definition: PKPPublicIdentifiersForm.inc.php:155
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
PKPPublicIdentifiersForm
Displays a pub ids form.
Definition: PKPPublicIdentifiersForm.inc.php:19
Form\addCheck
addCheck($formValidator)
Definition: Form.inc.php:395
PKPPublicIdentifiersForm\execute
execute(... $functionArgs)
Definition: PKPPublicIdentifiersForm.inc.php:197
PKPPublicIdentifiersForm\getStageId
getStageId()
Definition: PKPPublicIdentifiersForm.inc.php:128
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
PKPPublicIdentifiersForm\$_contextId
$_contextId
Definition: PKPPublicIdentifiersForm.inc.php:25
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
PKPPublicIdentifiersForm\fetch
fetch($request, $template=null, $display=false)
Definition: PKPPublicIdentifiersForm.inc.php:80
Form\addErrorField
addErrorField($field)
Definition: Form.inc.php:412
PKPServices\get
static get($service)
Definition: PKPServices.inc.php:49
PKPPublicIdentifiersForm\__construct
__construct($pubObject, $stageId=null, $formParams=null)
Definition: PKPPublicIdentifiersForm.inc.php:56