Mercurial > hg > vamp-website
diff forum/Sources/ModSettings.php @ 76:e3e11437ecea website
Add forum code
author | Chris Cannam |
---|---|
date | Sun, 07 Jul 2013 11:25:48 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/forum/Sources/ModSettings.php Sun Jul 07 11:25:48 2013 +0200 @@ -0,0 +1,330 @@ +<?php +/********************************************************************************** +* ModSettings.php * +*********************************************************************************** +* SMF: Simple Machines Forum * +* Open-Source Project Inspired by Zef Hemel (zef@zefhemel.com) * +* =============================================================================== * +* Software Version: SMF 1.1 * +* Software by: Simple Machines (http://www.simplemachines.org) * +* Copyright 2006 by: Simple Machines LLC (http://www.simplemachines.org) * +* 2001-2006 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 Simple Machines LLC. * +* * +* 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. It uses the following functions: + + void ModifyFeatureSettings() + // !!! + + void ModifyFeatureSettings2() + // !!! + + void ModifyBasicSettings() + // !!! + + void ModifyLayoutSettings() + // !!! + + void ModifyKarmaSettings() + // !!! + + Adding new settings to the $modSettings array: + --------------------------------------------------------------------------- +// !!! +*/ + +/* Adding options to one of the setting screens 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 large text input box. Used for textual values spanning multiple lines. + ie. array('large_text', 'nameInModSettingsAndSQL', 'OptionalNumberOfRows', + &$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. */ + +// This function passes control through to the relevant tab. +function ModifyFeatureSettings() +{ + global $context, $txt, $scripturl, $modSettings, $sourcedir; + + // You need to be an admin to edit settings! + isAllowedTo('admin_forum'); + + // All the admin bar, to make it right. + adminIndex('edit_mods_settings'); + loadLanguage('Help'); + loadLanguage('ModSettings'); + + // Will need the utility functions from here. + require_once($sourcedir . '/ManageServer.php'); + + $context['page_title'] = $txt['modSettings_title']; + $context['sub_template'] = 'show_settings'; + + $subActions = array( + 'basic' => 'ModifyBasicSettings', + 'layout' => 'ModifyLayoutSettings', + 'karma' => 'ModifyKarmaSettings', + ); + + // By default do the basic settings. + $_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : 'basic'; + $context['sub_action'] = $_REQUEST['sa']; + + // Load up all the tabs... + $context['admin_tabs'] = array( + 'title' => &$txt['modSettings_title'], + 'help' => 'modsettings', + 'description' => $txt['smf3'], + 'tabs' => array( + 'basic' => array( + 'title' => $txt['mods_cat_features'], + 'href' => $scripturl . '?action=featuresettings;sa=basic;sesc=' . $context['session_id'], + ), + 'layout' => array( + 'title' => $txt['mods_cat_layout'], + 'href' => $scripturl . '?action=featuresettings;sa=layout;sesc=' . $context['session_id'], + ), + 'karma' => array( + 'title' => $txt['smf293'], + 'href' => $scripturl . '?action=featuresettings;sa=karma;sesc=' . $context['session_id'], + 'is_last' => true, + ), + ), + ); + + // Select the right tab based on the sub action. + if (isset($context['admin_tabs']['tabs'][$context['sub_action']])) + $context['admin_tabs']['tabs'][$context['sub_action']]['is_selected'] = true; + + // Call the right function for this sub-acton. + $subActions[$_REQUEST['sa']](); +} + +// This function basically just redirects to the right save function. +function ModifyFeatureSettings2() +{ + global $context, $txt, $scripturl, $modSettings, $sourcedir; + + isAllowedTo('admin_forum'); + loadLanguage('ModSettings'); + + // Quick session check... + checkSession(); + + require_once($sourcedir . '/ManageServer.php'); + + $subActions = array( + 'basic' => 'ModifyBasicSettings', + 'layout' => 'ModifyLayoutSettings', + 'karma' => 'ModifyKarmaSettings', + ); + + // Default to core (I assume) + $_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : 'basic'; + + // Actually call the saving function. + $subActions[$_REQUEST['sa']](); +} + +function ModifyBasicSettings() +{ + global $txt, $scripturl, $context, $settings, $sc, $modSettings; + + $config_vars = array( + // Big Options... polls, sticky, bbc.... + array('select', 'pollMode', array(&$txt['smf34'], &$txt['smf32'], &$txt['smf33'])), + '', + // 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('check', 'enable_buddylist'), + array('text', 'default_personalText'), + array('int', 'max_signatureLength'), + '', + // 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', 'failed_login_threshold'), + array('int', 'lastActive'), + array('check', 'trackStats'), + array('check', 'hitStats'), + array('check', 'enableErrorLogging'), + array('check', 'securityDisable'), + '', + // Reactive on email, and approve on delete + array('check', 'send_validation_onChange'), + array('check', 'approveAccountDeletion'), + '', + // Option-ish things... miscellaneous sorta. + array('check', 'allow_disableAnnounce'), + array('check', 'disallow_sendBody'), + array('check', 'modlog_enabled'), + array('check', 'queryless_urls'), + '', + // Width/Height image reduction. + array('int', 'max_image_width'), + array('int', 'max_image_height'), + '', + // Reporting of personal messages? + array('check', 'enableReportPM'), + ); + + // Saving? + if (isset($_GET['save'])) + { + // Fix PM settings. + $_POST['pm_spam_settings'] = (int) $_POST['max_pm_recipients'] . ',' . (int) $_POST['pm_posts_verification'] . ',' . (int) $_POST['pm_posts_per_hour']; + $save_vars = $config_vars; + $save_vars[] = array('text', 'pm_spam_settings'); + + saveDBSettings($save_vars); + + writeLog(); + redirectexit('action=featuresettings;sa=basic'); + } + + // Hack for PM spam settings. + list ($modSettings['max_pm_recipients'], $modSettings['pm_posts_verification'], $modSettings['pm_posts_per_hour']) = explode(',', $modSettings['pm_spam_settings']); + $config_vars[] = array('int', 'max_pm_recipients'); + $config_vars[] = array('int', 'pm_posts_verification'); + $config_vars[] = array('int', 'pm_posts_per_hour'); + + $context['post_url'] = $scripturl . '?action=featuresettings2;save;sa=basic'; + $context['settings_title'] = $txt['mods_cat_features']; + + prepareDBSettingContext($config_vars); +} + +function ModifyLayoutSettings() +{ + global $txt, $scripturl, $context, $settings, $sc; + + $config_vars = array( + // Compact pages? + array('check', 'compactTopicPagesEnable'), + array('int', 'compactTopicPagesContiguous', null, $txt['smf235'] . '<div class="smalltext">' . str_replace(' ', ' ', '"3" ' . $txt['smf236'] . ': <b>1 ... 4 [5] 6 ... 9</b>') . '<br />' . str_replace(' ', ' ', '"5" ' . $txt['smf236'] . ': <b>1 ... 3 4 [5] 6 7 ... 9</b>') . '</div>'), + '', + // 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'), + '', + // Pagination stuff. + array('int', 'defaultMaxMembers'), + '', + // This is like debugging sorta. + array('check', 'timeLoadPageEnable'), + array('check', 'disableHostnameLookup'), + '', + // Who's online. + array('check', 'who_enabled'), + ); + + // Saving? + if (isset($_GET['save'])) + { + saveDBSettings($config_vars); + redirectexit('action=featuresettings;sa=layout'); + + loadUserSettings(); + writeLog(); + } + + $context['post_url'] = $scripturl . '?action=featuresettings2;save;sa=layout'; + $context['settings_title'] = $txt['mods_cat_layout']; + + prepareDBSettingContext($config_vars); +} + +function ModifyKarmaSettings() +{ + global $txt, $scripturl, $context, $settings, $sc; + + $config_vars = array( + // Karma - On or off? + array('select', 'karmaMode', explode('|', $txt['smf64'])), + '', + // Who can do it.... and who is restricted by time limits? + array('int', 'karmaMinPosts'), + array('float', 'karmaWaitTime'), + array('check', 'karmaTimeRestrictAdmins'), + '', + // What does it look like? [smite]? + array('text', 'karmaLabel'), + array('text', 'karmaApplaudLabel'), + array('text', 'karmaSmiteLabel'), + ); + + // Saving? + if (isset($_GET['save'])) + { + saveDBSettings($config_vars); + redirectexit('action=featuresettings;sa=karma'); + } + + $context['post_url'] = $scripturl . '?action=featuresettings2;save;sa=karma'; + $context['settings_title'] = $txt['smf293']; + + prepareDBSettingContext($config_vars); +} + +?> \ No newline at end of file