#!/usr/bin/perl - w use CGI; use CGI::Carp qw(warningsToBrowser fatalsToBrowser); ############################################################################## # Le Kayak de Mer dans le Nouveau Monde # Destinations v 2.1 # Stéphane Maltais # 2003 ############################### $basedir = "/home/stephm69/public_html/kayakdemer/destinations"; $baseurl = "http://www.kayakdemer.net/destinations"; $rootdir = "/home/stephm69/public_html/kayakdemer"; $rooturl = "http://www.kayakdemer.net"; $dest_dir = "destinations"; $cgi_url = "http://www.kayakdemer.net/cgi-bin2/destinations.pl"; $datas_dir = "data_files"; $html_dir = "html_files"; $destnmbrfile = "destnmbr.txt"; $mainfile = "destinations.php"; $template = "template.php"; $regions_sd = "services"; $regions_file="regions.txt"; $front_temp = "destinations_t.php"; $front_datas = "front_datas.txt"; $sug_form_templ = "sug_destination_t.php"; $sub_photos_templ = "sub_photos_t.html"; $add_form_templ = "add_infos_t.html"; $new_photos_dir = "photos/new"; $allow_html = 1; $filter = 1; $title = "Le Kayak de Mer dans le Nouveau Monde: Destinations"; %TITLES = ("endroit","", "localisation","Localisation", "region","", "maree","Marée", "maree_com","", "derniere_visite","", "acces","Points d\'accès", "cartes","Cartes utiles", "pourvoyeurs","Pourvoyeurs à proximité", "faune","Faune", "especes","Espèces observées", "flore","Flore", "paysages","Paysages", "difficulte","Niveau de difficulté", "interet","Intérêt général", "camping","Possibilité de camping", "camping_dtls","", "description","Description, commentaires", "image_url","", "photos","Photos", "urls","Liens à consulter", "email","", "name","Informations soumises par" ); # Done ########################################################################### use Mysql; $connect_db = Mysql->connect('localhost', 'stephm69_kmnmdatas', 'stephm69_kmnm', 'access'); $connect_db->selectdb('stephm69_kmnmdatas'); # Get Form Information &parse_form; # Put items into nice variables &get_variables; if($fct eq "front") { print "Content-type: text/html\n\n"; unlink ("$basedir/$front_datas"); # open(MAINFRONT,">$basedir/$front_datas") || die $!; # print MAINFRONT ""; # close (MAINFRONT); opendir DATASDIR, "$basedir/$datas_dir" or die "Can't open directory $dir: $!\n"; while ($files = readdir DATASDIR) { $files =~ tr/A-Z/a-z/; if($files =~ /\.txt/) { $files =~ s/\.txt//g; push(@alldtfiles, $files); } } foreach $fntu (@alldtfiles) { $code = $fntu; #print "DEBUG - code $code
"; $lmn = ""; $img_url = ""; %NAMES = %blank; @emails = @blank; @last_visit = @blank; @sub_names = @blank; $endroit = $endroitupdt; $endroit =~ s/\s$//g; $endroit =~ s/\n//g; $num = $code; &addtofrt; } &upt_frtdatas; #print "DEBUG"; &upt_frtpg; &error("La liste des destinations a été mise à jour"); } # block spam #&filter_banned; if($fct) { #&error($fct); if($fct eq "sug_form") { &sug_form; } if($fct eq "sub_photos") { &sub_photos; } if($fct eq "add_photos") { &add_photos; } if($fct eq "add_infos_form") { &add_infos_form; } #&debug("locmap = $locmap & fct = $fct"); if($fct eq "addmap") { $updater = 1; if($locmap ne "update" && $locmap ne "updateall") { $locmap =~ s/\s$//g; $locmap =~ s/\n//g; &add_datas; } if($locmap eq "updateall") { print "Content-type: text/html\n\n"; unlink ("$basedir/$front_datas"); # open(MAINFRONT,">$basedir/$front_datas") || die $!; # print MAINFRONT ""; # close (MAINFRONT); opendir DATASDIR, "$basedir/$datas_dir" or die "Can't open directory $dir: $!\n"; while ($files = readdir DATASDIR) { $files =~ tr/A-Z/a-z/; if($files =~ /\.txt/) { $files =~ s/\.txt//g; push(@alldtfiles, $files); } } foreach $fntu (@alldtfiles) { $code = $fntu; print "DEBUG3 - $code start
"; $lmn = ""; $img_url = ""; %NAMES = %blank; @emails = @blank; @last_visit = @blank; @sub_names = @blank; &html_file("$code"); $endroit = $endroitupdt; $endroit =~ s/\s$//g; $endroit =~ s/\n//g; $num = $code; &addtofrt; if($info_ky_lk) { print "lk: $info_ky_lk
"; } print "DEBUG3 - $code fin
"; } } else { &html_file("$code"); } $submit = ""; &upt_frtdatas; &upt_frtpg; &error("Carte $locmap ajouté au fichier $code"); } exit; } if($submit eq "add_infos") { &add_datas; &html_file("$code"); $submit = ""; &upt_frtdatas; &upt_frtpg; &nouveaute; &datas_added; exit; } &get_filenmbr; &data_file; &html_file("$num"); &addtofrt; &upt_frtdatas; &upt_frtpg; &nouveaute; &submited; #exit; #&error("$num DONE !"); #ajout aux nouveauté sur page Accueil #&nouveaute; ####################### sub parse_form { local($name,$value); if($ENV{'CONTENT_LENGTH'}) { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # Remove any NULL characters, Server Side Includes $value =~ s/\0//g; $value =~ s///g; # $value =~ s/(

)+/
/g; if ($allow_html != 1) { $value =~ s/<([^>]|\n)*>//g; } else { unless($name eq 'description' || $name eq 'pourvoyeurs' || $name eq 'cartes') { $value =~ s/<([^>]|\n)*>//g; } } $FORM{$name} = $value; } # Make sure that message fields do not exceed allowed value if ($enforce_max_len) { foreach $name (keys %max_len) { if (length($FORM{$name}) > $max_len{$name}) { if ($enforce_max_len == 2) { &error('field_size'); } else { $FORM{$name} = sprintf("%.$max_len{$name}s",$FORM{$name}); } } } } } ############### # FILTER sub filter_banned { @banned = ('\[URL=http','meridia','online','cipro','cozaar','celebrex','augmentin','allegra','propecia','buspar'); if ($filter) { foreach $banned_keys (@banned) { foreach $field_name (keys %FORM) { $check_field = $FORM{$field_name}; $banned_keys =~ tr/A-Z/a-z/; $banned_keys =~ s/\n//g; $banned_keys =~ s/\s\n$//g; $banned_keys =~ s/\r//g; $check_field =~ tr/A-Z/a-z/; $check_field =~ s/\n//g; $check_field =~ s/\s\n$//g; $check_field =~ s/\r//g; if($check_field ne "http://"){$scndprev_field = $previous_field;} if($check_field ne "http://"){$previous_field = $check_field;} $check_field_lenght = length ($check_field); if ($check_field ne "sug_form" && ($check_field =~ /$banned_keys/ ||((($previous_field eq $check_field) && ($scndprev_field eq $check_field)) && $check_field_lenght >1 ))) { &error("Il n\'est pas possible d\'ajouter ces informations. Contactez-nous si vous croyez qu\'il s\'agit d\'une erreur"); } } } } } ############### # Get Variables sub get_variables { if($FORM{'map'}) { $map = $FORM{'map'}; } if($FORM{'zoom'}) { $zoom = $FORM{'zoom'}; } if($FORM{'fnum'}) { $fnum = $FORM{'fnum'}; } if($FORM{'carte_infokayak'} =~ /carte.kayakdemer.net/) { $carte_infokayak = $FORM{'carte_infokayak'}; $carte_infokayak =~ s/^\s//g; $carte_infokayak =~ s/\s$//g; $carte_infokayak =~ s/\n//g; $carte_infokayak =~ s/\r//g; } if($map) { &get_map; exit; } if($FORM{'code'}) { $code = $FORM{'code'}; } if($FORM{'locmap'}) { $locmap = $FORM{'locmap'}; } if($FORM{'fct'}) { $fct = $FORM{'fct'}; return; } if($FORM{'submit_fct'}) { $submit = $FORM{'submit_fct'}; } if ($FORM{'artgfghv'}) { $artgfghv = "$FORM{'artgfghv'}"; } if ($FORM{'artgfgev'}) { $artgfgev = "$FORM{'artgfgev'}"; } $myquery = 'SELECT * FROM form_sid WHERE form_id = "'.$FORM{'form_id'}.'"'; $execute = $connect_db->query($myquery); $hash_ref = $execute->fetchrow_hashref(); $form_sid_fr_db = $hash_ref->{form_key}; $execute = $connect_db->query("DELETE FROM form_sid WHERE form_id = '".$FORM{'form_id'}."'"); if($FORM{'form_sid'} != $form_sid_fr_db || !$form_sid_fr_db) { $connect_db->query("INSERT INTO dest_debug (form_id,form_sid,ghv,gev,REMOTE_ADDR,dest_no,nom) VALUES ('bad:|".$FORM{'form_id'}."|','bad:|$form_sid_fr_db vs ".$FORM{'form_sid'}."|','bad:|$artgfghv|','bad:|$artgfgev|','bad:|".$ENV{"REMOTE_ADDR"}."|','bad:|$code|','bad:|".$FORM{'name'}."|')"); &error("Un problème d'authentification est survenue. Contactez-nous si vous n'arrivez pas à soumettre de nouvelles infos\n"); exit; } else { $connect_db->query("INSERT INTO dest_debug (form_id,form_sid,ghv,gev,REMOTE_ADDR,dest_no,nom) VALUES ('ok:|".$FORM{'form_id'}."|','ok:|$form_sid_fr_db|','ok:|$artgfghv|','ok:|$artgfgev|','ok:|".$ENV{"REMOTE_ADDR"}."|','ok:|$code|','ok:|".$FORM{'name'}."|')"); } if(!$artgfghv || ($artgfghv ne $artgfgev)) { $connect_db->query("INSERT INTO dest_debug (form_id,form_sid,ghv,gev,REMOTE_ADDR,dest_no,nom) VALUES ('bad_code:|".$FORM{'form_id'}."|','bad_code:|$form_sid_fr_db|','bad_code:|$artgfghv|','bad_code:|$artgfgev|','bad_code:|".$ENV{"REMOTE_ADDR"}."|','bad_code:|$code|','bad_code:|".$FORM{'name'}."|')"); &error('Entrez le bon code de confirmation pour valider votre message !'); exit; } else { $connect_db->query("INSERT INTO dest_debug (form_id,form_sid,ghv,gev,REMOTE_ADDR,dest_no,nom) VALUES ('ok_code:|".$FORM{'form_id'}."|','ok_code:|$form_sid_fr_db|','ok_code:|$artgfghv|','ok_code:|$artgfgev|','ok_code:|".$ENV{"REMOTE_ADDR"}."|','ok_code:|$code|','ok_code:|".$FORM{'name'}."|')"); } $connect_db->query("INSERT INTO dest_debug (form_id,form_sid,ghv,gev,REMOTE_ADDR,dest_no,nom) VALUES ('passed:|".$FORM{'form_id'}."|','passed:|$form_sid_fr_db|','passed:|$artgfghv|','passed:|$artgfgev|','passed:|".$ENV{"REMOTE_ADDR"}."|','passed:|$code|','passed:|".$FORM{'name'}."|')"); if ($FORM{'endroit'}) { $endroit = "$FORM{'endroit'}"; $endroit =~ s/^\s//g; $endroit =~ s/\s$//g; $endroit =~ s/\n//g; $endroit =~ s/\&/\&\;/g; $endroit =~ s/"/\"\;/g; } elsif($submit != 'add_infos') { &error("Vous devez indiquer le nom du plan d\'eau"); } if ($FORM{'endroit_add'}) { $endroit_add = "$FORM{'endroit_add'}"; } if ($FORM{'localisation'}) { $localisation = "$FORM{'localisation'}"; $localisation =~ s/\n$//g; $localisation =~ s/\&/\&\;/g; $localisation =~ s/"/\"\;/g; } elsif($submit != 'add_infos') { &error("Vous devez indiquer la localisation du plan d\'eau"); } if ($FORM{'region'}) { $region = "$FORM{'region'}"; } elsif($submit != 'add_infos') { &error("Vous devez séléctionner la région"); } if ($FORM{'maree'}) { $maree = "$FORM{'maree'}"; } if ($FORM{'maree_com'}) { $maree_com = "$FORM{'maree_com'}"; } if ($FORM{'derniere_visite'}) { $derniere_visite = "$FORM{'derniere_visite'}"; } if ($FORM{'acces'}) { $acces = "$FORM{'acces'}"; } if ($FORM{'cartes'}) { $cartes = "$FORM{'cartes'}"; } if ($FORM{'pourvoyeurs'}) { $pourvoyeurs = "$FORM{'pourvoyeurs'}"; } if ($FORM{'faune'}) { $faune = "$FORM{'faune'}"; } elsif($submit != 'add_infos') { &error("Vous devez évaluer le niveau d\'intérêt de la faune"); } if ($FORM{'especes'}) { $especes = "$FORM{'especes'}"; } if ($FORM{'flore'}) { $flore = "$FORM{'flore'}"; } elsif($submit != 'add_infos') { &error("Vous devez évaluer le niveau d\'intérêt de la flore"); } if ($FORM{'paysages'}) { $paysages = "$FORM{'paysages'}"; } elsif($submit != 'add_infos') { &error("Vous devez évaluer le niveau d\'intérêt des paysages"); } if ($FORM{'difficulte'}) { $difficulte = "$FORM{'difficulte'}"; } elsif($submit != 'add_infos') { &error("Vous devez évaluer le niveau de difficulté de ce plan d\'eau"); } if ($FORM{'interet'}) { $interet = "$FORM{'interet'}"; } elsif($submit != 'add_infos') { &error("Vous devez évaluer le niveau d\'intérêt général"); } if ($FORM{'camping'}) { $camping = "$FORM{'camping'}"; } if ($FORM{'camping_dtls'}) { $camping_dtls = "$FORM{'camping_dtls'}"; $camping_dtls =~ s/\n$//g; } if ($FORM{'description'}) { $description = "$FORM{'description'}"; $description =~ s/\n$//g; $description =~ s/\n/
/g; $description =~ s/\s$//g; $description =~ s/\n//g; $description =~ s/(
)+/
/g; $description =~ s/(

)+/
/g; $description =~ s/<//g; $description =~ s/"/"/g; } if ($FORM{'image_url'} && $FORM{'image_url'} ne 'http://') { $image_url = "$FORM{'image_url'}"; } if ($FORM{'url1'} && $FORM{'url1'} ne 'http://') { $url1 = "$FORM{'url1'}"; } if ($FORM{'url2'} && $FORM{'url2'} ne 'http://') { $url2 = "$FORM{'url2'}"; } if ($FORM{'url3'} && $FORM{'url3'} ne 'http://') { $url3 = "$FORM{'url3'}"; } if ($FORM{'url4'} && $FORM{'url4'} ne 'http://') { $url4 = "$FORM{'url4'}"; } if ($FORM{'url5'} && $FORM{'url5'} ne 'http://') { $url5 = "$FORM{'url5'}"; } if ($FORM{'email'} =~ /.*\@.*\..*/) { $email = "$FORM{'email'}"; } if ($FORM{'name'}) { $name = "$FORM{'name'}"; $name =~ s/"//g; $name =~ s///g; $name =~ s/\&//g; } else { $keep_error = "yes"; &error("Vous devez inscrire votre nom ou un pseudonyme"); } ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $month = ($mon + 1); @months = ("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Decembre"); $year += 1900; $long_date = sprintf("%02d %s %4d",$mday,$months[$mon],$year); $year %= 100; if ($use_time == 1) { $date = sprintf("%02d:%02d:%02d %02d/%02d/%02d",$hour,$min,$sec,$month,$mday,$year); } else { $date = sprintf("%02d/%02d/%02d",$mday,$month,$year); } } ############ sub get_filenmbr { open(NUMBER,"$basedir/$destnmbrfile"); $num = ; close(NUMBER); open(NUMBER,">$basedir/$destnmbrfile"); $inc_num = $num; $inc_num++; print NUMBER "$inc_num"; close(NUMBER); } ########## sub sug_form { open(MAIN,"$basedir/$sug_form_templ") || die $!; @templatelns =

; close(MAIN); $code_sid = int(rand 999999); print "Content-type: text/html\n\n"; foreach $tl (@templatelns) { if($tl =~ //) { print "\n"; } elsif($tl =~ //) { print "[ XSoumettre des photos prises à cet endroit ]\n"; } else { print $tl; } } } ############## sub sub_photos { open(MAIN,"$basedir/$sub_photos_templ") || die $!; @templatelns =
; close(MAIN); print "Content-type: text/html\n\n"; foreach $tl (@templatelns) { if($tl =~ //) { print "\n"; } else { print $tl; } } } ############# sub add_photos { open(MAIN,"$basedir/$sub_photos_templ") || die $!; @templatelns =
; close(MAIN); print "Content-type: text/html\n\n"; foreach $tl (@templatelns) { if($tl =~ //) { print "\n"; } else { print $tl; } } } ############## sub data_file { # &error($carte_infokayak); opendir PHOTOSDIR, "$basedir/$new_photos_dir" or die "Can't open directory $dir: $!\n"; while ($files = readdir PHOTOSDIR) { $files =~ tr/A-Z/a-z/; if($files =~ /\.txt/) { $allfiles{$files}=1; } } $codefile="$code\.txt"; if($allfiles{$codefile}) { open(MAIN,"$basedir/$new_photos_dir/$code\.txt") || die $!; @photos =
; close(MAIN); unlink ("$basedir/$new_photos_dir/$code\.txt"); } mkdir "$basedir/photos/$num", 0755 || die $!; mkdir "$basedir/photos/$num/thumbs", 0755 || die $!; use GD; GD::Image->trueColor(1); if($photos[0]) { use File::Copy; foreach $pn (@photos) { $pn =~ s/\n//g; copy("$basedir/$new_photos_dir/$pn","$basedir/photos/$num/$pn"); unlink ("$basedir/$new_photos_dir/$pn"); &resize_img; } } open(NEWFILE,">$basedir/$datas_dir/$num\.txt") || die $!; print NEWFILE "\n"; print NEWFILE "\n"; if($carte_infokayak) { print NEWFILE "$carte_infokayak"."&r=$code\n"; } print NEWFILE "\n"; $endroit =~ s/\s$//g; $endroit =~ s/\n//g; print NEWFILE "$endroit\n"; print NEWFILE "\n"; print NEWFILE "$region\n"; print NEWFILE "\n"; print NEWFILE "$localisation\n"; print NEWFILE "\n"; if($maree) { print NEWFILE "$maree\n"; } print NEWFILE "\n"; if($maree_com) { print NEWFILE "$maree_com\n"; } print NEWFILE "\n"; if($acces) { print NEWFILE "$acces\n"; } print NEWFILE "\n"; if($cartes) { print NEWFILE "$cartes\n"; } print NEWFILE "\n"; if($pourvoyeurs) { print NEWFILE "$pourvoyeurs\n"; } print NEWFILE "\n"; print NEWFILE "$faune|\n"; print NEWFILE "\n"; if($especes) { print NEWFILE "$especes\n"; } print NEWFILE "\n"; print NEWFILE "$flore|\n"; print NEWFILE "\n"; print NEWFILE "$paysages|\n"; print NEWFILE "\n"; print NEWFILE "$difficulte|\n"; print NEWFILE "\n"; print NEWFILE "$interet|\n"; print NEWFILE "\n"; if($camping) { print NEWFILE "$camping|\n"; } print NEWFILE "\n"; if($camping_dtls) { print NEWFILE "$camping_dtls\n"; } print NEWFILE "\n"; if($description) { print NEWFILE "$description\n"; } print NEWFILE "\n"; if($url1) { print NEWFILE "$url1\n"; } if($url2) { print NEWFILE "$url2\n"; } if($url3) { print NEWFILE "$url3\n"; } if($url4) { print NEWFILE "$url4\n"; } if($url5) { print NEWFILE "$url5\n"; } print NEWFILE "\n"; if($image_url) { print NEWFILE "$image_url\n"; } print NEWFILE "\n"; foreach $pt (@photos) { $pt =~ s/\n//g; print NEWFILE "$pt\n"; } print NEWFILE "\n"; if($derniere_visite) { print NEWFILE "$derniere_visite\n"; } else { print NEWFILE "novisit\n"; } print NEWFILE "\n"; print NEWFILE "$name\n"; print NEWFILE "\n"; if($email) { print NEWFILE "$email\n"; } else { print NEWFILE "nomail\n"; } print NEWFILE ""; close(NEWFILE); } ########### sub addtofrt { open(MAINFRONT,">>$basedir/$front_datas") || die $!; $region_fn =~ s/\s$//g; $region_fn =~ s/\n//g; print MAINFRONT "$num|$endroit|$region_fn\n"; close (MAINFRONT); } ############ sub html_file { $rt = 1; $rt_aft =1; $img_url=""; $html_num = $_[0]; $info_ky_lk = ""; open(MAIN,"$rootdir/$regions_sd/$regions_file") || die $!; @regions =
; close(MAIN); foreach $rg (@regions) { ($rg_srt,$rg_lg)=split(/\|/,$rg); $REGION{$rg_srt}=$rg_lg; } open(MAIN,"$basedir/$template") || die $!; @templatelns =
; close(MAIN); # &error(449); # &debug("$basedir/$datas_dir/$html_num\.txt"); open(MAIN,"$basedir/$datas_dir/$html_num\.txt") || die $!; @dataslns =
; close(MAIN); open(MAIN,">$basedir/$html_dir/$html_num\.php") || die $!; foreach $tl (@templatelns) { if($tl =~ //) { print MAIN "\n"; print MAIN "
\n"; foreach $dl (@dataslns) { if($dl =~ /'))-4; $section = substr($dl, 4, $nmbrlt); $sect_title = $TITLES{$section}; if ($prev_sect eq "photos") { print MAIN "
[ ajouter des photos prises à cet endroit ]
\n"; } if($prev_sect eq "email") { &print_names; } if($section eq "faune" || $section eq "flore" || $section eq "paysages" || $section eq "interet" || $section eq "difficulte") { $rt_aft = 0; } if($prev_sect eq "pourvoyeurs") { print MAIN "
Consulter la section de services pour cette région
\n"; $rt = 0; } if($sect_title) { if($rt) { print MAIN "
"; } else { $rt = 1; } if ($section ne "especes") { print MAIN " "; } print MAIN "$sect_title:\n"; if($rt_aft) { print MAIN "
"; } else { $rt_aft = 1; } } if($prev_sect eq "image_url" && $img_url) { print MAIN "\n"; } } else { if($section eq "locmap") { $dl =~ s/\s$//g; $dl =~ s/\n//g; $lmn = $dl; } elsif($section eq "carte_infokayak") { print MAIN "\n"; $info_ky_lk = $dl; } elsif($section eq "endroit") { $endroitupdt = $dl; if($lmn) { print MAIN "
$dl
\n"; } else { print MAIN "
$dl
\n"; } } elsif($section eq "region") { $dl =~ s/\s$//g; $dl =~ s/\n//g; $region_fn = $REGION{$dl}; $region_srt = $dl; print MAIN "$region_fn\n"; print MAIN "
\n"; } elsif($section eq "pourvoyeurs") { print MAIN "$dl
\n"; } elsif($section eq "faune" || $section eq "flore" || $section eq "paysages" || $section eq "interet" || $section eq "difficulte") { $dl =~ s/\n//g; (@numbers)=split(/\|/,$dl); &moyenne; print MAIN " $moyenne/5
\n"; } elsif($section eq "camping_dtls") { print MAIN "$dl
\n"; } elsif($section eq "camping") { $dl =~ s/\n//g; (@answers)=split(/\|/,$dl); &get_fnlansw; print MAIN "$fnlansw
\n"; } elsif($section eq "name") { $dl =~ s/\n//g; push(@sub_names,$dl); } elsif($section eq "image_url") { $dl =~ s/\n//g; $img_url = $dl; } elsif($section eq "photos") { $dl =~ s/\n//g; print MAIN "\n"; } elsif($section eq "urls") { $dl =~ s/\n//g; $longurl=length ($dl); if($longurl<70) { $cuturl = $dl; } else { $cuturl = substr($dl, 0, 70).'...'; } print MAIN "$cuturl
\n"; } elsif($section eq "derniere_visite") { $dl =~ s/\n//g; push(@last_visit,$dl); } elsif($section eq "email") { $dl =~ s/\n//g; push(@emails,$dl); } else { print MAIN "$dl
\n"; } } } print MAIN "\n"; } else { print MAIN "$tl"; } } close(MAIN); } ########## sub print_names { $nn=0; foreach $sn (@sub_names) { $emailx = $emails[$nn]; $lvx = $last_visit[$nn]; $lvx =~ s/\s$//g; $lvx =~ s/\n//g; $sn =~ s/\s$//g; $sn =~ s/\n//g; if(!($NAMES{"$sn"})) { $emailx =~ s/\s$//g; $emailx =~ s/\n//g; if($emailx ne "nomail") { print MAIN "$sn"; if($lvx ne "novisit") { print MAIN " (Dernière visite à cet endroit : $lvx)"; } print MAIN "
\n"; } else { print MAIN "$sn"; if($lvx ne "novisit") { print MAIN " (Dernière visite à cet endroit : $lvx)"; } print MAIN "
\n"; } } $NAMES{"$sn"} = 1; ++$nn; } } ########## sub moyenne { $nn = 0; $ttl = 0; foreach $nmb (@numbers) { $nmb =~ s/\s$//g; $nmb =~ s/\n//g; if($nmb) { ++$nn; $ttl = $ttl + $nmb; } } if($nn > 0) { $moyenne = (int(($ttl/$nn)*10))/10; } } ########## sub get_fnlansw { $camp_oui = 0; $camp_non = 0; $camp_dif = 0; $answers = 0; foreach $answ (@answers) { if($answ eq "Oui") { ++$camp_oui; } elsif($answ eq "Non") { ++$camp_non; } else { ++$camp_dif; } ++$answers; } if(($camp_oui - $answers) == 0) { $fnlansw = "Oui"; } elsif(($camp_non - $answers) == 0) { $fnlansw = "Non"; } elsif(($camp_dif - $answers) == 0) { $fnlansw = "Difficile"; } else { $fnlansw = "Incertain ($camp_oui Oui\, $camp_non Non\, $camp_dif Difficile)"; } } ################### sub resize_img { $image_init = newFromJpeg GD::Image("$basedir/photos/$num/$pn"); ($width,$height) = $image_init->getBounds(); $reduction = 100/$width; $width_t = 100; $height_t = int($height * $reduction); if($height_t > 100) { $reduction = 100/$height; $height_t = 100; $width_t = int($width * $reduction); } $thumfinal = new GD::Image(100,100); $x_dep = 0; $y_dep = 0; if($width_t < 100) { $x_dep = int((100-$width_t)/2); } if($height_t < 100) { $y_dep = int((100-$height_t)/2); } $thumfinal->copyResized($image_init,$x_dep,$y_dep,0,0,$width_t,$height_t,$width,$height); open (THUMB, ">$basedir/photos/$num/thumbs/$pn") || die "cant create small file $smallfilename"; binmode THUMB; print THUMB $thumfinal->jpeg; close (THUMB); } ############### sub add_infos_form { open(MAIN,"$basedir/$add_form_templ") || die $!; @templatelns =
; close(MAIN); open(MAIN,"$basedir/$datas_dir/$code\.txt") || die $!; @dataslns =
; close(MAIN); open(MAIN,"$rootdir/$regions_sd/$regions_file") || die $!; @regions =
; close(MAIN); foreach $rg (@regions) { ($rg_srt,$rg_lg)=split(/\|/,$rg); $REGION{$rg_srt}=$rg_lg; } print "Content-type: text/html\n\n"; foreach $tl (@templatelns) { if($tl =~ //) { print "\n"; } elsif($tl =~ //) { print "\n"; print "\n"; } elsif($tl =~ //) { &get_datas('endroit'); print "@datas[0]
\n"; print "\n"; } elsif($tl =~ //) { &get_datas('localisation'); foreach $dl (@datas) { print "$dl
\n"; } } elsif($tl =~ //) { &get_datas('region'); $datas[0] =~ s/\s$//g; $datas[0] =~ s/\n//g; $rsn = @datas[0]; $rfn = $REGION{$rsn}; print "$rfn
\n"; } elsif($tl =~ //) { &get_datas('maree'); print "@datas[0]
\n"; } elsif($tl =~ //) { &get_datas('maree_com'); foreach $dl (@datas) { print "$dl
\n"; } } elsif($tl =~ //) { &get_datas('acces'); foreach $dl (@datas) { print "$dl
\n"; } } elsif($tl =~ //) { &get_datas('cartes'); foreach $dl (@datas) { print "$dl
\n"; } } elsif($tl =~ //) { &get_datas('carte_infokayak'); $carteik_url = $datas[0]; if(!($carteik_url) || $carteik_url eq "http://") { print "Lien vers la carte Infokayak pour cette ré\;gion (facultatif)
\n"; print "
Rendez-vous à\; la carte, dé\;placez vous et faites le zoom afin que seule cette ré\;gion apparaisse, cliquez sur Mixte (en haut et à\; droite de la carte), copiez l'adresse de la carte qui apparaît sous la lé\;gende et entrez là\; ci-dessous
\n"; print "
\n"; } } elsif($tl =~ //) { &get_datas('pourvoyeurs'); foreach $dl (@datas) { print "$dl
\n"; } } elsif($tl =~ //) { &get_datas('especes'); foreach $dl (@datas) { print "$dl
\n"; } } elsif($tl =~ //) { &get_datas('camping_dtls'); foreach $dl (@datas) { print "$dl
\n"; } } elsif($tl =~ //) { &get_datas('description'); foreach $dl (@datas) { print "$dl
\n"; } } elsif($tl =~ //) { &get_datas('image_url'); foreach $dl (@datas) { print "$dl
\n"; } } elsif($tl =~ //) { use Digest::MD5 qw(md5 md5_hex md5_base64); $sid = md5_hex(rand(9999999)); print ''; } elsif($tl =~ //) { &get_datas('urls'); foreach $dl (@datas) { $longurl=length ($dl); if($longurl<70) { $cuturl = $dl; } else { $cuturl = substr($dl, 0, 70).'...'; } print "$cuturl
\n"; } } elsif($tl =~ //) { print "[ Soumettre des photos prises à cet endroit ]\n"; } else { print $tl; } } } ########### sub upt_frtdatas { open(MAIN,"$rootdir/$regions_sd/$regions_file") || die $!; @regions =
; close(MAIN); foreach $rg (@regions) { ($rg_srt,$rg_lg)=split(/\|/,$rg); $REGION{$rg_srt}=$rg_lg; } open(MAIN,"$basedir/$front_datas") || die $!; @frtdats =
; close(MAIN); open(MAIN,">$basedir/$front_datas") || die $!; @all_dest = sort parreg @frtdats; foreach $pn ( @all_dest) { @dest_dats = split(/\|/,$pn); $dn = @dest_dats[0]; open(DATAS,"$basedir/$datas_dir/$dn.txt") || die $!; @dataslns = ; close(DATAS); &get_datas('endroit'); $datas[0] =~ s/\s$//g; $datas[0] =~ s/\n//g; print MAIN "$dn|$datas[0]|"; &get_datas('region'); $datas[0] =~ s/\s$//g; $datas[0] =~ s/\n//g; $regionx=$REGION{$datas[0]}; $regionx =~ s/\s$//g; $regionx =~ s/\n//g; print MAIN "$regionx|"; &get_datas('locmap'); print MAIN "$datas[0]|"; &get_datas('faune'); @numbers = split(/\|/,$datas[0]); &moyenne; print MAIN "$moyenne|"; &get_datas('flore'); @numbers = split(/\|/,$datas[0]); #&moyenne; print MAIN "$moyenne|"; &get_datas('paysages'); @numbers = split(/\|/,$datas[0]); #&moyenne; print MAIN "$moyenne|"; &get_datas('difficulte'); @numbers = split(/\|/,$datas[0]); #&moyenne; print MAIN "$moyenne|"; &get_datas('interet'); @numbers = split(/\|/,$datas[0]); #&moyenne; print MAIN "$moyenne|"; &get_datas('camping'); $datas[0] =~ s/\s$//g; $datas[0] =~ s/\n//g; @answers = split(/\|/,$datas[0]); &get_fnlansw; if($fnlansw eq "Oui" || $fnlansw eq "Difficile") { print MAIN "$fnlansw"; } elsif($fnlansw =~ /Incertain/ ) { print MAIN "Incertain"; } print MAIN "\n"; } close(MAIN); } ######################################### sub parreg { @a = split(/\|/,$a); @b = split(/\|/,$b); $a[2] =~ tr/A-Z/a-z/; $a[2] =~ s/é/e/g; $a[2] =~ s/ê/e/g; $a[2] =~ s/É/e/g; $a[2] =~ s/Ê/e/g; $a[2] =~ s/Î/i/g; $a[2] =~ s/î/i/g; $a[2] =~ s/^l'//g; $a[2] =~ s/ç/c/g; $a[2] =~ s/Ç/C/g; $a[2] =~ s/^le //g; $a[2] =~ s/^la //g; $a[2] =~ s/^les //g; $b[2] =~ tr/A-Z/a-z/; $b[2] =~ s/é/e/g; $b[2] =~ s/ê/e/g; $b[2] =~ s/É/e/g; $b[2] =~ s/Ê/e/g; $b[2] =~ s/Î/i/g; $b[2] =~ s/î/i/g; $b[2] =~ s/^l'//g; $b[2] =~ s/ç/c/g; $b[2] =~ s/Ç/C/g; $b[2] =~ s/^le //g; $b[2] =~ s/^la //g; $b[2] =~ s/^les //g; $a[1] =~ tr/A-Z/a-z/; $a[1] =~ s/é/e/g; $a[1] =~ s/ê/e/g; $a[1] =~ s/É/e/g; $a[1] =~ s/Ê/e/g; $a[1] =~ s/Î/i/g; $a[1] =~ s/î/i/g; $a[1] =~ s/^l'//g; $a[1] =~ s/ç/c/g; $a[1] =~ s/Ç/C/g; $a[1] =~ s/^le //g; $a[1] =~ s/^la //g; $a[1] =~ s/^les //g; $b[1] =~ tr/A-Z/a-z/; $b[1] =~ s/é/e/g; $b[1] =~ s/ê/e/g; $b[1] =~ s/É/e/g; $b[1] =~ s/Ê/e/g; $b[1] =~ s/Î/i/g; $b[1] =~ s/î/i/g; $b[1] =~ s/^l'//g; $b[1] =~ s/ç/c/g; $b[1] =~ s/Ç/C/g; $b[1] =~ s/^le //g; $b[1] =~ s/^la //g; $b[1] =~ s/^les //g; lc($a[2]) cmp lc($b[2]) || lc($a[1]) cmp lc($b[1]); } ######################################### sub parnom { @a = split(/\|/,$a); @b = split(/\|/,$b); $a[1] =~ tr/A-Z/a-z/; $a[1] =~ s/é/e/g; $a[1] =~ s/ê/e/g; $a[1] =~ s/É/e/g; $a[1] =~ s/Ê/e/g; $a[1] =~ s/Î/i/g; $a[1] =~ s/î/i/g; $a[1] =~ s/^l'//g; $a[1] =~ s/ç/c/g; $a[1] =~ s/Ç/C/g; $a[1] =~ s/^le //g; $a[1] =~ s/^la //g; $a[1] =~ s/^les //g; $b[1] =~ tr/A-Z/a-z/; $b[1] =~ s/é/e/g; $b[1] =~ s/ê/e/g; $b[1] =~ s/É/e/g; $b[1] =~ s/Ê/e/g; $b[1] =~ s/Î/i/g; $b[1] =~ s/î/i/g; $b[1] =~ s/^l'//g; $b[1] =~ s/ç/c/g; $b[1] =~ s/Ç/C/g; $b[1] =~ s/^le //g; $b[1] =~ s/^la //g; $b[1] =~ s/^les //g; lc($a[1]) cmp lc($b[1]); } ########### sub upt_frtpg { open(MAIN,"$basedir/$front_temp") || die $!; @templatelns =
; close(MAIN); open(MAIN,"$basedir/$front_datas") || die $!; @frtdats =
; close(MAIN); open(MAIN,">$basedir/$mainfile") || die $!; foreach $tl (@templatelns) { if($tl =~ //) { foreach $dl (@frtdats) { $dl =~ s/\n//g; (my $num,my $endroit,my $region,my $locmap,my $faune,my $flore,my $paysages,my $difficulte,my $interet,my $camping) = split(/\|/,$dl); if($region ne $oldreg) { print MAIN "\n"; print MAIN "$region"; print MAIN ""; print MAIN "\n"; print MAIN "Ajouter une destination"; print MAIN ""; } $oldreg = $region; if($rc) { print MAIN "\n"; $rc=0; } else { print MAIN "\n"; $rc = 1; } print MAIN "\n"; print MAIN "$endroit
\n"; print MAIN "$region\n"; print MAIN "\n"; if($locmap) { $locmap =~ s/\s$//g; $locmap =~ s/\n//g; print MAIN "\"Localisation\"\n"; } else { print MAIN "\n"; } if($faune >= 4) { print MAIN "\"Faune\n"; } else { print MAIN "\n"; } if($flore >= 4) { print MAIN "\"Flaure\n"; } else { print MAIN "\n"; } if($paysages >= 4) { print MAIN "\"Jolies\n"; } else { print MAIN "\n"; } print MAIN "\"Niveau\n"; } if($difficulte < 2.5 && $difficulte >= 1.5) { print MAIN "diffic2.gif\" width=\"30\" height=\"30\" border=\"0\" alt=\"Niveau de difficult\é\;: 2/5\">\n"; } if($difficulte < 3.5 && $difficulte >= 2.5) { print MAIN "diffic3.gif\" width=\"30\" height=\"30\" border=\"0\" alt=\"Niveau de difficult\é\;: 3/5\">\n"; } if($difficulte < 4.5 && $difficulte >= 3.5) { print MAIN "diffic4.gif\" width=\"30\" height=\"30\" border=\"0\" alt=\"Niveau de difficult\é\;: 4/5\">\n"; } if($difficulte >= 4.5) { print MAIN "diffic5.gif\" width=\"30\" height=\"30\" border=\"0\" alt=\"Niveau de difficult\é\;: 5/5\">\n"; } print MAIN "\"Intérêt\n"; } if($interet < 2.5 && $interet >= 1.5) { print MAIN "stars2.gif\" width=\"30\" height=\"19\" border=\"0\" alt=\"Intérêt génétal: 2/5\">\n"; } if($interet < 3.5 && $interet >= 2.5) { print MAIN "stars3.gif\" width=\"30\" height=\"19\" border=\"0\" alt=\"Intérêt génétal: 3/5\">\n"; } if($interet < 4.5 && $interet >= 3.5) { print MAIN "stars4.gif\" width=\"30\" height=\"19\" border=\"0\" alt=\"Intérêt génétal: 4/5\">\n"; } if($interet >= 4.5) { print MAIN "stars5.gif\" width=\"30\" height=\"19\" border=\"0\" alt=\"Intérêt génétal: 5/5\">\n"; } if($camping eq "Oui") { print MAIN "\"Camping\n"; } elsif($camping eq "Difficile") { print MAIN "\"Camping\n"; } elsif($camping eq "Incertain") { print MAIN "\"Camping\n"; } else { print MAIN "\n"; } print MAIN "\n"; } } else { print MAIN "$tl"; } } close(MAIN); } ########### sub get_datas { $field = $_[0]; @datas = @blank; $load = 0; foreach $dl (@dataslns) { $dl =~ s/\n//g; if($dl =~ /'))-4; $section = substr($dl, 4, $nmbrlt); if($load) { $load = 0; } } if($load) { push(@datas,$dl); } if($section eq $field) { $load = 1; } } } ############# sub add_datas { $datas = 0; $pnotrt = 0; opendir PHOTOSDIR, "$basedir/$new_photos_dir" or die "Can't open directory $dir: $!\n"; while ($files = readdir PHOTOSDIR) { $files =~ tr/A-Z/a-z/; if($files =~ /\.txt/) { $allfiles{$files}=1; } } $codefile="$code\.txt"; if($allfiles{$codefile}) { open(MAIN,"$basedir/$new_photos_dir/$code\.txt") || die $!; @photos =
; close(MAIN); unlink ("$basedir/$new_photos_dir/$code\.txt"); } use GD; GD::Image->trueColor(1); if($photos[0]) { use File::Copy; foreach $pn (@photos) { $pn =~ s/\n//g; copy("$basedir/$new_photos_dir/$pn","$basedir/photos/$code/$pn"); unlink ("$basedir/$new_photos_dir/$pn"); $num = $code; &resize_img; } } open(MAIN,"$basedir/$datas_dir/$code\.txt") || die $!; @dataslns =
; close(MAIN); open(MAIN,">$basedir/$datas_dir/$code\.txt") || die $!; foreach $dl (@dataslns) { if($dl =~ /'))-4; $section = substr($dl, 4, $nmbrlt); if($section eq "carte_infokayak") { $cartinfokayak_pres = 1; } if($section eq "endroit" && $dl =~ /\n"; $cik_url = $FORM{'carte_infokayak'}; if($cik_url) { if($cik_url =~ /carte.kayakdemer.net/) { $cik_url =~ s/\s$//g; $cik_url =~ s/\n//g; print MAIN "$cik_url"."&r=$code\n"; } } } if(($FORM{$section} && $FORM{$section} ne "http://") || $section eq "urls" || $section eq "photos" || $section eq "email" || $section eq "derniere_visite") { $datas = 1; } else { $datas = 0; } if($pnotrt) { print MAIN "\n"; $pnotrt = 0; } print MAIN "$dl"; } elsif($section eq "faune" || $section eq "flore" || $section eq "paysages" || $section eq "difficulte" || $section eq "interet" || $section eq "camping") { $dl =~ s/\s$//g; $dl =~ s/\n//g; print MAIN "$dl"; $pnotrt = 1; } else { print MAIN "$dl"; } } close(MAIN); } ####################################### sub submited { open(MAIN,"$basedir/$template") || die $!; @templatelns =
; close(MAIN); print "Content-type: text/html\n\n"; foreach $tl (@templatelns) { if($tl =~ //) { print "

\n"; print "La destination $endroit a été ajoutée !
Merci de votre contribution !!!

"; print "[ Aller à la nouvelle destination ] [ Retour aux destinations ]
"; print "\n"; } else { print $tl; } } } ######### sub datas_added { open(MAIN,"$basedir/$template") || die $!; @templatelns =
; close(MAIN); print "Content-type: text/html\n\n"; foreach $tl (@templatelns) { if($tl =~ //) { print "

\n"; print "Les informations ont été ajoutées à la destination $endroit_add.
Merci de votre contribution !!!

"; print "[ Retourner à la destination ] [ Retour aux destinations ]
"; print "\n"; } else { print $tl; } } } ############################ sub error { $error = $_[0]; if($submit && $keep_error ne "yes" && !$artgfghv) { return; } if($locmap eq "update") { $error = "La fiche $code a été mise à jour" } print "Content-type: text/html\n\n"; print "ERREUR\n"; print "

ERREUR:

\n"; print "
$error


\n"; print "
[ Retour au formulaire ]


\n"; print ""; exit; } ############################ sub debug { $error = $_[0]; print "Content-type: text/html\n\n"; print "Carte Infokayak: ERREUR\n"; print "

Carte Infokayak: ERREUR

\n"; print "
$error


\n"; print "
[ Retour au formulaire ]


\n"; print ""; #exit; } ############################ sub get_map { open(MAIN,"$basedir/$front_datas") || die $!; @frtdats =
; close(MAIN); foreach $fd (@frtdats) { (my $num,my $endroit,my $region,my $locmap,my $faune,my $flore,my $paysages,my $difficulte,my $interet,my $camping) = split(/\|/,$fd); $PLACES{$num} = "$endroit"; } $destfn = $PLACES{$fnum}; print "Content-type: text/html\n\n"; print <<"EOF"; Le KMNM: Carte - $destfn

EOF print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "

\n"; } ############################ sub nouveaute { ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $month = ($mon + 1); @months = ("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Decembre"); $year += 1900; $date_nouv = sprintf("%02d %s %4d %02d:%02d",$mday,$months[$mon],$year,$hour,$min); # Adapter pour chaque section $section = "Destinations"; $url = 'http://www.kayakdemer.net/destinations/destinations.php'; $endroit_add =~ s/\s$//g; $endroit_add =~ s/\n//g; if($endroit_add) { $description="$name a ajouté de l'information à la destination $endroit_add"; } else { $description="Nouvelle destination: $endroit par $name "; } #&debug(""); $connect_db->query("INSERT INTO nouveautes (section,sect_url,details,date) VALUES ('$section','$url','".quotemeta($description)."','$date_nouv')")or die "MySQL Error: $DBI::errstr\n"; } ############################ sub nouveaute_txt { $basedir_n = "/home/stephm69/public_html/kayakdemer"; $datafilen = "nouveautes.txt"; # Adapter pour chaque section $section_n = "Destinations"; $url_n = 'http://www.kayakdemer.net/destinations/destinations.php'; $endroit_add =~ s/\s$//g; $endroit_add =~ s/\n//g; if($endroit_add) { $description_n="$name a ajouté de l\'information à la destination $endroit_add"; } else { $description_n="Nouvelle destination: $endroit par $name "; } $mesgfile_temp = "index_tv.php"; $mesgfile = "index.php"; # Ajout à la page TEMPLATE pour ptites vites $mesgfile_temp = "index_t.php"; $mesgfile = "index_tn.php"; &addtolist_n; } ############################ sub addtolist_n { open(EVENT,"$basedir_n/$datafilen") || die $! ; @nouveautes = ; close (EVENT); open(NBR,"$basedir_n/nombre_n.txt") || die $! ; $nbr_n = ; close (NBR); open(EVENT,">$basedir_n/$datafilen"); print EVENT "$section_n\|$url_n\|$description_n\|$long_date\n"; $nt=1; foreach $i (@nouveautes) { chomp($i); if ($nt<$nbr_n) { print EVENT "$i\n"; $nt++; } } close (EVENT); }