]> git.p6c8.net - selfforum.git/blobdiff - selfforum-cgi/shared/Posting/Write.pm
fo_posting.pl now runs without warnings, it's yet too special, this will be fixed...
[selfforum.git] / selfforum-cgi / shared / Posting / Write.pm
index 72a5b256bf1601b3f0245e35885f44ebba74101f..eed1534639be7e774367cc49cb4218998ba64995 100644 (file)
@@ -1,25 +1,24 @@
-# Posting/Write.pm
+package Posting::Write;
 
 
-# ====================================================
-# Autor: n.d.p. / 2001-01-29
-# lm   : n.d.p. / 2001-02-25
-# ====================================================
-# Funktion:
-#      Speicherung eines Postings
-# ====================================================
+################################################################################
+#                                                                              #
+# File:        shared/Posting/Write.pm                                         #
+#                                                                              #
+# Authors:     AndrĂ© Malo <nd@o3media.de>, 2001-02-25                          #
+#                                                                              #
+# Description: Save a posting                                                  #
+#                                                                              #
+################################################################################
 
 use strict;
 
 
 use strict;
 
-package Posting::Write;
-
-use vars qw(@EXPORT);
 use base qw(Exporter);
 
 # ====================================================
 # Funktionsexport
 # ====================================================
 
 use base qw(Exporter);
 
 # ====================================================
 # Funktionsexport
 # ====================================================
 
-@EXPORT = qw(write_posting);
+@Posting::Write::EXPORT = qw(write_posting);
 
 use Encode::Plain; $Encode::Plain::utf8 = 1;
 use Encode::Posting;
 
 use Encode::Plain; $Encode::Plain::utf8 = 1;
 use Encode::Posting;
@@ -39,46 +38,61 @@ sub write_posting ($) {
   my ($thread,$tid);
   my $mid   = 'm'.($param -> {lastMessage} + 1);
 
   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);
 
   # 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
 
     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');
 
     save_file ($param -> {forumFile}, $forum) or return $error{forumWrite};
     release_file ($param -> {messagePath}.$tid.'.xml');
@@ -92,34 +106,43 @@ sub write_posting ($) {
 
     unless (write_lock_file ($tfile)) {
       violent_unlock_file ($tfile);
 
     unless (write_lock_file ($tfile)) {
       violent_unlock_file ($tfile);
-      return $error{threadFile};}
+      return $error{threadFile};
+    }
 
     else {
 
     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));
 
       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));
 
       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 $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);
 
 
       $mnode -> appendChild ($message);
 
@@ -132,7 +155,8 @@ sub write_posting ($) {
 
       unless (save_file ($tfile, \($xml -> toString))) {
         violent_unlock_file ($tfile) unless (write_unlock_file ($tfile));
 
       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));
 
 
       violent_unlock_file ($tfile) unless (write_unlock_file ($tfile));
 
@@ -149,25 +173,31 @@ sub write_posting ($) {
 
       for (@{$param -> {parsedThreads} -> {$param -> {thread}}}) {
         if ($_ -> {mid} == $param -> {parentMessage}) {
 
       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++;}
 
           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);
+  }
 }
 
 # ====================================================
 }
 
 # ====================================================
@@ -217,7 +247,7 @@ sub create_message ($$) {
     $header -> appendChild ($category);
     $header -> appendChild ($subject);
     $header -> appendChild ($date);
     $header -> appendChild ($category);
     $header -> appendChild ($subject);
     $header -> appendChild ($date);
-  $message -> appendChild ($header);
+    $message -> appendChild ($header);
 
   $message;
 }
 
   $message;
 }

patrick-canterino.de