These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
0 ignored issues
–
show
|
|||
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
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 | }); |
The PSR-1: Basic Coding Standard recommends that a file should either introduce new symbols, that is classes, functions, constants or similar, or have side effects. Side effects are anything that executes logic, like for example printing output, changing ini settings or writing to a file.
The idea behind this recommendation is that merely auto-loading a class should not change the state of an application. It also promotes a cleaner style of programming and makes your code less prone to errors, because the logic is not spread out all over the place.
To learn more about the PSR-1, please see the PHP-FIG site on the PSR-1.