Mediawiki Вызов неопределенного метода SpecialPage::addPage()

Мне нужно использовать более старое расширение Mediawiki на нашем сайте, которое больше не поддерживается. Когда я активирую расширение, я получаю следующую ошибку: "Вызов неопределенного метода SpecialPage::addPage()". Насколько я узнал, это связано с тем, что в Mediawiki начиная с версии 1.25 они изменили способ, которым новый Special страницы созданы и зарегистрированы. Я не смог найти примеров, показывающих, как исправить код из более старого расширения, чтобы он мог работать в реальной версии MW.

Вот соответствующий код расширения, где SpecialPage создан и зарегистрирован.

  require_once( './includes/specialpage/SpecialPage.php' );
  $wgSpecialPages['Events'] = new SpecialPage ( 'Events' );

  $wgExtensionFunctions[] = 'efEventsExtn';
  $wgExtensionCredits['specialpage'][] = array( 
  'name' => 'Events', 
  'author' => 'Barrylb',
  'description' => 'Adds [[Special:Events|a special page]] for viewing events',
  'url' => 'http://www.mediawiki.org/wiki/Extension:Calendar_%28Barrylb%29'
  );


  function efEventsExtn() {
    $wgamMessages = array();
    SpecialPage::addPage( new EventsExtn() );
    $wgamMessages = array( 'events' => 'Events' , 'events-header' => '');
  }

  class EventsExtn extends IncludableSpecialPage {

    function EventsExtn() {
      SpecialPage::SpecialPage( 'Events', '', true, false, 'default', true );
    }

... (Кажется, остальная часть кода работает правильно)

Может кто знает как это исправить?

1 ответ

Просто $wgSpecialPages должно быть достаточно:

$wgSpecialPages['Events'] = 'EventsExtn';

Я бы не доверял расширению, которое использует функцию, которая устарела в MediaWiki 1.7.

Другие вопросы по тегам