<?php 
/*
Plugin Name: My Plugin
Plugin URI: http://kawasaki.wordbench.org/2009/10/05/slides-20091004/
Description: My Plugin
Version: 1.0.0
Author: IKEDA Yuriko
Author URI: http://www.yuriko.net/cat/wordpress/
*/

$My_Plugin_Options = new My_Plugin_Options;

class 
My_Plugin_Options {
    private 
$emphasis_styles = array('strong''em');
    private 
$intervals = array(02510153060);

public function 
__construct() {
  
add_action('admin_menu', array($this'add_menu'));
}

public function 
add_menu() {
  
add_options_page(__('My Plugin Options''my_plugin'), __('My Plugin''my_plugin'), 'manage_options'__FILE__, array($this'options_page'));
}

public function 
options_page() {
  if (isset(
$_POST['update_option'])) {
    
check_admin_referer('my_plugin-options');
    
$this->update_options(); ?>
<div class="updated fade"><p><strong><?php _e('Options saved.'); ?></strong></p></div>
<?php 
  
}
  
  
$font_color get_option('my_plugin_font_color');

  
$use_bold get_option('my_plugin_use_bold');
  
  
$emphasis_sytle get_option('my_plugin_emphasis');
  if (! 
in_array($emphasis_sytle$this->emphasis_styles)) {
      
$emphasis_sytle $this->emphasis_styles[0];
  }
  
  
$interval intval(get_option('my_plugin_interval'));
  if (! 
in_array($interval$this->intervals)) {
      
$interval $this->intervals[4];
  }
  
?>
<div class="wrap">
<h2><?php _e('My Plugin Options''my_plugin'); ?></h2>
<form name="form" method="post" action="">
<input type="hidden" name="action" value="update" />
<?php wp_nonce_field('my_plugin-options'); ?>
<table class="form-table"><tbody>

<tr>
<th><label for="my_plugin_font_color"><?php _e('Font Color''my_plugin'); ?></label></th>
<td><input type="text" name="my_plugin_font_color" id="my_plugin_font_color" value="<?php echo attribute_escape($font_color); ?>" /></td>
</tr>

<tr>
<th><?php _e('Bold Style''my_plugin'); ?></th>
<td><label><input type="checkbox" name="my_plugin_use_bold" id="my_plugin_use_bold"<?php checked($use_bold); ?>/><?php _e('Use bold style for link''my_plugin'); ?></label></td>
</tr>

<tr>
<th><?php _e('Emphasis Style''my_plugin'); ?></th>
<td>
  <label><input type="radio" name="my_plugin_emphasis" id="my_plugin_emphasis-strong" value="<?php echo attribute_escape($this->emphasis_styles[0]); ?>"<?php checked($this->emphasis_styles[0], $emphasis_sytle); ?>/><?php _e('Strong''my_plugin'); ?></label>
<br />
  <label><input type="radio" name="my_plugin_emphasis" id="my_plugin_emphasis-em" value="<?php echo attribute_escape($this->emphasis_styles[1]); ?>"<?php checked($this->emphasis_styles[1], $emphasis_sytle); ?>/><?php _e('Em''my_plugin'); ?></label>
</td>
</tr>

<tr>
<th><label for="my_plugin_interval"><?php _e('Retieval Interval''my_plugin'); ?></label></th>
<td><select name="my_plugin_interval" id="my_plugin_interval">
<?php foreach ($this->intervals as $i) { ?>
  <option value="<?php echo intval($i); ?>"<?php selected($i$interval); ?> /><?php _e($i ' min''my_plugin'); ?></option>
<?php ?>
</select></td>
</tr>

</tbody></table>
<p class="submit">
<input type="submit" name="update_option" class="button-primary" value="<?php _e('Save Changes'); ?>" />
</p>
</form></div>
<?php 
}

private function 
update_options() {
  if (isset(
$_POST['my_plugin_font_color'])) {
    
$font_color stripslashes($_POST['my_plugin_font_color']);
    if (
preg_match('/^#[0-9a-fA-F]+$/'$font_color)) {
      
update_option('my_plugin_font_color'$font_color);
    }
  } else {
      
delete_option('my_plugin_font_color');
      
/* update_option('my_plugin_font_color', ''); // ใ“ใ‚Œใงใ‚‚ OK */
  
}
  
  
update_option('my_plugin_use_bold', isset($_POST['my_plugin_use_bold']));
  
  if (isset(
$_POST['my_plugin_emphasis'])) {
    
$emphasis_style stripslashes($_POST['my_plugin_emphasis']);
    if (
in_array($emphasis_style$this->emphasis_styles)) {
      
update_option('my_plugin_emphasis'$emphasis_style);
    }
  }
  
  if (isset(
$_POST['my_plugin_interval'])) {
    
$interval intval($_POST['my_plugin_interval']);
    if (
in_array($interval$this->intervals)) {
      
update_option('my_plugin_interval'$interval);
    }
  }
}

// End of class
}
?>