~canonical-sysadmins/wordpress/4.8.2

1 by Jacek Nykis
Initial commit
1
<?php
2
/**
3
 * General settings administration panel.
4
 *
5
 * @package WordPress
6
 * @subpackage Administration
7
 */
8
9
/** WordPress Administration Bootstrap */
10
require_once( dirname( __FILE__ ) . '/admin.php' );
11
1.1.1 by Nick Moffitt
New Upstream Version 4.1
12
/** WordPress Translation Install API */
13
require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
14
1 by Jacek Nykis
Initial commit
15
if ( ! current_user_can( 'manage_options' ) )
1.1.18 by Barry Price
new upstream release 4.6
16
	wp_die( __( 'Sorry, you are not allowed to manage options for this site.' ) );
1 by Jacek Nykis
Initial commit
17
18
$title = __('General Settings');
19
$parent_file = 'options-general.php';
1.1.18 by Barry Price
new upstream release 4.6
20
/* translators: date and time format for exact current time, mainly about timezones, see https://secure.php.net/date */
1.1.4 by Paul Gear
new upstream release 4.2
21
$timezone_format = _x('Y-m-d H:i:s', 'timezone date format');
1 by Jacek Nykis
Initial commit
22
23
add_action('admin_head', 'options_general_add_js');
24
25
$options_help = '<p>' . __('The fields on this screen determine some of the basics of your site setup.') . '</p>' .
26
	'<p>' . __('Most themes display the site title at the top of every page, in the title bar of the browser, and as the identifying name for syndicated feeds. The tagline is also displayed by many themes.') . '</p>';
27
28
if ( ! is_multisite() ) {
29
	$options_help .= '<p>' . __('The WordPress URL and the Site URL can be the same (example.com) or different; for example, having the WordPress core files (example.com/wordpress) in a subdirectory instead of the root directory.') . '</p>' .
30
		'<p>' . __('If you want site visitors to be able to register themselves, as opposed to by the site administrator, check the membership box. A default user role can be set for all new users, whether self-registered or registered by the site admin.') . '</p>';
31
}
32
1.1.1 by Nick Moffitt
New Upstream Version 4.1
33
$options_help .= '<p>' . __( 'You can set the language, and the translation files will be automatically downloaded and installed (available if your filesystem is writable).' ) . '</p>' .
34
	'<p>' . __( 'UTC means Coordinated Universal Time.' ) . '</p>' .
1 by Jacek Nykis
Initial commit
35
	'<p>' . __( 'You must click the Save Changes button at the bottom of the screen for new settings to take effect.' ) . '</p>';
36
37
get_current_screen()->add_help_tab( array(
38
	'id'      => 'overview',
39
	'title'   => __('Overview'),
40
	'content' => $options_help,
41
) );
42
43
get_current_screen()->set_help_sidebar(
44
	'<p><strong>' . __('For more information:') . '</strong></p>' .
1.1.20 by Haw Loeung
New upstream version 4.7.
45
	'<p>' . __('<a href="https://codex.wordpress.org/Settings_General_Screen">Documentation on General Settings</a>') . '</p>' .
46
	'<p>' . __('<a href="https://wordpress.org/support/">Support Forums</a>') . '</p>'
1 by Jacek Nykis
Initial commit
47
);
48
49
include( ABSPATH . 'wp-admin/admin-header.php' );
50
?>
51
52
<div class="wrap">
1.1.9 by Ryan Finnie
new upstream release 4.3
53
<h1><?php echo esc_html( $title ); ?></h1>
1 by Jacek Nykis
Initial commit
54
55
<form method="post" action="options.php" novalidate="novalidate">
56
<?php settings_fields('general'); ?>
57
58
<table class="form-table">
59
<tr>
60
<th scope="row"><label for="blogname"><?php _e('Site Title') ?></label></th>
61
<td><input name="blogname" type="text" id="blogname" value="<?php form_option('blogname'); ?>" class="regular-text" /></td>
62
</tr>
63
<tr>
64
<th scope="row"><label for="blogdescription"><?php _e('Tagline') ?></label></th>
1.1.4 by Paul Gear
new upstream release 4.2
65
<td><input name="blogdescription" type="text" id="blogdescription" aria-describedby="tagline-description" value="<?php form_option('blogdescription'); ?>" class="regular-text" />
66
<p class="description" id="tagline-description"><?php _e( 'In a few words, explain what this site is about.' ) ?></p></td>
1 by Jacek Nykis
Initial commit
67
</tr>
68
<?php if ( !is_multisite() ) { ?>
69
<tr>
70
<th scope="row"><label for="siteurl"><?php _e('WordPress Address (URL)') ?></label></th>
71
<td><input name="siteurl" type="url" id="siteurl" value="<?php form_option( 'siteurl' ); ?>"<?php disabled( defined( 'WP_SITEURL' ) ); ?> class="regular-text code<?php if ( defined( 'WP_SITEURL' ) ) echo ' disabled' ?>" /></td>
72
</tr>
73
<tr>
74
<th scope="row"><label for="home"><?php _e('Site Address (URL)') ?></label></th>
1.1.4 by Paul Gear
new upstream release 4.2
75
<td><input name="home" type="url" id="home" aria-describedby="home-description" value="<?php form_option( 'home' ); ?>"<?php disabled( defined( 'WP_HOME' ) ); ?> class="regular-text code<?php if ( defined( 'WP_HOME' ) ) echo ' disabled' ?>" />
1.1.14 by Nick Moffitt
new upstream release 4.5
76
<?php if ( ! defined( 'WP_HOME' ) ) : ?>
1.1.4 by Paul Gear
new upstream release 4.2
77
<p class="description" id="home-description"><?php _e( 'Enter the address here if you <a href="https://codex.wordpress.org/Giving_WordPress_Its_Own_Directory">want your site home page to be different from your WordPress installation directory.</a>' ); ?></p></td>
1.1.11 by Manuel Seelaus
new upstream release 4.4
78
<?php endif; ?>
1 by Jacek Nykis
Initial commit
79
</tr>
80
<tr>
1.1.11 by Manuel Seelaus
new upstream release 4.4
81
<th scope="row"><label for="admin_email"><?php _e('Email Address') ?> </label></th>
1.1.4 by Paul Gear
new upstream release 4.2
82
<td><input name="admin_email" type="email" id="admin_email" aria-describedby="admin-email-description" value="<?php form_option( 'admin_email' ); ?>" class="regular-text ltr" />
83
<p class="description" id="admin-email-description"><?php _e( 'This address is used for admin purposes, like new user notification.' ) ?></p></td>
1 by Jacek Nykis
Initial commit
84
</tr>
85
<tr>
86
<th scope="row"><?php _e('Membership') ?></th>
87
<td> <fieldset><legend class="screen-reader-text"><span><?php _e('Membership') ?></span></legend><label for="users_can_register">
88
<input name="users_can_register" type="checkbox" id="users_can_register" value="1" <?php checked('1', get_option('users_can_register')); ?> />
89
<?php _e('Anyone can register') ?></label>
90
</fieldset></td>
91
</tr>
92
<tr>
93
<th scope="row"><label for="default_role"><?php _e('New User Default Role') ?></label></th>
94
<td>
95
<select name="default_role" id="default_role"><?php wp_dropdown_roles( get_option('default_role') ); ?></select>
96
</td>
97
</tr>
98
<?php } else { ?>
99
<tr>
1.1.11 by Manuel Seelaus
new upstream release 4.4
100
<th scope="row"><label for="new_admin_email"><?php _e('Email Address') ?> </label></th>
1.1.4 by Paul Gear
new upstream release 4.2
101
<td><input name="new_admin_email" type="email" id="new_admin_email" aria-describedby="new-admin-email-description" value="<?php form_option( 'admin_email' ); ?>" class="regular-text ltr" />
1.1.11 by Manuel Seelaus
new upstream release 4.4
102
<p class="description" id="new-admin-email-description"><?php _e( 'This address is used for admin purposes. If you change this we will send you an email at your new address to confirm it. <strong>The new address will not become active until confirmed.</strong>' ) ?></p>
1 by Jacek Nykis
Initial commit
103
<?php
104
$new_admin_email = get_option( 'new_admin_email' );
105
if ( $new_admin_email && $new_admin_email != get_option('admin_email') ) : ?>
106
<div class="updated inline">
1.1.11 by Manuel Seelaus
new upstream release 4.4
107
<p><?php
1.1.14 by Nick Moffitt
new upstream release 4.5
108
	printf(
109
		/* translators: %s: new admin email */
110
		__( 'There is a pending change of the admin email to %s.' ),
111
		'<code>' . esc_html( $new_admin_email ) . '</code>'
112
	);
113
	printf(
114
		' <a href="%1$s">%2$s</a>',
1.1.18 by Barry Price
new upstream release 4.6
115
		esc_url( wp_nonce_url( admin_url( 'options.php?dismiss=new_admin_email' ), 'dismiss-' . get_current_blog_id() . '-new_admin_email' ) ),
1.1.14 by Nick Moffitt
new upstream release 4.5
116
		__( 'Cancel' )
1.1.11 by Manuel Seelaus
new upstream release 4.4
117
	);
118
?></p>
1 by Jacek Nykis
Initial commit
119
</div>
120
<?php endif; ?>
121
</td>
122
</tr>
1.1.26 by Barry Price
new upstream release 4.8
123
<?php }
124
125
$languages = get_available_languages();
126
$translations = wp_get_available_translations();
127
if ( ! is_multisite() && defined( 'WPLANG' ) && '' !== WPLANG && 'en_US' !== WPLANG && ! in_array( WPLANG, $languages ) ) {
128
	$languages[] = WPLANG;
129
}
130
if ( ! empty( $languages ) || ! empty( $translations ) ) {
131
	?>
132
	<tr>
133
		<th scope="row"><label for="WPLANG"><?php _e( 'Site Language' ); ?></label></th>
134
		<td>
135
			<?php
136
			$locale = get_locale();
137
			if ( ! in_array( $locale, $languages ) ) {
138
				$locale = '';
139
			}
140
141
			wp_dropdown_languages( array(
142
				'name'         => 'WPLANG',
143
				'id'           => 'WPLANG',
144
				'selected'     => $locale,
145
				'languages'    => $languages,
146
				'translations' => $translations,
147
				'show_available_translations' => ( ! is_multisite() || is_super_admin() ) && wp_can_install_language_pack(),
148
			) );
149
150
			// Add note about deprecated WPLANG constant.
151
			if ( defined( 'WPLANG' ) && ( '' !== WPLANG ) && $locale !== WPLANG ) {
152
				if ( is_multisite() && current_user_can( 'manage_network_options' )
153
					|| ! is_multisite() && current_user_can( 'manage_options' ) ) {
154
					?>
155
					<p class="description">
156
						<strong><?php _e( 'Note:' ); ?></strong> <?php printf( __( 'The %s constant in your %s file is no longer needed.' ), '<code>WPLANG</code>', '<code>wp-config.php</code>' ); ?>
157
					</p>
158
					<?php
159
				}
160
				_deprecated_argument( 'define()', '4.0.0', sprintf( __( 'The %s constant in your %s file is no longer needed.' ), 'WPLANG', 'wp-config.php' ) );
161
			}
162
			?>
163
		</td>
164
	</tr>
165
	<?php
166
}
167
?>
1 by Jacek Nykis
Initial commit
168
<tr>
169
<?php
170
$current_offset = get_option('gmt_offset');
171
$tzstring = get_option('timezone_string');
172
173
$check_zone_info = true;
174
175
// Remove old Etc mappings. Fallback to gmt_offset.
176
if ( false !== strpos($tzstring,'Etc/GMT') )
177
	$tzstring = '';
178
179
if ( empty($tzstring) ) { // Create a UTC+- zone if no timezone string exists
180
	$check_zone_info = false;
181
	if ( 0 == $current_offset )
182
		$tzstring = 'UTC+0';
183
	elseif ($current_offset < 0)
184
		$tzstring = 'UTC' . $current_offset;
185
	else
186
		$tzstring = 'UTC+' . $current_offset;
187
}
188
189
?>
190
<th scope="row"><label for="timezone_string"><?php _e('Timezone') ?></label></th>
191
<td>
192
1.1.4 by Paul Gear
new upstream release 4.2
193
<select id="timezone_string" name="timezone_string" aria-describedby="timezone-description">
1.1.20 by Haw Loeung
New upstream version 4.7.
194
	<?php echo wp_timezone_choice( $tzstring, get_user_locale() ); ?>
1 by Jacek Nykis
Initial commit
195
</select>
196
1.1.20 by Haw Loeung
New upstream version 4.7.
197
<p class="description" id="timezone-description"><?php _e( 'Choose either a city in the same timezone as you or a UTC timezone offset.' ); ?></p>
1.1.14 by Nick Moffitt
new upstream release 4.5
198
199
<p class="timezone-info">
1.1.11 by Manuel Seelaus
new upstream release 4.4
200
	<span id="utc-time"><?php
1.1.14 by Nick Moffitt
new upstream release 4.5
201
		/* translators: 1: UTC abbreviation, 2: UTC time */
202
		printf( __( 'Universal time (%1$s) is %2$s.' ),
203
			'<abbr>' . __( 'UTC' ) . '</abbr>',
1.1.20 by Haw Loeung
New upstream version 4.7.
204
			'<code>' . date_i18n( $timezone_format, false, true ) . '</code>'
1.1.11 by Manuel Seelaus
new upstream release 4.4
205
		);
206
	?></span>
1.1.14 by Nick Moffitt
new upstream release 4.5
207
<?php if ( get_option( 'timezone_string' ) || ! empty( $current_offset ) ) : ?>
1.1.11 by Manuel Seelaus
new upstream release 4.4
208
	<span id="local-time"><?php
209
		/* translators: %s: local time */
1.1.14 by Nick Moffitt
new upstream release 4.5
210
		printf( __( 'Local time is %s.' ),
1.1.11 by Manuel Seelaus
new upstream release 4.4
211
			'<code>' . date_i18n( $timezone_format ) . '</code>'
212
		);
213
	?></span>
1 by Jacek Nykis
Initial commit
214
<?php endif; ?>
1.1.14 by Nick Moffitt
new upstream release 4.5
215
</p>
216
217
<?php if ( $check_zone_info && $tzstring ) : ?>
218
<p class="timezone-info">
1 by Jacek Nykis
Initial commit
219
<span>
220
	<?php
221
	// Set TZ so localtime works.
222
	date_default_timezone_set($tzstring);
223
	$now = localtime(time(), true);
224
	if ( $now['tm_isdst'] )
225
		_e('This timezone is currently in daylight saving time.');
226
	else
227
		_e('This timezone is currently in standard time.');
228
	?>
229
	<br />
230
	<?php
231
	$allowed_zones = timezone_identifiers_list();
232
233
	if ( in_array( $tzstring, $allowed_zones) ) {
234
		$found = false;
235
		$date_time_zone_selected = new DateTimeZone($tzstring);
236
		$tz_offset = timezone_offset_get($date_time_zone_selected, date_create());
237
		$right_now = time();
238
		foreach ( timezone_transitions_get($date_time_zone_selected) as $tr) {
239
			if ( $tr['ts'] > $right_now ) {
240
			    $found = true;
241
				break;
242
			}
243
		}
244
245
		if ( $found ) {
246
			echo ' ';
247
			$message = $tr['isdst'] ?
1.1.11 by Manuel Seelaus
new upstream release 4.4
248
				/* translators: %s: date and time  */
249
				__( 'Daylight saving time begins on: %s.')  :
250
				/* translators: %s: date and time  */
251
				__( 'Standard time begins on: %s.' );
1 by Jacek Nykis
Initial commit
252
			// Add the difference between the current offset and the new offset to ts to get the correct transition time from date_i18n().
1.1.11 by Manuel Seelaus
new upstream release 4.4
253
			printf( $message,
254
				'<code>' . date_i18n(
1.1.14 by Nick Moffitt
new upstream release 4.5
255
					__( 'F j, Y' ) . ' ' . __( 'g:i a' ),
1.1.11 by Manuel Seelaus
new upstream release 4.4
256
					$tr['ts'] + ( $tz_offset - $tr['offset'] )
257
				) . '</code>'
258
			);
1 by Jacek Nykis
Initial commit
259
		} else {
1.1.11 by Manuel Seelaus
new upstream release 4.4
260
			_e( 'This timezone does not observe daylight saving time.' );
1 by Jacek Nykis
Initial commit
261
		}
262
	}
263
	// Set back to UTC.
264
	date_default_timezone_set('UTC');
265
	?>
266
	</span>
1.1.14 by Nick Moffitt
new upstream release 4.5
267
</p>
1 by Jacek Nykis
Initial commit
268
<?php endif; ?>
269
</td>
270
271
</tr>
272
<tr>
273
<th scope="row"><?php _e('Date Format') ?></th>
274
<td>
275
	<fieldset><legend class="screen-reader-text"><span><?php _e('Date Format') ?></span></legend>
276
<?php
277
	/**
1.1.18 by Barry Price
new upstream release 4.6
278
	* Filters the default date formats.
1 by Jacek Nykis
Initial commit
279
	*
280
	* @since 2.7.0
281
	* @since 4.0.0 Added ISO date standard YYYY-MM-DD format.
282
	*
283
	* @param array $default_date_formats Array of default date formats.
284
	*/
285
	$date_formats = array_unique( apply_filters( 'date_formats', array( __( 'F j, Y' ), 'Y-m-d', 'm/d/Y', 'd/m/Y' ) ) );
286
287
	$custom = true;
288
289
	foreach ( $date_formats as $format ) {
1.1.14 by Nick Moffitt
new upstream release 4.5
290
		echo "\t<label><input type='radio' name='date_format' value='" . esc_attr( $format ) . "'";
1 by Jacek Nykis
Initial commit
291
		if ( get_option('date_format') === $format ) { // checked() uses "==" rather than "==="
292
			echo " checked='checked'";
293
			$custom = false;
294
		}
1.1.14 by Nick Moffitt
new upstream release 4.5
295
		echo ' /> <span class="date-time-text format-i18n">' . date_i18n( $format ) . '</span><code>' . esc_html( $format ) . "</code></label><br />\n";
1 by Jacek Nykis
Initial commit
296
	}
297
1.1.14 by Nick Moffitt
new upstream release 4.5
298
	echo '<label><input type="radio" name="date_format" id="date_format_custom_radio" value="\c\u\s\t\o\m"';
1 by Jacek Nykis
Initial commit
299
	checked( $custom );
1.1.26 by Barry Price
new upstream release 4.8
300
	echo '/> <span class="date-time-text date-time-custom-text">' . __( 'Custom:' ) . '<span class="screen-reader-text"> ' . __( 'enter a custom date format in the following field' ) . '</span></span></label>' .
1.1.14 by Nick Moffitt
new upstream release 4.5
301
		'<label for="date_format_custom" class="screen-reader-text">' . __( 'Custom date format:' ) . '</label>' .
1.1.26 by Barry Price
new upstream release 4.8
302
		'<input type="text" name="date_format_custom" id="date_format_custom" value="' . esc_attr( get_option( 'date_format' ) ) . '" class="small-text" />' .
1.1.14 by Nick Moffitt
new upstream release 4.5
303
		'<span class="screen-reader-text">' . __( 'example:' ) . ' </span> <span class="example">' . date_i18n( get_option( 'date_format' ) ) . '</span>' .
304
		"<span class='spinner'></span>\n";
1 by Jacek Nykis
Initial commit
305
?>
306
	</fieldset>
307
</td>
308
</tr>
309
<tr>
310
<th scope="row"><?php _e('Time Format') ?></th>
311
<td>
312
	<fieldset><legend class="screen-reader-text"><span><?php _e('Time Format') ?></span></legend>
313
<?php
314
	/**
1.1.18 by Barry Price
new upstream release 4.6
315
	* Filters the default time formats.
1 by Jacek Nykis
Initial commit
316
	*
317
	* @since 2.7.0
318
	*
319
	* @param array $default_time_formats Array of default time formats.
320
	*/
321
	$time_formats = array_unique( apply_filters( 'time_formats', array( __( 'g:i a' ), 'g:i A', 'H:i' ) ) );
322
323
	$custom = true;
324
325
	foreach ( $time_formats as $format ) {
1.1.14 by Nick Moffitt
new upstream release 4.5
326
		echo "\t<label><input type='radio' name='time_format' value='" . esc_attr( $format ) . "'";
1 by Jacek Nykis
Initial commit
327
		if ( get_option('time_format') === $format ) { // checked() uses "==" rather than "==="
328
			echo " checked='checked'";
329
			$custom = false;
330
		}
1.1.14 by Nick Moffitt
new upstream release 4.5
331
		echo ' /> <span class="date-time-text format-i18n">' . date_i18n( $format ) . '</span><code>' . esc_html( $format ) . "</code></label><br />\n";
1 by Jacek Nykis
Initial commit
332
	}
333
1.1.14 by Nick Moffitt
new upstream release 4.5
334
	echo '<label><input type="radio" name="time_format" id="time_format_custom_radio" value="\c\u\s\t\o\m"';
1 by Jacek Nykis
Initial commit
335
	checked( $custom );
1.1.26 by Barry Price
new upstream release 4.8
336
	echo '/> <span class="date-time-text date-time-custom-text">' . __( 'Custom:' ) . '<span class="screen-reader-text"> ' . __( 'enter a custom time format in the following field' ) . '</span></span></label>' .
1.1.14 by Nick Moffitt
new upstream release 4.5
337
		'<label for="time_format_custom" class="screen-reader-text">' . __( 'Custom time format:' ) . '</label>' .
1.1.26 by Barry Price
new upstream release 4.8
338
		'<input type="text" name="time_format_custom" id="time_format_custom" value="' . esc_attr( get_option( 'time_format' ) ) . '" class="small-text" />' .
1.1.14 by Nick Moffitt
new upstream release 4.5
339
		'<span class="screen-reader-text">' . __( 'example:' ) . ' </span> <span class="example">' . date_i18n( get_option( 'time_format' ) ) . '</span>' .
340
		"<span class='spinner'></span>\n";
1 by Jacek Nykis
Initial commit
341
1.1.14 by Nick Moffitt
new upstream release 4.5
342
	echo "\t<p class='date-time-doc'>" . __('<a href="https://codex.wordpress.org/Formatting_Date_and_Time">Documentation on date and time formatting</a>.') . "</p>\n";
1 by Jacek Nykis
Initial commit
343
?>
344
	</fieldset>
345
</td>
346
</tr>
347
<tr>
348
<th scope="row"><label for="start_of_week"><?php _e('Week Starts On') ?></label></th>
349
<td><select name="start_of_week" id="start_of_week">
350
<?php
1.1.9 by Ryan Finnie
new upstream release 4.3
351
/**
352
 * @global WP_Locale $wp_locale
353
 */
1.1.4 by Paul Gear
new upstream release 4.2
354
global $wp_locale;
355
1 by Jacek Nykis
Initial commit
356
for ($day_index = 0; $day_index <= 6; $day_index++) :
357
	$selected = (get_option('start_of_week') == $day_index) ? 'selected="selected"' : '';
358
	echo "\n\t<option value='" . esc_attr($day_index) . "' $selected>" . $wp_locale->get_weekday($day_index) . '</option>';
359
endfor;
360
?>
361
</select></td>
362
</tr>
363
<?php do_settings_fields('general', 'default'); ?>
364
</table>
365
366
<?php do_settings_sections('general'); ?>
367
368
<?php submit_button(); ?>
369
</form>
370
371
</div>
372
373
<?php include( ABSPATH . 'wp-admin/admin-footer.php' ); ?>