summaryrefslogtreecommitdiff
path: root/includes/specials/SpecialTags.php
diff options
context:
space:
mode:
authorPierre Schmitz <pierre@archlinux.de>2009-06-10 13:00:47 +0200
committerPierre Schmitz <pierre@archlinux.de>2009-06-10 13:00:47 +0200
commit72e90545454c0e014318fa3c81658e035aac58c1 (patch)
tree9212e3f46868989c4d57ae9a5c8a1a80e4dc0702 /includes/specials/SpecialTags.php
parent565a0ccc371ec1a2a0e9b39487cbac18e6f60e25 (diff)
applying patch to version 1.15.0
Diffstat (limited to 'includes/specials/SpecialTags.php')
-rw-r--r--includes/specials/SpecialTags.php73
1 files changed, 73 insertions, 0 deletions
diff --git a/includes/specials/SpecialTags.php b/includes/specials/SpecialTags.php
new file mode 100644
index 00000000..981eb2ff
--- /dev/null
+++ b/includes/specials/SpecialTags.php
@@ -0,0 +1,73 @@
+<?php
+
+if (!defined('MEDIAWIKI'))
+ die;
+
+class SpecialTags extends SpecialPage {
+
+ function __construct() {
+ parent::__construct( 'Tags' );
+ }
+
+ function execute( $par ) {
+ global $wgOut, $wgUser, $wgMessageCache;
+
+ $wgMessageCache->loadAllMessages();
+
+ $sk = $wgUser->getSkin();
+ $wgOut->setPageTitle( wfMsg( 'tags-title' ) );
+ $wgOut->wrapWikiMsg( "<div class='mw-tags-intro'>\n$1</div>", 'tags-intro' );
+
+ // Write the headers
+ $html = '';
+ $html = Xml::tags( 'tr', null, Xml::tags( 'th', null, wfMsgExt( 'tags-tag', 'parseinline' ) ) .
+ Xml::tags( 'th', null, wfMsgExt( 'tags-display-header', 'parseinline' ) ) .
+ Xml::tags( 'th', null, wfMsgExt( 'tags-description-header', 'parseinline' ) ) .
+ Xml::tags( 'th', null, wfMsgExt( 'tags-hitcount-header', 'parseinline' ) )
+ );
+ $dbr = wfGetDB( DB_SLAVE );
+ $res = $dbr->select( 'change_tag', array( 'ct_tag', 'count(*) as hitcount' ), array(), __METHOD__, array( 'GROUP BY' => 'ct_tag', 'ORDER BY' => 'hitcount DESC' ) );
+
+ while ( $row = $res->fetchObject() ) {
+ $html .= $this->doTagRow( $row->ct_tag, $row->hitcount );
+ }
+
+ foreach( ChangeTags::listDefinedTags() as $tag ) {
+ $html .= $this->doTagRow( $tag, 0 );
+ }
+
+ $wgOut->addHTML( Xml::tags( 'table', array( 'class' => 'mw-tags-table' ), $html ) );
+ }
+
+ function doTagRow( $tag, $hitcount ) {
+ static $sk=null, $doneTags=array();
+ if (!$sk) {
+ global $wgUser;
+ $sk = $wgUser->getSkin();
+ }
+
+ if ( in_array( $tag, $doneTags ) ) {
+ return '';
+ }
+
+ $newRow = '';
+ $newRow .= Xml::tags( 'td', null, Xml::element( 'tt', null, $tag ) );
+
+ $disp = ChangeTags::tagDescription( $tag );
+ $disp .= ' (' . $sk->link( Title::makeTitle( NS_MEDIAWIKI, "Tag-$tag" ), wfMsg( 'tags-edit' ) ) . ')';
+ $newRow .= Xml::tags( 'td', null, $disp );
+
+ $desc = wfMsgExt( "tag-$tag-description", 'parseinline' );
+ $desc = wfEmptyMsg( "tag-$tag-description", $desc ) ? '' : $desc;
+ $desc .= ' (' . $sk->link( Title::makeTitle( NS_MEDIAWIKI, "Tag-$tag-description" ), wfMsg( 'tags-edit' ) ) . ')';
+ $newRow .= Xml::tags( 'td', null, $desc );
+
+ $hitcount = wfMsg( 'tags-hitcount', $hitcount );
+ $hitcount = $sk->link( SpecialPage::getTitleFor( 'RecentChanges' ), $hitcount, array(), array( 'tagfilter' => $tag ) );
+ $newRow .= Xml::tags( 'td', null, $hitcount );
+
+ $doneTags[] = $tag;
+
+ return Xml::tags( 'tr', null, $newRow ) . "\n";
+ }
+} \ No newline at end of file