* Use WikiPage instead of Article in Skin and SkinTemplate
authorAlexandre Emsenhuber <ialex@users.mediawiki.org>
Sun, 27 Nov 2011 09:39:24 +0000 (09:39 +0000)
committerAlexandre Emsenhuber <ialex@users.mediawiki.org>
Sun, 27 Nov 2011 09:39:24 +0000 (09:39 +0000)
* 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)

includes/Action.php
includes/Skin.php
includes/SkinTemplate.php

index 951c74a..09d590a 100644 (file)
@@ -27,7 +27,7 @@ abstract class Action {
 
        /**
         * Page on which we're performing the action
-        * @var Article
+        * @var Page
         */
        protected $page;
 
@@ -72,14 +72,15 @@ abstract class Action {
        /**
         * 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;
@@ -183,10 +184,12 @@ abstract class Action {
        /**
         * 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;
        }
 
        /**
index dc697a3..5d0f877 100644 (file)
@@ -790,14 +790,14 @@ abstract class Skin extends ContextSource {
        /**
         * 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 ) {
index 2eb0a77..c211e04 100644 (file)
@@ -329,9 +329,9 @@ class SkinTemplate extends Skin {
                $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() );
                                        }
@@ -351,9 +351,9 @@ class SkinTemplate extends Skin {
                                }
 
                                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() );