* Added $context parameter to Action::factory() to allow callers passing a WikiPage object in addition to Article (otherwise this would throw a fatal error in getContext() since WikiPage::getContext() does not exist)
/**
* Page on which we're performing the action
- * @var Article
+ * @var Page
*/
protected $page;
/**
* Get an appropriate Action subclass for the given action
* @param $action String
- * @param $page Article
+ * @param $page Page
+ * @param $context IContextSource
* @return Action|false|null false if the action is disabled, null
* if it is not recognised
*/
- public final static function factory( $action, Page $page ) {
+ public final static function factory( $action, Page $page, IContextSource $context = null ) {
$class = self::getClass( $action, $page->getActionOverrides() );
if ( $class ) {
- $obj = new $class( $page );
+ $obj = new $class( $page, $context );
return $obj;
}
return $class;
/**
* Protected constructor: use Action::factory( $action, $page ) to actually build
* these things in the real world
- * @param Page $page
+ * @param $page Page
+ * @param $context IContextSource
*/
- protected function __construct( Page $page ) {
+ protected function __construct( Page $page, IContextSource $context = null ) {
$this->page = $page;
+ $this->context = $context;
}
/**
/**
* Get the timestamp of the latest revision, formatted in user language
*
- * @param $article Article object. Used if we're working with the current revision
+ * @param $page WikiPage object. Used if we're working with the current revision
* @return String
*/
- protected function lastModified( $article ) {
+ protected function lastModified( $page ) {
if ( !$this->isRevisionCurrent() ) {
$timestamp = Revision::getTimestampFromId( $this->getTitle(), $this->getRevisionId() );
} else {
- $timestamp = $article->getTimestamp();
+ $timestamp = $page->getTimestamp();
}
if ( $timestamp ) {
$tpl->set( 'numberofwatchingusers', false );
if ( $out->isArticle() && $this->getTitle()->exists() ) {
if ( $this->isRevisionCurrent() ) {
- $article = new Article( $this->getTitle(), 0 );
+ $page = WikiPage::factory( $this->getTitle() );
if ( !$wgDisableCounters ) {
- $viewcount = $article->getCount();
+ $viewcount = $page->getCount();
if ( $viewcount ) {
$tpl->set( 'viewcount', $this->msg( 'viewcount' )->numParams( $viewcount )->parse() );
}
}
if ( $wgMaxCredits != 0 ) {
- $tpl->set( 'credits', Action::factory( 'credits', $article )->getCredits( $wgMaxCredits, $wgShowCreditsIfMax ) );
+ $tpl->set( 'credits', Action::factory( 'credits', $page, $this->getContext() )->getCredits( $wgMaxCredits, $wgShowCreditsIfMax ) );
} else {
- $tpl->set( 'lastmod', $this->lastModified( $article ) );
+ $tpl->set( 'lastmod', $this->lastModified( $page ) );
}
}
$tpl->set( 'copyright', $this->getCopyright() );