654 lines
25 KiB
PHP
654 lines
25 KiB
PHP
<?php
|
|
/******************************************************************************
|
|
* ModSettings.php *
|
|
*******************************************************************************
|
|
* SMF: Simple Machines Forum *
|
|
* Open-Source Project Inspired by Zef Hemel (zef@zefhemel.com) *
|
|
* =========================================================================== *
|
|
* Software Version: SMF 1.0.1 *
|
|
* Software by: Simple Machines (http://www.simplemachines.org) *
|
|
* Copyright 2001-2005 by: Lewis Media (http://www.lewismedia.com) *
|
|
* Support, News, Updates at: http://www.simplemachines.org *
|
|
*******************************************************************************
|
|
* This program is free software; you may redistribute it and/or modify it *
|
|
* under the terms of the provided license as published by Lewis Media. *
|
|
* *
|
|
* This program is distributed in the hope that it is and will be useful, *
|
|
* but WITHOUT ANY WARRANTIES; without even any implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
|
* *
|
|
* See the "license.txt" file for details of the Simple Machines license. *
|
|
* The latest version can always be found at http://www.simplemachines.org. *
|
|
******************************************************************************/
|
|
if (!defined('SMF'))
|
|
die('Hacking attempt...');
|
|
|
|
/* This file is here to make it easier for installed mods to have settings
|
|
and options. Please look just below for information on adding settings.
|
|
*/
|
|
|
|
function defineSettings()
|
|
{
|
|
global $txt, $db_prefix;
|
|
|
|
loadLanguage('ModSettings');
|
|
|
|
// Load all the boards for the calendar and recycle topics.
|
|
$calBoards = array('');
|
|
$request = db_query("
|
|
SELECT b.ID_BOARD, b.name AS bName, c.name AS cName
|
|
FROM {$db_prefix}boards AS b, {$db_prefix}categories AS c
|
|
WHERE b.ID_CAT = c.ID_CAT
|
|
ORDER BY c.catOrder, b.boardOrder", __FILE__, __LINE__);
|
|
while ($row = mysql_fetch_assoc($request))
|
|
$calBoards[$row['ID_BOARD']] = $row['cName'] . ' - ' . $row['bName'];
|
|
mysql_free_result($request);
|
|
|
|
/* Adding options to this list isn't hard. The basic format for a checkbox is:
|
|
array('check', 'nameInModSettingsAndSQL'),
|
|
|
|
And for a text box:
|
|
array('text', 'nameInModSettingsAndSQL')
|
|
(NOTE: You have to add an entry for this at the bottom!)
|
|
|
|
In these cases, it will look for $txt['nameInModSettingsAndSQL'] as the description,
|
|
and $helptxt['nameInModSettingsAndSQL'] as the help popup description.
|
|
|
|
Here's a quick explanation of how to add a new item:
|
|
|
|
* A text input box. For textual values.
|
|
ie. array('text', 'nameInModSettingsAndSQL', 'OptionalInputBoxWidth',
|
|
&$txt['OptionalDescriptionOfTheOption'], 'OptionalReferenceToHelpAdmin'),
|
|
|
|
* A text input box. For numerical values.
|
|
ie. array('int', 'nameInModSettingsAndSQL', 'OptionalInputBoxWidth',
|
|
&$txt['OptionalDescriptionOfTheOption'], 'OptionalReferenceToHelpAdmin'),
|
|
|
|
* A text input box. For floating point values.
|
|
ie. array('float', 'nameInModSettingsAndSQL', 'OptionalInputBoxWidth',
|
|
&$txt['OptionalDescriptionOfTheOption'], 'OptionalReferenceToHelpAdmin'),
|
|
|
|
* A check box. Either one or zero. (boolean)
|
|
ie. array('check', 'nameInModSettingsAndSQL', null, &$txt['descriptionOfTheOption'],
|
|
'OptionalReferenceToHelpAdmin'),
|
|
|
|
* A selection box. Used for the selection of something from a list.
|
|
ie. array('select', 'nameInModSettingsAndSQL', array('valueForSQL' => &$txt['displayedValue']),
|
|
&$txt['descriptionOfTheOption'], 'OptionalReferenceToHelpAdmin'),
|
|
Note that just saying array('first', 'second') will put 0 in the SQL for 'first'.
|
|
|
|
* A password input box. Used for passwords, no less!
|
|
ie. array('password', 'nameInModSettingsAndSQL', 'OptionalInputBoxWidth',
|
|
&$txt['descriptionOfTheOption'], 'OptionalReferenceToHelpAdmin'),
|
|
|
|
For each option:
|
|
type (see above), variable name, size/possible values, description, helptext.
|
|
OR make type 'rule' for an empty string for a horizontal rule.
|
|
OR make type 'heading' with a string for a titled section. */
|
|
|
|
$config_vars = array(
|
|
array('heading', &$txt['mods_cat_features']),
|
|
// Big Options... polls, sticky, guest stuff....
|
|
array('select', 'pollMode', array(&$txt['smf34'], &$txt['smf32'], &$txt['smf33'])),
|
|
array('check', 'enableStickyTopics'),
|
|
array('rule'),
|
|
// Basic stuff, user languages, titles, flash, permissions...
|
|
array('check', 'allow_guestAccess'),
|
|
array('check', 'userLanguage'),
|
|
array('check', 'allow_editDisplayName'),
|
|
array('check', 'allow_hideOnline'),
|
|
array('check', 'allow_hideEmail'),
|
|
array('check', 'guest_hideContacts'),
|
|
array('check', 'titlesEnable'),
|
|
array('text', 'default_personalText'),
|
|
array('int', 'max_signatureLength', 5),
|
|
array('check', 'removeNestedQuotes'),
|
|
array('check', 'enableEmbeddedFlash'),
|
|
array('check', 'enablePostHTML'),
|
|
array('text', 'disabledBBC'),
|
|
array('check', 'enableBBC'),
|
|
array('int', 'max_messageLength', 5),
|
|
array('check', 'enableNewReplyWarning'),
|
|
array('rule'),
|
|
// Stats, compression, cookies.... server type stuff.
|
|
array('text', 'time_format'),
|
|
array('select', 'number_format', array('1234.00' => '1234.00', '1,234.00' => '1,234.00', '1.234,00' => '1.234,00', '1 234,00' => '1 234,00', '1234,00' => '1234,00')),
|
|
array('float', 'time_offset'),
|
|
array('int', 'spamWaitTime'),
|
|
array('int', 'edit_wait_time'),
|
|
array('int', 'failed_login_threshold'),
|
|
array('int', 'lastActive'),
|
|
array('check', 'enableSpellChecking'),
|
|
array('check', 'trackStats'),
|
|
array('check', 'hitStats'),
|
|
array('check', 'enableCompressedOutput'),
|
|
array('check', 'databaseSession_enable'),
|
|
array('check', 'databaseSession_loose'),
|
|
array('int', 'databaseSession_lifetime'),
|
|
array('check', 'enableErrorLogging'),
|
|
array('int', 'cookieTime', 5),
|
|
array('check', 'localCookies'),
|
|
array('check', 'globalCookies'),
|
|
array('check', 'redirectMetaRefresh'),
|
|
array('check', 'securityDisable'),
|
|
array('rule'),
|
|
// Email and registration type stuff...
|
|
array('select', 'registration_method', array(&$txt['registration_standard'], &$txt['registration_activate'], &$txt['registration_approval'], &$txt['registration_disabled'])),
|
|
array('check', 'notify_on_new_registration'),
|
|
array('check', 'send_validation_onChange'),
|
|
array('check', 'send_welcomeEmail'),
|
|
array('rule'),
|
|
// Database reapir, optimization, etc.
|
|
array('int', 'autoOptDatabase', 4),
|
|
array('int', 'autoOptMaxOnline', 4),
|
|
array('check', 'autoFixDatabase'),
|
|
array('rule'),
|
|
// Option-ish things... miscellaneous sorta.
|
|
array('check', 'notifyAnncmnts_UserDisable'),
|
|
array('check', 'modlog_enabled'),
|
|
array('check', 'queryless_urls'),
|
|
array('rule'),
|
|
// Width/Height image reduction.
|
|
array('int', 'maxwidth'),
|
|
array('int', 'maxheight'),
|
|
array('rule'),
|
|
// SMTP stuff.
|
|
array('select', 'mail_type', array('smtp' => 'SMTP', 'sendmail' => 'sendmail')),
|
|
array('text', 'smtp_host'),
|
|
array('text', 'smtp_port'),
|
|
array('text', 'smtp_username'),
|
|
array('password', 'smtp_password'),
|
|
array('rule'),
|
|
// XML stuff ;).
|
|
array('check', 'xmlnews_enable'),
|
|
array('int', 'xmlnews_maxlen'),
|
|
array('rule'),
|
|
// Recycle topics?
|
|
array('check', 'recycle_enable'),
|
|
array('select', 'recycle_board', $calBoards),
|
|
array('heading', &$txt['mods_cat_layout']),
|
|
// Compact pages?
|
|
array('check', 'compactTopicPagesEnable'),
|
|
array('int', 'compactTopicPagesContiguous', null, $txt['smf235'] . '<div class="smalltext">' . str_replace(' ', ' ', '"3" ' . $txt['smf236'] . ': <span class="b">1 ... 4 [5] 6 ... 9</span>') . '<br />' . str_replace(' ', ' ', '"5" ' . $txt['smf236'] . ': <span class="b">1 ... 3 4 [5] 6 7 ... 9</span>') . '</div>'),
|
|
array('rule'),
|
|
// Stuff that just is everywhere - today, search, online, etc.
|
|
array('select', 'todayMod', array(&$txt['smf290'], &$txt['smf291'], &$txt['smf292'])),
|
|
array('check', 'topbottomEnable'),
|
|
array('check', 'onlineEnable'),
|
|
array('check', 'enableVBStyleLogin'),
|
|
array('check', 'autoLinkUrls'),
|
|
array('int', 'fixLongWords'),
|
|
array('rule'),
|
|
// Pagination stuff.
|
|
array('int', 'defaultMaxTopics'),
|
|
array('int', 'defaultMaxMessages'),
|
|
array('int', 'defaultMaxMembers'),
|
|
array('int', 'topicSummaryPosts'),
|
|
array('int', 'enableAllMessages'),
|
|
array('rule'),
|
|
// Number of posts for a hot topic, participation, etc.?
|
|
array('int', 'hotTopicPosts'),
|
|
array('int', 'hotTopicVeryPosts'),
|
|
array('check', 'enableParticipation'),
|
|
array('check', 'enablePreviousNext'),
|
|
array('rule'),
|
|
// This is like debugging sorta.
|
|
array('check', 'timeLoadPageEnable'),
|
|
array('check', 'disableHostnameLookup'),
|
|
array('rule'),
|
|
// Who's online.
|
|
array('check', 'who_enabled'), '',
|
|
// Recent topics ?
|
|
array('check', 'recent_topics',null, &$txt['recent_topics']),
|
|
|
|
array('heading', &$txt['mods_cat_search']),
|
|
// Basic search settings.
|
|
array('check', 'simpleSearch'),
|
|
array('check', 'search_match_complete_words'),
|
|
array('check', 'disableTemporaryTables'),
|
|
// Number of search results displayed/cached.
|
|
array('rule'),
|
|
array('int', 'search_results_per_page'),
|
|
array('int', 'search_cache_size'),
|
|
array('rule'),
|
|
// Search weight settings.
|
|
array('int', 'search_weight_frequency'),
|
|
array('int', 'search_weight_age'),
|
|
array('int', 'search_weight_length'),
|
|
array('int', 'search_weight_subject'),
|
|
array('int', 'search_weight_first_message'),
|
|
array('heading', &$txt['mods_cat_avatars']),
|
|
// Basic avatar settings.
|
|
array('check', 'avatar_allow_server_stored'),
|
|
array('text', 'avatar_directory', 30),
|
|
array('text', 'avatar_url', 30),
|
|
array('rule'),
|
|
// External avatars...
|
|
array('check', 'avatar_allow_external_url'),
|
|
array('int', 'avatar_max_width_external'),
|
|
array('int', 'avatar_max_height_external'),
|
|
array('check', 'avatar_check_size'),
|
|
array('select', 'avatar_action_too_large', array(
|
|
'option_refuse' => &$txt['option_refuse'],
|
|
'option_html_resize' => &$txt['option_html_resize'],
|
|
'option_download_and_resize' => &$txt['option_download_and_resize']
|
|
)),
|
|
array('rule'),
|
|
// Uploaded avatars.
|
|
array('check', 'avatar_allow_upload'),
|
|
array('int', 'avatar_max_width_upload'),
|
|
array('int', 'avatar_max_height_upload'),
|
|
array('check', 'avatar_resize_upload'),
|
|
array('check', 'avatar_download_png'),
|
|
array('heading', &$txt['smf294']),
|
|
// Who can do attachments?
|
|
array('select', 'attachmentEnable', explode('|', $txt['smf111'])),
|
|
array('rule'),
|
|
// Extensions/images...?
|
|
array('check', 'attachmentCheckExtensions'),
|
|
array('text', 'attachmentExtensions'),
|
|
array('check', 'attachmentShowImages'),
|
|
array('check', 'attachmentEncryptFilenames'),
|
|
array('rule'),
|
|
// Directories and sizes/numbers.
|
|
array('text', 'attachmentUploadDir', 30),
|
|
array('int', 'attachmentDirSizeLimit'),
|
|
array('int', 'attachmentPostLimit'),
|
|
array('int', 'attachmentSizeLimit'),
|
|
array('int', 'attachmentNumPerPostLimit'),
|
|
array('heading', &$txt['smf293']),
|
|
// Karma - On or off?
|
|
array('select', 'karmaMode', explode('|', $txt['smf64'])),
|
|
|
|
array('check', 'karmadescmod'),
|
|
array('int', 'karmamaxmembers'),
|
|
array('check', 'karmalogview'),
|
|
array('check', 'karmapermiss'),
|
|
array('check', 'karmalinks'),
|
|
array('check', 'karmaisowner'),
|
|
array('check', 'karmakarma'),
|
|
array('check', 'karmaurl'),
|
|
array('check', 'karmaotherstat'),
|
|
array('check', 'karmasurv'),
|
|
array('text', 'karmawhatwrite'),
|
|
array('check', 'karmacensor'),
|
|
array('check', 'karmatopicstarter'),
|
|
|
|
array('rule'),
|
|
// Who can do it.... and who is restricted by time limits?
|
|
array('int', 'karmaMinPosts'),
|
|
array('float', 'karmaWaitTime'),
|
|
array('check', 'karmaTimeRestrictAdmins'),
|
|
array('rule'),
|
|
// What does it look like? [smite]?
|
|
array('text', 'karmaLabel'),
|
|
array('text', 'karmaApplaudLabel'),
|
|
array('text', 'karmaSmiteLabel'),
|
|
|
|
array('heading', "Google Member Map"),
|
|
array('check', 'googleMapsEnable'),
|
|
array('check', 'googleMapsEnableLegend'),
|
|
array('text', 'googleMapsKey'),
|
|
array('check', 'googleMapsPinGender'),
|
|
array('int', 'googleMapsPinNumber'),
|
|
array('select', 'googleMapsType', array('G_NORMAL_MAP' => 'Map', 'G_SATELLITE_MAP' => 'Satellite', 'G_HYBRID_MAP' => 'Hybrid')),
|
|
array('select', 'googleSidebar', array('No Sidebar', 'Sidebar Right', 'Sidebar Bottom')),
|
|
array('rule'),
|
|
array('float', 'googleMapsDefaultLat', '25'),
|
|
array('float', 'googleMapsDefaultLong', '25'),
|
|
array('int', 'googleMapsDefaultZoom'),
|
|
array('rule'),
|
|
array('check', 'googleMapsEnableClusterer'),
|
|
array('int', 'googleMapsMinMarkerCluster'),
|
|
array('int', 'googleMapsMaxVisMarker'),
|
|
array('int', 'googleMapsMaxNumClusters'),
|
|
array('int', 'googleMapsMaxLinesCluster'),
|
|
array('heading', &$txt['mods_cat_calendar']),
|
|
// Enable the calendar?
|
|
array('check', 'cal_enabled'),
|
|
array('rule'),
|
|
// How the actual calendar looks...
|
|
array('check', 'cal_daysaslink'),
|
|
array('check', 'cal_showweeknum'),
|
|
array('rule'),
|
|
// Show it on the boardindex?
|
|
array('int', 'cal_days_for_index'),
|
|
array('check', 'cal_showholidaysonindex'),
|
|
array('check', 'cal_showbdaysonindex'),
|
|
array('check', 'cal_showeventsonindex'),
|
|
array('rule'),
|
|
// The default board to post in... kinda alone...
|
|
array('select', 'cal_defaultboard', $calBoards),
|
|
array('rule'),
|
|
// Minimum/Maximum year for events.
|
|
array('int', 'cal_minyear'),
|
|
array('int', 'cal_maxyear'),
|
|
array('rule'),
|
|
// Colors for the calendar display.
|
|
array('text', 'cal_bdaycolor'),
|
|
array('text', 'cal_eventcolor'),
|
|
array('text', 'cal_holidaycolor'),
|
|
array('rule'),
|
|
// One day events or multi-day?
|
|
array('check', 'cal_allowspan'),
|
|
array('int', 'cal_maxspan'),
|
|
//Begin CAPTCHA Mod 0.1
|
|
array('heading', $txt['captchaHeading']),
|
|
array('int', 'captchaChars'),
|
|
array('int', 'captchaMinSize'),
|
|
array('int', 'captchaMaxSize'),
|
|
array('int', 'captchaMaxRotate'),
|
|
array('check', 'captchaNoise'),
|
|
array('check', 'captchaWebSafeColours'),
|
|
array('text', 'captchaBadGuysURL', 50),
|
|
//End CAPTCHA Mod
|
|
array('heading', &$txt['visual_warning_mod']),
|
|
array('text', 'visualw_mess_ban'),
|
|
array('text', 'visualw_mess_mute'),
|
|
array('text', 'visualw_mess_pmod'),
|
|
array('text', 'visualw_mess_warn'),
|
|
array('rule'),
|
|
array('text', 'visualw_color_ban'),
|
|
array('text', 'visualw_color_mute'),
|
|
array('text', 'visualw_color_pmod'),
|
|
array('text', 'visualw_color_warn'),
|
|
array('rule'),
|
|
array('text', 'visualw_image_ban'),
|
|
array('text', 'visualw_image_mute'),
|
|
array('text', 'visualw_image_pmod'),
|
|
array('text', 'visualw_image_warn'),
|
|
array('rule'),
|
|
array('text', 'muteAutoTime'),
|
|
array('text', 'moderationAutoTime'),
|
|
array('text', 'warningAutoTime'),
|
|
array('rule'),
|
|
array('check', 'visualw_pmod_edit'),
|
|
|
|
array('heading', &$txt['nowplaying1']),
|
|
array('check', 'nowplayingEnabled'),
|
|
array('text', 'nowplaying_text', 30),
|
|
array('text', 'nowplaying_image', 30),
|
|
array('rule'),
|
|
array('heading', &$txt['ob_googlebot_modname']),
|
|
// Count all instances of spiders?
|
|
array('check', 'ob_googlebot_count_all_instances'),
|
|
array('check', 'ob_googlebot_display_all_instances'),
|
|
array('check', 'ob_googlebot_display_agent'),
|
|
array('check', 'ob_googlebot_display_own_list'),
|
|
array('rule'),
|
|
array('check', 'ob_googlebot_count_most_online'),
|
|
array('rule'),
|
|
);
|
|
|
|
return $config_vars;
|
|
}
|
|
|
|
function ModifyModSettings()
|
|
{
|
|
global $txt, $scripturl, $context, $settings, $sc;
|
|
|
|
isAllowedTo('admin_forum');
|
|
|
|
// Load the administration bar...
|
|
adminIndex('edit_mods_settings');
|
|
loadLanguage('Help');
|
|
|
|
$config_vars = defineSettings();
|
|
|
|
$context['page_title'] = $txt['modSettings_title'];
|
|
$context['sub_template'] = 'rawdata';
|
|
|
|
$context['raw_data'] = '
|
|
<form action="' . $scripturl . '?action=modifyModSettings2" method="post" name="modsForm">
|
|
<table width="100%" border="0" cellspacing="1" cellpadding="0" class="bordercolor" align="center">
|
|
<tr><td>
|
|
<table border="0" cellspacing="0" cellpadding="4" align="center" width="100%">
|
|
<tr class="titlebg">
|
|
<td colspan="2">
|
|
<a href="' . $scripturl . '?action=helpadmin;help=10" onclick="return reqWin(this.href);" class="help"><img src="' . $settings['images_url'] . '/helptopics.gif" alt="' . $txt[119] . '" border="0" align="top" /></a>
|
|
' . $txt['modSettings_title'] . '
|
|
</td>
|
|
<td align="right" class="smalltext">
|
|
<a href="javascript:document.modsForm.expand.value = \'all\'; document.modsForm.submit();">' . $txt['mods_cat_expand_all'] . '</a>
|
|
</td>
|
|
</tr><tr class="windowbg">
|
|
<td colspan="3" class="smalltext" style="padding: 2ex;">' . $txt['smf3'] . '</td>';
|
|
|
|
// Show them!
|
|
displaySettings($config_vars);
|
|
|
|
$context['raw_data'] .= '
|
|
</tr><tr>
|
|
<td class="windowbg2" colspan="3" align="center" valign="middle"><input type="submit" value="' . $txt[10] . '" /></td>
|
|
</tr>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
<input type="hidden" name="sc" value="' . $sc . '" />
|
|
<input type="hidden" name="expand" value="" />
|
|
</form>';
|
|
}
|
|
|
|
function displaySettings(&$config_vars)
|
|
{
|
|
global $txt, $helptxt, $scripturl, $modSettings, $context, $settings;
|
|
|
|
// If it's not yet set, default it to just 0.
|
|
if (empty($_SESSION['expand']) || isset($_GET['collapseall']))
|
|
$_SESSION['expand'] = serialize(array(0));
|
|
// Otherwise take off the slashes.
|
|
else
|
|
$_SESSION['expand'] = stripslashes($_SESSION['expand']);
|
|
|
|
// Get the actual array.
|
|
$expanded = unserialize($_SESSION['expand']);
|
|
|
|
// Expanding/Collapsing?
|
|
if (isset($_GET['expand']))
|
|
{
|
|
if ($_GET['expand'] == 'all')
|
|
$_GET['expandall'] = true;
|
|
// Collapse.
|
|
elseif (in_array($_GET['expand'], $expanded))
|
|
{
|
|
foreach ($expanded as $k => $v)
|
|
if ($v == $_GET['expand'])
|
|
unset($expanded[$k]);
|
|
}
|
|
// Expand.
|
|
else
|
|
$expanded = array_merge($expanded, array((int) $_GET['expand']));
|
|
|
|
// Reset the array.
|
|
$_SESSION['expand'] = serialize($expanded);
|
|
}
|
|
|
|
// Right now we are showing the boxes, etc.
|
|
$display = true;
|
|
|
|
// 0: type, 1: name, 2:desc, 3:helptext, 4:size/values.
|
|
foreach ($config_vars as $k => $config_var)
|
|
{
|
|
if (empty($config_var)) continue;
|
|
if ($display)
|
|
$context['raw_data'] .= '
|
|
</tr>';
|
|
|
|
// These two are referenced so much they deserve their own variables.
|
|
$config_type = $config_var[0];
|
|
$config_id = isset($config_var[1]) ? $config_var[1] : '';
|
|
|
|
// A rule, no more no less - assuming we're displaying things, go for it.
|
|
if ($config_type == 'rule' && $display)
|
|
{
|
|
$context['raw_data'] .= '
|
|
<tr>
|
|
<td class="windowbg2" colspan="3"><hr size="1" width="100%" class="hrcolor" /></td>';
|
|
continue;
|
|
}
|
|
elseif ($config_type == 'heading')
|
|
{
|
|
// Currently not displaying... close the old cell.
|
|
if (!$display)
|
|
$context['raw_data'] .= '
|
|
</td>
|
|
</tr><tr class="titlebg">';
|
|
else
|
|
$context['raw_data'] .= '
|
|
<tr class="titlebg">';
|
|
|
|
// Show the bar with the +/-. [ + Blah ]...
|
|
$context['raw_data'] .= '
|
|
<td colspan="3" align="center">
|
|
<a name="sect' . $k . '" />
|
|
<table width="100%" border="0" cellpadding="0" cellspacing="0"><tr>
|
|
<td width="16"><a href="javascript:document.modsForm.expand.value = ' . $k . '; document.modsForm.submit();"><img src="' . $settings['images_url'] . '/' . (in_array($k, $expanded) ? 'collapse.gif' : 'expand.gif') . '" alt="*" border="0" /></a></td>
|
|
<td align="center">' . $config_id . '</td>
|
|
<td width="16"></td>
|
|
</tr></table>
|
|
</td>';
|
|
|
|
// If it's not in the expanded array, and we're not expanding everything...
|
|
if (!in_array($k, $expanded) && !isset($_GET['expandall']))
|
|
{
|
|
// Turn off display.
|
|
$display = false;
|
|
|
|
// Start an empty box. (just so it looks better... err, I think it looks better.)
|
|
$context['raw_data'] .= '
|
|
</tr><tr>
|
|
<td class="windowbg2" colspan="3" align="center">';
|
|
}
|
|
// Expand this and set the session var... done so collapsing after expanding all is logical.
|
|
elseif (isset($_GET['expandall']))
|
|
$expanded = array_merge($expanded, array($k));
|
|
// Turn display on otherwise.
|
|
else
|
|
$display = true;
|
|
|
|
continue;
|
|
}
|
|
|
|
// Don't do anything more if we're not displaying anything!
|
|
if (!$display)
|
|
continue;
|
|
|
|
// This setting isn't set!! Ignore it and set it to a blank value so mods are easier to write ;).
|
|
if (!isset($modSettings[$config_id]))
|
|
$modSettings[$config_id] = '';
|
|
|
|
$context['raw_data'] .= '
|
|
<tr>';
|
|
|
|
// Show the little [?] if display is on.
|
|
if (isset($config_var[4]) || isset($helptxt[$config_id]))
|
|
$context['raw_data'] .= '
|
|
<td class="windowbg2" valign="top" width="16"><a href="' . $scripturl . '?action=helpadmin;help=' . (isset($config_var[4]) ? $config_var[4] : $config_id) . '" onclick="return reqWin(this.href);" class="help"><img src="' . $settings['images_url'] . '/helptopics.gif" alt="' . $txt[119] . '" border="0" /></a></td>';
|
|
else
|
|
$context['raw_data'] .= '
|
|
<td class="windowbg2"></td>';
|
|
|
|
// Show the description... if a specific string wasn't passed, look for it... makes it easier ;).
|
|
if ($config_id != '')
|
|
$context['raw_data'] .= '
|
|
<td class="windowbg2"><label for="' . $config_var[1] . '">' . (isset($config_var[3]) ? $config_var[3] : $txt[$config_id]) . '</label></td>
|
|
<td class="windowbg2" width="50%">';
|
|
|
|
// If it's a textbox.... (text, int, float, etc.)
|
|
if (in_array($config_type, array('text', 'int', 'float')))
|
|
$context['raw_data'] .= '<input type="text" id="' . $config_id . '" name="' . $config_id . '" value="' . htmlspecialchars($modSettings[$config_id]) . '"' . (isset($config_var[2]) ? ' size="' . $config_var[2] . '"' : '') . ' />';
|
|
// If it's a password...
|
|
elseif ($config_type == 'password')
|
|
$context['raw_data'] .= '<input type="password" id="' . $config_id . '" name="' . $config_id . '" value="' . htmlspecialchars($modSettings[$config_id]) . '"' . (isset($config_var[2]) ? ' size="' . $config_var[2] . '"' : '') . ' />';
|
|
// If it's a checkbox, we're gonna have to send a hidden 0 with it...
|
|
elseif ($config_var[0] == 'check')
|
|
$context['raw_data'] .= '<input type="hidden" name="' . $config_id . '" value="0" /><input type="checkbox" id="' . $config_id . '" name="' . $config_id . '" value="1"' . (!empty($modSettings[$config_id]) ? ' checked="checked"' : '') . ' class="check" />';
|
|
// A select box... display on...
|
|
elseif ($config_var[0] == 'select')
|
|
{
|
|
$context['raw_data'] .= '
|
|
<select name="' . $config_id . '" id="' . $config_id . '">';
|
|
|
|
/* Display the options. May be:
|
|
array('option 1', 'value' => 'option2', 'etc')
|
|
OR array(array('value', 'option'), array('samevalue', 'option'))
|
|
(this way you can have two options with one value, if needed.) */
|
|
foreach ($config_var[2] as $key => $option)
|
|
if (is_array($option))
|
|
$context['raw_data'] .= '
|
|
<option value="' . $option[0] . '"' . ($option[0] == $modSettings[$config_id] ? ' selected="selected"' : '') . '>' . $option[1] . '</option>';
|
|
else
|
|
$context['raw_data'] .= '
|
|
<option value="' . $key . '"' . ($key == $modSettings[$config_id] ? ' selected="selected"' : '') . '>' . $option . '</option>';
|
|
|
|
$context['raw_data'] .= '
|
|
</select>
|
|
';
|
|
}
|
|
|
|
// End the table cell.
|
|
$context['raw_data'] .= '</td>';
|
|
}
|
|
|
|
// Cleanup the expanded array again:
|
|
if (isset($_GET['expandall']))
|
|
$_SESSION['expand'] = serialize($expanded);
|
|
|
|
// Gotta close it off if we weren't showing anything ;).
|
|
if (!$display)
|
|
$context['raw_data'] .= '
|
|
</td>';
|
|
}
|
|
|
|
// Save the settings.
|
|
function ModifyModSettings2()
|
|
{
|
|
global $scripturl, $db_prefix, $settings;
|
|
|
|
// Verify the user is allowed to be here!
|
|
isAllowedTo('admin_forum');
|
|
checkSession();
|
|
|
|
$setArray = array();
|
|
|
|
// All the checkbox values....
|
|
$config_vars = defineSettings();
|
|
foreach ($config_vars as $var)
|
|
{
|
|
if (!isset($var[1]) || !isset($_POST[$var[1]]))
|
|
continue;
|
|
|
|
// Checkboxes!
|
|
elseif ($var[0] == 'check')
|
|
$setArray[$var[1]] = !empty($_POST[$var[1]]) ? '1' : '0';
|
|
// Select boxes!
|
|
elseif ($var[0] == 'select' && in_array($_POST[$var[1]], array_keys($var[2])))
|
|
$setArray[$var[1]] = $_POST[$var[1]];
|
|
// Integers!
|
|
elseif ($var[0] == 'int')
|
|
$setArray[$var[1]] = (int) $_POST[$var[1]];
|
|
// Floating point!
|
|
elseif ($var[0] == 'float')
|
|
$setArray[$var[1]] = (float) $_POST[$var[1]];
|
|
// Text and passwords!
|
|
elseif ($var[0] == 'text' || $var[0] == 'password')
|
|
$setArray[$var[1]] = $_POST[$var[1]];
|
|
}
|
|
|
|
updateSettings($setArray);
|
|
|
|
updateStats('calendar');
|
|
|
|
loadUserSettings();
|
|
writeLog();
|
|
|
|
// Expand something?
|
|
if (isset($_POST['expand']) && $_POST['expand'] != '')
|
|
redirectexit('action=modifyModSettings;expand=' . $_POST['expand'] . '#sect' . $_POST['expand']);
|
|
|
|
// Back to administration.
|
|
redirectexit('action=modifyModSettings');
|
|
}
|
|
|
|
?>
|