#!/usr/local/bin/perl

#-----------------------
# ClickCount.cgi
# Ver. 1.1
# ----------------------
# Gustav Evertsson
# www.guzzzt.com
# me@guzzzt.com
#-----------------------

$dbfile = "./clickcount.db";

&parse_query;

if($ENV{'QUERY_STRING'} eq '') {
  print "Content-type: text/html\n\n";

#Print the top of the admin page
  print qq|
<html><head><title>GuzZzt ClickCount: Admin</title></head>
<body bgcolor="#FFFFFF" text="#000000">
<p align="center"><strong><font face="Tahoma" size="3">GuzZzt ClickCount</font></strong>
<font face="Arial,helvetica" size="2"><br>
<center><table border="0" height="74">
  <tr>
    <td bgcolor="#C0C0C0"><strong><font face="Tahoma" size="2">URL</font></strong></td>
    <td bgcolor="#C0C0C0"><strong><font face="Tahoma" size="2">Clicks</font></strong></td>
  </tr>
|;

# write all urls 

  open(DATA, "$dbfile");
  @db = <DATA>;
  close(DATA);
  foreach (@db) {
    ($clicks, $url) = split /\|/;
		$totclicks = $totclicks+$clicks;
    print qq|
  <tr>
    <td><font face="Tahoma" size="2">$url</font></td>
    <td><font face="Tahoma" size="2">$clicks</font></td>
  </tr>
|;
  } 



#totalt clicks
print qq|
  <tr>
    <td align="right"><font face="Tahoma" size="2">Total:</font></td>
    <td><font face="Tahoma" size="2">$totclicks</font></td>
  </tr>
|;

#Write the bottom of the page
print qq|
</table>
</center>
<br><br><br>
<p align="right"><font face="Tahoma" size="1">Powered by GuzZzt ClickCount V. 1.1<br>
Copyright 1999 <a href="mailto:me\@guzzzt.com">Gustav Evertsson</a><br>
From <a href="http://www.guzzzt.com">GuzZzt.com</a></font></p>
</body></html>
|;
}

else{
  if($query{'action'} eq 'jump') {

    open(DATA, "$dbfile");
    @db = <DATA>;
    close(DATA);
    foreach (@db) {
      ($click, $url) = split /\|/;
      if($url eq $query{'URL'}){
        $newclick = $click+1;
        $dummy .= "$newclick|$url|\n";
        $find = 'true';
      }
      else {
        $dummy .= "$click|$url|\n";
      }
    }

    if($find ne 'true') {
      $dummy .= "1|$query{'URL'}|";

    }

    open(DB, "+>$dbfile");
    print DB $dummy;
    close(DB);

  print "Location: $query{'URL'} \n\n";



  }
  else{

    open(DATA, "$dbfile");
    @db = <DATA>;
    close(DATA);
    foreach (@db) {
      ($click, $url) = split /\|/;
      if($url eq $query{'URL'}){
        $viewclick = $click;
      }
    }

    if($viewclick eq '') {
      $viewclick = 0;
    }
    print "Content-type: text/html\n\n";
    print "$viewclick";

  }
}

sub parse_query {
  @pairs = split(/&/, $ENV{'QUERY_STRING'});
  foreach $pair (@pairs) {
    ($name, $value) = split(/=/, $pair);
    $value =~ s/~/=/g;	#change ~ to = if double querystrings change all = to ~ in the second url.
    $query{$name} = $value;
  }
}
