# #
# File: shared/Posting/Write.pm #
# #
-# Authors: André Malo <nd@o3media.de>, 2001-04-08 #
+# Authors: André Malo <nd@o3media.de> #
# #
# Description: Save a posting #
# #
################################################################################
use strict;
-use vars qw(%error @EXPORT);
+use vars qw(
+ %error
+ @EXPORT
+);
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
noParent => '4 could not find parent message'
);
+################################################################################
+#
+# Version check
+#
+# last modified:
+# $Date$ (GMT)
+# by $Author$
+#
+sub VERSION {(q$Revision$ =~ /([\d.]+)\s*$/)[0] or '0.0'}
+
################################################################################
#
# Export
body => encoded_body(
\($param -> {body}),
{ quoteChars => $param -> {quoteChars},
- messages => $param -> {messages}
+ messages => $param -> {messages},
+ base_uri => $param -> {base_uri}
}
),
time => $param -> {time},
);
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 ($) ################################################
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};
}
${encoded_body(
\($param -> {body}),
{ quoteChars => $param -> {quoteChars},
- messages => $param -> {messages}
+ messages => $param -> {messages},
+ base_uri => $param -> {base_uri}
}
)}
)
# 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;
$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);
}
-# keeping 'require' happy
+# keep 'require' happy
#
1;