#!/usr/bin/perl MAIN: { $server = $ENV{'SERVER_NAME'}; $query = $ENV{'QUERY_STRING'}; $query0 = $query; $query =~ s/\&stk\=.*//; $query0 =~ s/\&price\_range\=.*//g; $domain = $server; if ( $domain =~ m/sex\-superstore/i ) { $domain = '.sex-superstore.com' } else { $domain = '' } #affiliate flag if ( !( $server =~ m/pexxx/i ) and !( $server =~ m/privateentertainment/i ) and !( $server =~ m/myadultwarehouse/i ) ) { $aff_flag = 1; } if ( $server =~ /shop\.sex\-superstore\.com/i or $server =~ /store\.sex\-superstore\.com/i or $server =~ /store\.dev\.sex\-superstore\.com/i or $server =~ /shop\.dev\.sex\-superstore\.com/i ) { $aff_super = 1; } #initial categories @asso00 = ( 'hotdeal', 'anal', 'gaggift', 'battery', 'bondage', 'book', 'cockring', 'condom', 'dildo', 'egg', 'enhancer', 'extension', 'couples', 'games', 'grooming', 'headcleaner', 'herbals', 'jewelry', 'lingerie', 'doll', 'lube', 'massage', 'vagina', 'pump', 'strap-on', 'vibrator' ); #init-name association @asso0 = ( 'all', 'New Releases', 'hotdeal', 'Hot Deals!', 'anal', 'Anal Toys', 'gaggift', 'Bachelorette', 'battery', 'Batteries', 'bondage', 'Bondage', 'book', 'Books', 'cockring', 'Cockrings', 'condom', 'Condoms', 'dildo', 'Dildos/Dongs', 'egg', 'Eggs/Bullets', 'enhancer', 'Enhancers', 'extension', 'Extensions', 'couples', 'For Couples', 'games', 'Games', 'grooming', 'Grooming', 'headcleaner', 'Head Cleaner', 'herbals', 'Herbals', 'jewelry', 'Jewelry', 'lingerie', 'Lingerie', 'doll', 'Love Dolls', 'lube', 'Lubricants', 'massage', 'Massage', 'vagina', 'Masturbators', 'pump', 'Penis Pumps', 'strap-on', 'Strap-Ons', 'vibrator', 'Vibrators' ); %asso0 = @asso0; $pth = 'pthumbs'; $status = 'date'; $order = 'ASC'; $order_list = 'ASC'; #DATE local ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time); $year = 1900 + $year; local (@month) = ( 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ); local ($mo) = $month[$mon]; &ReadParse; ( $text, $type, $criteria, $last, $last_list, $first, $first_list, $fam, $hotdeal, $discount, $bestseller, $init, $dozen, $dozen_list, $letter, $init1, $noresult, $affiliate, $stk, $price_range ) = ( $in{'text'}, $in{'type'}, $in{'criteria'}, $in{'last'}, $in{'last_list'}, $in{'first'}, $in{'first_list'}, $in{'fam'}, $in{'hotdeal'}, $in{'discount'}, $in{'bestseller'}, $in{'init'}, $in{'dozen'}, $in{'dozen_list'}, $in{'letter'}, $in{'init1'}, $in{'noresult'}, $in{'af'}, $in{'stk'}, $in{'price_range'} ); if (length($ecode) > 10) { die('Invalid Parameter'); } if ( $criteria eq 'ecode' ) { $init = ''; $init1 = ''; } &fam2init; #converts some families to inits if ( !$type ) { $type = 'toys' } if ( $text eq 'hotdeal' or $init eq 'hotdeal' ) { $hotdeal = 'Yes' } if ( $criteria eq 'voldiscount' or $init eq 'voldiscount' ) { $discount = 'Yes'; $init = 'voldiscount'; } if ( $discount eq 'Yes' ) { $criteria = 'voldiscount' } if ( $criteria eq 'init' ) { $init = $text } if ( !$init and !$criteria ) { $init = 'all' } if ($noresult) { $text = $noresult; $criteria = 'ecode'; } if ( $text eq 'all' and $criteria eq 'init' ) { $text = ''; $criteria = ''; } if ( $stk eq 'Yes' ) { $first = ''; $last = ''; $first_list = ''; $last_list = ''; $dozen = 1; $dozen_list = 1; } if ($price_range) { $price_app = "&price_range=$price_range" } &get_cookie; $stock = $cookie{'stock'}; $stock = substr( $stock, 0, 1 ); if ( !$stock or ( $stock ne 'N' and $stock ne 'T' and $stock ne 'A' and $stock ne 'P' and $stock ne 'O' and $stock ne 'F' and $stock ne 'D' ) ) { $stock = 'N'; } if ( $stock ne 'N' ) { $inv_mod = " and inventory.available='$stock'"; } else { $inv_mod = " and (inventory.available='T' or inventory.available='P')"; } $res_field = 'results'; if ( $stock eq 'T' ) { $sel_T = 'selected'; $res_field = 'res_T' } if ( $stock eq 'A' ) { $sel_A = 'selected'; $inv_mod = ''; $res_field = 'res_A'; } if ( $stock eq 'P' ) { $sel_P = 'selected'; $res_field = 'res_P' } if ( $stock eq 'O' ) { $sel_O = 'selected'; $res_field = 'res_O' } if ( $stock eq 'F' ) { $sel_F = 'selected'; $res_field = 'res_F'; } if ( $stock eq 'D' ) { $sel_D = 'selected'; $res_field = 'res_D'; } if ( !( $affiliate =~ /^\d/ ) ) { $affiliate = $cookie{'affiliate'}; } $affiliate =~ s/\D.*//s; if ( !( $affiliate =~ /^\d/ ) ) { $affiliate = 0 } if ( !$dozen ) { $dozen = 1 } if ( !$dozen_list ) { $dozen_list = 1 } $dozen0 = $dozen - 1; $dozen1 = $dozen + 1; $dozen_list0 = $dozen_list - 1; $dozen_list1 = $dozen_list + 1; $first_list0 = $first_list; $last_list0 = $last_list; if ( !$init1 and ( $discount eq 'Yes' ) ) { $init1 = 'all' } use CGI; $foo = new CGI; $text3 = $foo->escape($text); ###CATEGORY & family SELECT $text_type = $type; open( FILEHANDLE, "< store.txt" ) or print 'Cannot open file'; while () { chop $_; $code .= $_ } close(FILEHANDLE); eval($code); %assa3 = @asso3; %assa1 = @asso1; %assa0 = @asso0; $fam_number = ( $#asso1 + 1 ) / 2; $initial = $assa0{$init}; if ( !$text ) { $text = $initial } $family = $assa1{$fam}; if ( $criteria eq 'init' ) { $text1 = " > $asso0{$text}"; } if ($fam) { $fam1 = " > $family"; } if ($init1) { $fam1 = " > $asso0{$init1}"; } require("../inc/dbc.dat"); #show stream if ( $criteria ne 'init' ) { $text1 = " > $text"; } if ( $hotdeal eq 'Yes' ) { $text1 = " > Hot Deals!"; $addition = '&hotdeal=Yes'; } if ( $discount eq 'Yes' ) { $text1 = " > Volume Discounts"; $addition = '&discount=Yes'; } if ( $bestseller eq 'Yes' ) { $text1 = " > Bestsellers"; $addition = '&bestseller=Yes'; $pth = 'pimage'; } $type1 = "Sex Toys"; #types for Cart $type3 = $type; if ( $type eq 'magazines' ) { $type3 = 'mag' } if ( $type eq 'toys' ) { $type3 = 'toy' } if ($family) { $family3 = ": $family" } if ($initial) { $initial3 = " $initial" } require("/export/home0/vhost218/cgi-serverwide/colors.pl"); #page layout print &PrintHeader; print < Sex Toys: $initial3$family3 $style_sheet EOT require("/export/home0/vhost218/cgi-serverwide/header.pl"); print < EOT require("/export/home0/vhost218/cgi-serverwide/menu_new.pl"); #price range/match if ($price_range) { #field for price if ( ( $aff_flag and !( $server =~ m/shop/ ) ) or ( $server =~ m/myadultwarehouse/ ) ) { $price_field = 'price'; } else { $price_field = 'saleprice' } if ( $price_range !~ /\-/ ) { #exact match $price_match = $price_range; if ( $price_match =~ /^\d+$/ or $price_match =~ /^\d+\.\d+$/ ) { $price_mod = "$price_field=$price_match"; $price2 = "\$$price_match"; $price1 = " > $price2"; } } else { #range ( $price_min, $price_max ) = split /-/, $price_range; if ( $price_min =~ /^\d+$/ or $price_min =~ /^\d+\.\d+$/ ) { $price_mod_min = "$price_field>$price_min"; } if ( $price_max =~ /^\d+$/ or $price_max =~ /^\d+\.\d+$/ ) { $price_mod_max = "$price_field<$price_max"; } if ( $price_mod_min and $price_mod_max ) { $price_mod = "$price_mod_min and $price_mod_max"; $price2 = "\$$price_min - \$$price_max"; $price1 = " > $price2"; } elsif ($price_mod_min) { $price_mod = $price_mod_min; $price2 = "more than \$$price_min"; $price1 = " > $price2"; } elsif ($price_mod_max) { $price_mod = $price_mod_max; $price2 = "less than \$$price_max"; $price1 = " > $price2"; } } } print <
EOT #product DB retrieve $table = 'date_' . $type; $table1 = 'aph_' . $type; if ( $init ne 'all' ) { $where = "WHERE initial='$init'"; $where_list = "WHERE initial='$init'"; } else { $where = "WHERE (bigkey>=0)"; $where_list = "WHERE (bigkey>=0)"; } if ( $criteria eq 'title' ) { $crt = 'product_name' } if ( $criteria eq 'manufacturer' ) { $crt = 'manufacturer' } if ( $criteria eq 'star' ) { $crt = 'stars' } if ( $criteria eq 'ecode' ) { $crt = 'inventory.item' } if ( $criteria eq 'init' ) { $crt = 'initial' } if ( $criteria eq 'sku' ) { $crt = 'sku' } if ( $text ne 'all' ) { $textE = "%" . $text . "%"; } else { $textE = "%" . "%"; } $textE = $dbh->quote($textE); if ( $criteria or $init1 ) { $where = "WHERE $crt LIKE $textE"; $where_list = "WHERE $crt LIKE $textE"; if ($init1) { $where = $where . " and initial='$init1'"; $where_list = $where_list . " and initial='$init1'"; } } if ( $discount eq 'Yes' ) { $where = "WHERE voldiscount='T'"; $where_list = "WHERE voldiscount='T'"; if ($init1) { $where = $where . " and initial='$init1'"; $where_list = $where_list . " and initial='$init1'"; } } if ($fam) { $where = $where . " and (family1='$fam' or family2='$fam' $where1)"; $where_list = $where_list . " and (family1='$fam' or family2='$fam' $where1)"; } if ( $hotdeal eq 'Yes' ) { $where = "WHERE hotdeals='T'"; $where_list = "WHERE hotdeals='T'"; if ($fam) { $where = $where . " and (initial='$fam' or family1='$fam' or family2='$fam')"; $where_list = $where_list . " and (initial='$fam' or family1='$fam' or family2='$fam')"; } } if ($last) { $where = $where . " and bigkey>'$last'" } if ($first) { $where = $where . " and bigkey<'$first'"; $order = 'DESC' } if ($letter) { $where = $where . " and product_name LIKE '$letter%'" } if ($price_mod) { if ($where) { $where = "$where and $price_mod"; } else { $where = "WHERE $price_mod"; } if ($where_list) { $where_list = "$where_list and $price_mod"; } else { $where_list = "WHERE $price_mod"; } } &getProductData; if ( ( $criteria eq 'ecode' ) and !$imax0 ) { if ( $ecode_pri = &getEcode($text) ) { $where = "WHERE inventory.item='$ecode_pri'"; $where_list = "WHERE inventory.item='$ecode_pri'"; &getProductData; } } else { $ecode_pri = $text } if ($first) { @ecode = reverse @ecode; @product_name = reverse @product_name; @saleprice = reverse @saleprice; @price = reverse @price; @manufacturer = reverse @manufacturer; @image = reverse @image; @onsale = reverse @onsale; @bigkey = reverse @bigkey; @synopsis = reverse @synopsis; @stars = reverse @stars; @options = reverse @options; @opts_set = reverse @opts_set; @ecodes_set = reverse @ecodes_set; @stock_this = reverse @stock_this; @opt_set1 = reverse @opt_set1; } $first = $bigkey[0]; $last = $bigkey[$imax]; #alphabetic list $where_list0 = $where_list; if ($last_list) { $where_list = $where_list . " and bigkey>'$last_list'" } if ($first_list) { $where_list = $where_list . " and bigkey<'$first_list'"; $order_list = 'DESC'; } if ($letter) { $where_list = $where_list . " and product_name LIKE '$letter%'"; $where_list0 = $where_list0 . " and product_name LIKE '$letter%'"; } $sql2 = $dbh->prepare( " SELECT $table1.item,$table1.product_name,$table1.bigkey FROM $table1,inventory $where_list and $table1.item=inventory.item $inv_mod ORDER by $table1.bigkey $order_list LIMIT 50 " ); $sql2->execute; $j = 0; while ( @record1 = $sql2->fetchrow_array ) { ( $list_ecode[$j], $list[$j], $bigkey_list[$j] ) = @record1; $j++; } $sql2->finish; #number of search results if ( $letter or ( $criteria and ( $criteria ne 'init' ) and $text ) ) { #check search DB if ( $criteria and ( $criteria ne 'init' ) ) { $phrase = $dbh->quote($text); $sql0 = $dbh->prepare( " SELECT hits,$res_field,inits FROM search WHERE phrase=$phrase and type='$type' and criteria='$criteria' and site='SuperStore' LIMIT 1 " ); $sql0->execute; ( $hits, $results, $inits ) = $sql0->fetchrow_array; $sql0->finish; } if ( !$hits or ( $results < 0 ) ) { if ( $criteria ne 'ecode' ) { $add_inv = " $inv_mod"; } else { $add_inv = '' } $sql3 = $dbh->prepare( " SELECT COUNT($table1.item) FROM $table1,inventory $where_list0 and $table1.item=inventory.item $add_inv ORDER by $table1.bigkey $order_list " ); $sql3->execute; $jj = 0; ($jj) = $sql3->fetchrow_array; $sql3->finish; if ( !$hits and $criteria and ( $criteria ne 'init' ) ) { if ( $jj > 0 ) { $sql4 = $dbh->prepare( " SELECT DISTINCT $table1.initial FROM $table1,inventory $where_list0 and $table1.item=inventory.item $inv_mod " ); $sql4->execute; while ( ($init_dd) = $sql4->fetchrow_array ) { push( @init_ddd, $init_dd ); } $sql4->finish; $inits = join( ',', @init_ddd ); } $dbh->do( "INSERT search (phrase,type,criteria,hits,$res_field,inits,site) VALUES ($phrase,'$type','$criteria',1,$jj,'$inits','SuperStore') " ) } if ( ( $results < 0 ) and $criteria and ( $criteria ne 'init' ) ) { $dbh->do( "UPDATE search SET hits=hits+1,$res_field=$jj WHERE phrase=$phrase and type='$type' and criteria='$criteria' and site='SuperStore' " ); } } #end of no hits else { $jj = $results; if ( $criteria and ( $criteria ne 'init' ) ) { $dbh->do( "UPDATE search SET hits=hits+1 WHERE phrase=$phrase and type='$type' and criteria='$criteria' and site='SuperStore' " ); } } } ### end of number of search results @inits = split /,/, $inits; foreach $init_dd (@inits) { $init_present{$init_dd} = 'Yes' } if ( ( $jj >= 1 ) and ( $criteria eq 'ecode' ) and $text ) { print ""; } if ( $bestseller eq 'Yes' ) { print ""; } if ($first_list) { @list_ecode = reverse @list_ecode; @list = reverse @list; @bigkey_list = reverse @bigkey_list; } $first_list = $bigkey_list[0]; $last_list = $bigkey_list[ $j - 1 ]; $l0 = $#list; #FILTER FOR NAMES IN LIST $l = $#list + 1; local ($lil) = 0; local ($il) = 0; while ( $lil + $il <= 100 && $il <= $l - 1 ) { local ($lilo) = 0; local ($prev) = 0; for ( $i = 0 ; $i <= ( length( $list[$il] ) - 1 ) ; $i++ ) { if ( ( substr( $list[$il], $i, 1 ) eq ' ' ) && ( ( $i - $prev ) > 25 ) && substr( $list[$il], $i + 1, 1 ) ) { $prev = $i + $prev; $lilo++; substr( $list[$il], $i, 1 ) = '*'; } } $lil = $lil + $lilo; while ( $list[$il] =~ m/\*/ ) { $list[$il] =~ s/\*/<\/a>
   /; } $il++; } for ( $i = $0 ; $i < $il ; $i++ ) { $list[ $i + $il ] = $list[ $i + $l ] } $lold = $l; $l = $il; $list_key = $list[ 2 * $l - 1 ]; if ( $imax0 > 0 ) { $text1 = ( $fam ? "->$fam" : '' ); $n = $imax; for ( $i = 0 ; $i <= $imax ; $i++ ) { if ( &Flag( $i + 1 ) && $i != $n ) { #odd != last print ''; &Thumbs( 0, $product_name[$i], $image[$i], $synopsis[$i], $saleprice[$i], $bigkey[$i], $stars[$i], $onsale[$i], $ecode[$i], $options[$i], $opts_set[$i], $ecodes_set[$i], $price[$i], $stock_this[$i], $opt_set1[$i] ); } if ( !&Flag( $i + 1 ) ) { #even != 2 &Thumbs( 0, $product_name[$i], $image[$i], $synopsis[$i], $saleprice[$i], $bigkey[$i], $stars[$i], $onsale[$i], $ecode[$i], $options[$i], $opts_set[$i], $ecodes_set[$i], $price[$i], $stock_this[$i], $opt_set1[$i] ); print ''; } if ( &Flag( $i + 1 ) && $i eq $n ) { #odd=last print ''; &Thumbs( 1, $product_name[$i], $image[$i], $synopsis[$i], $saleprice[$i], $bigkey[$i], $stars[$i], $onsale[$i], $ecode[$i], $options[$i], $opts_set[$i], $ecodes_set[$i], $price[$i], $stock_this[$i], $opt_set1[$i] ); print ''; } } #end of product loop } ###### NO SEARCH RESULTS else { print < EOT } ### end of no search results # DOZENS CONTROL (NEXT -- PREVIOUS) if ( $n eq 19 and $dozen eq 1 ) { print &Nextt; } if ( $n eq 19 and $dozen > 1 and $dozen ne 1 ) { print &PreviousNext; } if ( $n < 19 and $dozen > 1 ) { print &Previous; } print <
  $type1$text1$fam1$price1

   No Sex Toys found matching your inventory and search criteria.
   Please search again. For help on search, click here

We recommend these Sex Toys Hot Deals:
EOT if ( $init and ( $init ne 'all' ) ) { $where_hot = "and initial='$init'"; } else { $where_hot = "" } $sql3 = $dbh->prepare( " SELECT date_toys.item,date_toys.product_name,date_toys.pthumbs,date_toys.price,date_toys.saleprice FROM date_toys,inventory WHERE date_toys.hotdeals='T' $where_hot and date_toys.item=inventory.item and inventory.available='T' ORDER by RAND() LIMIT 4 " ); $sql3->execute; while ( @record = $sql3->fetchrow_array ) { ( $item_th, $name_th, $thumb_th, $regprice_th, $price_th ) = @record; if ( ( $aff_flag and !( $server =~ m/shop/ ) ) or ( $server =~ m/myadultwarehouse/ ) ) { $price_th = $regprice_th; } print qq(); } $sql3->finish; print <
TOY

$name_th
\$$price_th
E_O_T require("/export/home0/vhost218/cgi-serverwide/cart.pl"); require("/export/home0/vhost218/cgi-serverwide/promo_inc.pl"); $initial1 = $initial; if ( $criteria and ( $criteria ne 'init' ) ) { $criteria1 = ucfirst $criteria; $initial1 = "$criteria1 : $text"; } print < E_O_T if ( !( $criteria and ( $criteria ne 'init' ) ) and ( $discount ne 'Yes' ) ) { print < E_O_T } if ( ( $criteria and ( $criteria ne 'init' ) ) or $discount eq 'Yes' ) { print < E_O_T } print <
   Alphabetically Sorted List
   $initial1
E_O_T &RightDefault; print <
E_O_T # DOZENS CONTROL for list (NEXT -- PREVIOUS) if ( $dozen_list > 1 ) { print "BACK       "; } if ( $l0 eq 49 ) { print "       NEXT"; } if ( $server =~ /^store/i or $server =~ /myadultwarehouse/i ) { #options for higher price $price_range_options = qq( ); } else { #options for lower price $price_range_options = qq( ); } print <


E_O_T $br = ''; $alph_count = 1; @alphabet = ( 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ); print <
Alphabetical E_O_T $initial_category = $foo->escape($initial_category); print <
E_O_T foreach $alphabet (@alphabet) { if ( $init ne 'top20' ) { $init2 = $init; $fam2 = $fam } else { $init2 = ''; $fam2 = '' } print <$alphabet $br E_O_T $br = ''; $alph_count++; if ( $alph_count == 13 or $alph_count == 26 ) { $br = '
'; } } print <
E_O_T #FOOTER require("/export/home0/vhost218/cgi-serverwide/footer.pl"); print < E_O_T $sql1->finish(); $dbh->disconnect; exit; } ############################################################################################################################################ sub Thumbs { local ( $control, $name, $image, $synopsis, $price, $key, $star, $onsale, $itkey, $option, $opt_set, $ecode_set, $regprice, $available, $stock_set ) = @_; local ($stks); undef @stks; local ($available2); if ( $available eq 'T' ) { $available2 = 'IN STOCK'; } if ( $available eq 'F' ) { $available2 = 'SPECIAL ORDER'; } if ( $available eq 'P' ) { $available2 = 'PRE-ORDER'; } if ( $available eq 'O' ) { $available2 = 'ON ORDER'; } if ( $available eq 'D' ) { $available2 = 'NOT AVAILABLE'; } #change plan A->B if ( ( $aff_flag and !( $server =~ m/shop/ ) ) or ( $server =~ m/myadultwarehouse/ ) ) { $price = $regprice; } #-change- $price = sprintf "%.2f", $price; local ( $tridot, $sale ); if ( $fam eq 'results' ) { $initial = $show_param; } if ( length($synopsis) > 90 ) { $synopsis = substr( $synopsis, 0, 90 ); $tridot = '...'; } else { $tridot = '' } if ($control) { print '
  '; } else { print ' '; } if ( $onsale eq 'T' ) { $sale = 'Volume Discounts'; } elsif ( $onsale eq 'C' ) { $sale = 'Clearance Specials'; } else { $sale = '' } $onsale1 = $onsale; if ( $onsale eq 'T' ) { $onsale1 = 1; } if ( $onsale eq 'F' ) { $onsale1 = 0; } $name1 = $name; $name1 =~ s/\'/\`/g; $name1 =~ s/\"/ inches/g; $name1 =~ s/™/\(TM\)/ig; print <
$name
$name
DETAILS
  $synopsis$tridot
more...
E_O_T if ( $option ne 'none' ) { @stks = split /,/, $stock_set; $opt_set =~ tr/\'/\`/; local (@opt) = split /,/, $opt_set; local (@ecd) = split /,/, $ecode_set; $opt0 = $opt[0]; $ecod0 = $ecd[0]; print " Select $option:
 '; $available2 = ""; } else { $opt0 = 'none'; $ecod0 = "$itkey"; } print <
 $available2 
  \$$price E_O_T $name = $name1; if ( $stks[0] ) { $available = $stks[0]; } if ( $available ne 'D' ) { print <$sale Add to Cart EOT } else { print ' ' } print <
E_O_T if ($control) { print '  '; } 1; } ######################################################################## # FUNCTION FLAG(NUMBER) sub Flag { local ($input) = @_; local ($flag) = 1; $flag = 0 if ( $input / 2 eq int( $input / 2 ) ); # $flag=0 if even, and =1 if odd; return $flag; 1; } ############################################################################################################################################ #RIGHTDEFAULT sub RightDefault { if ( $criteria and ( $criteria ne 'init' ) ) { $initial = $text; } if ( !$family ) { $family = 'All Categories'; if ($price_range) { $family = $price2 } } if ($letter) { $letter1 = "
   $letter" } if ( $letter or ( $criteria and ( $criteria ne 'init' ) ) ) { $family = "$jj products found$letter1"; } if ($init1) { $family = $asso0{$init1} . $letter1 } print <    $family
E_O_T for ( $j = 0 ; $j <= ( $l - 1 ) ; $j++ ) { print "• $list[$j]
"; } print "
"; 1; } ############################################################################################## sub fam2init { if ( $fam eq 'cockring' or $fam eq 'massage' or $fam eq 'egg' or $fam eq 'herbals' or $fam eq 'strap-on' ) { $init = $fam; $fam = ''; } else { return } } ############################################################################################################################################# sub getEcode { local ($ec) = @_; local ($sqlV) = $dbh->prepare( " SELECT item FROM ecode WHERE ecode='$ec' " ); $sqlV->execute; ($ec) = $sqlV->fetchrow_array; $sqlV->finish; return $ec; } ################################################################################## sub getProductData { local ( $ad_inv, $opt_i, $opt3_1, $ecd3_1, $stk3_1, $opt3_0, $ecd3_0, $stk3_0 ); if ( $criteria ne 'ecode' ) { $ad_inv = " $inv_mod"; } else { $ad_inv = '' } $sql1 = $dbh->prepare( " SELECT $table.item,$table.product_name,$table.saleprice,$table.price,$table.manufacturer,$table.$pth,$table.voldiscount,$table.bigkey,$table.synopsis,$table.stars,$table.options,$table.options_set,$table.item_set,inventory.available,inventory.opt_set FROM $table,inventory $where and $table.item=inventory.item $ad_inv ORDER by $table.bigkey $order LIMIT 20 " ); $sql1->execute; $i = 0; while ( @record = $sql1->fetchrow_array ) { ( $ecode[$i], $product_name[$i], $saleprice[$i], $price[$i], $manufacturer[$i], $image[$i], $onsale[$i], $bigkey[$i], $synopsis[$i], $stars[$i], $options[$i], $opts_set[$i], $ecodes_set[$i], $stock_this[$i], $opt_set1[$i] ) = @record; if ( substr( $synopsis[$i], 100, 1 ) ) { $synopsis[$i] = substr( $synopsis[$i], 0, 100 ) . '...'; } $ecodes_set[$i] =~ s/ //; if ( $options[$i] and ( $options[$i] ne 'none' ) ) { local (@opt3) = split /,/, $opts_set[$i]; local (@ecd3) = split /,/, $ecodes_set[$i]; local (@stk3) = split /,/, $opt_set1[$i]; #filter options for this stock if ( $stock ne 'A' ) { undef(@act_opt); for ( $opt_i = 0 ; $opt_i <= $#stk3 ; $opt_i++ ) { if ( $stock eq 'N' ) { if ( $stk3[$opt_i] eq 'T' or $stk3[$opt_i] eq 'P' ) { push( @act_opt, $opt_i ); } } elsif ( $stk3[$opt_i] eq $stock ) { push( @act_opt, $opt_i ); } } undef @opt3_1; undef @ecd3_1; undef @stk3_1; for ( $opt_i = 0 ; $opt_i <= $#act_opt ; $opt_i++ ) { $opt3_1[$opt_i] = $opt3[ $act_opt[$opt_i] ]; $ecd3_1[$opt_i] = $ecd3[ $act_opt[$opt_i] ]; $stk3_1[$opt_i] = $stk3[ $act_opt[$opt_i] ]; } $opts_set[$i] = join( ',', @opt3_1 ); $ecodes_set[$i] = join( ',', @ecd3_1 ); $opt_set1[$i] = join( ',', @stk3_1 ); } #push T to first pos. elsif ( $stk3[0] ne 'T' ) { $stk3_0 = $stk3[0]; $opt3_0 = $opt3[0]; $ecd3_0 = $ecd3[0]; COMMENTS: for ( $opt_i = 1 ; $opt_i <= $#stk3 ; $opt_i++ ) { if ( $stk3[$opt_i] eq 'T' ) { $stk3[0] = $stk3[$opt_i]; $stk3[$opt_i] = $stk3_0; $opt3[0] = $opt3[$opt_i]; $opt3[$opt_i] = $opt3_0; $ecd3[0] = $ecd3[$opt_i]; $ecd3[$opt_i] = $ecd3_0; last COMMENTS; } } $opts_set[$i] = join( ',', @opt3 ); $ecodes_set[$i] = join( ',', @ecd3 ); $opt_set1[$i] = join( ',', @stk3 ); } } $i++; } $imax0 = $i; $imax = $i - 1; $sql1->finish; } sub PrintHeader { return "Content-type: text/html\n\n"; } # NEXT sub Nextt { return " Next"; } # PREVIOUS sub Previous { return "Previous"; } # PREVIOUS-NEXT sub PreviousNext { return "PreviousNext"; } ########################################################################## sub get_cookie { local ( $chip, $val ); foreach ( split( /; /, $ENV{'HTTP_COOKIE'} ) ) { # split cookie at each ; (cookie format is name=value; name=value; etc...) # Convert plus to space (in case of encoding (not necessary, but recommended) s/\+/ /g; # Split into key and value. ( $chip, $val ) = split( /=/, $_, 2 ); # splits on the first =. # Convert %XX from hex numbers to alphanumeric $chip =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge; $val =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge; # Associate key and value $cookie{$chip} .= "\1" if ( defined( $cookie{$chip} ) ); # \1 is the multiple separator $cookie{$chip} .= $val; } } sub ReadParse { local (*in) = @_ if @_; local ( $i, $key, $val ); # Read in text if (&MethGet) { $in = $ENV{'QUERY_STRING'}; } elsif (&MethPost) { read( STDIN, $in, $ENV{'CONTENT_LENGTH'} ); } @in = split( /[&;]/, $in ); foreach $i ( 0 .. $#in ) { # Convert plus's to spaces $in[$i] =~ s/\+/ /g; # Split into key and value. ( $key, $val ) = split( /=/, $in[$i], 2 ); # splits on the first =. # Convert %XX from hex numbers to alphanumeric $key =~ s/%(..)/pack("c",hex($1))/ge; $val =~ s/%(..)/pack("c",hex($1))/ge; # Associate key and value $in{$key} .= "\0" if ( defined( $in{$key} ) ); # \0 is the multiple separator $in{$key} .= $val; } return scalar(@in); } sub MethGet { return ( $ENV{'REQUEST_METHOD'} eq "GET" ); } # MethPost # Return true if this cgi call was using the POST request, false otherwise sub MethPost { return ( $ENV{'REQUEST_METHOD'} eq "POST" ); }