From c985f728005cf80bf2d3f58312bc1b9cf0f5e289 Mon Sep 17 00:00:00 2001 From: Alexandre Emsenhuber Date: Mon, 18 Aug 2008 19:21:55 +0000 Subject: [PATCH] Tweaks for Credits and Metadata: * Put all functions into classed so that they can be autoloaded * Marked all private methods as protected * Article::getContributors() now returns UserArrayFromResult object --- includes/Article.php | 11 +- includes/Credits.php | 300 ++++++++++++---------- includes/Metadata.php | 528 +++++++++++++++++--------------------- includes/Skin.php | 9 +- includes/SkinTemplate.php | 7 +- includes/Wiki.php | 11 +- 6 files changed, 415 insertions(+), 451 deletions(-) diff --git a/includes/Article.php b/includes/Article.php index f23b12802f..7e2b6b7c1d 100644 --- a/includes/Article.php +++ b/includes/Article.php @@ -660,7 +660,7 @@ class Article { $user = $this->getUser(); $pageId = $this->getId(); - $sql = "SELECT rev_user, rev_user_text, user_real_name, MAX(rev_timestamp) as timestamp + $sql = "SELECT {$userTable}.*, MAX(rev_timestamp) as timestamp FROM $revTable LEFT JOIN $userTable ON rev_user = user_id WHERE rev_page = $pageId AND rev_user != $user @@ -672,14 +672,9 @@ class Article { $sql .= ' '. $this->getSelectOptions(); - $res = $dbr->query($sql, __METHOD__); + $res = $dbr->query($sql, __METHOD__ ); - while ( $line = $dbr->fetchObject( $res ) ) { - $contribs[] = array($line->rev_user, $line->rev_user_text, $line->user_real_name); - } - - $dbr->freeResult($res); - return $contribs; + return new UserArrayFromResult( $res ); } /** diff --git a/includes/Credits.php b/includes/Credits.php index 65931c4bba..ae9377f27f 100644 --- a/includes/Credits.php +++ b/includes/Credits.php @@ -20,167 +20,187 @@ * @author */ -/** - * 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); - } - - $wgOut->addHTML( $s ); - - wfProfileOut( $fname ); -} - -function getCredits($article, $cnt, $showIfMax=true) { - $fname = 'getCredits'; - wfProfileIn( $fname ); - $s = ''; - - if (isset($cnt) && $cnt != 0) { - $s = getAuthorCredits($article); - if ($cnt > 1 || $cnt < 0) { - $s .= ' ' . getContributorCredits($article, $cnt - 1, $showIfMax); +class Credits { + + /** + * This is largely cadged from PageHistory::history + * @param $article Article object + */ + public static function showPage( Article $article ) { + global $wgOut; + + wfProfileIn( __METHOD__ ); + + $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 = self::getCredits($article, -1 ); } + + $wgOut->addHTML( $s ); + + wfProfileOut( __METHOD__ ); } - wfProfileOut( $fname ); - return $s; -} - -/** - * - */ -function getAuthorCredits($article) { - global $wgLang, $wgAllowRealName; - - $last_author = $article->getUser(); - - if ($last_author == 0) { - $author_credit = wfMsg('anonymous'); - } else { - if($wgAllowRealName) { $real_name = User::whoIsReal($last_author); } - $user_name = User::whoIs($last_author); - - if (!empty($real_name)) { - $author_credit = creditLink($user_name, $real_name); - } else { - $author_credit = wfMsg('siteuser', creditLink($user_name)); + /** + * Get a list of contributors of $article + * @param $article Article object + * @param $cnt Int: maximum list of contributors to show + * @param $showIfMax Bool: whether to contributors if there more than $cnt + * @return String: html + */ + public static function getCredits($article, $cnt, $showIfMax=true) { + wfProfileIn( __METHOD__ ); + $s = ''; + + if( isset( $cnt ) && $cnt != 0 ){ + $s = self::getAuthor( $article ); + if ($cnt > 1 || $cnt < 0) { + $s .= ' ' . self::getContributors( $article, $cnt - 1, $showIfMax ); + } } - } - $timestamp = $article->getTimestamp(); - if ($timestamp) { - $d = $wgLang->date($article->getTimestamp(), true); - $t = $wgLang->time($article->getTimestamp(), true); - } else { - $d = ''; - $t = ''; + wfProfileOut( __METHOD__ ); + return $s; } - return wfMsg('lastmodifiedatby', $d, $t, $author_credit); -} - -/** - * - */ -function getContributorCredits($article, $cnt, $showIfMax) { - - global $wgLang, $wgAllowRealName; - $contributors = $article->getContributors(); + /** + * Get the last author with the last modification time + * @param $article Article object + */ + protected static function getAuthor( Article $article ){ + global $wgLang, $wgAllowRealName; - $others_link = ''; + $user = User::newFromId( $article->getUser() ); - # Hmm... too many to fit! - - if ($cnt > 0 && count($contributors) > $cnt) { - $others_link = creditOthersLink($article); - if (!$showIfMax) { - return wfMsg('othercontribs', $others_link); + $timestamp = $article->getTimestamp(); + if( $timestamp ){ + $d = $wgLang->date( $article->getTimestamp(), true ); + $t = $wgLang->time( $article->getTimestamp(), true ); } else { - $contributors = array_slice($contributors, 0, $cnt); + $d = ''; + $t = ''; } + return wfMsg( 'lastmodifiedatby', $d, $t, self::userLink( $user ) ); } - $real_names = array(); - $user_names = array(); - - $anon = ''; - - # Sift for real versus user names - - foreach ($contributors as $user_parts) { - if ($user_parts[0] != 0) { - if ($wgAllowRealName && !empty($user_parts[2])) { - $real_names[] = creditLink($user_parts[1], $user_parts[2]); + /** + * Get a list of contributors of $article + * @param $article Article object + * @param $cnt Int: maximum list of contributors to show + * @param $showIfMax Bool: whether to contributors if there more than $cnt + * @return String: html + */ + protected static function getContributors( Article $article, $cnt, $showIfMax ) { + global $wgLang, $wgAllowRealName; + + $contributors = $article->getContributors(); + + $others_link = ''; + + # Hmm... too many to fit! + if( $cnt > 0 && $contributors->count() > $cnt ){ + $others_link = self::othersLink( $article ); + if( !$showIfMax ) + return wfMsg( 'othercontribs', $others_link ); + } + + $real_names = array(); + $user_names = array(); + $anon = 0; + + # Sift for real versus user names + foreach( $contributors as $user ) { + $cnt--; + if( $user->isLoggedIn() ){ + $link = self::link( $user ); + if( $wgAllowRealName && $user->getRealName() ) + $real_names[] = $link; + else + $user_names[] = $link; } else { - $user_names[] = creditLink($user_parts[1]); + $anon++; + } + if( $cnt == 0 ) break; + } + + # Two strings: real names, and user names + $real = $wgLang->listToText( $real_names ); + $user = $wgLang->listToText( $user_names ); + if( $anon ) + $anon = wfMsgExt( 'anonymous', array( 'parseinline' ), $anon ); + + # "ThisSite user(s) A, B and C" + if( !empty( $user ) ){ + $user = wfMsgExt( 'siteusers', array( 'parsemag' ), $user, count( $user_names ) ); + } + + # This is the big list, all mooshed together. We sift for blank strings + $fulllist = array(); + foreach( array( $real, $user, $anon, $others_link ) as $s ){ + if( !empty( $s ) ){ + array_push( $fulllist, $s ); } - } else { - $anon = wfMsg('anonymous'); } - } - - # Two strings: real names, and user names - - $real = $wgLang->listToText($real_names); - $user = $wgLang->listToText($user_names); - # "ThisSite user(s) A, B and C" + # Make the list into text... + $creds = $wgLang->listToText( $fulllist ); - if (!empty($user)) { - $user = wfMsgExt('siteusers', array( 'parsemag' ), array( $user, count($contributors) ) ); + # "Based on work by ..." + return empty( $creds ) ? '' : wfMsg( 'othercontribs', $creds ); } - # This is the big list, all mooshed together. We sift for blank strings - - $fulllist = array(); + /** + * Get a link to $user_name page + * @param $user User object + * @return String: html + */ + protected static function link( User $user ) { + global $wgUser, $wgAllowRealName; + if( $wgAllowRealName ) + $real = $user->getRealName(); + else + $real = false; + + $skin = $wgUser->getSkin(); + $page = $user->getUserPage(); + + return $skin->link( $page, htmlspecialchars( $real ? $real : $user->getName() ) ); + } - foreach (array($real, $user, $anon, $others_link) as $s) { - if (!empty($s)) { - array_push($fulllist, $s); + /** + * Get a link to $user_name page + * @param $user_name String: user name + * @param $linkText String: optional display + * @return String: html + */ + protected static function userLink( User $user ) { + global $wgUser, $wgAllowRealName; + if( $user->isAnon() ){ + return wfMsgExt( 'anonymous', array( 'parseinline' ), 1 ); + } else { + $link = self::link( $user ); + if( $wgAllowRealName && $user->getRealName() ) + return $link; + else + return wfMsgExt( 'siteuser', array( 'parseinline', 'replaceafter' ), $link ); } } - # Make the list into text... - - $creds = $wgLang->listToText($fulllist); - - # "Based on work by ..." - - return (empty($creds)) ? '' : wfMsg('othercontribs', $creds); -} - -/** - * - */ -function creditLink($user_name, $link_text = '') { - global $wgUser, $wgContLang; - $skin = $wgUser->getSkin(); - return $skin->makeLink($wgContLang->getNsText(NS_USER) . ':' . $user_name, - htmlspecialchars( (empty($link_text)) ? $user_name : $link_text )); -} - -/** - * - */ -function creditOthersLink($article) { - global $wgUser; - $skin = $wgUser->getSkin(); - return $skin->makeKnownLink($article->mTitle->getPrefixedText(), wfMsg('others'), 'action=credits'); -} + /** + * Get a link to action=credits of $article page + * @param $article Article object + * @return String: html + */ + protected static function othersLink( Article $article ) { + global $wgUser; + $skin = $wgUser->getSkin(); + return $skin->link( $article->getTitle(), wfMsgHtml( 'others' ), array(), array( 'action' => 'credits' ), array( 'known' ) ); + } +} \ No newline at end of file diff --git a/includes/Metadata.php b/includes/Metadata.php index a543c73c9e..4a0b003dc8 100644 --- a/includes/Metadata.php +++ b/includes/Metadata.php @@ -20,347 +20,299 @@ * @author Evan Prodromou */ -/** - * TODO: Perhaps make this file into a Metadata class, with static methods (declared - * as private where indicated), to move these functions out of the global namespace? - */ -define('RDF_TYPE_PREFS', "application/rdf+xml,text/xml;q=0.7,application/xml;q=0.5,text/rdf;q=0.1"); - -function wfDublinCoreRdf($article) { - - $url = dcReallyFullUrl($article->mTitle); - - if (rdfSetup()) { - dcPrologue($url); - dcBasics($article); - dcEpilogue(); +abstract class RdfMetaData { + const RDF_TYPE_PREFS = 'application/rdf+xml,text/xml;q=0.7,application/xml;q=0.5,text/rdf;q=0.1'; + + /** + * Constructor + * @param $article Article object + */ + public function __construct( Article $article ){ + $this->mArticle = $article; } -} -function wfCreativeCommonsRdf($article) { + public abstract function show(); - if (rdfSetup()) { - global $wgRightsUrl; + /** + * + */ + protected function setup() { + global $wgOut, $wgRequest; - $url = dcReallyFullUrl($article->mTitle); + $httpaccept = isset( $_SERVER['HTTP_ACCEPT'] ) ? $_SERVER['HTTP_ACCEPT'] : null; + $rdftype = wfNegotiateType( wfAcceptToPrefs( $httpaccept ), wfAcceptToPrefs( self::RDF_TYPE_PREFS ) ); - ccPrologue(); - ccSubPrologue('Work', $url); - dcBasics($article); - if (isset($wgRightsUrl)) { - $url = htmlspecialchars( $wgRightsUrl ); - print " \n"; + if( !$rdftype ){ + wfHttpError( 406, 'Not Acceptable', wfMsg( 'notacceptable' ) ); + return false; + } else { + $wgOut->disable(); + $wgRequest->response()->header( "Content-type: {$rdftype}; charset=utf-8" ); + $wgOut->sendCacheControl(); + return true; } + } - ccSubEpilogue('Work'); - - if (isset($wgRightsUrl)) { - $terms = ccGetTerms($wgRightsUrl); - if ($terms) { - ccSubPrologue('License', $wgRightsUrl); - ccLicense($terms); - ccSubEpilogue('License'); - } - } + /** + * + */ + protected function reallyFullUrl() { + return $this->mArticle->getTitle()->getFullURL(); } - ccEpilogue(); -} + protected function basics() { + global $wgContLanguageCode, $wgSitename; -/** - * @private - */ -function rdfSetup() { - global $wgOut, $_SERVER; + $this->element( 'title', $this->mArticle->mTitle->getText() ); + $this->pageOrString( 'publisher', wfMsg( 'aboutpage' ), $wgSitename ); + $this->element( 'language', $wgContLanguageCode ); + $this->element( 'type', 'Text' ); + $this->element( 'format', 'text/html' ); + $this->element( 'identifier', $this->reallyFullUrl() ); + $this->element( 'date', $this->date( $this->mArticle->getTimestamp() ) ); - $httpaccept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : null; + $lastEditor = User::newFromId( $this->mArticle->getUser() ); + $this->person( 'creator', $lastEditor ); - $rdftype = wfNegotiateType(wfAcceptToPrefs($httpaccept), wfAcceptToPrefs(RDF_TYPE_PREFS)); + foreach( $this->mArticle->getContributors() as $user ){ + $this->person( 'contributor', $user ); + } - if (!$rdftype) { - wfHttpError(406, "Not Acceptable", wfMsg("notacceptable")); - return false; - } else { - $wgOut->disable(); - header( "Content-type: {$rdftype}; charset=utf-8" ); - $wgOut->sendCacheControl(); - return true; + $this->rights(); } -} -/** - * @private - */ -function dcPrologue($url) { - global $wgOutputEncoding; + protected function element( $name, $value ) { + $value = htmlspecialchars( $value ); + print "\t\t{$value}\n"; + } - $url = htmlspecialchars( $url ); - print "<" . "?xml version=\"1.0\" encoding=\"{$wgOutputEncoding}\" ?" . "> + protected function date($timestamp) { + return substr($timestamp, 0, 4) . '-' + . substr($timestamp, 4, 2) . '-' + . substr($timestamp, 6, 2); + } - + protected function pageOrString( $name, $page, $str ){ + if( $page instanceof Title ) + $nt = $page; + else + $nt = Title::newFromText( $page ); - - - "; -} + if( !$nt || $nt->getArticleID() == 0 ){ + $this->element( $name, $str ); + } else { + $this->page( $name, $nt ); + } + } -/** - * @private - */ -function dcEpilogue() { - print " - - - "; -} + protected function page( $name, $title ){ + $this->url( $name, $title->getFullUrl() ); + } -/** - * @private - */ -function dcBasics($article) { - global $wgContLanguageCode, $wgSitename; - - dcElement('title', $article->mTitle->getText()); - dcPageOrString('publisher', wfMsg('aboutpage'), $wgSitename); - dcElement('language', $wgContLanguageCode); - dcElement('type', 'Text'); - dcElement('format', 'text/html'); - dcElement('identifier', dcReallyFullUrl($article->mTitle)); - dcElement('date', dcDate($article->getTimestamp())); - - $last_editor = $article->getUser(); - - if ($last_editor == 0) { - dcPerson('creator', 0); - } else { - dcPerson('creator', $last_editor, $article->getUserText(), - User::whoIsReal($last_editor)); + protected function url($name, $url) { + $url = htmlspecialchars( $url ); + print "\t\t\n"; } - $contributors = $article->getContributors(); + protected function person($name, User $user ){ + global $wgContLang; - foreach ($contributors as $user_parts) { - dcPerson('contributor', $user_parts[0], $user_parts[1], $user_parts[2]); + if( $user->isAnon() ){ + $this->element( $name, wfMsg( 'anonymous' ) ); + } else if( $real = $user->getRealName() ) { + $this->element( $name, $real ); + } else { + $this->pageOrString( $name, $user->getUserPage(), wfMsg( 'siteuser', $user->getName() ) ); + } } - dcRights(); -} + /** + * Takes an arg, for future enhancement with different rights for + * different pages. + */ + protected function rights() { + global $wgRightsPage, $wgRightsUrl, $wgRightsText; + + if( $wgRightsPage && ( $nt = Title::newFromText( $wgRightsPage ) ) + && ($nt->getArticleID() != 0)) { + $this->page('rights', $nt); + } else if( $wgRightsUrl ){ + $this->url('rights', $wgRightsUrl); + } else if( $wgRightsText ){ + $this->element( 'rights', $wgRightsText ); + } + } -/** - * @private - */ -function ccPrologue() { - global $wgOutputEncoding; + protected function getTerms( $url ){ + global $wgLicenseTerms; - echo "<" . "?xml version='1.0' encoding='{$wgOutputEncoding}' ?" . "> + if( $wgLicenseTerms ){ + return $wgLicenseTerms; + } else { + $known = $this->getKnownLicenses(); + if( isset( $known[$url] ) ) { + return $known[$url]; + } else { + return array(); + } + } + } - - "; -} + protected function getKnownLicenses() { + $ccLicenses = array('by', 'by-nd', 'by-nd-nc', 'by-nc', + 'by-nc-sa', 'by-sa'); + $ccVersions = array('1.0', '2.0'); + $knownLicenses = array(); + + foreach ($ccVersions as $version) { + foreach ($ccLicenses as $license) { + if( $version == '2.0' && substr( $license, 0, 2) != 'by' ) { + # 2.0 dropped the non-attribs licenses + continue; + } + $lurl = "http://creativecommons.org/licenses/{$license}/{$version}/"; + $knownLicenses[$lurl] = explode('-', $license); + $knownLicenses[$lurl][] = 're'; + $knownLicenses[$lurl][] = 'di'; + $knownLicenses[$lurl][] = 'no'; + if (!in_array('nd', $knownLicenses[$lurl])) { + $knownLicenses[$lurl][] = 'de'; + } + } + } -/** - * @private - */ -function ccSubPrologue($type, $url) { - $url = htmlspecialchars( $url ); - echo " \n"; -} + /* Handle the GPL and LGPL, too. */ -/** - * @private - */ -function ccSubEpilogue($type) { - echo " \n"; -} + $knownLicenses['http://creativecommons.org/licenses/GPL/2.0/'] = + array('de', 're', 'di', 'no', 'sa', 'sc'); + $knownLicenses['http://creativecommons.org/licenses/LGPL/2.1/'] = + array('de', 're', 'di', 'no', 'sa', 'sc'); + $knownLicenses['http://www.gnu.org/copyleft/fdl.html'] = + array('de', 're', 'di', 'no', 'sa', 'sc'); -/** - * @private - */ -function ccLicense($terms) { - - foreach ($terms as $term) { - switch ($term) { - case 're': - ccTerm('permits', 'Reproduction'); break; - case 'di': - ccTerm('permits', 'Distribution'); break; - case 'de': - ccTerm('permits', 'DerivativeWorks'); break; - case 'nc': - ccTerm('prohibits', 'CommercialUse'); break; - case 'no': - ccTerm('requires', 'Notice'); break; - case 'by': - ccTerm('requires', 'Attribution'); break; - case 'sa': - ccTerm('requires', 'ShareAlike'); break; - case 'sc': - ccTerm('requires', 'SourceCode'); break; - } + return $knownLicenses; } } -/** - * @private - */ -function ccTerm($term, $name) { - print " \n"; -} +class DublinCoreRdf extends RdfMetaData { -/** - * @private - */ -function ccEpilogue() { - echo "\n"; -} + public function show(){ + if( $this->setup() ){ + $this->prologue(); + $this->basics(); + $this->epilogue(); + } + } -/** - * @private - */ -function dcElement($name, $value) { - $value = htmlspecialchars( $value ); - print " {$value}\n"; -} + /** + * begin of the page + */ + protected function prologue() { + global $wgOutputEncoding; + + $url = htmlspecialchars( $this->reallyFullUrl() ); + print << + + + + +PROLOGUE; + } -/** - * @private - */ -function dcDate($timestamp) { - return substr($timestamp, 0, 4) . '-' - . substr($timestamp, 4, 2) . '-' - . substr($timestamp, 6, 2); + /** + * end of the page + */ + protected function epilogue() { + print << + +EPILOGUE; + } } -/** - * @private - */ -function dcReallyFullUrl($title) { - return $title->getFullURL(); -} +class CreativeCommonsRdf extends RdfMetaData { -/** - * @private - */ -function dcPageOrString($name, $page, $str) { - $nt = Title::newFromText($page); + public function show(){ + if( $this->setup() ){ + global $wgRightsUrl; - if (!$nt || $nt->getArticleID() == 0) { - dcElement($name, $str); - } else { - dcPage($name, $nt); - } -} + $url = $this->reallyFullUrl(); -/** - * @private - */ -function dcPage($name, $title) { - dcUrl($name, dcReallyFullUrl($title)); -} + $this->prologue(); + $this->subPrologue('Work', $url); -/** - * @private - */ -function dcUrl($name, $url) { - $url = htmlspecialchars( $url ); - print " \n"; -} + $this->basics(); + if( $wgRightsUrl ){ + $url = htmlspecialchars( $wgRightsUrl ); + print "\t\t\n"; + } -/** - * @private - */ -function dcPerson($name, $id, $user_name='', $user_real_name='') { - global $wgContLang; - - if ($id == 0) { - dcElement($name, wfMsg('anonymous')); - } else if ( !empty($user_real_name) ) { - dcElement($name, $user_real_name); - } else { - # XXX: This shouldn't happen. - if( empty( $user_name ) ) { - $user_name = User::whoIs($id); + $this->subEpilogue('Work'); + + if( $wgRightsUrl ){ + $terms = $this->getTerms( $wgRightsUrl ); + if( $terms ){ + $this->subPrologue( 'License', $wgRightsUrl ); + $this->license( $terms ); + $this->subEpilogue( 'License' ); + } + } } - dcPageOrString($name, $wgContLang->getNsText(NS_USER) . ':' . $user_name, wfMsg('siteuser', $user_name)); + + $this->epilogue(); } -} -/** - * Takes an arg, for future enhancement with different rights for - * different pages. - * @private - */ -function dcRights() { - - global $wgRightsPage, $wgRightsUrl, $wgRightsText; - - if (isset($wgRightsPage) && - ($nt = Title::newFromText($wgRightsPage)) - && ($nt->getArticleID() != 0)) { - dcPage('rights', $nt); - } else if (isset($wgRightsUrl)) { - dcUrl('rights', $wgRightsUrl); - } else if (isset($wgRightsText)) { - dcElement('rights', $wgRightsText); + protected function prologue() { + global $wgOutputEncoding; + echo << + + +PROLOGUE; } -} -/** - * @private - */ -function ccGetTerms($url) { - global $wgLicenseTerms; - - if (isset($wgLicenseTerms)) { - return $wgLicenseTerms; - } else { - $known = getKnownLicenses(); - if( isset( $known[$url] ) ) { - return $known[$url]; - } else { - return array(); - } + protected function subPrologue( $type, $url ){ + $url = htmlspecialchars( $url ); + echo "\t\n"; } -} -/** - * @private - */ -function getKnownLicenses() { - - $ccLicenses = array('by', 'by-nd', 'by-nd-nc', 'by-nc', - 'by-nc-sa', 'by-sa'); - $ccVersions = array('1.0', '2.0'); - $knownLicenses = array(); - - foreach ($ccVersions as $version) { - foreach ($ccLicenses as $license) { - if( $version == '2.0' && substr( $license, 0, 2) != 'by' ) { - # 2.0 dropped the non-attribs licenses - continue; - } - $lurl = "http://creativecommons.org/licenses/{$license}/{$version}/"; - $knownLicenses[$lurl] = explode('-', $license); - $knownLicenses[$lurl][] = 're'; - $knownLicenses[$lurl][] = 'di'; - $knownLicenses[$lurl][] = 'no'; - if (!in_array('nd', $knownLicenses[$lurl])) { - $knownLicenses[$lurl][] = 'de'; + protected function subEpilogue($type) { + echo "\t\n"; + } + + protected function license($terms) { + + foreach( $terms as $term ){ + switch( $term ) { + case 're': + $this->term('permits', 'Reproduction'); break; + case 'di': + $this->term('permits', 'Distribution'); break; + case 'de': + $this->term('permits', 'DerivativeWorks'); break; + case 'nc': + $this->term('prohibits', 'CommercialUse'); break; + case 'no': + $this->term('requires', 'Notice'); break; + case 'by': + $this->term('requires', 'Attribution'); break; + case 'sa': + $this->term('requires', 'ShareAlike'); break; + case 'sc': + $this->term('requires', 'SourceCode'); break; } } } - /* Handle the GPL and LGPL, too. */ - - $knownLicenses['http://creativecommons.org/licenses/GPL/2.0/'] = - array('de', 're', 'di', 'no', 'sa', 'sc'); - $knownLicenses['http://creativecommons.org/licenses/LGPL/2.1/'] = - array('de', 're', 'di', 'no', 'sa', 'sc'); - $knownLicenses['http://www.gnu.org/copyleft/fdl.html'] = - array('de', 're', 'di', 'no', 'sa', 'sc'); + protected function term( $term, $name ){ + print "\t\t\n"; + } - return $knownLicenses; -} + protected function epilogue() { + echo "\n"; + } +} \ No newline at end of file diff --git a/includes/Skin.php b/includes/Skin.php index c9c674d06f..835062bbfc 100644 --- a/includes/Skin.php +++ b/includes/Skin.php @@ -1214,14 +1214,13 @@ END; } } - if (isset($wgMaxCredits) && $wgMaxCredits != 0) { - require_once('Credits.php'); - $s .= ' ' . getCredits($wgArticle, $wgMaxCredits, $wgShowCreditsIfMax); + if( $wgMaxCredits != 0 ){ + $s .= ' ' . Credits::getCredits( $wgArticle, $wgMaxCredits, $wgShowCreditsIfMax ); } else { - $s .= $this->lastModified(); + $s .= $this->lastModified(); } - if ($wgPageShowWatchingUsers && $wgUser->getOption( 'shownumberswatching' )) { + if( $wgPageShowWatchingUsers && $wgUser->getOption( 'shownumberswatching' ) ) { $dbr = wfGetDB( DB_SLAVE ); $watchlist = $dbr->tableName( 'watchlist' ); $sql = "SELECT COUNT(*) AS n FROM $watchlist diff --git a/includes/SkinTemplate.php b/includes/SkinTemplate.php index 53f99a4847..0d63295b08 100644 --- a/includes/SkinTemplate.php +++ b/includes/SkinTemplate.php @@ -370,11 +370,10 @@ class SkinTemplate extends Skin { $this->credits = false; - if (isset($wgMaxCredits) && $wgMaxCredits != 0) { - require_once("Credits.php"); - $this->credits = getCredits($wgArticle, $wgMaxCredits, $wgShowCreditsIfMax); + if( $wgMaxCredits != 0 ){ + $this->credits = Credits::getCredits( $wgArticle, $wgMaxCredits, $wgShowCreditsIfMax ); } else { - $tpl->set('lastmod', $this->lastModified()); + $tpl->set( 'lastmod', $this->lastModified() ); } $tpl->setRef( 'credits', $this->credits ); diff --git a/includes/Wiki.php b/includes/Wiki.php index b8d86b2dd0..3ef9681eae 100644 --- a/includes/Wiki.php +++ b/includes/Wiki.php @@ -458,21 +458,20 @@ class MediaWiki { if( !$this->getVal( 'EnableDublinCoreRdf' ) ) { wfHttpError( 403, 'Forbidden', wfMsg( 'nodublincore' ) ); } else { - require_once( 'includes/Metadata.php' ); - wfDublinCoreRdf( $article ); + $rdf = new DublinCoreRdf( $article ); + $rdf->show(); } break; case 'creativecommons': if( !$this->getVal( 'EnableCreativeCommonsRdf' ) ) { wfHttpError( 403, 'Forbidden', wfMsg( 'nocreativecommons' ) ); } else { - require_once( 'includes/Metadata.php' ); - wfCreativeCommonsRdf( $article ); + $rdf = new CreativeCommonsRdf( $article ); + $rdf->show(); } break; case 'credits': - require_once( 'includes/Credits.php' ); - showCreditsPage( $article ); + Credits::showPage( $article ); break; case 'submit': if( session_id() == '' ) { -- 2.20.1