#!/usr/bin/perl ############################################################################## # Forum v 2.8 # lst mod: send mail ############################################################################## # Define Variables $basedir = "/home/stephm69/public_html/kayakdemer/wwwboard"; $homedir ="/home/stephm69/public_html/kayakdemer"; $filter_dir = "/home/stephm69/public_html/filter"; $mailprog = '|/usr/sbin/sendmail -t'; $docsdir = "/home/stephm69/public_html/kayakdemer/docs"; $homeurl = "http://www.kayakdemer.net"; $docsurl = "http://www.kayakdemer.net/docs"; $baseurl = "http://www.kayakdemer.net/wwwboard"; $photodir = "$baseurl/photos"; $cgi_url = "http://www.kayakdemer.net/cgi-bin2/wwwboard.pl"; $direct_wwboard_url = "http://www.kayakdemer.net/wwwboard/redirect.pl"; $cgis_url = "http://www.kayakdemer.net/cgi-bin2"; $cgis_dir = "/home/stephm69/public_html/kayakdemer/cgi-bin2"; $template = "message_t.html"; $addmailtp = "addmail.html"; $mesgdir = "messages"; $deleted_msg="deleted.html"; $mailingdir = "mailing"; # Pour ajout événements du calendrier page d'accueil $events_dir = "calendrier"; $eventsfile = "events.txt"; $details_dir = "details"; $delais = "7"; $stats_dir = "/home/stephm69/public_html/kayakdemer/wwwboard/stats"; $stats_url = "http://www.kayakdemer.net/wwwboard/stats"; $datafile = "data.txt"; $mesgfile_all = "wwwboard_all.php"; $mesgfile = "wwwboard.html"; $mesgfile_t = "wwwboard_t.php"; $soum_file = "soum_message.php"; $faqfile = "faq.html"; $filter_activepg = "fltpg_active.php"; # Changer le message sur la page d'accueil oui=1; non=0 $chgfrontmsg = 0; $addnouveautes = 1; $lstmsgtmfile = "lsttime.txt"; $mxtimefile = "maxtime.txt"; $maxtimejsfl = "maxtime.js"; $reg_names = "reg_names.txt"; $nmbmsgsfile = "nombrmsgsparuser.txt"; $frmail = "forum\@kayakdemer.net"; $forumtitle = "du kayak de mer dans le nouveau monde"; $forumurl = "http://www.kayakdemer.net/wwwboard"; $background_im = "http://www.kayakdemer.net/bckgrnd.gif"; $ext = "html"; $title = "Le Kayak de Mer dans le Nouveau Monde: Forum"; $site_name = "Le Kayak de Mer dans le Nouveau Monde"; $site_url = "http://www.kayakdemer.net"; $html_help = "http://www.kayakdemer.net/html.html"; $active_period = 22; $closed = ""; @passwords = ("tempo","loisi"); # Done ########################################################################### # Configure Options $show_faq = 1; # 1 - YES; 0 = NO $allow_html = 1; # 1 = YES; 0 = NO $quote_text = 0; # 1 = YES; 0 = NO $subject_line = 0; # 0 = Quote Subject Editable; 1 = Quote Subject # UnEditable; 2 = Don't Quote Subject, Editable. $use_time = 0; # 1 = YES; 0 = NO $show_poster_ip = 0; # 1 = Show the IP of every poster; 0 = Don't $enforce_max_len = 0; # 2 = YES, error; 1 = YES, truncate; 0 = NO %max_len = ('name', 50, 'email', 70, 'subject', 80, 'url', 150, 'url_title', 80, 'img', 150, 'body', 3000, 'origsubject', 80, 'origname', 50, 'origemail', 70, 'origdate', 50); # Done ########################################################################### # Get maxtime &getmaxtime; # Get the Data Number &get_number; # Get Form Information &parse_form; #$closed="09:00, 16 ocobre 06"; if($closed) { &error("Désolé, le forum est temporairement hors fonction. Il devrait être à nouveau en ligne vers $closed"); } # Put items into nice variables &get_variables; if($fct eq "register") { &enregistrer; } if($fct eq "erase_msg") { &checkpsw; &erase_msg; &error("Le message #$msgnmbr a été effaçé...<b>$rmvlines</b> lignes enlevés sur la page du forum"); } if($fct eq "voirdocs") { if($doc) { &show_doc; } else { &show_alldocs; } exit; } if($fct eq "voirdoc_dtls") { &showdoc_dtls; exit; } if($fct eq "showlink") { &show_link; exit; } if($addmailto) { &mk_page; exit; } if($msgnmbr) { &defmsgsandadd; &returnhtml; exit; } if($star != 1) { &check_banned; } if($newsub && $registered_only eq "oui") { if(!$reg_usr) { &error("Vous devez avoir un nom enregistré pour pouvoir cocher la case <b><i>Permettre seulement aux utilisateurs enregistrés de répondre à ce message</i></b>"); } else { ®istered_only; } } if($fltval && $newsub eq "oui") { &putfltval; $newsub = ""; } &write_ip; &write_name; # Write initial stats for message &write_ini_stats; # Open the new file and write information to it. &new_file; # Open the Main WWWBoard File to add link &main_page; # Now Add Thread to Individual Pages if ($num_followups >= 1) { &thread_pages; } # Return the user HTML &return_html; # Increment Number &increment_num; if($chgfrontmsg == 1) { &updt_frontmsg; } # Put calendar coming events on front page #&coming_events; &check_hidden; if($addnouveautes == 1) { if($fltval) { $typenouv = "subject"; &nouveaute; } else { &nouveaute; } } if($mail_list && !$hide) { &sendmails; } &chkmailqueue; ####################### sub chkmailqueue { $prestime = int(time/60)-19631284 ; open(MAIN,"$homedir/$mailingdir/queue_check.txt") || die $!; flock(MAIN, 2); @queued = <MAIN>; close(MAIN); $mailinqueue = $queued[0]; if($mailinqueue) { $command_string = "./subvite.pl"; system( $command_string ); } } ############################ sub getmaxtime { open(NUMBER,"$basedir/$mxtimefile"); $maxtime = <NUMBER>; close(NUMBER); } ############################ # Get Data Number Subroutine sub get_number { open(NUMBER,"$basedir/$datafile"); $num = <NUMBER>; close(NUMBER); if ($num == 9999999 || $num !~ /^\d+$/) { $num = "1"; } else { $num++; } } ####################### # Parse Form Subroutine sub parse_form { local($name,$value); # Get the input if($ENV{'CONTENT_LENGTH'}) { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } $change = $buffer; # Split the name-value pairs @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); # Un-Webify plus signs and %-encoding $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/<!--(.|\n)*-->//g; &place_emoticons; if ($allow_html != 1 || $value eq 'subject') { $value =~ s/<([^>]|\n)*>//g; } else { unless ($name eq 'body') { $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}); } } } } } ############### sub place_emoticons { %emot = (' X( ','angry.gif',' :f ','flirt.gif',' :x ','dead.gif',' :( ','frown.gif',' :h ','cool.gif',' :i ','idea.gif'," \:\) ",'smile.gif',' ;) ','wink.gif',' :l ','hrmpf.gif',' :o ','redface.gif',' :00 ','look.gif',' :p ','tounge.gif',' :q ','quest.gif',' :r ','shame.gif',' :D ','biggrin.gif',' :e ','supergrin.gif',' :)) ','bigsmile.gif'); foreach $es (keys %emot) { $fn = $emot{$es}; $es =~ s/\)/\&clspart\;/g; $value =~ s/\)/\&clspart\;/g; $es =~ s/\(/\&opnpart\;/g; $value =~ s/\(/\&opnpart\;/g; $value =~ s/$es/\<img src\=\'http\:\/\/www\.w10\.ca\/emot\/$fn\'\>/g; $value =~ s/\&clspart\;/\)/g; $value =~ s/\&opnpart\;/\(/g; } } ############### # Get Variables sub get_variables { if ($FORM{'fct'}) { $fct = $FORM{'fct'}; } if ($FORM{'psw'}) { $adminpass = "$FORM{'psw'}"; } if($fct eq "updtocome") { #&coming_events; &error("Les événements à venir ont été mis à jour"); } if ($FORM{'doc'}) { $doc = $FORM{'doc'}; } if ($FORM{'dir'}) { $dir = $FORM{'dir'}; } if ($FORM{'rt'}) { $rt = $FORM{'rt'}; } if($fct eq "voirdocs" || $fct eq "voirdoc_dtls") { return; } if ($FORM{'addmailto'}) { $addmailto = $FORM{'addmailto'}; $msgnmbr = $addmailto; } if ($FORM{'msgnmbr'}) { $msgnmbr = $FORM{'msgnmbr'}; } if ($FORM{'first_message'}) { $first_message = $FORM{'first_message'}; } if ($FORM{'viewnbr'}) { $viewnbr = $FORM{'viewnbr'}; &view_all; exit; } if ($FORM{'filter'}) { $filter = $FORM{'filter'}; &filter; &chkmailqueue; exit; } if ($FORM{'followup'}) { $followup = "1"; @followup_num = split(/,/,$FORM{'followup'}); $num_followups = @followups = @followup_num; @lst_msgpop=@followup_num; $last_message = pop(@lst_msgpop); $origdate = "$FORM{'origdate'}"; $origname = "$FORM{'origname'}"; $origsubject = "$FORM{'origsubject'}"; } else { $followup = "0"; } if ($FORM{'newsub'} || $followup eq "0") { $newsub = "oui"; } if ($FORM{'artgfghv'}) { $artgfghv = "$FORM{'artgfghv'}"; } if ($FORM{'artgfgev'}) { $artgfgev = "$FORM{'artgfgev'}"; } if(($newsub || $FORM{'need_code'}) && ($artgfghv ne $artgfgev || !$artgfghv) && $fct ne "erase_msg" && $fct ne "showallfrom" && $fct ne "showlink" && !$addmailto && !$FORM{'mailfct'}) { &error('<center>Entrez le bon code de confirmation pour valider votre message !<br><br><hr width="40%"><i>Le code de confirmation correspond aux quatre chiffres qui se trouvent<br>tout juste au dessus du champ ou vous devez insérer le code</i><br><br><img src="http://www.kayakdemer.net/wwwboard/images/code.gif">'); exit; } if ($FORM{'answto'}) { $answrto = $FORM{'answto'}; } if($FORM{'motdepasse'} && !$FORM{'nom'}) { &error("Vous devez inscrire votre nom ou pseudonyme"); } if($FORM{'nom'} && !$FORM{'motdepasse'}) { &error("Vous devez inscrire votre mot de passe"); } if($FORM{'motdepasse'}) { $FORM{'name'} = $FORM{'nom'}."*".$FORM{'motdepasse'}; } $nameprst = $FORM{'name'}; $nameprst =~ s/\s//g; if ($FORM{'name'} && $nameprst) { if($nameprst =~/\*/) { $nametr = "$FORM{'name'}"; ($name,$psw)= split(/\*/,$nametr); $star=1; } else { $name = "$FORM{'name'}"; } $name =~ s/"//g; $name =~ s/<//g; $name =~ s/>//g; $name =~ s/\&//g; $name =~ s/\s$//g; $name =~ s/^\s//g; } elsif(!($msgnmbr) && ($fct ne "register")) { &error("Vous devez inscrire votre nom ou un pseudonyme"); } if ($FORM{'registered_only'}) { $registered_only = "$FORM{'registered_only'}"; } if($fct eq "showallfrom") { &showallfrom; exit; } if ($FORM{'email'} =~ /.*\@.*\..*/) { $email = "$FORM{'email'}"; } if($FORM{'email'} && !($email)) { &error("Votre adresse de courriel n\'a pas le bon format"); } &check_registered; if ($FORM{'addmail'} eq "on") { if(!($email)) { &error("Vous devez spécifier une adresse de courriel"); } $addmail = "on"; } if ($FORM{'mail_list'}) { $mail_list = $FORM{'mail_list'}; } if ($FORM{'subject'}) { $subject = "$FORM{'subject'}"; $subject =~ s/\&/\&\;/g; $subject =~ s/"/\"\;/g; } elsif(!($msgnmbr) && ($fct ne "register")) { &error("Vous devez spécifier un sujet"); } if ($FORM{'fltval'}) { $fltval = $FORM{'fltval'}; } elsif(!($msgnmbr) && !($followup) && ($fct ne "register")) { &error("Vous devez sélectionner la catégorie de sujet"); } if ($FORM{'url'} =~ /.*\:.*\..*/ && $FORM{'url_title'}) { $message_url = "$FORM{'url'}"; $message_url_title = "$FORM{'url_title'}"; } if ($FORM{'img'} =~ /.*tp:\/\/.*\..*/) { $message_img = "$FORM{'img'}"; } if ($FORM{'body'}) { $body = "$FORM{'body'}"; $body =~ s/\cM//g; $body =~ s/\n\n/<p>/g; $body =~ s/\n/<br>/g; $body =~ s/</</g; $body =~ s/>/>/g; $body =~ s/"/"/g; } elsif(!($msgnmbr) && ($fct ne "register")) { &error("Vous devez inscrire un message"); } if($FORM{'photo1'} ne "none") { $photo1 = "$FORM{'photo1'}"; } if($FORM{'photo2'} ne "none") { $photo2 = "$FORM{'photo2'}"; } if($FORM{'photo3'} ne "none") { $photo3 = "$FORM{'photo3'}"; } &insert_photos; if ($quote_text == 1) { $hidden_body = "$body"; $hidden_body =~ s/</</g; $hidden_body =~ s/>/>/g; $hidden_body =~ s/"/"/g; } ($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","Décembre"); $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); } $cookies=$ENV{'HTTP_COOKIE'}; @couples=split(/\; /,$cookies); foreach $couple (@couples) { ($cook_name,$cook_val)=split(/=/,$couple); $cookies{$cook_name}=$cook_val; } $ft=$cookies{"ft"}; if(!($ft)) { $ft = "nul"; } } #################### sub checkpsw { foreach $ps (@passwords) { if($adminpass eq $ps) { $pass =1; } } if(!$pass) { &error("Mauvais mot de passe"); } } ########### sub insert_photos { if($photo1) { if($body =~/\[photo1\]/) { $body =~ s/\[photo1\]/\<img src=\"$photodir\/$photo1\"\>/; } else { $body = "$body"."<br><img src=\"$photodir\/$photo1\"\>"; } } if($photo2) { if($body =~/\[photo2\]/) { $body =~ s/\[photo2\]/\<img src=\"$photodir\/$photo2\"\>/; } else { $body = "$body"."<br><img src=\"$photodir\/$photo2\"\>"; } } if($photo3) { if($body =~/\[photo3\]/) { $body =~ s/\[photo3\]/\<img src=\"$photodir\/$photo3\"\>/; } else { $body = "$body"."<br><img src=\"$photodir\/$photo3\"\>"; } } } ################ sub check_banned { open(MAIN,"$filter_dir/banned_subject_equal.txt") || die $!; @banned_subject_equal = <MAIN>; close(MAIN); open(MAIN,"$filter_dir/banned_subject_contain.txt") || die $!; @banned_subject_contain = <MAIN>; close(MAIN); open(MAIN,"$filter_dir/banned_url_contain.txt") || die $!; @banned_url_contain = <MAIN>; close(MAIN); open(MAIN,"$filter_dir/block_ips.txt") || die $!; @banned_ips = <MAIN>; close(MAIN); open(MAIN,"$filter_dir/banned_body_contain.txt") || die $!; @banned_body_contain = <MAIN>; close(MAIN); open(MAIN,"$filter_dir/banned_body_equal.txt") || die $!; @banned_body_equal = <MAIN>; close(MAIN); open(MAIN,"$filter_dir/banned_followup_contain.txt") || die $!; @banned_followup_contain = <MAIN>; close(MAIN); open(MAIN,"$filter_dir/needregister_followup.txt") || die $!; @needregister_followup = <MAIN>; close(MAIN); $chk_followup = $FORM{'followup'}; @chk_followups = split(/\,/,$chk_followup); $host_addr=$ENV{'REMOTE_ADDR'}; $chk_body = $body; $chk_body =~ tr/A-Z/a-z/; $chk_subject = $subject; $chk_subject =~ tr/A-Z/a-z/; $chk_message_url = $message_url; $chk_message_url =~ tr/A-Z/a-z/; foreach $bv (@banned_subject_equal) { $bv =~ tr/A-Z/a-z/; $bv =~ s/\n//g; $bv =~ s/\s\n$//g; $bv =~ s/\r//g; if($chk_subject eq $bv) { $banned_key=$bv; &mail_banded; &error("Il n\'est pas possible d\'ajouter ce message. <a href='mailto:forum\@kayakdemer.net'>Contactez-nous</a> si vous croyez qu\'il s\'agit d\'une erreur<br><i>No. de référence:</i> <b>$banned_ref</b>"); } } foreach $bv (@banned_subject_contain) { $bv =~ tr/A-Z/a-z/; $bv =~ s/\n//g; $bv =~ s/\s\n$//g; $bv =~ s/\r//g; if($chk_subject =~ /$bv/) { $banned_key=$bv; &mail_banded; &error("Il n\'est pas possible d\'ajouter ce message. <a href='mailto:forum\@kayakdemer.net'>Contactez-nous</a> si vous croyez qu\'il s\'agit d\'une erreur<br><i>No. de référence:</i> <b>$banned_ref</b>"); } } foreach $bv (@banned_url_contain) { $bv =~ tr/A-Z/a-z/; $bv =~ s/\n//g; $bv =~ s/\s\n$//g; $bv =~ s/\r//g; if($chk_message_url =~ /$bv/) { $banned_key=$bv; &mail_banded; &error("Il n\'est pas possible d\'ajouter ce message. <a href='mailto:forum\@kayakdemer.net'>Contactez-nous</a> si vous croyez qu\'il s\'agit d\'une erreur<br><i>No. de référence:</i> <b>$banned_ref</b>"); } } foreach $bv (@banned_ips) { $bv =~ tr/A-Z/a-z/; $bv =~ s/\n//g; $bv =~ s/\s\n$//g; $bv =~ s/\r//g; if($host_addr =~ /$bv/) { $banned_key=$bv; &mail_banded; &error("Il n\'est pas possible d\'ajouter ce message. <a href='mailto:forum\@kayakdemer.net'>Contactez-nous</a> si vous croyez qu\'il s\'agit d\'une erreur<br><i>No. de référence:</i> <b>$banned_ref</b>"); } } foreach $bv (@banned_body_contain) { $bv =~ tr/A-Z/a-z/; $bv =~ s/\n//g; $bv =~ s/\s\n$//g; $bv =~ s/\r//g; if($chk_body =~ /$bv/) { $banned_key=$bv; &mail_banded; &error("Il n\'est pas possible d\'ajouter ce message. <a href='mailto:forum\@kayakdemer.net'>Contactez-nous</a> si vous croyez qu\'il s\'agit d\'une erreur<br><i>No. de référence:</i> <b>$banned_ref</b>"); } } foreach $bv (@banned_body_equal) { $bv =~ tr/A-Z/a-z/; $bv =~ s/\n//g; $bv =~ s/\s\n$//g; $bv =~ s/\r//g; $bv =~ s/<([^>]|\n)*>//g; if($chk_body eq $bv) { $banned_key=$bv; &mail_banded; &error("Il n\'est pas possible d\'ajouter ce message. <a href='mailto:forum\@kayakdemer.net'>Contactez-nous</a> si vous croyez qu\'il s\'agit d\'une erreur<br><i>No. de référence:</i> <b>$banned_ref</b>"); } } foreach $bv (@banned_followup_contain) { $bv =~ tr/A-Z/a-z/; $bv =~ s/\n//g; $bv =~ s/\s\n$//g; $bv =~ s/\r//g; foreach $cfl (@chk_followups) { if($cfl == $bv) { $banned_key=$bv; &mail_banded; &error("Il n\'est pas possible d\'ajouter ce message. <a href='mailto:forum\@kayakdemer.net'>Contactez-nous</a> si vous croyez qu\'il s\'agit d\'une erreur<br><i>No. de référence:</i> <b>$banned_ref</b>"); } } } foreach $bv (@needregister_followup) { $bv =~ tr/A-Z/a-z/; $bv =~ s/\n//g; $bv =~ s/\s\n$//g; $bv =~ s/\r//g; foreach $cfl (@chk_followups) { if($cfl == $bv && !($reg_usr) || ($cfl < 63773 && !($reg_usr))) { $banned_key=$bv; &mail_banded; &error("Vous devez avoir un nom enregistré pour soumettre une réponse à ce message. <a href='mailto:forum\@kayakdemer.net'>Contactez-nous</a> si vous croyez qu\'il s\'agit d\'une erreur<br><i>No. de référence:</i> <b>$banned_ref</b>"); } } } } ############## sub check_hidden { open(MAIN,"$filter_dir/hide.txt") || die $!; @hide = <MAIN>; close(MAIN); $chk_followup = $FORM{'followup'}; @chk_followups = split(/\,/,$chk_followup); foreach $bv (@hide) { $bv =~ s/\n//g; $bv =~ s/\s\n$//g; $bv =~ s/\r//g; foreach $cfl (@chk_followups) { if($cfl == $bv) { $addnouveautes = 0; $hide = 1; } } } } ################ sub write_ip { $host_addr=$ENV{'REMOTE_ADDR'}; open(MAIN,">>$basedir/ips.txt") || die $!; print MAIN "$num - $host_addr\; id=$ft\n"; close(MAIN); } ################# sub write_name { open(MAIN,"$basedir/names.txt") || die $!; @allnames=<MAIN>; close(MAIN); open(MAIN,">$basedir/names.txt") || die $!; foreach $nml (@allnames) { ($tx,$nms) = split(/=/,$nml); $nms =~ s/\n//g; if($tx == $ft) { if(!($nms =~ /$name/)) { $nms = $nms.";".$name; } $prntnn = 1; } print MAIN "$tx=$nms\n"; } if(!($prntnn)) { print MAIN "$ft=$name\n"; } close(MAIN); } ################# sub putfltval { open(MAIN,">>$basedir/flt_$fltval.txt") || die $!; print MAIN "$num\n"; close(MAIN); ++$tster; open(MAIN,">>$basedir/fltdebug.txt") || die $!; print MAIN "$num|$fltval|$newsub|$tster\n"; close(MAIN); } ############## sub write_ini_stats { open(MAIN,">$stats_dir/$num.js") || die $!; flock(MAIN, 2); print MAIN "//0\n"; print MAIN "document.write(\'<font size=\"'+StatSize+'\"><i>$nmbr</i></font>\')\;"; close(MAIN); } ############ sub mk_page { open(MAIN,"$basedir/$addmailtp") || die $!; @main = <MAIN>; close(MAIN); print "Content-type: text/html\n\n"; foreach $tl (@main) { if($tl =~ /<!--msgnmbr-->/) { print "<input type=\"hidden\" value=\"$addmailto\" name=\"msgnmbr\">"; } else { print "$tl"; } } } ########### sub enregistrer { $nmtoreg = $FORM{'nom'}; $nmtoreg =~ tr/A-Z/a-z/; $nmtoreg =~ s/\s$//g; $nmtoreg =~ s/^\s//g; $motdepasse = $FORM{'motdepasse'}; if(!$nmtoreg) { &error("Vous devez entrer un nom à enregistrer !"); } if(!($motdepasse)) { &error("Vous devez entrer un mot de passe !"); } open(MAIN,"$basedir/$reg_names") || die $!; @rnms = <MAIN>; close(MAIN); if($nmtoreg eq "liste" && $motdepasse eq "admin") { print "Content-type: text/html\n\n"; } foreach $rninfs (@rnms) { ($rname,$rpsw,$remail,$sh_email) = split(/\|/,$rninfs); if($rname eq $nmtoreg) { $takennm=1; } ++$nrnms; if($nmtoreg eq "liste" && $motdepasse eq "admin") { print "$rname - $rpsw - $remail - $sh_email<br>"; } } if($takennm && $nmtoreg ne "liste") { &error("Le nom $nmtoreg est déjà réservé !<br>$nrnms noms ont déjà été reservés"); } if($nmtoreg eq "liste" && $motdepasse eq "admin") { print "********<br><b>$nrnms noms enregistrés</b>"; exit; } if($nmtoreg eq "nombre") { &error("$nrnms noms enregistrés"); } ++$nrnms; open(MAIN,">>$basedir/$reg_names") || die $!; flock(MAIN, 2); print MAIN "$nmtoreg|$FORM{'motdepasse'}|$email|$FORM{'showmail'}\n"; close(MAIN); print "Content-type: text/html\n\n"; print "<blockquote><font size=+1><br>"; print "Le nom <b>$nmtoreg</b> a été enregistré avec succès !<br>"; print "Mot de passe: <b>$FORM{'motdepasse'}</b><br>"; print "Courriel: <b>$email</b><br>"; if($FORM{'showmail'} eq "oui") { print "Votre courriel sera lié à votre nom lors d\'ajout de messages<br><br></font>"; } else { print "Votre courriel ne sera pas lié à votre nom lors d\'ajout de messages<br><i><br>$nrnms noms ont déjà été reservés</i><br><br></font>"; } print "<p>Comment utiliser votre nom enregistré ?</p><p>Lorsque vous ajoutez un message, entrez (sans espaces !) votre <b>nom</b> suivit d\'une étoile (<b>*</b>) suivit de votre <b>mot de passe</b></p>\n"; print "<p>Exemple:</p><p>Si votre nom enregistré est <b><i>François</i></b> et votre mot de passe est <i><b>pagaie</b></i>, vous devez entrer:</p><blockquote>\n"; print "<p>Nom:<input type=\"text\" name=\"textfieldName\" value=\"Franç\;ois*pagaie\" size=\"24\" border=\"0\"><br></p></blockquote>\n"; print "<p>Vous n\'avez pas à\; entrer votre courriel qui sera ajouté\; automatiquement si vous avez sé\;lectionné\; "\;Afficher votre courriel"\; lors de l\'enregistrement de votre nom.</p>\n"; print "<p><b>ATTENTION</b>: Utilisez votre <i>surnom*motdepasse</i> <u><b>UNIQUEMENT</b></u> sur le forum puisque si vous l\'utilisiez ailleurs sur le site, l\'information n\'é\;tant pas traité\;, tous verraient apparaitre <i>surnom*motdepasse</i> à\; la place de votre nom et connaî\;traient alors votre pré\;cieux motdepasse !</p>\n"; exit; } ########### sub check_registered { use DBI; $dbh = DBI->connect("DBI:mysql:stephm69_kmnmdatas:localhost","stephm69_kmnm","access") || die "Connect failed: $DBI::errstr\n"; $chckname = $name; &removebadchar($chckname); $chckname = $string; $reg_gif="no_reg.gif"; $query = "SELECT * FROM users WHERE user='$chckname'"; $sth = $dbh->prepare($query); $result = $sth->execute; if($datas = $sth->fetchrow_hashref) { $remail = $datas->{email}; $rpsw = $datas->{motdepasse}; $sh_email = $datas->{showmail}; if($psw eq $rpsw) { if($chckname eq "stephane") { $registered = "<a href=\'http://www.kayakdemer.net/forum/voir_profil.php?user=$chckname\'>$name</a><img src=\'$baseurl/reg3.gif\'>"; $regiusr_email = $remail; $reg_gif="reg3.gif"; } else { $registered = "<a href=\'http://www.kayakdemer.net/forum/voir_profil.php?user=$chckname\'>$name</a><img src=\'$baseurl/reg2.gif\'>"; $regiusr_email = $remail; $reg_gif="reg2.gif"; } $email =$remail; $reg_usr=1; } else { &error("Le nom <b>$name</b> est réservé et vous n\'avez pas soumis le bon mot de passe"); } } if(!($reg_usr)) { $query = "SELECT * FROM old_users WHERE user='$chckname'"; $sth = $dbh->prepare($query); $result = $sth->execute; if($datas = $sth->fetchrow_hashref) { $remail = $datas->{email}; $rpsw = $datas->{motdepasse}; $sh_email = $datas->{showmail}; if($psw eq $rpsw) { if($sh_email eq "oui") { $registered = "<a href=\'mailto:$remail\'>$name</a><img src=\'$baseurl/reg.gif\'>"; $regiusr_email = $remail; } else { $registered = "$name<img src=\'$baseurl/reg.gif\'>"; } $regiusr_email = $remail; $reg_gif="reg.gif"; $email =$remail; $reg_usr=1; } else { &error("Le nom <b>$name</b> est réservé et vous n\'avez pas soumis le bon mot de passe"); } } } if(!($reg_usr) && $star) { &error("Le surnom <b><i>$chckname</i></b> et le mot de passe <b><i>$psw</b></i> ne sont pas enregistrés ou n\'utilisez pas le caractère * dans votre surnom"); } } ############ sub show_alldocs { $prnt = 0; $bgcolor ="eeeeee"; if($dir) { $fldocsdir = "$docsdir/$dir"; } else { $fldocsdir = "$docsdir"; } print "Content-type: text/html\n\n"; print "<html><head><title>ADMIN: Tous les documents</title>\n"; print "<script><!--\n"; print "function openWindow(Larg,Haut,url){specs= \'scrollbars,resizable,width=\'+Larg+\',height=\'+Haut+\',screenX=25,screenY=100\'; popupWin = window.open(url, \'big_photo\', specs)}\n"; print "//--></script>\n"; print <<"EOF"; <style media="screen" type="text/css"><!-- a { text-decoration: none } a:hover { text-decoration: underline } --></style> EOF print "</head>"; print "<body><center>\n"; print "<br>"; $ln_pict = 0; print "<b>Les documents:</b><br><br>"; opendir DIR, "$fldocsdir" or die "Can't open directory $dir: $!\n"; while ($file = readdir DIR) { if($file ne "." && $file ne ".." && !($file =~ "docdir")) { print "<a href=\"wwwboard.pl?fct=voirdocs&doc=$file&dir=$dir\">\n"; $temp = $file; $temp =~ s#.*/(.*/.*/.*)$#$1#; $abslink = "$fldocsdir/$temp"; $filesize = (stat($abslink))[7]; if($filesize < 1000000) { $filesize = (int($filesize/10))/100; $in = "KB"; } else { $filesize = (int($filesize/10000))/100; $in = "MB"; } print "$file</a> ($filesize $in)<br>\n"; print "\n\n"; $prnt = 1; } elsif($file =~ "docdir") { $dirname = $file; $dirname =~ s/docdir_//g; print "<img src=\"$baseurl/folder.gif\"><a href=\"wwwboard.pl?fct=voirdocs&dir=$file\">$dirname</a><br>\n"; } } if(!$prnt) { print "<i>*** Aucun document ***</i>"; } print "<br><br>\n"; # print "[ <A HREF=\"\#\" onclick=\'parent.window.close()\'>Fermer cette fenêtre</a> ]"; print "</body></html>\n"; } ############ sub show_doc { $bgcolor ="eeeeee"; if($dir) { $fldocsdir = "$docsurl/$dir"; } else { $fldocsdir = "$docsurl"; } print "Content-type: text/html\n\n"; print "<html><head><title>Voir un document</title>\n"; print "</head>"; print "<frameset rows=\"50\,\*\"\ border=\"0\" framespacing=\"0\" frameborder=\"no\">"; print "<frame src=\"http://www.kayakdemer.net/cgi-bin2/wwwboard.pl\?fct=voirdoc_dtls&doc=$doc\" name=\"doc_dtls\">\n"; print "<frame src=\"$fldocsdir/$doc\" name=\"doc\" noresize>\n"; print "</frameset>\n"; print "</html>\n"; } ########### sub showdoc_dtls { $bgcolor ="eeeeee"; print "Content-type: text/html\n\n"; print "<html><head><title>Voir un document</title>\n"; print <<"EOF"; <style media="screen" type="text/css"><!-- a { text-decoration: none } a:hover { text-decoration: underline } --></style> EOF print "</head>"; print "<body>\n"; print "<font size=-1>\n"; print "<i><b>insertion image:</b></i> \<\;img src=\'http://www.kayakdemer.net/docs/$doc\' border=\'0\'\>\;<br>\n"; print "<i><b>insertion lien:</b></i> \<\;a href=\'http://www.kayakdemer.net/docs/$doc\' target=\'_blank\'\>\;$doc\<\;/a\>\;\n"; print "</font>"; print "</body></html>\n"; } ##################### sub show_link { $bgcolor ="eeeeee"; print "Content-type: text/html\n\n"; print "<html><head><title>Lien vers le message $msgnmbr</title>\n"; print "</head>"; print "<body>\n"; print "<font size=+1>Message $msgnmbr</font><br><br>\n"; print "<font size=-1>\n"; print "<i><b>Adresse de ce message:</b></i><br> http://www.kayakdemer.net/wwwboard/messages/$msgnmbr.html<br><br>\n"; print "<i><b>Lien vers ce message:</b></i><br> \<\;a href=\'http://www.kayakdemer.net/wwwboard/messages/$msgnmbr.html\' \>\;Message $msgnmbr\<\;/a\>\;<br><br>\n"; print "<i><b> ou, à l\'intérieur d\'un message du forum:</b></i><br>\n"; print "\<\;a href=\'$msgnmbr.html\' \>\;Message $msgnmbr\<\;/a\>\;<br>\n"; print "</font>"; print "</body></html>\n"; } ##################### # New File Subroutine sub new_file { open(MAIN,"$basedir/$template") || die $!; @main = <MAIN>; close(MAIN); open(NEWFILE,">$basedir/$mesgdir/$num\.$ext") || die $!; flock(NEWFILE, 2); foreach $main_line (@main) { if($main_line =~ /<!--titre-->/) { print NEWFILE "<TITLE>Le Kayak de Mer dans le Nouveau Monde - Forum\: $subject</TITLE>\n"; } if ($main_line =~ /<!--debut-->/) { print NEWFILE "<blockquote>\n"; print NEWFILE "<center><font size=3><b>$subject</b></font>\n"; print NEWFILE "</center>\n"; print NEWFILE "<hr width=75%>\n"; print NEWFILE "<center>[ <a href=\"#followups\">Réponses</a> ] [ <a href=\"#postfp\">Soumettre une réponse</a> ]<br>[ <a href=\"javascript:onclick=openWindow2(450,275,\'$cgis_url/wwwboard.pl?addmailto=$num\')\;\">M\'abonner à cette discussion</a> ]<br>\n"; print NEWFILE "</center><hr width=75%><p>\n"; print NEWFILE "Soumis par "; if($registered) { print NEWFILE "$registered<br>\n"; } else { if ($email) { print NEWFILE "<a href=\"mailto:$email\">$name</a><br>\n"; } else { print NEWFILE "<b>$name</b><br>\n"; } } if ($show_poster_ip) { print NEWFILE "($ENV{'REMOTE_ADDR'}) "; } print NEWFILE "Date: $long_date<br>\n"; if ($followup == 1) { print NEWFILE "En réponse à: <a href=\"$last_message\.$ext\">$origsubject</a> soumis par <b>"; if ($origemail) { print NEWFILE "<a href=\"$origemail\">$origname</a></b> Date: $origdate:<br>\n"; } else { print NEWFILE "$origname </b>Date: $origdate:<br>\n"; } } if ($message_img) { print NEWFILE "<center><img src=\"$message_img\"></center><p>\n"; } print NEWFILE "<TABLE WIDTH=850 BORDER=0 CELLPADDING=0 CELLSPACING=0>\n"; print NEWFILE "<tr><TD></td><td>\n"; print NEWFILE "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"828\"><tr><td>\n"; if($followup && $first_message) { print NEWFILE "<br><div align=\"left\"><a onmouseover=\"changeImages( /*CMP*/'premier_message_off',/*URL*/'images/premier_message_on.gif');return true\" onmouseout=\"changeImages( /*CMP*/'premier_message_off',/*URL*/'images/premier_message_off.gif');return true\" href=\"$baseurl/$mesgdir/$first_message.html\"><img src=\"images/premier_message_off.gif\" alt=\"\" name=\"premier_message_off\" height=\"41\" width=\"188\" border=\"0\"></a></div>"; } print NEWFILE "</td><td></td><td>\n"; print NEWFILE "<!--allmsg-->\n"; print NEWFILE "</td></tr></table>\n"; print NEWFILE "</td><td></td></tr>\n"; print NEWFILE <<"EOF"; <TR> <TD COLSPAN=3> <IMG SRC="../../slices_images/message-forum_01.gif" WIDTH=850 HEIGHT=29></TD> </TR> <TR> <TD background="../../slices_images/message-forum_02.gif"> <IMG SRC="../../slices_images/message-forum_02.gif" WIDTH=10 HEIGHT=49></TD> <TD> EOF print NEWFILE "<div align=\"center\"><table border=\"0\" cellpadding=\"5\" cellspacing=\"0\" width=\"100%\" bgcolor=\"\#ddecb9\"><tr><td>\n"; print NEWFILE "<!--sujet--><b>$subject</b><br>\n"; print NEWFILE "<!--date--><font color=555555><i>$long_date</i></font><br>\n"; print NEWFILE "<!--body-->$body <IMG src=\"$cgis_url/mess_stats.pl?id=$num\" width=1 height=1>\n"; print NEWFILE "</td></tr></table></div>\n"; print NEWFILE <<"EOF"; </TD> <TD background="../../slices_images/message-forum_04.gif"> <IMG SRC="../../slices_images/message-forum_04.gif" WIDTH=12 HEIGHT=49></TD> </TR> <TR><TD><IMG SRC="../../slices_images/message-forum_05.gif" WIDTH=10 HEIGHT=18></TD> <TD><IMG SRC="../../slices_images/message-forum_06.gif" WIDTH=828 HEIGHT=18></TD> <TD><IMG SRC="../../slices_images/message-forum_07.gif" WIDTH=12 HEIGHT=18></TD> </TR> </TABLE> <div align="right"> <table WIDTH="830" border="0" cellspacing="0" cellpadding="2" font size="-2"> <tr height="15"> EOF print NEWFILE "<td align=\"left\" height=\"15\" width=\"400\"><font size=\"-2\"><i>Lu</i>: </font><font id=\"lk\">\n"; print NEWFILE "<script src=\"$stats_url/$num.js\" type=\"text/javascript\"></script></font></td>\n"; print NEWFILE "<td align=\"right\" height=\"15\"><font size=\"-2\"><i>Message no</i>: </font></td>\n"; print NEWFILE "<td align=\"right\" height=\"15\"><font size=\"-2\"><a href=\"javascript:onclick=openWindow2(550,275,\'http://www.kayakdemer.net/cgi-bin2/wwwboard.pl?fct=showlink\&msgnmbr=$num\');\"><font id=\"lk\">$num</font></a></font></td>\n"; print NEWFILE "<td width=70 ></td></tr>\n"; if($registered) { print NEWFILE "<tr height=\"15\">\n"; print NEWFILE "<td align=\"left\" height=\"15\" width=\"400\"></td>\n"; print NEWFILE "<td align=\"right\" height=\"15\"><font size=\"-2\"><i>Soumis par</i> \<font id=\"lk\">$name</font>: </font></td>\n"; &get_nmbmesgs($name); print NEWFILE "<td align=\"right\" height=\"15\"><font size=\"-2\"><b><a href=\"http://www.kayakdemer.net/cgi-bin2/wwwboard.pl?fct=showallfrom\&name=$name\&msgnmbr=$num\"><font id=\"lk\">$totalmsg</font></a></b></font></td><td width=70 ></td></tr>\n"; } print NEWFILE "</table>\n"; print NEWFILE "<br>\n"; print NEWFILE "</div>\n"; print NEWFILE "<br>\n"; if ($message_url) { print NEWFILE "<ul><li><a href=\"$message_url\" target=\"_blank\">$message_url_title</a></ul>\n"; } print NEWFILE "<br><hr width=75%><p>\n"; print NEWFILE "<a name=\"followups\">Réponses:</a><br>\n"; print NEWFILE "<ul><!--insert: $num-->\n"; print NEWFILE "</ul><!--end: $num-->\n"; print NEWFILE "<br><center><hr width=75%><p>\n"; print NEWFILE "<a name=\"postfp\">Soumettre une réponse</a><p>\n"; print NEWFILE <<"EOF"; <table width="597" border="0" cellspacing="0" cellpadding="3" bgcolor="#bbbbbb"> <tr> <td> <table border="0" cellspacing="0" cellpadding="4" bgcolor="#ffffff"> <tr> <td bgcolor="#eeeeee"> <center><br> EOF print NEWFILE "<form name=\"boardform\" method=POST action=\"$cgi_url\">\n"; print NEWFILE "<input type=hidden name=\"followup\" value=\""; if ($followup == 1) { foreach $followup_num (@followup_num) { print NEWFILE "$followup_num,"; } } print NEWFILE "$num\">\n"; print NEWFILE "<input type=hidden name=\"origname\" value=\"$name\">\n"; if ($email) { print NEWFILE "<input type=hidden name=\"origemail\" value=\"$email\">\n"; } print NEWFILE "<!--mail_list--><input type=hidden name=\"mail_list\" value=\"$mail_list"; if($addmail eq "on" && !($mail_list =~ /$email/)) { print NEWFILE "|$email"; } print NEWFILE "\">\n"; if(!$followup) { $first_message = $num; } print NEWFILE "<input type=hidden name=\"first_message\" value=\"$first_message\">\n"; print NEWFILE "<input type=hidden name=\"origsubject\" value=\"$subject\">\n"; print NEWFILE "<input type=hidden name=\"origdate\" value=\"$date\">\n"; if($registered_only) { print NEWFILE '*** <i><b>VOUS DEVEZ AVOIR UN <a href="http://www.kayakdemer.net/profils/register_form.php" target="_blank">NOM ENREGISTRÉ</a> <br>POUR POUVOIR RÉPONDRE À CE MESSAGE</b></i> ***<BR><table width: 306 height: 5 border="0" cellspacing="0" cellpadding="5"><tr><td align="center">Nom : </td><td><input type="text" name="nom" size="24" / align="absmiddle"></td></tr><tr><td>Mot de passe :</td><td><input type="password" name="motdepasse" size="24" /></td></tr></table><input type="hidden" name="registered_only" value="oui"/>'; } else { print NEWFILE "Nom: <input type=text name=\"name\" size=50><a href=\"javascript:openWindow('http://www.kayakdemer.net/equipement/infos.html#profil_ready')\"><img src=\"http://www.kayakdemer.net/equipement/images/profil_ready.gif\" alt=\"\" height=\"32\" width=\"35\" align=\"absmiddle\" border=\"0\"></a><br><font size=\"1\"><i>Si votre nom est <a href=\"http://www.kayakdemer.net/profils/register_form.php\" target=\"_blank\">enregistré\;</a> utilisez:</i> <b>surnom*motdepasse</b></font>\n"; } print NEWFILE "<p>E-Mail: <input type=text name=\"email\" size=50><br>\n"; print NEWFILE "<input type=\"checkbox\" name=\"addmail\"> Recevoir un courriel lors de réponses<p>\n"; if ($subject_line == 1) { if ($subject_line =~ /^Re:/) { print NEWFILE "<input type=hidden name=\"subject\" value=\"$subject\">\n"; print NEWFILE "Sujet: <b>$subject</b><p>\n"; } else { print NEWFILE "<input type=hidden name=\"subject\" value=\"Re: $subject\">\n"; print NEWFILE "Sujet: <b>Re: $subject</b><p>\n"; } } elsif ($subject_line == 2) { print NEWFILE "Sujet: <input type=text name=\"subject\" size=50><p>\n"; } else { if ($subject =~ /^Re:/) { print NEWFILE "Sujet: <input type=text name=\"subject\"value=\"$subject\" size=50><p>\n"; } else { print NEWFILE "Sujet: <input type=text name=\"subject\" value=\"Re: $subject\" size=50><p>\n"; } } print NEWFILE <<"EOF"; <br> <a onmouseover="changeImages('add_photo_off','../images/add_photo_on.gif');return true" onmouseout="changeImages('add_photo_off','../images/add_photo_off.gif');return true" href="javascript:openWindow3('http://www.kayakdemer.net/wwwboard/add_photo.html',750,500)"><img src="../images/add_photo_off.gif" alt="" name="add_photo_off" height="32" width="194" border="0"></a><br> <input type="hidden" name="photo1" value="none" border="0"><input type="hidden" name="photo2" value="none" border="0"><input type="hidden" name="photo3" value="none" border="0"> <br><a href="javascript:showphotos()"><SPAN ID="special_link">Photos jointes</SPAN></a>: <img src="http://www.kayakdemer.net/wwwboard/images/0.gif" alt="" height="14" width="11" align="absmiddle" border="0" name="nmbr_photos"> <br><br>Commentaires: <script src="http://www.kayakdemer.net/wwwboard/editor_script.js"></script> EOF print NEWFILE "<textarea name=\"body\" COLS=65 ROWS=10 wrap=\"virtual\" onblur=\"storeRange()\;\">\n"; if ($quote_text == 1) { @chunks_of_body = split(/\<\;p\>\;/,$hidden_body); foreach $chunk_of_body (@chunks_of_body) { @lines_of_body = split(/\<\;br\>\;/,$chunk_of_body); foreach $line_of_body (@lines_of_body) { print NEWFILE ": $line_of_body\n"; } print NEWFILE "\n"; } } print NEWFILE "</textarea><br>\n"; print NEWFILE <<"EOF"; <script src="http://www.kayakdemer.net/wwwboard/emot_script.js"></script> EOF print NEWFILE "<p>\n"; print NEWFILE "URL lien optionnel : <input type=text name=\"url\" size=50><br>\n"; print NEWFILE "Titre du lien: <input type=text name=\"url_title\" size=48><br>\n"; print NEWFILE "URL image optionnel: <input type=text name=\"img\" size=49><p>\n"; print NEWFILE <<"EOF"; <!-- ******* ANTI-SPAM CODE START ************ --> <input type=hidden name="need_code" value="yes"> <table bgcolor="#99ccff"> <tr><td class="sub_menu"> Code antispam </td><td class="basic_text"> <div ID="artgf"></div> </td></tr> <tr><td class="sub_menu"> Entrez le code </td><td> <input type="hidden" id="artgfghv" name="artgfghv"> <input type="text" id="artgfgev" name="artgfgev" value="" size="6"> <script language="javascript"> <!-- var artgfn = Math.round(Math.random()*9000+1000); var artgfg = artgfn.toString(); document.getElementById("artgf").innerHTML = artgfg.toString(); var obj = document.getElementById("artgfghv"); obj.value=artgfg; //--> </script> </td></tr> </table> <br><br> <!-- ******* ANTI-SPAM CODE END ************ --> EOF print NEWFILE "<input type=submit value=\"Soumettre\"> <input type=reset value=\"Effacer\" onclick=\"reset_photos()\">\n"; print NEWFILE <<"EOF"; </center> </td> </tr> </table> </td> </tr> </table> EOF print NEWFILE "<p><hr width=75%>\n"; print NEWFILE "<center>[ <a href=\"#followups\">Réponses</a> ] [ <a href=\"#postfp\">Soumettre une réponse</a> ] </center>\n"; print NEWFILE "</blockquote>\n"; } else { print NEWFILE "$main_line"; } } close(NEWFILE); } ####################### sub get_nmbmesgs { $nametocheck = $_[0]; removebadchar($nametocheck); $nametocheck = $string; $nmbrmsgs = 0; open(MAIN2,"$basedir/$nmbmsgsfile") || die $!; @allusrsnmbmsgs = <MAIN2>; close(MAIN2); foreach $usrnmbr (@allusrsnmbmsgs) { ($usrx,$nmbrx) = split(/\|/,$usrnmbr); $usrx =~ tr/A-Z/a-z/; $nmbrx =~ s/\n//g; $nmbrx =~ s/\s\n$//g; $nmbrx =~ s/\r//g; if($usrx eq $nametocheck) { $totalmsg = $nmbrx; } } if(!($totalmsg)) { open(MAIN3,"$basedir/$mesgfile_all") || die $!; @main3 = <MAIN3>; close(MAIN3); foreach $mainline (@main3) { removebadchar($mainline); $mainline_low = $string; if(($mainline_low =~ /\>$nametocheck\</) && $mainline_low =~ /\/reg/) { ++$totalmsg; } } } ++$totalmsg; open(MAIN4,">$basedir/$nmbmsgsfile") || die $!; flock(MAIN4, 2); foreach $usrnm (@allusrsnmbmsgs) { ($usrx,$nmbrx) = split(/\|/,$usrnm); $nmbrx =~ s/\n//g; $nmbrx =~ s/\s\n$//g; $nmbrx =~ s/\r//g; if($usrx eq $nametocheck) { print MAIN4 "$usrx|$totalmsg\n"; $nameadded = 1; } elsif($usrx) { print MAIN4 "$usrx|$nmbrx\n"; } } if(!($nameadded)) { print MAIN4 "$nametocheck|$totalmsg\n"; } close(MAIN4); } ############################### # Main WWWBoard Page Subroutine sub main_page { open(MAIN,"$basedir/$mesgfile_all") || die $!; @main = <MAIN>; close(MAIN); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time-5*3600); $month = ($mon + 1); $hr = int(($hour/24)*10)/10; $tempsub=($year-101)*365+($mon+1)*30+$mday+$hr; open(MAIN,">$basedir/$mesgfile_all") || die $!; flock(MAIN, 2); if($registered_only) { $incl_reg_incon = "<img src='http://www.kayakdemer.net/wwwboard/images/registred_only.png' align='absmiddle'> "; } if ($followup == 0) { foreach $main_line (@main) { if ($main_line =~ /<!--begin-->/) { print MAIN "<!--begin-->\n"; print MAIN "<ul><!--top: $num--><li>".$incl_reg_incon."<a href=\"$baseurl/$mesgdir/$num\.$ext\"><b>$subject</b></a> - <b>$name</b><img src=\'$baseurl/$reg_gif\'> <i>$long_date</i>\n"; print MAIN "<SCRIPT><!--\n"; print MAIN "nouveau($tempsub)\n"; print MAIN "//--></SCRIPT>\n"; print MAIN "(<!--responses: $num-->R:0 L:<? shownmbr($num) ?>)\n"; print MAIN "<!--insert: $num-->\n"; print MAIN "</ul><!--end: $num-->\n"; } else { print MAIN "$main_line"; } } } else { foreach $main_line (@main) { $work = 0; if ($main_line =~ /<!--insert: $last_message-->/) { print MAIN "<ul><!--top: $num--><li><a href=\"$baseurl/$mesgdir/$num\.$ext\"><i>$subject</i></a> - <b>$name</b><img src=\'$baseurl/$reg_gif\'> <i>$long_date</i>\n"; print MAIN "<SCRIPT><!--\n"; print MAIN "nouveau($tempsub)\n"; print MAIN "//--></SCRIPT>\n"; print MAIN "(<!--responses: $num-->R:0 L:<? shownmbr($num) ?>)\n"; print MAIN "<!--insert: $num-->\n"; print MAIN "</ul><!--end: $num-->\n"; print MAIN "<!--insert: $last_message-->\n"; } elsif ($main_line =~ /\(<!--responses: (.*)-->R:(.*)/) { $response_num = $1; $num_responses = $2; $num_responses++; foreach $followup_num (@followup_num) { if ($followup_num == $response_num) { print MAIN "(<!--responses: $followup_num-->R:$num_responses L:<? shownmbr($followup_num) ?>)\n"; $work = 1; } } if ($work != 1) { print MAIN "$main_line"; } } elsif ($main_line =~ /\(<!--responses: (.*)-->(.*)\)/) { $response_num = $1; $num_responses = $2; $num_responses++; foreach $followup_num (@followup_num) { if ($followup_num == $response_num) { print MAIN "(<!--responses: $followup_num-->$num_responses)\n"; $work = 1; } } if ($work != 1) { print MAIN "$main_line"; } } else { print MAIN "$main_line"; } } } close(MAIN); } ############################################ # Add Followup Threading to Individual Pages sub thread_pages { foreach $followup_num (@followup_num) { open(FOLLOWUP,"$basedir/$mesgdir/$followup_num\.$ext"); @followup_lines = <FOLLOWUP>; close(FOLLOWUP); open(FOLLOWUP,">$basedir/$mesgdir/$followup_num\.$ext"); flock(FOLLOWUP, 2); foreach $followup_line (@followup_lines) { $work = 0; if ($followup_line =~ /<!--insert: $last_message-->/) { print FOLLOWUP "<ul><!--top: $num--><li><a href=\"$num\.$ext\">$subject</a> <b>$name</b><img src=\'$baseurl/$reg_gif\'> <i>$date</i>\n"; print FOLLOWUP "(<!--responses: $num-->0)\n"; print FOLLOWUP "<!--insert: $num-->\n"; print FOLLOWUP "</ul><!--end: $num-->\n"; print FOLLOWUP "<!--insert: $last_message-->\n"; } elsif ($followup_line =~ /\(<!--responses: (.*)-->(.*)\)/) { $response_num = $1; $num_responses = $2; $num_responses++; foreach $followup_num (@followup_num) { if ($followup_num == $response_num) { print FOLLOWUP "(<!--responses: $followup_num-->$num_responses)\n"; $work = 1; } } if ($work != 1) { print FOLLOWUP "$followup_line"; } } elsif($followup_line =~ /<!--allmsg-->/) { print FOLLOWUP "<div align=\"right\"><a onmouseover=\"changeImages( /*CMP*/'toutes_reponses_off',/*URL*/'images/toutes_reponses_on.gif');return true\" onmouseout=\"changeImages( /*CMP*/'toutes_reponses_off',/*URL*/'images/toutes_reponses_off.gif');return true\" href=\"$cgi_url\?viewnbr=$followup_num\"><img src=\"images/toutes_reponses_off.gif\" alt=\"\" name=\"toutes_reponses_off\" height=\"41\" width=\"214\" border=\"0\"></a></div>\n"; } else { print FOLLOWUP "$followup_line"; } } close(FOLLOWUP); } } ############################ sub return_html { open(MAIN,"$basedir/$template"); @template = <MAIN>; close(MAIN); print "Content-type: text/html\n\n"; foreach $tl (@template) { if ($tl =~ /<!--debut-->/) { print "<blockquote><br><br><br>"; print "Le message suivant a été ajouté au forum:<p><hr width=75%><p>\n"; print "<b>Nom:</b> $name<img src=\'$baseurl/$reg_gif\'><br>\n"; print "<b>E-Mail:</b> $email<br>\n"; if($addmail eq "on") { print "<b>Recevoir un message lors de réponses:</b> oui<br>\n"; } print "<b>Sujet:</b> $subject<br>\n"; print "<b>Message:</b><p>\n"; print "$body<p>\n"; if ($message_url) { print "<b>Lien:</b> <a href=\"$message_url\">$message_url_title</a><br>\n"; } if ($message_img) { print "<b>Image:</b> <img src=\"$message_img\"><br>\n"; } print "<b>Ajouté en date:</b> $long_date<p>\n"; if($chgfrontmsg == 1) { print "<i>*** Votre message pourrait ne pas être affiché imédiatement sur la page d\'accueil ***</i>\n"; } print "<hr width=75%>\n"; print "<center>[ <a href=\"$baseurl/$mesgdir/$num\.$ext\">Aller à votre message</a> ] [ <a href=\"$direct_wwboard_url\">Retour au forum</a> ]</center>\n"; } else { print $tl; } } } ################################# sub increment_num { open(NUM,">$basedir/$datafile") || die $!; flock(NUM, 2); print NUM "$num"; close(NUM); } ############################# sub error { $error = $_[0]; print "Content-type: text/html\n\n"; if ($error eq 'no_name') { print "<html><head><title>$title ERROR: No Name</title></head>\n"; print "<body><center><h1>ERROR: No Name</h1></center>\n"; print "You forgot to fill in the 'Name' field in your posting. Correct it below and re-submit. The necessary fields are: Name, Subject and Message.<p><hr size=7 width=75%><p>\n"; &rest_of_form; } elsif ($error eq 'no_subject') { print "<html><head><title>$title ERROR: No Subject</title></head>\n"; print "<body><center><h1>ERROR: No Subject</h1></center>\n"; print "You forgot to fill in the 'Subject' field in your posting. Correct it below and re-submit. The necessary fields are: Name, Subject and Message.<p><hr size=7 width=75%><p>\n"; &rest_of_form; } elsif ($error eq 'no_body') { print "<html><head><title>$title ERROR: No Message</title></head>\n"; print "<body><center><h1>ERROR: No Message</h1></center>\n"; print "You forgot to fill in the 'Message' field in your posting. Correct it below and re-submit. The necessary fields are: Name, Subject and Message.<p><hr size=7 width=75%><p>\n"; &rest_of_form; } elsif ($error eq 'field_size') { printf "<html><head><title>$title ERROR: Field too Long</title></head>\n"; print "<body><center><h1>ERROR: Field too Long</h1></center>\n"; print "One of the form fields in the message submission was too long. The following are the limits on the size of each field (in characters):<p><ul>\n"; print "<li>Name: $max_len{'name'}\n"; print "<li>E-Mail: $max_len{'email'}\n"; print "<li>Subject: $max_len{'subject'}\n"; print "<li>Body: $max_len{'body'}\n"; print "<li>URL: $max_len{'url'}\n"; print "<li>URL Title: $max_len{'url_title'}\n"; print "<li>Image URL: $max_len{'img'}\n"; print "</ul>Please modify the form data and resubmit.<p><hr size=7 width=75%><p>\n"; &rest_of_form; } else { print "<html><head><title>ERREUR</title></head>\n"; print "<body><center><h1>ERREUR:</h1>\n"; print "<br></center><blockquote>$error</blockquote><br><br>\n"; print "<center><a href=\"javascript\:history.go\(-1\)\">[ Retour au formulaire ]</a></center><br><p><hr width=75%>\n"; print "</body></html>"; } exit; } ############################### sub rest_of_form { print "<form name=\"boardform\" method=POST action=\"$cgi_url\">\n"; if ($followup == 1) { print "<input type=hidden name=\"origsubject\" value=\"$FORM{'origsubject'}\">\n"; print "<input type=hidden name=\"origname\" value=\"$FORM{'origname'}\">\n"; print "<input type=hidden name=\"origemail\" value=\"$FORM{'origemail'}\">\n"; print "<input type=hidden name=\"origdate\" value=\"$FORM{'origdate'}\">\n"; print "<input type=hidden name=\"followup\" value=\"$FORM{'followup'}\">\n"; } print "Name: <input type=text name=\"name\" value=\"$FORM{'name'}\" size=50><br>\n"; print "E-Mail: <input type=text name=\"email\" value=\"$FORM{'email'}\" size=50><p>\n"; if ($subject_line == 1) { print "<input type=hidden name=\"subject\" value=\"$FORM{'subject'}\">\n"; print "Subject: <b>$FORM{'subject'}</b><p>\n"; } else { print "Subject: <input type=text name=\"subject\" value=\"$FORM{'subject'}\" size=50><p>\n"; } print "Message:<br>\n"; print "(<i>Vous pouvez <a href=\"../html.html\">inclure du HTML</a></i>)<br>\n"; print "<textarea COLS=50 ROWS=10 name=\"body\">\n"; $FORM{'body'} =~ s/</</g; $FORM{'body'} =~ s/>/>/g; $FORM{'body'} =~ s/"/"/g; print "$FORM{'body'}\n"; print "</textarea><p>\n"; print <<"EOF"; <a href="javascript:addsmile(' X( ')"><img src="http://www.w10.ca/emot/angry.gif" width="15" height="15" border="0"></a> <a href="javascript:addsmile(' :f ')"><img src="http://www.w10.ca/emot/flirt.gif" width="15" height="15" border=0></a> <a href="javascript:addsmile(' :x ')"><img src="http://www.w10.ca/emot/dead.gif" width="15" height="15" border=0></a> <a href="javascript:addsmile(' :( ')"><img src="http://www.w10.ca/emot/frown.gif" width="15" height="15" border=0></a> <a href="javascript:addsmile(' :h ')"><img src="http://www.w10.ca/emot/cool.gif" width="15" height="15" border=0></a> <a href="javascript:addsmile(' :i ')"><img src="http://www.w10.ca/emot/idea.gif" width="20" height="15" border=0></a> <a href="javascript:addsmile(' :) ')"><img src="http://www.w10.ca/emot/smile.gif" width="15" height="15" border=0></a> <a href="javascript:addsmile(' ;) ')"><img src="http://www.w10.ca/emot/wink.gif" width="15" height="15" border=0></a> <a href="javascript:addsmile(' :l ')"><img src="http://www.w10.ca/emot/hrmpf.gif" width="15" height="15" border=0></a> <a href="javascript:addsmile(' :o ')"><img src="http://www.w10.ca/emot/redface.gif" width="15" height="15" border=0></a> <a href="javascript:addsmile(' :00 ')"><img src="http://www.w10.ca/emot/look.gif" width="15" height="15" border=0></a> <a href="javascript:addsmile(' :p ')"><img src="http://www.w10.ca/emot/tounge.gif" width="15" height="15" border=0></a> <a href="javascript:addsmile(' :q ')"><img src="http://www.w10.ca/emot/quest.gif" width="20" height="15" border=0></a> <a href="javascript:addsmile(' :r ')"><img src="http://www.w10.ca/emot/shame.gif" width="15" height="15" border=0></a> <a href="javascript:addsmile(' :D ')"><img src="http://www.w10.ca/emot/biggrin.gif" width="15" height="15" border=0></a> <a href="javascript:addsmile(' :e ')"><img src="http://www.w10.ca/emot/supergrin.gif" width="15" height="15" border=0></a> EOF print "<p>Optional Link URL: <input type=text name=\"url\" value=\"$FORM{'url'}\" size=45><br>\n"; print "Link Title: <input type=text name=\"url_title\" value=\"$FORM{'url_title'}\" size=50><br>\n"; print "Optional Image URL: <input type=text name=\"img\" value=\"$FORM{'img'}\" size=45><p>\n"; print "<input type=submit value=\"Post Message\"> <input type=reset>\n"; print "</form>\n"; print "<br><hr size=7 width=75%>\n"; if ($show_faq == 1) { print "<center>[ <a href=\"#followups\">Follow Ups</a> ] [ <a href=\"#postfp\">Post Followup</a> ] [ <a href=\"$baseurl/$mesgfile\">$title</a> ] [ <a href=\"$baseurl/$faqfile\">FAQ</a> ]</center>\n"; } else { print "<center>[ <a href=\"#followups\">Follow Ups</a> ] [ <a href=\"#postfp\">Post Followup</a> ] [ <a href=\"$baseurl/$mesgfile\">$title</a> ]</center>\n"; } print "</body></html>\n"; } ###################################### sub updt_frontmsg { open(LSTMSGDT,"$basedir/$lstmsgtmfile"); $lstmsgdt = <LSTMSGDT>; close(LSTMSGDT); open(MXTIME,">$basedir/$maxtimejsfl"); flock(MXTIME, 2); print MXTIME "var maxtime = $maxtime"; close(MXTIME); if(($tempsub - $lstmsgdt) >= $maxtime) { system ("perl", "$cgis_dir/chgforum.pl", ""); } } ################### sub showallfrom { open(MAIN,"$basedir/$template") || die $!; @template = <MAIN>; close(MAIN); open(MAIN3,"$basedir/$mesgfile_all") || die $!; @mainfilelines = <MAIN3>; close(MAIN3); print "Content-type: text/html\n\n"; foreach $tl (@template) { if($tl =~ /<!--debut-->/) { print "<blockquote>\n\n"; print "<a onmouseover=\"changeImages( /*CMP*/'retour_message_off',/*URL*/'http://www.kayakdemer.net/wwwboard/images/retour_message_on.gif');return true\" onmouseout=\"changeImages( /*CMP*/'retour_message_off',/*URL*/'http://www.kayakdemer.net/wwwboard/images/retour_message_off.gif');return true\" href=\"$baseurl/$mesgdir/$msgnmbr.html\"><img src=\"http://www.kayakdemer.net/wwwboard/images/retour_message_off.gif\" name=\"retour_message_off\" height=\"27\" width=\"188\" border=\"0\"></a>\n"; print "<br><br><center><table cellpadding=\"3\"><tr><td bgcolor=\"\#ffffcc\"><font size=+1>Filtre: <b><i>Messages soumis par $name</i></b></font></td></tr></table></center><br>\n"; foreach $mainline (@mainfilelines) { &removebadchar($mainline); $mainline_nocap = $string; &removebadchar($name); $name_nocap = $string; if(($mainline_nocap =~ /\>$name_nocap\</) && $mainline =~ /\/reg/) { $mainline =~ s/<ul>//g; $mainline =~ s/<li>//g; print "$mainline"; print "<br>\n"; } } } else { print "$tl"; } } } ################## sub removebadchar { $string = $_[0]; $string =~ tr/A-Z/a-z/; $string =~ s/[À|à|Ã|ã|Â|â]/a/g; $string =~ s/[É|é|È|è|ê|Ê|ë|Ë]/e/g; $string =~ s/[Ç|ç]/c/g; $string =~ s/[Î|î|Ï|ï]/i/g; $string =~ s/[Ö|ö|Ô|ô]/o/g; $string =~ s/[Û|û|Ü|ü|ù|Ù]/u/g; } ################## sub view_all { open(MSG,"$basedir/$mesgdir/$viewnbr.html"); @msgtoshow = <MSG>; close(MSG); open(MAIN,"$basedir/$template") || die $!; @template = <MAIN>; close(MAIN); $level = 0; print "Content-type: text/html\n\n"; foreach $tl (@template) { if($tl =~ /<!--style-->/) { print '<style type="text/css"><!--'."\n"; print "#id1 { margin-left: 20px; }\n"; print "#id2 { margin-left: 40px; }\n"; print "#id3 { margin-left: 60px; }\n"; print "#id4 { margin-left: 80px; }\n"; print "#id5 { margin-left: 100px; }\n"; print "#id6 { margin-left: 120px; }\n"; print "#id7 { margin-left: 140px; }\n"; print "#id8 { margin-left: 160px; }\n"; print "#id9 { margin-left: 180px; }\n"; print "#id10 { margin-left: 200px; }\n"; print "#id11 { margin-left: 220px; }\n"; print "#id12 { margin-left: 240px; }\n"; print "#id13 { margin-left: 260px; }\n"; print "#id14 { margin-left: 280px; }\n"; print "#id15 { margin-left: 300px; }\n"; print "#id16 { margin-left: 320px; }\n"; print "#id17 { margin-left: 340px; }\n"; print "#id18 { margin-left: 360px; }\n"; print "#id19 { margin-left: 380px; }\n"; print "#id20 { margin-left: 400px; }\n"; print "--></style>\n"; } if($tl =~ /<!--debut-->/) { ++$level; print "<div id=\"id1\"><a onmouseover=\"changeImages( /*CMP*/'retour_message_off',/*URL*/'http://www.kayakdemer.net/wwwboard/images/retour_message_on.gif');return true\" onmouseout=\"changeImages( /*CMP*/'retour_message_off',/*URL*/'http://www.kayakdemer.net/wwwboard/images/retour_message_off.gif');return true\" href=\"$baseurl/$mesgdir/$viewnbr.html\"><img src=\"http://www.kayakdemer.net/wwwboard/images/retour_message_off.gif\" name=\"retour_message_off\" height=\"27\" width=\"188\" border=\"0\"></a></div>\n"; foreach $ml (@msgtoshow) { if($ml =~ /Soumis par/) { $auteur = $ml; $auteur =~ s/<br>//g; $auteur =~ s/Date.*$//g; } if($ml =~ /<!--sujet-->/) { print "<div id=\"id".$level."\">"; print "<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\" width=\"500\">\n"; print "<tr><td bgcolor=\"\#ffffcc\">\n<a href=\"$baseurl/$mesgdir/$viewnbr.html\">"; print "$ml\n"; print "</a>"; } if($ml =~ /<!--date-->/) { print "$auteur - $ml\n"; print "</td></tr>\n"; } if($ml =~ /<!--body-->/) { print '<tr><td bgcolor="#eeeeee">'.$ml.'</td></tr>'."\n"; print "<tr><td align=\"right\">"; # print "<a onmouseover=\"changeImages( /*CMP*/'repondre_off',/*URL*/'http://www.kayakdemer.net/wwwboard/images/repondre_on.gif');return true\" onmouseout=\"changeImages( /*CMP*/'repondre_off',/*URL*/'http://www.kayakdemer.net/wwwboard/images/repondre_off.gif');return true\" href=\"$baseurl/$mesgdir/$viewnbr.html\#postfp\"><img src=\"http://www.kayakdemer.net/wwwboard/images/repondre_off.gif\" name=\"repondre_off\" height=\"26\" width=\"134\" border=\"0\"></a>"; print "</td></tr></table>\n"; print "</div>\n"; } if($ml =~ /<!--top:/ && !($ml =~ /<ul>/)) { $nmbrlt = length ($ml)-(length ($ml)-index ($ml,'-->'))-9; $msgnmbr = substr($ml, 9, $nmbrlt); $bq=1; if($level < 20) { ++$level; } &showmsg; } if($ml =~ /<!--top:/ && $ml =~ /<ul>/) { $nmbrlt = length ($ml)-(length ($ml)-index ($ml,'-->'))-13; $msgnmbr = substr($ml, 13, $nmbrlt); $bq=1; &showmsg; } if($ml =~ /<!--end:/) { if($level >1) { --$level; } } } } else { print "$tl"; } } } ######### sub showmsg { my @thmsg; my $thrmsgln; $td = 0; if($bq) { if($level < 20) { ++$level; } $bq=""; } open(MSG,"$basedir/$mesgdir/$msgnmbr.html"); @thmsg = <MSG>; close(MSG); foreach $thrmsgln (@thmsg) { if($thrmsgln =~ /Soumis par/) { $auteur = "$thrmsgln"; $auteur =~ s/<br>//g; $auteur =~ s/Date.*$//g; } if($thrmsgln =~ /<!--sujet-->/) { print "<div id=\"id".$level."\">"; print "<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\" width=\"500\">\n"; print "<tr><td bgcolor=\"\#ffffcc\">\n<a href=\"$baseurl/$mesgdir/$msgnmbr.html\">"; print "$thrmsgln\n"; print "</a>"; } if($thrmsgln =~ /<!--date-->/) { print "$auteur - $thrmsgln\n"; print "</td></tr>\n"; } if($thrmsgln =~ /<!--body-->/) { print "<tr><td bgcolor=\"#eeeeee\">$thrmsgln</td></tr>\n"; print "<tr><td align=\"right\">"; # print "<a onmouseover=\"changeImages( /*CMP*/'repondre_off$msgnmbr',/*URL*/'http://www.kayakdemer.net/wwwboard/images/repondre_on.gif');return true\" onmouseout=\"changeImages( /*CMP*/'repondre_off$msgnmbr',/*URL*/'http://www.kayakdemer.net/wwwboard/images/repondre_off.gif');return true\" href=\"$baseurl/$mesgdir/$msgnmbr.html\#postfp\"><img src=\"http://www.kayakdemer.net/wwwboard/images/repondre_off.gif\" name=\"repondre_off$msgnmbr\" height=\"26\" width=\"134\" border=\"0\"></a>"; print "</td></tr></table>\n"; print "</div>\n"; } } } ########### sub filter { &filter_stats; if($filter eq "active") { &filter_active; &chkmailqueue; exit; } if($filter eq "recents") { &filter_recents; &chkmailqueue; exit; } if($filter eq "tout") { &filter_tout; &chkmailqueue; exit; } %filters = ("equipement","Équipement", "technique","Technique/Sécurité/Cours...", "evenement","Sorties/Événement/Rencontres...", "destinations","Destinations", "construction","Construction", "autre","Autre", "milieu","Milieu, environnement, météo, faune, flore"); if($filter eq "parsujet") { &filter_parsujet; &chkmailqueue; exit; } $prnt=0; open(MSG,"$basedir/$mesgfile_all"); @board = <MSG>; close(MSG); open(MSG,"$basedir/$mesgfile_t"); @board_t = <MSG>; close(MSG); open(MSG,"$basedir/flt_$filter.txt"); @vals = <MSG>; close(MSG); $filter_pg = "fltpg_"."$filter".".php"; open(ACTIVEPG,">$basedir/$filter_pg"); flock(ACTIVEPG, 2); foreach $tl (@board_t) { if($tl =~ /<!--begin-->/) { $fltr_nm = $filters{$filter}; $close_li = 1; print ACTIVEPG "<center><table cellpadding=\"3\"><tr><td bgcolor=\"\#ffffcc\"><font size=+1>Filtre: <b><i>$fltr_nm</i></b></font></td></tr></table></center><br>\n"; foreach $bl (@board) { if($bl =~ /<!--top:/ && !($prnt)) { if(!($bl =~ /<ul>/)) { $offset = 9; } else { $offset = 13; } $nmbrlt = length ($bl)-(length ($bl)-index ($bl,'-->'))-$offset; $msgnmbr = substr($bl, $offset, $nmbrlt); foreach $fv (@vals) { if($fv == $msgnmbr) { $ntr = 0; $calc_nr = 0; $nmbrlt = length ($bl)-(length ($bl)-index ($bl,'-->'))-$offset; $msgnmbr = substr($bl, $offset, $nmbrlt); $prnt=1; $prntnbr=$msgnmbr; $lstmsgnmbr = $msgnmbr; if(!($close_li)) { if($nmbr_lect_tot) { print ACTIVEPG "(R:<b>$ntr</b> L:<b>$nmbr_lect_tot</b>) \n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n </ul>\n"; } else { print ACTIVEPG "(R:<b>$ntr</b>) \n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n </ul>\n"; } } $nmbr_lect_tot = 0; $close_li =0; $max_nouveau = 0; if($offset == 9) { print ACTIVEPG "<ul> $bl"; } else { print ACTIVEPG "$bl"; } } } } if($bl =~ /<!--top:/ && $prnt) { $nmbrlt = length ($bl)-(length ($bl)-index ($bl,'-->'))-$offset; $msgnmbr = substr($bl, $offset, $nmbrlt); if($msgnmbr<$prntnbr) { if($nmbr_lect_tot) { print ACTIVEPG "(R:<b>$ntr</b> L:<b>$nmbr_lect_tot</b>) \n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n </ul>\n"; } else { print ACTIVEPG "(R:<b>$ntr</b>) \n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n </ul>\n"; } $prnt=0; $close_li =1; } } if($bl =~ /<!--responses/ && !($calc_nr)) { if($bl =~ /R:/) { $index_r = index ($bl,'R:')+2; $nmbrltnl = length ($bl)-(length ($bl)-index ($bl,'L:'))-$index_r; $nmbrl = substr($bl, $index_r, $nmbrltnl); $ntr = $ntr + $nmbrl; $calc_nr = 1; } else { $index_r = index ($bl,')'); $strt = index ($bl,'-->')+3; $nmbrltnl = (index ($bl,')') - $strt); $nmbrl = substr($bl, $strt, $nmbrltnl); $ntr = $ntr + $nmbrl; $calc_nr = 1; } } if($bl =~ /<!--responses/ && $bl =~ /shownmbr/) { open(MSG,"$stats_dir/$msgnmbr.js"); @nmbr_lect_lns = <MSG>; close(MSG); $nmbr_lect = $nmbr_lect_lns[0]; $nmbr_lect =~ s/\/\///g; $nmbr_lect =~ s/\n//g; $nmbr_lect_tot = $nmbr_lect_tot + $nmbr_lect; } if($bl =~ /nouveau/) { $strt_nv = index ($bl,'(')+1; $nmbrltnl_nv = (index ($bl,')') - $strt_nv); $nmbrl_nv = substr($bl, $strt_nv, $nmbrltnl_nv); if($nmbrl_nv > $max_nouveau) { $max_nouveau = $nmbrl_nv; } } if($bl =~ /<!--end: \Q$prntnbr\E-->/ && $prnt) { $prnt=0; if($nmbr_lect_tot) { print ACTIVEPG "(R:<b>$ntr</b> L:<b>$nmbr_lect_tot</b>) \n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n $bl"; } else { print ACTIVEPG "(R:<b>$ntr</b>) \n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n $bl"; } if(!($bl =~ /<ul>/)) { print ACTIVEPG "</ul>\n"; } $close_li =1; } if($prnt) { # print ACTIVEPG "$bl"; } } } else { print ACTIVEPG "$tl"; } } close(ACTIVEPG); print "Location: $baseurl/$filter_pg\n\n"; } ################## sub filter_stats { open(STATS,"$basedir/filters_stats.txt"); @stats = <STATS>; close(STATS); open(STATS,">$basedir/filters_stats.txt"); foreach $fsl (@stats) { $fn = ""; ($fn,$stats) = split(/\|/,$fsl); $stats =~ s/\n//g; if($fn eq $filter) { ++$stats; } if($fn) { print STATS "$fn|$stats\n"; } } close(STATS); } ############################ sub filter_tout { $prnt=0; open(MSG,"$basedir/$mesgfile_all"); @board = <MSG>; close(MSG); open(MSG,"$basedir/$mesgfile_t"); @board_t = <MSG>; close(MSG); $filter_pg = "fltpg_"."$filter".".php"; open(ACTIVEPG,">$basedir/$filter_pg"); flock(ACTIVEPG, 2); foreach $tl (@board_t) { if($tl =~ /<!--begin-->/) { $fltr_nm = $filters{$filter}; $close_li = 1; print ACTIVEPG "<center><table cellpadding=\"3\"><tr><td bgcolor=\"\#ffffcc\"><font size=+1>Filtre: <b><i>Tout</i></b></font></td></tr></table></center><br>\n"; # print ACTIVEPG "<table>"; foreach $bl (@board) { if($bl =~ /<!--top:/ && !($prnt)) { $ntr = 0; $calc_nr = 0; if(!($bl =~ /<ul>/)) { $offset = 9; } else { $offset = 13; } $nmbrlt = length ($bl)-(length ($bl)-index ($bl,'-->'))-$offset; $msgnmbr = substr($bl, $offset, $nmbrlt); $prnt=1; $prntnbr=$msgnmbr; $lstmsgnmbr = $msgnmbr; if(!($close_li)) { if($nmbr_lect_tot) { print ACTIVEPG "(R:<b>$ntr</b> L:<b>$nmbr_lect_tot</b>) \n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n </ul>\n"; } else { print ACTIVEPG "(R:<b>$ntr</b>) \n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n </ul>\n"; } } $nmbr_lect_tot = 0; $close_li =0; $max_nouveau = 0; if($offset == 9) { print ACTIVEPG "<ul> $bl"; } else { print ACTIVEPG "$bl"; } } if($bl =~ /<!--top:/) { $nmbrlt = length ($bl)-(length ($bl)-index ($bl,'-->'))-$offset; $msgnmbr = substr($bl, $offset, $nmbrlt); if($msgnmbr<$prntnbr) { if($nmbr_lect_tot) { print ACTIVEPG "(R:<b>$ntr</b> L:<b>$nmbr_lect_tot</b>) \n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n </ul>\n"; } else { print ACTIVEPG "(R:<b>$ntr</b>) \n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n </ul>\n"; } $prnt=0; $close_li =1; } } if($bl =~ /<!--responses/ && !($calc_nr)) { if($bl =~ /R:/) { $index_r = index ($bl,'R:')+2; $nmbrltnl = length ($bl)-(length ($bl)-index ($bl,'L:'))-$index_r; $nmbrl = substr($bl, $index_r, $nmbrltnl); $ntr = $ntr + $nmbrl; $calc_nr = 1; } else { $index_r = index ($bl,')'); $strt = index ($bl,'-->')+3; $nmbrltnl = (index ($bl,')') - $strt); $nmbrl = substr($bl, $strt, $nmbrltnl); $ntr = $ntr + $nmbrl; $calc_nr = 1; } } if($bl =~ /<!--responses/ && $bl =~ /shownmbr/) { open(MSG,"$stats_dir/$msgnmbr.js"); @nmbr_lect_lns = <MSG>; close(MSG); $nmbr_lect = $nmbr_lect_lns[0]; $nmbr_lect =~ s/\/\///g; $nmbr_lect =~ s/\n//g; $nmbr_lect_tot = $nmbr_lect_tot + $nmbr_lect; } if($bl =~ /nouveau/) { $strt_nv = index ($bl,'(')+1; $nmbrltnl_nv = (index ($bl,')') - $strt_nv); $nmbrl_nv = substr($bl, $strt_nv, $nmbrltnl_nv); if($nmbrl_nv > $max_nouveau) { $max_nouveau = $nmbrl_nv; } } if($bl =~ /<!--end: \Q$prntnbr\E-->/ && $prnt) { $prnt=0; if($nmbr_lect_tot) { print ACTIVEPG "(R:<b>$ntr</b> L:<b>$nmbr_lect_tot</b>) \n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n $bl"; } else { print ACTIVEPG "(R:<b>$ntr</b>) \n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n $bl"; } if(!($bl =~ /<ul>/)) { print ACTIVEPG "</ul>\n"; } $close_li =1; } if($prnt) { # print ACTIVEPG "$bl"; } } } else { print ACTIVEPG "$tl"; } } close(ACTIVEPG); print "Location: $baseurl/$filter_pg\n\n"; } ############################ sub filter_parsujet { ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time-5*3600); $month = ($mon + 1); $hr = int(($hour/24)*10)/10; $tempsub=($year-101)*365+($mon+1)*30+$mday+$hr; $flpsujet=15; open(MSG,"$basedir/$mesgfile_t"); @board_t = <MSG>; close(MSG); open(MSG,"$basedir/$mesgfile_all"); @board = <MSG>; close(MSG); $filter_pg = "fltpg_"."$filter".".php"; open(ACTIVEPG,">$basedir/$filter_pg"); flock(ACTIVEPG, 2); foreach $tl (@board_t) { if($tl =~ /<!--begin-->/) { print ACTIVEPG "<center><table cellpadding=\"3\"><tr><td bgcolor=\"\#ffffcc\"><font size=+1>Filtre: <b><i>Par sujet</i></b></font></td></tr></table></center><br>\n"; foreach $sn (keys %filters) { print ACTIVEPG "<blockquote><table width=\"500\" border=\"0\" cellspacing=\"0\" cellpadding=\"5\" bgcolor=\"888888\"><tr><td><font color=\"white\"><b>\n"; $sfn = $filters{$sn}; print ACTIVEPG "$sfn\n"; print ACTIVEPG "</b></font></td></tr></table></blockquote>"; $filter = $sn; $tot_msgshown = 0; $ep =0; &showfltmsgs; print ACTIVEPG "<br>"; } } else { print ACTIVEPG "$tl"; } } close(ACTIVEPG); print "Location: $baseurl/$filter_pg\n\n"; } ############################# sub showfltmsgs { $prnt=0; open(MSG,"$basedir/flt_$filter.txt"); @vals = <MSG>; close(MSG); $fltr_nm = $filters{$filter}; $close_li = 1; foreach $bl (@board) { if(!($ep)) { if($bl =~ /<!--top:/ && !($prnt)) { if(!($bl =~ /<ul>/)) { $offset = 9; } else { $offset = 13; } $nmbrlt = length ($bl)-(length ($bl)-index ($bl,'-->'))-$offset; $msgnmbr = substr($bl, $offset, $nmbrlt); foreach $fv (@vals) { if($fv == $msgnmbr) { $ntr = 0; $calc_nr = 0; $nmbrlt = length ($bl)-(length ($bl)-index ($bl,'-->'))-$offset; $msgnmbr = substr($bl, $offset, $nmbrlt); $prnt=1; $prntnbr=$msgnmbr; $lstmsgnmbr = $msgnmbr; if(!($close_li)) { if($nmbr_lect_tot) { print ACTIVEPG "(R:<b>$ntr</b> L:<b>$nmbr_lect_tot</b>) \n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n</ul>\n"; } else { print ACTIVEPG "(R:<b>$ntr</b>) \n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n</ul>\n"; } } $nmbr_lect_tot = 0; $close_li =0; $max_nouveau = 0; if($offset == 9) { print ACTIVEPG "<ul> $bl"; } else { print ACTIVEPG "$bl"; } ++$tot_msgshown; } } } if($bl =~ /<!--top:/ && $prnt) { $nmbrlt = length ($bl)-(length ($bl)-index ($bl,'-->'))-$offset; $msgnmbr = substr($bl, $offset, $nmbrlt); if($msgnmbr<$prntnbr) { if($nmbr_lect_tot) { print ACTIVEPG "(R:<b>$ntr</b> L:<b>$nmbr_lect_tot</b>) \n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n </ul>\n"; } else { print ACTIVEPG "(R:<b>$ntr</b>) \n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n</ul>\n"; } if($tot_msgshown == $flpsujet) { $ep =1; } $prnt=0; $close_li =1; } } if($bl =~ /<!--responses/ && !($calc_nr)) { if($bl =~ /R:/) { $index_r = index ($bl,'R:')+2; $nmbrltnl = length ($bl)-(length ($bl)-index ($bl,'L:'))-$index_r; $nmbrl = substr($bl, $index_r, $nmbrltnl); $ntr = $ntr + $nmbrl; $calc_nr = 1; } else { $index_r = index ($bl,')'); $strt = index ($bl,'-->')+3; $nmbrltnl = (index ($bl,')') - $strt); $nmbrl = substr($bl, $strt, $nmbrltnl); $ntr = $ntr + $nmbrl; $calc_nr = 1; } } if($bl =~ /<!--responses/ && $bl =~ /shownmbr/) { open(MSG,"$stats_dir/$msgnmbr.js"); @nmbr_lect_lns = <MSG>; close(MSG); $nmbr_lect = $nmbr_lect_lns[0]; $nmbr_lect =~ s/\/\///g; $nmbr_lect =~ s/\n//g; $nmbr_lect_tot = $nmbr_lect_tot + $nmbr_lect; } if($bl =~ /nouveau/) { $strt_nv = index ($bl,'(')+1; $nmbrltnl_nv = (index ($bl,')') - $strt_nv); $nmbrl_nv = substr($bl, $strt_nv, $nmbrltnl_nv); if($nmbrl_nv > $max_nouveau) { $max_nouveau = $nmbrl_nv; } } if($bl =~ /<!--end: \Q$prntnbr\E-->/ && $prnt) { $prnt=0; if($nmbr_lect_tot) { print ACTIVEPG "(R:<b>$ntr</b> L:<b>$nmbr_lect_tot</b>)\n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n $bl"; } else { print ACTIVEPG "(R:<b>$ntr</b>) "; print ACTIVEPG "\n<SCRIPT><!--\n nouveau($max_nouveau)\n//--></SCRIPT>\n $bl"; } if(!($bl =~ /<ul>/)) { print ACTIVEPG "</ul>\n"; } $close_li =1; if($tot_msgshown >= $flpsujet && ($tempsub - $max_nouveau) > 22) { $ep =1; } } if($prnt) { # print ACTIVEPG "$bl"; } } } } ############################ sub filter_active { $load=0; $active=0; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time-5*3600); $month = ($mon + 1); $hr = int(($hour/24)*10)/10; $tempsub=($year-101)*365+($mon+1)*30+$mday+$hr; @loaded = @blank; open(MSG,"$basedir/$mesgfile_all"); @board = <MSG>; close(MSG); open(MSG,"$basedir/$mesgfile_t"); @board_t = <MSG>; close(MSG); open(ACTIVEPG,">$basedir/$filter_activepg"); flock(ACTIVEPG, 2); foreach $tl (@board_t) { if($tl =~ /<!--begin-->/) { print ACTIVEPG "<center><table cellpadding=\"3\"><tr><td bgcolor=\"\#ffffcc\"><font size=+1>Filtre: <b><i>Discussions actives</i></b></font></td></tr></table></center><br>\n"; foreach $bl (@board) { if($bl =~ /<!--top:/ && !($load)) { $nmbrlt = length ($bl)-(length ($bl)-index ($bl,'-->'))-13; $msgnmbr = substr($bl, 13, $nmbrlt); $load=1; $loadnbr=$msgnmbr; } if($bl =~ /nouveau\(/) { $newlt = length ($bl)-(length ($bl)-index ($bl,')'))-8; $newnmbr = substr($bl, 8, $newlt); if(($tempsub - $newnmbr) < $active_period) { $active=1; $diff=($tempsub - $newnmbr); } } if($load) { push(@loaded,$bl); } if($bl =~ /<!--end: \Q$loadnbr\E-->/ && $load) { $load=0; if($active) { # print "$msgnmbr - $diff | $active_period<br>"; foreach $ll (@loaded) { print ACTIVEPG "$ll"; } } $active=0; @loaded = @blank; } } } else { print ACTIVEPG $tl; } } close(ACTIVEPG); print "Location: $baseurl/$filter_activepg\n\n"; # print "<br>active: $loadnbr"; } ########### sub filter_recents { if(!($msgnmbr)) { $msgnmbr = 250; } open(MSG,"$basedir/$mesgfile_t"); @board_t = <MSG>; close(MSG); open(LMN,"$basedir/$datafile"); $lastmsgnmbr = <LMN>; close(LMN); if($msgnmbr < $lastmsgnmbr) { $firstmsgnmbr = $lastmsgnmbr - $msgnmbr; } else { $firstmsgnmbr = 15; } $filter_pg = "fltpg_"."$filter".".php"; open(ACTIVEPG,">$basedir/$filter_pg"); flock(ACTIVEPG, 2); foreach $tl (@board_t) { if($tl =~ /<!--begin-->/) { print ACTIVEPG "<center><table cellpadding=\"3\"><tr><td bgcolor=\"\#ffffcc\"><font size=+1>Filtre: <b><i>$msgnmbr derniers messages</i></b></font></td></tr></table></center><br>\n"; print ACTIVEPG "<blockquote>\n"; for($i=$lastmsgnmbr;$i>$firstmsgnmbr;--$i) { $auteur = ""; open(MSG,"$basedir/$mesgdir/$i.html"); @msglns = <MSG>; close(MSG); foreach $ml (@msglns) { if($ml =~ /Soumis par/) { $auteur = $ml; $auteur =~ s/Soumis par//g; $auteur =~ s/<br>//g; $auteur =~ s/\<a href\=([^>])*>//g; $auteur =~ s/\<\/a>//g; $auteur =~ s/\n//g; $auteur = "<b>$auteur</b>"; } if($ml =~ /<!--sujet-->/) { $ml =~ s/<br>//g; $ml =~ s/<b>//g; $ml =~ s/<\/b>//g; $ml =~ s/\n//g; print ACTIVEPG "<a href=\'http://www.kayakdemer.net/wwwboard/messages/$i.html\'>$ml</a>"; } if($ml =~ /<!--date-->/) { print ACTIVEPG " - $auteur $ml\n"; } } } print ACTIVEPG "</blockquote>\n"; } else { print ACTIVEPG "$tl"; } } close(ACTIVEPG); print "Location: $baseurl/$filter_pg\n\n"; } ########### sub erase_msg { open(MSG,"$basedir/$deleted_msg"); @thmsg = <MSG>; close(MSG); open(MAIN,">$basedir/$mesgdir/$msgnmbr.html") || die $!; flock(MAIN, 2); foreach $msg_ln (@thmsg) { print MAIN "$msg_ln"; } close(MAIN); @nouv_files = ("nouveautes_for.txt","nouveautes_for_sub.txt"); foreach $nouv_file (@nouv_files) { open(NEWS,"$homedir/$nouv_file"); @nouveautes = <NEWS>; close(NEWS); open(NEWS,">$homedir/$nouv_file"); flock(NEWS, 2); foreach $new_dtls (@nouveautes) { if(!($new_dtls =~ /\/$msgnmbr\.html/)) { print NEWS "$new_dtls"; } } close(NEWS); } open(BCKNMBR,"$basedir/mainbcpnmbr.txt"); $bcknmbr = <BCKNMBR>; close(BCKNMBR); $bcknm="backupforum_"."$bcknmbr".".html"; rename("$basedir/$mesgfile_all", "$basedir/$bcknm") || die "Cannot rename file.txt: $!"; open(MAIN,"$basedir/$bcknm"); @allmainlines = <MAIN>; close(MAIN); $prnt = "on"; open(MAIN,">$basedir/$mesgfile_all") || die $!; flock(MAIN, 2); foreach $msg_ln (@allmainlines) { if($msg_ln =~ /<!--top: $msgnmbr-->/) { $prnt = "off"; } if($prnt eq "on") { print MAIN "$msg_ln"; } else { ++$rmvlines; } if($msg_ln =~ /<!--end: $msgnmbr-->/) { $prnt = "on"; } } close(MAIN); ++$bcknmbr; open(BCKNMBR,">$basedir/mainbcpnmbr.txt"); flock(BCKNMBR, 2); print BCKNMBR "$bcknmbr"; close(BCKNMBR); } ########### sub sendmails { $vg = 0; $mail_listtmp = $mail_list; if($mail_listtmp =~ /$email/ && $email) { $mail_listtmp =~ s/\|$email//g ; } if($mail_listtmp =~ /$regiusr_email/ && $regiusr_email) { $mail_listtmp =~ s/\|$regiusr_email//g ; } (@all_mails) = split(/\|/,$mail_listtmp); foreach $ml (@all_mails) { $mlt = $ml; $mlt =~ s/\s//g; if($mlt) { if($vg == 1) { $all_mails .= "\,"; } $all_mails .= "$mlt"; $vg = 1; } } $all_mails =~ s/\s//g; if($registered) { $reg_sgn = "(r)"; } if($all_mails) { open (MAIL, "$mailprog"); print MAIL "To: $all_mails\n"; print MAIL "From: $frmail\n"; print MAIL "Subject: $subject\n\n"; print MAIL "Un nouveau message de $name $reg_sgn a été ajouté sur le forum $forumtitle et fait suite à un sujet à lequel vous êtes abonné(e).\n"; print MAIL "Cliquez le lien suivant pour vous y rendre:\n"; print MAIL "$forumurl/$mesgdir/$num.html"; close(MAIL); } } ########### sub mail_banded { open(MAIN,"$basedir/banned_refnbr.txt") || die $!; $banned_ref = <MAIN>; close(MAIN); open(MSG,">>$basedir/banned.txt"); print MSG "$banned_ref => ti:$subject key:$banned_key\n"; close(MSG); $banned_refnew = $banned_ref + 1; open(MAIN,">$basedir/banned_refnbr.txt") || die $!; flock(MAIN, 2); print MAIN "$banned_refnew"; close(MAIN); # open (MAIL, "$mailprog"); # print MAIL "To: $frmail\n"; # print MAIL "From: $frmail\n"; # print MAIL "Subject: Message bloqué - $subject\n\n"; # print MAIL "Le message suivant a été bloqué\n"; # print MAIL "Soumis par: $name - $email\n"; # print MAIL "IP: $host_addr\n"; # print MAIL "Banned key=$banned_key\n"; # print MAIL "Sujet: $subject\n"; # print MAIL "Url :$message_url_title - $message_url\n"; # print MAIL "Message:\n $body\n"; # close(MAIL); } ############### sub defmsgsandadd { open(DEBUG,">$basedir/debug.txt") || die $!; flock(DEBUG, 2); if($FORM{'towhat'} eq "this") { $msgnmbr_x = $msgnmbr; &addmailtolist; } elsif($FORM{'towhat'} eq "fromthis") { $msgnmbr_x = $msgnmbr; &addmailtolist; open(MAIN,"$basedir/$mesgdir/$msgnmbr.html") || die $!; @msglines = <MAIN>; close(MAIN); foreach $ml (@msglines) { if($ml =~ /<!--top:/) { $nmbrlt = length ($ml)-(length ($ml)-index ($ml,'-->'))-9; $msgnmbr = substr($ml, 9, $nmbrlt); $msgnmbr_x = $msgnmbr; &addmailtolist; } } } elsif($FORM{'towhat'} eq "all") { $tslvmsg = $msgnmbr; &findtopmsg; $msgnmbr_x = $topmsg; &addmailtolist; open(MAIN,"$basedir/$mesgdir/$topmsg.html") || die $!; @msglines = <MAIN>; close(MAIN); foreach $ml (@msglines) { if($ml =~ /<!--top:/) { if($ml =~ /<!--top:/ && !($ml =~ /<ul>/)) { $nmbrlt = length ($ml)-(length ($ml)-index ($ml,'-->'))-9; $msgnmbr = substr($ml, 9, $nmbrlt); } if($ml =~ /<!--top:/ && $ml =~ /<ul>/) { $nmbrlt = length ($ml)-(length ($ml)-index ($ml,'-->'))-13; $msgnmbr = substr($ml, 13, $nmbrlt); } $msgnmbr_x = $msgnmbr; &addmailtolist; } } } else { $mst = 1; &addmailtolist; open(MAIN,"$basedir/$mesgfile_all") || die $!; @msglines = <MAIN>; close(MAIN); foreach $ml (@msglines) { if($ml =~ /<!--top:/) { if($ml =~ /<!--top:/ && !($ml =~ /<ul>/)) { $nmbrlt = length ($ml)-(length ($ml)-index ($ml,'-->'))-9; $msgnmbr = substr($ml, 9, $nmbrlt); } if($ml =~ /<!--top:/ && $ml =~ /<ul>/) { $nmbrlt = length ($ml)-(length ($ml)-index ($ml,'-->'))-13; $msgnmbr = substr($ml, 13, $nmbrlt); } $msgnmbr_x = $msgnmbr; $msgnmbr_x =~s/\s$//g; $msgnmbr_x =~s/\n//g; print DEBUG "$msgnmbr_x | "; &addmailtolist; print DEBUG "done $msgnmbr_x \n"; } } close(DEBUG); } } ########## sub findtopmsg { open(MAIN,"$basedir/$mesgdir/$tslvmsg.html") || die $!; @msglines = <MAIN>; close(MAIN); foreach $mxl (@msglines) { if($mxl =~ /En réponse à: <a href=/) { $mother_st = index($mxl,'<a href="')+9; $mother_lt = length ($mxl)- ($mother_st + 1) - (length ($mxl)-index ($mxl,'.html">')-1); $tslvmsg = substr($mxl, $mother_st, $mother_lt); &findtopmsg; } else { $topmsg = $tslvmsg; } } } ############### sub addmailtolist { if($mst == 1) { $msgtoopen = "$soum_file"; $mst = 0; } else { $msgtoopen = "$mesgdir/$msgnmbr_x.html"; } open(MAIN,"$basedir/$msgtoopen") || die $!; @main = <MAIN>; close(MAIN); open(MAIN,">$basedir/$msgtoopen") || die $!; flock(MAIN, 2); foreach $tl (@main) { if($tl =~ /<!--mail_list-->/) { $list_st = index($tl,'value="')+7; $list_lt = length ($tl)- ($list_st + 1) - (length ($tl)-index ($tl,'">')-1); $mail_list = substr($tl, $list_st, $list_lt); $mail_list =~ s/\|\|/\|/g; if($FORM{'mailfct'} eq "add") { if(!($mail_list =~ /$email/)) { ++$addfr; print MAIN "<!--mail_list--><input type=hidden name=\"mail_list\" value=\"$mail_list\|$email\">\n"; } else { ++$alrdprsnt; print MAIN "<!--mail_list--><input type=hidden name=\"mail_list\" value=\"$mail_list\">\n"; } } else { if($mail_list =~ /$email/) { ++$rmvfr; $mail_list =~ s/\|$email//g ; print MAIN "<!--mail_list--><input type=hidden name=\"mail_list\" value=\"$mail_list\">\n"; } else { print MAIN "<!--mail_list--><input type=hidden name=\"mail_list\" value=\"$mail_list\">\n"; } } } else { print MAIN "$tl"; } } close(MAIN); } ################## sub returnhtml { print "Content-type: text/html\n\n"; if($FORM{'mailfct'} eq "add") { if($addfr) { print "<center><blockquote><br>Vous êtes maintenant abonné à cette discussion<br>(<font size=-1><i>Ajouté à $addfr message(s)\n"; if($alrdprsnt) { print ", déjà présent sur $alrdprsnt messages"; } print "</i></font>)<br><br>\n"; } else { if($alrdprsnt) { print "<center><blockquote><br>Vous êtes déjà abonné à cette discussion<br>(<font size=-1><i>Présent sur $alrdprsnt message(s)</i></font>)<br><br>\n"; } else { print "<center><blockquote><br>Désolé, votre courriel n\'a pu être ajouté à ce fil de discussion<br><br>\n"; } } } else { if($rmvfr) { print "<center><blockquote><br>Votre courriel a été retiré de cette discussion<br>(<font size=-1><i>Retiré de $rmvfr message(s)</i></font>)<br><br>\n"; } else { print "<center><blockquote><br>Votre adresse de courriel n\'est pas inscrite à cette discussion<br><br>\n"; } } print "[ <a href=\"javascript\:onclick=window\.close()\">Fermer la fenêtre</a> ]"; } ############### sub coming_events { ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = gmtime(time-4*3600); @months = ("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"); &updatecalendar; @addsoon = ("index.html","index_t.html","index_tv.html"); open(AEVENT,"$homedir/$events_dir/$eventsfile") || die $! ; @events = <AEVENT>; close (AEVENT); $yearl = 1900 + $year; $monthl = $month+1; $month_td = $month+1; $mdayl = $mday+$delais; $mday_td = $mday; if($mdayl>30) { $mdayl=$mdayl-30; $monthl = $monthl+1; } if($monthl>12) { $monthl = 1; $yearl = $yearl +1; } if ($monthl < 10) { $monthl = "0".$monthl; } if ($month_td < 10) { $month_td = "0".$month_td; } if ($mdayl < 10) { $mdayl = "0".$mdayl; } if ($mday_td < 10) { $mday_td = "0".$mday_td; } $today_cal = $yearl.$monthl.$mdayl; $today_d = $yearl.$month_td.$mday_td; foreach $i (sort pardate @events) { ($date_f_ev,$date_ev,$titre_ev,$lieu_ev,$no_ev,$formt) = split(/\|/,$i); $annee_f_ev=substr($date_f_ev, 0, 4); $mois_f_ev=substr($date_f_ev, 4, 2); $jour_f_ev=substr($date_f_ev, 6, 2); $evntdt = $i; chomp($i); if ($annee_f_ev.$mois_f_ev.$jour_f_ev <= $today_cal && $annee_f_ev.$mois_f_ev.$jour_f_ev>=$today_d) { push(@tocome,$evntdt); $soon = 1; } } if($soon) { foreach $ftoadd (@addsoon) { open(MAIN,"$homedir/$ftoadd") || die $!; @main = <MAIN>; close(MAIN); open(MAIN,">$homedir/$ftoadd") || die $!; flock(MAIN, 2); foreach $mainln (@main) { if($mainln =~ /<!--events-->/) { print MAIN "<!--events-->"; print MAIN "<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>"; print MAIN "<TR><TD COLSPAN=2><IMG SRC=\"images/tres_bientot_bientot01.gif\" HEIGHT=26></TD></TR>"; print MAIN "<TR><TD valign=\"top\" width=\"59\"><IMG SRC=\"images/tres_bientot_bientot02.gif\" WIDTH=59 HEIGHT=129></TD><TD valign=\"top\">"; print MAIN "<table width=\"418\" border=\"0\" cellspacing=\"2\" cellpadding=\"0\">"; foreach $evnt_soon (@tocome) { ($date_f_ev,$date_ev,$titre_ev,$lieu_ev,$no_ev,$formt) = split(/\|/,$evnt_soon); $mois_ev=substr($date_ev, 4, 2); $mois_ev = $mois_ev -1; $jour_ev=substr($date_ev, 6, 2); print MAIN "<tr><td valign=\"top\"><font size=1>$jour_ev @months[$mois_ev] -</font></td><td><font size=1><b><a href=\"$homeurl/$events_dir/$details_dir/$no_ev.html\">$titre_ev</a></b> - <i>$lieu_ev</i></font></td></tr>"; } print MAIN "</table>"; print MAIN "</TD></TR></TABLE>\n"; } else { print MAIN "$mainln"; } } } } else { foreach $ftoadd (@addsoon) { open(MAIN,"$homedir/$ftoadd") || die $!; @main = <MAIN>; close(MAIN); open(MAIN,">$homedir/$ftoadd") || die $!; flock(MAIN, 2); foreach $mainln (@main) { if($mainln =~ /<!--events-->/) { print MAIN "<!--events-->"; print MAIN "<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>"; print MAIN "<TR><TD COLSPAN=2><IMG SRC=\"images/tres_bientot_bientot01.gif\" WIDTH=354 HEIGHT=26></TD></TR>"; print MAIN "<TR><TD valign=\"top\" width=\"59\"><IMG SRC=\"images/tres_bientot_bientot02.gif\" WIDTH=59 HEIGHT=129></TD><TD valign=\"top\">"; print MAIN "<blockquote><font size=1><br><i>Rien de prévu !</i><br><a href=\'http://www.kayakdemer.net/calendrier/soum_evenement.html\'>Ajoutez un événement</a></font></blockquote>"; print MAIN "</TD></TR></TABLE>\n"; } else { print MAIN "$mainln"; } } close (MAIN); } } #&error("soon=$soon"); } ############################# sub updatecalendar { open(EVENT,"$homedir/$events_dir/$eventsfile") || die $! ; @events = <EVENT>; close (EVENT); open(EVENT,">$homedir/$events_dir/$eventsfile"); flock(EVENT, 2); $yearl = 1900 + $year; $monthl = $month; if ($month < 10) { $monthl = "0".$month; } $mdayl = $mday-2; if($mdayl<0) { $mdayl=1 } if ($mdayl < 10) { $mdayl = "0".$mdayl; } $today = $yearl.$monthl.$mdayl; foreach $i (sort pardate @events) { ($date_f_ev,$date_ev,$titre_ev,$no_ev,$formt) = split(/\|/,$i); $annee_f_ev=substr($date_f_ev, 0, 4); $mois_f_ev=substr($date_f_ev, 4, 2); $jour_f_ev=substr($date_f_ev, 6, 2); chomp($i); if ($annee_f_ev.$mois_f_ev.$jour_f_ev >= $today) { print EVENT "$i\n"; } } close (EVENT); } ################################### sub pardate { @a = split(/\|/,$a); @b = split(/\|/,$b); $a[1] <=> $b[1]; } ################################# sub registered_only { $fichier = "needregister_followup"; $workdir = "/home/stephm69/public_html/filter"; $filename = $fichier.".txt"; open(MAIN,"$workdir/$filename") || die $!; @main = <MAIN>; close(MAIN); open(MAIN,"/home/stephm69/public_html/filter/bckup/bcp_nmbr.txt") || die $!; $val = <MAIN>; close(MAIN); $nval = $val + 1; open(MAIN,">/home/stephm69/public_html/filter/bckup/bcp_nmbr.txt") || die $!; print MAIN $nval; close(MAIN); $bck_name = $filename.".bck".$val; open(MAIN,">/home/stephm69/public_html/filter/bckup/$bck_name") || die $!; foreach $main_line (@main) { print MAIN $main_line; } close(MAIN); open(MAIN,">$workdir/$filename") || die $!; foreach $main_line (@main) { print MAIN $main_line; } print MAIN "\n".$num; close(MAIN); } ################################################################################################# # AJOUT AUX NOUVEAUTÉS SUR LA PAGE D'ACCUEIL ################################################################################################# sub nouveaute { $basedir_n = "/home/stephm69/public_html/kayakdemer"; if(!($typenouv)) { $datafilen = "nouveautes_for.txt"; $nombre_n = "nombre_n_for.txt"; $beg_txt = "<!--begin_ajout_forum-->"; $description_n="<a href=\"$baseurl/$mesgdir/$num\.$ext\">$subject</a> - <b>$name</b><img src=\'$baseurl/$reg_gif\'>"; } else { $datafilen = "nouveautes_for_sub.txt"; $nombre_n = "nombre_n_for_sub.txt"; $beg_txt = "<!--begin_ajout_forum_sub-->"; if($registered_only) { $incl_reg_incon = "<img src='http://www.kayakdemer.net/wwwboard/images/registred_only.png' align='absmiddle'> "; } $description_n="<b>".$incl_reg_incon."<a href=\"$baseurl/$mesgdir/$num\.$ext\">$subject</a></b> - <b>$name</b><img src=\'$baseurl/$reg_gif\'>"; } ######### # Adapter pour chaque section $section_n="Forum"; $url_n="$baseurl/wwwboard.html"; ####### $mesgfile_temp = "index.html"; $mesgfile = "index.html"; #&addtoaccueil; $mesgfile_temp = "index_tv.html"; $mesgfile = "index_tv.html"; #&addtoaccueil; # Ajout à la page TEMPLATE pour ptites vites $mesgfile_temp = "index_t.html"; $mesgfile = "index_t.html"; #&addtoaccueil; $mesgfile_temp = "index_tn.html"; $mesgfile = "index_tn.html"; #&addtoaccueil; &addtolist_n; } ########################### sub addtolist_n { open(EVENT,"$basedir_n/$datafilen") || die $! ; @nouveautes = <EVENT>; close (EVENT); open(NBR,"$basedir_n/$nombre_n") || die $! ; # open(NBR,"$basedir_n/nombre_n.txt") || die $! ; $nbr_n = <NBR>; close (NBR); open(EVENT,">$basedir_n/$datafilen"); flock(EVENT, 2); 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); } ############################ sub addtoaccueil { open(MAIN,"$basedir_n/$mesgfile_temp") || die $!; @main = <MAIN>; close(MAIN); open(EVENT,"$basedir_n/$datafilen") || die $! ; @nouveautes = <EVENT>; close (EVENT); open(MAIN,">$basedir_n/$mesgfile") || die $!; flock(MAIN, 2); foreach $main_line (@main) { if ($main_line =~ /$beg_txt/) # if ($main_line =~ /<!--begin_ajout-->/) { print MAIN "$beg_txt"; # print MAIN "<!--begin_ajout-->\n"; print MAIN "<li>"; # print MAIN "<font size=\"2\" face=\"VERDANA,ARIAL,SANS-SERIF\">"; # print MAIN "<b><a href=\"$url_n\">$section_n</a></b> "; # print MAIN "<img src=\"fl_dr.gif\" align=\"top\"> "; print MAIN "$description_n - "; print MAIN "<i>$long_date</i><br>"; # print MAIN "</font>"; # print MAIN "<br>"; foreach $event (@nouveautes) { ($section_ev,$url_ev,$description_ev,$date_ev) = split(/\|/,$event); print MAIN "<li>"; # print MAIN "<font size=\"2\" face=\"VERDANA,ARIAL,SANS-SERIF\">"; # print MAIN "<b><a href=\"$url_ev\">$section_ev</a></b> "; # print MAIN "<img src=\"fl_dr.gif\" align=\"top\"> "; print MAIN "$description_ev - "; $date_ev =~ s/\n//g; $date_ev =~ s/\r//g; print MAIN "<i>$date_ev</i>"; # print MAIN "</font>"; # print MAIN "<br>"; } print MAIN "\n"; } else { print MAIN "$main_line"; } } close(MAIN); }