These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
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 | View Code Duplication | if ( ! $button = \PodloveSubscribeButton\Model\Button::get_button_by_name($instance['button']) ) |
|
0 ignored issues
–
show
|
|||
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
The variable
$button does not exist. Did you mean $buttons ?
This check looks for variables that are accessed but have not been defined. It raises an issue if it finds another variable that has a similar name. The variable may have been renamed without also renaming all references. ![]() |
|||
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
|
|||
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
|
|||
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
|
|||
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 | }); |
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.