OJS 3.3.0 Release Notes
Git tag: 3_3_0-13

Release date: October 4, 2022
=============================

Configuration Changes
---------------------

See config.TEMPLATE.inc.php for a description and examples of all supported
configuration parameters.

- An allowed_hosts option was added to protect against HOST injection attacks.
  We recommend configuring this setting! See "Recommended Configuration" in
  docs/README.md for details. (https://github.com/pkp/pkp-lib/issues/7649)
- The proxy configuration settings have changed. Please review the [proxy]
  section in config.TEMPLATE.inc.php and adapt your settings in config.inc.php
  as needed.
- The db.persistent option for persistent database connections has been removed.
- The db.collation option for configuring a database connection collation has
  been added (default: utf8_general_ci)

New config.inc.php parameters added for OAuth-based SMTP authorization:
(see https://github.com/PHPMailer/PHPMailer/wiki/Using-Gmail-with-XOAUTH2)
- email.smtp_authtype: See PHPMailer's AuthType setting
- email.smtp_oauth_provider
- email.smtp_oauth_email
- email.smtp_oauth_clientid
- email.smtp_oauth_clientsecret
- email.smtp_oauth_refreshtoken

3.3.0-13 Build
--------------
	#8299: Use helper method in galley grids
	#8307: Validate author IDs against submissions/publications

3.3.0-12 Build
--------------
	#7190: Issues with the NativeImportExportPlugin
	#7310: Adding reviewer does not include required country field for created user.
	#7330: Images aren't handled correctly on the front end of HTML galleys in versioned articles
	#7373: Set httpOnly flag on session cookie
	#7485: ArticleReportPlugin shows metadata in the submission's locale instead of the current locale
	#7528: Crossref deposits fail when surname is missing
	#7546: PKPAuthor::getLocalizedGivenName() falls back to default locale when none provided
	#7595: Valid special characters are stripped from DOI suffix
	#7705: Files not selected for promotion by default
	#7893: Submission wizard form allows entry in languages not supported by submissions
	#7894: Recommend-only option disappears when looking for editors to assign
	#7914: Enable external access to the plugin URLs for private journals
	#8007: The ACron plugin isn't reloading the scheduled tasks when a plugin is enabled/disabled
	#8035: initData hooks not fired in SeriesForm and CategoryForm
	#8041: Error when adding a Note in the "Activity Log & Notes"
	#8042: Send email to Reviewer fails
	#8048: Can't upload review files when in submission workflow
	#8055: Stage participants API request fails
	#8059: Unexpected error message after trying to close modal window
	#8067, #8068, #8069: Can't upload/select when in submission's Copyediting workflow
	#8086: Subscriptions belonging to users with no country set are not included in the subscription report
	#8107: NativeImportExport plugin references OMP
	#8119: Remove duplicated locale keys
	#8137: XML import fails with error: Submission file added to review round that does not exist
	#8187: Site and journal titles not escaped in back-end template
	#8189: incomplete_count calculation does not account for cancelled review assignment
	#8202: PKPAuthorForm: required locale for author metadata is UI instead of submission locale
	#8241: Auther full name exposed to reviewers via editorial descision email templates in double blind review
	#8247: One-click Reviewer Access provides full access to reviewer account
	#8266: Wrong German translation for username variable

3.3.0-11 Build
--------------
	#2169: Mailing Address should not be required in settings
	#6209: Multiple use of id="setup-button" in website settings
	#7317: CSV user export includes roles from other journals
	#7604: Add ability to include user/context with CLI request
	#7651: Fatal error when trying to load PKPXMLParser
	#7716: Hide DB password in the administration "system info" page
	#7739: Improve multimodal publishing with OJS
	#7744: Ensure email template variables are properly filtered
	#7751: Error if on private site password protected
	#7773: Import XML missing filesize attribute to file node causes confusing fatal error
	#7776: Configuration parameters get truncated if they are too long
	#7793: Allow for plugins to describe support for fuzzy or wildcarded versions
	#7794: Fix download filenames when encoded into content headers
	#7816: Fatal error when deleting a submission
	#7820: OJS: PHP Fatal error:  Declaration of SubmissionChecklistForm::initData($args) must be compatible with Form::initData()
	#7828: Submission files and db entries are not deleted after being rejected during upload process
	#7861: Fix fatal error with pickier PHP release and array_intersect
	#7864: Full title in page title and DC.Title
	#7881: User verification process failing with internal exception
	#7895: fatal error when thanking a reviewer
	#7930: Ensure umask is respected in file creation
	#7935: Stop using deprecated fgetss() function
	#7943: Typo in getUsersWithNoRole query
	#7958: 3.3.0 installs a locale column in the publications table that should have been removed

3.3.0-10 Build
-------------
	#7749: Resolve upgrade issue with latest 3.2.x ORCID profile plugin
	#7739: Add MIME type hint for Javascript files

3.3.0-9 Build
-------------
	#7649: Add support for limiting allowed hosts
	#7685: Add Authorization header support to API interactions
	#7580: Fatal error when importing XML article in PHP8
	#7681: Add Publication object to publication forms so hooks can use it
	#7664: Fatal error when trying to delete section
	#7654: admin page does not refresh when removing a context
	#7613: Keyword auto complete not working while submitting a preprint/book/submission
	#7471: Upgrade optimizations: submission locales, submission event logs, delete old revisions
	#7538: Task list is not sorted with most recent tasks at the top
	#7474: WMV files are downloaded as ASX files in Firefox
	#7607: Dublin Core subject tag only shows last keyword when more than one keyword entered
	#7620: DataCite plugin form CSRF error
	#7506: Unable to Upload/Select Files from Copyediting stage (fix ineffective)
	#7594: Submitted Competing Interest data can go missing
	#7605: Submission wizard asks for languages that are not enabled
	#7371: Add missing CSRF checks
	#7266: Assigned articles missing from future issues after upgrade to OJS 3.3.0-8
	#7596: No access granted for non-expiring subscription
	#7590: Resolve custom issue ordering error with PostgreSQL on publish
	#7213: No email is sent when creating a new announcement
	#7549: Author submission dashboard shows wrong version number
	#7552: Typo in deprecated ArticleHandler::downloadSuppFile()
	#7534: Cancelling or unassigning a reviewer who is also an editor should restore editor's access to submission
	#7509: Stage assignments permit metadata to be edited through the API even when permission has been revoked
	#7510: Possible to publish a submission in the review stage
	#7284: Missing rights for internal reviewer to download files.
	#7475: Issue table of contents has extra margins on homepage
	#6122: Recommend By Similarity Plugin doesn't work as expected
	#7453: Activity Log fails to load when a file has been uploaded to a discussion message that was deleted
	#7450: tasks cannot be marked as read/unread or deleted
	#7419: Retrieving publications in alphabetically ordered category when changing language
	#6991: Slow queries on the user management page
	#7407: Error when searching for a keyword in a language not enabled in the UI
	#7217: Default user search does not include username
	#7420: Left-to-Right (LTR) languages have UX issue on forms
	#7378: Resolve reflected XSS issues
	#7363: Cancelled review assignments included in count of active reviews
	#7344: CSS file mimetype not correctly recognized
	#7168: Unable to pick a year in the advanced filters of the search form 
	#7277: Discussion participants include declined open reviewers
	#7275: Can't upgrade to 3.2.x on PHP 8 due to use of get_magic_quotes_runtime
	#7236: Copyright info not published using quicksubmit plugin
	#7267: Allow period/full-stop in url paths
	#7281: Redundant and not escaped special characters in locale files
	#6828: New sections added to an Issue can't be custom ordered if the issue has already been custom ordered
	#4904: Update log handling to ensure metrics are calculated correctly across versions
	#5740: "Galleys" section doesn't load

3.3.0-8 Build
-------------
	#7240: Cancelling a discussion sometimes leaves an empty placeholder
	#7232: Link to report broken in report plugins
	#7214: OAI resumption token empty after first page of results
	#7194: ImportExportPlugins do not export PubIds via ScheduledTaskTool
	#7181: Provide OJS/OMP/OPS version number when requesting plugin gallery list
	#7174: ReCAPTCHA proxy is misconfigured
	#7152: Journal path of "files" has unexpected behaviour
	#7138: OJS don't replace the galley postfix in the url
	#6986: HTML entities displayed in journal title by citationStyleLanguage plugin

3.3.0-7 Build
-------------
	#7121: Call to undefined function create_function
	#7109: Use keywords (and subjects) in DataCite export
	#7108: The pubIds plugins not loaded for CLI in ImportExportPlugins
	#7102: Language parameter user.authorization.journalDoesNotPublish does not exist.
	#7098: Custom email templates lost upon changing language configuration
	#7093: Error in XML Schema for Import/Export
	#7090: Warning in administration interface about latestVersionInfo
	#7078: Dropzone.js causes upload timeouts on large files
	#7076: ReviewFormElement::getMultipleResponsesElementTypes() cannot be called statically
	#7071: PostgreSQL error upgrade from 3.1.2 to 3.3.0-6
	#7015: PayPal payment fails for amounts greater than 999
	#7004: Document the REST API endpoints for announcements
	#6944: User search phrases should match against the user's preferred name field
	#6898: Diacritics are stripped from filenames when downloading
	#6747: List of journals inside the Dashboard in unsorted
	#6469: Exporting users "Slim application error"
	#5971: Medra Issue export does not validate against XSD

3.3.0-6 Build
-------------
	#6986: HTML entities displayed in journal title by citationStyleLanguage plugin
	#6979: [OJS 3.3.0.3] Unassigned submission list not working
	#6962: OAI resumption tokens never delivered
	#6956: mEDRA Export: PHP Fatal error after upgrade
	#6953: Replace getCCLicenseBadge static calls with instance calls
	#6952: Remove file naming test from the shared library
	#6949: Issues can be served by ID in the wrong journal
	#6938: Email templates can not be saved because of data from disabled locales
	#6931: Clear issue object DOIs does not delete publication DOIs
	#6909: mEDRA: the calculation of the file size is different for issue and article galleys
	#6898: Diacritics are stripped from filenames when downloading
	#6887: Crossref status check errors in 3.3.0-x
	#6772: Upgrade from 3.2 to 3.3, All Journal custom block become same from last journal custom block
	#6683: Ordering of sidebar blocks changed upon visiting the settings form

3.3.0-5 Build
-------------
	#6910: Use proper identification when issuing HTTP requests
	#6892: View more accessible button label is broken in 3.3
	#6888: Ensure Composer dependency test/example code is safe
	#6886: crossrefReferenceLinking plugin: consider all references settings
	#6879: Site settings not visible for usage statistics plugin when only one context exists
	#6873: Saving the Website - Appearance - Setup form auto-focuses on Homepage Image Alt Text field
	#6872: Article links broken after update to 3.3.0-4
	#6871: Session destruction (and duplicate) warnings in the PHP error log
	#6870: SQL logic error in upgrade when using PostgreSQL
	#6862: Author name is not localized in How-to-Cite citation
	#6757: Supported form locales can be serialized as associative array

3.3.0-4 Build
-------------
	#6860: Make submission deletion more accepting of missing files
	#6857: Add error handling for nonexistent reviewer access
	#6852: [OJS 3.3] Crossref export fails with unexpected ORCID error
	#6847: Call to undefined method SubEditorsDAO::getBySectionId() in Series.inc.php:271
	#6844: Bump pdf.js to v2.6.347
	#6824: TinyMCE can overwrite public images in other contexts
	#6808: Untranslated locale key notification.type.submissionNewVersion in new version notification email
	#6803 #6807: OAI "earliest datestamp" is always now
	#6801: Links to dependent files referenced in HTML/JATS XML galleys are broken
	#6800: Backend Favicon defaults to PKP logo Hosting
	#6798: Fatal error when removing announcement types
	#6793: Updates to a customised journal stylesheet (css file) are not reflected in the HTML source
	#6784: Crossref validation error when the author only has a given name
	#6780: Wrong nesting in pkp-lib/templates/frontend/pages/navigationMenuItemViewContent.tpl
	#6768: Access denied when clicking on "Administration" menu
	#6762: Access denied for journal editor when adding new file in Request revisions dialog
	#6761: Non-HTTP(S) links entered into rich editor fields become page-relative
	#6753: Force validation of "https://" for ORCID IDs in user profile.
	#6752: Incompatibility with PHP 8.0: mb_substitute_character() no longer supports passing empty string
	#6751: Upgrade failure with PHP 8.0: conflicts with XMLParser class
	#6750: Plugin search in gallery misbehaving
	#6748: Cannot create Announcements: General error: 1364 Field 'setting_type' doesn't have a default value
	#6743: Review files pointing to non-existing submission file may break upgrade to 3.3
	#6741: Validation errors are not displayed when uploading files during submission
	#6731: Failed assert warning in Section settings page
	#6703: Unable to upgrade 3.3.0.2: Call to a member function getConnection() on null
	#6663: HTML galley does not pick up the dependent CSS
	#6563: Authorization header with JWT can cause fatal error
	#5844: Enable rich text in site-wide "About" field
	#5365: OAuth for Gmail Access
	#4834: Re-add "blind copy reviewers on editor decision" feature

3.3.0-3 Build
-------------
	#6726: Privacy statement page error 500
	#6722: Monograph export as native xml fails
	#6718: SECURITY: Revisit Update Illuminate Database library for GHSA-3p32-j457-pg5x (#6632)
	#6710: Upgrade to 3.3.0.2 fails when a journal has no supportedFormLocales
	#6703: Unable to upgrade 3.3.0.2: Call to a member function getConnection() on null
	#6643: Lack of notifications after the author uploads revisions
	#6563: Authorization header with JWT can cause fatal error

New Features
------------
	#2493 #6264 #6093: Replace ADODB toolset with Illuminate/Database
	#4017 #6536: Send an email to all users with a specific role
	#4796: Filter email templates by workflow stage
	#5181 #5182 #5183 #5184 #5185 #5986 #5187 #5188 #5189 #5619 #5917 #6038: Accessibility improvements
	#5275: Provide averages for editorial statistics
	#5388: Submission keywords are not indexed/searchable
	#5540: Date formats should allow different configurations for each language
	#5565: Allow editors and editorial assistants to preview an article before it is published
	#5702: Ability to disable submissions
	#5865: Refactor backend UI
	#5963: Replace FileWrapper with 3rd-party implementation (Flysystem)
	#5982: Filter submissions by assigned editor
	#6054: Add a filter by assigned issue to submission lists
	#6057: Improve file upload during submission
	#6097 #6175 #6223: Introduce Guzzle for HTTP client abstraction
	#6146: [OPS] Allow submission search by ORCID ID
	#6181: Support text directionality in TinyMCE for RTL languages
	#2993: reCaptcha not working from China
	#5642: Add CSV-based user export

Bug Fixes
---------
	#490: Fix open access notification
	#2773: Restore use of browser history for tabbed navigation
	#3572: Remove OJS 2.x upgrade tools
	#3933: Issues with pages related to subscription
	#3948: webfeed Plugin rss2 missing XML namespace and date time issue
	#4220: Add BOM (byte order mark) to fix UTF-8 in Excel
	#4414: Context path property creates conflict when disable_path_info is enabled
	#4895: Use inclusive terminology
	#4915: Reviewers' identities visible to other reviewers in discussion
	#4930: Option to hide title of section from issue table of contents broke in default theme
	#4991: Add Category to article page
	#5090: Remove XML-based locale file fallback
	#5121: journals with no custom base_url ignored if at least one journal in an install has one when stats are processed
	#5185: Add autocomplete fields to registration and login forms.
	#5288: Performance issue using LIMIT and OFFSET in search users query
	#5408: Payments tab does not appear when payments are enabled in settings
	#5445: Test licenseUrl context setting
	#5592: Block plugins and cacheing problem
	#5610: Minimal Wording Changes for Emphasis on Preprints
	#5772: Add upgrade script to reset array keys for context locales
	#5819: Unable to revert "Reject" decision
	#5843: User object in payment records for past users null
	#5856: Review Form not getting the correct title and description
	#5863: Access alert for Submissions with Pre-review discussions of Editorial Team
	#5869: Clean up plugin installation error handling
	#5878: Review and improve PluginRegistry
	#5948: Write integration tests for unpublishing an issue
	#5954: Redirect fails when urlPath has been changed
	#5961: enabling crossrefReferenceLinking (even master branch) makes doi disappear
	#5984: Suggested improvements for About this Publishing System page
	#6000: Undefined const SCHEMA_PUBLICATION during upgrade
	#6006: DOI/Crossref Cypress Tests
	#6007: User roles can be passed to the browser as an object instead of array
	#6008: PHP Notice when compiling LESS from a theme plugin
	#6011: Imported submissions throw off editorial statistics
	#6021: Crossref plugin not receiving title metadata in most recent 3.2.1 testing.
	#6022: PostgreSQL upgrade to 3.2.0 resets all submissions to unpublished
	#6026: Submission deletion can delete author records in other submissions
	#6029: Report Generator doesn't return any results when custom range is selected with a single day
	#6033: Announcements can be viewed even when disabled
	#6035: Plugin install does not work across filesystems
	#6041: License override formatting error
	#6043: Notice about no section editors appears even when section editors exist
	#6056: Version number showing Publication ID for authors
	#6058: Unread notifications aren't being shown on the front-end
	#6060: If a title prefix is given for a single locale, it is shown with all article title translations
	#6064: Text color does not respond to background color selection on mobile
	#6067: Submission Checklist - Reordering doesn't save
	#6084: Announcement emails sent blank after upgrade
	#6085: Editorial report email with wrong locale
	#6095: Include OJS-specific user agent with version number in CrossRef exchanges
	#6096: DB field type TEXT is cutting off long content
	#6102: Submission::getSectionTitle doesn't return any value
	#6105: Allow capital letters in context urlPath
	#6107: "Omit the title of this section from the issue's Table of Contents" section option does not work
	#6111: SQL typo in "browse by authors" feature
	#6115: Enable "download all files" in production ready files grid
	#6120: OMP Internal Review queries are placed in External Review
	#6134: The statistics notification is sent to roles that have no access to the interface
	#6145: Move Report Generator out of Tools
	#6148: Error for custom blocks in side bar due to automatic name addition
	#6165 #6168: Announcement notification issues
	#6183: Sitemap does not include articles
	#6184: Can't use array values in theme options
	#6189: Problem when submitting reviews
	#6196: Fix test/build for changed Google closure compiler installation process
	#6203: Revenge of the edit links
	#6206: Ensure stage in URL matches file ID
	#6207: Ensure that served articles are matched against the request's context ID
	#6212: Quick Submit Plugin notification error problem
	#6213: Error in upgrade from OJS 3.1.x to 3.2.x on submissionSubject (controlled vocabulary) data
	#6226: CSRF checks missing from import/export plugin upload bounce requests
	#6229: Subscription end dates are not inclusive
	#6234: Authors should not see the overdue reviews warning in submission lists
	#6246: Let iframe use relative URL instead of absolute
	#6259: copyrightHolder should be assigned as localized data
	#6262: Broken catalog page in OMP with PostgreSQL
	#6265: New sample file for Native Import/export
	#6269: Submission Hyperlink
	#6276: QuickSubmit Plugin: Keywords in a non-primary locale can’t be deleted
	#6284: During upgrade to 3.3 email templates' stage_id is populated before being created
	#6300: PHP warning with cancelled reviews
	#6301 #6321: Add indexes/optimize SQL for performance
	#6320: [OJS] CAST AS CHAR i postgres
	#6330: Lens Galley XML views not tracked in usage statistics
	#6331: Native citations import doesn't break citations string into single citations
	#6337: Foreign key constraint error during upgrade in review_round_files.submission_file_id
	#6350: Problems with enabling/disabling usage event and usage stats plugins from plugin grid
	#6359: Submission files migration does not update item_views
	#6370: Migration fails upon changing item_views.assoc_id from varchar to bigint
	#6381: Remove OJS-specific considerations from pkp-lib
	#6382: Resolve PHP warning: SubmissionFileEventLogDAO::getById vs EventLogDAO::getById
	#6387: Restore keywords tests
	#6390: Issue filter leads to fatal error
	#6391: Confusion when article assigned to issue but not scheduled for publication
	#6392: Create and delete discussion leads to fatal error
	#6393: Author can not access review stage
	#6396: Editor can not share files to be reviewed with reviewer
	#6397: Use display() instead of fetch() to pass front-end templates to Smarty
	#6399: Can not add or edit a category
	#6405: cannot create an issue galley
	#6406: Unable to pick a year in the advanced filters of the search form
	#6408: User-facing category page is inaccessible
	#6409: Payments menu does not display when enabled
	#6411: Datacite plugin not up to date : different credentials for test site vs prod site
	#6414: error when creating a counter AR1 report
	#6418: Fix test scripts for MySQL 8.x
	#6419: Publication APC Fee indication not present
	#6420: Institutional Subscription: failure to add IP-range
	#6421: Dependent file upload fails when confirm revision is detected
	#6422: ONIXCodelist retrieval fails when running under Windows server
	#6426: PHP server freeze and constraint violation when creating/editing issues
	#6429: Export users to CSV form loads all user groups
	#6439: Adding new roles
	#6441 #6442 #6444 #6447 #6448: DOI plugin setting issues
	#6451: Can not change journal's primary language
	#6457: Disentangle beacon and upgrade warning disables
	#6458: Discussions Grid produces a warning
	#6462: Inconsistency in JWT (API key) encoding/decoding
	#6467: "Reload defaults" for language invalidates $contextPath variable in "for authors", "for readers", etc.
	#6478: Remove use of Google Font CDN
	#6482: Section editor can upload to unassigned review round
	#6483: Default theme exceeds viewport width in some cases
	#6495: Incorrect URLs in default context settings
	#6502: Missing files break issue table of contents generation
	#6503: OAI _getRecordsRecordSet sql query becomes very slow in larger sites
	#6509: User subscriptions page is inaccessible
	#6510: Non-expiring institutional subscription can't be added
	#6512: web_cache = on does not work in OJS 3.2
	#6516: Removing a nav menu item causes an error
	#6529: Author can not upload revisions when decision is to resubmit for review
	#6542: [OMP] Fix pull forward of submission stages files into Internal Review
	#6548: User issue payment unlocks issue globally for users who aren't logged in
	#6559: Can't mark task notifications as "New" or "Read" or "Delete"
	#6564: Changing Journals in multiuser OJS throws a 404 error
	#6566: move mEDRA plugin to its own repository, accessible via plugin gallery
	#6594: Site-wide fall-back for the privacy notice in Admin > Site Settings not displaying properly
	#6615: Submission files referencing nonexistent submissions break upgrade to 3.3
	#6616: pkp/pkp-lib#6615 Remove submission_files entries that don't correspond to existing submissions
	#6620: WebFeed plugin missing restriction to published content
	#6621: Remote galleys are broken
	#6625: two entries in the oai interface after removing a submission from TOC and rescheduling it again
	#6232 #6632 #6378: Update 3rd-party dependencies
	#6633: Entering a space in journal path breaks site
	#6634: Block names aren't being updated to the lowercase during OJS upgrade
	#6638: The fileStages filter of the submission files API is ignored for managers
	#6654: The cancel button at the "Change Password" has no purpose
	#6668: Public message when not accepting submissions is confusing
	#6671: no router object when executing scheduled tasks
	#6681: GET request to /contexts API endpoint causes 500 error

