From Wikipedia, the free encyclopedia
<?php
require_once('./rfalib2.php');
require_once('./SxWiki.php');
require_once('./config.php');
#$output = "Wikipedia:Bureaucrats' noticeboard/RfB Report";
$output = "User:SQL/RfX Report";
echo "Processing $argv[1]\n";
function bailout($message) {
echo "Fatal Error\n";
echo "$message\n";
exit;
}
$probedits = 10;
$problems = array();
$problems[RfA] = array();
$problems[RfB] = array();
$numprobs = 0;
function processrfb($cantidate) {
global $problems;
global $probedits;
global $numprobs;
$rfabasename = "Wikipedia:Requests for bureaucratship/";
$myRFA = new RFA();
$buffer = sxGetPage($rfabasename . $cantidate);
$result = $myRFA->analyze($buffer);
$d_support = $myRFA->support;
$d_oppose = $myRFA->oppose;
$d_neu = $myRFA->neutral;
$problems[RfB][$cantidate] = array();
foreach($d_support as $onesupp) {
#echo "Checking supporter: $onesupp[name]\n";
$supporter = $onesupp[name];
$supporter = urlencode($supporter);
$s_cont = file_get_contents("http://en.wikipedia.org/w/query.php?what=contribcounter&format=php&titles=User:$supporter");
$s_ncont = unserialize($s_cont);
$key = array_keys($s_ncont[pages]);
$key2 = $key[0];
$s_stat = $s_ncont[pages][$key2][contribcounter][count];
if($s_stat < $probedits && $supporter != "") {
$t_upage = sxGetPage("User:$supporter");
$redir = preg_match("/redirect(_| |)\[\[.*\]\]/i", $t_upage);
if (!$redir) {
echo "PROBLEM!\n";
array_push($problems[RfB][$cantidate], $supporter);
}
}
}
foreach($d_oppose as $oneopp) {
#echo "Checking opposer: $oneopp[name]\n";
$opposer = $oneopp[name];
$opposer = urlencode($opposer);
$o_cont = file_get_contents("http://en.wikipedia.org/w/query.php?what=contribcounter&format=php&titles=User:$opposer");
$o_ncont = unserialize($o_cont);
$key = array_keys($o_ncont[pages]);
$key2 = $key[0];
$o_stat = $o_ncont[pages][$key2][contribcounter][count];
if($o_stat < $probedits && $opposer != "") {
$t_upage = sxGetPage("User:$opposer");
$redir = preg_match("/redirect(_| |)\[\[.*\]\]/i", $t_upage);
if (!$redir) {
echo "PROBLEM!\n";
array_push($problems[RfB][$cantidate], $opposer);
}
}
}
foreach($d_neu as $oneneu) {
#echo "Checking opposer: $oneopp[name]\n";
$neu = $oneneu[name];
$neu = urlencode($neu);
$n_cont = file_get_contents("http://en.wikipedia.org/w/query.php?what=contribcounter&format=php&titles=User:$neu");
$n_ncont = unserialize($n_cont);
$key = array_keys($n_ncont[pages]);
$key2 = $key[0];
$n_stat = $n_ncont[pages][$key2][contribcounter][count];
if($n_stat < $probedits && $neu != "") {
$t_upage = sxGetPage("User:$neu");
$redir = preg_match("/redirect(_| |)\[\[.*\]\]/i", $t_upage);
if (!$redir) {
echo "PROBLEM!\n";
array_push($problems[RfB][$cantidate], $neu);
}
}
}
if ($result !== TRUE) {
bailout($myRFA->lasterror);
}
$enddate = $myRFA->enddate;
$tally = count($myRFA->support).'/'.count($myRFA->oppose).'/'.count($myRFA->neutral);
$opposes = count($myRFA->oppose);
$supports = count($myRFA->support);
$neutrals = count($myRFA->neutral);
$n_dup = 0;
foreach($myRFA->duplicates as $dup) {
$n_dup++;
}
$dups = "no";
if ($n_dup > 0) {
$dups = "'''yes'''";
}
$enddate2 = strtotime($enddate);
$now = strtotime(date("F j, Y, g:i a"));
$now = $now + 18000;
$newbs = 0;
foreach ($problems[RfB][$cantidate] as $newb) {
$newbs++;
}
$numprobs = $numprobs + $newbs;
if ($newbs > 0) { $s2 = "|problems=yes"; }
if ($now > $enddate2) { echo "EXPIRED!\n"; $s1 = '|expired=yes';} else { echo "NOT EXPIRED!\n"; }
return "{{Bureaucrat candidate|candidate= $cantidate|support= $supports|oppose= $opposes|neutral= $neutrals|end date= $enddate|dups= $dups$s1$s2}}";
}
function processrfa($cantidate) {
global $problems;
global $probedits;
global $numprobs;
echo "$cantidate\n";
$rfabasename = "Wikipedia:Requests for adminship/";
$myRFA = new RFA();
$buffer = sxGetPage($rfabasename . $cantidate);
$result = $myRFA->analyze($buffer);
$d_support = $myRFA->support;
$d_oppose = $myRFA->oppose;
$d_neu = $myRFA->neutral;
$problems[RfA][$cantidate] = array();
foreach($d_support as $onesupp) {
#echo "Checking supporter: $onesupp[name]\n";
$supporter = $onesupp[name];
$supporter = urlencode($supporter);
$s_cont = file_get_contents("http://en.wikipedia.org/w/query.php?what=contribcounter&format=php&titles=User:$supporter");
$s_ncont = unserialize($s_cont);
$key = array_keys($s_ncont[pages]);
$key2 = $key[0];
$s_stat = $s_ncont[pages][$key2][contribcounter][count];
if($s_stat < $probedits && $supporter != "") {
$t_upage = sxGetPage("User:$supporter");
$redir = preg_match("/redirect(_| |)\[\[.*\]\]/i", $t_upage);
if (!$redir) {
echo "PROBLEM!\n";
array_push($problems[RfA][$cantidate], $supporter);
}
}
}
foreach($d_oppose as $oneopp) {
#echo "Checking opposer: $oneopp[name]\n";
$opposer = $oneopp[name];
$opposer = urlencode($opposer);
$o_cont = file_get_contents("http://en.wikipedia.org/w/query.php?what=contribcounter&format=php&titles=User:$opposer");
$o_ncont = unserialize($o_cont);
$key = array_keys($o_ncont[pages]);
$key2 = $key[0];
$o_stat = $o_ncont[pages][$key2][contribcounter][count];
if($o_stat < $probedits && $opposer != "") {
$t_upage = sxGetPage("User:$opposer");
$redir = preg_match("/redirect(_| |)\[\[.*\]\]/i", $t_upage);
if (!$redir) {
echo "PROBLEM!\n";
array_push($problems[RfA][$cantidate], $opposer);
}
}
}
foreach($d_neu as $oneneu) {
#echo "Checking opposer: $oneopp[name]\n";
$neu = $oneneu[name];
$neu = urlencode($neu);
$n_cont = file_get_contents("http://en.wikipedia.org/w/query.php?what=contribcounter&format=php&titles=User:$neu");
$n_ncont = unserialize($n_cont);
$key = array_keys($n_ncont[pages]);
$key2 = $key[0];
$n_stat = $n_ncont[pages][$key2][contribcounter][count];
if($n_stat < $probedits && $neu != "") {
$t_upage = sxGetPage("User:$neu");
$redir = preg_match("/redirect(_| |)\[\[.*\]\]/i", $t_upage);
if (!$redir) {
echo "PROBLEM!\n";
array_push($problems[RfA][$cantidate], $neu);
}
}
}
if ($result !== TRUE) {
bailout($myRFA->lasterror);
}
$enddate = $myRFA->enddate;
$tally = count($myRFA->support).'/'.count($myRFA->oppose).'/'.count($myRFA->neutral);
$opposes = count($myRFA->oppose);
$supports = count($myRFA->support);
$neutrals = count($myRFA->neutral);
$n_dup = 0;
foreach($myRFA->duplicates as $dup) {
$n_dup++;
}
$dups = "no";
if ($n_dup > 0) {
$dups = "'''yes'''";
}
$enddate2 = strtotime($enddate);
$now = strtotime(date("F j, Y, g:i a"));
$now = $now + 18000;
foreach ($problems[RfA][$cantidate] as $newb) {
$newbs++;
}
$numprobs = $numprobs + $newbs;
if ($newbs > 0) { $s2 = "|problems=yes"; }
if ($now > $enddate2) { echo "EXPIRED!\n"; $s1 = '|expired=yes';} else { echo "NOT EXPIRED!\n"; }
return "{{Bureaucrat candidate|candidate=$cantidate|support=$supports|oppose=$opposes|neutral=$neutrals|end date=$enddate|dups=$dups|rfa=yes$s1$s2}}";
}
$findrfa = "/\{\{Wikipedia:Requests for adminship\/(.*)\}\}/";
$findrfb = "/\{\{Wikipedia:Requests for bureaucratship\/(.*)\}\}/";
$rfabuffer = sxGetPage("Wikipedia:Requests for adminship");
#$rfabuffer = sxGetPage("User:SQL/RFATest");
preg_match_all($findrfa, $rfabuffer, $matches);
$numrfa = 0;
echo "Processing RfA's!\n";
$out = "<noinclude>{{shortcut|WP:RFXR||WP:BNRX|WP:BN/RfX Report}}</noinclude>\n{| align=\"right\" cellspacing=\"0\" cellpadding=\"0\" style=\"white-space:nowrap; clear: left; margin-top: 0em; margin-bottom: .5em; float: right;padding: .5em 0em 0em 1.4em; background: none;\"\n|\n{| class=\"wikitable\"\n! RfA candidate !! S !! O !! N !! S% !! Ending !! Dups? !! Report" . $out;
foreach ($matches[1] as $rfa) {
if ($rfa == "Front matter" || $rfa == "bureaucratship") {
echo "Skipping non-rfa stuff\n";
} else {
$result = processrfa($rfa);
$out = $out . "\n|-\n" . $result;
$numrfa++;
}
}
$out = $out . "\n|-\n! RfB candidate !! S !! O !! N !! S% !! Ending !! Dups? !! Report";
echo "Processing RFB's!\n";
preg_match_all($findrfb, $rfabuffer, $matches);
$numrfb = 0;
foreach ($matches[1] as $rfb) {
$result = processrfb($rfb);
$out = $out . "\n|-\n" . $result;
$numrfb++;
}
$out = $out . "\n|}<div align=\"right\">\n''Last updated by '''~~~''' on '''~~~~~'''''\n</div>\n|}\n";
echo $out;
$runme = sxGetPage("User:SQLBot/rfbbot.run");
$runme = ltrim($runme);
$runme = rtrim($runme);
if ($runme == "go") {
if ($numprobs > 0) {
sxPutPage($output, "Updating RFB Report, $numrfa RFA's, $numrfb RFB's, $numprobs problems", $out);
$propage = "==Possible RfX Problems==\nThe following discussions contain Supports, opposes, or neutrals, from users with fewer than $probedits edits.\n===Requests for Adminship===\n";
foreach ($problems[RfA] as $cname => $ulist) {
$propage = $propage . "====$cname====\n";
foreach ($problems[RfA][$cname] as $pnewb) {
$propage = $propage . "* $pnewb\n";
}
}
$bpro = 0;
$bpropage = "===Requests for Bureaucratship===\n";
foreach ($problems[RfB] as $cname => $ulist) {
$bpropage = $bpropage . "====$cname====\n";
foreach ($problems[RfB][$cname] as $pnewb) {
$bpropage = $bpropage . "* $pnewb\n";
$bpro++;
}
}
if ($bpro > 0) {
$propage = $propage . $bpropage;
}
sxPutPage("User:SQL/RfX Report/Potential problems", "Updating RfX Problem Report", $propage);
} else {
sxPutPage($output, "Updating RFB Report, $numrfa RFA's, $numrfb RFB's, no problems", $out);
sxPutPage("User:SQL/RfX Report/Potential problems", "Blanking RfX Problem Report, no problems found", "");
}
} else {
echo "Could not run, disabled!\n";
}
if ($numprobs > 0) {
print_r($problems);
}
?>