Zend - The PHP Company




Miscellaneous

Add Code


SetiStats  

Type: class
Added by: capt
Entered: 30/03/2002
Last modified: 04/12/2001
Rating: - (fewer than 3 votes)
Views: 3558
fetch your Seti@Home UserStats


<?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>&nbsp;</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>(.*)</btotal 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>(.*)</bof our users.n</td></tr>n<TR><TD>&nbsp;</TD><TD>&nbsp;</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>&nbsp;</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





Search



This Category All Categories