/** * Constructor * @param $plugin object */ function PaperPackageUpForm(&$plugin) { parent::Form($plugin->getTemplatePath() . 'index.tpl'); $journal =& Request::getJournal(); import('plugins.generic.paperPackageUp.FormValidatorUpload'); import('plugins.generic.paperPackageUp.FormValidatorFileType'); import('plugins.generic.paperPackageUp.FormValidatorHandle'); import('plugins.generic.paperPackageUp.FormValidatorHandleOrFile'); $this->addCheck(new FormValidatorPost($this)); $this->addCheck(new FormValidator($this, 'sectionId', 'required', 'author.submit.form.sectionRequired')); $this->addCheck(new FormValidatorUpload($this, 'submissionHandle', 'required', 'plugins.generic.paperPackageUpload.submissionHandleRequired', 'tempFileId')); $this->addCheck(new FormValidatorUpload($this, 'supplHandle', 'required', 'plugins.generic.paperPackageUpload.supplHandleRequired', 'tempSupplFileId')); $this->addCheck(new FormValidatorHandle($this, 'submissionHandle', 'required', 'plugins.generic.paperPackageUpload.submissionHandleIsWrong')); $this->addCheck(new FormValidatorHandle($this, 'supplHandle', 'required', 'plugins.generic.paperPackageUpload.supplHandleIsWrong')); $this->addCheck(new FormValidatorHandleOrFile($this, 'submissionHandle', 'required', 'plugins.generic.paperPackageUpload.submissionHandleOrFile', 'tempFileId')); $this->addCheck(new FormValidatorHandleOrFile($this, 'supplHandle', 'required', 'plugins.generic.paperPackageUpload.supplHandleOrFile', 'tempSupplFileId')); $this->addCheck(new FormValidatorFileType($this, 'tempSupplFileId', 'required', 'plugins.generic.paperPackageUpload.supplUnpackable')); $this->addCheck(new FormValidatorCustom($this, 'datePublished', 'required', 'plugins.generic.paperPackageUpload.dateRequired', create_function('$destination, $form', 'return is_int($form->getData(\'datePublished\'));'), array(&$this))); $this->addCheck(new FormValidatorCustom($this, 'sectionId', 'required', 'author.submit.form.sectionRequired', array(DAORegistry::getDAO('SectionDAO'), 'sectionExists'), array($journal->getId()))); $this->addCheck(new FormValidatorCustom($this, 'authors', 'required', 'author.submit.form.authorRequired', create_function('$authors', 'return count($authors) > 0;'))); // $this->addCheck(new FormValidatorCustom($this, 'destination', 'required', 'plugins.generic.paperPackageUpload.issueRequired', create_function('$destination, $form', 'return $destination == \'queue\'? true : ($form->getData(\'issueId\') > 0);'), array(&$this))); $this->addCheck(new FormValidatorArray($this, 'authors', 'required', 'plugins.generic.paperPackageUpload.authorRequiredFields', array('firstName', 'lastName'))); //$this->addCheck(new FormValidator($this, 'authors-0-firstName', 'required', 'plugins.generic.paperPackageUpload.authorRequiredFirst')); //$this->addCheck(new FormValidator($this, 'authors-0-lastName', 'required', 'plugins.generic.paperPackageUpload.authorRequiredLast')); $this->addCheck(new FormValidatorArrayCustom($this, 'authors', 'required', 'user.profile.form.emailRequired', create_function('$email, $regExp', 'return empty($email) ? true : String::regexp_match($regExp, $email);'), array(ValidatorEmail::getRegexp()), false, array('email'))); $this->addCheck(new FormValidatorArrayCustom($this, 'authors', 'required', 'user.profile.form.urlInvalid', create_function('$url, $regExp', 'return empty($url) ? true : String::regexp_match($regExp, $url);'), array(ValidatorUrl::getRegexp()), false, array('url'))); $this->addCheck(new FormValidatorLocale($this, 'title', 'required', 'author.submit.form.titleRequired')); // $this->addCheck(new FormValidatorLocale($this, 'originalJournal', 'required', 'plugins.generic.paperPackageUpload.originalJournalRequired')); }
/** * Constructor. */ function MetadataForm($paper) { $roleDao =& DAORegistry::getDAO('RoleDAO'); $schedConf =& Request::getSchedConf(); $user =& Request::getUser(); $roleId = $roleDao->getRoleIdFromPath(Request::getRequestedPage()); // If the user is a director of this paper, make the form editable. $this->canEdit = false; if ($roleId != null && ($roleId == ROLE_ID_DIRECTOR || $roleId == ROLE_ID_TRACK_DIRECTOR)) { $this->canEdit = true; } // Check if the author can modify metadata. if ($roleId == ROLE_ID_AUTHOR) { if (AuthorAction::mayEditPaper($paper)) { $this->canEdit = true; } } if ($this->canEdit) { parent::Form('submission/metadata/metadataEdit.tpl'); $this->addCheck(new FormValidatorLocale($this, 'title', 'required', 'author.submit.form.titleRequired')); $this->addCheck(new FormValidatorArray($this, 'authors', 'required', 'author.submit.form.authorRequiredFields', array('firstName', 'lastName'))); $this->addCheck(new FormValidatorArrayCustom($this, 'authors', 'required', 'author.submit.form.authorRequiredFields', create_function('$email, $regExp', 'return String::regexp_match($regExp, $email);'), array(ValidatorEmail::getRegexp()), false, array('email'))); $this->addCheck(new FormValidatorArrayCustom($this, 'authors', 'required', 'user.profile.form.urlInvalid', create_function('$url, $regExp', 'return empty($url) ? true : String::regexp_match($regExp, $url);'), array(ValidatorUrl::getRegexp()), false, array('url'))); } else { parent::Form('submission/metadata/metadataView.tpl'); } // If the user is a reviewer of this paper, do not show authors. $this->canViewAuthors = true; if ($roleId != null && $roleId == ROLE_ID_REVIEWER) { $this->canViewAuthors = false; } $this->paper = $paper; $this->addCheck(new FormValidatorPost($this)); }
/** * Constructor. */ function MetadataForm($article, $journal) { $roleDao =& DAORegistry::getDAO('RoleDAO'); $signoffDao =& DAORegistry::getDAO('SignoffDAO'); $user =& Request::getUser(); $roleId = $roleDao->getRoleIdFromPath(Request::getRequestedPage()); // If the user is an editor of this article, make the entire form editable. $this->canEdit = false; $this->isEditor = false; if ($roleId != null && ($roleId == ROLE_ID_EDITOR || $roleId == ROLE_ID_SECTION_EDITOR)) { $this->canEdit = true; $this->isEditor = true; } $copyeditInitialSignoff = $signoffDao->getBySymbolic('SIGNOFF_COPYEDITING_INITIAL', ASSOC_TYPE_ARTICLE, $article->getId()); // If the user is an author and the article hasn't passed the Copyediting stage, make the form editable. if ($roleId == ROLE_ID_AUTHOR) { if ($article->getStatus() != STATUS_PUBLISHED && ($copyeditInitialSignoff == null || $copyeditInitialSignoff->getDateCompleted() == null)) { $this->canEdit = true; } } // Copy editors are also allowed to edit metadata, but only if they have // a current assignment to the article. if ($roleId != null && $roleId == ROLE_ID_COPYEDITOR) { $copyeditFinalSignoff = $signoffDao->build('SIGNOFF_COPYEDITING_FINAL', ASSOC_TYPE_ARTICLE, $article->getId()); if ($copyeditFinalSignoff != null && $article->getStatus() != STATUS_PUBLISHED) { if ($copyeditInitialSignoff->getDateNotified() != null && $copyeditFinalSignoff->getDateCompleted() == null) { $this->canEdit = true; } } } if ($this->canEdit) { $supportedSubmissionLocales = $journal->getSetting('supportedSubmissionLocales'); if (empty($supportedSubmissionLocales)) { $supportedSubmissionLocales = array($journal->getPrimaryLocale()); } parent::Form('submission/metadata/metadataEdit.tpl', true, $article->getLocale(), array_flip(array_intersect(array_flip(AppLocale::getAllLocales()), $supportedSubmissionLocales))); $this->addCheck(new FormValidatorLocale($this, 'title', 'required', 'author.submit.form.titleRequired', $this->getRequiredLocale())); $this->addCheck(new FormValidatorArray($this, 'authors', 'required', 'author.submit.form.authorRequiredFields', array('firstName', 'lastName'))); $this->addCheck(new FormValidatorArrayCustom($this, 'authors', 'required', 'author.submit.form.authorRequiredFields', create_function('$email, $regExp', 'return String::regexp_match($regExp, $email);'), array(ValidatorEmail::getRegexp()), false, array('email'))); $this->addCheck(new FormValidatorArrayCustom($this, 'authors', 'required', 'user.profile.form.urlInvalid', create_function('$url, $regExp', 'return empty($url) ? true : String::regexp_match($regExp, $url);'), array(ValidatorUrl::getRegexp()), false, array('url'))); // Add ORCiD validation import('lib.pkp.classes.validation.ValidatorORCID'); $this->addCheck(new FormValidatorArrayCustom($this, 'authors', 'required', 'user.profile.form.orcidInvalid', create_function('$orcid', '$validator = new ValidatorORCID(); return empty($orcid) ? true : $validator->isValid($orcid);'), array(), false, array('orcid'))); } else { parent::Form('submission/metadata/metadataView.tpl'); } // If the user is a reviewer of this article, do not show authors. $this->canViewAuthors = true; if ($roleId != null && $roleId == ROLE_ID_REVIEWER) { $this->canViewAuthors = false; } $this->article = $article; $this->addCheck(new FormValidatorPost($this)); }
/** * Constructor * @param $plugin object */ function QuickSubmitForm(&$plugin) { parent::Form($plugin->getTemplatePath() . 'index.tpl'); $journal =& Request::getJournal(); $this->addCheck(new FormValidatorPost($this)); $this->addCheck(new FormValidator($this, 'sectionId', 'required', 'author.submit.form.sectionRequired')); $this->addCheck(new FormValidatorCustom($this, 'tempFileId', 'required', 'plugins.importexport.quickSubmit.submissionRequired', create_function('$tempFileId', 'return $tempFileId > 0;'))); $this->addCheck(new FormValidatorCustom($this, 'sectionId', 'required', 'author.submit.form.sectionRequired', array(DAORegistry::getDAO('SectionDAO'), 'sectionExists'), array($journal->getId()))); $this->addCheck(new FormValidatorCustom($this, 'authors', 'required', 'author.submit.form.authorRequired', create_function('$authors', 'return count($authors) > 0;'))); $this->addCheck(new FormValidatorCustom($this, 'destination', 'required', 'plugins.importexport.quickSubmit.issueRequired', create_function('$destination, $form', 'return $destination == \'queue\'? true : ($form->getData(\'issueId\') > 0);'), array(&$this))); $this->addCheck(new FormValidatorArray($this, 'authors', 'required', 'author.submit.form.authorRequiredFields', array('firstName', 'lastName'))); $this->addCheck(new FormValidatorArrayCustom($this, 'authors', 'required', 'user.profile.form.emailRequired', create_function('$email, $regExp', 'return String::regexp_match($regExp, $email);'), array(ValidatorEmail::getRegexp()), false, array('email'))); $this->addCheck(new FormValidatorArrayCustom($this, 'authors', 'required', 'user.profile.form.urlInvalid', create_function('$url, $regExp', 'return empty($url) ? true : String::regexp_match($regExp, $url);'), array(ValidatorUrl::getRegexp()), false, array('url'))); $this->addCheck(new FormValidatorLocale($this, 'title', 'required', 'author.submit.form.titleRequired')); }
/** * Constructor. */ function AuthorSubmitStep3Form(&$article, &$journal) { parent::AuthorSubmitForm($article, 3, $journal); // Validation checks for this form $this->addCheck(new FormValidatorCustom($this, 'authors', 'required', 'author.submit.form.authorRequired', create_function('$authors', 'return count($authors) > 0;'))); $this->addCheck(new FormValidatorArray($this, 'authors', 'required', 'author.submit.form.authorRequiredFields', array('firstName', 'lastName'))); $this->addCheck(new FormValidatorArrayCustom($this, 'authors', 'required', 'author.submit.form.authorRequiredFields', create_function('$email, $regExp', 'return String::regexp_match($regExp, $email);'), array(ValidatorEmail::getRegexp()), false, array('email'))); $this->addCheck(new FormValidatorArrayCustom($this, 'authors', 'required', 'user.profile.form.urlInvalid', create_function('$url, $regExp', 'return empty($url) ? true : String::regexp_match($regExp, $url);'), array(ValidatorUrl::getRegexp()), false, array('url'))); $this->addCheck(new FormValidatorLocale($this, 'title', 'required', 'author.submit.form.titleRequired', $this->getRequiredLocale())); $sectionDao =& DAORegistry::getDAO('SectionDAO'); $section = $sectionDao->getSection($article->getSectionId()); $abstractWordCount = $section->getAbstractWordCount(); if (isset($abstractWordCount) && $abstractWordCount > 0) { $this->addCheck(new FormValidatorCustom($this, 'abstract', 'required', 'author.submit.form.wordCountAlert', create_function('$abstract, $wordCount', 'foreach ($abstract as $localizedAbstract) {return count(explode(" ",$localizedAbstract)) < $wordCount; }'), array($abstractWordCount))); } }
/** * @covers ValidatorUrl * @covers ValidatorUri * @covers ValidatorRegExp * @covers Validator */ public function testValidatorUrlAndUri() { $validator = new ValidatorUrl(); self::assertTrue($validator->isValid('ftp://some.download.com/')); self::assertTrue($validator->isValid('http://some.site.org/')); self::assertFalse($validator->isValid('gopher://another.site.org/')); self::assertFalse($validator->isValid('anything else')); self::assertTrue($validator->isValid('http://189.63.74.2/')); self::assertFalse($validator->isValid('http://257.63.74.2/')); self::assertFalse($validator->isValid('http://189.63.74.2.7/')); $validator = new ValidatorUri(array('gopher')); self::assertTrue($validator->isValid('gopher://another.site.org/')); self::assertFalse($validator->isValid('http://some.site.org/')); self::assertFalse($validator->isValid('anything else')); $validator = new ValidatorUri(); self::assertTrue($validator->isValid('gopher://another.site.org/')); self::assertTrue($validator->isValid('http://some.site.org/')); self::assertFalse($validator->isValid('anything else')); self::assertEquals('&^(?:(http|https|ftp):)?(?://(?:((?:%[0-9a-f]{2}|[-a-z0-9_.!~*\'();:\\&=+$,])*)@)?(?:((?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\\.)*[a-z](?:[a-z0-9]+)?\\.?)|([0-9]{1,3}(?:\\.[0-9]{1,3}){3}))(?::([0-9]*))?)((?:/(?:%[0-9a-f]{2}|[-a-z0-9_.!~*\'():@\\&=+$,;])*)*/?)?(?:\\?([^#]*))?(?:\\#((?:%[0-9a-f]{2}|[-a-z0-9_.!~*\'();/?:@\\&=+$,])*))?$&i', ValidatorUrl::getRegexp()); }
/** * Constructor. */ function AuthorSubmitStep3Form($paper) { parent::AuthorSubmitForm($paper, 3); // Validation checks for this form $this->addCheck(new FormValidatorCustom($this, 'authors', 'required', 'author.submit.form.authorRequired', create_function('$authors', 'return count($authors) > 0;'))); $this->addCheck(new FormValidatorArray($this, 'authors', 'required', 'author.submit.form.authorRequiredFields', array('firstName', 'lastName'))); $this->addCheck(new FormValidatorArrayCustom($this, 'authors', 'required', 'author.submit.form.authorRequiredFields', create_function('$email, $regExp', 'return String::regexp_match($regExp, $email);'), array(ValidatorEmail::getRegexp()), false, array('email'))); $this->addCheck(new FormValidatorArrayCustom($this, 'authors', 'required', 'user.profile.form.urlInvalid', create_function('$url, $regExp', 'return empty($url) ? true : String::regexp_match($regExp, $url);'), array(ValidatorUrl::getRegexp()), false, array('url'))); $this->addCheck(new FormValidatorLocale($this, 'title', 'required', 'author.submit.form.titleRequired')); $schedConf =& Request::getSchedConf(); $reviewMode = $paper->getReviewMode(); if ($reviewMode != REVIEW_MODE_PRESENTATIONS_ALONE) { $this->addCheck(new FormValidatorLocale($this, 'abstract', 'required', 'author.submit.form.abstractRequired')); $trackDao =& DAORegistry::getDAO('TrackDAO'); $track = $trackDao->getTrack($paper->getTrackId()); $abstractWordCount = $track->getAbstractWordCount(); if (isset($abstractWordCount) && $abstractWordCount > 0) { $this->addCheck(new FormValidatorCustom($this, 'abstract', 'required', 'author.submit.form.wordCountAlert', create_function('$abstract, $wordCount', 'foreach ($abstract as $localizedAbstract) {return count(explode(" ",strip_tags($localizedAbstract))) < $wordCount; }'), array($abstractWordCount))); } } }
/** * Constructor * @param $plugin object */ function QuickSubmitForm(&$plugin, $request) { parent::Form($plugin->getTemplatePath() . 'index.tpl'); $this->request =& $request; $journal =& $request->getJournal(); $this->addCheck(new FormValidatorPost($this)); $this->addCheck(new FormValidator($this, 'sectionId', 'required', 'author.submit.form.sectionRequired')); $this->addCheck(new FormValidatorCustom($this, 'tempFileId', 'required', 'plugins.importexport.quickSubmit.submissionRequired', create_function('$tempFileId', 'return $tempFileId > 0;'))); $this->addCheck(new FormValidatorCustom($this, 'sectionId', 'required', 'author.submit.form.sectionRequired', array(DAORegistry::getDAO('SectionDAO'), 'sectionExists'), array($journal->getId()))); $this->addCheck(new FormValidatorCustom($this, 'authors', 'required', 'author.submit.form.authorRequired', create_function('$authors', 'return count($authors) > 0;'))); $this->addCheck(new FormValidatorCustom($this, 'destination', 'required', 'plugins.importexport.quickSubmit.issueRequired', create_function('$destination, $form', 'return $destination == \'queue\'? true : ($form->getData(\'issueId\') > 0);'), array(&$this))); $this->addCheck(new FormValidatorArray($this, 'authors', 'required', 'author.submit.form.authorRequiredFields', array('firstName', 'lastName'))); $this->addCheck(new FormValidatorArrayCustom($this, 'authors', 'required', 'user.profile.form.emailRequired', create_function('$email, $regExp', 'return String::regexp_match($regExp, $email);'), array(ValidatorEmail::getRegexp()), false, array('email'))); $this->addCheck(new FormValidatorArrayCustom($this, 'authors', 'required', 'user.profile.form.urlInvalid', create_function('$url, $regExp', 'return empty($url) ? true : String::regexp_match($regExp, $url);'), array(ValidatorUrl::getRegexp()), false, array('url'))); // Add ORCiD validation import('lib.pkp.classes.validation.ValidatorORCID'); $this->addCheck(new FormValidatorArrayCustom($this, 'authors', 'required', 'user.profile.form.orcidInvalid', create_function('$orcid', '$validator = new ValidatorORCID(); return empty($orcid) ? true : $validator->isValid($orcid);'), array(), false, array('orcid'))); $supportedSubmissionLocales = $journal->getSetting('supportedSubmissionLocales'); if (!is_array($supportedSubmissionLocales) || count($supportedSubmissionLocales) < 1) { $supportedSubmissionLocales = array($journal->getPrimaryLocale()); } $this->addCheck(new FormValidatorInSet($this, 'locale', 'required', 'author.submit.form.localeRequired', $supportedSubmissionLocales)); }
/** * @see ValidatorUri::getRegexp() * @return string */ static function getRegexp() { return parent::getRegexp(ValidatorUrl::_getAllowedSchemes()); }