#!/usr/bin/perl $| = 1; # Enter your server information here. # Any URL included will be able to run the script. require "../var.pl"; require "../master.pl"; require "$siteroot/store/data/settings.dat"; &require_supporting_libraries (__FILE__, __LINE__, "$siteroot/store/admin/store.setup.db"); &require_supporting_libraries (__FILE__, __LINE__, "$sc_html_setup_file_path", "$sc_commerce_subs_path"); $sc_order_script_url = "http://$domainroot/cgi-bin/store.cgi"; if(-e "$siteroot/store/store.cgi") { $sc_order_script_url = "http://$domainroot/store/store.cgi"; } if(-e "$siteroot/store.cgi") { $sc_order_script_url = "http://$domainroot/store.cgi"; } $currency_script_url = "http://$domainroot/cgi-bin/currency.cgi"; if(-e "$siteroot/store/currency.cgi") { $currency_script_url = "http://$domainroot/store/currency.cgi"; } if(-e "$siteroot/currency.cgi") { $currency_script_url = "http://$domainroot/currency.cgi"; } if ($ENV{'CONTENT_LENGTH'} ne "") { my( @pairs, $pair, $name, $value ); read(STDIN, $value, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $value); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $form_data{$name} = $value; } } if ($ENV{'QUERY_STRING'} ne "") { @pairs = split(/&/, $ENV{QUERY_STRING}); foreach $pair (@pairs) { ($name,$value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s///g; $form_data{$name} = $value; } } if ($form_data{'product'} ne "") { push (@files_to_open, $form_data{'product'}); } elsif ($form_data{'type'} ne "") { $form_data{'type'}=~ s/_/ /g; $form_data{'type'}=~ s/\%20/ /g; $form_data{'type'}=~ s/\%26/\&/g; $form_data{'type'}=~ s/\%23/\#/g; $form_data{'type'}=~ s/\%21/\!/g; $form_data{'type'}=~ s/\%28/\(/g; $form_data{'type'}=~ s/\%29/\)/g; $form_data{'type'}=~ s/\%22/\"/g; $form_data{'type'}=~ s/\%27/\'/g; $form_data{'type'}=~ s/\%2F/\//g; $form_data{'type'}=~ s/\%3A/\:/g; $form_data{'type'}=~ s/\%3B/\;/g; $form_data{'type'}=~ s/\%3F/\?/g; $form_data{'type'}=~ s/\%5C/\\/g; $form_data{'type'}=~ s/\%7C/\|/g; $form_data{'type'}=~ s/\%2B/\+/g; $form_data{'type'}=~ s/\%60/\`/g; $form_data{'type'}=~ s/\%7E/\~/g; $form_data{'type'}=~ s/\%24/\$/g; $form_data{'type'}=~ s/\%5E/\^/g; $form_data{'type'}=~ s/\%2C/\,/g; $form_data{'type'}=~ s/\%5B/\[/g; $form_data{'type'}=~ s/\%5D/\]/g; $form_data{'type'}=~ s/\%7B/\{/g; $form_data{'type'}=~ s/\%7D/\}/g; $form_data{'type'}=~ s/\%3C/\/g; } elsif ($form_data{'keywords'} ne "") { &open_cats; } elsif ($form_data{'sku'} ne "") { &open_cats; } elsif ($form_data{'query_price_low_range'} ne "") { &open_cats; } elsif ($form_data{'query_price_high_range'} ne "") { &open_cats; } $search_request = $form_data{'search_request_button'}; $refer_id = $form_data{'refer_id'}; if ($refer_id =~ /^(\w+)$/) { $refer_id = $1; } else { $refer_id = ""; } if ($form_data{'cart_id'} eq "") { $cdata = $ENV{'HTTP_COOKIE'}; @cookies = split(/;/,$cdata); foreach $new_cookie (@cookies) { ($cookie_name, $cid) = split(/=/,$new_cookie); if($cookie_name =~ /cart/) { $cart_id=$cid; $cookie="yes"; } } if ($cart_id eq "") { srand (time|$$); $cart_id = int(rand(10000000)); $cart_id .= "_$$"; $cart_id =~ s/-//g; @months = ("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug", "Sep","Oct","Nov","Dec"); @days = ("Sun","Mon","Tue","Wed","Thu","Fri","Sat"); ($sec,$min,$hr,$mday,$mon,$yr,$wday,$yday,$isdst) = gmtime(time + (86400*1)); $timestr = sprintf("%3s, %02d-%3s-%4d %02d:%02d:%02d GMT", $days[$wday],$mday,$months[$mon],$yr+1900,$hr,$min,$sec); print "Set-Cookie: cart_id=$cart_id; expires=$timestr\n"; } } if ($form_data{'cart_id'} ne "") { $cart_id=$form_data{'cart_id'}; } $sc_cart_path = "$sc_carts_directory_path/$cart_id.cart"; $are_any_query_fields_filled_in = "no"; foreach $query_field (@sc_db_query_criteria) { @criteria = split(/\|/, $query_field); if ($form_data{$criteria[0]} ne "") { $are_any_query_fields_filled_in = "yes"; } } print "Content-type: text/html\n\n"; if ($form_data{'add_to_cart_button'} ne "") { require "$siteroot/store/library/cart.pl"; &add_to_the_cart; exit; } elsif ($form_data{'modify_cart_button'} ne "") { require "$siteroot/store/library/cart.pl"; &display_cart_contents; exit; } elsif ($form_data{'checkout'} eq "yes") { $form_data{'no_cart'}="yes"; require "$siteroot/store/library/store_order_lib.pl"; require "$siteroot/store/library/calculations.pl"; require "$siteroot/store/admin/shipping.setup.db"; $form_data{'order_form_button'}="yes"; &display_order_form; &StoreFooter; exit; } elsif ($form_data{'view_cart'} ne "") { require "$siteroot/store/library/cart.pl"; &display_cart_contents; exit; } elsif ($form_data{'order_status'} ne "") { &require_supporting_libraries (__FILE__, __LINE__, "$siteroot/store/library/store_html_search.pl"); &order_tracking; exit; } elsif ($form_data{'order_status_submit'} ne "") { &require_supporting_libraries (__FILE__, __LINE__, "$siteroot/store/library/store_html_search.pl"); &order_tracking_submit; exit; } elsif ($form_data{'advanced_search'} ne "") { &require_supporting_libraries (__FILE__, __LINE__, "$siteroot/store/library/store_html_search.pl"); &advanced_search; exit; } elsif ($form_data{'advanced_search_submit'} ne "") { &require_supporting_libraries (__FILE__, __LINE__, "$siteroot/store/library/store_html_search.pl"); &advanced_search_submit; exit; } elsif ($form_data{'change_quantity_button'} ne "") { require "$siteroot/store/library/cart.pl"; &output_modify_quantity_form; exit; } elsif ($form_data{'submit_change_quantity_button'} ne "") { require "$siteroot/store/library/cart.pl"; &modify_quantity_of_items_in_cart; exit; } elsif ($form_data{'delete_item_button'} ne "") { require "$siteroot/store/library/cart.pl"; &output_delete_item_form; exit; } elsif ($form_data{'submit_deletion_button'} ne "") { require "$siteroot/store/library/cart.pl"; &delete_from_cart; exit; } elsif ($form_data{'order_form_button'} ne "") { &require_supporting_libraries (__FILE__, __LINE__, "$siteroot/store/library/store_order_lib.pl", "$siteroot/store/library/calculations.pl", "$siteroot/store/admin/shipping.setup.db"); &display_order_form; &StoreFooter; exit; } elsif ($form_data{'confirm_order_button'} ne "") { &require_supporting_libraries (__FILE__, __LINE__, "$siteroot/store/library/confirm.pl", "$siteroot/store/library/calculations.pl", "$siteroot/store/admin/shipping.setup.db"); &confirm_order; &StoreFooter; exit; } elsif ($form_data{'submit_order_confirm_button'} ne "") { &require_supporting_libraries (__FILE__, __LINE__, "$siteroot/store/library/process.pl", "$siteroot/store/library/calculations.pl", "$siteroot/store/admin/shipping.setup.db", "$siteroot/store/library/export.pl","$siteroot/store/library/cust_log.pl"); srand (time|$$); $cart_id = int(rand(10000000)); $cart_id .= "_$$"; $cart_id =~ s/-//g; &process_order_confirm; &StoreFooter; exit; } elsif (($page ne "" || $form_data{'search_request_button'} ne "" || $form_data{'continue_shopping_button'} || $are_any_query_fields_filled_in =~ /yes/i) && ($form_data{'return_to_frontpage_button'} eq "")) { &display_products_for_sale; exit; } elsif ($form_data{'cancel'} ne "" && $ENV{'HTTP_REFERER'} eq /paypal.com/) { } elsif ($form_data{'return'} ne "" && $ENV{'HTTP_REFERER'} eq /paypal.com/) { &require_supporting_libraries (__FILE__, __LINE__, "$siteroot/store/library/process.pl","$siteroot/store/library/calculations.pl","$siteroot/store/library/export.pl","$siteroot/store/library/cust_log.pl"); srand (time|$$); $cart_id = int(rand(10000000)); $cart_id .= "_$$"; $cart_id =~ s/-//g; &process_order_confirm; exit; } elsif ($form_data{'x_response_code'} eq "1") { &require_supporting_libraries (__FILE__, __LINE__, "$siteroot/store/library/process.pl","$siteroot/store/library/calculations.pl","$siteroot/store/library/export.pl","$siteroot/store/library/cust_log.pl"); srand (time|$$); $cart_id = int(rand(10000000)); $cart_id .= "_$$"; $cart_id =~ s/-//g; &process_order_confirm; exit; } elsif ($form_data{'x_response_code'} eq "2" || $form_data{'x_response_code'} eq "3") { print "I'm sorry, an error has occurred. Please return to the orderform, check your data, and try again."; exit; } else { if (-e "$siteroot/index.html") { open(HTM, "$siteroot/index.html"); @html=; close(HTM); $indxhtml=join('',@html); $indxhtml=~ s/cart_id=/cart_id=$cart_id/g; $indxhtml=~ s/refer_id=/refer_id=$refer_id/g; print $indxhtml; } } ####################################################################### # display_cart_contents Subroutine # ####################################################################### sub display_cart_contents { local (@cart_fields); local ($field, $cart_id_number, $quantity, $display_number, $unformatted_subtotal, $subtotal, $unformatted_grand_total, $grand_total); &standard_page_header("View/Modify Cart"); &display_cart_table(""); &cart_footer; exit; } ####################################################################### # Require Supporting Libraries. # ####################################################################### sub require_supporting_libraries { local ($file, $fileline, @require_files) = @_; local ($require_file); foreach $require_file (@require_files) { if (-e "$require_file" && -r "$require_file") { require "$require_file"; } else { print "I am sorry but I was unable to require $require_file at line $fileline in $file. Would you please make sure that you have the path correct and that the permissions are set so that I have read access? Thank you."; exit; } } # End of foreach $require_file (@require_files) } # End of sub require_supporting_libraries ####################################################################### # Display products for Sale # ####################################################################### sub display_products_for_sale { if ($sc_use_html_product_pages eq "yes") { if ($form_data{'search_request_button'} ne "") { &standard_page_header("Search Results"); require "$sc_html_search_routines_library_path"; &html_search; &html_search_page_footer; exit; } &display_page("$sc_html_product_directory_path/$page", "Display products for Sale", __FILE__, __LINE__); } else { &create_html_page_from_db; } } ####################################################################### # create_html_page_from_db Subroutine # ####################################################################### sub create_html_page_from_db { $idcount=0; $full_count=0; local (@database_rows, @database_fields, @item_ids, @display_fields); local ($total_row_count, $id_index, $display_index); local ($row, $field, $empty, $option_tag, $option_location, $output); if ($form_data{'add_to_cart_button'} ne "" && $sc_shall_i_let_client_know_item_added eq "yes") { print "$sc_item_ordered_message"; } if (!($sc_db_lib_was_loaded =~ /yes/i)) { &require_supporting_libraries (__FILE__, __LINE__, "$sc_db_lib_path"); } ($status,$total_row_count) = &submit_query(*database_rows, $form_data{'hits_seen'}); if ($form_data{'product'} ne "" && $form_data{'sku'} ne "") { $select=qq~$keyword_header : Sku \# $form_data{'sku'}~; } if ($form_data{'product'} ne "" && $form_data{'sku'} eq "") { $looper=0; $looper2=0; $pages_total=0; while ($looper < $how_many_rows) { if ($looper2 eq "$sc_db_max_rows_returned"){$pages_total ++;$looper2=0;} $looper ++; $looper2 ++; } $end_page_number=$pages_total+1; $hits_select="Page 1 of $end_page_number"; $looper=0; while ($looper < $pages_total) { $looper ++; $page_number=$looper+1; $option_value=$looper*$sc_db_max_rows_returned; $hits_select .=" $hits_select ~; } &product_page_header($sc_product_display_title); if ($feature_display eq "yes" && $form_data{'type'} eq "" && $form_data{'sku'} eq "") { print qq~ Browse Categories in $side_title : $side_image $side_info $all_features ~; &StoreFooter; exit; } else { $feature_display = "no"; $hits_seen = $form_data{'hits_seen'} + $sc_db_max_rows_returned; ############# SHOW SINGLE PRODUCT ################# ################################################### if ($form_data{'sku'} ne "") { &require_supporting_libraries (__FILE__, __LINE__, "$siteroot/store/library/show_one.pl"); &show_one; } ########### SHOW ALL PRODUCTS ############### ################################################### if (($form_data{'product'} ne "" && $form_data{'sku'} eq "" && $feature_display ne "yes") || $form_data{'keywords'} ne "" || $form_data{'query_price_high_range'} ne "") { &require_supporting_libraries (__FILE__, __LINE__, "$siteroot/store/library/show_all.pl"); &show_all; } ################################################### ################################################### if (($form_data{'product'} ne "" && $form_data{'sku'} eq "") || $form_data{'keywords'} ne "" || $form_data{'query_price_high_range'} ne "") { if ($full_count eq "0") { print ""; } if ($full_count eq "1") { print " "; } if ($full_count eq "2") { print " "; } } &product_page_footer($status,$total_row_count); } exit; } ####################################################################### # file_open_error Subroutine # ####################################################################### sub file_open_error { local ($bad_file, $script_section, $this_file, $line_number) = @_; open(ERROR, $error_page); while () { print $_; } close (ERROR); } ####################################################################### # display_page Subroutine # ####################################################################### sub display_page { local ($routine, $file, $line) = @_; &StoreHeader; } ################################################################# # get_date Subroutine # ################################################################# sub get_date { # The subroutine begins by defining # some local working variables local ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst,$date); local (@days, @months); @days = ('Sunday','Monday','Tuesday','Wednesday','Thursday', 'Friday','Saturday'); @months = ('January','February','March','April','May','June','July', 'August','September','October','November','December'); # Next, it uses the localtime command to get the current # time, from the value returned by the time # command, splitting it into variables. ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); if ($hour < 10) { $hour = "0$hour"; } if ($min < 10) { $min = "0$min"; } if ($sec < 10) { $sec = "0$sec"; } $year += 1900; $date = "$days[$wday], $months[$mon] $mday, $year at $hour\:$min\:$sec"; return $date; } ################################################################# # display_price Subroutine # ################################################################# sub display_price { local ($price) = @_; local ($format_price); if ($form_data{'sku'} ne "" || $form_data{'keywords'} ne "" || $form_data{'product'} ne "" || $form_data{'query_price_high_range'} ne "") { $format_price = "$price"; } else { $format_price = "$sc_money_symbol $price"; } return $format_price; } ####################################################################### # get_file_lock # ####################################################################### sub get_file_lock { local ($lock_file) = @_; local ($endtime); $endtime = 20; $endtime = time + $endtime; while (-e $lock_file && time < $endtime) { sleep(1); } open(LOCK_FILE, ">$lock_file") || &CgiDie ("I could not open the lock file"); } ####################################################################### # release_file_lock # ####################################################################### sub release_file_lock { local ($lock_file) = @_; close(LOCK_FILE); unlink($lock_file); } ####################################################################### # format_price # ####################################################################### sub format_price { local ($unformatted_price) = @_; local ($formatted_price); $formatted_price = sprintf ("%.2f", $unformatted_price); return $formatted_price; } sub format_text_field { local($value, $width) = @_; $width = 25 if (!$width); return ($value . (" " x ($width - length($value)))); } ####################################################################### # Open Cat Files # ####################################################################### sub open_cats { open(CATS, "$siteroot/store/data/categories.dat"); @cats_dat=; close(CATS); foreach $category_line (@cats_dat) { ($cat_line, $category_image, $sidebar_image, $cat_info, $cat_color)=split(/\|/, $category_line); chomp($cat_color); if ($category_image eq "" || $category_image eq "text") { $use_text_menu="yes"; } $cat_line=~ s/\s//g; $cat_line=~ s/\W//g; $cat_line=~ s/ //g; if ($cat_line ne "") { push (@files_to_open, $cat_line); } } } ####### exit;