|
NEW!
Free Minnesota Classifieds
Advertize your business or place your personal ad for
free!
Buy or sell digital cameras, computers, cars,... Find roommates, apartment
for rent, place personal ads, and more. Everything is free! |
- It is 100% free
- We do not ask for advetiser's personal data
- You can place a link to your website
- We keep your ad for 60 days
|
#!/usr/bin/perl
# THINGS TO MAKE THE PROGRAM WORK ########################################
use lib "./lib";
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use Digest::MD5 qw(md5_hex);
use common;
use sitevariables;
use functions;
use lang;
package default;
# PREPARATIONS ###########################################################
our $cur = CGI->new;
our $mode = $cur->param('mode');
our $viewcategory = $cur->param('viewcategory');
$viewcategory =~ s/_/ /ig;
our $adindex = $cur->param('adindex');
our $emailcookie = $cur->cookie('email');
our $passcookie = $cur->cookie('pass');
our $randlimit = 1000000000000;
srand(time);
our $content;
# log in/out stuff must be done before the page is printed ###############
if ($mode eq "newlogin" or $mode eq $lang::register){
firststuff();
}elsif($mode eq "logout"){
dologout();
}
if ($svb::runautodelete eq "yes" && $svb::autodelete != 0){
`./autodelete.pl`;
}
### MAIN PROGRAM #########################################################
print "Content-type:text/html\n\n";
## if they just came to index.cgi print the front page ###################
if (!$mode){
$content .= frontpage();
# if the mode needs a password check #####################################
}elsif($mode eq "place" or
$mode eq "edit" or
$mode eq "deletead" or
$mode eq $lang::submit_ad or
$mode eq $lang::update_ad or
$mode eq "confirm"){
# do password check and send them on to the right page if its correct ####
if (fcn::checkcookie($emailcookie,$passcookie) eq "yes"){
if ($mode eq "place"){
$content .= place();
}elsif($mode eq "edit" && $adindex){
$content .= editad();
}elsif($mode eq $lang::update_ad){
$content .= updatead();
}elsif($mode eq "edit"){
$content .= edit();
}elsif($mode eq "deletead" && $adindex){
$content .= confirmdelete();
}elsif($mode eq "deletead"){
$content .= deletead();
}elsif($mode eq $lang::submit_ad){
$content .= savead();
}elsif($mode eq "confirm"){
$content .= dodelete();
$content .= deletead();
}
# if its wrong, go back to login page ####################################
}else{
$content .= login();
}
# for pages that dont require password checks, send them straight there ##
}elsif($mode eq "login"){
$content .= login();
}elsif($mode eq "view" && $adindex){
$content .= viewsinglead();
}elsif($mode eq "view" && $viewcategory){
$content .= viewcategory();
}elsif($mode eq "view"){
$content .= frontpage();
}elsif($mode eq $lang::register){
$content .= redirect("registerpage");
}elsif($mode eq "registerpage"){
$content .= newregister();
}elsif($mode eq "newlogin"){
$content .= redirect("loginpage");
}elsif($mode eq "loginpage"){
$content .= newlogin();
}elsif($mode eq "search"){
$content .= searchpage();
}elsif($mode eq $lang::search){
$content .= searchresults();
}elsif($mode eq "email"){
$content .= email();
}elsif($mode eq "logout"){
$content .= logout();
}else{
$content .= frontpage();
}
# make the page and print it out #########################################
print printpage($content);
sub printpage {
my $content = $_[0];
$content .= $cmn::fuzzymonkey;
my $page;
open (TEMPLATE, "./$svb::templatefile")
|| cmn::dienice("$lang::read_file_error ./$svb::templatefile\: $!");
while (){
$page .= $_;
}
$page =~ s//$content/ig;
close TEMPLATE;
return $page;
}
sub frontpage {
my ($urlcat,$filename,$count,$count2,$category,$return);
$return .= "
";
# print the personalization ##############################################
if(fcn::checkcookie($emailcookie,$passcookie) eq "yes"){
$return .= "
$lang::logged_in_as\: $emailcookie
|
|
";
}
$return .= "
$svb::fontheader $lang::view_classifieds
|
| ";
$return .= cmn::leftmenu();
$return .= "
|
$svb::fontsmall $lang::browse_classifieds\:
|
$svb::fontsmall $lang::click_text \n";
$count = 0;
# print out a link for each category for browsing ########################
foreach $category(@svb::categories){
$filename = $category;
$filename =~ s/[_ \s\/\.!#\$\&\\\[\]\(\),-=\+]//ig;
unless (-e "./data/$filename.dat"){
open (OUTFILE,">>./data/$filename.dat")
||cmn::dienice("$lang::write_file_error $./data/$filename.dat: $!!");
close OUTFILE;
}
$count2 = fcn::get_ad_count_scalar($filename);
$urlcat = $category;
$urlcat =~ s/ /_/ig;
$return .= "$svb::categories[$count] ($count2) \n";
$count++;
}
$return .= "
|
|
|
|
";
return $return;
}
sub place{
my ($return,$category,$count);
# check cookie - they aren't allowed to post if they aren't logged in ####
cmn::dienice("$lang::invalid_email_and_password") unless (fcn::checkcookie($emailcookie,$passcookie) eq "yes");
# find out what needs to be printed out in the form and add the personalization and left menu to $return.
$count = 4;
$count ++ if($svb::allowpicurl eq "yes");
$count ++ if($svb::allowpicupload eq "yes");
$return .= "
";
# print the personalization ##############################################
$return .= "
$lang::logged_in_as\: $emailcookie
|
|
|
$svb::fontheader $lang::place_an_ad
|
| \n";
$return .= cmn::leftmenu();
# put the form together and add it to $return ############################
$return .= "
|
|
|
|
\n";
return $return;
}
sub deletead{
my ($return,$urlcat,$filename,$count,@temp,$pre,$count2,$date,$line,
@dates,$category,%alldata,$email,$itemcategory,$subject,$adtype,
$picurl,$adindex,$descrip,$weburl,$datenum,$prettydate);
$return .= "
";
# print the personalization ##############################################
if(fcn::checkcookie($emailcookie,$passcookie) eq "yes"){
$return .= "
$lang::logged_in_as\: $emailcookie
|
|
";
}
$return .= "
|
$svb::fontheader $lang::delete_your_ads
|
| \n";
$return .= cmn::leftmenu();
$return .= "
|
";
# print out every ad belonging to the logged in user #####################
foreach $category(@svb::categories){
$count = 0;
$urlcat = $category;
$urlcat =~ s/ /_/ig;
$filename = $category;
$filename =~ s/[_ \s\/\.!#\$\&\\\[\]\(\),-=\+]//ig;
($count,@dates) = fcn::get_own_dates_array($filename);
@temp = fcn::get_own_data_array($filename);
foreach $pre(@temp){
chomp $pre;
($email,$itemcategory,$subject,$adtype,$picurl,$adindex,$descrip,$weburl,$datenum) = split(/###/,$pre);
$alldata{$datenum} = $pre;
}
undef @temp;
if ($count){
$return .= "
|
$svb::fontsmall$category ";
$return .= "
|
";
}
$count2 = $count2 + $count;
$count = 0;
@dates = sort(@dates);
@dates = reverse(@dates);
foreach $date (@dates){
my $prettydate = cmn::mydate($date);
($email,$itemcategory,$subject,$adtype,$picurl,$adindex,$descrip,$weburl,$datenum) = split(/###/,$alldata{$date});
if ($email){
$return .= "
|
$svb::fontsmall $adtype
|
$svb::fontsmall $subject
|
$svb::fontsmall $prettydate
|
";
}
$count++;
$count = 0 if ($count == 2);
}
undef %alldata;
undef @dates;
}
if (!$count2){
$return .= "
|
$svb::fontsmall$lang::no_ads
|
";
}
$return .= "
|
|
|
";
return $return;
}
sub dodelete{
my $curadindex = $cur->param('adindex');
my $filename = $cur->param('viewcategory');
$curadindex =~ s/[\D]+//ig;
$filename =~ s/[_ \s\/\.!#\$\&\\\[\]\(\),-=\+]//ig;
my @data = fcn::get_all_data_array($filename);
fcn::func_dodelete($filename,$curadindex,@data);
undef @data;
}
sub edit{
my ($email,$itemcategory,$subject,$adtype,$picurl,$adindex,$descrip,$weburl,$datenum,$return,
$count,$filename,$urlcat,@dates,%alldata,$line,$date,$category,$pre,@temp,$prettydate);
$return .= "
";
# print the personalization ##############################################
if(fcn::checkcookie($emailcookie,$passcookie) eq "yes"){
$return .= "
$lang::logged_in_as\: $emailcookie
|
|
";
}
$return .= "
|
$svb::fontheader $lang::edit_your_ads
|
| \n";
$return .= cmn::leftmenu();
$return .= "
|
";
# print out all the ads of the logged in user ############################
foreach $category(@svb::categories){
$count = 0;
$urlcat = $category;
$urlcat =~ s/ /_/ig;
$filename = $category;
$filename =~ s/[_ \s\/\.!#\$\&\\\[\]\(\),-=\+]//ig;
($count,@dates) = fcn::get_own_dates_array($filename);
@temp = fcn::get_own_data_array($filename);
foreach $pre(@temp){
chomp $pre;
($email,$itemcategory,$subject,$adtype,$picurl,$adindex,$descrip,$weburl,$datenum) = split(/###/,$pre);
$alldata{$datenum} = $pre;
}
if ($count != 0){
$return .= "
|
$svb::fontsmall$category
|
";
}
$count = 0;
@dates = sort(@dates);
@dates = reverse(@dates);
foreach $date (@dates){
$prettydate = cmn::mydate($date);
($email,$itemcategory,$subject,$adtype,$picurl,$adindex,$descrip,$weburl,$datenum) = split(/###/,$alldata{$date});
if ($email){
$return .= "
|
$svb::fontsmall $adtype
|
$svb::fontsmall $subject
|
$svb::fontsmall $prettydate
|
";
}
$count++;
$count = 0 if ($count == 2);
}
undef %alldata;
undef @dates;
}
$return .= "
|
|
|
";
return $return;
}
sub login{
my $return;
$return .= "
|
$svb::fontheader $lang::please_log_in
|
|
|
|
|
|
";
return $return;
}
sub confirmdelete {
my ($return,$line,$email,$itemcategory,$subject,$adtype,$picurl,$curadindex,$descrip,$datenum,@stuff);
$return .= "
";
# print the personalization ##############################################
if(fcn::checkcookie($emailcookie,$passcookie) eq "yes"){
$return .= "
$lang::logged_in_as\: $emailcookie
|
|
";
}
my $urlcat = $cur->param('viewcategory');
my $curadindex = $cur->param('adindex');
my $filename = $urlcat;
$urlcat =~ s/ /_/ig;
$filename =~ s/[_ \s\/\.!#\$\&\\\[\]\(\),-=\+]//ig;
@stuff = fcn::get_one_ad_array($filename,$curadindex);
cmn::dienice("$lang::ownership_error") unless ($emailcookie eq $stuff[0]);
$return .= "
|
$svb::fontheader $lang::confirm_delete
|
| ";
$return .= cmn::leftmenu();
$return .= " |
$svb::fontsmall $lang::delete_this_ad (\"$stuff[2]\")?
$lang::delete $lang::cancel
|
|
";
return $return;
}
sub newregister{
my $return;
$return .= "
";
# print the personalization ##############################################
if(fcn::checkcookie($emailcookie,$passcookie) eq "yes"){
$return .= "
$lang::logged_in_as\: $emailcookie
|
|
";
}
$return .= "
|
$svb::fontheader $lang::thanks_register
|
| ";
$return .= cmn::leftmenu();
$return .= " |
$svb::fontsmall $lang::thanks_register_text
|
|
";
return $return;
}
sub newlogin{
my $return;
$return .= "
";
# print the personalization ##############################################
if(fcn::checkcookie($emailcookie,$passcookie) eq "yes"){
$return .= "
$lang::logged_in_as\: $emailcookie
|
|
";
}
$return .= "
|
$svb::fontheader $lang::welcome_back
|
| ";
$return .= cmn::leftmenu();
$return .= "
|
$svb::fontsmall $lang::welcome_back_text
|
|
";
return $return;
}
sub firststuff{
my $email = $cur->param('email');
my $pass = $cur->param('pass');
my $passmd5 = Digest::MD5::md5_hex($pass);
my ($line,$allow);
if ($email !~ /^[\w\-\.]+\@[\w\-\.]+\.[\w\-\.]+$/i){
print "Content-type:text/html\n\n";
cmn::dienice("$lang::invalid_email");
}
if($pass !~ /\w+/i){
print "Content-type:text/html\n\n";
cmn::dienice("$lang::invalid_password");
}
# If we are logging in ###################################################
if($mode eq "newlogin"){
$allow = fcn::checkcookie($email,$passmd5);
if($allow eq "BANNED"){
print "Content-type:text/html\n\n";
cmn::dienice($lang::you_have_been_banned);
}
if($allow ne "yes"){
print "Content-type:text/html\n\n";
cmn::dienice("$lang::invalid_login_combo");
}
}
# If we are registering for the first time ###############################
if ($mode eq $lang::register){
if ($pass =~ /\W/i or !$pass){
print "Content-type:text/html\n\n";
cmn::dienice("$lang::valid_password_check");
}
unless($email =~ /[\w\-]+\@[\w\-]+\.[\w\-]+/i){
print "Content-type:text/html\n\n";
cmn::dienice("$lang::invalid_email");
}
my $already = fcn::compare_email_for_register($email);
unless ($already eq "yes"){
fcn::add_user($email,$passmd5);
}else{
print "Content-type:text/html\n\n";
cmn::dienice("$lang::unique_email");
}
}
print "Set-Cookie: email=$email\n";
print "Set-Cookie: pass=$passmd5\n";
}
sub dologout{
print "Set-Cookie: email=\n";
print "Set-Cookie: pass=\n";
}
sub savead {
my ($return,$itemok,$picturename,$category,$count,$buffer,$urlcat);
my $itemcategory = $cur->param('itemcategory');
my $adtype = $cur->param('adtype');
my $subject = $cur->param('subject');
my $picurl = $cur->param('picurl');
my $weburl = $cur->param('weburl');
my $picture = $cur->param('picture');
my $descrip = $cur->param('descrip');
my $email = $cur->cookie('email');
my $adindex = int(rand($randlimit));
$adindex =~ s/\.\d+$//i;
$picurl = "http://$picurl" if ($picurl && $picurl !~ /http:\/\//i);
$weburl = "http://$weburl" if ($weburl && $weburl !~ /http:\/\//i);
# check everything for hack attempts, illegal characters, and stupidity ##
$descrip =~ s///ig;
$descrip =~ s/| //ig;
$descrip =~ s/ | //ig;
$descrip =~ s/<\/table>//ig;
$descrip =~ s/<\/td>//ig;
$descrip =~ s/<\/tr>//ig;
$descrip =~ s/ //ig;
foreach $category(@svb::categories){
$itemok = "okeydokey" if ($itemcategory eq $category);
}
cmn::dienice("$lang::please_choose_a_type") unless ($adtype);
cmn::dienice("$lang::choose_category") unless ($itemok eq "okeydokey");
cmn::dienice("$lang::check_subject") unless ($subject =~ /^.{5,50}$/i);
cmn::dienice("$lang::fill_in_subject") if ($subject eq "5-50 $lang::characters");
unless (!$picture){
unless($picture =~ /\.jpg$/i or
$picture =~ /\.png$/i or
$picture =~ /\.gif$/i){
cmn::dienice("$lang::file_type");
}
}
cmn::dienice("$lang::check_long_words") if ($descrip =~ /\S{30,30}/i);
$picturename = $adindex;
# right now we are only checking picture filetypes by extension in order to cut down on the number of dependancies
if ($picture =~ /\.jpg$/i){
$picturename .= ".jpg";
}elsif($picture =~ /\.png/i){
$picturename .= ".png";
}elsif($picture =~ /\.gif/i){
$picturename .= ".gif";
}
# get the picture from the user's computer and save it to the appropriate directory
mkdir "$svb::htmlsystempath/pictures" unless (-d "$svb::htmlsystempath/pictures");
if ($svb::allowpicupload eq "yes"){
if ($picture){
open (OUTFILE,">$svb::htmlsystempath/pictures/$picturename")
||cmn::dienice("$lang::write_file_error $svb::htmlurl/pictures/$picturename\: $!!");
while(my $bytesread = read($picture,$buffer,1024)){
print OUTFILE $buffer;
$count++;
if ($count > $svb::maxpicsize){
unlink "$svb::htmlsystempath/pictures/$picturename";
cmn::dienice("$lang::pic_too_big");
}
}
close OUTFILE;
}
}
# write the data out to the data files ###################################
fcn::add_ad($itemcategory,$subject,$adtype,$picurl,$adindex,$descrip,$email,$weburl);
# print the successful message ###########################################
$urlcat = $itemcategory;
$urlcat =~ s/ /_/ig;
# print the personalization ##############################################
$return .= "
$lang::logged_in_as\: $emailcookie
|
|
| ";
$return .= cmn::leftmenu(); # make the left menu
$lang::placed_successfully =~ s//$lang::here<\/a>/;
$return .= "
|
$svb::fontsmall $lang::placed_successfully
|
|
";
return $return; # spit out the results
}
sub updatead {
my ($return,$itemok,$buffer,$count,$urlcat,$category,$picturename);
my $itemcategory = $cur->param('itemcategory');
my $adtype = $cur->param('adtype');
my $subject = $cur->param('subject');
my $picurl = $cur->param('picurl');
my $weburl = $cur->param('weburl');
my $picture = $cur->param('picture');
my $descrip = $cur->param('descrip');
my $email = $cur->cookie('email');
my $adindex = $cur->param('adindex');
# check everything for hack attempts, illegal characters and stupidity ###
foreach $category(@svb::categories){
$itemok = "okeydokey" if ($itemcategory eq $category);
}
$picurl = "http://$picurl" if ($picurl && $picurl !~ /http:\/\//i);
$weburl = "http://$weburl" if ($weburl && $weburl !~ /http:\/\//i);
cmn::dienice("$lang::please_choose_a_type") unless ($adtype);
cmn::dienice("$lang::choose_category") unless ($itemok eq "okeydokey");
cmn::dienice("$lang::check_subject") unless ($subject =~ /^.{5,50}$/i);
cmn::dienice("$lang::fill_in_subject") if ($subject eq "5-50 $lang::characters");
$subject =~ s/(\S{30,30})/$1 /ig if ($subject =~ /.{30,30}/i);
unless (!$picture){
unless($picture =~ /\.jpg$/i or
$picture =~ /\.png$/i or
$picture =~ /\.gif$/i){
cmn::dienice("$lang::file_type");
}
}
cmn::dienice("$lang::check_long_words") if ($descrip =~ /\S{46,46}/i);
$picturename = $adindex;
# right now we are only checking picture filetypes by extension in order to cut down on the number of dependancies
if ($picture =~ /\.jpg$/i){
$picturename .= ".jpg";
}elsif($picture =~ /\.png$/i){
$picturename .= ".png";
}elsif($picture =~ /\.gif$/i){
$picturename .= ".gif";
}
if ($picture){
unlink "$svb::htmlsystempath/pictures/$adindex.jpg";
unlink "$svb::htmlsystempath/pictures/$adindex.gif";
unlink "$svb::htmlsystempath/pictures/$adindex.png";
}
# upload a new picture if applicable #####################################
if ($svb::allowpicupload eq "yes"){
if ($picture){
open (OUTFILE,">$svb::htmlsystempath/pictures/$picturename")
||cmn::dienice("$lang::write_file_error $svb::htmlurl/pictures/$picturename\: $!!");
while(my $bytesread = read($picture,$buffer,1024)){
print OUTFILE $buffer;
$count++;
cmn::dienice("$lang::pic_too_big") if ($count > $svb::maxpicsize);
}
close OUTFILE;
}
}
# write the data out to the mysql database ###############################
fcn::update_ad($adindex,$itemcategory,$subject,$adtype,$picurl,$descrip,$weburl);
$urlcat = $itemcategory;
$urlcat =~ s/ /_/ig;
$return .= "
$lang::logged_in_as\: $emailcookie
|
|
| ";
$return .= cmn::leftmenu();
$lang::updated_successfully =~ s//$lang::here<\/a>/;
$return .= "
|
$svb::fontsmall $lang::updated_successfully
|
|
";
return $return;
}
sub viewsinglead{
my ($return,$email,$itemcategory,$subject,$adtype,$picurl,$adindex,$descrip,
$weburl,$datenum,$urlcat,$line,$filename,$prettydate,@addata,$atag,$aclose);
my $selectedadindex = $cur->param('adindex');
fcn::counter($selectedadindex);
my $counter = fcn::getcount($selectedadindex);
my $viewcategory = $cur->param('viewcategory');
$viewcategory =~ s/_/ /ig;
$urlcat = $viewcategory;
$urlcat =~ s/ /_/ig;
$return .= "
";
# print the personalization ##############################################
if(fcn::checkcookie($emailcookie,$passcookie) eq "yes"){
$return .= "
$lang::logged_in_as\: $emailcookie
|
|
";
}
$return .= "
|
$svb::fontheader $lang::view_classifieds
|
| \n";
$return .= cmn::leftmenu();
$return .= "
|
";
$return .= "
|
$svb::fontsmall$viewcategory - $lang::back
|
";
# print out the ad formatted very nicely #################################
$filename = $viewcategory;
$filename =~ s/[ _\s\/\.!#\$\&\\\[\]\(\),-=\+]//ig;
@addata = fcn::get_one_ad_array($filename,$selectedadindex);
$prettydate = cmn::mydate($addata[8]);
$return .= "
| $svb::fontsmall $addata[2] - $prettydate - $counter $lang::views
|
$svb::fontsmall $lang::email_the_seller
|
";
$return .= "
|
$svb::fontsmall $addata[3]: $addata[6]
|
";
if ($addata[7]){
$atag = "";
$aclose = "";
}
if ($svb::allowpicurl =~ /yes/i){
if ($addata[4]){
$return .= "$atag $aclose | ";
undef $atag;
undef $aclose;
}
}
if ($svb::allowpicupload =~ /yes/i){
if (-e "$svb::htmlsystempath/pictures/$addata[5].png"){
$return .= "$atag $aclose | ";
undef $atag;
undef $aclose;
}
if (-e "$svb::htmlsystempath/pictures/$addata[5].jpg"){
$return .= "$atag $aclose | ";
undef $atag;
undef $aclose;
}
if (-e "$svb::htmlsystempath/pictures/$addata[5].gif"){
$return .= "$atag $aclose | ";
undef $atag;
undef $aclose;
}
}
if ($atag){
$return .= "| $svb::fontsmall$atag$lang::click_for_info$aclose | ";
}
$return .= "
|
|
|
|
";
return $return;
}
sub viewcategory{
my ($return,$email,$itemcategory,$subject,$adtype,$picurl,$adindex,$descrip,
$weburl,$datenum,@dates,%alldata,$count,@temp,$pre,$date);
my $adindex = $cur->param('adindex');
my $viewcategory = $cur->param('viewcategory');
$viewcategory =~ s/_/ /ig;
my $urlcat = $viewcategory;
$urlcat =~ s/ /_/ig;
$return .= "
";
# print the personalization ##############################################
if(fcn::checkcookie($emailcookie,$passcookie) eq "yes"){
$return .= "
$lang::logged_in_as\: $emailcookie
|
|
";
}
$return .= "
|
$svb::fontheader $lang::view_classifieds
|
| \n";
$return .= cmn::leftmenu();
$return .= "
|
";
$return .= "
|
$svb::fontsmall$viewcategory";
# get the data and print out all the ads from the category ###############
my $filename = $viewcategory;
$filename =~ s/[ _\s\/\.!#\$\&\\\[\]\(\),-=\+]//ig;
($count,@dates) = fcn::get_all_dates_array($filename);
@temp = fcn::get_all_data_array($filename);
foreach(@temp){
chomp;
($email,$itemcategory,$subject,$adtype,$picurl,$adindex,$descrip,$weburl,$datenum) = split(/###/,$_);
$alldata{$datenum} = $_;
}
undef @temp;
@dates = sort(@dates);
@dates = reverse(@dates);
$count = 0;
foreach $date(@dates){
my $prettydate = cmn::mydate($date);
($email,$itemcategory,$subject,$adtype,$picurl,$adindex,$descrip,$weburl,$datenum) = split(/###/,$alldata{$date});
$return .= "
|
|
$svb::fontsmall $adtype
|
$svb::fontsmall $subject - " . fcn::getcount($adindex) . " views.
|
$svb::fontsmall $prettydate
|
";
$count++;
if ($count == 2){
$count = 0; # go back to the first color
} ###
}
$return .= "
|
|
|
";
return $return;
}
sub editad{
my ($return,$count,$category,$line,@stuff,$forsale,$wanttobuy,$forrent,
$wanttorent,$forfree,$wantforfree,$filename);
my $viewcategory = $cur->param('viewcategory');
$viewcategory =~ s/_/ /ig;
my $adindex = $cur->param('adindex');
# make sure the user is logged in ########################################
cmn::dienice("$lang::invalid_login_combo") unless(fcn::checkcookie($emailcookie,$passcookie) eq "yes");
# figure out how we need to format the form ##############################
$count = 4;
$count++ if($svb::allowpicurl eq "yes");
$count++ if($svb::allowpicupload eq "yes");
$return .= "
";
# print the personalization ##############################################
if(fcn::checkcookie($emailcookie,$passcookie) eq "yes"){
$return .= "
$lang::logged_in_as\: $emailcookie
|
|
";
}
$return .= "
|
$svb::fontheader $lang::edit_an_ad
|
| \n";
$return .= cmn::leftmenu();
$filename = $viewcategory;
$filename =~ s/[_ \s\/\.!#\$\&\\\[\]\(\),-=\+]//ig;
@stuff = fcn::get_one_ad_array($filename,$adindex);
cmn::dienice("$lang::ownership_error") unless ($emailcookie eq $stuff[0]);
$return .= "
|
|
|
|
\n";
return $return;
}
sub logout{
my $return;
$return .= "
|
$svb::fontheader $lang::logout
|
| \n";
$return .= cmn::leftmenu();
$return .= "
|
$svb::fontsmall $lang::logout_successful |
|
";
return $return;
}
sub searchpage{
my ($return,$category);
$return .= "
";
return $return;
}
sub searchresults{
my ($email,$itemcategory,$subject,$adtype,$picurl,$adindex,$descrip,$weburl,$datenum,
$return,$urlcat,$count4,$category,$entry,$searchthing,$filename,@searcharray,
$count,$count1,$count2,$count3,$count4,$line,$prettydate,$number);
my $viewcategory = $cur->param('viewcategory');
$viewcategory =~ s/_/ /ig;
my $searchfor = $cur->param('searchfor');
cmn::dienice($lang::search_category) if($viewcategory =~ /-{10,10}/i);
my @searchthings = split(/ /,$searchfor);
$searchthings[0] = " " if(!$searchthings[0]);
$return .= "
";
# print the personalization ##############################################
if(fcn::checkcookie($emailcookie,$passcookie) eq "yes"){
$return .= "
$lang::logged_in_as\: $emailcookie
|
|
";
}
$return .= "
$svb::fontheader $lang::your_search_results
$svb::fontsmall $lang::search_again
|
| \n";
$return .= cmn::leftmenu();
$return .= "
|
";
if($viewcategory =~ /$lang::all_categories/i){
$count4 = 0;
foreach $category(@svb::categories){
$urlcat = $category;
$urlcat =~ s/ /_/ig;
$filename = $category;
$filename =~ s/[_ \s\/\.!#\$\&\\\[\]\(\),-=\+]//ig;
(@searcharray) = fcn::get_all_data_array($filename);
$number = @searcharray;
foreach $searchthing(@searchthings){
$count1 = 0; # total in the array
$count2 = 0; # index number for the search array
$count3 = 0; # start over counting the total search results for each category
while ($count1 <= $number){
if ($searcharray[$count2] =~ /$searchthing/i){
$count3++; # count the matches in this category
$count1++; # count all attempts
$count2++; # only move to the next entry to search through if we dont delete one - if we delete one, it will shift the array, so no moving is necessary.
}else{
splice(@searcharray,$count2,1);
$count1++;
}
}
}
$count4 = $count4 + $count3;
if ($count3 != 0){
$return .= "
|
$svb::fontsmall$category
|
";
}
$count = 0; # start the count over for colors
foreach $entry (@searcharray){
chomp $entry;
($email,$itemcategory,$subject,$adtype,$picurl,$adindex,$descrip,$weburl,$datenum) = split(/###/,$entry);
$prettydate = cmn::mydate($datenum);
if ($subject){
$return .= "
|
$svb::fontsmall $adtype
|
$svb::fontsmall $subject
|
$svb::fontsmall $prettydate
|
";
$count++; # go to the next color
}
$count = 0 if ($count == 2);
}
undef @searcharray;
}
if ($count4 == 0){
$return .= "| $svb::fontsmall $lang::no_ads_found | "
}
}else{
$count4 = 0; # count the total matches overall - not just the current category
$urlcat = $viewcategory;
$urlcat =~ s/ /_/ig;
$filename = $viewcategory;
$filename =~ s/[_ \s\/\.!#\$\&\\\[\]\(\),-=\+]//ig;
(@searcharray) = fcn::get_all_data_array($filename);
$number = @searcharray;
foreach $searchthing(@searchthings){
$count1 = 0; # total in the array
$count2 = 0; # index number for the search array
$count3 = 0; # start over counting the total search results for each category
while ($count1 <= $number){
if ($searcharray[$count2] =~ /$searchthing/i){
$count3++; # count the matches in this category
$count1++; # count all attempts
$count2++; # only move to the next entry to search through if we dont delete one - if we delete one, it will shift the array, so no moving is necessary.
}else{
splice(@searcharray,$count2,1);
$count1++; # count all attempts
}
}
}
$count4 = $count4 + $count3;
if ($count3 != 0){
$return .= "
|
$svb::fontsmall$viewcategory
|
";
}
$count = 0; # start the count over for colors
foreach $entry (@searcharray){
chomp $entry;
($email,$itemcategory,$subject,$adtype,$picurl,$adindex,$descrip,$weburl,$datenum) = split(/###/,$entry);
$prettydate = cmn::mydate($datenum);
if ($subject){
$return .= "
|
$svb::fontsmall $adtype
|
$svb::fontsmall $subject
|
$svb::fontsmall $prettydate
|
";
$count++; # go to the next color
}
$count = 0 if ($count == 2);
}
undef @searcharray;
if ($count4 == 0){
$return .= "| $svb::fontsmall $lang::no_ads_found | "
}
}
$return .= "
|
|
|
";
return $return;
}
sub redirect{
my $return .= "
$svb::title
$svb::fontsmall$lang::logging_you_in
";
return $return;
}
|
Copyrights (C) Abricus Corporation. All
Rights Reserved
|