16 import(
'lib.pkp.classes.plugins.Plugin');
26 function register($category, $path, $mainContextId =
null) {
27 if (!parent::register($category, $path, $mainContextId))
return false;
30 foreach($this->
getDAOs() as $dao) {
41 foreach ($fileDAOdelegates as $fileDAOdelegate) {
57 import(
'lib.pkp.classes.linkAction.request.AjaxModal');
63 $router->url(
$request,
null,
null,
'manage',
null, $actionArgs),
64 $this->getDisplayName()
66 __(
'manager.plugins.settings'),
70 parent::getActions(
$request, $actionArgs)
80 $context = $router->getContext(
$request);
84 switch (
$request->getUserVar(
'verb')) {
86 $form->readInputData();
87 if ($form->validate()) {
89 $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS);
96 $contextDao->deleteAllPubIds($context->getId(), $this->getPubIdType());
102 return parent::manage($args,
$request);
115 abstract function getPubId($pubObject);
124 abstract function constructPubId($pubIdPrefix, $pubIdSuffix, $contextId);
232 return array(
'Publication',
'Representation',
'SubmissionFile');
258 function verifyData($fieldName, $fieldValue, $pubObject, $contextId, &$errorMsg) {
261 if (empty($fieldValue))
return true;
265 if (empty($pubIdPrefix))
return true;
266 $newPubId = $this->
constructPubId($pubIdPrefix, $fieldValue, $contextId);
268 if (!$this->
checkDuplicate($newPubId, $pubObject->getId(), get_class($pubObject), $contextId)) {
304 return array(
'SubmissionFileDAODelegate',
'SupplementaryFileDAODelegate',
'SubmissionArtworkFileDAODelegate');
318 $storedPubId = $pubObject->getStoredPubId($pubIdType);
319 if ($storedPubId)
return false;
321 $pubId = $this->
getPubId($pubObject);
323 if (!$pubId)
return false;
325 $containPatterns = strpos($pubId,
'%') !==
false;
326 return !$containPatterns;
338 $schema =& $params[0];
340 $schema->properties->{$fieldName} = (object) [
342 'apiSummary' =>
true,
343 'validation' => [
'nullable'],
358 $fields =& $params[1];
359 foreach (array_merge($this->getFormFieldNames(), $this->getDAOFieldNames()) as $fieldName) {
360 $fields[] = $fieldName;
371 $allowedTypes = $this->getPubObjectTypes();
372 $pubObjectType =
null;
373 foreach ($allowedTypes as $allowedType) {
374 if (is_a($pubObject, $allowedType)) {
375 $pubObjectType = $allowedType;
379 if (is_null($pubObjectType)) {
384 return $pubObjectType;
393 $dao = $pubObject->getDAO();
394 $dao->changePubId($pubObject->getId(), $this->getPubIdType(), $pubId);
395 $pubObject->setStoredPubId($this->getPubIdType(), $pubId);
415 foreach ($this->getPubObjectTypes() as $type) {
416 if ($type ===
'Publication') {
418 } elseif ($type ===
'Representation') {
420 } elseif ($type ===
'SubmissionFile') {
423 $excludeTypeId = $type === $pubObjectType ? $excludeId :
null;
424 if (isset($typeDao) && $typeDao->pubIdExists($this->getPubIdType(), $pubId, $excludeTypeId, $contextId)) {
438 assert(is_numeric($contextId));
442 $router = $request->getRouter();
443 $context = $router->getContext($request);
444 if ($context && $context->getId() == $contextId)
return $context;
448 return $contextDao->getById($contextId);