109
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1 |
<?php |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
2 |
/* |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
3 |
Plugin Name: Executable PHP widget |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
4 |
Plugin URI: http://wordpress.org/extend/plugins/php-code-widget/ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
5 |
Description: Like the Text widget, but it will take PHP code as well. Heavily derived from the Text widget code in WordPress. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
6 |
Author: Otto |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
7 |
Version: 2.1 |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
8 |
Author URI: http://ottodestruct.com |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
9 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
10 |
Copyright 2009 Samuel Wood (email : otto@ottodestruct.com) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
11 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
12 |
This program is free software; you can redistribute it and/or modify |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
13 |
it under the terms of the GNU General Public License version 2, |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
14 |
as published by the Free Software Foundation. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
15 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
16 |
You may NOT assume that you can use any other version of the GPL. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
17 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
18 |
This program is distributed in the hope that it will be useful, |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
19 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
20 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
21 |
GNU General Public License for more details. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
22 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
23 |
The license for this software can likely be found here: |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
24 |
http://www.gnu.org/licenses/gpl-2.0.html |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
25 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
26 |
*/ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
27 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
28 |
class PHP_Code_Widget extends WP_Widget { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
29 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
30 |
function PHP_Code_Widget() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
31 |
$widget_ops = array('classname' => 'widget_execphp', 'description' => __('Arbitrary text, HTML, or PHP Code')); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
32 |
$control_ops = array('width' => 400, 'height' => 350); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
33 |
$this->WP_Widget('execphp', __('PHP Code'), $widget_ops, $control_ops); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
34 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
35 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
36 |
function widget( $args, $instance ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
37 |
extract($args); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
38 |
$title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
39 |
$text = apply_filters( 'widget_execphp', $instance['text'], $instance ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
40 |
echo $before_widget; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
41 |
if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
42 |
ob_start(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
43 |
eval('?>'.$text); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
44 |
$text = ob_get_contents(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
45 |
ob_end_clean(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
46 |
?> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
47 |
<div class="execphpwidget"><?php echo $instance['filter'] ? wpautop($text) : $text; ?></div> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
48 |
<?php |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
49 |
echo $after_widget; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
50 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
51 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
52 |
function update( $new_instance, $old_instance ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
53 |
$instance = $old_instance; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
54 |
$instance['title'] = strip_tags($new_instance['title']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
55 |
if ( current_user_can('unfiltered_html') ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
56 |
$instance['text'] = $new_instance['text']; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
57 |
else |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
58 |
$instance['text'] = stripslashes( wp_filter_post_kses( $new_instance['text'] ) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
59 |
$instance['filter'] = isset($new_instance['filter']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
60 |
return $instance; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
61 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
62 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
63 |
function form( $instance ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
64 |
$instance = wp_parse_args( (array) $instance, array( 'title' => '', 'text' => '' ) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
65 |
$title = strip_tags($instance['title']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
66 |
$text = format_to_edit($instance['text']); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
67 |
?> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
68 |
<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
69 |
<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> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
70 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
71 |
<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> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
72 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
73 |
<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> |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
74 |
<?php |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
75 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
76 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
77 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
78 |
add_action('widgets_init', create_function('', 'return register_widget("PHP_Code_Widget");')); |