]> git.p6c8.net - selfforum.git/blobdiff - selfforum-cgi/shared/Conf/Admin.pm
Initial release
[selfforum.git] / selfforum-cgi / shared / Conf / Admin.pm
diff --git a/selfforum-cgi/shared/Conf/Admin.pm b/selfforum-cgi/shared/Conf/Admin.pm
new file mode 100644 (file)
index 0000000..cf4fa13
--- /dev/null
@@ -0,0 +1,150 @@
+# Admin.pm
+
+# ====================================================
+# Autor: n.d.p. / 2001-01-05
+# lm   : n.d.p. / 2001-02-02
+# ====================================================
+# Funktion:
+#      Einlesen der Admindefaultkonfiguration
+# ====================================================
+
+use strict;
+
+package Conf::Admin;
+
+use vars qw(@ISA @EXPORT);
+
+use Lock qw(:READ);
+
+use XML::DOM;
+
+# ====================================================
+# Funktionsexport
+# ====================================================
+
+require Exporter;
+@ISA    = qw(Exporter);
+@EXPORT = qw(read_admin_conf);
+
+################################
+# sub read_admin_conf
+#
+# Default-Admin-Konf. lesen
+################################
+
+sub read_admin_conf ($) {
+  my $filename=shift;
+  my %conf;
+
+  if (-f $filename) {                                                    # gibts die Datei ueberhaupt?
+    if (lock_file ($filename)) {                                         # sperren...
+      my $xml = new XML::DOM::Parser -> parsefile ($filename);           # ...einlesen und parsen...
+      violent_unlock_file ($filename) unless (unlock_file ($filename));  # ...freigeben
+
+      # =================================
+      # jetzt Daten in den Hash schreiben
+
+      my $forum = $xml -> getElementsByTagName ('Forum',0) -> item (0);
+
+      # View
+      my $forum_view      = $forum       -> getElementsByTagName ('ForumView', 0) -> item (0);
+        my $thread_view   = $forum_view  -> getElementsByTagName ('ThreadView', 0) -> item (0);
+          my $show_thread = $thread_view -> getElementsByTagName ('ShowThread', 0) -> item (0);
+            my $show_how  = $show_thread -> getElementsByTagName ('*', 0) -> item (0);
+            my $how_name  = $show_how -> getTagName;
+        my $message_view  = $forum_view  -> getElementsByTagName ('MessageView', 0) -> item (0);
+        my $flags         = $forum_view  -> getElementsByTagName ('Flags', 0) -> item (0);
+        my $quoting       = $forum_view  -> getElementsByTagName ('Quoting', 0) -> item (0);
+          my $char        = $quoting     -> getElementsByTagName ('Chars', 0) -> item (0);
+
+      $conf {View} = {threadOpen    => $thread_view -> getAttribute ('threadOpen'),
+                      countMessages => $thread_view -> getAttribute ('countMessages'),
+                      sortThreads   => $thread_view -> getAttribute ('sortThreads'),
+                      sortMessages  => $thread_view -> getAttribute ('sortMessages'),
+                      showThread    => (($how_name eq 'showAll')?undef:
+                                       (($how_name eq 'showNone')?1:
+                                       ($show_how -> getFirstChild -> getData))),
+                      showPreview   => $message_view -> getAttribute ('previewON'),
+                      showNA        => $flags -> getAttribute ('showNA'),
+                      showHQ        => $flags -> getAttribute ('showHQ'),
+                      quoting       => $quoting -> getAttribute ('quotingON'),
+                      quoteChars    => $char?$char -> getFirstChild -> getData:undef};
+
+      # Severance
+      $conf {Severance} = &get_severance ($forum -> getElementsByTagName ('Severance', 0) -> item (0));
+
+      # Messaging
+      my $messaging      = $forum     -> getElementsByTagName ('Messaging', 0) -> item (0);
+        my $call_by_user = $messaging -> getElementsByTagName ('CallByUser', 0) -> item (0);
+
+      $conf {Messaging} = {userAnswer => $messaging -> getAttribute ('callUserAnswer'),
+                           thread     => $messaging -> getAttribute ('callAdminThread'),
+                           na         => $messaging -> getAttribute ('callAdminNA'),
+                           hq         => $messaging -> getAttribute ('callAdminHQ'),
+                           voting     => $messaging -> getAttribute ('callAdminVoting'),
+                           archiving  => $messaging -> getAttribute ('callAdminArchiving'),
+                           byUser     => $messaging -> getAttribute ('callUserAnswer'),
+                           callByName => [map {$_ -> getFirstChild -> getData} $call_by_user -> getElementsByTagName ('Name', 0)],
+                           callByMail => [map {$_ -> getFirstChild -> getData} $call_by_user -> getElementsByTagName ('Email', 0)],
+                           callByIP   => [map {$_ -> getFirstChild -> getData} $call_by_user -> getElementsByTagName ('IpAddress', 0)]};
+
+      # Instant
+      my $instant    = $forum   -> getElementsByTagName ('InstantJob', 0) -> item (0);
+        my $job      = $instant -> getElementsByTagName ('*',0) -> item (0);
+        my $job_name = $job -> getTagName;
+        $job_name = $job -> getAttribute ('reason') if ($job_name ne 'Severance');
+
+      $conf {Instant} = {execute     => $instant -> getAttribute ('executeJob'),
+                         description => $job_name,
+                         url         => (($job_name ne 'Severance')?$job -> getElementsByTagName ('FileUrl', 0) -> item (0) -> getFirstChild -> getData:undef),
+                         Severance   => (($job_name eq 'Severance')?&get_severance ($job):undef)};
+
+      # User
+      my $user = $forum -> getElementsByTagName ('UserManagement', 0) -> item (0);
+
+      $conf {User} = {deleteAfterDays => $user -> getElementsByTagName ('DeleteUser', 0) -> item (0)
+                                               -> getElementsByTagName ('AfterDays', 0) -> item (0)
+                                               -> getFirstChild -> getData};
+    }
+
+    else {
+      violent_unlock_file ($filename);}}
+
+  # Rueckgabe
+  \%conf;
+}
+
+# ====================================================
+# Private Funktionen
+# ====================================================
+
+sub get_severance ($) {
+  my $severance = shift;
+
+  my $after_byte    = $severance -> getElementsByTagName ('AfterByte', 0) -> item (0);
+  my $after_message = $severance -> getElementsByTagName ('AfterMessage', 0) -> item (0);
+  my $after_thread  = $severance -> getElementsByTagName ('AfterThread', 0) -> item (0);
+  my $last_posting  = $severance -> getElementsByTagName ('AfterLastPosting', 0) -> item (0);
+
+  my %conf =( exArchiving  => $severance -> getAttribute ('executeArchiving'),
+              archiving    => $severance -> getElementsByTagName ('Archiving', 0) -> item (0)
+                                -> getElementsByTagName ('*', 0) -> item (0) -> getTagName,
+              severance    => $severance -> getAttribute ('executeSeverance'),
+              afterByte    => ($after_byte?$after_byte -> getFirstChild -> getData:undef),
+              afterThread  => ($after_thread?$after_thread -> getFirstChild -> getData:undef),
+              afterMessage => ($after_message?$after_message -> getFirstChild -> getData:undef),
+              lastPosting  => ($last_posting?$last_posting -> getFirstChild -> getData:undef));
+
+  \%conf;
+}
+
+# ====================================================
+# Modulinitialisierung
+# ====================================================
+
+# making require happy
+1;
+
+# ====================================================
+# end of Conf::Admin
+# ====================================================
\ No newline at end of file

patrick-canterino.de