]> git.p6c8.net - selfforum.git/blobdiff - selfforum-cgi/shared/Posting/_lib.pm
fixed some bugs, prepared the 0.98 release
[selfforum.git] / selfforum-cgi / shared / Posting / _lib.pm
index 630a1e193832c4fc481f3900bc49a25e6114a0f4..9a5330765d5665087cc0a477bf7ffdb8349d37b1 100644 (file)
@@ -75,6 +75,7 @@ sub create_message ($$) {
 
   my $header = $xml -> createElement ('Header');
   my $author = $xml -> createElement ('Author');
 
   my $header = $xml -> createElement ('Header');
   my $author = $xml -> createElement ('Author');
+  $header  -> appendChild ($author);
 
   my @may = (
     ['name'     => 'Name'        => $author],
 
   my @may = (
     ['name'     => 'Name'        => $author],
@@ -104,7 +105,6 @@ sub create_message ($$) {
   my $date = $xml -> createElement ('Date');
   $date -> setAttribute ('longSec'=> $par -> {time});
 
   my $date = $xml -> createElement ('Date');
   $date -> setAttribute ('longSec'=> $par -> {time});
 
-  $header  -> appendChild ($author);
   $header  -> appendChild ($date);
   $message -> appendChild ($header);
 
   $header  -> appendChild ($date);
   $message -> appendChild ($header);
 
@@ -443,37 +443,31 @@ sub sort_thread ($$) {
 # Params: $smsg  Reference of array of references of hashs
 # Return: -none-
 #
 # Params: $smsg  Reference of array of references of hashs
 # Return: -none-
 #
-sub delete_messages ($)
-{
+sub delete_messages ($) {
   my $smsg = shift;
   my $smsg = shift;
-
   my ($z, $oldlevel, @path) = (0,0,0);
 
   my ($z, $oldlevel, @path) = (0,0,0);
 
-  for (@$smsg)
-  {
-    if ($_ -> {'deleted'})
-    {
-      my $n = $_ -> {'answers'} + 1;
-      $smsg -> [$_] -> {'answers'} -= $n for (@path);
-      splice @$smsg,$z,$n;
+  while ($z <= $#{$smsg}) {
+
+    if ($smsg -> [$z] -> {level} > $oldlevel) {
+      push @path => $z;
+      $oldlevel = $smsg -> [$z] -> {level};
+    }
+    elsif ($smsg -> [$z] -> {level} < $oldlevel) {
+      splice @path, $smsg -> [$z] -> {level};
+      push @path => $z;
+      $oldlevel = $smsg -> [$z] -> {'level'};
+    }
+    else {
+      $path[-1] = $z;
     }
     }
-    else
-    {
-      if ($_ -> {'level'} > $oldlevel)
-      {
-        push @path,$z;
-        $oldlevel = $_ -> {'level'};
-      }
-      elsif ($_ -> {'level'} < $oldlevel)
-      {
-        splice @path,$_ -> {'level'} - $oldlevel;
-        $oldlevel = $_ -> {'level'};
-      }
-      else
-      {
-        $path[-1] = $z;
-      }
 
 
+    if ($smsg -> [$z] -> {deleted}) {
+      my $n = $smsg -> [$z] -> {answers} + 1;
+      $smsg -> [$_] -> {answers} -= $n for (@path);
+      splice @$smsg, $z, $n;
+    }
+    else {
       $z++;
     }
   }
       $z++;
     }
   }
@@ -497,9 +491,9 @@ sub get_all_threads ($$;$)
   my ($last_thread, $last_message, $dtd, @unids, %threads);
   local (*FILE, $/);
 
   my ($last_thread, $last_message, $dtd, @unids, %threads);
   local (*FILE, $/);
 
-  open FILE, $file or return undef;
+  open FILE,"< $file" or return;
   my $xml = join '', <FILE>;
   my $xml = join '', <FILE>;
-  close(FILE) or return undef;
+  close(FILE) or return;
 
   if (wantarray)
   {
 
   if (wantarray)
   {
@@ -527,18 +521,20 @@ sub get_all_threads ($$;$)
       if (defined($10))
       {
         push @stack,$cmno if (defined $cmno);
       if (defined($10))
       {
         push @stack,$cmno if (defined $cmno);
-        push @msg, {mid     => $1,
-                    unid    => $2,
-                    deleted => $3,
-                    archive => $4,
-                    name    => $5,
-                    cat     => $6,
-                    subject => $7,
-                    time    => $8,
-                    level   => $level++,
-                    unids   => [],
-                    kids    => [],
-                    answers => 0};
+        push @msg, {
+          mid     => $1,
+          unid    => $2,
+          deleted => $3 || 0,
+          archive => $4 || 0,
+          name    => $5,
+          cat     => $6,
+          subject => $7,
+          time    => $8,
+          level   => $level++,
+          unids   => [],
+          kids    => [],
+          answers => 0
+        };
 
         if (defined $cmno)
         {
 
         if (defined $cmno)
         {
@@ -561,18 +557,20 @@ sub get_all_threads ($$;$)
       }
       elsif (defined ($9))
       {
       }
       elsif (defined ($9))
       {
-        push @msg, {mid     => $1,
-                    unid    => $2,
-                    deleted => $3,
-                    archive => $4,
-                    name    => $5,
-                    cat     => $6,
-                    subject => $7,
-                    time    => $8,
-                    level   => $level,
-                    unids   => [],
-                    kids    => [],
-                    answers => 0};
+        push @msg, {
+          mid     => $1,
+          unid    => $2,
+          deleted => $3 || 0,
+          archive => $4 || 0,
+          name    => $5,
+          cat     => $6,
+          subject => $7,
+          time    => $8,
+          level   => $level,
+          unids   => [],
+          kids    => [],
+          answers => 0
+        };
 
         if (defined $cmno)
         {
 
         if (defined $cmno)
         {

patrick-canterino.de