ban=1; $mini_track[$_GET['mini_track_ban']]->ok=0; mini_track_save();} elseif (isset($_GET['mini_track_unban']) && isset($mini_track[$_GET['mini_track_unban']])) {unset($mini_track[$_GET['mini_track_unban']]->ban); $mini_track[$_GET['mini_track_unban']]->ok=1; mini_track_save();} bb_send_headers(); echo "".count($mini_track)." Users Online « ".bb_get_option('name')."
[reset]
"; mini_track(2); $th=array(1=>"user",2=>"cc",3=>"ip",4=>"referer",5=>"pages",6=>"time online",7=>"last activity",8=>"status",9=>"last URL"); $extra=array(5=>" class=pages ",9=>" class=lasturl"); if (!$mini_track_options['geoip']) {unset($th[array_search("cc",$th)]);} $output.="
"; $abssort=abs($sort); foreach ($th as $cell=>$name) {if ($cell==$abssort) {if ($sort>0) {$name.=" ↑";} else {$name.= " ↓";}} $output.="$name";} $output.=""; echo $output; $output=""; $counter=0; foreach ($mini_track as $key=>$value) { ++$counter; $td[0][$counter]=$counter; // line number (for sorting) if ($value->id) {$td[1][$counter]="$value->name";} // member profile link elseif (isset($value->bot)) {$td[1][$counter]="".preg_replace("/[^A-Za-z_ ]+?/is","",$mini_track_options['bots'][$value->bot-1])."";} else {$td[1][$counter]="guest";} if ($mini_track_options['geoip']) {if ($mini_track_options['flags']) {$td[2][$counter]="$value->cccc).".png'>";} else {$td[2][$counter]="$value->cc";}} // country $td[3][$counter]="$value->ip"; if (isset($value->referer)) {$parse_url=parse_url($value->referer); // referer // (www[0-9]?\.)?([^.]\.)*([^.]+)(\.[A-Za-z]{2,4})(\.[A-Za-z]{2,4}) $host=preg_match('#(?:^|\.)([a-z0-9]+\.(?:[a-z]{2,}|[a-z.]{5,6}))$#i', $parse_url['host'], $tmp) ? $tmp[1] : $parse_url['host']; // substr(ereg_replace("^(?:^|\.)([a-z0-9]+\.(?:[a-z]{2,}|[a-z.]{5,6}))$","\\1",$parse_url['host']),0,30); $td[4][$counter]="".$host.""; } else {$td[4][$counter]=" ";} $td[5][$counter]=intval($value->pages); // page count $td[6][$counter]="".($total=ceil(($value->time-$value->seen+1)/60))." ".(($total==1 && $value->pages>1) ? "minutes" : "minutes"); // total activity time $td[7][$counter]="".($last=ceil(($time-$value->time+1)/60))." minutes ago"; // last activity time $actual[6][$counter]=$value->time-$value->seen; $actual[7][$counter]=$time-$value->time; if (isset($value->ok) && $value->ok && isset($value->bot)) {$td[8][$counter]="verified";} elseif (isset($value->ban)) {$td[8][$counter]="banned [x]";} elseif ($value->pages>9 && $bb_current_user->ID!=$value->id) {$td[8][$counter]="ban?";} elseif ($value->pages<3 && $total<2 && $last<2) {$td[8][$counter]="new";} elseif ($last>15) {$td[8][$counter]="inactive";} elseif ($last>5) {$td[8][$counter]="idle";} else {$td[8][$counter]=" ";} $td[9][$counter]="
$url
"; // last url } // sort would go here if ($sort!=0) { if (isset($actual[abs($sort)])) {asort($actual[abs($sort)]); $td[0]=array_keys($actual[abs($sort)]);} else {asort($td[abs($sort)]); $td[0]=array_keys($td[abs($sort)]);} } if ($sort<1) {$td[0]=array_reverse($td[0],true);} $counter=0; foreach ($td[0] as $row) { ++$counter; $output.=""; // line number foreach ($th as $cell=>$name) {$output.="".$td[$cell][$row]."";} $output.=""; } echo $output; echo "
#
".$counter."

please donate to continue development of
this and other plugins for bbPress by _ck_

"; exit(); } function knatsort(&$karr){ asort($karr); return; $kkeyarr = array_keys($karr); natsort($kkeyarr); $ksortedarr = array(); foreach($kkeyarr as $kcurrkey){ $ksortedarr[$kcurrkey] = $karr[$kcurrkey]; } $karr = $ksortedarr; return true; } function mini_track_ip() { if (!bb_current_user_can('administrate') || !$_GET['mini_track_ip']) {return;} $ip=$_GET['mini_track_ip']; $rdns=gethostbyaddr($ip); if ($rdns==$ip) {$rdns="(no rDNS)";} bb_send_headers(); echo "

IP ".$ip."

".$rdns."

"; $data=mini_track_ip_lookup($ip); if (!isset($data) || !is_array($data)) {echo "reloading...
"; sleep(1); $data=mini_track_ip_lookup($ip);} // try a 2nd time before giving up if (isset($data) && is_array($data)) { foreach ($data as $key=>$value) { if (eregi("abuse|tech|nettype|comment|remark|ReferralServer|signature|auth|encryption",$key)===false) { if (intval($key)===$key) {echo "$value
";} else {echo "$key: $value
";} } } } else {echo "lookup error, try again?";} exit(); } function mini_track_ip_lookup($ip,$server=0) { if (!bb_current_user_can('administrate') || !$_GET['mini_track_ip']) {return;} // error_reporting(E_ALL); ini_set("display_errors", 1); // debug $host=array('ws.arin.net','wq.apnic.net','www.db.ripe.net','lacnic.net','www.afrinic.net'); $keyword=array('arin.net','apnic.net','ripe.net','lacnic.net','afrinic.net'); $path=array('/whois/?queryinput=','/apnic-bin/whois.pl?searchtext=','/whois/?form_type=simple&searchtext=','/cgi-bin/lacnic/whois?query=','/cgi-bin/whois?form_type=simple&searchtext='); do {unset($data); $data=""; if ($fp = fsockopen ($host[$server], 80, &$errno, &$errstr, 10)) { $request = "GET $path[$server]$ip HTTP/1.0\r\nHost: $host[$server]\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n\r\n"; $page=''; fputs ($fp, $request); while (!feof($fp)) {$page.=fgets ($fp,1024);} fclose ($fp); // echo $page; // debug preg_match("/\(.*)\<\/pre\>/sim",$page,$temp); $lines=explode("\n",strip_tags($temp[0])); // print_r($temp); // debug foreach ($lines as $line) {$line=trim($line); if (!empty($line) && !ereg("^(\#|\%)",$line)) {if (strpos($line,":")) {$temp=explode(":",$line,2); $data[trim($temp[0])] = trim($temp[1]);} else {$data[]=$line;}} } } else {$data['error'] = "$errstr ($errno)\n";} $server=0; for ($i = 1; $i <= count($host); $i++){if (isset($data['ReferralServer']) && strpos($data['ReferralServer'],$keyword[$i])){$server=$i;break;}} } while ($server>0); return $data; } function mini_track_activation() { global $mini_track, $mini_track_statistics, $mini_track_done; unset($mini_track_done); $mini_track=array(); @bb_update_option('mini_track',$mini_track); $mini_track_statistics=bb_get_option('mini_track_statistics'); if (empty($mini_track_statistics)) {$mini_track_statistics=array(); @bb_update_option('mini_track_statistics',$mini_track_statistics);} } ?>