Moved credits stuff from Skin.php to a separate module. Added a "credits"
authorEvan Prodromou <evanprodromou@users.mediawiki.org>
Mon, 28 Jun 2004 17:46:54 +0000 (17:46 +0000)
committerEvan Prodromou <evanprodromou@users.mediawiki.org>
Mon, 28 Jun 2004 17:46:54 +0000 (17:46 +0000)
action, which shows credits on their own page. Some Language strings to
support the separate credits page.

TODO: link user pages in credits, limit credits.

includes/Credits.php [new file with mode: 0644]
includes/Skin.php
index.php
languages/Language.php

diff --git a/includes/Credits.php b/includes/Credits.php
new file mode 100644 (file)
index 0000000..18558bc
--- /dev/null
@@ -0,0 +1,129 @@
+<?php
+
+/* Credits.php -- formats credits for articles
+ * Copyright 2004, Evan Prodromou <evan@wikitravel.org>.
+ * 
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+/* This is largely cadged from PageHistory::history */
+
+function showCreditsPage($article)
+{
+    global $wgOut;
+
+    $fname = "showCreditsPage";
+    
+    wfProfileIn( $fname );
+
+    $wgOut->setPageTitle( $article->mTitle->getPrefixedText() );
+    $wgOut->setSubtitle( wfMsg( "creditspage" ) );
+    $wgOut->setArticleFlag( false );
+    $wgOut->setArticleRelated( true );
+    $wgOut->setRobotpolicy( "noindex,nofollow" );
+
+    if( $article->mTitle->getArticleID() == 0 ) {
+       $s = wfMsg( "nocredits" );
+    } else {
+       $s = getCredits($article, -1);
+    }
+
+    wfDebug("Credits: '$s'\n");
+    
+    $wgOut->addHTML( $s );
+    
+    wfProfileOut( $fname );
+}
+
+function getCredits($article, $cnt) {
+    
+    $s = '';
+    
+    if (isset($cnt) && $cnt != 0) {
+       $s = getAuthorCredits($article);
+       if ($cnt > 1 || $cnt < 0) {
+           $s .= ' ' . getContributorCredits($article, $cnt - 1);
+       }
+    }
+    
+    return $s;
+}
+
+function getAuthorCredits($article) {
+    
+    global $wgLang;
+    
+    $last_author = $article->getUser();
+           
+    if ($last_author == 0) {
+       $author_credit = wfMsg('anonymous');
+    } else {
+       $real_name = User::whoIsReal($last_author);
+       if (!empty($real_name)) {
+           $author_credit = $real_name;
+       } else {
+           $author_credit = wfMsg('siteuser', User::whoIs($last_author));
+       }
+    }
+    
+    $timestamp = $article->getTimestamp();
+    if ($timestamp) {
+       $d = $wgLang->timeanddate($article->getTimestamp(), true);
+    } else {
+       $d = '';
+    }
+    return wfMsg('lastmodifiedby', $d, $author_credit);
+}
+
+function getContributorCredits($article, $cnt) {
+           
+    global $wgLang, $wgAllowRealName;
+    
+    $contributors = $article->getContributors($cnt);
+    
+    $real_names = array();
+    $user_names = array();
+
+    # Sift for real versus user names
+    
+    foreach ($contributors as $user_id => $user_parts) {
+       if ($user_id != 0) {
+           if ($wgAllowRealName && !empty($user_parts[1])) {
+               $real_names[$user_id] = $user_parts[1];
+           } else {
+               $user_names[$user_id] = $user_parts[0];
+           }
+       }
+    }
+    
+    $real = $wgLang->listToText(array_values($real_names));
+    $user = $wgLang->listToText(array_values($user_names));
+    
+    if (!empty($user)) {
+       $user = wfMsg('siteusers', $user);
+    }
+    
+    if ($contributors[0] && $contributors[0][0] > 0) {
+       $anon = wfMsg('anonymous');
+    } else {
+       $anon = '';
+    }
+    
+    $creds = $wgLang->listToText(array($real, $user, $anon));
+    
+    return wfMsg('othercontribs', $creds);
+}
+
+?>
index 37d6d47..f9b9583 100644 (file)
@@ -768,7 +768,7 @@ class Skin {
        function pageStats()
        {
                global $wgOut, $wgLang, $wgArticle, $wgRequest;
-               global $wgDisableCounters;
+               global $wgDisableCounters, $wgMaxCredits;
 
                extract( $wgRequest->getValues( 'oldid', 'diff' ) );
                if ( ! $wgOut->isArticle() ) { return ''; }
@@ -783,92 +783,14 @@ class Skin {
                        }
                }
 
-               $s .= ' ' . $this->getCredits();
-           
-               return $s . ' ' .  $this->getCopyright();
-       }
-
-        function getCredits() {
-              global $wgMaxCredits;
-              
-              $s = '';
-           
-              if (!isset($wgMaxCredits) || $wgMaxCredits == 0) {
-                       $s = $this->lastModified();
-              } else {
-                       $s = $this->getAuthorCredits();
-                       if ($wgMaxCredits > 1) {
-                           $s .= ' ' . $this->getContributorCredits();
-                       }
-              }
-           
-              return $s;
-       }
-
-        function getAuthorCredits() {
-               global $wgLang, $wgArticle;
-
-               $last_author = $wgArticle->getUser();
-           
-               if ($last_author == 0) {
-                   $author_credit = wfMsg('anonymous');
+               if (isset($wgMaxCredits) && $wgMaxCredits > 0) {
+                   require_once("Credits.php");
+                   $s .= ' ' . getCredits($wgArticle, $wgMaxCredits);
                } else {
-                   $real_name = User::whoIsReal($last_author);
-                   if (!empty($real_name)) {
-                       $author_credit = $real_name;
-                   } else {
-                       $author_credit = wfMsg('siteuser', User::whoIs($last_author));
-                   }
+                   $s .= $this->lastModified();
                }
            
-               $timestamp = $wgArticle->getTimestamp();
-               if ( $timestamp ) {
-                       $d = $wgLang->timeanddate( $wgArticle->getTimestamp(), true );
-               } else {
-                       $d = '';
-               }
-               return wfMsg('lastmodifiedby', $d, $author_credit);
-       }
-
-        function getContributorCredits() {
-           
-               global $wgArticle, $wgMaxCredits, $wgLang;
-
-                # don't count last editor
-
-               $contributors = $wgArticle->getContributors($wgMaxCredits - 1);
-           
-               $real_names = array();
-               $user_names = array();
-
-               # Sift for real versus user names
-               
-               foreach ($contributors as $user_id => $user_parts) {
-                   if ($user_id != 0) {
-                       if (!empty($user_parts[1])) {
-                           $real_names[$user_id] = $user_parts[1];
-                       } else {
-                           $user_names[$user_id] = $user_parts[0];
-                       }
-                   }
-               }
-           
-                $real = $wgLang->listToText(array_values($real_names));
-               $user = $wgLang->listToText(array_values($user_names));
-
-               if (!empty($user)) {
-                   $user = wfMsg('siteusers', $user);
-               }
-           
-               if ($contributors[0] && $contributors[0][0] > 0) {
-                   $anon = wfMsg('anonymous');
-               } else {
-                   $anon = '';
-               }
-           
-               $creds = $wgLang->listToText(array($real, $user, $anon));
-           
-               return wfMsg('othercontribs', $creds);
+               return $s . ' ' .  $this->getCopyright();
        }
     
        function getCopyright() {
index 9eb5e29..5adee38 100644 (file)
--- a/index.php
+++ b/index.php
@@ -129,6 +129,10 @@ if ( $search = $wgRequest->getText( 'search' ) ) {
                                wfCreativeCommonsRdf( $wgArticle );
                        }
                        break;
+               case "credits":
+                       require_once( "includes/Credits.php" );
+                       showCreditsPage( $wgArticle );
+                       break;
                case "edit":
                case "submit":
                        if( !$wgCommandLineMode && !$wgRequest->checkSessionCookie() ) {
index d88b9b5..98d89aa 100644 (file)
@@ -1292,6 +1292,11 @@ amusement.',
 'and' => 'and',
 'othercontribs' => "Based on work by $1.",
 'siteusers' => "$wgSitename user(s) $1",
+'creditspage' => 'Page credits',
+'nocredits' => 'There is no credits info available for this page.',
+
+# Spam protection
+
 'spamprotectiontitle' => 'Spam protection filter',
 'spamprotectiontext' => 'The page you wanted to save was blocked by the spam filter. This is probably caused by a link to an external site.