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(' ', '&nbsp;', '"3" ' . $txt['smf236'] . ': <b>1 ... 4 [5] 6 ... 9</b>') . '<br />' . str_replace(' ', '&nbsp;', '"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