Miscellaneous
|
|
|
|
<?php // ---------------------------------------------------------------------------------
// Setistats - class.setistats.php
// tested with Apache 1.3.23 / PHP 4.1.2 on Debian 2.2r5
// Created: Mar 29, 2002
// Last modified: Mar 29, 2002
//
// Copyright � 2002 by Christian Legler (capt@capt.de)
// ---------------------------------------------------------------------------------
class SetiStats {
var $exp = array (
UserName => "URL)n</td>n<td>n(.*)n</td>n</tr>n<tr>n<td>nResults",
Workunits => "<TR>n<TD>nResults Receivedn</TD>n<TD>n(.*)n</TD>n</TR>n<TR>n<TD>nTotal CPU Time",
TotalCPUTime => "<TR>n<TD>nTotal CPU Timen</TD>n<TD>n(.*)n</TD>n</TR>n<TR>n<TD>nAverage CPU Time per work unit",
AverageCPUTime => "<TR>n<TD>nAverage CPU Time per work unitn</TD>n<TD>n(.*)n</td>n</tr>n<tr>n<td>nAverage results received per day",
LastResult => "<TR><TD>Last result returned:</TD><TD>(.*)</TD>n<TR><TD>Registered on:</TD>",
RegisteredOn => "<TR><TD>Registered on:</TD><TD>(.*)</TD>n<TR><TD> </TD><TD><a href=",
SetiUserFor => "<TR><TD>SETI@home user for:</TD><TD>(.*)</TD></TR>n<TR BGCOLOR="#303080"><TD COLSPAN=2><b>Your group info",
GroupName => ".html"><b>(.*)</b></a></td>n</tr>n<tr>n<td colspan="2">n",
GroupURL => "<tr>n<td>nYou belong to the group named:n</td>n<td>n<a href="(.*)"><b>",
Rank => "<tr><td>nYour rank out of <b>(.*)</b> total users is:n</td><td>",
TotalUsers => "</td><td>n<b>(.*)<sup>",
TotalUsersWithThisRank => "The number of users who have this rank:n</td><td>n<b>(.*)</b>n</td></tr>n<tr><td>nYou have completed more work units than",
MoreWorkUnitsThan => "You have completed more work units thann</td><td>n<b>(.*)</b> of our users.n</td></tr>n<TR><TD> </TD><TD> </TD></TR>n<TR BGCOLOR="#303080"><TD COLSPAN=2><B>User Certificates",
AverageResultsPerDay => "Average results received per dayn</td>n<td>n(.*)n</td>n</tr>n<TR><TD>Last",
RegistrationClass => "</TD>n<TR><TD> </TD><TD><a href=(.*)>View Registration Class</a></TD>n<TR><TD>SETI@home user for"
);
var $errors = array(
SiteDown => "Seti@Home Server unreachable",
ParseError => "Parse Error",
Error => "Error"
);
function setEmail($user_email)
{
$this->email = $user_email;
$this->server = "http://setiathome.ssl.berkeley.edu/cgi-bin/cgi?email=". $this->email. "&cmd=user_stats_new";
return true;
}
function Init()
{
$this->raw = @implode("", @file($this->server));
}
function viewStats($what)
{
if (!$this->raw) {
$this->$what = $this->errors[SiteDown];
}
else
{
if (@eregi($this->exp[$what], $this->raw, $output))
{
$this->$what = $output[1];
}
else
{
$this->$what = $this->errors[ParseError];
}
}
if (!$this->$what)
{
$this->$what = $this->errors[Error];
}
print $this->$what;
return true;
}
function checkCert($cert_num, $url)
{
if (!$this->raw)
{
$this->$cert_check = $this->errors[SiteDown];
}
else
{
if (@eregi("&certnum=".$cert_num, $this->raw))
{
if ($url == 1)
{
print "http://setiathome.ssl.berkeley.edu/cgi-bin/cgi?email=".$this->email."&cmd=print_cert&certnum=".$cert_num."&size=0";
}
else
{
$cert_check = true;
}
$this->$cert_check = $out[1];
}
else
{
$this->$cert_check = false;
}
}
if (!$this->$cert_check)
{
$this->$cert_check = false;
}
return $cert_check;
}
function viewEmail()
{
print $this->email;
return true;
}
function viewServer()
{
print $this->server;
return true;
}
function Results()
{
if (!$this->raw) {
$this->Results = $this->errors[SiteDown];
}
else
{
if (@eregi($this->exp[Workunits], $this->raw, $output))
{
$this->Results = $output[1];
}
else
{
$this->Results = $this->errors[ParseError];
}
}
if (!$this->Results)
{
$this->Results = $this->errors[Error];
}
return $this->Results;
}
function AverageResults()
{
if (!$this->raw) {
$this->AverageResults = $this->errors[SiteDown];
}
else
{
if (@eregi($this->exp[AverageResultsPerDay], $this->raw, $output))
{
$this->AverageResults = $output[1];
}
else
{
$this->AverageResults = $this->errors[ParseError];
}
}
if (!$this->AverageResults)
{
$this->AverageResults = $this->errors[Error];
}
return $this->AverageResults;
}
function RegOn()
{
if (!$this->raw) {
$this->RegOn = $this->errors[SiteDown];
}
else
{
if (@eregi($this->exp[RegisteredOn], $this->raw, $output))
{
$this->RegOn = $output[1];
}
else
{
$this->RegOn = $this->errors[ParseError];
}
}
if (!$this->RegOn)
{
$this->RegOn = $this->errors[Error];
}
return $this->RegOn;
}
function ResultInt()
{
list ($this->null, $this->tmp_month, $this->tmp_day, $this->tmp_time, $this->tmp_year, $this->null) = split ('[ ]', $this->RegOn());
list ($this->tmp_hour, $this->tmp_min, $this->tmp_sec) = split ('[:]', $this->tmp_time);
switch ($this->tmp_month)
{
case 'Jan'; $this->tmp_month = 1; break;
case 'Feb'; $this->tmp_month = 2; break;
case 'Mar'; $this->tmp_month = 3; break;
case 'Apr'; $this->tmp_month = 4; break;
case 'May'; $this->tmp_month = 5; break;
case 'Jun'; $this->tmp_month = 6; break;
case 'Jul'; $this->tmp_month = 7; break;
case 'Aug'; $this->tmp_month = 8; break;
case 'Sep'; $this->tmp_month = 9; break;
case 'Oct'; $this->tmp_month = 10; break;
case 'Nov'; $this->tmp_month = 11; break;
case 'Dec'; $this->tmp_month = 12; break;
}
$this->RegDate = mktime($this->tmp_hour, $this->tmp_min, $this->tmp_sec, $this->tmp_month, $this->tmp_year, $this->tmp_year);
$this->ActDate = time();
$this->DiffDate = ($this->ActDate-$this->RegDate);
$this->ResInt = ($this->DiffDate/$this->Results());
$this->days = floor($this->ResInt / 24 / 60 / 60 );
$this->ResInt = $this->ResInt - ($this->days*24*60*60);
$this->hours = floor($this->ResInt / 60 / 60);
$this->ResInt = ($this->ResInt - ($this->hours*60*60));
$this->minutes = floor($this->ResInt / 60);
$this->ResInt = $this->ResInt - ($this->minutes*60);
$this->seconds = floor($this->ResInt);
print $this->days." Days ".$this->hours." Hours ".$this->minutes." Minutes ".$this->seconds." Seconds";
}
function ResultsPerWeek()
{
print $this->AverageResults()*7;
}
function ResultsPerMonth()
{
print $this->AverageResults()*30;
}
} ?>
|
|
|
Usage Example
|
<? @include ('class.setistats.php'); $seti = New SetiStats(); $seti->setEmail('foo@bar.com'); $seti->Init(); ?>
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>SetiStats Example Page</title>
</head>
<body>
UserEmail: <? $seti->viewEmail(); ?><br>
ServerUrl: <? $seti->viewServer(); ?><br>
Username: <? $seti->viewStats('UserName'); ?><br>
Wokunits: <? $seti->viewStats('Workunits'); ?><br>
TotalCPUTime: <? $seti->viewStats('TotalCPUTime'); ?><br>
AverageCPUTime: <? $seti->viewStats('AverageCPUTime'); ?><br>
LastResult: <? $seti->viewStats('LastResult'); ?><br>
RegisteredOn: <? $seti->viewStats('RegisteredOn'); ?><br>
SetiUserFor: <? $seti->viewStats('SetiUserFor'); ?><br>
GroupName: <? $seti->viewStats('GroupName'); ?><br>
GroupURL: <? $seti->viewStats('GroupURL'); ?><br>
Rank: <? $seti->viewStats('Rank'); ?><br>
TotalUsers: <? $seti->viewStats('TotalUsers'); ?><br>
TotalUsersWithThisRank: <? $seti->viewStats('TotalUsersWithThisRank'); ?><br>
MoreWorkUnitsThan: <? $seti->viewStats('MoreWorkUnitsThan'); ?><br>
AverageResultsPerDay: <? $seti->viewStats('AverageResultsPerDay'); ?><br>
ResultsPerWeek: <? $seti->ResultsPerWeek() ?><br>
ResultsPerMonth: <? $seti->ResultsPerMonth() ?><br>
RegistrationClass: <? $seti->viewStats('RegistrationClass'); ?><br>
CertUrl: <? $seti->checkCert('1', 1); ?><br>
valid cert: <?
if ($seti->checkCert('1', 0) == true)
{
echo "true";
}else{
echo "false";
} ?><br>
invalid cert: <?
if ($seti->checkCert('10', 0) == true)
{
echo "true";
}else{
echo "false";
} ?>
</body>
</html>
|
|
|
Rate This Script
|
|
|
|