MediaWiki REL1_33
IRCColourfulRCFeedFormatter.php
Go to the documentation of this file.
1<?php
2
36 public function getLine( array $feed, RecentChange $rc, $actionComment ) {
39 $attribs = $rc->getAttributes();
40 if ( $attribs['rc_type'] == RC_CATEGORIZE ) {
41 // Don't send RC_CATEGORIZE events to IRC feed (T127360)
42 return null;
43 }
44
45 if ( $attribs['rc_type'] == RC_LOG ) {
46 // Don't use SpecialPage::getTitleFor, backwards compatibility with
47 // IRC API which expects "Log".
48 $titleObj = Title::newFromText( 'Log/' . $attribs['rc_log_type'], NS_SPECIAL );
49 } else {
50 $titleObj =& $rc->getTitle();
51 }
52 $title = $titleObj->getPrefixedText();
53 $title = self::cleanupForIRC( $title );
54
55 if ( $attribs['rc_type'] == RC_LOG ) {
56 $url = '';
57 } else {
59 if ( $attribs['rc_type'] == RC_NEW ) {
60 $query = '?oldid=' . $attribs['rc_this_oldid'];
61 } else {
62 $query = '?diff=' . $attribs['rc_this_oldid'] . '&oldid=' . $attribs['rc_last_oldid'];
63 }
64 if ( $wgUseRCPatrol || ( $attribs['rc_type'] == RC_NEW && $wgUseNPPatrol ) ) {
65 $query .= '&rcid=' . $attribs['rc_id'];
66 }
67 // HACK: We need this hook for WMF's secure server setup
68 Hooks::run( 'IRCLineURL', [ &$url, &$query, $rc ] );
69 $url .= $query;
70 }
71
72 if ( $attribs['rc_old_len'] !== null && $attribs['rc_new_len'] !== null ) {
73 $szdiff = $attribs['rc_new_len'] - $attribs['rc_old_len'];
74 if ( $szdiff < -500 ) {
75 $szdiff = "\002$szdiff\002";
76 } elseif ( $szdiff >= 0 ) {
77 $szdiff = '+' . $szdiff;
78 }
79 // @todo i18n with parentheses in content language?
80 $szdiff = '(' . $szdiff . ')';
81 } else {
82 $szdiff = '';
83 }
84
85 $user = self::cleanupForIRC( $attribs['rc_user_text'] );
86
87 if ( $attribs['rc_type'] == RC_LOG ) {
88 $targetText = $rc->getTitle()->getPrefixedText();
90 "[[$targetText]]",
91 "[[\00302$targetText\00310]]",
92 $actionComment
93 ) );
94 $flag = $attribs['rc_log_action'];
95 } else {
96 $comment = self::cleanupForIRC(
97 CommentStore::getStore()->getComment( 'rc_comment', $attribs )->text
98 );
99 $flag = '';
100 if ( !$attribs['rc_patrolled']
101 && ( $wgUseRCPatrol || $attribs['rc_type'] == RC_NEW && $wgUseNPPatrol )
102 ) {
103 $flag .= '!';
104 }
105 $flag .= ( $attribs['rc_type'] == RC_NEW ? "N" : "" )
106 . ( $attribs['rc_minor'] ? "M" : "" ) . ( $attribs['rc_bot'] ? "B" : "" );
107 }
108
109 if ( $feed['add_interwiki_prefix'] === true && $wgLocalInterwikis ) {
110 // we use the first entry in $wgLocalInterwikis in recent changes feeds
111 $prefix = $wgLocalInterwikis[0];
112 } elseif ( $feed['add_interwiki_prefix'] ) {
113 $prefix = $feed['add_interwiki_prefix'];
114 } else {
115 $prefix = false;
116 }
117 if ( $prefix !== false ) {
118 $titleString = "\00314[[\00303$prefix:\00307$title\00314]]";
119 } else {
120 $titleString = "\00314[[\00307$title\00314]]";
121 }
122
123 # see http://www.irssi.org/documentation/formats for some colour codes. prefix is \003,
124 # no colour (\003) switches back to the term default
125 $fullString = "$titleString\0034 $flag\00310 " .
126 "\00302$url\003 \0035*\003 \00303$user\003 \0035*\003 $szdiff \00310$comment\003\n";
127
128 return $fullString;
129 }
130
136 public static function cleanupForIRC( $text ) {
137 return str_replace(
138 [ "\n", "\r" ],
139 [ " ", "" ],
140 Sanitizer::decodeCharReferences( $text )
141 );
142 }
143}
and that you know you can do these things To protect your we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights These restrictions translate to certain responsibilities for you if you distribute copies of the or if you modify it For if you distribute copies of such a whether gratis or for a you must give the recipients all the rights that you have You must make sure that receive or can get the source code And you must show them these terms so they know their rights We protect your rights with two and(2) offer you this license which gives you legal permission to copy
$wgScript
The URL path to index.php.
$wgUseRCPatrol
Use RC Patrolling to check for vandalism (from recent changes and watchlists) New pages and new files...
$wgUseNPPatrol
Use new page patrolling to check new pages on Special:Newpages.
$wgLocalInterwikis
Array for multiple $wgLocalInterwiki values, in case there are several interwiki prefixes that point ...
$wgCanonicalServer
Canonical URL of the server, to use in IRC feeds and notification e-mails.
Generates a colourful notification intended for humans on IRC.
static cleanupForIRC( $text)
Remove newlines, carriage returns and decode html entites.
getLine(array $feed, RecentChange $rc, $actionComment)
Utility class for creating new RC entries.
null means default in associative array with keys and values unescaped Should be merged with default with a value of false meaning to suppress the attribute in associative array with keys and values unescaped noclasses just before the function returns a value If you return an< a > element with HTML attributes $attribs and contents $html will be returned If you return $ret will be returned and may include noclasses after processing & $attribs
Definition hooks.txt:2012
null for the local wiki Added should default to null in handler for backwards compatibility add a value to it if you want to add a cookie that have to vary cache options can modify $query
Definition hooks.txt:1617
const RC_NEW
Definition Defines.php:152
const NS_SPECIAL
Definition Defines.php:62
const RC_LOG
Definition Defines.php:153
const RC_CATEGORIZE
Definition Defines.php:155
Interface for RC feed formatters.
The wiki should then use memcached to cache various data To use multiple just add more items to the array To increase the weight of a make its entry a array("192.168.0.1:11211", 2))