X-Git-Url: https://git.p6c8.net/selfforum.git/blobdiff_plain/ba659b53059e637777865e646f0f2a6fb7f2988e..a4d21c439a8b7953427fa2815d5dc41470e3eb59:/selfforum-cgi/shared/Posting/Write.pm diff --git a/selfforum-cgi/shared/Posting/Write.pm b/selfforum-cgi/shared/Posting/Write.pm index d2444df..eed1534 100644 --- a/selfforum-cgi/shared/Posting/Write.pm +++ b/selfforum-cgi/shared/Posting/Write.pm @@ -1,26 +1,24 @@ -# Posting/Write.pm +package Posting::Write; -# ==================================================== -# Autor: n.d.p. / 2001-01-29 -# lm : n.d.p. / 2001-01-29 -# ==================================================== -# Funktion: -# Speicherung eines Postings -# ==================================================== +################################################################################ +# # +# File: shared/Posting/Write.pm # +# # +# Authors: André Malo , 2001-02-25 # +# # +# Description: Save a posting # +# # +################################################################################ use strict; -package Posting::Write; - -use vars qw(@ISA @EXPORT); +use base qw(Exporter); # ==================================================== # Funktionsexport # ==================================================== -require Exporter; -@ISA = qw(Exporter); -@EXPORT = qw(write_posting); +@Posting::Write::EXPORT = qw(write_posting); use Encode::Plain; $Encode::Plain::utf8 = 1; use Encode::Posting; @@ -40,46 +38,61 @@ sub write_posting ($) { my ($thread,$tid); my $mid = 'm'.($param -> {lastMessage} + 1); - my $pars = {quoteChars => $param -> {quoteChars}, - messages => $param -> {messages}}; + my $pars = { + quoteChars => $param -> {quoteChars}, + messages => $param -> {messages} + }; - my %error = (threadWrite => '1 could not write thread file', - forumWrite => '2 could not write forum file', - threadFile => '3 could not load thread file', - noParent => '4 could not find parent message'); + my %error = ( + threadWrite => '1 could not write thread file', + forumWrite => '2 could not write forum file', + threadFile => '3 could not load thread file', + noParent => '4 could not find parent message' + ); # neue Nachricht unless ($param -> {parentMessage}) { $tid = 't'.($param -> {lastThread} + 1); - $thread = create_new_thread ({msg => $mid, - ip => $param -> {ip}, - name => $param -> {author}, - email => $param -> {email}, - home => $param -> {homepage}, - image => $param -> {image}, - category => $param -> {category}, - subject => $param -> {subject}, - time => $param -> {time}, - dtd => $param -> {dtd}, - thread => $tid, - body => $param -> {body}, - pars => $pars}); + $thread = create_new_thread ( + { msg => $mid, + ip => $param -> {ip}, + name => $param -> {author} || '', + email => $param -> {email} || '', + home => $param -> {homepage} || '', + image => $param -> {image} || '', + category => $param -> {category} || '', + subject => $param -> {subject} || '', + time => $param -> {time}, + dtd => $param -> {dtd}, + thread => $tid, + body => $param -> {body} || '', + pars => $pars + } + ); save_file ($param -> {messagePath}.$tid.'.xml',\($thread -> toString)) or return $error{threadWrite}; # Thread eintragen - $param -> {parsedThreads} - -> {$param -> {lastThread} + 1} = [{mid => $param -> {lastMessage} + 1, - unid => $param -> {uniqueID}, - name => plain($param -> {author}), - cat => plain(length($param -> {category})?$param->{category}:''), - subject => plain($param -> {subject}), - time => plain($param -> {time})}]; - - my $forum = create_forum_xml_string ($param -> {parsedThreads}, - {dtd => $param -> {dtd}, - lastMessage => $mid, - lastThread => $tid}); + $param + -> {parsedThreads} + -> {$param -> {lastThread} + 1} = [ + { mid => $param -> {lastMessage} + 1, + unid => $param -> {uniqueID}, + name => plain($param -> {author}), + cat => plain(defined $param -> {category}?$param->{category}:''), + subject => plain($param -> {subject}), + time => plain($param -> {time}), + level => 0, + } + ]; + + my $forum = create_forum_xml_string ( + $param -> {parsedThreads}, + { dtd => $param -> {dtd}, + lastMessage => $mid, + lastThread => $tid + } + ); save_file ($param -> {forumFile}, $forum) or return $error{forumWrite}; release_file ($param -> {messagePath}.$tid.'.xml'); @@ -93,34 +106,43 @@ sub write_posting ($) { unless (write_lock_file ($tfile)) { violent_unlock_file ($tfile); - return $error{threadFile};} + return $error{threadFile}; + } else { - $xml = eval {local $SIG{__DIE__}; new XML::DOM::Parser (KeepCDATA => 1) -> parsefile ($tfile);}; + $xml = eval { + local $SIG{__DIE__}; + new XML::DOM::Parser (KeepCDATA => 1) -> parsefile ($tfile); + }; if ($@) { violent_unlock_file ($tfile) unless (write_unlock_file ($tfile)); - return $error{threadFile};} + 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)); - return $error{noParent};} + return $error{noParent}; + } my $pheader = get_message_header ($mnode); - my $message = create_message ($xml, - {msg => $mid, - ip => $param -> {ip}, - name => $param -> {author}, - email => $param -> {email}, - home => $param -> {homepage}, - image => $param -> {image}, - category => length($param -> {category})?$param -> {category}:$pheader -> {category}, - subject => length($param -> {subject})?$param -> {subject}:$pheader -> {subject}, - time => $param -> {time}, - pars => $pars}); + my $message = create_message ( + $xml, + { msg => $mid, + ip => $param -> {ip}, + name => $param -> {author}, + email => $param -> {email}, + home => $param -> {homepage}, + image => $param -> {image}, + category => length($param -> {category})?$param -> {category}:$pheader -> {category}, + subject => length($param -> {subject})?$param -> {subject}:$pheader -> {subject}, + time => $param -> {time}, + pars => $pars + } + ); $mnode -> appendChild ($message); @@ -133,7 +155,8 @@ sub write_posting ($) { unless (save_file ($tfile, \($xml -> toString))) { violent_unlock_file ($tfile) unless (write_unlock_file ($tfile)); - return $error{threadWrite};} + return $error{threadWrite}; + } violent_unlock_file ($tfile) unless (write_unlock_file ($tfile)); @@ -150,25 +173,31 @@ sub write_posting ($) { for (@{$param -> {parsedThreads} -> {$param -> {thread}}}) { if ($_ -> {mid} == $param -> {parentMessage}) { - splice @{$param -> {parsedThreads} -> {$param -> {thread}}},$i,0, - {mid => $param -> {lastMessage} + 1, - unid => $param -> {uniqueID}, - name => plain ($param -> {author}), - cat => plain(length($cat)?$cat:''), - subject => plain(length($subj)?$subj:''), - level => $_ -> {level} + 1, - time => plain ($param -> {time})}; + splice @{$param -> {parsedThreads} -> {$param -> {thread}}}, $i, 0, + { mid => $param -> {lastMessage} + 1, + unid => $param -> {uniqueID}, + name => plain ($param -> {author}), + cat => plain(length($cat)?$cat:''), + subject => plain(length($subj)?$subj:''), + level => $_ -> {level} + 1, + time => plain ($param -> {time}) + }; last;} $i++;} - my $forum = create_forum_xml_string ($param -> {parsedThreads}, - {dtd => $param -> {dtd}, - lastMessage => $mid, - lastThread => 't'.$param -> {lastThread}}); + my $forum = create_forum_xml_string ( + $param -> {parsedThreads}, + { dtd => $param -> {dtd}, + lastMessage => $mid, + lastThread => 't'.$param -> {lastThread} + } + ); - save_file ($param -> {forumFile}, $forum) or return $error{forumWrite};} + save_file ($param -> {forumFile}, $forum) or return $error{forumWrite}; + } - return (0, $thread, $mid);} + return (0, $thread, $mid); + } } # ==================================================== @@ -218,7 +247,7 @@ sub create_message ($$) { $header -> appendChild ($category); $header -> appendChild ($subject); $header -> appendChild ($date); - $message -> appendChild ($header); + $message -> appendChild ($header); $message; }