After upgrading to ojs-3.3.0-13, Announcement Feed Plugin not working with PHP 8.0

After upgrading to ojs-3.3.0-13, Announcement Feed Plugin not working with PHP 8.0.
Error: Failed Ajax request or invalid JSON returned.

[14-Oct-2022 10:34:42 UTC] PHP Fatal error:  Declaration of AnnouncementFeedSettingsForm::fetch($request) must be compatible with Form::fetch($request, $template = null, $display = false) in D:\wamp64\www\ojs-3.3.0-13\plugins\generic\announcementFeed\AnnouncementFeedSettingsForm.inc.php on line 65
[14-Oct-2022 10:34:42 UTC] PHP Stack trace:
[14-Oct-2022 10:34:42 UTC] PHP   1. {main}() D:\wamp64\www\ojs-3.3.0-13\index.php:0
[14-Oct-2022 10:34:42 UTC] PHP   2. PKPApplication->execute() D:\wamp64\www\ojs-3.3.0-13\index.php:68
[14-Oct-2022 10:34:42 UTC] PHP   3. Dispatcher->dispatch($request = class Request { public $_router = class PKPComponentRouter { public $_component = 'grid.settings.plugins.SettingsPluginGridHandler'; public $_op = 'manage'; public $_rpcServiceEndpointParts = [...]; public $_rpcServiceEndpoint = [...]; public $_application = class Application { ... }; public $_dispatcher = class Dispatcher { ... }; public $_contextDepth = 1; public $_contextList = [...]; public $_flippedContextList = [...]; public $_contextPaths = [...]; public $_contexts = [...]; public $_handler = class SettingsPluginGridHandler { ... }; public $_indexUrl = 'http://localhost/ojs-3.3.0-13/index.php' }; public $_dispatcher = class Dispatcher { public $_application = class Application { ... }; public $_routerNames = [...]; public $_routerInstances = [...]; public $_router = class PKPComponentRouter { ... }; public $_requestCallbackHack = NULL }; public $_requestVars = ['verb' => 'settings', 'plugin' => 'announcementfeedplugin', 'category' => 'generic', '_' => '1665743656980']; public $_basePath = '/ojs-3.3.0-13'; public $_requestPath = NULL; public $_isRestfulUrlsEnabled = FALSE; public $_isPathInfoEnabled = TRUE; public $_serverHost = 'localhost'; public $_protocol = 'http'; public $_isBot = NULL; public $_userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36' }) D:\wamp64\www\ojs-3.3.0-13\lib\pkp\classes\core\PKPApplication.inc.php:362
[14-Oct-2022 10:34:42 UTC] PHP   4. PKPComponentRouter->route($request = class Request { public $_router = class PKPComponentRouter { public $_component = 'grid.settings.plugins.SettingsPluginGridHandler'; public $_op = 'manage'; public $_rpcServiceEndpointParts = [...]; public $_rpcServiceEndpoint = [...]; public $_application = class Application { ... }; public $_dispatcher = class Dispatcher { ... }; public $_contextDepth = 1; public $_contextList = [...]; public $_flippedContextList = [...]; public $_contextPaths = [...]; public $_contexts = [...]; public $_handler = class SettingsPluginGridHandler { ... }; public $_indexUrl = 'http://localhost/ojs-3.3.0-13/index.php' }; public $_dispatcher = class Dispatcher { public $_application = class Application { ... }; public $_routerNames = [...]; public $_routerInstances = [...]; public $_router = class PKPComponentRouter { ... }; public $_requestCallbackHack = NULL }; public $_requestVars = ['verb' => 'settings', 'plugin' => 'announcementfeedplugin', 'category' => 'generic', '_' => '1665743656980']; public $_basePath = '/ojs-3.3.0-13'; public $_requestPath = NULL; public $_isRestfulUrlsEnabled = FALSE; public $_isPathInfoEnabled = TRUE; public $_serverHost = 'localhost'; public $_protocol = 'http'; public $_isBot = NULL; public $_userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36' }) D:\wamp64\www\ojs-3.3.0-13\lib\pkp\classes\core\Dispatcher.inc.php:144
[14-Oct-2022 10:34:42 UTC] PHP   5. PKPRouter->_authorizeInitializeAndCallRequest($serviceEndpoint = [0 => class SettingsPluginGridHandler { public $_emptyCategoryRowText = 'grid.noItems'; public $_categoryData = NULL; public $_currentCategoryId = NULL; public $_title = 'common.plugins'; public $_emptyRowText = 'grid.noItems'; public $_footNote = ''; public $_dataProvider = NULL; public $_actions = [...]; public $_columns = [...]; public $_data = NULL; public $_itemIterator = NULL; public $_template = NULL; public $_urls = NULL; public $_features = NULL; public $_constants = [...]; protected $_apiToken = NULL; public $_id = 'grid-settings-plugins-settingsplugingrid'; public $_dispatcher = class Dispatcher { ... }; public $_checks = [...]; public $_roleAssignments = [...]; public $_authorizationDecisionManager = class AuthorizationDecisionManager { ... }; public $_enforceRestrictedSite = TRUE; public $_roleAssignmentsChecked = TRUE; public $_isBackendPage = FALSE }, 1 => 'manage'], $request = class Request { public $_router = class PKPComponentRouter { public $_component = 'grid.settings.plugins.SettingsPluginGridHandler'; public $_op = 'manage'; public $_rpcServiceEndpointParts = [...]; public $_rpcServiceEndpoint = [...]; public $_application = class Application { ... }; public $_dispatcher = class Dispatcher { ... }; public $_contextDepth = 1; public $_contextList = [...]; public $_flippedContextList = [...]; public $_contextPaths = [...]; public $_contexts = [...]; public $_handler = class SettingsPluginGridHandler { ... }; public $_indexUrl = 'http://localhost/ojs-3.3.0-13/index.php' }; public $_dispatcher = class Dispatcher { public $_application = class Application { ... }; public $_routerNames = [...]; public $_routerInstances = [...]; public $_router = class PKPComponentRouter { ... }; public $_requestCallbackHack = NULL }; public $_requestVars = ['verb' => 'settings', 'plugin' => 'announcementfeedplugin', 'category' => 'generic', '_' => '1665743656980']; public $_basePath = '/ojs-3.3.0-13'; public $_requestPath = NULL; public $_isRestfulUrlsEnabled = FALSE; public $_isPathInfoEnabled = TRUE; public $_serverHost = 'localhost'; public $_protocol = 'http'; public $_isBot = NULL; public $_userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36' }, $args = ['verb' => 'settings', 'plugin' => 'announcementfeedplugin', 'category' => 'generic', '_' => '1665743656980'], $validate = *uninitialized*) D:\wamp64\www\ojs-3.3.0-13\lib\pkp\classes\core\PKPComponentRouter.inc.php:257
[14-Oct-2022 10:34:42 UTC] PHP   6. PluginGridHandler->manage($args = ['verb' => 'settings', 'plugin' => 'announcementfeedplugin', 'category' => 'generic', '_' => '1665743656980'], $request = class Request { public $_router = class PKPComponentRouter { public $_component = 'grid.settings.plugins.SettingsPluginGridHandler'; public $_op = 'manage'; public $_rpcServiceEndpointParts = [...]; public $_rpcServiceEndpoint = [...]; public $_application = class Application { ... }; public $_dispatcher = class Dispatcher { ... }; public $_contextDepth = 1; public $_contextList = [...]; public $_flippedContextList = [...]; public $_contextPaths = [...]; public $_contexts = [...]; public $_handler = class SettingsPluginGridHandler { ... }; public $_indexUrl = 'http://localhost/ojs-3.3.0-13/index.php' }; public $_dispatcher = class Dispatcher { public $_application = class Application { ... }; public $_routerNames = [...]; public $_routerInstances = [...]; public $_router = class PKPComponentRouter { ... }; public $_requestCallbackHack = NULL }; public $_requestVars = ['verb' => 'settings', 'plugin' => 'announcementfeedplugin', 'category' => 'generic', '_' => '1665743656980']; public $_basePath = '/ojs-3.3.0-13'; public $_requestPath = NULL; public $_isRestfulUrlsEnabled = FALSE; public $_isPathInfoEnabled = TRUE; public $_serverHost = 'localhost'; public $_protocol = 'http'; public $_isBot = NULL; public $_userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36' }) D:\wamp64\www\ojs-3.3.0-13\lib\pkp\classes\core\PKPRouter.inc.php:395
[14-Oct-2022 10:34:42 UTC] PHP   7. AnnouncementFeedPlugin->manage($args = ['verb' => 'settings', 'plugin' => 'announcementfeedplugin', 'category' => 'generic', '_' => '1665743656980'], $request = class Request { public $_router = class PKPComponentRouter { public $_component = 'grid.settings.plugins.SettingsPluginGridHandler'; public $_op = 'manage'; public $_rpcServiceEndpointParts = [...]; public $_rpcServiceEndpoint = [...]; public $_application = class Application { ... }; public $_dispatcher = class Dispatcher { ... }; public $_contextDepth = 1; public $_contextList = [...]; public $_flippedContextList = [...]; public $_contextPaths = [...]; public $_contexts = [...]; public $_handler = class SettingsPluginGridHandler { ... }; public $_indexUrl = 'http://localhost/ojs-3.3.0-13/index.php' }; public $_dispatcher = class Dispatcher { public $_application = class Application { ... }; public $_routerNames = [...]; public $_routerInstances = [...]; public $_router = class PKPComponentRouter { ... }; public $_requestCallbackHack = NULL }; public $_requestVars = ['verb' => 'settings', 'plugin' => 'announcementfeedplugin', 'category' => 'generic', '_' => '1665743656980']; public $_basePath = '/ojs-3.3.0-13'; public $_requestPath = NULL; public $_isRestfulUrlsEnabled = FALSE; public $_isPathInfoEnabled = TRUE; public $_serverHost = 'localhost'; public $_protocol = 'http'; public $_isBot = NULL; public $_userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36' }) D:\wamp64\www\ojs-3.3.0-13\lib\pkp\classes\controllers\grid\plugins\PluginGridHandler.inc.php:236
[14-Oct-2022 10:34:42 UTC] PHP   8. Plugin->import($class = 'AnnouncementFeedSettingsForm') D:\wamp64\www\ojs-3.3.0-13\plugins\generic\announcementFeed\AnnouncementFeedPlugin.inc.php:138

Hi @shantanusingh

I recommend sticking with PHP 7.4 for now.

Best
Jason

Hi @shantanusingh,

I’ve filed and resolved this issue here:

It’s fine to use PHP8.0 with OJS 3.3.0-x – this is a small issue affecting the announcement feed plugin, and it’ll be resolved in the next release.

Thanks,
Alec Smecher
Public Knowledge Project Team

1 Like

Thanks for Solution.