| ############################################################################### |
| ############################################################################### |
| # NewSettings.pl # |
| # NewSettings.pm # |
| |
| # $Date: 01.05.16 $ # |
| ############################################################################### |
| ############################################################################### |
| # YaBB: Yet another Bulletin Board # |
| # YaBB: Yet another Bulletin Board # |
| # Open-Source Community Software for Webmasters # |
| # Open-Source Community Software for Webmasters # |
| # Version: YaBB 2.5.2 # |
| # Version: YaBB 2.6.12 # |
| # Packaged: October 21, 2012 # |
| # Packaged: January 5, 2016 # |
| # Distributed by: http://www.yabbforum.com # |
| # Distributed by: http://www.yabbforum.com # |
| # =========================================================================== # |
| # =========================================================================== # |
| # Copyright (c) 2000-2012 YaBB (www.yabbforum.com) - All Rights Reserved. # |
| # Copyright (c) 2000-2016 YaBB (www.yabbforum.com) - All Rights Reserved. # |
| # Software by: The YaBB Development Team # |
| # Software by: The YaBB Development Team # |
| # with assistance from the YaBB community. # |
| # with assistance from the YaBB community. # |
| ############################################################################### |
| ############################################################################### |
| |
| # use strict; |
| |
| use CGI::Carp qw(fatalsToBrowser); |
| |
| our $VERSION = '2.6.12'; |
| |
| |
| $newsettingsplver = 'YaBB 2.5.2 $Revision: 1.5 $'; |
| $newsettingspmver = 'YaBB 2.6.12 $Revision: 1710 $'; |
| if ($action eq 'detailedversion') { return 1; } |
| if ( $action eq 'detailedversion' ) { return 1; } |
| |
| |
| # Figure out what tabset to use, depending on the page= parameter. |
| # Figure out what tabset to use, depending on the page= parameter. |
| my %settings_dispatch = ( |
| my %settings_dispatch = ( |
| news => "$admindir/Settings_News.pl", |
| news => "$admindir/Settings_News.pm", |
| main => "$admindir/Settings_Main.pl", |
| main => "$admindir/Settings_Main.pm", |
| advanced => "$admindir/Settings_Advanced.pl", |
| advanced => "$admindir/Settings_Advanced.pm", |
| security => "$admindir/Settings_Security.pl", |
| security => "$admindir/Settings_Security.pm", |
| antispam => "$admindir/Settings_Antispam.pl", |
| antispam => "$admindir/Settings_Antispam.pm", |
| maintenance => "$admindir/Settings_Maintenance.pl", |
| maintenance => "$admindir/Settings_Maintenance.pm", |
| |
| |
| ### BOARDMOD SETTINGS ANCHOR ### |
| ### BOARDMOD SETTINGS ANCHOR ### |
| ### ADD BEFORE THESE LINES ### |
| ### ADD BEFORE THESE LINES ### |
| ); |
| ); |
| |
| |
| my $page = $INFO{'page'}; |
| my $page = $INFO{'page'}; |
| # 'eval' because NewSettings.pl can be called by Sources/TabMenu.pl |
| |
| eval{ require $settings_dispatch{$page}; }; |
| |
| |
| |
| sub settings { |
| # 'eval' because NewSettings.pm can be called by Sources/TabMenu.pm |
| &is_admin_or_gmod; |
| eval { require $settings_dispatch{$page}; }; |
| |
| |
| $yytitle = $page eq 'main' ? $admin_txt{'222'} : ($page eq 'advanced' ? $admin_txt{'223'} : ($page eq 'security' ? $admintxt{'a3_title'} : ($page eq 'antispam' ? $admintxt{'a3_sub4'} : ($page eq 'maintenance' ? $admintxt{'a7_title'} : $admintxt{'a2_sub1'})))); |
| |
| |
| |
| my @requireorder; # an array for the correct order of the requirements |
| sub settings { |
| my %requirements; # an hash that says "Y is required by X" |
| is_admin_or_gmod(); |
| |
| |
| $yymain .= qq~ |
| $yytitle = |
| <a name="top"></a> |
| $page eq 'main' ? $admin_txt{'222'} |
| <div class="bordercolor" style="padding: 0px; width: 99%; margin-left: 0px; margin-right: auto;"> |
| : ( |
| <table width="100%" cellspacing="1" cellpadding="4"> |
| $page eq 'advanced' ? $admin_txt{'223'} |
| <tr valign="middle"> |
| : ( |
| <td align="left" class="titlebg"> |
| $page eq 'security' ? $admintxt{'a3_title'} |
| <b>$yytitle</b> |
| : ( |
| </td> |
| $page eq 'antispam' ? $admintxt{'a3_sub4'} |
| </tr> |
| : ( |
| <tr valign="middle"> |
| $page eq 'maintenance' ? $admintxt{'a7_title'} |
| <td align="left" class="windowbg2"><br /> |
| : $admintxt{'a2_sub1'} |
| $admin_txt{'347'} |
| ) |
| </td> |
| ) |
| </tr> |
| ) |
| </table> |
| ); |
| </div> |
| |
| <br /> |
| my @requireorder; # an array for the correct order of the requirements |
| <form action="$adminurl?action=newsettings2;page=$page" onsubmit="undisableAll(this);" method="post"> |
| my %requirements; # a hash that says "Y is required by X" |
| <ul id="navlist"> |
| |
| |
| $yymain .= qq~ |
| |
| <div class="bordercolor rightboxdiv"> |
| |
| <table class="border-space pad-cell" style="margin-bottom:.5em"> |
| |
| <tr> |
| |
| <td class="titlebg"><b>$yytitle</b></td> |
| |
| </tr><tr> |
| |
| <td class="windowbg2"> |
| |
| <div class="pad-more">$admin_txt{'347'}</div> |
| |
| </td> |
| |
| </tr> |
| |
| </table> |
| |
| </div> |
| |
| <form action="$adminurl?action=newsettings2;page=$page" onsubmit="undisableAll(this); savealert()" method="post" enctype="multipart/form-data" accept-charset="$yymycharset"> |
| |
| <ul id="navlist"> |
| ~; |
| ~; |
| my $i = 0; |
| my $i = 0; |
| foreach my $tab (@settings) { |
| foreach my $tab (@settings) { |
| $tab->{'name'} =~ s/ / /g; |
| $tab->{'name'} =~ s/ / /gsm; |
| # The 's are for Konqueror, and also to add a little more padding. |
| |
| $yymain .= qq~ <li id="button_$tab->{'id'}" onclick="changeToTab('$tab->{'id'}'); return false;"> <a href="#tab_$tab->{'id'}">$tab->{'name'}</a> </li> |
| # The 's are for Konqueror, and also to add a little more padding. |
| |
| $yymain .= |
| |
| qq~ <li id="button_$tab->{'id'}" onclick="changeToTab('$tab->{'id'}'); return false;"> <a href="#tab_$tab->{'id'}">$tab->{'name'}</a> </li> |
| ~; |
| ~; |
| } |
| } |
| $yymain .= q~ </ul>~; |
| $yymain .= q~ </ul>~; |
| |
| |
| foreach my $tab (@settings) { |
| foreach my $tab (@settings) { |
| $yymain .= qq~ |
| $yymain .= qq~ |
| <div class="bordercolor" style="padding: 0px; width: 99%; margin-left: 0px; margin-right: auto;"> |
| <div class="bordercolor borderstyle rightboxdiv"> |
| <table width="100%" cellspacing="1" cellpadding="4" class="section" id="tab_$tab->{'id'}"> |
| <table class="section" style="border-collapse:separate; border-spacing: 1px;" id="tab_$tab->{'id'}"> |
| <tr> |
| <colgroup> |
| <td style="text-align: left;" class="titlebg" colspan="2"> |
| <col span="2" style="width: 50%" /> |
| <a name="tab_$tab->{'id'}"></a><img src="$imagesdir/preferences.gif" alt="" border="0" /> <b>$tab->{'name'}</b> |
| </colgroup> |
| <span style="float: right;" class="js_remove_me"><a href="#top"><b>$settings_txt{'top'}</b></a></span> |
| <tr> |
| |
| <td class="titlebg padd-cell" colspan="2"> |
| |
| $admin_img{'prefimg'} <b>$tab->{'name'}</b> |
| |
| <span style="float: right;" class="js_remove_me"><a href="#"><b>$settings_txt{'top'}</b></a></span> |
| </td> |
| </td> |
| </tr>~; |
| </tr>~; |
| |
| |
| foreach my $item (@{$tab->{'items'}}) { |
| foreach my $item ( @{ $tab->{'items'} } ) { |
| if($item->{'header'}) { |
| if ( $item->{'header'} ) { |
| $yymain .= qq~ |
| $yymain .= qq~<tr> |
| <tr> |
| <td class="catbg padd-cell" colspan="2"><span class="small">$item->{'header'}</span></td> |
| <td style="text-align: left;" class="catbg" colspan="2"> |
| |
| <span class="small">$item->{'header'}</span> |
| |
| </td> |
| |
| </tr>~; |
| </tr>~; |
| } |
| } |
| elsif($item->{'two_rows'} && $item->{'input_html'}) { |
| elsif ( $item->{'two_rows'} && $item->{'input_html'} ) { |
| $yymain .= qq~ |
| $yymain .= qq~<tr> |
| <tr style="text-align: left;"> |
| <td class="windowbg2 padd-cell" colspan="2">$item->{'description'}</td> |
| <td style="width: 50%;" class="windowbg2" colspan="2"> |
| </tr><tr> |
| $item->{'description'} |
| <td class="windowbg2 padd-cell" colspan="2">$item->{'input_html'}</td> |
| </td> |
| |
| </tr> |
| |
| <tr style="text-align: left;"> |
| |
| <td style="width: 50%;" class="windowbg2" colspan="2"> |
| |
| $item->{'input_html'} |
| |
| </td> |
| |
| </tr>~; |
| </tr>~; |
| } |
| } |
| elsif($item->{'input_html'}) { |
| elsif ( $item->{'input_html'} ) { |
| $yymain .= qq~ |
| $yymain .= qq~<tr> |
| <tr style="text-align: left;"> |
| <td class="windowbg2 vtop padd-cell">$item->{'description'}</td> |
| <td style="width: 50%;" class="windowbg2" valign="top"> |
| <td class="windowbg2 vtop padd-cell">$item->{'input_html'}</td> |
| $item->{'description'} |
| |
| </td> |
| |
| <td style="width: 50%;" class="windowbg2" valign="top"> |
| |
| $item->{'input_html'} |
| |
| </td> |
| |
| </tr>~; |
| </tr>~; |
| } |
| } |
| |
| |
| # Handle settings that require other settings |
| # Handle settings that require other settings |
| if ($item->{'depends_on'} && $item->{'name'}) { |
| if ( $item->{'depends_on'} && $item->{'name'} ) { |
| foreach my $require (@{$item->{'depends_on'}}) { |
| foreach my $require ( @{ $item->{'depends_on'} } ) { |
| # This is somewhat messy, but it works well. |
| |
| # We strip off the possible options: inverse, equal, and not equal |
| # This is somewhat messy, but it works well. |
| # Then we attach those to this current option in the detailed string for requirements |
| # We strip off the possible options: inverse, equal, and not equal |
| # While this data does not really belong with the value, it transfers nicely. |
| # Then we attach those to this current option in the detailed string for requirements |
| # We then remove it and reuse it later. |
| # While this data does not really belong with the value, it transfers nicely. |
| my($inverse, $realname, $remainder) = $require =~ m/(\(?\!?)(\w+)(.*)/; |
| # We then remove it and reuse it later. |
| push(@requireorder, $realname) unless $requirements{$realname}; |
| my ( $inverse, $realname, $remainder ) = |
| push(@{$requirements{$realname}}, $inverse . $item->{'name'} . $remainder); |
| $require =~ m{(\(?\!?)(\w+)(.*)}xsm; |
| } |
| if ( !$requirements{$realname} ) { |
| } |
| push @requireorder, $realname; |
| } |
| } |
| |
| push |
| |
| @{ $requirements{$realname} }, |
| |
| $inverse . $item->{'name'} . $remainder; |
| |
| } |
| |
| } |
| |
| } |
| |
| |
| $yymain .= qq~ |
| $yymain .= q~ |
| </table> |
| </table> |
| </div>~; |
| </div>~; |
| } |
| } |
| |
| |
| # The old method isn't quite good enough. |
| # The old method isn't quite good enough. |
| # So we build a hash with the Javascript logic needed to determine if this item should be enabled. |
| # So we build a hash with the Javascript logic needed to determine if this item should be enabled. |
| # When in doubt, generate some code :) |
| # When in doubt, generate some code :) |
| my %requirejs; |
| my %requirejs; |
| |
| |
| my $dependicies = ''; |
| my $dependicies = q{}; |
| my $onloadevents; |
| my $onloadevents; |
| foreach my $ritem (@requireorder) { |
| foreach my $ritem (@requireorder) { |
| $dependicies .= qq~ |
| $dependicies .= qq~ |
| function handleDependent_$ritem() { |
| function handleDependent_$ritem() { |
| var isChecked = document.getElementsByName("$ritem")[0].checked; |
| var isChecked = document.getElementsByName("$ritem")[0].checked; |
| var itemValue = document.getElementsByName("$ritem")[0].value;\n~; |
| var itemValue = document.getElementsByName("$ritem")[0].value;\n~; |
| |
| |
| foreach my $require (@{$requirements{$ritem}}) { |
| foreach my $require ( @{ $requirements{$ritem} } ) { |
| # && or ||, ( and ) |
| |
| my $AndOr = $require =~ s/\)// ? ')' : ''; |
| # && or ||, ( and ) |
| $AndOr .= $require =~ s/\|\|// ? ' ||' : ' &&'; |
| my $AndOr = $require =~ s/\)//xsm ? ')' : q{}; |
| my $C = $require =~ s/\(// ? '(' : ''; |
| $AndOr .= $require =~ s/\|\|//xsm ? ' ||' : ' &&'; |
| # Is false |
| my $C = $require =~ s/\(//xsm ? '(' : q{}; |
| if ($require =~ s/^\!//) { |
| |
| $requirejs{$require} .= qq~$C\!document.getElementsByName("$ritem")[0].checked$AndOr ~; |
| # Is false |
| } |
| if ( $require =~ s/^\!//xsm ) { |
| # Is equal to |
| $requirejs{$require} .= |
| elsif ($require =~ s/\=\=(.*)$//) { |
| qq~$C\!document.getElementsByName("$ritem")[0].checked$AndOr ~; |
| $requirejs{$require} .= qq~$C\document.getElementsByName("$ritem")[0].value == '$1'$AndOr ~; |
| } |
| } |
| |
| # Is not equal to |
| # Is equal to |
| elsif ($require =~ s/\!\=(.*)$//) { |
| elsif ( $require =~ s/\=\=(.*)$//xsm ) { |
| $requirejs{$require} .= qq~$C\document.getElementsByName("$ritem")[0].value != '$1'$AndOr ~; |
| $requirejs{$require} .= |
| } |
| qq~$C\document.getElementsByName("$ritem")[0].value == '$1'$AndOr ~; |
| # Is true |
| } |
| else { |
| |
| $requirejs{$require} .= qq~$C\document.getElementsByName("$ritem")[0].checked$AndOr ~; |
| # Is not equal to |
| } |
| elsif ( $require =~ s/\!\=(.*)$//xsm ) { |
| $dependicies .= qq~ checkDependent("$require");\n~; |
| $requirejs{$require} .= |
| } |
| qq~$C\document.getElementsByName("$ritem")[0].value != '$1'$AndOr ~; |
| $dependicies .= qq~ }; |
| } |
| document.getElementsByName("$ritem")[0].onclick = handleDependent_$ritem; |
| |
| document.getElementsByName("$ritem")[0].onkeyup = handleDependent_$ritem; |
| # Is true |
| |
| else { |
| |
| $requirejs{$require} .= |
| |
| qq~$C\document.getElementsByName("$ritem")[0].checked$AndOr ~; |
| |
| } |
| |
| $dependicies .= qq~ checkDependent("$require");\n~; |
| |
| } |
| |
| $dependicies .= qq~ } |
| |
| document.getElementsByName("$ritem")[0].onclick = handleDependent_$ritem; |
| |
| document.getElementsByName("$ritem")[0].onkeyup = handleDependent_$ritem; |
| ~; |
| ~; |
| $onloadevents .= qq~handleDependent_$ritem(); ~; |
| $onloadevents .= qq~handleDependent_$ritem(); ~; |
| } |
| } |
| |
| |
| # Hidden "feature": jump directly to a tab by default via the URL bar. |
| # Hidden "feature": jump directly to a tab by default via the URL bar. |
| $INFO{'tab'} =~ s/\W//g; |
| $INFO{'tab'} =~ s/\W//gxsm; |
| $default_tab = $INFO{'tab'} || $settings[0]->{'id'}; |
| $default_tab = $INFO{'tab'} || $settings[0]->{'id'}; |
| $yymain .= qq~ |
| $yymain .= qq~ |
| <div class="bordercolor" style="padding: 0px; width: 99%; margin-top: 1em; margin-left: 0px; margin-right: auto;"> |
| <div class="bordercolor rightboxdiv" style="margin: .5em auto 0 0"> |
| <table width="100%" cellspacing="1" cellpadding="4"> |
| <table class="border-space pad-cell"> |
| <tr valign="middle"> |
| <tr> |
| <td align="left" class="titlebg" colspan="2"> |
| <td class="titlebg">$admin_img{'prefimg'} <b>$admin_txt{'10'}</b></td> |
| <img src="$imagesdir/preferences.gif" alt="" border="0" /> <b>$admin_txt{'10'}</b> |
| </tr><tr> |
| </td> |
| <td class="catbg center"> |
| </tr> |
| <input class="button" type="submit" value="$admin_txt{'10'}" /> |
| <tr align="center" valign="middle"> |
| </td> |
| <td align="center" class="catbg" colspan="2"> |
| </tr> |
| <input class="button" type="submit" value="$admin_txt{'10'}" /> |
| |
| </td> |
| |
| </tr> |
| |
| </table> |
| </table> |
| </div> |
| </div> |
| </form> |
| </form> |
| <script type="text/javascript"> |
| <script type="text/javascript"> |
| <!-- |
| function getElementsByClass(searchClass,node,tag) { |
| function getElementsByClass(searchClass,node,tag) { |
| var classElements = new Array(); |
| var classElements = new Array(); |
| if ( node === null || node === undefined ) |
| if ( node == null ) |
| node = document; |
| node = document; |
| if ( tag === null || tag === undefined ) |
| if ( tag == null ) |
| tag = '*'; |
| tag = '*'; |
| var els = node.getElementsByTagName(tag); |
| var els = node.getElementsByTagName(tag); |
| var elsLen = els.length; |
| var elsLen = els.length; |
| var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|\$)'); |
| var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|\$)'); |
| for (i = 0, j = 0; i < elsLen; i++) { |
| for (i = 0, j = 0; i < elsLen; i++) { |
| if ( pattern.test(els[i].className) ) { |
| if ( pattern.test(els[i].className) ) { |
| classElements[j] = els[i]; |
| classElements[j] = els[i]; |
| j++; |
| j++; |
| } |
| } |
| } |
| } |
| return classElements; |
| return classElements; |
| } |
| } |
| function changeToTab(tab) { |
| function changeToTab(tab) { |
| var elements = getElementsByClass('section'); |
| var elements = getElementsByClass('section'); |
| var i; |
| var i; |
| for(i = 0; i < elements.length; i++) { |
| for(i = 0; i < elements.length; i++) { |
| if(elements[i].id == 'tab_' + tab) { |
| if(elements[i].id == 'tab_' + tab) { |
| elements[i].style.display = ''; |
| elements[i].style.display = ''; |
| } |
| } |
| else { |
| else { |
| elements[i].style.display = 'none'; |
| elements[i].style.display = 'none'; |
| } |
| } |
| } |
| } |
| var elm = getElementsByClass('curtab')[0]; |
| var elm = getElementsByClass('curtab')[0]; |
| if(elm) { |
| if(elm) { |
| elm.className = ''; |
| elm.className = ''; |
| } |
| } |
| document.getElementById('button_' + tab).className = 'curtab'; |
| document.getElementById('button_' + tab).className = 'curtab'; |
| } |
| } |
| var removables = getElementsByClass('js_remove_me'); |
| var removables = getElementsByClass('js_remove_me'); |
| var i; |
| var i; |
| for(i = 0; i < removables.length; i++) { |
| for(i = 0; i < removables.length; i++) { |
| removables[i].innerHTML = ''; |
| removables[i].innerHTML = ''; |
| } |
| } |
| changeToTab('$default_tab'); // Focus default tab |
| changeToTab('$default_tab'); // Focus default tab |
| function checkDependent(eid) { |
| function checkDependent(eid) { |
| var elm = document.getElementsByName(eid)[0];\n~; |
| var elm = document.getElementsByName(eid)[0];\n~; |
| |
| |
| # Loop through each item that depends on something else |
| # Loop through each item that depends on something else |
| foreach my $name ( keys %requirejs ) { |
| foreach my $name (keys(%requirejs)) { |
| my $logic = $requirejs{$name}; |
| my $logic = $requirejs{$name}; |
| $logic =~ s/ (&&|\|\|) $//sm; |
| $logic =~ s/ (&&|\|\|) $//; |
| $yymain .= qq~ |
| $yymain .= qq~ |
| if (eid == "$name" && ($logic)) { |
| if (eid == "$name" && ($logic)) { |
| elm.disabled = false; |
| elm.disabled = false; |
| } else if (eid == "$name") { |
| } else if (eid == "$name") { |
| elm.disabled = true; |
| elm.disabled = true; |
| }\n~; |
| }\n~; |
| } |
| } |
| |
| |
| |
| $yymain.= qq~ |
| $yymain .= qq~ |
| } |
| } |
| $dependicies |
| $dependicies |
| window.onload = function(){ $onloadevents}; |
| window.onload = function(){ $onloadevents}; |
| function undisableAll(node) { |
| function undisableAll(node) { |
| var elements = document.getElementsByTagName("input"); |
| var elements = document.getElementsByTagName("input"); |
| for(var i = 0; i < elements.length; i++) { |
| for(var i = 0; i < elements.length; i++) { |
| elements[i].disabled = false; |
| elements[i].disabled = false; |
| } |
| } |
| var elements = document.getElementsByTagName("textarea"); |
| elements = document.getElementsByTagName("textarea"); |
| for(var i = 0; i < elements.length; i++) { |
| for( i = 0; i < elements.length; i++) { |
| elements[i].disabled = false; |
| elements[i].disabled = false; |
| } |
| } |
| var elements = document.getElementsByTagName("select"); |
| elements = document.getElementsByTagName("select"); |
| for(var i = 0; i < elements.length; i++) { |
| for( i = 0; i < elements.length; i++) { |
| elements[i].disabled = false; |
| elements[i].disabled = false; |
| } |
| } |
| } |
| } |
| // --> |
| |
| </script>~; |
| </script>~; |
| |
| |
| $action_area = "newsettings;page=$page"; |
| $action_area = "newsettings;page=$page"; |
| &AdminTemplate; |
| AdminTemplate(); |
| |
| return; |
| } |
| } |
| |
| |
| sub ischecked { |
| sub ischecked { |
| # Return a ref so we can be used like ${ischecked($var)} inside a string |
| my ($inp) = @_; |
| return \' checked="checked"' if $_[0]; |
| |
| return \''; |
| # Return a ref so we can be used like ${ischecked($var)} inside a string |
| |
| return \' checked="checked"' if $inp; |
| |
| return \q{}; |
| } |
| } |
| |
| |
| sub isselected { |
| sub isselected { |
| # Return a ref so we can be used like ${isselected($var)} inside a string |
| my ($inp) = @_; |
| return \' selected="selected"' if $_[0]; |
| |
| return \''; |
| # Return a ref so we can be used like ${isselected($var)} inside a string |
| |
| return \' selected="selected"' if $inp; |
| |
| return \q{}; |
| } |
| } |
| |
| |
| # Regexes. Will be used like this: $var =~ /^(?:$regexes{'a'}|$regexes{'b'}|$regexes{'c'})$/ || die; |
| # Regexes. Will be used like this: $var =~ /^(?:$regexes{'a'}|$regexes{'b'}|$regexes{'c'})$/ || die; |
| my %regexes = ( |
| my %regexes = ( |
| boolean => '.*', # anything. True is not 0 and defined, false is 0/undefined |
| boolean => |
| number => '\d+', # just numbers |
| q{.*}, # anything. True is not 0 and defined, false is 0/undefined |
| fullnumber => '(?:\+|\-|)[\d\.]+', # optional sign, plus numbers and decimal |
| number => '\d+', # just numbers |
| hexadecimal => '#?[0-9a-fA-F]+', # optional "#" (for hex color codes), plus hex characters |
| fullnumber => '(?:\+|\-|)[\d\.]+', # optional sign, plus numbers and decimal |
| alpha => '[a-zA-Z]+', # Letters |
| hexadecimal => '#?[0-9a-fA-F]+', |
| text => '[^\n\r]+', # Anything but newlines |
| |
| fulltext => '(?s).+', # Anything, including newlines |
| # optional "#" (for hex color codes), plus hex characters |
| null => '', # Use this if something can be false, in addition to the normal valid characters (not needed for boolean) |
| alpha => '[a-zA-Z]+', # Letters |
| |
| text => '[^\n\r]+', # Anything but newlines |
| |
| fulltext => '(?s).+', # Anything, including newlines |
| |
| null => q{}, |
| |
| |
| |
| # Use this if something can be false, in addition to the normal valid characters (not needed for boolean) |
| ); |
| ); |
| |
| |
| # Preserve the traditional "2" name as well as the nicer SaveSettings. |
| # Preserve the traditional "2" name as well as the nicer SaveSettings. |
| sub settings2 { |
| sub settings2 { |
| &is_admin_or_gmod; |
| is_admin_or_gmod(); |
| |
| |
| # Load/Verify the settings |
| # Load/Verify the settings |
| foreach my $tab (@settings) { |
| foreach my $tab (@settings) { |
| foreach my $item (@{$tab->{'items'}}) { |
| foreach my $item ( @{ $tab->{'items'} } ) { |
| # Get the value |
| |
| my $name = $item->{'name'} || next; # Skip non-items |
| # Get the value |
| $settings{$name} = $FORM{$name}; |
| my $name = $item->{'name'} || next; # Skip non-items |
| $settings{$name} = '' unless defined $settings{$name}; |
| $settings{$name} = $FORM{$name}; |
| |
| if ( !defined $settings{$name} ) { $settings{$name} = q{}; } |
| $settings{$name} =~ s/^\s+//; |
| |
| $settings{$name} =~ s/\s+$//; |
| $settings{$name} =~ s/^\s+//xsm; |
| |
| $settings{$name} =~ s/\s+$//xsm; |
| # Validate it |
| |
| if ($item->{'validate'}) { |
| # Validate it |
| # Handle numbers/nulls better (empty string is 0) |
| if ( $item->{'validate'} ) { |
| if ($item->{'validate'} =~ /null/ && $item->{'validate'} =~ /number/) { |
| |
| $settings{$name} ||= 0; |
| # Handle numbers/nulls better (empty string is 0) |
| } |
| if ( $item->{'validate'} =~ /null/sm |
| |
| && $item->{'validate'} =~ /number/sm ) |
| # Handle text/nulls better (empty string is empty string :) |
| { |
| if ($item->{'validate'} =~ /null/ && $item->{'validate'} =~ /text/) { |
| $settings{$name} ||= 0; |
| $settings{$name} ||= ''; |
| } |
| } |
| |
| |
| # Handle text/nulls better (empty string is empty string :) |
| # Piece together the patterns. It only needs to validate 1 pattern, but the pattern must be the whole string. |
| if ( $item->{'validate'} =~ /null/sm |
| my $pattern = '^(?:' . join('|', @regexes{split(/,/, $item->{'validate'})}) . ')$'; |
| && $item->{'validate'} =~ /text/sm ) |
| &admin_fatal_error('invalid_value', qq~$name ($item->{'description'})~) unless $settings{$name} =~ /$pattern/; |
| { |
| |
| $settings{$name} ||= q{}; |
| # Set numeric options to 0 if they are null |
| } |
| if ($item->{'validate'} eq 'boolean') { |
| |
| $settings{$name} = $settings{$name} ? 1 : 0; |
| # Piece together the patterns. It only needs to validate 1 pattern, but the pattern must be the whole string. |
| } |
| my $pattern = '^(?:' |
| } |
| . join( q{|}, @regexes{ split /,/xsm, $item->{'validate'} } ) |
| } |
| . ')$'; |
| } |
| if ( $settings{$name} !~ /$pattern/sm ) { |
| |
| fatal_error( 'invalid_value', |
| # Save them, as according to this type of settings |
| qq~$name ($item->{'description'})~ ); |
| # This subroutine resides in the file that is loaded in the hash at the top of the file. |
| } |
| &SaveSettings(%settings); |
| |
| |
| # Set numeric options to 0 if they are null |
| # Redirect. |
| if ( $item->{'validate'} eq 'boolean' ) { |
| $yySetLocation = "$adminurl?action=newsettings;page=$page"; |
| $settings{$name} = $settings{$name} ? 1 : 0; |
| &redirectexit; |
| } |
| |
| } |
| |
| } |
| |
| } |
| |
| |
| |
| # Save them, as according to this type of settings |
| |
| # This subroutine resides in the file that is loaded in the hash at the top of the file. |
| |
| SaveSettings(%settings); |
| |
| $yySetLocation = "$adminurl?action=newsettings;page=$page"; |
| |
| redirectexit(); |
| |
| return; |
| } |
| } |
| |
| |
| # Subroutine for saving to Settings.pl |
| # Subroutine for saving to Settings.pm |
| sub SaveSettingsTo { |
| sub SaveSettingsTo { |
| my $file = shift; |
| my $file = shift; |
| my %settings = @_; |
| my %settings = @_; |
| |
| |
| # This is why we should use hashes for options to begin with. |
| # these cannot be reversed per Perl Critic. |
| foreach my $key (keys(%settings)) { |
| |
| $$key = delete($settings{$key}); |
| |
| # Sanitize the input using \Q...\E later. |
| |
| } |
| |
| |
| |
| if ($codemaxchars > 15) { $codemaxchars = 15; } |
| |
| |
| |
| my $setfile; |
| |
| if ($file eq 'Settings.pl') { |
| |
| if ($settings_file_version ne $YaBBversion) { # START upgrade codes |
| |
| # The following is for upgrades from YaBB versions < 2.3 START |
| |
| if ($enable_notifications eq '') { $enable_notifications = $enable_notification ? 3 : 0; } |
| |
| $fix_avatar_img_size ||= 0; |
| |
| $fix_post_img_size ||= 0; |
| |
| $fix_signat_img_size ||= 0; |
| |
| $fix_attach_img_size ||= 0; |
| |
| # The following is for upgrades from YaBB versions < 2.3 END |
| |
| |
| |
| # The following is for upgrades from YaBB versions < 2.4 START |
| |
| if (-e "$vardir/membergroups.txt") { require "$vardir/membergroups.txt"; } |
| |
| if (!@nopostorder && -e "$vardir/nopostorder.txt") { |
| |
| fopen(NPORDER, "$vardir/nopostorder.txt"); |
| |
| @nopostorder = <NPORDER>; |
| |
| fclose(NPORDER); |
| |
| chomp(@nopostorder); |
| |
| } |
| |
| |
| |
| if (-e "$vardir/advsettings.txt") { require "$vardir/advsettings.txt"; } |
| |
| if (-e "$vardir/secsettings.txt") { require "$vardir/secsettings.txt"; } |
| |
| |
| |
| if (-e "$vardir/Smilies.txt") { |
| |
| require "$vardir/Smilies.txt"; |
| |
| $popback =~ s/[^a-f0-9]//ig; |
| |
| $poptext =~ s/[^a-f0-9]//ig; |
| |
| } |
| |
| |
| |
| if (-e "$vardir/template.cfg") { require "$vardir/template.cfg"; } |
| |
| elsif (!%templateset) { # only for upgrade from very old versions |
| |
| opendir(TMPLDIR, "$templatesdir"); my @configs = readdir(TMPLDIR); closedir(TMPLDIR); |
| |
| foreach (@configs) { if (-e "$templatesdir/$_/$_.cfg") { require "$admindir/ManageTemplates.pl"; &UpdateTemplates($_, "new"); } } |
| |
| } |
| |
| |
| |
| if (-e "$vardir/Guardian.banned") { require "$vardir/Guardian.banned"; } |
| |
| if (-e "$vardir/Guardian.settings") { require "$vardir/Guardian.settings"; } |
| |
| |
| |
| if (-e "$vardir/ban.txt") { |
| |
| fopen(BAN, "$vardir/ban.txt"); |
| |
| foreach (<BAN>) { |
| |
| my ($type, $bannedlist) = split(/\|/, $_, 2); |
| |
| chomp($bannedlist); |
| |
| $ip_banlist = $bannedlist if $type =~ /I/i; |
| |
| $email_banlist = $bannedlist if $type =~ /E/i; |
| |
| $user_banlist = $bannedlist if $type =~ /U/i; |
| |
| } |
| |
| fclose(BAN); |
| |
| } |
| |
| |
| |
| if (-e "$vardir/HelpSettings.txt") { require "$vardir/HelpSettings.txt"; } |
| |
| if (-e "$vardir/BackupSettings.cgi") { require "$vardir/BackupSettings.cgi"; @backup_paths = @paths; } |
| |
| |
| |
| if (-e "$vardir/extended_profiles_order.txt") { |
| |
| fopen(EXT_FILE, "$vardir/extended_profiles_order.txt"); |
| |
| @ext_prof_order = <EXT_FILE>; |
| |
| fclose(EXT_FILE); |
| |
| chomp(@ext_prof_order); |
| |
| } |
| |
| if (-e "$vardir/extended_profiles_fields.txt") { |
| |
| fopen(EXT_FILE, "$vardir/extended_profiles_fields.txt"); |
| |
| @ext_prof_fields = <EXT_FILE>; |
| |
| fclose(EXT_FILE); |
| |
| chomp(@ext_prof_fields); |
| |
| } |
| |
| |
| |
| if (-e "$vardir/palette.def") { |
| |
| fopen(DEFPAL, "$vardir/palette.def"); @pallist = <DEFPAL>; fclose(DEFPAL); chomp(@pallist); |
| |
| } |
| |
| |
| |
| if (!@AdvancedTabs) { |
| |
| if (-e "$vardir/taborder.txt") { |
| |
| fopen(TABFILE, "$vardir/taborder.txt"); |
| |
| @AdvancedTabs = <TABFILE>; |
| |
| fclose(TABFILE); |
| |
| chomp(@AdvancedTabs); |
| |
| } else { @AdvancedTabs = qw (home help search ml admin revalidatesession login register guestpm mycenter logout); } |
| |
| |
| |
| if (fopen(EXTTAB, "$vardir/tabs_ext.def")) { |
| |
| my %exttabs = map /(.*)\t(.*)/, <EXTTAB>; |
| |
| fclose(EXTTAB); |
| |
| for (my $i = 0; $i < @AdvancedTabs; $i++) { |
| |
| if ($exttabs{$AdvancedTabs[$i]}) { |
| |
| $exttabs{$AdvancedTabs[$i]} =~ s/"//g; |
| |
| $AdvancedTabs[$i] .= "|$exttabs{$AdvancedTabs[$i]}"; |
| |
| } |
| |
| } |
| |
| chomp(@AdvancedTabs); |
| |
| } |
| |
| } |
| |
| # The following is for upgrades from YaBB versions < 2.4 END |
| |
| |
| |
| # The following is for upgrades from YaBB versions < 2.3 START |
| |
| if (-e "$vardir/upgrade_secsettings.txt") { require "$vardir/upgrade_secsettings.txt"; } |
| |
| if (-e "$vardir/upgrade_advsettings.txt") { require "$vardir/upgrade_advsettings.txt"; } |
| |
| if (-e "$vardir/upgrade_Settings.pl") { require "$vardir/upgrade_Settings.pl"; } |
| |
| # The following is for upgrades from YaBB versions < 2.3 END |
| |
| } # END upgrade codes |
| |
| |
| |
| # Since these are normally in a hash, fix that here |
| |
| $fadertext ||= $color{'fadertext'}; |
| |
| $faderbackground ||= $color{'faderbg'}; |
| |
| |
| |
| my $templateset = join('', map { qq~'$_' => "$templateset{$_}",\n~; } keys(%templateset)); |
| |
| |
| |
| my $ext_prof_order = '"' . join('","', @ext_prof_order) . '"' if @ext_prof_order; |
| |
| my $ext_prof_fields = '"' . join(qq~",\n"~, @ext_prof_fields) . '"' if @ext_prof_fields; |
| |
| |
| |
| my $member_groups = "# Static Member Groups\n"; |
| |
| foreach (keys %Group) { $member_groups .= qq~\$Group{'$_'} = '$Group{$_}';\n~; } |
| |
| $member_groups .= "\n# Post independent Member Groups\n"; |
| |
| foreach (keys %NoPost) { $member_groups .= qq~\$NoPost{'$_'} = '$NoPost{$_}';\n~; } |
| |
| $member_groups .= "\n# Post dependent Member Groups\n"; |
| |
| foreach (keys %Post) { $member_groups .= qq~\$Post{'$_'} = '$Post{$_}';\n~; } |
| |
| |
| |
| my $pallist = '"' . join('","', @pallist) . '"' if @pallist; |
| |
| |
| |
| if ($INFO{'page'} eq 'main') { |
| |
| if (!$enable_notifications_N && !$enable_notifications_PM) { |
| |
| $enable_notifications = 0; |
| |
| } elsif ($enable_notifications_N && !$enable_notifications_PM) { |
| |
| $enable_notifications = 1; |
| |
| } elsif (!$enable_notifications_N && $enable_notifications_PM) { |
| |
| $enable_notifications = 2; |
| |
| } elsif ($enable_notifications_N && $enable_notifications_PM) { |
| |
| $enable_notifications = 3; |
| |
| } |
| |
| } |
| |
| |
| |
| my $AdvancedTabs = '"' . join('","', @AdvancedTabs) . '"'; |
| |
| |
| |
| my $SmilieURL = '"' . join('","', @SmilieURL) . '"' if @SmilieURL; |
| |
| my $SmilieCode = '"' . join('","', @SmilieCode) . '"' if @SmilieCode; |
| |
| my $SmilieDescription = '"' . join('","', @SmilieDescription) . '"' if @SmilieDescription; |
| |
| my $SmilieLinebreak = '"' . join('","', @SmilieLinebreak) . '"' if @SmilieLinebreak; |
| |
| |
| |
| my $backup_paths = join(' ', @backup_paths); |
| # This is why we should use hashes for options to begin with. |
| |
| foreach my $key ( keys %settings ) { |
| |
| ${$key} = delete $settings{$key}; |
| |
| } |
| |
| |
| |
| if ( $codemaxchars > 15 ) { $codemaxchars = 15; } |
| |
| my $setfile; |
| |
| if ( $file eq 'Settings.pm' ) { |
| |
| $fadertext ||= $color{'fadertext'}; |
| |
| $faderbackground ||= $color{'faderbg'}; |
| |
| |
| |
| my $templateset = join q{}, |
| |
| map { qq~'$_' => "$templateset{$_}",\n~; } keys %templateset; |
| |
| |
| |
| if (@ext_prof_order) { |
| |
| $ext_prof_order = q{"} . join( q{","}, @ext_prof_order ) . q{"}; |
| |
| } |
| |
| if (@ext_prof_fields) { |
| |
| $ext_prof_fields = |
| |
| q{"} . join( qq~",\n"~, @ext_prof_fields ) . q{"}; |
| |
| } |
| |
| |
| |
| my $member_groups = "# Static Member Groups\n"; |
| |
| foreach ( keys %Group ) { |
| |
| $member_groups .= qq~\$Group{'$_'} = '$Group{$_}';\n~; |
| |
| } |
| |
| $member_groups .= "\n# Post independent Member Groups\n"; |
| |
| foreach ( keys %NoPost ) { |
| |
| $member_groups .= qq~\$NoPost{'$_'} = '$NoPost{$_}';\n~; |
| |
| } |
| |
| $member_groups .= "\n# Post dependent Member Groups\n"; |
| |
| foreach ( keys %Post ) { |
| |
| $member_groups .= qq~\$Post{'$_'} = '$Post{$_}';\n~; |
| |
| } |
| |
| |
| |
| if (@pallist) { $pallist = q{"} . join( q{","}, @pallist ) . q{"}; } |
| |
| |
| |
| if ( $INFO{'page'} eq 'main' ) { |
| |
| if ( !$enable_notifications_N ) { |
| |
| if ( !$enable_notifications_PM ) { |
| |
| $enable_notifications = 0; |
| |
| } |
| |
| elsif ($enable_notifications_PM) { |
| |
| $enable_notifications = 2; |
| |
| } |
| |
| } |
| |
| elsif ($enable_notifications_N) { |
| |
| if ( !$enable_notifications_PM ) { |
| |
| $enable_notifications = 1; |
| |
| } |
| |
| elsif ($enable_notifications_PM) { |
| |
| $enable_notifications = 3; |
| |
| } |
| |
| } |
| |
| } |
| |
| |
| |
| my $AdvancedTabs = q{"} . join( q{","}, @AdvancedTabs ) . q{"}; |
| |
| |
| |
| if (@SmilieURL) { |
| |
| $SmilieURL = q{"} . join( q{","}, @SmilieURL ) . q{"}; |
| |
| } |
| |
| if (@SmilieCode) { |
| |
| $SmilieCode = q{"} . join( q{","}, @SmilieCode ) . q{"}; |
| |
| } |
| |
| if (@SmilieDescription) { |
| |
| $SmilieDescription = |
| |
| q{"} . join( q{","}, @SmilieDescription ) . q{"}; |
| |
| } |
| |
| if (@SmilieLinebreak) { |
| |
| $SmilieLinebreak = q{"} . join( q{","}, @SmilieLinebreak ) . q{"}; |
| |
| } |
| |
| |
| $smtp_server =~ s/^\s+|\s+$//g; |
| my $backup_paths = join q{ }, @backup_paths; |
| |
| |
| $setfile = << "EOF"; |
| $smtp_server =~ s/^\s+|\s+$//gxsm; |
| |
| |
| |
| $setfile = << "EOF"; |
| ############################################################################### |
| ############################################################################### |
| # Settings.pl # |
| # Settings.pm # |
| ############################################################################### |
| ############################################################################### |
| # YaBB: Yet another Bulletin Board # |
| # YaBB: Yet another Bulletin Board # |
| # Open-Source Community Software for Webmasters # |
| # Open-Source Community Software for Webmasters # |
| # Version: YaBB 2.5.2 # |
| # Version: YaBB 2.6.12 # |
| # Packaged: October 21, 2012 # |
| # Packaged: January 5, 2016 # |
| # Distributed by: http://www.yabbforum.com # |
| # Distributed by: http://www.yabbforum.com # |
| # =========================================================================== # |
| # =========================================================================== # |
| # Copyright (c) 2000-2012 YaBB (www.yabbforum.com) - All Rights Reserved. # |
| # Copyright (c) 2000-2016 YaBB (www.yabbforum.com) - All Rights Reserved. # |
| # Software by: The YaBB Development Team # |
| # Software by: The YaBB Development Team # |
| # with assistance from the YaBB community. # |
| # with assistance from the YaBB community. # |
| ############################################################################### |
| ############################################################################### |
| |
| |
| ########## Board Info ########## |
| ########## Board Info ########## |
| # Note: these settings must be properly changed for YaBB to work |
| # Note: these settings must be properly changed for YaBB to work |
| |
| |
| \$settings_file_version = "$YaBBversion"; # If not equal actual YaBBversion then the updating process is run through |
| \$settings_file_version = "$YaBBversion"; |
| |
| # If not equal actual YaBBversion then the updating process is run through |
| \%templateset = ( |
| \$yymycharset = '$yymycharset'; # character encoding (usually ISO-8859-1 for older forums) |
| $templateset); # Forum templates settings |
| # or 'UTF-8'; |
| |
| |
| |
| \%templateset = ($templateset); # Forum templates settings |
| |
| |
| |
| \$maintenance = $maintenance; # Set to 1 to enable Maintenance mode |
| |
| \$rememberbackup = $rememberbackup; # seconds past since last backup until alert is displayed |
| |
| \$maintenancetext = "\Q$maintenancetext\E"; # Admin-defined text for Maintenance mode |
| |
| |
| |
| \$guestaccess = $guestaccess; # Set to 0 to disallow guests from doing anything but login or register |
| |
| |
| |
| \$mbname = "\Q$mbname\E"; # The name of your YaBB forum |
| |
| \$forumstart = "\Q$forumstart\E"; # The start date of your YaBB Forum |
| |
| \$Cookie_Length = $Cookie_Length; # Default minutes to set login cookies to stay for |
| |
| \$cookieusername = "\Q$cookieusername\E"; # Name of the username cookie |
| |
| \$cookiepassword = "\Q$cookiepassword\E"; # Name of the password cookie |
| |
| \$cookiesession_name = "\Q$cookiesession_name\E"; # Name of the Session cookie |
| |
| \$cookietsort = "\Q$cookietsort\E"; # Name of the message Index sort cookie |
| |
| \$cookieview = "\Q$cookieview\E"; # Name of the Guest Message Limit cookie |
| |
| \$cookieviewtime = $cookieviewtime; # life time for Guest Message Limit cookie |
| |
| \$screenlogin = $screenlogin; # allow members to login using their screen name. |
| |
| |
| |
| \$regtype = $regtype; # 0 = registration closed (only admin can register), 1 = pre registration with admin approval, |
| |
| # 2 = pre registration and email activation, 3 = open registration |
| |
| \$RegAgree = $RegAgree; # 0 = Don't show registration agreement, 1 = Show registration agreement before registration form, 2 = Show registration agreement on registration form |
| |
| \$imp_email_check = $imp_email_check; # Set to 1 to enable improved e-mail check |
| |
| \$RegReasonSymbols = $RegReasonSymbols; # Maximum allowed symbols in User reason(s) for registering |
| |
| \$preregspan = $preregspan; # Time span in hours for users to account activation before cleanup |
| |
| \$pwstrengthmeter_scores = "\Q$pwstrengthmeter_scores\E"; # Password-Strength-Meter Scores |
| |
| \$pwstrengthmeter_common = "\Q$pwstrengthmeter_common\E"; # Password-Strength-Meter common words |
| |
| \$pwstrengthmeter_minchar = $pwstrengthmeter_minchar; # Password-Strength-Meter minimum characters |
| |
| \$emailpassword = $emailpassword; # 0 - instant registration. 1 - password emailed to new members |
| |
| \$emailnewpass = $emailnewpass; # Set to 1 to email a new password to members if they change their email address |
| |
| \$emailwelcome = $emailwelcome; # Set to 1 to email a welcome message to users even when you have mail password turned off |
| |
| \$name_cannot_be_userid = $name_cannot_be_userid; # Set to 1 to require users to have different usernames and display names |
| |
| \$birthday_on_reg = $birthday_on_reg; # Set to 0: don't ask for birthday on registration |
| |
| # 1: ask for the birthday, no input required |
| |
| # 2: ask for the birthday, input required |
| |
| |
| |
| \$gender_on_reg = $gender_on_reg; # 0: don't ask for gender on registration |
| |
| # 1: ask for gender, no input required |
| |
| # 2: ask for gender, input required |
| |
| \$nomailspammer = $nomailspammer; # 1: send deleted account email |
| |
| \$lang = "\Q$lang\E"; # Default Forum Language |
| |
| \$default_template = "\Q$default_template\E"; # Default Forum Template |
| |
| |
| |
| \$mailprog = "\Q$mailprog\E"; # Location of your sendmail program |
| |
| \$smtp_server = "\Q$smtp_server\E"; # Address of your SMTP-Server (for Net::SMTP::TLS, specify the port number with a ":<portnumber>" at the end) |
| |
| \$smtp_auth_required = $smtp_auth_required; # Set to 1 if the SMTP server requires Authorisation |
| |
| \$authuser = "\Q$authuser\E"; # Username for SMTP authorisation |
| |
| \$authpass = "\Q$authpass\E"; # Password for SMTP authorisation |
| |
| \$webmaster_email = "\Q$webmaster_email\E"; # Your email address. (eg: \$webmaster_email = q^admin\@host.com^;) |
| |
| \$mailtype = $mailtype; # Mail program to use: 0 = sendmail, 1 = SMTP, 2 = Net::SMTP, 3 = Net::SMTP::TLS |
| |
| |
| \$maintenance = $maintenance; # Set to 1 to enable Maintenance mode |
| \$UseHelp_Perms = $UseHelp_Perms; # Help Center: 1 == use permissions, 0 == don't use permissions |
| \$rememberbackup = $rememberbackup; # seconds past since last backup until alert is displayed |
| |
| \$maintenancetext = "\Q$maintenancetext\E"; # Admin-defined text for Maintenance mode |
| |
| |
| |
| \$guestaccess = $guestaccess; # Set to 0 to disallow guests from doing anything but login or register |
| |
| |
| |
| \$mbname = "\Q$mbname\E"; # The name of your YaBB forum |
| |
| \$forumstart = "\Q$forumstart\E"; # The start date of your YaBB Forum |
| |
| \$Cookie_Length = $Cookie_Length; # Default minutes to set login cookies to stay for |
| |
| \$cookieusername = "\Q$cookieusername\E"; # Name of the username cookie |
| |
| \$cookiepassword = "\Q$cookiepassword\E"; # Name of the password cookie |
| |
| \$cookiesession_name = "\Q$cookiesession_name\E"; # Name of the Session cookie |
| |
| |
| |
| \$regtype = $regtype; # 0 = registration closed (only admin can register), 1 = pre registration with admin approval, |
| |
| # 2 = pre registration and email activation, 3 = open registration |
| |
| \$RegAgree = $RegAgree; # Set to 1 to display the registration agreement when registering |
| |
| \$RegReasonSymbols = $RegReasonSymbols; # Maximum allowed symbols in User reason(s) for registering |
| |
| \$preregspan = $preregspan; # Time span in hours for users to account activation before cleanup |
| |
| \$pwstrengthmeter_scores = "\Q$pwstrengthmeter_scores\E"; # Password-Strength-Meter Scores |
| |
| \$pwstrengthmeter_common = "\Q$pwstrengthmeter_common\E"; # Password-Strength-Meter common words |
| |
| \$pwstrengthmeter_minchar = $pwstrengthmeter_minchar; # Password-Strength-Meter minimum characters |
| |
| \$emailpassword = $emailpassword; # 0 - instant registration. 1 - password emailed to new members |
| |
| \$emailnewpass = $emailnewpass; # Set to 1 to email a new password to members if they change their email address |
| |
| \$emailwelcome = $emailwelcome; # Set to 1 to email a welcome message to users even when you have mail password turned off |
| |
| \$name_cannot_be_userid = $name_cannot_be_userid; # Set to 1 to require users to have different usernames and display names |
| |
| \$birthday_on_reg = $birthday_on_reg; # Set to 0: don't ask for birthday on registration |
| |
| # 1: ask for the birthday, no input required |
| |
| # 2: ask for the birthday, input required |
| |
| |
| |
| \$gender_on_reg = $gender_on_reg; # 0: don't ask for gender on registration |
| |
| # 1: ask for gender, no input required |
| |
| # 2: ask for gender, input required |
| |
| \$nomailspammer = $nomailspammer; # 1: send deleted account email |
| |
| \$lang = "\Q$lang\E"; # Default Forum Language |
| |
| \$default_template = "\Q$default_template\E"; # Default Forum Template |
| |
| |
| |
| \$mailprog = "\Q$mailprog\E"; # Location of your sendmail program |
| |
| \$smtp_server = "\Q$smtp_server\E"; # Address of your SMTP-Server (for Net::SMTP::TLS, specify the port number with a ":<portnumber>" at the end) |
| |
| \$smtp_auth_required = $smtp_auth_required; # Set to 1 if the SMTP server requires Authorisation |
| |
| \$authuser = "\Q$authuser\E"; # Username for SMTP authorisation |
| |
| \$authpass = "\Q$authpass\E"; # Password for SMTP authorisation |
| |
| \$webmaster_email = "\Q$webmaster_email\E"; # Your email address. (eg: \$webmaster_email = q^admin\@host.com^;) |
| |
| \$mailtype = $mailtype; # Mail program to use: 0 = sendmail, 1 = SMTP, 2 = Net::SMTP, 3 = Net::SMTP::TLS |
| |
| |
| |
| \$UseHelp_Perms = $UseHelp_Perms; # Help Center: 1 == use permissions, 0 == don't use permissions |
| |
| |
| |
| ########## MemberGroups ########## |
| ########## MemberGroups ########## |
| |
| |
| $member_groups |
| $member_groups |
| \@nopostorder = qw(@nopostorder); # Order how "Post independent Member Groups" are displayed |
| \@nopostorder = qw(@nopostorder); # Order how "Post independent Member Groups" are displayed |
| |
| |
| ########## Layout ########## |
| ########## Layout ########## |
| |
| |
| \$MenuType = $MenuType; # 1 for text menu or anything else for images menu |
| \$MenuType = $MenuType; # 1 for text menu or anything else for images menu |
| \$profilebutton = $profilebutton; # 1 to show view profile button under post, or 0 for blank |
| \$profilebutton = $profilebutton; # 1 to show view profile button under post, or 0 for blank |
| \$usertools = $usertools; # Allow admin to hide the list of tools that show when clicking a userlink |
| \$threadtools = $threadtools; # Enable dropdown for post actions |
| \$allow_hide_email = $allow_hide_email; # Allow users to hide their email from public. Set 0 to disable |
| \$posttools = $posttools; # Enable dropdown for post actions |
| \$buddyListEnabled = $buddyListEnabled; # Enable Buddy List |
| \$usertools = $usertools; # Allow admin to hide the list of tools that show when clicking a userlink |
| \$addmemgroup_enabled = $addmemgroup_enabled; # Enable Users choose additional MemberGroups |
| \$allow_hide_email = $allow_hide_email; # Allow users to hide their email from public. Set 0 to disable |
| \$showlatestmember = $showlatestmember; # Set to 1 to display "Welcome Newest Member" on the Board Index |
| \$user_hide_avatars = $user_hide_avatars; # Allow users to hide Avatars in threads. Set 0 to disable |
| \$shownewsfader = $shownewsfader; # 1 to allow or 0 to disallow NewsFader javascript |
| \$user_hide_user_text = $user_hide_user_text; # Allow users to hide User Text in threads. Set 0 to disable |
| \$Show_RecentBar = $Show_RecentBar; # Set to 1 to display the Recent Post on Board Index |
| \$user_hide_img = $user_hide_img; # Allow users to hide Images in threads. Set 0 to disable |
| \$showmodify = $showmodify; # Set to 1 to display "Last modified: Realname - Date" under each message |
| \$user_hide_attach_img = $user_hide_attach_img; # Allow users to hide Attached Images in threads. Set 0 to disable |
| \$ShowBDescrip = $ShowBDescrip; # Set to 1 to display board descriptions on the topic (message) index for each board |
| \$user_hide_signat = $user_hide_signat; # Allow users to hide User Signatures in threads. Set 0 to disable |
| \$showuserpic = $showuserpic; # Set to 1 to display each member's picture in the message view (by the ICQ.. etc.) |
| \$user_hide_smilies_row = $user_hide_smilies_row; # Allow users to hide Smilies row below the Post Message-inputarea. Set 0 to disable |
| \$showusertext = $showusertext; # Set to 1 to display each member's personal text in the message view (by the ICQ.. etc.) |
| \$editGenderLimit = $editGenderLimit; # Set a limit on the amount of times that member's can edit their gender |
| \$showtopicviewers = $showtopicviewers; # Set to 1 to display members viewing a topic |
| \$editAgeLimit = $editAgeLimit; # Set a limit on the amount of times that member's can edit their birthdate |
| \$showtopicrepliers = $showtopicrepliers; # Set to 1 to display members replying to a topic |
| \$buddyListEnabled = $buddyListEnabled; # Enable Buddy List |
| \$showgenderimage = $showgenderimage; # Set to 1 to display each member's gender in the message view (by the ICQ.. etc.) |
| \$addmemgroup_enabled = $addmemgroup_enabled; # Enable Users choose additional MemberGroups |
| \$showyabbcbutt = $showyabbcbutt; # Set to 1 to display the yabbc buttons on Posting and IM Send Pages |
| \$showlatestmember = $showlatestmember; # Set to 1 to display "Welcome Newest Member" on the Board Index |
| \$nestedquotes = $nestedquotes; # Set to 1 to allow quotes within quotes (0 will filter out quotes within a quoted message) |
| \$shownewsfader = $shownewsfader; # 1 to allow or 0 to disallow NewsFader javascript |
| \$parseflash = $parseflash; # Set to 1 to parse the flash tag |
| \$Show_RecentBar = $Show_RecentBar; # Set to 1 to display the Recent Post on Board Index |
| \$enableclicklog = $enableclicklog; # Set to 1 to track stats in Clicklog (this may slow your board down) |
| \$showmodify = $showmodify; # Set to 1 to display "Last modified: Realname - Date" under each message |
| \$showimageinquote = $showimageinquote; # Set to 1 to shows images in quotes, 0 displays a link to the image |
| \$ShowBDescrip = $ShowBDescrip; # Set to 1 to display board descriptions on the topic (message) index for each board |
| |
| \$showuserpic = $showuserpic; # Set to 1 to display each member's avatar in the message view (by the ICQ.. etc.) |
| |
| \$showusertext = $showusertext; # Set to 1 to display each member's personal text in the message view (by the ICQ.. etc.) |
| |
| \$showtopicviewers = $showtopicviewers; # Set to 1 to display members viewing a topic |
| |
| \$showtopicrepliers = $showtopicrepliers; # Set to 1 to display members replying to a topic |
| |
| \$hide_signat_for_guests = $hide_signat_for_guests; # Set to 1 to hide all signatures for Guests (only Members can see them). |
| |
| \$showgenderimage = $showgenderimage; # Set to 1 to display each member's gender in the message view (by the ICQ.. etc.) |
| |
| \$showzodiac = $showzodiac; # Set to 1 to display each member's zodiac sign in view profile and message view |
| |
| \$showuserage = $showuserage; # Set to 1 to display each member's age in the message view |
| |
| \$showage = $showage; # Set to 1 to allow member to hide their age and birthyear (Except from the Administrator.) |
| |
| \$showregdate = $showregdate; # Set to 1 to show date of registration. |
| |
| \$showyabbcbutt = $showyabbcbutt; # Set to 1 to display the yabbc buttons on Posting and IM Send Pages |
| |
| \$nestedquotes = $nestedquotes; # Set to 1 to allow quotes within quotes (0 will filter out quotes within a quoted message) |
| |
| \$parseflash = $parseflash; # Set to 1 to parse the flash tag |
| |
| \$enableclicklog = $enableclicklog; # Set to 1 to track stats in Clicklog (this may slow your board down) |
| |
| \$showimageinquote = $showimageinquote; # Set to 1 to shows images in quotes, 0 displays a link to the image |
| |
| \$enabletopichover = $enabletopichover; # Set to 1 to enable Topic Hover on Message Index |
| |
| \$staff_reason = $staff_reason; # Set to 1 to enable Reason for Editing for Staff |
| |
| \$user_reason = $user_reason; # Set to 1 to enable Reason for Editing for users |
| |
| |
| \@pallist = ($pallist); # color settings of the palette |
| \@pallist = ($pallist); # color settings of the palette |
| |
| |
| ########## Feature Settings ########## |
| ########## Feature Settings ########## |
| |
| |
| \$enable_spell_check = $enable_spell_check; # Set to 1 if you want to enable SpellChecker. By doing this you agree to the terms of license under that googiespell runs. See: http://orangoo.com/labs/GoogieSpell/License/ and /yabbfiles/googiespell/GPL.txt |
| \$enable_spell_check = $enable_spell_check; # Set to 1 if you want to enable SpellChecker. By doing this you agree to the terms of license under which googiespell runs. See: /yabbfiles/googiespell/GPL.txt and http://creativecommons.org/licenses/by-nc-sa/3.0/ |
| \$enable_ubbc = $enable_ubbc; # Set to 1 if you want to enable UBBC (Uniform Bulletin Board Code) |
| \$enable_ubbc = $enable_ubbc; # Set to 1 if you want to enable UBBC (Uniform Bulletin Board Code) |
| \$enable_news = $enable_news; # Set to 1 to turn news on, or 0 to set news off |
| \$enable_news = $enable_news; # Set to 1 to turn news on, or 0 to set news off |
| \$allowpics = $allowpics; # set to 1 to allow members to choose avatars in their profile |
| \$allowpics = $allowpics; # set to 1 to allow members to choose avatars in their profile |
| \$upload_useravatar = $upload_useravatar; # set to 1 to allow members to upload avatars for their profile |
| \$upload_useravatar = $upload_useravatar; # set to 1 to allow members to upload avatars for their profile |
| \$upload_avatargroup = "\Q$upload_avatargroup\E"; # membergroups allowed to upload avatars for their profile, '' == all members |
| \$upload_avatargroup = "\Q$upload_avatargroup\E"; # membergroups allowed to upload avatars for their profile, '' == all members |
| \$avatar_limit = $avatar_limit; # set to the maximum size of the uploaded avatar, 0 == no limit |
| \$avatar_limit = $avatar_limit; # set to the maximum size of the uploaded avatar, 0 == no limit |
| \$avatar_dirlimit = $avatar_dirlimit; # set to the maximum size of the upload avatar directory, 0 == no limit |
| \$avatar_dirlimit = $avatar_dirlimit; # set to the maximum size of the upload avatar directory, 0 == no limit |
| |
| \$default_avatar = $default_avatar; # Set to 1 to show a default avatar if the member hasn't added a picture |
| \$enable_guestposting = $enable_guestposting; # Set to 0 if do not allow 1 is allow. |
| \$default_userpic = "\Q$default_userpic\E"; # Set the file name for the default avatar |
| \$guest_media_disallowed = $guest_media_disallowed; # disallow browsing guests to see media files or have clickable auto linked urls in messages. |
| |
| \$enable_guestlanguage = $enable_guestlanguage; # allow browsing guests to select their language - requires more than one language pack! - Set to 0 if do not allow 1 is allow. |
| \$enable_guestposting = $enable_guestposting; # Set to 0 if do not allow 1 is allow. |
| |
| \$guest_media_disallowed = $guest_media_disallowed; # disallow browsing guests to see media files or have clickable auto linked urls in messages. |
| \$enable_notifications = $enable_notifications; # - Allow e-mail notification for boards/threads listed in "My Notifications" => value == 1 |
| \$enable_guestlanguage = $enable_guestlanguage; # allow browsing guests to select their language - requires more than one language pack! - Set to 0 if do not allow 1 is allow. |
| # - Allow e-mail notification when new PM comes in => value == 2 |
| \$enable_guest_view_limit = $enable_guest_view_limit; # Set to 1 to enable guest topic view limit. |
| # - value == 0 => both disabled | value == 3 => both enabled |
| \$guest_view_limit = $guest_view_limit; # Set the amount of topics guests are allowed to view before they are encouraged to register. |
| |
| \$guest_view_limit_block = $guest_view_limit_block ; # Set to 1 to block guests viewing topics if they reach the topic view limit. Set to 0 to display a message at the top of the message view. |
| \$NewNotificationAlert = $NewNotificationAlert; # enable notification alerts (popup) for new notifications |
| |
| \$autolinkurls = $autolinkurls; # Set to 1 to turn URLs into links, or 0 for no auto-linking. |
| \$enable_notifications = $enable_notifications; # - Allow e-mail notification for boards/threads listed in "My Notifications" => value == 1 |
| |
| # - Allow e-mail notification when new PM comes in => value == 2 |
| \$forumnumberformat = $forumnumberformat; # Select your preferred output Format for Numbers |
| # - value == 0 => both disabled | value == 3 => both enabled |
| \$timeselected = $timeselected; # Select your preferred output Format of Time and Date |
| |
| \$timecorrection = $timecorrection; # Set time correction for server time in seconds |
| \$NewNotificationAlert = $NewNotificationAlert; # enable notification alerts (popup) for new notifications |
| \$timeoffset = "\Q$timeoffset\E"; # Time Offset to GMT/UTC (0 for GMT/UTC) |
| \$autolinkurls = $autolinkurls; # Set to 1 to turn URLs into links, or 0 for no auto-linking. |
| \$dstoffset = $dstoffset; # Time Offset (for daylight savings time, 0 to disable DST) |
| |
| \$dynamic_clock = $dynamic_clock; # Set to a value enables the dynamic clock at the top of the page |
| \$forumnumberformat = $forumnumberformat; # Select your preferred output Format for Numbers |
| \$TopAmmount = $TopAmmount; # No. of top posters to display on the top members list |
| \$timeselected = $timeselected; # Select your preferred output Format of Time and Date |
| \$maxdisplay = $maxdisplay; # Maximum of topics to display |
| \$timecorrection = $timecorrection; # Set time correction for server time in seconds |
| \$maxfavs = $maxfavs; # Maximum of favorite topics to save in a profile |
| \$enabletz = $enabletz; # Allow for timezone selection |
| \$maxrecentdisplay = $maxrecentdisplay; # Maximum of topics to display on recent posts by a user (-1 to disable) |
| \$default_tz = "$default_tz"; # default forum timezone |
| \$maxsearchdisplay = $maxsearchdisplay; # Maximum of messages to display in a search query (-1 to disable search) |
| \$timeoffset = "\Q$timeoffset\E"; # Time Offset to GMT/UTC (0 for GMT/UTC) |
| \$maxmessagedisplay = $maxmessagedisplay; # Maximum of messages to display |
| \$dstoffset = $dstoffset; # Time Offset (for daylight savings time, 0 to disable DST) |
| \$showpageall = $showpageall; # Disable or Enable show All on page selectors |
| \$dynamic_clock = $dynamic_clock; # Set to a value enables the dynamic clock at the top of the page |
| \$checkallcaps = $checkallcaps; # Set to 0 to allow ALL CAPS in posts (subject and message) or set to a value > 0 to open a JS-alert if more characters in ALL CAPS were there. |
| \$TopAmmount = $TopAmmount; # No. of top posters to display on the top members list |
| \$set_subjectMaxLength = $set_subjectMaxLength; # Maximum Allowed Characters in a Posts Subject |
| \$maxdisplay = $maxdisplay; # Maximum of topics to display |
| \$MaxMessLen = $MaxMessLen; # Maximum Allowed Characters in a Posts |
| \$maxfavs = $maxfavs; # Maximum of favorite topics to save in a profile |
| \$honeypot = $honeypot; # Set to 1 to activate Honeypot spam deterrent |
| \$maxrecentdisplay = $maxrecentdisplay; # Maximum of posts to display on recent posts by a user (-1 to disable) |
| \$spamfruits = $spamfruits; # Set to 1 to activate SpamFruits spam deterrent |
| \$maxrecentdisplay_t = $maxrecentdisplay_t; # Maximum of topics to display on recent topics (-1 to disable) |
| \$speedpostdetection = $speedpostdetection; # Set to 1 to detect speedposters and delay their spam actions |
| \$maxsearchdisplay = $maxsearchdisplay; # Maximum of messages to display in a search query (-1 to disable search) |
| \$spd_detention_time = $spd_detention_time; # Time in seconds before a speedposting ban is lifted again |
| \$maxmessagedisplay = $maxmessagedisplay; # Maximum of messages to display |
| \$min_post_speed = $min_post_speed; # Minimum time in seconds between entering a post form and submitting a post |
| \$showpageall = $showpageall; # Disable or Enable show All on page selectors |
| \$minlinkpost = $minlinkpost; # Minimum amount of posts a member needs to post links and images |
| \$checkallcaps = $checkallcaps; # Set to 0 to allow ALL CAPS in posts (subject and message) or set to a value > 0 to open a JS-alert if more characters in ALL CAPS were there. |
| \$minlinksig = $minlinksig; # Minimum amount of posts a member needs to create links and images in signature |
| \$set_subjectMaxLength = $set_subjectMaxLength; # Maximum Allowed Characters in a Posts Subject |
| \$minlinkweb = $minlinkweb; # Minimum amount of posts a member needs to link to a website in their profile |
| \$MaxMessLen = $MaxMessLen; # Maximum Allowed Characters in a Posts |
| \$post_speed_count = $post_speed_count; # Maximum amount of abuses befor a user gets banned |
| \$AdMaxMessLen = $AdMaxMessLen; # Maximum Allowed Characters in a Posts for Admins |
| \$fontsizemin = $fontsizemin; # Minimum Allowed Font height in pixels |
| \$MaxIMMessLen = $MaxIMMessLen; # Maximum Allowed Characters in a PM |
| \$fontsizemax = $fontsizemax; # Maximum Allowed Font height in pixels |
| \$AdMaxIMMessLen = $AdMaxIMMessLen; # Maximum Allowed Characters in a PM for Admins |
| \$MaxSigLen = $MaxSigLen; # Maximum Allowed Characters in Signatures |
| \$MaxCalMessLen = $MaxCalMessLen; # Maximum Allowed Characters in a Cal event |
| \$ClickLogTime = $ClickLogTime; # Time in minutes to log every click to your forum (longer time means larger log file size) |
| \$AdMaxCalMessLen = $AdMaxCalMessLen; # Maximum Allowed Characters in a Cal Event for Admins |
| \$max_log_days_old = $max_log_days_old; # If an entry in the user's log is older than ... days remove it |
| \$calsplit = $calsplit; # Maximum number to be shown on page without breaking into months. |
| |
| \$honeypot = $honeypot; # Set to 1 to activate Honeypot spam deterrent |
| \$maxsteps = $maxsteps; # Number of steps to take to change from start color to endcolor |
| \$spamfruits = $spamfruits; # Set to 1 to activate SpamFruits spam deterrent |
| \$stepdelay = $stepdelay; # Time in miliseconds of a single step |
| \$min_reg_time = $min_reg_time; # Minimum amount of time to be spent filling out the registration form |
| \$fadelinks = $fadelinks; # Fade links as well as text? |
| \$speedpostdetection = $speedpostdetection; # Set to 1 to detect speedposters and delay their spam actions |
| |
| \$spd_detention_time = $spd_detention_time; # Time in seconds before a speedposting ban is lifted again |
| \$defaultusertxt = "\Q$defaultusertxt\E"; # The dafault usertext visible in users posts |
| \$min_post_speed = $min_post_speed; # Minimum time in seconds between entering a post form and submitting a post |
| \$timeout = $timeout; # Minimum time between 2 postings from the same IP |
| \$minlinkpost = $minlinkpost; # Minimum amount of posts a member needs to post links and images |
| \$HotTopic = $HotTopic; # Number of posts needed in a topic for it to be classed as "Hot" |
| \$minlinksig = $minlinksig; # Minimum amount of posts a member needs to create links and images in signature |
| \$VeryHotTopic = $VeryHotTopic; # Number of posts needed in a topic for it to be classed as "Very Hot" |
| \$minlinkweb = $minlinkweb; # Minimum amount of posts a member needs to link to a website in their profile |
| |
| \$post_speed_count = $post_speed_count; # Maximum amount of abuses before a user gets banned |
| |
| \$fontsizemin = $fontsizemin; # Minimum Allowed Font height in pixels |
| |
| \$fontsizemax = $fontsizemax; # Maximum Allowed Font height in pixels |
| |
| \$MaxSigLen = $MaxSigLen; # Maximum Allowed Characters in Signatures |
| |
| \$ClickLogTime = $ClickLogTime; # Time in minutes to log every click to your forum (longer time means larger log file size) |
| |
| \$max_log_days_old = $max_log_days_old; # If an entry in the user's log is older than ... days remove it |
| |
| |
| |
| \$maxsteps = $maxsteps; # Number of steps to take to change from start color to endcolor |
| |
| \$stepdelay = $stepdelay; # Time in milliseconds of a single step |
| |
| \$fadelinks = $fadelinks; # Fade links as well as text? |
| |
| |
| |
| \$defaultusertxt = "\Q$defaultusertxt\E"; # The default user text visible in users posts |
| |
| \$timeout = $timeout; # Minimum time between 2 postings from the same IP |
| |
| \$HotTopic = $HotTopic; # Number of posts needed in a topic for it to be classed as "Hot" |
| |
| \$VeryHotTopic = $VeryHotTopic; # Number of posts needed in a topic for it to be classed as "Very Hot" |
| |
| |
| \$barmaxdepend = $barmaxdepend; # Set to 1 to let bar-max-length depend on top poster or 0 to depend on a number of your choise |
| \$barmaxdepend = $barmaxdepend; # Set to 1 to let bar-max-length depend on top poster or 0 to depend on a number of your choice |
| \$barmaxnumb = $barmaxnumb; # Select number of post for max. bar-length in memberlist |
| \$barmaxnumb = $barmaxnumb; # Select number of post for max. bar-length in memberlist |
| \$defaultml = "\Q$defaultml\E"; |
| \$defaultml = "\Q$defaultml\E"; |
| |
| |
| \$ML_Allowed = $ML_Allowed; # allow browse MemberList |
| \$ML_Allowed = $ML_Allowed; # allow browse MemberList |
| |
| \$showuserpicml = $showuserpicml; # Set to 1 to display each member's avatar in the member list |
| |
| \$group_stars_ml = $group_stars_ml; # Set to 1 to display group stars in the member list |
| |
| |
| ########## Quick Reply configuration ########## |
| ########## Quick Reply configuration ########## |
| |
| |
| \$enable_quickpost = $enable_quickpost; # Set to 1 if you want to enable the quick post box |
| \$enable_quickpost = $enable_quickpost; # Set to 1 if you want to enable the quick post box |
| \$enable_quickreply = $enable_quickreply; # Set to 1 if you want to enable the quick reply box |
| \$enable_quickreply = $enable_quickreply; # Set to 1 if you want to enable the quick reply box |
| \$enable_quickjump = $enable_quickjump; # Set to 1 if you want to enable the jump to quick reply box |
| \$enable_quickjump = $enable_quickjump; # Set to 1 if you want to enable the jump to quick reply box |
| \$enable_markquote = $enable_markquote; # Set to 1 if you want to enable the mark"e feature |
| \$enable_markquote = $enable_markquote; # Set to 1 if you want to enable the mark"e feature |
| \$quick_quotelength = $quick_quotelength; # Set the max length for Quick Quotes |
| \$quick_quotelength = $quick_quotelength; # Set the max length for Quick Quotes |
| \$enable_quoteuser = $enable_quoteuser; # Set to 1 if you want to enable userquote |
| \$enable_quoteuser = $enable_quoteuser; # Set to 1 if you want to enable userquote |
| \$quoteuser_color = "\Q$quoteuser_color\E"; # Set the default color of @ in userquote |
| \$quoteuser_color = "\Q$quoteuser_color\E"; # Set the default color of @ in userquote |
| |
| |
| ########## MemberPic Settings ########## |
| ########## MemberPic Settings ########## |
| |
| |
| \$max_avatar_width = $max_avatar_width; # Set maximum pixel width to which the selfselected userpics are resized, 0 disables this limit |
| \$max_avatar_width = $max_avatar_width; # Set maximum pixel width to which the self-selected avatars are resized, 0 disables this limit |
| \$max_avatar_height = $max_avatar_height; # Set maximum pixel height to which the selfselected userpics are resized, 0 disables this limit |
| \$max_avatar_height = $max_avatar_height; # Set maximum pixel height to which the self-selected avatars are resized, 0 disables this limit |
| \$fix_avatar_img_size = $fix_avatar_img_size; # Set to 1 disable the image resize feature and sets the image size to the max_... values. If one of the max_... values is 0 the image is shown in his proportions to the other value. If both are 0 the image is shown at his original size. |
| \$fix_avatar_img_size = $fix_avatar_img_size; # Set to 1 disable the image resize feature and sets the image size to the max_... values. If one of the max_... values is 0 the image is shown in its proportions to the other value. If both are 0 the image is shown at its original size. |
| \$max_post_img_width = $max_post_img_width; # Set maximum pixel width for images, 0 disables this limit |
| \$max_avatarml_width = $max_avatarml_width; # Set maximum pixel width to which the self-selected avatars in member list are resized, 0 disables this limit |
| \$max_post_img_height = $max_post_img_height; # Set maximum pixel height for images, 0 disables this limit |
| \$max_avatarml_height = $max_avatarml_height; # Set maximum pixel height to which the self-selected avatars in member list are resized, 0 disables this limit |
| \$fix_post_img_size = $fix_post_img_size; # Set to 1 disable the image resize feature and sets the image size to the max_... values. If one of the max_... values is 0 the image is shown in his proportions to the other value. If both are 0 the image is shown at his original size. |
| \$fix_avatarml_img_size = $fix_avatarml_img_size; # Set to 1 disable the image resize feature and sets the image size to the max_... values. If one of the max_... values is 0 the image is shown in its proportions to the other value. If both are 0 the image is shown at its original size. |
| \$max_signat_img_width = $max_signat_img_width; # Set maximum pixel width for images in the signature, 0 disables this limit |
| \$max_post_img_width = $max_post_img_width; # Set maximum pixel width for images, 0 disables this limit |
| \$max_signat_img_height = $max_signat_img_height; # Set maximum pixel height for images in the signature, 0 disables this limit |
| \$max_post_img_height = $max_post_img_height; # Set maximum pixel height for images, 0 disables this limit |
| \$fix_signat_img_size = $fix_signat_img_size; # Set to 1 disable the image resize feature and sets the image size to the max_... values. If one of the max_... values is 0 the image is shown in his proportions to the other value. If both are 0 the image is shown at his original size. |
| \$fix_post_img_size = $fix_post_img_size; # Set to 1 disable the image resize feature and sets the image size to the max_... values. If one of the max_... values is 0 the image is shown in its proportions to the other value. If both are 0 the image is shown at its original size. |
| \$max_attach_img_width = $max_attach_img_width; # Set maximum pixel width for attached images, 0 disables this limit |
| \$max_signat_img_width = $max_signat_img_width; # Set maximum pixel width for images in the signature, 0 disables this limit |
| \$max_attach_img_height = $max_attach_img_height; # Set maximum pixel height for attached images, 0 disables this limit |
| \$max_signat_img_height = $max_signat_img_height; # Set maximum pixel height for images in the signature, 0 disables this limit |
| \$fix_attach_img_size = $fix_attach_img_size; # Set to 1 disable the image resize feature and sets the image size to the max_... values. If one of the max_... values is 0 the image is shown in his proportions to the other value. If both are 0 the image is shown at his original size. |
| \$fix_signat_img_size = $fix_signat_img_size; # Set to 1 disable the image resize feature and sets the image size to the max_... values. If one of the max_... values is 0 the image is shown in its proportions to the other value. If both are 0 the image is shown at its original size. |
| \$img_greybox = $img_greybox; # Set to 0 to disable "greybox" (each image is shown in a new window) |
| \$max_attach_img_width = $max_attach_img_width; # Set maximum pixel width for attached images, 0 disables this limit |
| # Set to 1 to enable the attachment and post image "greybox" (one image/page) |
| \$max_attach_img_height = $max_attach_img_height; # Set maximum pixel height for attached images, 0 disables this limit |
| # Set to 2 to enable the attachment and post image "greybox" => attachmet images: (all images/page), post images: (one image/page) |
| \$fix_attach_img_size = $fix_attach_img_size; # Set to 1 disable the image resize feature and sets the image size to the max_... values. If one of the max_... values is 0 the image is shown in its proportions to the other value. If both are 0 the image is shown at its original size. |
| |
| \$max_brd_img_width = $max_brd_img_width; # Set maximum pixel width to which the Board Images are resized, 0 disables this limit |
| |
| \$max_brd_img_height = $max_brd_img_height; # Set maximum pixel height to which the Board Images are resized, 0 disables this limit |
| |
| \$fix_brd_img_size = $fix_brd_img_size; |
| |
| \$img_greybox = $img_greybox; # Set to 0 to disable "greybox" (each image is shown in a new window) |
| |
| # Set to 1 to enable the attachment and post image "greybox" (one image/page) |
| |
| # Set to 2 to enable the attachment and post image "greybox" => attachment images: (all images/page), post images: (one image/page) |
| |
| |
| ########## Extended Profiles ########## |
| ########## Extended Profiles ########## |
| |
| |
| \$extendedprofiles = $extendedprofiles; # Set to 1 to enabled 'Extended Profiles'. Turn it off (0) to save server load. |
| \$extendedprofiles = $extendedprofiles; # Set to 1 to enabled 'Extended Profiles'. Turn it off (0) to save server load. |
| \@ext_prof_order = ($ext_prof_order); # Order of the extended profile fields. |
| \@ext_prof_order = ($ext_prof_order); # Order of the extended profile fields. |
| \@ext_prof_fields = ( |
| \@ext_prof_fields = ( |
| $ext_prof_fields |
| $ext_prof_fields |
| ); # Settings of the extended profiles fields. |
| ); # Settings of the extended profiles fields. |
| |
| |
| |
| ###################################################################### |
| |
| # Event Calendar # |
| |
| ###################################################################### |
| |
| |
| |
| ########## Standard Calendar Setting ########## |
| |
| \$Show_EventCal = $Show_EventCal; |
| |
| \$Show_EventButton = $Show_EventButton; |
| |
| \$Show_EventBirthdays = $Show_EventBirthdays; |
| |
| \$Show_MiniCalIcons = $Show_MiniCalIcons; |
| |
| \$ShowSunday = $ShowSunday; |
| |
| \$Show_ColorLinks = $Show_ColorLinks; |
| |
| \$No_ShortUbbc = $No_ShortUbbc; |
| |
| \$Event_TodayColor = "$Event_TodayColor"; |
| |
| \$Show_caltoday = $Show_caltoday; |
| |
| \$Delete_EventsUntil = $Delete_EventsUntil; |
| |
| \$CalShortEvent = $CalShortEvent; |
| |
| \$CalEventPerms = qq~$CalEventPerms~; |
| |
| \$CalEventMods = qq~$CalEventMods~; |
| |
| \$CalEventPrivate = $CalEventPrivate; |
| |
| \$CalEventNoName = $CalEventNoName; |
| |
| \$Scroll_Events = $Scroll_Events; |
| |
| \$DisplayCalEvents = $DisplayCalEvents; |
| |
| \$DisplayEvents = $DisplayEvents; |
| |
| |
| |
| ########## Birthdaylist Setting ########## |
| |
| \$Show_BirthdaysList = $Show_BirthdaysList; |
| |
| \$Show_BirthdayButton = $Show_BirthdayButton; |
| |
| \$Show_BirthdayDate = $Show_BirthdayDate; |
| |
| \$Show_BdColorLinks = $Show_BdColorLinks; |
| |
| \$Show_BdStarsign = $Show_BdStarsign; |
| |
| |
| |
| ########## Social Bookmarks settings ########## |
| |
| \$en_bookmarks = $en_bookmarks; # Enable Social Bookmarks |
| |
| \$bm_subcut = $bm_subcut; # Maximum characters in subject |
| |
| \$bm_boards = "\Q$bm_boards\E"; # Select the boards which Social Bookmarks will be shown in |
| |
| |
| ########## File Settings ########## |
| ########## File Settings ########## |
| |
| |
| \$enable_quota = $enable_quota; # Set to 1 to enable free HOST size check with command 'quota' on every pageview |
| \$checkspace = $checkspace; # Set to 1 to enable any freespace checking (should remain disabled on Windows/IIS servers) |
| \$hostusername = "\Q$hostusername\E"; # Username on the above host HDD |
| \$enable_quota = $enable_quota; # Set to 1 to enable free HOST size check with command 'quota' on every pageview |
| \$findfile_time = $findfile_time; # Used HOST size check with 'find' every ... minutes |
| \$hostusername = "\Q$hostusername\E"; # Username on the above host HDD |
| \$findfile_root = "\Q$findfile_root\E"; # Used HOST size check with 'find' in this folder -r |
| \$findfile_time = $findfile_time; # Used HOST size check with 'find' every ... minutes |
| \$findfile_maxsize = $findfile_maxsize; # Maximum size in KB the above folder is allowed to store |
| \$findfile_root = "\Q$findfile_root\E"; # Used HOST size check with 'find' in this folder -r |
| \$findfile_space = "\Q$findfile_space\E"; # dynamically inserted available space on the user account and timestamp of the last check |
| \$findfile_maxsize = $findfile_maxsize; # Maximum size in KB the above folder is allowed to store |
| \$enable_freespace_check = $enable_freespace_check; # Set to 1 to enable the free DISK space check on every pageview |
| \$findfile_space = "\Q$findfile_space\E"; # dynamically inserted available space on the user account and timestamp of the last check |
| |
| \$enable_freespace_check = $enable_freespace_check; # Set to 1 to enable the free DISK space check on every pageview |
| \$gzcomp = $gzcomp; # GZip compression: 0 = No Compression, 1 = External gzip, 2 = Zlib::Compress |
| |
| \$gzforce = $gzforce; # Don't try to check whether browser supports GZip |
| \$gzcomp = $gzcomp; # GZip compression: 0 = No Compression, 1 = External gzip, 2 = Zlib::Compress |
| \$cachebehaviour = $cachebehaviour; # Browser Cache Control: 0 = No Cache must revalidate, 1 = Allow Caching |
| \$gzforce = $gzforce; # Don't try to check whether browser supports GZip |
| \$use_flock = $use_flock; # Set to 0 if your server doesn't support file locking, 1 for Unix/Linux and WinNT and 2 for Windows 95/98/ME |
| \$cachebehaviour = $cachebehaviour; # Browser Cache Control: 0 = No Cache must revalidate, 1 = Allow Caching |
| |
| \$use_flock = $use_flock; # Set to 0 if your server doesn't support file locking, 1 for Unix/Linux and WinNT and 2 for Windows 95/98/ME |
| \$faketruncation = $faketruncation; # Enable this option only if YaBB fails with the error: |
| |
| # "truncate() function not supported on this platform." |
| \$faketruncation = $faketruncation; # Enable this option only if YaBB fails with the error: |
| # 0 to disable, 1 to enable. |
| # "truncate() function not supported on this platform." |
| |
| # 0 to disable, 1 to enable. |
| |
| |
| |
| \$debug = $debug; # If set to 1 debug info is added to the template. Tag in template is {yabb debug} |
| |
| |
| |
| ########## Search Settings ########## |
| |
| \$enableguestsearch = $enableguestsearch; # Set to 1 to enable guests access to advanced search. |
| |
| \$enableguestquicksearch = $enableguestquicksearch; # Set to 1 to enable guests access to quick search. |
| |
| \$mgqcksearch = "\Q$mgqcksearch\E"; |
| |
| \$mgadvsearch = "\Q$mgadvsearch\E"; |
| |
| \$qcksearchtype = "\Q$qcksearchtype\E"; |
| |
| \$qckage = "\Q$qckage\E"; |
| |
| |
| \$debug = $debug; # If set to 1 debug info is added to the template. Tag in template is {yabb debug} |
| |
| ########## Anti-spam Question Settings ########## |
| ########## Anti-spam Question Settings ########## |
| |
| |
| \$en_spam_questions = $en_spam_questions; # Set to 1 to enable Anti-spam Questions |
| \$en_spam_questions = $en_spam_questions; # Set to 1 to enable Anti-spam Questions on registration |
| |
| \$spam_questions_send = $spam_questions_send; # Set to 1 to enable Anti-spam Questions on forgot password and send topic |
| |
| \$spam_questions_gp = $spam_questions_gp; # Set to 1 to enable Anti-spam Questions for guest posting, guest broadcast message and guest alert moderator |
| \$spam_questions_case = $spam_questions_case; # Set to 1 to enable case-sensitive answers |
| \$spam_questions_case = $spam_questions_case; # Set to 1 to enable case-sensitive answers |
| |
| |
| ############################################################################### |
| ############################################################################### |
| # Advanced Settings (old AdvSettings.txt) # |
| # Advanced Settings # |
| ############################################################################### |
| ############################################################################### |
| |
| |
| ########## RSS Settings ########## |
| ########## RSS Settings ########## |
| |
| |
| \$rss_disabled = $rss_disabled; # Set to 1 to disable the RSS feed |
| \$rss_disabled = $rss_disabled; # Set to 1 to disable the RSS feed |
| \$rss_limit = $rss_limit; # Maximum number of topics in the feed |
| \$rss_limit = $rss_limit; # Maximum number of topics in the feed |
| \$rss_message = $rss_message; # Message to display in the feed |
| \$rss_message = $rss_message; # Message to display in the feed |
| # 0: None |
| # 0: None |
| # 1: Latest Post |
| # 1: Latest Post |
| # 2: Original Post in the topic |
| # 2: Original Post in the topic |
| \$showauthor = $showauthor; # Show author name |
| \$showauthor = $showauthor; # Show author name |
| \$showdate = $showdate; # Show post date |
| \$rssemail = '$rssemail'; # default email if author email not shown |
| |
| \$showdate = $showdate; # Show post date |
| |
| |
| ########## New Member Notification Settings ########## |
| ########## New Member Notification Settings ########## |
| |
| |
| \$new_member_notification = $new_member_notification; # Set to 1 to enable the new member notification |
| \$new_member_notification = $new_member_notification; # Set to 1 to enable the new member notification |
| \$new_member_notification_mail = "\Q$new_member_notification_mail\E"; # Your "New Member Notification"-email address. |
| \$new_member_notification_mail = "\Q$new_member_notification_mail\E"; # Your "New Member Notification"-email address. |
| |
| |
| \$sendtopicmail = $sendtopicmail; # Set to 0 for send NO topic email to friend |
| \$sendtopicmail = $sendtopicmail; # Set to 0 for send NO topic email to friend |
| # Set to 1 to send topic email to friend via YaBB |
| # Set to 1 to send topic email to friend via YaBB |
| # Set to 2 to send topic email to friend via user program |
| # Set to 2 to send topic email to friend via user program |
| # Set to 3 to let user decide between 1 and 2 |
| # Set to 3 to let user decide between 1 and 2 |
| |
| |
| ########## In-Thread Multi Delete ########## |
| ########## In-Thread Multi Delete ########## |
| |
| |
| \$mdadmin = $mdadmin; |
| \$mdadmin = $mdadmin; |
| \$mdglobal = $mdglobal; |
| \$mdglobal = $mdglobal; |
| |
| \$mdfmod = $mdfmod; |
| \$mdmod = $mdmod; |
| \$mdmod = $mdmod; |
| \$adminbin = $adminbin; # Skip recycle bin step for admins and delete directly |
| \$adminbin = $adminbin; # Skip recycle bin step for admins and delete directly |
| |
| |
| ########## Moderation Update ########## |
| ########## Moderation Update ########## |
| |
| |
| \$adminview = $adminview; # Multi-admin settings for Administrators: 0=none, 1=icons 2=single checkbox 3=multiple checkboxes |
| \$adminview = $adminview; # Multi-admin settings for Administrators: 0=none, 1=icons 2=single checkbox 3=multiple checkboxes |
| \$gmodview = $gmodview; # Multi-admin settings for Global Moderators: 0=none, 1=icons 2=single checkbox 3=multiple checkboxes |
| \$gmodview = $gmodview; # Multi-admin settings for Global Moderators: 0=none, 1=icons 2=single checkbox 3=multiple checkboxes |
| \$modview = $modview; # Multi-admin settings for Moderators: 0=none, 1=icons 2=single checkbox 3=multiple checkboxes |
| \$fmodview = $fmodview; # Multi-admin settings for Mid Moderators: 0=none, 1=icons 2=single checkbox 3=multiple checkboxes |
| |
| \$modview = $modview; # Multi-admin settings for Moderators: 0=none, 1=icons 2=single checkbox 3=multiple checkboxes |
| |
| |
| ########## Advanced Memberview Plus ########## |
| ########## Advanced Memberview Plus ########## |
| |
| |
| \$showallgroups = $showallgroups; |
| \$showallgroups = $showallgroups; |
| \$OnlineLogTime = $OnlineLogTime; # Time in minutes before Users are removed from the Online Log |
| \$OnlineLogTime = $OnlineLogTime; # Time in minutes before Users are removed from the Online Log |
| \$lastonlineinlink = $lastonlineinlink; # Show "Last online X days and XX:XX:XX hours ago." to all members == 1 |
| \$lastonlineinlink = $lastonlineinlink; # Show "Last online X days and XX:XX:XX hours ago." to all members == 1 |
| |
| |
| ########## Polls ########## |
| ########## Polls ########## |
| |
| |
| \$numpolloptions = $numpolloptions; # Number of poll options |
| \$numpolloptions = $numpolloptions; # Number of poll options |
| \$maxpq = $maxpq; # Maximum Allowed Characters in a Poll Qestion? |
| \$maxpq = $maxpq; # Maximum Allowed Characters in a Poll Qestion? |
| \$maxpo = $maxpo; # Maximum Allowed Characters in a Poll Option? |
| \$maxpo = $maxpo; # Maximum Allowed Characters in a Poll Option? |
| \$maxpc = $maxpc; # Maximum Allowed Characters in a Poll Comment? |
| \$maxpc = $maxpc; # Maximum Allowed Characters in a Poll Comment? |
| \$useraddpoll = $useraddpoll; # Allow users to add polls to existing threads? (1 = yes) |
| \$useraddpoll = $useraddpoll; # Allow users to add polls to existing threads? (1 = yes) |
| \$ubbcpolls = $ubbcpolls; # Allow UBBC tags and smilies in polls? (1 = yes) |
| \$ubbcpolls = $ubbcpolls; # Allow UBBC tags and smilies in polls? (1 = yes) |
| |
| |
| ########## My Center and Private Messaging Features ########## |
| ########## My Center and Personal Messaging Features ########## |
| |
| |
| \$PM_level = $PM_level; # minimum user level for private messaging: 0 = off, 1 = members, 2 = mods, 3 = gmod |
| \$PM_level = $PM_level; # minimum user level for private messaging: 0 = off, 1 = members, 2 = mods, 3 = gmod |
| \$PMenableGuestButton = $PMenableGuestButton; # enable 'pm to admin' for guests? 1=yes, 0=no. Appears on the general menu instead of 'my center' |
| \$PMenableGuestButton = $PMenableGuestButton; # enable 'pm to admin' for guests? 1=yes, 0=no. Appears on the general menu instead of 'my center' |
| \$PMenableAlertButton = $PMenableAlertButton; # enable 'alert moderator' button on thread view? 1=yes 0=no. Acts as a broadcast message to mods etc. |
| \$PMenableAlertButton = $PMenableAlertButton; # enable 'alert moderator' button on thread view? 1=yes 0=no. Acts as a broadcast message to mods etc. |
| \$PMAlertButtonGuests = $PMAlertButtonGuests; # enable 'alert moderator' button for Guests |
| \$PMAlertButtonGuests = $PMAlertButtonGuests; # enable 'alert moderator' button for Guests |
| \$enable_PMsearch = $enable_PMsearch; #enable/max returns for PM search - 0 = off / 10 - 50 range for results |
| \$enable_PMsearch = $enable_PMsearch; # enable/max returns for PM search - 0 = off / 10 - 50 range for results |
| |
| |
| \$send_welcomeim = $send_welcomeim; # enable auto-welcome message from forum to new member. 1=yes, 0=no |
| \$send_welcomeim = $send_welcomeim; # enable auto-welcome message from forum to new member. 1=yes, 0=no |
| \$sendname = "\Q$sendname\E"; # username 'from' for welcome message. Defaults to fa. |
| \$sendname = "\Q$sendname\E"; # username 'from' for welcome message. Defaults to fa. |
| \$imsubject = "\Q$imsubject\E"; # title of welcome message. |
| \$imsubject = "\Q$imsubject\E"; # title of welcome message. |
| \$imtext = "\Q$imtext\E"; # message sent to new member |
| \$imtext = "\Q$imtext\E"; # message sent to new member |
| |
| |
| \$numposts = $numposts; # Number of posts required to send Instant Messages |
| \$numposts = $numposts; # Number of posts required to send Instant Messages |
| \$imspam = $imspam; # Percent of Users a user is a allowed to send a message at once |
| \$imspam = $imspam; # Percent of Users a user is a allowed to send a message at once |
| |
| |
| \$enable_imlimit = $enable_imlimit; # Set to 1 to enable limitation of incoming and outgoing im messages |
| \$enable_imlimit = $enable_imlimit; # Set to 1 to enable limitation of incoming and outgoing im messages |
| \$numibox = $numibox; # Number of maximum Messages in the IM-Inbox |
| \$numibox = $numibox; # Number of maximum Messages in the IM-Inbox |
| \$numobox = $numobox; # Number of maximum Messages in the IM-Outbox |
| \$numobox = $numobox; # Number of maximum Messages in the IM-Outbox |
| \$numstore = $numstore; # Number of maximum Messages in the Storage box |
| \$numstore = $numstore; # Number of maximum Messages in the Storage box |
| \$numdraft = $numdraft; # Number of maximum Messages in the draft box |
| \$numdraft = $numdraft; # Number of maximum Messages in the draft box |
| |
| |
| \$PMenable_cc = $PMenable_cc; # enable cc for PM posting 1 yes, 0 no |
| \$PMenable_cc = $PMenable_cc; # enable cc for PM posting 1 yes, 0 no |
| \$PMenable_bcc = $PMenable_bcc; # enable bcc for PM posting 1 yes, 0 no |
| \$PMenable_bcc = $PMenable_bcc; # enable bcc for PM posting 1 yes, 0 no |
| \$PMenableBm_level = $PMenableBm_level; # minimum level to send? 0 = off, 1 = mods, 2 = gmod, 3 = admin |
| \$PMenableBm_level = $PMenableBm_level; # minimum level to send? 0 = off, 1 = mods, 2 = gmod, 3 = admin |
| |
| |
| \$enable_storefolders = $enable_storefolders; # enable additonal store folders - in/out are default for all |
| \$enable_storefolders = $enable_storefolders; # enable additonal store folders - in/out are default for all |
| # 0=no > 1 = number, max 25 |
| # 0=no > 1 = number, max 25 |
| |
| |
| \$enable_YaBBBut = $enable_YaBBBut; # enable YABBC Buttons on post page? 1=yes, 0=no |
| \$enable_YaBBBut = $enable_YaBBBut; # enable YABBC Buttons on post page? 1=yes, 0=no |
| \$enable_PMcontrols = $enable_PMcontrols; # enable extended controls for members? 1=yes, 0=no. If off, use the following instead |
| |
| \$enable_PMprev = $enable_PMprev; # enable preview button |
| \$enable_PMautoAway = $enable_PMautoAway; # enable PM 'away' auto reply for inbox. |
| \$enable_PMActprev = $enable_PMActprev; # enable active preview |
| \$enable_MCaway = $enable_MCaway; # enable 'away' indicator 0=Off 1=Staff to Staff 2=Staff to all 3=Members |
| \$enable_PMviewMess = $enable_PMviewMess; # enable message body suppress in list view |
| \$MaxAwayLen = $MaxAwayLen; # maximum allowed characters in Away message |
| |
| \$enable_MCstatusStealth = $enable_MCstatusStealth; # enable 'stealth' mode for fa/gmods. Allows status label to stay at offline/away for all members viewing. |
| \$enable_PMautoAway = $enable_PMautoAway; # enable PM 'away' auto reply for inbox. |
| \$self_del_user = $self_del_user; # 1: allow member to delete own account. |
| \$enable_MCaway = $enable_MCaway; # enable 'away' indicator 0=Off 1=Staff to Staff 2=Staff to all 3=Members |
| |
| \$MaxAwayLen = $MaxAwayLen; # maximum allowed characters in Away message |
| |
| \$enable_MCstatusStealth = $enable_MCstatusStealth; # enable 'stealth' mode for fa/gmods. Allows status label to stay at offline/away for all members viewing. |
| |
| \$self_del_user = $self_del_user; # 1: allow member to delete own account. |
| |
| |
| |
| ########## Topic Summary Cutter ########## |
| ########## Topic Summary Cutter ########## |
| |
| |
| \$cutamount = $cutamount; # Number of posts to list in topic summary |
| \$cutamount = $cutamount; # Number of posts to list in topic summary |
| \$tsreverse = $tsreverse; # Reverse Topic Summaries in Topic Reply (most recent becomes first) |
| \$tsreverse = $tsreverse; # Reverse Topic Summaries in Topic Reply (most recent becomes first) |
| \$ttsreverse = $ttsreverse; # Reverse Topic Summaries in Topic (most recent becomes first) |
| \$ttsreverse = $ttsreverse; # Reverse Topic Summaries in Topic (most recent becomes first) |
| \$ttsureverse = $ttsureverse; # Reverse Topic Summaries in Topic (most recent becomes first) allowed as user wishes? Yes == 1 |
| \$ttsureverse = $ttsureverse; # Reverse Topic Summaries in Topic (most recent becomes first) allowed as user wishes? Yes == 1 |
| |
| |
| ########## Time Lock ########## |
| ########## Time Lock ########## |
| |
| |
| \$tlnomodflag = $tlnomodflag; # Set to 1 limit time users may modify posts |
| \$tlnomodflag = $tlnomodflag; # Set to 1 limit time users may modify posts |
| \$tlnomodtime = $tlnomodtime; # Time limit on modifying posts (days) |
| \$tlnomodtime = $tlnomodtime; # Time limit on modifying posts (days) |
| \$tlnodelflag = $tlnodelflag; # Set to 1 limit time users may delete posts |
| \$tlnodelflag = $tlnodelflag; # Set to 1 limit time users may delete posts |
| \$tlnodeltime = $tlnodeltime; # Time limit on deleting posts (days) |
| \$tlnodeltime = $tlnodeltime; # Time limit on deleting posts (days) |
| \$tllastmodflag = $tllastmodflag; # Set to 1 allow users to modify posts up to the specified time limit w/o showing "last Edit" message |
| \$tllastmodflag = $tllastmodflag; # Set to 1 allow users to modify posts up to the specified time limit w/o showing "last Edit" message |
| \$tllastmodtime = $tllastmodtime; # Time limit to modify posts w/o triggering "last Edit" message (in minutes) |
| \$tllastmodtime = $tllastmodtime; # Time limit to modify posts w/o triggering "last Edit" message (in minutes) |
| |
| |
| ########## Permalinks ########## |
| ########## Permalinks ########## |
| |
| |
| \$accept_permalink = $accept_permalink; # Set to 1 to have the board accept permalink alike environment strings |
| \$accept_permalink = $accept_permalink; # Set to 1 to have the board accept permalink alike environment strings |
| \$symlink = "\Q$symlink\E"; # The part defined in .htaccess redirection rules that is between domainname and permalink |
| \$symlink = "\Q$symlink\E"; # The part defined in .htaccess redirection rules that is between domainname and permalink |
| \$perm_spacer = "\Q$perm_spacer\E"; # The character used in the permalink output file that replaces the space. |
| \$perm_spacer = "\Q$perm_spacer\E"; # The character used in the permalink output file that replaces the space. |
| \$perm_domain = "\Q$perm_domain\E"; # The full domainname (no http://) where the .haccess redirect is set on. |
| \$perm_domain = "\Q$perm_domain\E"; # The full domainname (no http://) where the .haccess redirect is set on. |
| |
| |
| ########## bypass post for locked thread ########## |
| ########## bypass post for locked thread ########## |
| |
| |
| \$bypass_lock_perm = "\Q$bypass_lock_perm\E"; # set level of permission - fa / fa+gmod / fa+gmod+mod; '' if disabled |
| \$bypass_lock_perm = "\Q$bypass_lock_perm\E"; # set level of permission - fa / fa+gmod / fa+gmod+mod; '' if disabled |
| |
| |
| ########## File Attachment Settings ########## |
| ########## File Attachment Settings ########## |
| |
| |
| \$limit = $limit; # Set to the maximum number of kilobytes an attachment can be. Set to 0 to disable the file size check. |
| \$limit = $limit; # Set to the maximum number of kilobytes an attachment can be. Set to 0 to disable the file size check. |
| \$dirlimit = $dirlimit; # Set to the maximum number of kilobytes the attachment directory can hold. Set to 0 to disable the directory size check. |
| \$dirlimit = $dirlimit; # Set to the maximum number of kilobytes the attachment directory can hold. Set to 0 to disable the directory size check. |
| \$overwrite = $overwrite; # Set to 0 to auto rename attachments if they exist, 1 to overwrite them or 2 to generate an error if the file exists already. |
| \$overwrite = $overwrite; # Set to 0 to auto rename attachments if they exist, 1 to overwrite them or 2 to generate an error if the file exists already. |
| \@ext = qw(@ext); # The allowed file extensions for file attachements. Variable should be set in the form of "jpg bmp gif" and so on. |
| \@ext = qw(@ext); # The allowed file extensions for file attachements. Variable should be set in the form of "jpg bmp gif" and so on. |
| \$checkext = $checkext; # Set to 1 to enable file extension checking, set to 0 to allow all file types to be uploaded |
| \$checkext = $checkext; # Set to 1 to enable file extension checking, set to 0 to allow all file types to be uploaded |
| \$amdisplaypics = $amdisplaypics; # Set to 1 to display attached pictures in posts, set to 0 to only show a link to them. |
| \$amdisplaypics = $amdisplaypics; # Set to 1 to display attached pictures in posts, set to 0 to only show a link to them. |
| \$allowattach = $allowattach; # Set to the number of maximum files attaching a post, set to 0 to disable file attaching. |
| \$allowattach = $allowattach; # Set to the number of maximum files attaching a post, set to 0 to disable file attaching. |
| \$allowguestattach = $allowguestattach; # Set to 1 to allow guests to upload attachments, 0 to disable guest attachment uploading. |
| \$allowguestattach = $allowguestattach; # Set to 1 to allow guests to upload attachments, 0 to disable guest attachment uploading. |
| |
| \$allowAttachIM = $allowAttachIM; # Set the maximum number of file attachments allowed in personal messages, set to 0 to disable file attachments in personal messages. |
| |
| \$pmAttachGroups = "\Q$pmAttachGroups\E"; # Member groups allowed to send pm attachments, '' == all members |
| |
| \$pmDisplayPics = $pmDisplayPics; # Set to 1 to display attached pictures in personal messages, set to 0 to only show a link to them. |
| |
| \$pmCheckExt = $pmCheckExt; # Set to 1 to enable file extension checking on pm attachments, set to 0 to allow all file types to be uploaded |
| |
| \@pmAttachExt = qw(@pmAttachExt); # The allowed file extensions for pm file attachements. Variable should be set in the form of "jpg bmp gif" and so on. |
| |
| \$pmFileLimit = $pmFileLimit; # Set to the maximum number of kilobytes a pm attachment can be. Set to 0 to disable the file size check. |
| |
| \$pmDirLimit = $pmDirLimit; # Set to the maximum number of kilobytes the pm attachment directory can hold. Set to 0 to disable the directory size check. |
| |
| \$pmFileOverwrite = $pmFileOverwrite; # Set to 0 to auto rename pm attachments if they exist, 1 to overwrite them or 2 to generate an error if the file exists already. |
| |
| |
| ########## Error Logger ########## |
| ########## Error Logger ########## |
| |
| |
| \$elmax = $elmax; # Max number of log entries before rotation |
| \$elmax = $elmax; # Max number of log entries before rotation |
| \$elenable = $elenable; # allow for error logging |
| \$elenable = $elenable; # allow for error logging |
| \$elrotate = $elrotate; # Allow for log rotation |
| \$elrotate = $elrotate; # Allow for log rotation |
| |
| |
| ########## Advanced Tabs ########## |
| \$maxadminlog = $maxadminlog; #Maximum number of entries stored in adminlog.txt (oldest entries deleted). |
| |
| |
| \@AdvancedTabs = ($AdvancedTabs); # Advanced Tabs order and infos |
| ########## Advanced Tabs ########## |
| |
| \$addtab_on = $addtab_on; # show advanced tabs on Forum (For admin only.) |
| |
| \@AdvancedTabs = ($AdvancedTabs); # Advanced Tabs order and infos |
| |
| |
| ########## Smilies ########## |
| ########## Smilies ########## |
| |
| |
| \@SmilieURL = ($SmilieURL); # Additional Smilies URL |
| \@SmilieURL = ($SmilieURL); # Additional Smilies URL |
| \@SmilieCode = ($SmilieCode); # Additional Smilies Code |
| \@SmilieCode = ($SmilieCode); # Additional Smilies Code |
| \@SmilieDescription = ($SmilieDescription); # Additional Smilies Description |
| \@SmilieDescription = ($SmilieDescription); # Additional Smilies Description |
| \@SmilieLinebreak = ($SmilieLinebreak); # Additional Smilies Linebreak |
| \@SmilieLinebreak = ($SmilieLinebreak); # Additional Smilies Linebreak |
| |
| |
| \$smiliestyle = "$smiliestyle"; # smiliestyle |
| \$smiliestyle = "$smiliestyle"; # smiliestyle |
| \$showadded = "$showadded"; # showadded |
| \$showadded = "$showadded"; # showadded |
| \$showsmdir = "$showsmdir"; # showsmdir |
| \$showsmdir = "$showsmdir"; # showsmdir |
| \$detachblock = "$detachblock"; # detachblock |
| \$detachblock = "$detachblock"; # detachblock |
| \$winwidth = "$winwidth"; # winwidth |
| \$winwidth = "$winwidth"; # winwidth |
| \$winheight = "$winheight"; # winheight |
| \$winheight = "$winheight"; # winheight |
| \$popback = "$popback"; # popback |
| \$popback = "$popback"; # popback |
| \$poptext = "$poptext"; # poptext |
| \$poptext = "$poptext"; # poptext |
| \$showinbox = "$showinbox"; # showinbox |
| \$showinbox = "$showinbox"; # showinbox |
| \$removenormalsmilies = "$removenormalsmilies"; # removenormalsmilies |
| \$removenormalsmilies = "$removenormalsmilies"; # removenormalsmilies |
| |
| |
| |
| |
| |
| |
| ############################################################################### |
| ############################################################################### |
| # Security Settings (old SecSettings.txt) # |
| # Security Settings # |
| ############################################################################### |
| ############################################################################### |
| |
| |
| \$regcheck = $regcheck; # Set to 1 if you want to enable automatic flood protection enabled |
| \$regcheck = $regcheck; # Set to 1 if you want to enable automatic flood protection enabled |
| \$gpvalid_en = $gpvalid_en; # Set to 1 if you want to enable validation code on guest posting |
| \$gpvalid_en = $gpvalid_en; # Set to 1 if you want to enable validation code on guest posting |
| \$codemaxchars = $codemaxchars; # Set max length of validation code (15 is max) |
| \$codemaxchars = $codemaxchars; # Set max length of validation code (15 is max) |
| \$captchastyle = "\Q$captchastyle\E"; # Set L = lowercase only, U = uppercase only, A = both upper and lowercase letters |
| \$captchastyle = "\Q$captchastyle\E"; # Set L = lowercase only, U = uppercase only, A = both upper and lowercase letters |
| \$rgb_foreground = "\Q$rgb_foreground\E"; # Set hex RGB value for validation image foreground color |
| \$captchaStartChars = "\Q$captchaStartChars\E"; # Set extra characters at the start of the validation code |
| \$rgb_shade = "\Q$rgb_shade\E"; # Set hex RGB value for validation image shade color |
| \$captchaEndChars = "\Q$captchaEndChars\E"; # Set extra characters at the end of the validation code |
| \$rgb_background = "\Q$rgb_background\E"; # Set hex RGB value for validation image background color |
| \$rgb_foreground = "\Q$rgb_foreground\E"; # Set hex RGB value for validation image foreground color |
| \$translayer = $translayer; # Set to 1 background for validation image should be transparent |
| \$rgb_shade = "\Q$rgb_shade\E"; # Set hex RGB value for validation image shade color |
| \$randomizer = $randomizer; # Set 0 to 3 to create background random noise based on foreground or shade color or both |
| \$rgb_background = "\Q$rgb_background\E"; # Set hex RGB value for validation image background color |
| \$distortion = $distortion; # Set 1 to distort the captcha image even more |
| \$translayer = $translayer; # Set to 1 background for validation image should be transparent |
| \$stealthurl = $stealthurl; # Set to 1 to mask referer url to hosts if a hyperlink is clicked. |
| \$randomizer = $randomizer; # Set 0 to 3 to create background random noise based on foreground or shade color or both |
| \$do_scramble_id = $do_scramble_id; # Set to 1 scambles all visible links containing user ID's |
| \$distortion = $distortion; # Set 1 to distort the captcha image even more |
| \$referersecurity = $referersecurity; # Set to 1 to activate referer security checking. |
| \$stealthurl = $stealthurl; # Set to 1 to mask referer url to hosts if a hyperlink is clicked. |
| \$sessions = $sessions; # Set to 1 to activate session id protection. |
| \$do_scramble_id = $do_scramble_id; # Set to 1 scambles all visible links containing user ID's |
| \$show_online_ip_admin = $show_online_ip_admin; # Set to 1 to show online IP's to admins. |
| \$referersecurity = $referersecurity; # Set to 1 to activate referer security checking. |
| \$show_online_ip_gmod = $show_online_ip_gmod; # Set to 1 to show online IP's to global moderators. |
| \$sessions = $sessions; # Set to 1 to activate session id protection. |
| \$masterkey = "\Q$masterkey\E"; # Seed for encryption of captcha's |
| \$show_online_ip_admin = $show_online_ip_admin; # Set to 1 to show online IP's to admins. |
| |
| \$show_online_ip_gmod = $show_online_ip_gmod; # Set to 1 to show online IP's to global moderators. |
| |
| \$show_online_ip_fmod = $show_online_ip_fmod; # Set to 1 to show online IP's to yabb moderators. |
| |
| \$ipLookup = $ipLookup; # Set to 1 to enable IP Lookup. |
| |
| \$masterkey = "\Q$masterkey\E"; # Seed for encryption of captchas |
| |
| |
| ############################################################################### |
| ############################################################################### |
| # Guardian Settings (old Guardian.banned and Guardian.settings) # |
| # Guardian Settings (old Guardian.banned and Guardian.settings) # |
| ############################################################################### |
| ############################################################################### |
| |
| |
| \$banned_harvesters = qq~$banned_harvesters~; |
| \$banned_harvesters = qq~$banned_harvesters~; |
| \$banned_referers = qq~$banned_referers~; |
| \$banned_referers = qq~$banned_referers~; |
| \$banned_requests = qq~$banned_requests~; |
| \$banned_requests = qq~$banned_requests~; |
| \$banned_strings = qq~$banned_strings~; |
| \$banned_strings = qq~$banned_strings~; |
| \$whitelist = qq~$whitelist~; |
| \$whitelist = qq~$whitelist~; |
| |
| |
| \$use_guardian = $use_guardian; |
| \$use_guardian = $use_guardian; |
| \$use_htaccess = $use_htaccess; |
| \$use_htaccess = $use_htaccess; |
| |
| |
| \$disallow_proxy_on = $disallow_proxy_on; |
| \$disallow_proxy_on = $disallow_proxy_on; |
| \$referer_on = $referer_on; |
| \$referer_on = $referer_on; |
| \$harvester_on = $harvester_on; |
| \$harvester_on = $harvester_on; |
| \$request_on = $request_on; |
| \$request_on = $request_on; |
| \$string_on = $string_on; |
| \$string_on = $string_on; |
| \$union_on = $union_on; |
| \$union_on = $union_on; |
| \$clike_on = $clike_on; |
| \$clike_on = $clike_on; |
| \$script_on = $script_on; |
| \$script_on = $script_on; |
| |
| |
| \$disallow_proxy_htaccess = $disallow_proxy_htaccess; |
| \$disallow_proxy_htaccess = $disallow_proxy_htaccess; |
| \$referer_htaccess = $referer_htaccess; |
| \$referer_htaccess = $referer_htaccess; |
| \$harvester_htaccess = $harvester_htaccess; |
| \$harvester_htaccess = $harvester_htaccess; |
| \$request_htaccess = $request_htaccess; |
| \$request_htaccess = $request_htaccess; |
| \$string_htaccess = $string_htaccess; |
| \$string_htaccess = $string_htaccess; |
| \$union_htaccess = $union_htaccess; |
| \$union_htaccess = $union_htaccess; |
| \$clike_htaccess = $clike_htaccess; |
| \$clike_htaccess = $clike_htaccess; |
| \$script_htaccess = $script_htaccess; |
| \$script_htaccess = $script_htaccess; |
| |
| |
| \$disallow_proxy_notify = $disallow_proxy_notify; |
| \$disallow_proxy_notify = $disallow_proxy_notify; |
| \$referer_notify = $referer_notify; |
| \$referer_notify = $referer_notify; |
| \$harvester_notify = $harvester_notify; |
| \$harvester_notify = $harvester_notify; |
| \$request_notify = $request_notify; |
| \$request_notify = $request_notify; |
| \$string_notify = $string_notify; |
| \$string_notify = $string_notify; |
| \$union_notify = $union_notify; |
| \$union_notify = $union_notify; |
| \$clike_notify = $clike_notify; |
| \$clike_notify = $clike_notify; |
| \$script_notify = $script_notify; |
| \$script_notify = $script_notify; |
| |
| |
| |
| |
| |
| |
| ############################################################################### |
| ############################################################################### |
| # Banning Settings (old ban.txt) # |
| # Banning Settings Time bans # |
| ############################################################################### |
| ############################################################################### |
| |
| |
| \$ip_banlist = "\Q$ip_banlist\E"; # IP banlist |
| \@timeban = qw( d w m p ); |
| \$email_banlist = "\Q$email_banlist\E"; # EMAIL banlist |
| \@bandays = ( 1, 7, 30, 365 ); |
| \$user_banlist = "\Q$user_banlist\E"; # USER banlist |
| |
| |
| |
| |
| |
| |
| |
| ############################################################################### |
| ############################################################################### |
| # Backup Settings (old BackupSettings.cgi) # |
| # Backup Settings # |
| ############################################################################### |
| ############################################################################### |
| |
| |
| \@backup_paths = qw($backup_paths); |
| \@backup_paths = qw($backup_paths); |
| |
| \$backupprogusr = '$backupprogusr'; |
| |
| \$backupprogbin = '$backupprogbin'; |
| \$backupmethod = '$backupmethod'; |
| \$backupmethod = '$backupmethod'; |
| \$compressmethod = '$compressmethod'; |
| \$compressmethod = '$compressmethod'; |
| \$backupdir = '$backupdir'; |
| \$backupdir = '$backupdir'; |
| \$lastbackup = $lastbackup; |
| \$lastbackup = $lastbackup; |
| \$backupsettingsloaded = $backupsettingsloaded; |
| \$backupsettingsloaded = $backupsettingsloaded; |
| |
| |
| |
| ############################################################################### |
| |
| # Mod Settings # |
| |
| ############################################################################### |
| 1; |
| 1; |
| EOF |
| EOF |
| |
| } |
| |
| else { |
| |
| |
| |
| # This should only be seen by developers. |
| |
| # If you get this, you messed up. |
| |
| croak 'I do not know how to write to this file.'; |
| |
| } |
| |
| |
| } else { |
| WriteSettingsTo( "$vardir/$file", $setfile ); |
| # This should only be seen by developers. |
| return; |
| # If you get this, then you've typoed $file |
| |
| # or tried to write to one that isn't implemented here. |
| |
| die "I don't know how to write to this file."; |
| |
| } |
| |
| |
| |
| WriteSettingsTo("$vardir/$file", $setfile); |
| |
| |
| |
| if ($settings_file_version ne $YaBBversion) { # START upgrade codes |
| |
| # The following is for upgrades from YaBB versions < 2.4 START |
| |
| unlink("$vardir/nopostorder.txt") if -e "$vardir/nopostorder.txt"; |
| |
| unlink("$vardir/advsettings.txt") if -e "$vardir/advsettings.txt"; |
| |
| unlink("$vardir/secsettings.txt") if -e "$vardir/secsettings.txt"; |
| |
| unlink("$vardir/membergroups.txt") if -e "$vardir/membergroups.txt"; |
| |
| unlink("$vardir/Smilies.txt") if -e "$vardir/Smilies.txt"; |
| |
| unlink("$vardir/template.cfg") if -e "$vardir/template.cfg"; |
| |
| unlink("$vardir/Guardian.banned") if -e "$vardir/Guardian.banned"; |
| |
| unlink("$vardir/Guardian.settings") if -e "$vardir/Guardian.settings"; |
| |
| unlink("$vardir/ban.txt") if -e "$vardir/ban.txt"; |
| |
| unlink("$vardir/ban_email.txt") if -e "$vardir/ban_email.txt"; |
| |
| unlink("$vardir/ban_memname.txt") if -e "$vardir/ban_memname.txt"; |
| |
| unlink("$vardir/HelpSettings.txt") if -e "$vardir/HelpSettings.txt"; |
| |
| unlink("$vardir/BackupSettings.cgi") if -e "$vardir/BackupSettings.cgi"; |
| |
| unlink("$vardir/extended_profiles_order.txt") if -e "$vardir/extended_profiles_order.txt"; |
| |
| unlink("$vardir/extended_profiles_fields.txt") if -e "$vardir/extended_profiles_fields.txt"; |
| |
| unlink("$vardir/palette.def") if -e "$vardir/palette.def"; |
| |
| unlink("$vardir/taborder.txt") if -e "$vardir/taborder.txt"; |
| |
| unlink("$vardir/tabs_ext.def") if -e "$vardir/tabs_ext.def"; |
| |
| # The following is for upgrades from YaBB versions < 2.4 END |
| |
| |
| |
| # The following is for upgrades from YaBB versions < 2.3 START |
| |
| unlink("$vardir/upgrade_secsettings.txt") if -e "$vardir/upgrade_secsettings.txt"; |
| |
| unlink("$vardir/upgrade_advsettings.txt") if -e "$vardir/upgrade_advsettings.txt"; |
| |
| unlink("$vardir/upgrade_Settings.pl") if -e "$vardir/upgrade_Settings.pl"; |
| |
| # The following is for upgrades from YaBB versions < 2.3 END |
| |
| } # END upgrade codes |
| |
| } |
| } |
| |
| |
| # Subroutine for writing the common format of settings file |
| # Subroutine for writing the common format of settings file |
| sub WriteSettingsTo { |
| sub WriteSettingsTo { |
| my ($file, $setfile) = @_; |
| my ( $file, $setfile ) = @_; |
| |
| |
| # Fix a certain type of syntax error |
| # Fix a certain type of syntax error |
| $setfile =~ s~=\s+;~= 0;~g; |
| $setfile =~ s/=\s+;/= 0;/gsm; |
| |
| |
| # Make it look nicely aligned. The comment starts after 50 Col |
| # Make it look nicely aligned. The comment starts after 50 Col |
| my $filler = ' ' x 50; |
| |
| $setfile =~ s~(.+;)[ \t]+(#.+$)~ $1 . substr($filler,(length $1 < 50 ? length $1 : 49)) . $2 ~gem; |
| *cut_comment = sub { |
| $setfile =~ s~\t+(#.+$)~$filler$1~gm; |
| my ( $comment, $length ) = |
| $setfile =~ s~(.+)(#.+$)~ $1 . &cut_comment($1,$2) ~gem; |
| ( q{}, 150 ); # 120 Col is the max width of page |
| |
| my $var_length = length $_[0]; |
| sub cut_comment { # line brake of too long comments |
| while ( $length < $var_length ) { $length += 150; } |
| my ($comment,$length) = ('',120); # 120 Col is the max width of page |
| foreach ( split / +/sm, $_[1] ) { |
| my $var_length = length($_[0]); |
| if ( ( $var_length + length($comment) + length $_ ) > $length ) { |
| while ($length < $var_length) { $length += 120; } |
| $comment =~ s/ $//sm; |
| foreach (split(/ +/, $_[1])) { |
| $comment .= "\n$filler# $_ "; |
| if (($var_length + length($comment) + length($_)) > $length) { |
| $length += 150; |
| $comment =~ s/ $//; |
| } |
| $comment .= "\n$filler# $_ "; |
| else { $comment .= "$_ "; } |
| $length += 120; |
| } |
| } else { $comment .= "$_ "; } |
| $comment =~ s/ $//sm; |
| } |
| return $comment; |
| $comment =~ s/ $//; |
| }; |
| $comment; |
| my $filler = q{ } x 50; |
| } |
| $setfile =~ |
| |
| s/(.+;)[ \t]+(#.+$)/ $1 . substr($filler,(length $1 < 50 ? length $1 : 49)) . $2 /gem; |
| # Write it out |
| $setfile =~ s/\t+(#.+$)/$filler$1/gm; |
| fopen(SETTINGS, ">$file") || &admin_fatal_error('cannot_open', $file, 1); |
| $setfile =~ s/(.+)(#.+$)/ $1 . cut_comment($1,$2) /gem; |
| print SETTINGS $setfile; |
| |
| fclose(SETTINGS); |
| # Write it out |
| |
| fopen( SETTINGS, ">$file" ) || fatal_error( 'cannot_open', $file, 1 ); |
| |
| print {SETTINGS} $setfile or croak "$croak{'print'} SETTINGS"; |
| |
| fclose(SETTINGS); |
| |
| return; |
| } |
| } |
| |
| |
| 1; |
| 1; |
| |
| |