###############################################################################
# EditHelpCentre.pm #
# $Date: 01 Sep 2026 $ #
###############################################################################
# YaBB: Yet another Bulletin Board #
# Open-Source Community Software for Webmasters #
# Version: YaBBForum 3.2 #
# Packaged: 01 Sep 2026 #
# Distributed by: https://yabbforum.nz #
# =========================================================================== #
# Copyright (c) 2000-2026 YaBB (yabbforum.nz) - All Rights Reserved. #
# Software by: The YaBB Development Team #
# with assistance from the YaBB community. #
###############################################################################
use CGI::Carp qw(fatalsToBrowser);
our $VERSION = '3.2';
$edithelpcentrepmver = 'YaBBForum 3.2';
if ( $action eq 'detailedversion' ) { return 1; }
LoadLanguage('HelpCentre');
$yytitle = $helptxt{'1'};
sub HelpEdit {
$page = $FORM{'page'};
$help_area = $INFO{'area'};
if ( $page eq 'user00_agreement' ) {
$yySetLocation =
qq~$adminurl?action=modagreement;agreementlanguage=$language;destination=helpadmin~;
redirectexit();
}
require "$helpfile/$language/$help_area/$page.help";
$SectionName =~ s/_/ /gsm;
$admin_list = qq~
|
:
|
~;
$aa = 1;
while ( ${ SectionSub . $aa } ) {
${ SectionSub . $aa } =~ s/_/ /gsm;
my $hmessage;
$hmessage = ${ SectionBody . $aa };
$admin_list .= qq~
|
:
|
|
|
~;
$aa++;
}
$yymain .= qq~
~;
$yytitle = "$helptxt{'7'}";
$action_area = 'helpadmin';
AdminTemplate();
return;
}
sub HelpEdit2 {
$Area = $FORM{'area'};
$Page = $FORM{'page'};
fopen(HELPORDER, ">$helpfile/$language/$Area/$Page.help");
$FORM{'SectionName'} =~ s/ /_/gsm;
print HELPORDER qq~\$SectionName = "$FORM{'SectionName'}";\n\n~;
$aa = 1;
while ($FORM{"SectionBody$aa"}) {
$FORM{"SectionBody$aa"} =~ tr/\r//d;
$FORM{"SectionBody$aa"} =~ s/\cM//gxsm;
$FORM{"SectionBody$aa"} =~
s/\[([^\]]{0,30})\n([^\]]{0,30})\]/\[$1$2\]/gxsm;
$FORM{"SectionBody$aa"} =~
s/\[\/([^\]]{0,30})\n([^\]]{0,30})\]/\[\/$1$2\]/gxsm;
$FORM{"SectionBody$aa"} =~
s/(\w+:\/\/[^<>\s\n\"\]\[]+)\n([^<>\s\n\"\]\[]+)/$1\n$2/gxsm;
$FORM{"SectionBody$aa"} =~ s/\t/ \ \ \ /gsm;
$FORM{"SectionBody$aa"} =~ s/@/\\@/gxsm;
$FORM{"SectionSub$aa"} =~ s/ /_/gsm;
print {HELPORDER} qq~### Section $aa\n~
or croak "$croak{'print'} HELPORDER";
print {HELPORDER} qq~#############################################\n~
or croak "$croak{'print'} HELPORDER";
print {HELPORDER} qq~\$SectionSub$aa = "$FORM{"SectionSub$aa"}";\n~
or croak "$croak{'print'} HELPORDER";
print {HELPORDER}
qq~\$SectionBody$aa = qq\~$FORM{"SectionBody$aa"}\~;\n~
or croak "$croak{'print'} HELPORDER";
print {HELPORDER}
qq~#############################################\n\n\n~
or croak "$croak{'print'} HELPORDER";
$aa++;
}
print {HELPORDER} q~1;~ or croak "$croak{'print'} HELPORDER";
fclose(HELPORDER);
$yymain .= "$helptxt{'8'}";
$yytitle = "$helptxt{'7'}";
$yySetLocation = qq~$adminurl?action=helpadmin~;
redirectexit();
return;
}
sub HelpSet2 {
$UseHelp_Perms = $FORM{'UseHelp_Perms'} ? 1 : 0;
require Admin::NewSettings;
SaveSettingsTo('Settings.pm');
$yymain .= "$helptxt{'8'}";
$yytitle = "$helptxt{'7'}";
$yySetLocation = qq~$adminurl?action=helpadmin~;
redirectexit();
return;
}
sub MainAdmin {
my ( $admin_list, $adminlist, $gmod_list, $gmodlist, $moderator_list,
$moderatorlist, $user_list, $userlist );
$admincount = 0;
opendir HELPDIR, "$helpfile/$language/Admin";
@contents = readdir HELPDIR;
closedir HELPDIR;
foreach my $line ( sort { uc($a) cmp uc $b } @contents ) {
( $name, $extension ) = split /\./xsm, $line;
if ( $extension !~ /help/ism ) { next; }
$select = q{};
if ( $admincount == 0 ) { $select = q~ selected="selected"~; }
$admin_list .= qq~~;
$admin_lst .= qq~$name\n~;
$admincount++;
}
if ( !-e ("$vardir/Admin.helporder") ) {
fopen( HELPORDER, ">$vardir/Admin.helporder" )
or croak("couldn't write order file - check permissions on $vardir");
print {HELPORDER} qq~$admin_lst~ or croak "$croak{'print'} HELPORDER";
fclose(HELPORDER);
}
fopen( HELPORDER, "$vardir/Admin.helporder" );
@adminorderlist = ;
fclose(HELPORDER);
foreach my $line (@adminorderlist) {
chomp $line;
$adminlist .= "$line\n";
}
$gmodcount = 0;
opendir HELPDIR, "$helpfile/$language/Gmod";
@contents = readdir HELPDIR;
closedir HELPDIR;
foreach my $line ( sort { uc($a) cmp uc $b } @contents ) {
( $name, $extension ) = split /\./xsm, $line;
if ( $extension !~ /help/ism ) { next; }
$select = q{};
if ( $gmodcount == 0 ) { $select = q~ selected="selected"~; }
$gmod_list .= qq~~;
$gmod_lst .= qq~$name\n~;
$gmodcount++;
}
if ( !-e ("$vardir/Gmod.helporder") ) {
fopen( HELPORDER, ">$vardir/Gmod.helporder" )
or croak("couldn't write order file - check permissions on $vardir");
print {HELPORDER} qq~$gmod_lst~ or croak "$croak{'print'} HELPORDER";
fclose(HELPORDER);
}
fopen( HELPORDER, "$vardir/Gmod.helporder" );
@gmodorderlist = ;
fclose(HELPORDER);
foreach my $line (@gmodorderlist) {
chomp $line;
$gmodlist .= "$line\n";
}
$modcount = 0;
opendir HELPDIR, "$helpfile/$language/Moderator";
@contents = readdir HELPDIR;
closedir HELPDIR;
foreach my $line ( sort { uc($a) cmp uc $b } @contents ) {
( $name, $extension ) = split /\./xsm, $line;
if ( $extension !~ /help/ism ) { next; }
$select = q{};
if ( $modcount == 0 ) { $select = q~ selected="selected"~; }
$moderator_list .= qq~~;
$moderator_lst .= qq~$name\n~;
$modcount++;
}
if ( !-e ("$vardir/Moderator.helporder") ) {
fopen( HELPORDER, ">$vardir/Moderator.helporder" )
or croak("couldn't write order file - check permissions on $vardir");
print {HELPORDER} qq~$moderator_lst~ or croak "$croak{'print'} HELPORDER";
fclose(HELPORDER);
}
fopen( HELPORDER, "$vardir/Moderator.helporder" );
@modorderlist = ;
fclose(HELPORDER);
foreach my $line (@modorderlist) {
chomp $line;
$moderatorlist .= "$line\n";
}
$usercount = 0;
opendir HELPDIR, "$helpfile/$language/User";
@contents = readdir HELPDIR;
closedir HELPDIR;
foreach my $line ( sort { uc($a) cmp uc $b } @contents ) {
( $name, $extension ) = split /\./xsm, $line;
if ( $extension !~ /help/ism ) { next; }
$select = q{};
if ( $usercount == 0 ) { $select = q~ selected="selected"~; }
$user_list .= qq~~;
$user_lst .= qq~$name\n~;
$usercount++;
}
if ( !-e ("$vardir/User.helporder") ) {
fopen( HELPORDER, ">$vardir/User.helporder" )
or croak("couldn't write order file - check permissions on $vardir");
print {HELPORDER} qq~$user_lst~ or croak "$croak{'print'} HELPORDER";
fclose(HELPORDER);
}
fopen( HELPORDER, "$vardir/User.helporder" );
@userorderlist = ;
fclose(HELPORDER);
foreach my $line (@userorderlist) {
chomp $line;
$userlist .= qq~$line\n~;
}
if ( $admincount < 4 ) { $admincount = 4; }
if ( $gmodcount < 4 ) { $gmodcount = 4; }
if ( $modcount < 4 ) { $modcount = 4; }
if ( $usercount < 4 ) { $usercount = 4; }
my $perms_check = q{};
if ( $UseHelp_Perms == 1 ) {
$perms_check = q~ checked='checked'~;
}
$yymain .= qq~
~;
$yytitle = "$helptxt{'7'}";
$action_area = 'helpadmin';
AdminTemplate();
return;
}
sub SetOrderFile {
my $help_area = $INFO{'area'};
my %verify_hash = ();
$FORM{'order'} =~ s/\r//gxsm;
$FORM{'testlst'} =~ s/\r//gxsm;
$oldorder = $FORM{'testlst'};
$neworder = $FORM{'order'};
@oldorder = split /\n/xsm, $oldorder;
@neworder = split /\n/xsm, $neworder;
foreach (@oldorder) {
$_ =~ s/[\n\r]//gxsm;
$verify_hash{"$_"}++;
}
$theorder = q{};
foreach my $order (@neworder) {
$order =~ s/[\n\r]//gxsm;
if ( $order eq q{} ) { next; }
if ( !exists $verify_hash{$order} ) { next; }
$theorder .= "$order\n";
}
fopen( HELPORDER, ">$vardir/$help_area.helporder" )
or croak("couldn't write order file - check permissions on $vardir");
print {HELPORDER} qq~$theorder~ or croak "$croak{'print'} HELPORDER";
fclose(HELPORDER);
$yytitle = "$helptxt{'7'}";
$yySetLocation = qq~$adminurl?action=helpadmin~;
redirectexit();
return;
}
1;