From f2760f1e19a97a8329b2354754a544f09fc126b2 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Mon, 28 Jun 2004 17:46:54 +0000 Subject: [PATCH] Moved credits stuff from Skin.php to a separate module. Added a "credits" 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 | 129 +++++++++++++++++++++++++++++++++++++++++ includes/Skin.php | 90 ++-------------------------- index.php | 4 ++ languages/Language.php | 5 ++ 4 files changed, 144 insertions(+), 84 deletions(-) create mode 100644 includes/Credits.php diff --git a/includes/Credits.php b/includes/Credits.php new file mode 100644 index 0000000000..18558bcda3 --- /dev/null +++ b/includes/Credits.php @@ -0,0 +1,129 @@ +. + * + * 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); +} + +?> diff --git a/includes/Skin.php b/includes/Skin.php index 37d6d479e4..f9b95830ce 100644 --- a/includes/Skin.php +++ b/includes/Skin.php @@ -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() { diff --git a/index.php b/index.php index 9eb5e29f5d..5adee3815f 100644 --- 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() ) { diff --git a/languages/Language.php b/languages/Language.php index d88b9b5aca..98d89aa742 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -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. -- 2.20.1