Passed
Push — master ( 64cd18...d5badb )
by Christian
04:09 queued 01:39
created

podlove.php (23 issues)

1
<?php
2
/**
3
 * Plugin Name: Podlove Subscribe Button
4
 * Plugin URI:  http://wordpress.org/extend/plugins/podlove-subscribe-button/
5
 * Description: Brings the Podlove Subscribe Button to your WordPress installation.
6
 * Version:     1.3.3
7
 * Author:      Podlove
8
 * Author URI:  http://podlove.org
9
 * License:     MIT
10
 * License URI: license.txt
11
 * Text Domain: podlove-subscribe-button
12
 */
13
14
$correct_php_version = version_compare( phpversion(), "5.3", ">=" );
15
16
if ( ! $correct_php_version ) {
17
	_e("Podlove Subscribe Button Plugin requires <strong>PHP 5.3</strong> or higher.<br>", 'podlove-subscribe-button');
18
	echo __("You are running PHP ", 'podlove-subscribe-button') . phpversion();
19
	exit;
20
}
21
22
// Constants
23
require('constants.php');
24
require('settings/buttons.php');
25
// Models
26
require('model/base.php');
27
require('model/button.php');
28
require('model/network_button.php');
29
// Table
30
require('settings/buttons_list_table.php');
31
// Media Types
32
require('media_types.php');
33
// Widget
34
require('widget.php');
35
// Version control
36
require('version.php');
37
// Helper functions
38
require('helper.php');
39
40
add_action( 'admin_menu', array( 'PodloveSubscribeButton', 'admin_menu') );
41
if ( is_multisite() )
42
	add_action( 'network_admin_menu', array( 'PodloveSubscribeButton', 'admin_network_menu') );
43
44
add_action( 'admin_init', array( 'PodloveSubscribeButton\Settings\Buttons', 'process_form' ) );
45
register_activation_hook( __FILE__, array( 'PodloveSubscribeButton', 'build_models' ) );
46
47
add_action( 'admin_enqueue_scripts', function () {
48
	wp_register_style( 'podlove-subscribe-button', plugin_dir_url(__FILE__).'style.css' );
0 ignored issues
show
Expected 1 spaces after opening bracket; 0 found
Loading history...
Expected 1 spaces before closing bracket; 0 found
Loading history...
Concat operator must be surrounded by a single space
Loading history...
Resource version not set in call to wp_register_style(). This means new versions of the style will not always be loaded due to browser caching.
Loading history...
49
	wp_enqueue_style( 'podlove-subscribe-button' );
50
51
	wp_enqueue_style('podlove-subscribe-button-spectrum', plugin_dir_url(__FILE__). 'js/spectrum/spectrum.css');
0 ignored issues
show
Expected 1 spaces after opening bracket; 0 found
Loading history...
Expected 1 spaces before closing bracket; 0 found
Loading history...
Concat operator must be surrounded by a single space
Loading history...
Resource version not set in call to wp_enqueue_style(). This means new versions of the style will not always be loaded due to browser caching.
Loading history...
52
	wp_enqueue_script('podlove-subscribe-button-spectrum', plugin_dir_url(__FILE__). 'js/spectrum/spectrum.js', array('jquery'));
0 ignored issues
show
Expected 1 spaces after opening bracket; 0 found
Loading history...
Expected 1 spaces before closing bracket; 0 found
Loading history...
Concat operator must be surrounded by a single space
Loading history...
Missing space after array opener.
Loading history...
Missing space before array closer.
Loading history...
Resource version not set in call to wp_enqueue_script(). This means new versions of the script will not always be loaded due to browser caching.
Loading history...
53
	wp_enqueue_script('podlove-subscribe-button-admin-tools', plugin_dir_url(__FILE__). 'js/admin.js', array('jquery'));
0 ignored issues
show
Expected 1 spaces after opening bracket; 0 found
Loading history...
Expected 1 spaces before closing bracket; 0 found
Loading history...
Concat operator must be surrounded by a single space
Loading history...
Missing space after array opener.
Loading history...
Missing space before array closer.
Loading history...
In footer ($in_footer) is not set explicitly wp_enqueue_script; It is recommended to load scripts in the footer. Please set this value to true to load it in the footer, or explicitly false if it should be loaded in the header.
Loading history...
Resource version not set in call to wp_enqueue_script(). This means new versions of the script will not always be loaded due to browser caching.
Loading history...
54
} );
55
56
// Register Settings
0 ignored issues
show
Inline comments must end in full-stops, exclamation marks, or question marks
Loading history...
57
add_action( 'admin_init', function () {
58
	$settings = array('size', 'autowidth', 'style', 'format', 'color');
59
60
	foreach ($settings as $setting) {
61
		register_setting( 'podlove-subscribe-button', 'podlove_subscribe_button_default_' . $setting );
62
	}
63
} );
64
65
add_shortcode( 'podlove-subscribe-button', array( 'PodloveSubscribeButton', 'shortcode' ) );
66
67
add_action( 'plugins_loaded', function () {
68
	load_plugin_textdomain( 'podlove-subscribe-button' );
69
} );
70
71
72
class PodloveSubscribeButton {
0 ignored issues
show
Coding Style Documentation introduced by
Missing class doc comment
Loading history...
73
74
	public static function admin_menu() {
75
		add_options_page(
76
				'Podlove Subscribe Button Options',
77
				'Podlove Subscribe Button',
78
				'manage_options',
79
				'podlove-subscribe-button',
80
				array( 'PodloveSubscribeButton\Settings\Buttons', 'page')
81
			);
82
	}
83
84
	public static function admin_network_menu() {
85
		add_submenu_page(
86
				'settings.php',
87
				'Podlove Subscribe Button Options',
88
				'Podlove Subscribe Button',
89
				'manage_options',
90
				'podlove-subscribe-button',
91
				array( 'PodloveSubscribeButton\Settings\Buttons', 'page')
92
			);
93
	}
94
95
	public static function build_models() {
96
		// Build Databases
97
		\PodloveSubscribeButton\Model\Button::build();
98
		if ( is_multisite() )
99
			\PodloveSubscribeButton\Model\NetworkButton::build();
100
101
		// Set Button "default" values
102
		$default_values = array(
103
				'size' => 'big',
104
				'autowidth' => 'on',
105
				'color' => '#599677',
106
				'style' => 'filled',
107
				'format' => 'rectangle'
108
			);
109
110
		foreach ($default_values as $option => $default_value) {
111
			if ( ! get_option('podlove_subscribe_button_default_' . $option ) ) {
112
				update_option('podlove_subscribe_button_default_' . $option, $default_value);
113
			}
114
		}
115
	}
116
117
	public static function shortcode( $args ) {
118
		if ( ! $args || ! isset($args['button']) ) {
119
			return __('You need to create a Button first and provide its ID.', 'podlove-subscribe-button');
120
		} else {
121
			$buttonid = $args['button'];
122
		}
123
124
		// Fetch the (network)button by it's name
125
		if ( ! $button = \PodloveSubscribeButton\Model\Button::get_button_by_name($args['button']) )
126
			return sprintf( __('Oops. There is no button with the ID "%s".', 'podlove-subscribe-button'), $args['button'] );
127
128
		// Get button styling and options
129
		$autowidth = self::interpret_width_attribute( self::get_array_value_with_fallback($args, 'width') );
130
		$size = self::get_attribute( 'size', self::get_array_value_with_fallback($args, 'size') );
131
		$style = self::get_attribute( 'style', self::get_array_value_with_fallback($args, 'style') );
132
		$format = self::get_attribute( 'format', self::get_array_value_with_fallback($args, 'format') );
133
		$color = self::get_attribute( 'color', self::get_array_value_with_fallback($args, 'color') );
134
135
		if ( isset($args['language']) ) {
136
			$language = $args['language'];
137
		} else {
138
			$language = 'en';
139
		}
140
141
		if ( isset($args['color']) ) {
142
			$color = $args['color'];
143
		} else {
144
			$color = get_option('podlove_subscribe_button_default_color', '#599677');
145
		}
146
147
		if ( isset($args['hide']) && $args['hide'] == 'true' ) {
148
			$hide = TRUE;
149
		} else {
150
			$hide = FALSE;
151
		}
152
153
		// Render button
154
		return $button->render($size, $autowidth, $style, $format, $color, $hide, $buttonid, $language);
155
	}
156
157
	public static function get_array_value_with_fallback($args, $key) {
158
		if ( isset($args[$key]) )
159
			return $args[$key];
160
161
		return FALSE;
162
	}
163
164
	/**
165
	 * @param  string $attribute
166
	 * @param  string $attribute_value
167
	 * @return string
168
	 */
169
	private static function get_attribute($attribute=NULL, $attribute_value=NULL) {
170
		if ( isset($attribute_value) && ctype_alnum($attribute_value) && key_exists( $attribute_value, \PodloveSubscribeButton\Model\Button::$$attribute ) ) {
171
			return $attribute_value;
172
		} else {
173
			return get_option('podlove_subscribe_button_default_' . $attribute, \PodloveSubscribeButton\Model\Button::$properties[$attribute]);
174
		}
175
	}
176
177
	/**
178
	 * Interprets the provided width attribute and return either auto- or a specific width
179
	 * @param  string $width_attribute
180
	 * @return string
181
	 */
182
	private static function interpret_width_attribute( $width_attribute = NULL ) {
183
		if ( $width_attribute == 'auto' )
184
			return 'on';
185
		if ( $width_attribute && $width_attribute !== 'auto' )
186
			return 'off';
187
188
		return get_option('podlove_subscribe_button_default_autowidth', 'on');
189
	}
190
}