Difference between revisions of "Extension:TransformChanges.php"
(1.0.7 - disable enhanced changes) |
m |
||
Line 5: | Line 5: | ||
if (!defined('MEDIAWIKI')) die('Not an entry point.'); | if (!defined('MEDIAWIKI')) die('Not an entry point.'); | ||
− | + | ||
define('TRANSFORMCHANGES_VERSION','1.0.7, 2007-09-08'); | define('TRANSFORMCHANGES_VERSION','1.0.7, 2007-09-08'); | ||
− | + | ||
$wgExtensionCredits['other'][] = array( | $wgExtensionCredits['other'][] = array( | ||
'name' => 'TransformChanges', | 'name' => 'TransformChanges', | ||
Line 15: | Line 15: | ||
'version' => TRANSFORMCHANGES_VERSION | 'version' => TRANSFORMCHANGES_VERSION | ||
); | ); | ||
− | + | ||
# Disable enhanced recent changes | # Disable enhanced recent changes | ||
$wgExtensionFunctions[] = 'wfSetupTransformChanges'; | $wgExtensionFunctions[] = 'wfSetupTransformChanges'; | ||
Line 21: | Line 21: | ||
global $wgUser; | global $wgUser; | ||
$wgUser->setOption('usenewrc',false); | $wgUser->setOption('usenewrc',false); | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
Line 42: | Line 31: | ||
function wfTransformChangesLI($match) { | function wfTransformChangesLI($match) { | ||
− | global $wgTransformChangesRow | + | global $wgTransformChangesRow,$wgSimpleSecurity; |
$wgTransformChangesRow = $wgTransformChangesRow == 'even' ? 'odd' : 'even'; | $wgTransformChangesRow = $wgTransformChangesRow == 'even' ? 'odd' : 'even'; | ||
list(,$date,$text) = $match; | list(,$date,$text) = $match; | ||
− | $cols = array('time',' | + | $cols = array('time','title','comment','user','talk','diff','info'); |
$ncols = count($cols); | $ncols = count($cols); | ||
$row = ''; | $row = ''; | ||
Line 59: | Line 48: | ||
if (preg_match('|(\\(.+?\\))|',$bytes,$m)) $info .= "<small>$m[1]</small>"; | if (preg_match('|(\\(.+?\\))|',$bytes,$m)) $info .= "<small>$m[1]</small>"; | ||
if (preg_match('|(<a.+?</a>).+?(\\(.+?\\))|',$user,$m)) { | if (preg_match('|(<a.+?</a>).+?(\\(.+?\\))|',$user,$m)) { | ||
− | # | + | # Remove talk for email or IP users and make user lowercase |
list(,$user,$talk) = $m; | list(,$user,$talk) = $m; | ||
if (ereg('@',$user) || !eregi('[a-z]',$user)) { $talk = ''; $user = strtolower($user); } | if (ereg('@',$user) || !eregi('[a-z]',$user)) { $talk = ''; $user = strtolower($user); } | ||
Line 66: | Line 55: | ||
$allowed = true; | $allowed = true; | ||
if (preg_match('|title="(.+?)"|',$title,$m) && is_object($wgSimpleSecurity)) { | if (preg_match('|title="(.+?)"|',$title,$m) && is_object($wgSimpleSecurity)) { | ||
+ | # Only show row if ok by SimpleSecurity extension | ||
$t = Title::newFromText($m[1]); | $t = Title::newFromText($m[1]); | ||
$allowed = $wgSimpleSecurity->validateTitle('view',$t); | $allowed = $wgSimpleSecurity->validateTitle('view',$t); |
Revision as of 21:45, 7 September 2007
<?
- Extension:TransformChangesTemplate:Php
- - See http://www.mediawiki.org/Extension:TransformChanges for installation and usage details
- - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
if (!defined('MEDIAWIKI')) die('Not an entry point.');
define('TRANSFORMCHANGES_VERSION','1.0.7, 2007-09-08');
$wgExtensionCredits['other'][] = array( 'name' => 'TransformChanges', 'author' => 'User:Nad', 'description' => 'Makes recent-changes and watchlists render in nice columns for easier reading.', 'url' => 'http://www.organicdesign.co.nz/Extension:TransformChanges', 'version' => TRANSFORMCHANGES_VERSION );
- Disable enhanced recent changes
$wgExtensionFunctions[] = 'wfSetupTransformChanges'; function wfSetupTransformChanges() { global $wgUser; $wgUser->setOption('usenewrc',false); }
function wfTransformChangesUL($match) { global $wgTransformChangesRow; $wgTransformChangesRow = 0;
$rows = preg_replace_callback('|<li\\s*(.*?)>(.+?)|s','wfTransformChangesLI',$match[1]); return "
$rows";
}
function wfTransformChangesLI($match) { global $wgTransformChangesRow,$wgSimpleSecurity; $wgTransformChangesRow = $wgTransformChangesRow == 'even' ? 'odd' : 'even'; list(,$date,$text) = $match; $cols = array('time','title','comment','user','talk','diff','info'); $ncols = count($cols); $row = ;
$error = 'Error: match failed!';
if ($date) {
$row = "$date\n";
$wgTransformChangesRow = 'even'; }
$row .= ""; if (preg_match('|^(.*?); (\\d+:\\d+)(.+?)(<a.+?\\))\\s*(.*?)$|',$text,$m)) { list(,$diff,$time,$bytes,$user,$comment) = $m; if (preg_match('|^(.+\\)).*?\\. \\.\\s*(.*?)\\s*(<a.+)$|',$diff,$m)) list(,$diff,$info,$title) = $m; else $info = $title = ; if (preg_match('|(\\(.+?\\))|',$bytes,$m)) $info .= "$m[1]"; if (preg_match('|(<a.+?</a>).+?(\\(.+?\\))|',$user,$m)) { # Remove talk for email or IP users and make user lowercase list(,$user,$talk) = $m; if (ereg('@',$user) || !eregi('[a-z]',$user)) { $talk = ; $user = strtolower($user); } } if (preg_match('|\\((.+)\\)|',$comment,$m)) $comment = $m[1]; $allowed = true; if (preg_match('|title="(.+?)"|',$title,$m) && is_object($wgSimpleSecurity)) { # Only show row if ok by SimpleSecurity extension $t = Title::newFromText($m[1]); $allowed = $wgSimpleSecurity->validateTitle('view',$t); } if ($allowed) foreach ($cols as $col) $row .= "{$$col}";
} else $row = $error;
$row .= "\n"; return $row; } ?>