X-Git-Url: https://git.p6c8.net/selfforum.git/blobdiff_plain/504ff3f8ee5e277c2b1bf12a7a630098eaf55f0a..ba659b53059e637777865e646f0f2a6fb7f2988e:/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 index 0000000..cf4fa13 --- /dev/null +++ b/selfforum-cgi/shared/Conf/Admin.pm @@ -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