#!/usr/local/bin/perl

##############################################################################
# PROGRAM : Hyperseek Search Engine: Rate-It  Program                        #
# VERSION : 2000.1.51                                                        #
#                                                                            #
##############################################################################
#                                                                            #
#  __  __                                                  __                #
# /\ \/\ \                                                /\ \               #
# \ \ \_\ \  __  __  _____     __  _ __  ____    __     __\ \ \/'\           #
#  \ \  _  \/\ \/\ \/\ '__`\ /'__`Y\`'__Y',__\ /'__`\ /'__`\ \ , <           #
#   \ \ \ \ \ \ \_\ \ \ \L\ Y\  __| \ \/\__, `Y\  __//\  __/\ \ \\`\         #
#    \ \_\ \_\/`____ \ \ ,__| \____\ \_\/\____| \____\ \____\\ \_\ \_\       #
#     \/_/\/_/`/___/> \ \ \/ \/____/\/_/\/___/ \/____/\/____/ \/_/\/_/       #
#                /\___/\ \_\                                                 #
#                \/__/  \/_/                                                 #
#                                     ___      __      __      __            #
#                                   /'___`\  /'__`\  /'__`\  /'__`\          #
#                                  /\_\ /\ \/\ \/\ \/\ \/\ \/\ \/\ \         #
#                                  \/_/// /_\ \ \ \ \ \ \ \ \ \ \ \ \        #
#                                     // /_\ \ \ \_\ \ \ \_\ \ \ \_\ \       #
#                                    /\______/\ \____/\ \____/\ \____/       #
#                                    \/_____/  \/___/  \/___/  \/___/        #
#                                                                            #
##############################################################################
# All source code, images, programs, files included in this distribution     #
# Copyright (c) 1996,1997,1998,1999,2000                                     #
#                                                                            #
#           John C. Cokos, The CCS Network, Inc.  IWeb, Inc.                 #
#           All Rights Reserved.                                             #
#                                                                            #
# Use, distibution, sale, or access to this program is forbidden without     #
# permission, except were permitted by the license agreement.                #
#                                                                            #
##############################################################################
#                                                                            #
#    ------ DO NOT MODIFY ANYTHING BELOW THIS POINT !!! -------              #
#                                                                            #
#    Modification of the souce code of this program violates the             #
#    license agreement, and terminates your right to technical support.      #
#                                                                            #
##############################################################################
#START#

package IWEB;

BEGIN { 
   use Cwd;
}

BEGIN {
   $directory = cwd;
   push @INC,$directory;
   push @INC,"."; 
   push @INC,"..";
}


BEGIN { use IWeb::iweb; }

BEGIN {

   IWEB::Read_Config();
   use IWeb::hyperseek;
   use DB_File;

   if($global{'DB_Format'} eq "SQL") { eval "use IWeb::sqlengine"; }
   elsif($global{'DB_Format'} eq "IWeb") { eval "use IWeb::dbmengine"; }

   eval "use IWeb::client"; 
   if($@) { $LWP=0; }
   else { $LWP=1; }


}

use vars qw(
           $MESSAGE $SITE $RATING
           $hits $num_votes $new_rating
);


##############################################################################
# BEGIN OF ACTUAL PROGRAM CODE
##############################################################################


IWEB::Start_Program();


sub Start_Program {

   IWEB::Read_Config();

   %input=IWEB::parse_form("input");
   $action = $input{'action'};
   $SITE = $input{'ID'};
   $RATING = $input{'RATING'};

   if($global{'DB_Format'} eq "SQL") { IWEB::SQL_Connect(); }

   IWEB::Read_Language("ratings_vote");
   IWEB::Read_Language("hyperseek");
   IWEB::hs_Globals();

   if ($global{'yh_target'} ne "NONE") { $TARGET="TARGET=\"$yh_target\""; }
   else { $TARGET=""; }

   if ($global{'DB_Format'} eq "IWeb") { IWEB::DBM_Get_Entry($SITE); }
   elsif ($global{'DB_Format'} eq "SQL") { IWEB::SQL_Get_Entry($SITE); }

   if (! $ID) {
      IWEB::iWeb_Header(IWEB::ERROR("Resource ($SITE / $global{'DB_Format'}) Not Found"));
      IWEB::Quit(); 
   }


   if ($action eq "Rate It") {

       if(! $RATING) { 
           IWEB::iWeb_Header( IWEB::ERROR($language{'no_rating_error'}) ); 
           IWEB::Quit(); 
       }

       my $Count_Vote = IWEB::Check_Cookies();
 
       if ($Count_Vote) {
          if ($global{'DB_Format'} eq "IWeb") { ($hits,$num_votes,$new_rating) = IWEB::DBM_Rate($SITE,$RATING); }
          elsif ($global{'DB_Format'} eq "SQL") { ($hits,$num_votes,$new_rating) = IWEB::SQL_Rate($SITE,$RATING); }
       }
   
       $hyperseek{'show_form'} = undef;
   }

   else { $hyperseek{'show_form'} = 1; }

   if ($global{'DB_Format'} eq "IWeb") { ($hits,$num_votes,$new_rating) = IWEB::DBM_Get_Rating($SITE); }
   elsif ($global{'DB_Format'} eq "SQL") { ($hits,$num_votes,$new_rating) = IWEB::SQL_Get_Rating($SITE); }


   IWEB::Page_Header("rateit");
   
   IWEB::Quit(); 

}

sub BODY {

   my($rateout);

   if ($global{'DB_Format'} eq "IWeb") { IWEB::DBM_Get_Entry($SITE); }
   elsif ($global{'DB_Format'} eq "SQL") { IWEB::SQL_Get_Entry($SITE); }

   if (! $ID) {
      IWEB::iWeb_Header(IWEB::ERROR("Resource ($SITE) Not Found"));
      IWEB::Quit(); 
   }


   if($global{'yh_show_hits'} eq "YES") { $HREF="$urls{'hyperseek_url'}?ID=$SITE"; }
   else { $HREF="$URL"; }

   $width=int($new_rating * 23.5);

   $rateout = qq!
      <FONT FACE="$font_face" COLOR="$text_color" SIZE="$font_size">
      $MESSAGE
      <B>$Title</B><BR>
      <A HREF="$HREF" $TARGET>$URL</A><BR>
      $Description<BR><BR>

      <BR><FONT SIZE=+1>$language{'current_rating'} <B><I>$new_rating</I></B></FONT>
      <BR><IMG SRC="$global{'button_dir'}/graph.gif" BORDER=0 WIDTH=$width HEIGHT=4>
      <BR>1<IMG SRC="$global{'button_dir'}/none.gif" BORDER=0 WIDTH=20 HEIGHT=1>
      2<IMG SRC="$global{'button_dir'}/none.gif" BORDER=0 WIDTH=15 HEIGHT=1>
      3<IMG SRC="$global{'button_dir'}/none.gif" BORDER=0 WIDTH=15 HEIGHT=1>
      4<IMG SRC="$global{'button_dir'}/none.gif" BORDER=0 WIDTH=15 HEIGHT=1>
      5<IMG SRC="$global{'button_dir'}/none.gif" BORDER=0 WIDTH=15 HEIGHT=1>
      6<IMG SRC="$global{'button_dir'}/none.gif" BORDER=0 WIDTH=15 HEIGHT=1>
      7<IMG SRC="$global{'button_dir'}/none.gif" BORDER=0 WIDTH=15 HEIGHT=1>
      8<IMG SRC="$global{'button_dir'}/none.gif" BORDER=0 WIDTH=15 HEIGHT=1>
      9<IMG SRC="$global{'button_dir'}/none.gif" BORDER=0 WIDTH=15 HEIGHT=1>
      10<IMG SRC="$global{'button_dir'}/none.gif" BORDER=0 WIDTH=15 HEIGHT=1>
   !;

   if ($hyperseek{'show_form'}) {
         $rateout .= qq!
            <FORM ACTION="$PROG_URL" METHOD="post">$language{'rate_prompt'}
            <SELECT NAME="RATING">
            <OPTION VALUE="">
            <OPTION VALUE="10">10
            <OPTION VALUE="9">9
            <OPTION VALUE="8">8
            <OPTION VALUE="7">7
            <OPTION VALUE="6">6
            <OPTION VALUE="5">5
            <OPTION VALUE="4">4
            <OPTION VALUE="3">3
            <OPTION VALUE="2">2
            <OPTION VALUE="1">1
            </SELECT><INPUT NAME="ID" VALUE="$SITE" TYPE="HIDDEN">
            <INPUT TYPE="hidden" VALUE="Rate It" NAME="action">
            <INPUT TYPE="Submit" VALUE="$language{'rate_button'}"></FORM>
         !;
   }

 
   return($rateout);
}




#----------------------------------------------------------
sub Check_Cookies {

   my ($Count_It,%votecookie,$now,$stop,$cdate);

   $now = time;
   $stop = $now + (86400 * $global{'top_cookie_days'});
   $cdate = IWEB::Cookie_Date($stop);

   undef $MESSAGE;

   %votecookie= IWEB::split_cookie( $ENV{ 'HTTP_COOKIE' }, $SITE );

   if ( $votecookie{ 'voted' } eq "Yes" ) {
      $MESSAGE = "<FONT COLOR=\"red\"><B>$language{'cookie_error'}</B></FONT><BR><BR>";
      $Count_It = undef;
   }
   else {
      $MESSAGE = "$language{'thanks_for_vote'}<BR><BR>";
      $Count_It = 1;
   }

   $newcookie= "voted\~Yes";

   $COOKIE = "Set-Cookie: $SITE=$newcookie;expires=$cdate;path=/\n";

   return($Count_It);

}
