]> git.p6c8.net - selfforum.git/blobdiff - selfforum-cgi/shared/Posting/Write.pm
now severancer will be splittet from cgi application, fo_posting.pl uses now Arc...
[selfforum.git] / selfforum-cgi / shared / Posting / Write.pm
index 507cd81337b121778ea8bf018cb101122e921795..5670251bdb48ca8f047c929ba1892102d3dd9031 100644 (file)
@@ -11,14 +11,15 @@ package Posting::Write;
 ################################################################################
 
 use strict;
-use vars qw(%error @EXPORT);
+use vars qw(
+  %error
+  @EXPORT
+  $VERSION
+);
 
 use Encode::Plain; $Encode::Plain::utf8 = 1;
 use Encode::Posting;
-use Lock qw(
-  :WRITE
-  release_file
-);
+use Lock;
 use Posting::_lib qw(
   get_message_node
   get_message_header
@@ -39,6 +40,12 @@ use XML::DOM;
   noParent    => '4 could not find parent message'
 );
 
+################################################################################
+#
+# Version check
+#
+$VERSION = do { my @r =(q$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
 ################################################################################
 #
 # Export
@@ -116,8 +123,8 @@ sub write_new_thread ($) {
   );
 
   save_file ($param -> {forumFile}, $forum) or return $error{forumWrite};
-  release_file ($param -> {messagePath}.$tid.'.xml');
-  return (0, $thread, $mid);
+  new Lock ($param -> {messagePath}.$tid.'.xml') -> release;
+  return (0, $thread, $mid, $tid);
 }
 
 ### sub write_reply_posting ($) ################################################
@@ -135,25 +142,24 @@ sub write_reply_posting ($) {
   my $mid   = 'm'.($param -> {lastMessage} + 1);
   my $tid   = 't'.($param -> {thread});
 
-  my $tfile = $param -> {messagePath}.$tid.'.xml';
+  my $tfile = new Lock ($param -> {messagePath}.$tid.'.xml');
 
-  unless (write_lock_file ($tfile)) {
-    violent_unlock_file ($tfile);
+  unless ($tfile->lock(LH_EXCL)) {
     return $error{threadFile};
   }
 
   else {
-    my $xml = parse_xml_file ($tfile);
+    my $xml = parse_xml_file ($tfile->filename);
 
     unless ($xml) {
-      violent_unlock_file ($tfile) unless (write_unlock_file ($tfile));
+      $tfile -> unlock;
       return $error{threadFile};
     }
 
     my $mnode = get_message_node ($xml, $tid, 'm'.$param -> {parentMessage});
 
     unless (defined $mnode) {
-      violent_unlock_file ($tfile) unless (write_unlock_file ($tfile));
+      $tfile -> unlock;
       return $error{noParent};
     }
 
@@ -192,12 +198,12 @@ sub write_reply_posting ($) {
 
     # save thread file
     #
-    unless (save_file ($tfile, \($xml -> toString))) {
-      violent_unlock_file ($tfile) unless (write_unlock_file ($tfile));
+    unless (save_file ($tfile->filename, \($xml -> toString))) {
+      $tfile -> unlock;
       return $error{threadWrite};
     }
 
-    violent_unlock_file ($tfile) unless (write_unlock_file ($tfile));
+    $tfile -> unlock;
 
     $thread = $xml;
 
@@ -228,14 +234,14 @@ sub write_reply_posting ($) {
       $param -> {parsedThreads},
       { dtd         => $param -> {dtd},
         lastMessage => $mid,
-        lastThread  => $tid
+        lastThread  => 't'.$param -> {lastThread}
       }
     );
 
     save_file ($param -> {forumFile}, $forum) or return $error{forumWrite};
   }
 
-  return (0, $thread, $mid);
+  return (0, $thread, $mid, $tid);
 }
 
 # keep 'require' happy

patrick-canterino.de