function doInit() { if (Config::$pass == null) { Config::$pass = trim(file_get_contents(getenv("HOME") . '/.cluebotng.password.only')); } API::init(); API::$a->login(Config::$user, Config::$pass); Globals::$mysql = false; checkMySQL(); Globals::$tfas = 0; Globals::$stdin = fopen('php://stdin', 'r'); Globals::$run = API::$q->getpage('User:'******'/Run'); Globals::$wl = API::$q->getpage('Wikipedia:Huggle/Whitelist'); Globals::$optin = API::$q->getpage('User:'******'/Optin'); Globals::$aoptin = API::$q->getpage('User:'******'/AngryOptin'); Globals::$stalk = array(); Globals::$edit = array(); $tmp = explode("\n", API::$q->getpage('User:'******'/CBAutostalk.js')); foreach ($tmp as $tmp2) { if (substr($tmp2, 0, 1) != '#') { $tmp3 = explode('|', $tmp2, 2); Globals::$stalk[$tmp3[0]] = trim($tmp3[1]); } } $tmp = explode("\n", API::$q->getpage('User:'******'/CBAutoedit.js')); foreach ($tmp as $tmp2) { if (substr($tmp2, 0, 1) != '#') { $tmp3 = explode('|', $tmp2, 2); Globals::$edit[$tmp3[0]] = trim($tmp3[1]); } } }
function doInit() { if (Config::$pass == null) { Config::$pass = trim(file_get_contents(getenv('HOME') . '/.cluebotng.password.only')); } Api::init(); Api::$a->login(Config::$user, Config::$pass); Globals::$tfas = 0; Globals::$stdin = fopen('php://stdin', 'r'); Globals::$run = Api::$q->getpage('User:'******'/Run'); Globals::$wl = Api::$q->getpage('Wikipedia:Huggle/Whitelist'); Globals::$optin = Api::$q->getpage('User:'******'/Optin'); Globals::$aoptin = Api::$q->getpage('User:'******'/AngryOptin'); Globals::$stalk = array(); Globals::$edit = array(); $tmp = explode("\n", Api::$q->getpage('User:'******'/CBAutostalk.js')); foreach ($tmp as $tmp2) { if (strlen($tmp2) > 0 && substr($tmp2, 0, 1) != '#') { $tmp3 = explode('|', $tmp2, 2); if (count($tmp3) == 2) { Globals::$stalk[$tmp3[0]] = trim($tmp3[1]); } else { print "Skipping auto stalk entry: {$tmp2}\n"; } } } $tmp = explode("\n", Api::$q->getpage('User:'******'/CBAutoedit.js')); foreach ($tmp as $tmp2) { if (strlen($tmp2) > 0 && substr($tmp2, 0, 1) != '#') { $tmp3 = explode('|', $tmp2, 2); if (count($tmp3) == 2) { Globals::$edit[$tmp3[0]] = trim($tmp3[1]); } else { print "Skipping auto edit entry: {$tmp2}\n"; } } } }
private static function loop($line) { $d = IRC::split($line); if ($d === null) { return; } if ($d['type'] == 'direct') { switch ($d['command']) { case 'ping': self::send('PONG :' . $d['pieces'][0]); break; } } else { switch ($d['command']) { case '376': case '422': self::send('JOIN ' . self::$channel); break; case 'privmsg': if (strtolower($d['target']) == self::$channel) { $rawmessage = $d['pieces'][0]; $message = str_replace("", '', $rawmessage); $message = preg_replace('/\\003(\\d\\d?(,\\d\\d?)?)?/', '', $message); $data = parseFeed($message); if ($data === false) { return; } $data['line'] = $message; $data['rawline'] = $rawmessage; if (stripos('N', $data['flags']) !== false) { self::bail($data, 'New article'); return; } $stalkchannel = array(); foreach (Globals::$stalk as $key => $value) { if (myfnmatch(str_replace('_', ' ', $key), str_replace('_', ' ', $data['user']))) { $stalkchannel = array_merge($stalkchannel, explode(',', $value)); } } foreach (Globals::$edit as $key => $value) { if (myfnmatch(str_replace('_', ' ', $key), str_replace('_', ' ', ($data['namespace'] == 'Main:' ? '' : $data['namespace']) . $data['title']))) { $stalkchannel = array_merge($stalkchannel, explode(',', $value)); } } $stalkchannel = array_unique($stalkchannel); foreach ($stalkchannel as $chan) { IRC::say($chan, 'New edit: [[' . ($data['namespace'] == 'Main:' ? '' : $data['namespace']) . $data['title'] . ']] https://en.wikipedia.org/w/index.php?title=' . urlencode($data['namespace'] . $data['title']) . '&diff=prev&oldid=' . urlencode($data['revid']) . ' * ' . $data['user'] . ' * ' . $data['comment']); } switch ($data['namespace'] . $data['title']) { case 'User:'******'/Run': Globals::$run = Api::$q->getpage('User:'******'/Run'); break; case 'Wikipedia:Huggle/Whitelist': Globals::$wl = Api::$q->getpage('Wikipedia:Huggle/Whitelist'); break; case 'User:'******'/Optin': Globals::$optin = Api::$q->getpage('User:'******'/Optin'); break; case 'User:'******'/AngryOptin': Globals::$aoptin = Api::$q->getpage('User:'******'/AngryOptin'); break; } if ($data['namespace'] != 'Main:' and !preg_match('/\\* \\[\\[(' . preg_quote($data['namespace'] . $data['title'], '/') . ')\\]\\] \\- .*/i', Globals::$optin)) { self::bail($data, 'Outside of valid namespaces'); return; } echo 'Processing: ' . $message . "\n"; Process::processEdit($data); } break; } } }