web/wp-content/themes/malleable/library/admin/theme-settings-admin.php
author ymh
Fri, 12 Mar 2010 13:29:04 +0000
changeset 1 0d28b7c10758
permissions -rw-r--r--
First commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
0d28b7c10758 First commit
ymh
parents:
diff changeset
     1
<?php
0d28b7c10758 First commit
ymh
parents:
diff changeset
     2
0d28b7c10758 First commit
ymh
parents:
diff changeset
     3
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
     4
* Returns an array of the theme settings
0d28b7c10758 First commit
ymh
parents:
diff changeset
     5
* Add all options to a single array
0d28b7c10758 First commit
ymh
parents:
diff changeset
     6
* This makes one entry in the database
0d28b7c10758 First commit
ymh
parents:
diff changeset
     7
*
0d28b7c10758 First commit
ymh
parents:
diff changeset
     8
* @since 0.1
0d28b7c10758 First commit
ymh
parents:
diff changeset
     9
*/
0d28b7c10758 First commit
ymh
parents:
diff changeset
    10
function malleable_theme_settings() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    11
	$settings_arr = array(
0d28b7c10758 First commit
ymh
parents:
diff changeset
    12
		'general_address' => false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    13
		'general_address_street' => false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    14
		'general_address_city' => false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    15
		'general_address_state' => false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    16
		'general_address_zip' => false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    17
		'general_address_phone' => false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    18
				
0d28b7c10758 First commit
ymh
parents:
diff changeset
    19
		'feature_category' => false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    20
		'feature_num_posts' => false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    21
		'excerpt_category' => false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    22
		'excerpt_num_posts' => false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    23
		'headlines_category' => array(),
0d28b7c10758 First commit
ymh
parents:
diff changeset
    24
		'headlines_num_posts' => false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    25
	);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    26
0d28b7c10758 First commit
ymh
parents:
diff changeset
    27
	return apply_filters('malleable_settings_args', $settings_arr);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    28
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    29
0d28b7c10758 First commit
ymh
parents:
diff changeset
    30
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
    31
* Handles the theme settings
0d28b7c10758 First commit
ymh
parents:
diff changeset
    32
*
0d28b7c10758 First commit
ymh
parents:
diff changeset
    33
* @since 0.1
0d28b7c10758 First commit
ymh
parents:
diff changeset
    34
*/
0d28b7c10758 First commit
ymh
parents:
diff changeset
    35
function malleable_theme_page() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    36
0d28b7c10758 First commit
ymh
parents:
diff changeset
    37
	/*
0d28b7c10758 First commit
ymh
parents:
diff changeset
    38
	* Variables to be used throughout the settings page
0d28b7c10758 First commit
ymh
parents:
diff changeset
    39
	*/
0d28b7c10758 First commit
ymh
parents:
diff changeset
    40
	$theme_name = __('Malleable','malleable');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    41
	$settings_page_title = __('Malleable Theme Settings','malleable');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    42
	$hidden_field_name = 'malleable_submit_hidden';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    43
0d28b7c10758 First commit
ymh
parents:
diff changeset
    44
	/*
0d28b7c10758 First commit
ymh
parents:
diff changeset
    45
	* Get the theme settings and add them to the database
0d28b7c10758 First commit
ymh
parents:
diff changeset
    46
	*/
0d28b7c10758 First commit
ymh
parents:
diff changeset
    47
	$settings_arr = malleable_theme_settings();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    48
	add_option('malleable_theme_settings', $settings_arr);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    49
0d28b7c10758 First commit
ymh
parents:
diff changeset
    50
	/*
0d28b7c10758 First commit
ymh
parents:
diff changeset
    51
	* Set form data IDs the same as settings keys
0d28b7c10758 First commit
ymh
parents:
diff changeset
    52
	*/
0d28b7c10758 First commit
ymh
parents:
diff changeset
    53
	$settings_keys = array_keys($settings_arr);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    54
	foreach($settings_keys as $key) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
    55
		$data[$key] = $key;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    56
	endforeach;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    57
0d28b7c10758 First commit
ymh
parents:
diff changeset
    58
	/*
0d28b7c10758 First commit
ymh
parents:
diff changeset
    59
	* Get existing options from the database
0d28b7c10758 First commit
ymh
parents:
diff changeset
    60
	*/
0d28b7c10758 First commit
ymh
parents:
diff changeset
    61
	$settings = get_option('malleable_theme_settings');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    62
0d28b7c10758 First commit
ymh
parents:
diff changeset
    63
	foreach($settings_arr as $key => $value) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
    64
		$val[$key] = $settings[$key];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    65
	endforeach;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    66
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
    67
	/*
0d28b7c10758 First commit
ymh
parents:
diff changeset
    68
	* If the form has been set
0d28b7c10758 First commit
ymh
parents:
diff changeset
    69
	* Loop through the values
0d28b7c10758 First commit
ymh
parents:
diff changeset
    70
	* Set the option in the database
0d28b7c10758 First commit
ymh
parents:
diff changeset
    71
	*/
0d28b7c10758 First commit
ymh
parents:
diff changeset
    72
	if($_POST[$hidden_field_name] == 'Y') :
0d28b7c10758 First commit
ymh
parents:
diff changeset
    73
0d28b7c10758 First commit
ymh
parents:
diff changeset
    74
		foreach($settings_arr as $key => $value) :
0d28b7c10758 First commit
ymh
parents:
diff changeset
    75
			$settings[$key] = $val[$key] = $_POST[$data[$key]];
0d28b7c10758 First commit
ymh
parents:
diff changeset
    76
		endforeach;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    77
0d28b7c10758 First commit
ymh
parents:
diff changeset
    78
		update_option('malleable_theme_settings', $settings);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    79
0d28b7c10758 First commit
ymh
parents:
diff changeset
    80
		/*
0d28b7c10758 First commit
ymh
parents:
diff changeset
    81
		* Open main div for the theme settings
0d28b7c10758 First commit
ymh
parents:
diff changeset
    82
		*/
0d28b7c10758 First commit
ymh
parents:
diff changeset
    83
		echo '<div class="wrap">';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    84
		echo '<h2>' . $settings_page_title . '</h2>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    85
		echo '<div class="updated" style="margin:15px 0;">';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    86
		echo '<p><strong>' . __('Settings saved.','malleable') . '</strong></p>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    87
		echo '</div>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    88
0d28b7c10758 First commit
ymh
parents:
diff changeset
    89
	else :
0d28b7c10758 First commit
ymh
parents:
diff changeset
    90
		echo '<div class="wrap">';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    91
		echo '<h2>' . $settings_page_title . '</h2>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    92
0d28b7c10758 First commit
ymh
parents:
diff changeset
    93
	endif;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    94
0d28b7c10758 First commit
ymh
parents:
diff changeset
    95
	/*
0d28b7c10758 First commit
ymh
parents:
diff changeset
    96
	* Load the theme settings form
0d28b7c10758 First commit
ymh
parents:
diff changeset
    97
	*/
0d28b7c10758 First commit
ymh
parents:
diff changeset
    98
	include(MALLEABLE . '/library/admin/theme-settings-xhtml.php');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    99
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   100
0d28b7c10758 First commit
ymh
parents:
diff changeset
   101
?>