pre production version :
******************************
Template evolution :
- css ( so much things)
- js ( new navigation tools ...)
- lib for php ZIp
- function.php (for download LDT and other litle function)
- page (header, home, footer, single, search, searchform, post ...)
******************************
New plug in :
- wp touch
- wp explorer
- TextCutter
- ultimate-google-analytics
- nice titles
******************************
Plug in customization :
- related-posts-by-category
- posts-of-current-category
- order-categories
- event-calendar
- translation wp explorer
- exec-php
******************************
Road map for next version :
- cleaning php code
put template function to new plugin
- cleaning Css code
- re organize Js code
- all new correction ask
<?php
/*
Plugin Name: Executable PHP widget
Plugin URI: http://wordpress.org/extend/plugins/php-code-widget/
Description: Like the Text widget, but it will take PHP code as well. Heavily derived from the Text widget code in WordPress.
Author: Otto
Version: 2.1
Author URI: http://ottodestruct.com
Copyright 2009 Samuel Wood (email : otto@ottodestruct.com)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
You may NOT assume that you can use any other version of the GPL.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
The license for this software can likely be found here:
http://www.gnu.org/licenses/gpl-2.0.html
*/
class PHP_Code_Widget extends WP_Widget {
function PHP_Code_Widget() {
$widget_ops = array('classname' => 'widget_execphp', 'description' => __('Arbitrary text, HTML, or PHP Code'));
$control_ops = array('width' => 400, 'height' => 350);
$this->WP_Widget('execphp', __('PHP Code'), $widget_ops, $control_ops);
}
function widget( $args, $instance ) {
extract($args);
$title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance );
$text = apply_filters( 'widget_execphp', $instance['text'], $instance );
echo $before_widget;
if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }
ob_start();
eval('?>'.$text);
$text = ob_get_contents();
ob_end_clean();
?>
<div class="execphpwidget"><?php echo $instance['filter'] ? wpautop($text) : $text; ?></div>
<?php
echo $after_widget;
}
function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
if ( current_user_can('unfiltered_html') )
$instance['text'] = $new_instance['text'];
else
$instance['text'] = stripslashes( wp_filter_post_kses( $new_instance['text'] ) );
$instance['filter'] = isset($new_instance['filter']);
return $instance;
}
function form( $instance ) {
$instance = wp_parse_args( (array) $instance, array( 'title' => '', 'text' => '' ) );
$title = strip_tags($instance['title']);
$text = format_to_edit($instance['text']);
?>
<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
<textarea class="widefat" rows="16" cols="20" id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>"><?php echo $text; ?></textarea>
<p><input id="<?php echo $this->get_field_id('filter'); ?>" name="<?php echo $this->get_field_name('filter'); ?>" type="checkbox" <?php checked(isset($instance['filter']) ? $instance['filter'] : 0); ?> /> <label for="<?php echo $this->get_field_id('filter'); ?>"><?php _e('Automatically add paragraphs.'); ?></label></p>
<?php
}
}
add_action('widgets_init', create_function('', 'return register_widget("PHP_Code_Widget");'));