pkp / pkp-lib

The library used by PKP's applications OJS, OMP and OPS, open source software for scholarly publishing.
https://pkp.sfu.ca
GNU General Public License v3.0
306 stars 445 forks source link

Native XML plugin fails to export submissions with language metadata under PHP 8 #8663

Closed jonasraoni closed 1 year ago

jonasraoni commented 1 year ago

Describe the bug When trying to export submissions that have at least one language defined in the metadata section, a fatal error is generated.

PHP Fatal error:  Uncaught TypeError: DOMElement::setAttribute(): Argument #2 ($value) must be of type string, array given in lib/pkp/plugins/importexport/native/filter/PKPPublicationNativeXmlFilter.inc.php:89
Stack trace:
#0 lib/pkp/plugins/importexport/native/filter/PKPPublicationNativeXmlFilter.inc.php(89): DOMElement->setAttribute()
#1 plugins/importexport/native/filter/PublicationNativeXmlFilter.inc.php(52): PKPPublicationNativeXmlFilter->createEntityNode()
#2 lib/pkp/plugins/importexport/native/filter/PKPPublicationNativeXmlFilter.inc.php(52): PublicationNativeXmlFilter->createEntityNode()
#3 lib/pkp/classes/filter/Filter.inc.php(449): PKPPublicationNativeXmlFilter->process()
#4 lib/pkp/plugins/importexport/native/filter/SubmissionNativeXmlFilter.inc.php(182): Filter->execute()
#5 lib/pkp/plugins/importexport/native/filter/SubmissionNativeXmlFilter.inc.php(103): SubmissionNativeXmlFilter->addPublications()
#6 plugins/importexport/native/filter/ArticleNativeXmlFilter.inc.php(49): SubmissionNativeXmlFilter->createSubmissionNode()
#7 lib/pkp/plugins/importexport/native/filter/SubmissionNativeXmlFilter.inc.php(65): ArticleNativeXmlFilter->createSubmissionNode()
#8 lib/pkp/classes/filter/Filter.inc.php(449): SubmissionNativeXmlFilter->process()
#9 plugins/importexport/native/filter/IssueNativeXmlFilter.inc.php(203): Filter->execute()
#10 plugins/importexport/native/filter/IssueNativeXmlFilter.inc.php(108): IssueNativeXmlFilter->addArticles()
#11 plugins/importexport/native/filter/IssueNativeXmlFilter.inc.php(57): IssueNativeXmlFilter->createIssueNode()
#12 lib/pkp/classes/filter/Filter.inc.php(449): IssueNativeXmlFilter->process()
#13 plugins/importexport/native/NativeImportExportPlugin.inc.php(289): Filter->execute()

Solution Given the languages field is already covered by the "controlled vocabularies" part of the Native Plugin XML it might be dropped partially at stable-3_3_0. Looks like I've already dropped this at the main branch.

To Reproduce Steps to reproduce the behavior:

  1. Ensure the submission has at least one language at the metadata section
  2. Attempt to export it

What application are you using? OJS/stable-3_3_0 PHP 8

PRs

jonasraoni commented 1 year ago

@asmecher Here are the PRs for this, or should I tag Dimitris to review the Native XML stuff? :)

asmecher commented 1 year ago

Thanks, @jonasraoni; @defstat, could you have a look?

jonasraoni commented 1 year ago

Merged PR at the issue description.