Passed
Branch master (b818a9)
by Christian
03:42
created

widget.php (4 issues)

1
<?php
2
3
namespace PodloveSubscribeButton;
4
5
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
6
7
class Podlove_Subscribe_Button_Widget extends \WP_Widget {
8
9
	public function __construct() {
10
		parent::__construct(
11
					'podlove_subscribe_button_wp_plugin_widget',
12
					( self::is_podlove_publisher_active() ? 'Podlove Subscribe Button' : 'Podlove Subscribe Button (WordPress plugin)' ),
13
					array( 'description' => __( 'Adds a Podlove Subscribe Button to your Sidebar', 'podlove-subscribe-button' ), )
14
				);
15
	}
16
17
	public static $widget_settings = array('infotext', 'title', 'size', 'style', 'format', 'autowidth', 'button', 'color');
18
19
	public static function is_podlove_publisher_active() {
20
		if ( is_plugin_active("podlove-publisher/plugin.php") )
21
			return true;
22
23
		return false;
24
	}
25
26
	public function widget( $args, $instance ) {
27
		// Fetch the (network)button by it's name
28
		if ( ! $button = \PodloveSubscribeButton\Model\Button::get_button_by_name($instance['button']) )
29
			return sprintf( __('Oops. There is no button with the ID "%s".', 'podlove-subscribe-button'), $args['button'] );
30
31
		echo $args['before_widget'];
32
		echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ). $args['after_title'];
33
34
		echo $button->render(
35
				\PodloveSubscribeButton::get_array_value_with_fallback($instance, 'size'),
36
				\PodloveSubscribeButton::get_array_value_with_fallback($instance, 'autowidth'),
37
				\PodloveSubscribeButton::get_array_value_with_fallback($instance, 'style'),
38
				\PodloveSubscribeButton::get_array_value_with_fallback($instance, 'format'), 
39
				\PodloveSubscribeButton::get_array_value_with_fallback($instance, 'color')
40
			);
41
		
42
		if ( strlen($instance['infotext']) )
43
			echo wpautop($instance['infotext']);
44
45
		echo $args['after_widget'];
46
	}	
47
48
	public function form( $instance ) {
49
		foreach (self::$widget_settings as $setting) {
50
			$$setting = isset( $instance[$setting] ) ? $instance[$setting] : '';
51
		}
52
53
		$buttons = \PodloveSubscribeButton\Model\Button::all();
54
		if ( is_multisite() )
55
			$network_buttons = \PodloveSubscribeButton\Model\NetworkButton::all();
56
57
		$buttons_as_options = function ($buttons) {
58
			foreach ($buttons as $subscribebutton) {
59
				echo "<option value='".$subscribebutton->name."' ".( $subscribebutton->name == $button ? 'selected=\"selected\"' : '' )." >".$subscribebutton->title." (".$subscribebutton->name.")</option>";
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $button does not exist. Did you maybe mean $buttons?
Loading history...
60
			}
61
		}
62
		?>
63
		<p>
64
			<label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title', 'podlove-subscribe-button' ); ?></label> 
65
			<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $title; ?>" />
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $title seems to be never defined.
Loading history...
66
67
			<label for="<?php echo $this->get_field_id( 'color' ); ?>"><?php _e( 'Color', 'podlove-subscribe-button' ); ?></label>
68
			<input class="podlove_subscribe_button_color" id="<?php echo $this->get_field_id( 'color' ); ?>" name="<?php echo $this->get_field_name( 'color' ); ?>" value="<?php echo $color; ?>" />
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $color seems to be never defined.
Loading history...
69
			<style type="text/css">
70
				.sp-replacer {
71
					display: flex;
72
				}
73
				.sp-preview {
74
					flex-grow: 10;
75
				}
76
			</style>
77
78
			<label for="<?php echo $this->get_field_id( 'button' ); ?>"><?php _e( 'Button', 'podlove-subscribe-button' ); ?></label> 
79
			<select class="widefat" id="<?php echo $this->get_field_id( 'button' ); ?>"
80
				      name="<?php echo $this->get_field_name( 'button' ); ?>">
81
				<?php if ( isset($network_buttons) && count($network_buttons) > 0 ) : ?>
82
					<optgroup label="<?php _e('Local', 'podlove'); ?>">
83
						<?php $buttons_as_options($buttons); ?>
84
					</optgroup>
85
					<optgroup label="<?php _e('Network', 'podlove'); ?>">
86
						<?php $buttons_as_options($network_buttons); ?>
87
					</optgroup>
88
				<?php else : 
89
					$buttons_as_options($buttons);
90
				 endif; ?>
91
			</select>
92
93
			<?php
94
			$customize_options = array(
95
					'size' => array(
96
							'name' => 'Size',
97
							'options' => \PodloveSubscribeButton\Model\Button::$size
98
						),
99
					'style' => array(
100
							'name' => 'Style',
101
							'options' => \PodloveSubscribeButton\Model\Button::$style
102
						),
103
					'format' => array(
104
							'name' => 'Format',
105
							'options' => \PodloveSubscribeButton\Model\Button::$format
106
						),
107
					'autowidth' => array(
108
							'name' => 'Autowidth',
109
							'options' => \PodloveSubscribeButton\Model\Button::$width
110
						)
111
				);
112
113
			foreach ($customize_options as $slug => $properties) : ?>
114
				<label for="<?php echo $this->get_field_id( $slug ); ?>"><?php _e( $properties['name'], 'podlove-subscribe-button' ); ?></label> 
115
				<select class="widefat" id="<?php echo $this->get_field_id( $slug ); ?>" name="<?php echo $this->get_field_name( $slug ); ?>">
116
					<option value="default" <?php echo ( $$slug == 'default' ? 'selected="selected"' : '' ); ?>><?php _e( 'Default ' . $properties['name'], 'podlove-subscribe-button' ) ?></option>
117
					<optgroup>
118
						<?php foreach ( $properties['options'] as $property => $name ) : ?>
119
						<option value="<?php echo $property; ?>" <?php echo ( $$slug == $property ? 'selected="selected"' : '' ); ?>><?php _e( $name, 'podlove-subscribe-button' ) ?></option>
120
						<?php endforeach; ?>
121
					</optgroup>
122
				</select>
123
			<?php endforeach; ?>
124
		
125
			<label for="<?php echo $this->get_field_id( 'infotext' ); ?>"><?php _e( 'Description', 'podlove-subscribe-button' ); ?></label> 
126
			<textarea class="widefat" rows="10" id="<?php echo $this->get_field_id( 'infotext' ); ?>" name="<?php echo $this->get_field_name( 'infotext' ); ?>"><?php echo $infotext; ?></textarea>
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $infotext seems to be never defined.
Loading history...
127
		</p>
128
		<?php 
129
	}
130
131
	public function update( $new_instance, $old_instance ) {
132
		$instance = array();
133
134
		foreach (self::$widget_settings as $setting) {
135
			$instance[$setting]  = ( ! empty( $new_instance[$setting] ) ) ? strip_tags( $new_instance[$setting] ) : '';
136
		}
137
138
		return $instance;
139
	}
140
}
141
add_action( 'widgets_init', function(){
142
     register_widget( '\PodloveSubscribeButton\Podlove_Subscribe_Button_Widget' );
143
});