]> git.p6c8.net - selfforum.git/blobdiff - selfforum-cgi/user/fo_posting.pl
fixed several bugs in all committed files, but anyway there's a lot to do further...
[selfforum.git] / selfforum-cgi / user / fo_posting.pl
index 388963217963f6e1166f8579d4a5e2fd81bcddfc..91a21a1f5f1124a93e0cf2d9ae77c5168bfece86 100644 (file)
@@ -44,12 +44,12 @@ our $assign   = $show_posting -> {assign};
 our $formmust = $show_posting -> {form} -> {must};
 our $formdata = $show_posting -> {form} -> {data};
 our $formact  = $show_posting -> {form} -> {action};
-our $template = new Template "$Bin/".$show_posting -> {templateFile};
+our $template = new Template $show_posting -> {templateFile};
 our $pars = {};
 our ($failed, %dparam, $threads, $last_thread, $last_message, $ftid, $fmid, $flocked);
 
-sub forum_filename () {$conf -> {wwwRoot} . $conf -> {files} -> {forum};}
-sub message_path () {$conf -> {wwwRoot} . $conf -> {files} -> {messagePath};}
+sub forum_filename () {$conf -> {files} -> {forum};}
+sub message_path () {$conf -> {files} -> {messagePath};}
 
 ################################
 
@@ -104,7 +104,7 @@ sub check_reply_dupe () {
 
     $flocked = 1;
 
-    ($threads, $last_thread, $last_message, my $unids) = get_all_threads (forum_filename, 1, 0);
+    ($threads, $last_thread, $last_message, undef, my $unids) = get_all_threads (forum_filename, 1, 0);
     ($ftid,$fmid) = split /;/,$dparam{$formdata -> {followUp} -> {name}},2;
 
     # Thread existiert nicht
@@ -327,12 +327,16 @@ sub print_error ($;$) {
 ################################
 
 sub fetch_subject () {
-  unless (exists ($dparam{$formdata -> {posterCategory} -> {name}}) and
-          exists ($dparam{$formdata -> {posterSubject} -> {name}})) {
 
+  my %must = map {$_ => 1} @{$formmust -> {exists $dparam{$formdata -> {followUp} -> {name}}?'reply':'new'}};
+
+  if ( ($must{posterCategory} and not exists ($dparam{$formdata -> {posterCategory} -> {name}})) or
+       ($must{posterSubject} and not exists ($dparam{$formdata -> {posterSubject} -> {name}})))
+  {
     my $filename = message_path.'t'.$ftid.'.xml';
 
-    if (lock_file ($filename)) {
+    if (-f $filename and lock_file ($filename))
+    {
       my $xml = new XML::DOM::Parser -> parsefile ($filename);
       violent_unlock_file($filename) unless unlock_file ($filename);
 
@@ -340,7 +344,9 @@ sub fetch_subject () {
       my $header = get_message_header ($mnode);
 
       $dparam{$formdata -> {posterCategory} -> {name}} = $header -> {category};
-      $dparam{$formdata -> {posterSubject} -> {name}} = $header -> {subject};}}
+      $dparam{$formdata -> {posterSubject} -> {name}} = $header -> {subject};
+    }
+  }
 }
 
 ################################

patrick-canterino.de