GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( dc0f35...efd704 )
by Christian
15s
created

inc/Model/Button.php (10 issues)

1
<?php
2
/**
3
 * @author    Podlove <[email protected]>
4
 * @copyright Copyright (c) 2014-2018, Podlove
5
 * @license   https://github.com/podlove/podlove-subscribe-button-wp-plugin/blob/master/LICENSE MIT
6
 * @package   Podlove\PodloveSubscribeButton
7
 */
8
9
namespace PodloveSubscribeButton\Model;
10
11
use PodloveSubscribeButton\Defaults;
12
13
class Button extends Base {
14
15
	public static $properties = array(
16
		// $property => $default value
17
		'size'      => 'big',
18
		'color'     => '#599677',
19
		'autowidth' => 'on',
20
		'style'     => 'filled',
21
		'format'    => 'rectangle',
22
		'hide'      => 'false',
23
		'buttonid'  => '',
24
		'language'  => 'en',
25
		// Note: the field 'json-data' cannot be set here (No function call allowed within class variables)
26
	);
27
28
	/**
29
	 * Fetches a Button or Network Button with a specific name
30
	 * @param  string $name
31
	 * @return object|false
32
	 */
33
	public static function get_button_by_name( $name ) {
34
		if ( $button = Button::find_one_by_property( 'name', $name ) ) {
35
			return $button;
36
		}
37
38
		if ( $network_button = NetworkButton::find_one_by_property( 'name', $name ) ) {
39
			$network_button->id = $network_button->id . 'N';
40
			return $network_button;
41
		}
42
43
		return false;
44
45
	}
46
47
	/**
48
	 * Returns either global buttons settings or the default settings
49
	 * @param  array
50
	 * @return array
51
	 */
52
	public static function get_global_setting_with_fallback( $settings = array() ) {
53
		foreach ( Defaults::options() as $property => $default ) {
54
			$settings[ $property ] = ( get_option( 'podlove_psb_defaults' )[ $property ] ? get_option( 'podlove_psb_defaults' )[ $property ] : $default );
55
		}
56
57
		return $settings;
58
	}
59
60
	/**
61
	 * Gathers all information and renders the Subscribe button.
62
	 * @param  string  $size
63
	 * @param  string  $autowidth
64
	 * @param  string  $style
65
	 * @param  string  $format
66
	 * @param  string  $color
67
	 * @param  boolean $hide
68
	 * @param  boolean $buttonid
69
	 * @return string
70
	 */
71
	public function render( $size = 'big', $autowidth = 'on', $style = 'filled', $format = 'rectangle', $color = '#599677', $hide = false, $buttonid = false, $language = 'en' ) {
72
		$button_styling = array_merge(
73
			$this->get_button_styling( $size, $autowidth, $style, $format, $color ),
74
			array(
75
				'hide'     => $hide,
76
				'buttonid' => $buttonid,
77
				'language' => $language,
78
			)
79
		);
80
81
		return $this->provide_button_html(
82
			array(
83
				'title'       => $this->title,
84
				'subtitle'    => $this->subtitle,
85
				'description' => $this->description,
86
				'cover'       => $this->cover,
87
				'feeds'       => $this->get_feeds_as_array( $this->feeds ),
88
			),
89
			$button_styling
90
		);
91
92
	}
93
94
	/**
95
	 * Provides the feed as an array in the required format
96
	 * @return array
97
	 */
98
	private function get_feeds_as_array( $feeds = array() ) {
99
		foreach ( $feeds as $feed ) {
100
			if ( isset( Defaults::media_types()[ $feed['format'] ]['extension'] ) ) {
101
				$new_feed = array(
102
					'type'    => 'audio',
103
					'format'  => Defaults::media_types()[ $feed['format'] ]['extension'],
104
					'url'     => $feed['url'],
105
					'variant' => 'high',
106
				);
107
108
				if ( isset( $feed['itunesfeedid'] ) && $feed['itunesfeedid'] > 0 ) {
109
					$new_feed['directory-url-itunes'] = "https://itunes.apple.com/podcast/id" . $feed['itunesfeedid'];
110
				}
111
112
				$feeds[] = $new_feed;
113
114
			}
115
		}
116
117
		return $feeds;
118
119
	}
120
121
	/**
122
	 * Provides the HTML source of the Subscribe Button
123
	 * @param  array $podcast_data
124
	 * @param  array $button_styling
125
	 * @param  string $data_attributes
126
	 * @return string
127
	 */
128
	private function provide_button_html( $podcast_data, $button_styling, $data_attributes = "" ) {
129
		// Create data attributes for Button
130
		foreach ( $button_styling as $attribute => $value ) {
131
			$data_attributes .= 'data-' . $attribute . '="' . $value . '" ';
132
		}
133
134
		return"
135
			<script>
136
				podcastData".$this->id . " = " . json_encode( $podcast_data ) . "
137
			</script>
138
			<script 
139
				class=\"podlove-subscribe-button\" 
140
				src=\"https://cdn.podlove.org/subscribe-button/javascripts/app.js\" " . $data_attributes . ">
141
			</script>
142
		";
143
144
	}
145
146
	/**
147
	 * Returns an array with either the set or default values
148
	 * @param  string $size
149
	 * @param  string $autowidth
150
	 * @param  string $style
151
	 * @param  string $format
152
	 * @param  string $color
153
	 * @return array
154
	 */
155
	public function get_button_styling( $size, $autowidth, $style, $format, $color ) {
156
157
		$options = get_option( 'podlove_psb_defaults' );
158
159
		return array(
160
			// $attribute => $value
0 ignored issues
show
Unused Code Comprehensibility introduced by
60% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
161
			'size'      => ( $size == 'default' ? $options['size'] : $size ) . self::interpret_autowidth_attribute( $autowidth ),
0 ignored issues
show
Found: ==. Use strict comparisons (=== or !==).
Loading history...
Use Yoda Condition checks, you must.
Loading history...
162
			'style'     => ( $style == 'default' ? $options['style'] : $style ),
0 ignored issues
show
Found: ==. Use strict comparisons (=== or !==).
Loading history...
Use Yoda Condition checks, you must.
Loading history...
163
			'format'    => ( $format == 'default' ? $options['format'] : $format ),
0 ignored issues
show
Found: ==. Use strict comparisons (=== or !==).
Loading history...
Use Yoda Condition checks, you must.
Loading history...
164
			'color'     => ( isset( $color ) ? $color : $options['color'] ),
165
			'json-data' => 'podcastData' . $this->id
166
		);
167
168
	}
169
170
	/**
171
	 * Helper function to interpret the given $autowidth value correctly
172
	 * @param  string $autowidth
173
	 * @return string
174
	 */
175
	private static function interpret_autowidth_attribute( $autowidth ) {
176
		if ( $autowidth == 'default' && get_option( 'podlove_psb_defaults' )['autowidth'] !== 'on' )
0 ignored issues
show
Coding Style Best Practice introduced by
It is generally a best practice to always use braces with control structures.

Adding braces to control structures avoids accidental mistakes as your code changes:

// Without braces (not recommended)
if (true)
    doSomething();

// Recommended
if (true) {
    doSomething();
}
Loading history...
Found: ==. Use strict comparisons (=== or !==).
Loading history...
Use Yoda Condition checks, you must.
Loading history...
177
			return '';
178
179
		if ( $autowidth !== 'default' && $autowidth !== 'on' )
180
			return '';
181
182
		return ' auto';
183
184
	}
185
186
} // END class
187
188
Button::property( 'id', 'INT NOT NULL AUTO_INCREMENT PRIMARY KEY' );
189
Button::property( 'name', 'VARCHAR(255)' );
190
Button::property( 'title', 'VARCHAR(255)' );
191
Button::property( 'subtitle', 'VARCHAR(255)' );
192
Button::property( 'description', 'TEXT' );
193
Button::property( 'cover', 'VARCHAR(255)' );
194
Button::property( 'feeds', 'TEXT' );
195
Button::property( 'language', 'VARCHAR(2)' );
196