* the action is disabled, or null if it's not recognised
* @param string $action
* @param array $overrides
- * @return bool|null|string|callable
+ * @return bool|null|string|callable|Action
*/
final private static function getClass( $action, array $overrides ) {
global $wgActions;
$classOrCallable = self::getClass( $action, $page->getActionOverrides() );
if ( is_string( $classOrCallable ) ) {
+ if ( !class_exists( $classOrCallable ) ) {
+ return false;
+ }
$obj = new $classOrCallable( $page, $context );
return $obj;
}
// Trying to get a WikiPage for NS_SPECIAL etc. will result
// in WikiPage::factory throwing "Invalid or virtual namespace -1 given."
// For SpecialPages et al, default to action=view.
- if ( !$context->canUseWikiPage() ) {
+ if ( $actionName === '' || !$context->canUseWikiPage() ) {
return 'view';
}