Completed
Push — master ( c4aad9...bb2272 )
by Daryl
01:56
created

WP_Share_This::use_og()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Clubdeuce\WPShareThis;
4
5
/**
6
 * Class WP_Share_This
7
 * @package Clubdeuce\WPShareThis
8
 *
9
 * @link http://www.sharethis.com/support/customization/how-to-set-custom-buttons/
10
 */
11
class WP_Share_This {
12
13
	/**
14
	 * @var bool
15
	 */
16
	private static $_facebook_og = true;
17
18
	/**
19
	 * @var string
20
	 */
21
	private static $_id = null;
22
23
	/**
24
	 * @var array
25
	 */
26
	private static $_services = array();
27
28
	/**
29
	 *
30
	 */
31
	public static function initialize() {
32
33
		add_action( 'wp_enqueue_scripts', array( __CLASS__, '_wp_enqueue_scripts' ) );
0 ignored issues
show
Bug introduced by
The function add_action was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

33
		/** @scrutinizer ignore-call */ 
34
  add_action( 'wp_enqueue_scripts', array( __CLASS__, '_wp_enqueue_scripts' ) );
Loading history...
34
		add_action( 'wp_head', array( __CLASS__, '_wp_head' ) );
35
36
	}
37
38
	/**
39
	 *
40
	 */
41
	public static function _wp_enqueue_scripts() {
42
43
		$id = self::$_id;
44
45
		wp_enqueue_script('sharethis', "//platform-api.sharethis.com/js/sharethis.js#property={$id}&product=unknown", null, false, true );
0 ignored issues
show
Bug introduced by
The function wp_enqueue_script was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

45
		/** @scrutinizer ignore-call */ 
46
  wp_enqueue_script('sharethis', "//platform-api.sharethis.com/js/sharethis.js#property={$id}&product=unknown", null, false, true );
Loading history...
46
47
	}
48
49
	/**
50
	 *
51
	 */
52
	public static function _wp_head() {
53
54
		if ( self::$_facebook_og ) {
55
			self::_facebook_og();
56
		}
57
58
	}
59
60
	/**
61
	 * The ShareThis account id.
62
	 *
63
	 * @param string $id
64
	 */
65
	public static function register_id( $id ) {
66
67
		self::$_id = $id;
68
69
	}
70
71
	/**
72
	 * @param string $service
73
	 * @param array  $params
74
	 */
75
	public static function register_service( $service, $params = array() ) {
76
77
		self::$_services[ $service ] = $params;
78
79
	}
80
81
	/**
82
	 * @param \WP_Post|null $post
83
	 * @param array         $args
84
	 */
85
	public static function the_sharing_links( $post = null, $args = array() ) {
86
87
		if ( ! isset( $post ) ) {
88
			$post = get_post();
0 ignored issues
show
Bug introduced by
The function get_post was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

88
			$post = /** @scrutinizer ignore-call */ get_post();
Loading history...
89
		}
90
91
		foreach ( self::$_services as $service => $params ) {
92
			$args = array_merge( $params, $args );
93
			self::_render_sharing_link( $args, $service, $post );
94
		}
95
96
	}
97
98
	/**
99
	 * @param bool $use
100
	 *
101
	 * @since 0.0.2
102
	 */
103
	public static function use_og( $use = true ) {
104
105
		self::$_facebook_og = $use;
106
107
	}
108
109
	/**
110
	 * @param array    $params
111
	 * @param string   $service
112
	 * @param \WP_Post $post
113
	 */
114
	private static function _render_sharing_link( $params, $service, $post ) {
115
116
		$classes = apply_filters( "wpst_link_classes_{$service}", array() );
0 ignored issues
show
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

116
		$classes = /** @scrutinizer ignore-call */ apply_filters( "wpst_link_classes_{$service}", array() );
Loading history...
117
118
		// set some defaults
119
		$args = wp_parse_args( $params, array(
0 ignored issues
show
Bug introduced by
The function wp_parse_args was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

119
		$args = /** @scrutinizer ignore-call */ wp_parse_args( $params, array(
Loading history...
120
			'url'         => null,
121
			'short_url'   => null,
122
			'title'       => null,
123
			'image'       => null,
124
			'description' => null,
125
			'username'    => null,
126
			'message'     => null,
127
			'share_count' => true,
128
		) );
129
130
		// if we have a post, we will use post values for the defaults
131
		if ( $post instanceof \WP_Post ) {
132
			$args = wp_parse_args( $params, array(
133
				'url'         => get_permalink( $post ),
0 ignored issues
show
Bug introduced by
The function get_permalink was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

133
				'url'         => /** @scrutinizer ignore-call */ get_permalink( $post ),
Loading history...
134
				'short_url'   => null,
135
				'title'       => $post->post_title,
136
				'image'       => null,
137
				'description' => get_the_excerpt( $post ),
0 ignored issues
show
Bug introduced by
The function get_the_excerpt was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

137
				'description' => /** @scrutinizer ignore-call */ get_the_excerpt( $post ),
Loading history...
138
				'username'    => null,
139
				'message'     => null,
140
				'share_count' => true,
141
			) );
142
143
			if ( has_post_thumbnail( $post ) ) {
0 ignored issues
show
Bug introduced by
The function has_post_thumbnail was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

143
			if ( /** @scrutinizer ignore-call */ has_post_thumbnail( $post ) ) {
Loading history...
144
				$args['image'] = get_the_post_thumbnail_url( $post );
0 ignored issues
show
Bug introduced by
The function get_the_post_thumbnail_url was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

144
				$args['image'] = /** @scrutinizer ignore-call */ get_the_post_thumbnail_url( $post );
Loading history...
145
			}
146
		}
147
148
		printf(
149
			'<div data-network="%1$s" class="st-custom-button %2$s"%3$s%4$s%5$s%6$s%7$s%8$s%9$s>%10$s%11$s</div>',
150
			$service,
151
			implode( ' ', apply_filters( 'wpst_link_classes', $classes, $service ) ),
152
			self::_item_sharing_property( 'url',         $args['url'] ),
153
			self::_item_sharing_property( 'short_url',   $args['short_url'] ),
154
			self::_item_sharing_property( 'title',       $args['title'] ),
155
			self::_item_sharing_property( 'image',       $args['image'] ),
156
			self::_item_sharing_property( 'description', $args['description'] ),
157
			self::_item_sharing_property( 'username',    $args['username'] ),
158
			self::_item_sharing_property( 'message',     $args['message'] ),
159
			apply_filters( 'wpst_link_text', ucfirst( $service ) ),
160
			self::_item_sharing_count( $args['share_count'] )
161
		);
162
163
	}
164
165
	/**
166
	 * @link https://developers.facebook.com/docs/sharing/webmasters#basic
167
	 */
168
	private static function _facebook_og() {
169
170
		printf( '<meta property="og:url" content="%1$s" />' . PHP_EOL, self::_og_url() );
171
		print '<meta property="og:type" content="article" />' . PHP_EOL;
172
		printf( '<meta property="og:title" content="%1$s" />' . PHP_EOL, self::_og_title() );
173
174
		if ( ! ( empty( $description = self::_og_description() ) ) ) {
175
			printf(	'<meta property="og:description" content="%1$s" />' . PHP_EOL, $description );
176
		}
177
178
		if ( $image_url = self::_og_image() ) {
179
			printf( '<meta property="og:image" content="%1$s" />' . PHP_EOL, $image_url );
180
		}
181
182
	}
183
184
	/**
185
	 * @return mixed|void
186
	 */
187
	private static function _og_url() {
188
189
		$url = get_permalink();
0 ignored issues
show
Bug introduced by
The function get_permalink was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

189
		$url = /** @scrutinizer ignore-call */ get_permalink();
Loading history...
190
191
		if ( is_home() || is_front_page() ) {
0 ignored issues
show
Bug introduced by
The function is_front_page was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

191
		if ( is_home() || /** @scrutinizer ignore-call */ is_front_page() ) {
Loading history...
Bug introduced by
The function is_home was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

191
		if ( /** @scrutinizer ignore-call */ is_home() || is_front_page() ) {
Loading history...
192
			$url = home_url();
0 ignored issues
show
Bug introduced by
The function home_url was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

192
			$url = /** @scrutinizer ignore-call */ home_url();
Loading history...
193
		}
194
195
		return apply_filters( 'wpst_og_url', esc_url( $url ) );
0 ignored issues
show
Bug introduced by
The function esc_url was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

195
		return apply_filters( 'wpst_og_url', /** @scrutinizer ignore-call */ esc_url( $url ) );
Loading history...
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

195
		return /** @scrutinizer ignore-call */ apply_filters( 'wpst_og_url', esc_url( $url ) );
Loading history...
196
197
	}
198
199
	/**
200
	 * @return mixed|void
201
	 */
202
	private static function _og_title() {
203
204
		$title = get_the_title();
0 ignored issues
show
Bug introduced by
The function get_the_title was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

204
		$title = /** @scrutinizer ignore-call */ get_the_title();
Loading history...
205
206
		if ( is_home() || is_front_page() ) {
0 ignored issues
show
Bug introduced by
The function is_home was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

206
		if ( /** @scrutinizer ignore-call */ is_home() || is_front_page() ) {
Loading history...
Bug introduced by
The function is_front_page was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

206
		if ( is_home() || /** @scrutinizer ignore-call */ is_front_page() ) {
Loading history...
207
			$title = get_bloginfo( 'name' );
0 ignored issues
show
Bug introduced by
The function get_bloginfo was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

207
			$title = /** @scrutinizer ignore-call */ get_bloginfo( 'name' );
Loading history...
208
		}
209
210
		return apply_filters( 'wpst_og_title', wp_kses_post( $title ) );
0 ignored issues
show
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

210
		return /** @scrutinizer ignore-call */ apply_filters( 'wpst_og_title', wp_kses_post( $title ) );
Loading history...
Bug introduced by
The function wp_kses_post was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

210
		return apply_filters( 'wpst_og_title', /** @scrutinizer ignore-call */ wp_kses_post( $title ) );
Loading history...
211
212
	}
213
214
	/**
215
	 * @return mixed|void
216
	 */
217
	private static function _og_description() {
218
219
		$description = apply_filters( 'the_excerpt', get_the_excerpt() );
0 ignored issues
show
Bug introduced by
The function get_the_excerpt was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

219
		$description = apply_filters( 'the_excerpt', /** @scrutinizer ignore-call */ get_the_excerpt() );
Loading history...
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

219
		$description = /** @scrutinizer ignore-call */ apply_filters( 'the_excerpt', get_the_excerpt() );
Loading history...
220
221
		if ( is_home() || is_front_page() ) {
0 ignored issues
show
Bug introduced by
The function is_front_page was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

221
		if ( is_home() || /** @scrutinizer ignore-call */ is_front_page() ) {
Loading history...
Bug introduced by
The function is_home was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

221
		if ( /** @scrutinizer ignore-call */ is_home() || is_front_page() ) {
Loading history...
222
			$description = get_bloginfo( 'description' );
0 ignored issues
show
Bug introduced by
The function get_bloginfo was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

222
			$description = /** @scrutinizer ignore-call */ get_bloginfo( 'description' );
Loading history...
223
		}
224
225
		return apply_filters( 'wpst_og_description', esc_html( $description ) );
0 ignored issues
show
Bug introduced by
The function esc_html was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

225
		return apply_filters( 'wpst_og_description', /** @scrutinizer ignore-call */ esc_html( $description ) );
Loading history...
226
227
	}
228
229
	/**
230
	 * @return mixed|void
231
	 */
232
	private static function _og_image() {
233
234
		$image_url = get_the_post_thumbnail_url();
0 ignored issues
show
Bug introduced by
The function get_the_post_thumbnail_url was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

234
		$image_url = /** @scrutinizer ignore-call */ get_the_post_thumbnail_url();
Loading history...
235
236
		if ( is_home() || is_front_page() ) {
0 ignored issues
show
Bug introduced by
The function is_home was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

236
		if ( /** @scrutinizer ignore-call */ is_home() || is_front_page() ) {
Loading history...
Bug introduced by
The function is_front_page was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

236
		if ( is_home() || /** @scrutinizer ignore-call */ is_front_page() ) {
Loading history...
237
			$image_url = '';
238
		}
239
240
		return apply_filters( 'wpst_og_image', esc_url( $image_url ) );
0 ignored issues
show
Bug introduced by
The function esc_url was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

240
		return apply_filters( 'wpst_og_image', /** @scrutinizer ignore-call */ esc_url( $image_url ) );
Loading history...
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

240
		return /** @scrutinizer ignore-call */ apply_filters( 'wpst_og_image', esc_url( $image_url ) );
Loading history...
241
242
	}
243
244
	/**
245
	 * @param string $property
246
	 * @param string $value
247
	 *
248
	 * @return string
249
	 */
250
	private static function _item_sharing_property( $property, $value ) {
251
252
		$text  = '';
253
		$maybe = apply_filters( "wpst_item_{$property}", $value );
0 ignored issues
show
Bug introduced by
The function apply_filters was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

253
		$maybe = /** @scrutinizer ignore-call */ apply_filters( "wpst_item_{$property}", $value );
Loading history...
254
255
		if ( ! empty( $maybe ) ) {
256
			$text = sprintf( ' data-%1$s="%2$s" ', str_replace('_', '-', $property ), esc_attr( $maybe ) );
0 ignored issues
show
Bug introduced by
The function esc_attr was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

256
			$text = sprintf( ' data-%1$s="%2$s" ', str_replace('_', '-', $property ), /** @scrutinizer ignore-call */ esc_attr( $maybe ) );
Loading history...
257
		}
258
259
		return $text;
260
261
	}
262
263
	/**
264
	 * @param  bool $show
265
	 *
266
	 * @return string
267
	 */
268
	private static function _item_sharing_count( $show ) {
269
270
		$text = '';
271
272
		if ( $show ) {
273
			$text = '<span class="count"></span>';
274
		}
275
276
		return $text;
277
278
	}
279
280
}
281