Passed
Push — master ( 8bad98...f72747 )
by Warwick
02:21 queued 12s
created

Output::output_sharing()   A

Complexity

Conditions 4
Paths 2

Size

Total Lines 7
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 8
nc 2
nop 0
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
namespace lsx\sharing\classes\frontend;
3
4
/**
5
 * Houses the functions for the Settings page.
6
 *
7
 * @package lsx-sharing
8
 */
9
class Output {
10
11
	/**
12
	 * Holds class instance
13
	 *
14
	 * @since 1.0.0
15
	 *
16
	 * @var      object \lsx\sharing\classes\frontend\Output()
17
	 */
18
	protected static $instance = null;
19
20
	/**
21
	 * Contructor
22
	 */
23
	public function __construct() {
24
		add_action( 'wp_enqueue_scripts', array( $this, 'assets' ), 5 );
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

24
		/** @scrutinizer ignore-call */ 
25
  add_action( 'wp_enqueue_scripts', array( $this, 'assets' ), 5 );
Loading history...
25
		add_filter( 'wp_kses_allowed_html', array( $this, 'wp_kses_allowed_html' ), 10, 2 );
0 ignored issues
show
Bug introduced by
The function add_filter 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

25
		/** @scrutinizer ignore-call */ 
26
  add_filter( 'wp_kses_allowed_html', array( $this, 'wp_kses_allowed_html' ), 10, 2 );
Loading history...
26
		add_shortcode( 'lsx_sharing_buttons', array( $this, 'sharing_buttons_shortcode' ) );
0 ignored issues
show
Bug introduced by
The function add_shortcode 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

26
		/** @scrutinizer ignore-call */ 
27
  add_shortcode( 'lsx_sharing_buttons', array( $this, 'sharing_buttons_shortcode' ) );
Loading history...
27
		// Storefront (storefront_loop_post, storefront_single_post).
28
		add_action( 'storefront_post_content_before', array( $this, 'sharing_buttons_template' ), 20 );
29
		// WooCommerce.
30
		add_action( 'woocommerce_share', array( $this, 'sharing_buttons_template' ) );
31
32
		add_action( 'lsx_entry_after', array( $this, 'output_sharing' ) );
33
	}
34
35
	/**
36
	 * Return an instance of this class.
37
	 *
38
	 * @since 1.0.0
39
	 *
40
	 * @return    object \lsx\sharing\classes\frontend\Output()    A single instance of this class.
41
	 */
42
	public static function get_instance() {
43
		// If the single instance hasn't been set, set it now.
44
		if ( null == self::$instance ) {
45
			self::$instance = new self();
46
		}
47
		return self::$instance;
48
	}
49
50
	/**
51
	 * Enques the assets.
52
	 */
53
	public function assets() {
54
		if ( defined( 'WP_DEBUG' ) && true === WP_DEBUG ) {
0 ignored issues
show
Bug introduced by
The constant lsx\sharing\classes\frontend\WP_DEBUG was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
55
			$min = '';
56
		} else {
57
			$min = '.min';
58
		}
59
		/* Remove assets completely if all sharing options are off */
60
61
		if ( \lsx\sharing\includes\functions\is_disabled() ) {
62
			return '';
63
		}
64
65
		// Set our variables.
66
		$post_type = get_post_type();
0 ignored issues
show
Bug introduced by
The function get_post_type 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

66
		$post_type = /** @scrutinizer ignore-call */ get_post_type();
Loading history...
67
68
		/* Only show the assets if the post type sharing option is on */
69
		if ( ! \lsx\sharing\includes\functions\is_pt_disabled( $post_type ) ) {
70
71
			wp_enqueue_script( 'lsx-sharing', LSX_SHARING_URL . 'assets/js/lsx-sharing' . $min . '.js', array( 'jquery' ), LSX_SHARING_VER, 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

71
			/** @scrutinizer ignore-call */ 
72
   wp_enqueue_script( 'lsx-sharing', LSX_SHARING_URL . 'assets/js/lsx-sharing' . $min . '.js', array( 'jquery' ), LSX_SHARING_VER, true );
Loading history...
72
73
			$params = apply_filters( 'lsx_sharing_js_params', 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

73
			$params = /** @scrutinizer ignore-call */ apply_filters( 'lsx_sharing_js_params', array(
Loading history...
74
				'ajax_url' => admin_url( 'admin-ajax.php' ),
0 ignored issues
show
Bug introduced by
The function admin_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

74
				'ajax_url' => /** @scrutinizer ignore-call */ admin_url( 'admin-ajax.php' ),
Loading history...
75
			));
76
77
			wp_localize_script( 'lsx-sharing', 'lsx_sharing_params', $params );
0 ignored issues
show
Bug introduced by
The function wp_localize_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

77
			/** @scrutinizer ignore-call */ 
78
   wp_localize_script( 'lsx-sharing', 'lsx_sharing_params', $params );
Loading history...
78
79
			wp_enqueue_style( 'lsx-sharing', LSX_SHARING_URL . 'assets/css/lsx-sharing.css', array(), LSX_SHARING_VER );
0 ignored issues
show
Bug introduced by
The function wp_enqueue_style 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

79
			/** @scrutinizer ignore-call */ 
80
   wp_enqueue_style( 'lsx-sharing', LSX_SHARING_URL . 'assets/css/lsx-sharing.css', array(), LSX_SHARING_VER );
Loading history...
80
			wp_style_add_data( 'lsx-sharing', 'rtl', 'replace' );
0 ignored issues
show
Bug introduced by
The function wp_style_add_data 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

80
			/** @scrutinizer ignore-call */ 
81
   wp_style_add_data( 'lsx-sharing', 'rtl', 'replace' );
Loading history...
81
		}
82
	}
83
84
	/**
85
	 * Display/return sharing buttons.
86
	 */
87
	public function sharing_buttons( $buttons = array( 'facebook', 'twitter', 'pinterest' ), $echo = false, $post_id = false ) {
88
		$sharing_content = '';
89
90
		if ( ( is_preview() || is_admin() ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
0 ignored issues
show
Bug introduced by
The function is_admin 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

90
		if ( ( is_preview() || /** @scrutinizer ignore-call */ is_admin() ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
Loading history...
Bug introduced by
The function is_preview 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

90
		if ( ( /** @scrutinizer ignore-call */ is_preview() || is_admin() ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
Loading history...
Bug introduced by
The constant lsx\sharing\classes\frontend\DOING_AJAX was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
91
			return '';
92
		}
93
94
		//Set our variables
95
		global $post;
96
		$share_post = $post;
97
		if ( false !== $post_id ) {
98
			$share_post = get_post( $post_id );
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

98
			$share_post = /** @scrutinizer ignore-call */ get_post( $post_id );
Loading history...
99
			$post_type = get_post_type( $post_id );
0 ignored issues
show
Bug introduced by
The function get_post_type 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

99
			$post_type = /** @scrutinizer ignore-call */ get_post_type( $post_id );
Loading history...
100
		} else {
101
			$post_type = get_post_type();
102
		}
103
104
		if ( \lsx\sharing\includes\functions\is_disabled() || \lsx\sharing\includes\functions\is_pt_disabled( $post_type ) ) {
105
			return '';
106
		}
107
108
		if ( ( is_array( $buttons ) && count( $buttons ) > 0 ) ) {
109
			$sharing_content .= '<div class="lsx-sharing-content"><p>';
110
111
			$sharing_text = \lsx\sharing\includes\functions\get_sharing_text( $post_type );
112
			if ( '' !== $sharing_text ) {
113
				$sharing_content .= '<span class="lsx-sharing-label">' . $sharing_text . '</span>';
114
			}
115
116
			foreach ( $buttons as $id => $button ) {
117
				$button_obj = new \lsx\sharing\classes\frontend\Button( $button, $this->options, $post_type );
0 ignored issues
show
Bug Best Practice introduced by
The property options does not exist on lsx\sharing\classes\frontend\Output. Did you maybe forget to declare it?
Loading history...
118
119
				if ( ! empty( $button_obj ) ) {
120
					$url = $button_obj->get_link( $share_post );
121
122
					if ( ! empty( $url ) ) {
123
						if ( 'email' === $button ) {
124
							if ( ! isset( $this->options['display'] ) || empty( $this->options['display']['sharing_email_form_id'] ) ) {
125
								continue;
126
							}
127
							$sharing_content .= '<span class="lsx-sharing-button lsx-sharing-button-' . esc_attr( $button ) . '"><a href="#lsx-sharing-email" data-toggle="modal" data-link="' . esc_url( $url ) . '"><span class="fa" aria-hidden="true"></span></a></span>';
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

127
							$sharing_content .= '<span class="lsx-sharing-button lsx-sharing-button-' . /** @scrutinizer ignore-call */ esc_attr( $button ) . '"><a href="#lsx-sharing-email" data-toggle="modal" data-link="' . esc_url( $url ) . '"><span class="fa" aria-hidden="true"></span></a></span>';
Loading history...
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

127
							$sharing_content .= '<span class="lsx-sharing-button lsx-sharing-button-' . esc_attr( $button ) . '"><a href="#lsx-sharing-email" data-toggle="modal" data-link="' . /** @scrutinizer ignore-call */ esc_url( $url ) . '"><span class="fa" aria-hidden="true"></span></a></span>';
Loading history...
128
						} else {
129
							$sharing_content .= '<span class="lsx-sharing-button lsx-sharing-button-' . esc_attr( $button ) . '"><a href="' . esc_url( $url ) . '" target="_blank" rel="noopener noreferrer"><span class="fa" aria-hidden="true"></span></a></span>';
130
						}
131
					}
132
				}
133
			}
134
			$sharing_content .= '</p></div>';
135
		}
136
137
		if ( $echo ) {
138
			echo wp_kses_post( $sharing_content );
0 ignored issues
show
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

138
			echo /** @scrutinizer ignore-call */ wp_kses_post( $sharing_content );
Loading history...
139
		} else {
140
			return $sharing_content;
141
		}
142
	}
143
144
	/**
145
	 * Sharing buttons shortcode.
146
	 */
147
	public function sharing_buttons_shortcode( $atts ) {
148
		$atts = shortcode_atts( array(
0 ignored issues
show
Bug introduced by
The function shortcode_atts 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

148
		$atts = /** @scrutinizer ignore-call */ shortcode_atts( array(
Loading history...
149
			'buttons' => '',
150
		), $atts, 'lsx_sharing_buttons' );
151
152
		if ( empty( $atts['buttons'] ) ) {
153
			return '';
154
		}
155
156
		$no_whitespaces = preg_replace( '/\s*,\s*/', ',', filter_var( $atts['buttons'], FILTER_SANITIZE_STRING ) );
157
		$buttons        = explode( ',', $no_whitespaces );
158
159
		if ( is_array( $buttons ) && count( $buttons ) > 0 ) {
160
			return $this->sharing_buttons( $buttons );
161
		}
162
	}
163
164
	/**
165
	 * Display buttons (template hook).
166
	 */
167
	public function sharing_buttons_template() {
168
		echo wp_kses_post( $this->sharing_buttons() );
0 ignored issues
show
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

168
		echo /** @scrutinizer ignore-call */ wp_kses_post( $this->sharing_buttons() );
Loading history...
169
	}
170
171
	/**
172
	 * Allow data params for Bootstrap modal.
173
	 */
174
	public function wp_kses_allowed_html( $allowedtags, $context ) {
0 ignored issues
show
Unused Code introduced by
The parameter $context is not used and could be removed. ( Ignorable by Annotation )

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

174
	public function wp_kses_allowed_html( $allowedtags, /** @scrutinizer ignore-unused */ $context ) {

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
175
		$allowedtags['a']['data-toggle'] = true;
176
		$allowedtags['a']['data-link']   = true;
177
		return $allowedtags;
178
	}
179
180
	/**
181
	 * Outputs the sharing to the templates.
182
	 *
183
	 * @return void
184
	 */
185
	public function output_sharing() {
186
		if ( is_main_query() && is_single() && ! is_singular( array( 'post', 'page', 'product' ) ) ) {
0 ignored issues
show
Bug introduced by
The function is_singular 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

186
		if ( is_main_query() && is_single() && ! /** @scrutinizer ignore-call */ is_singular( array( 'post', 'page', 'product' ) ) ) {
Loading history...
Bug introduced by
The function is_single 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

186
		if ( is_main_query() && /** @scrutinizer ignore-call */ is_single() && ! is_singular( array( 'post', 'page', 'product' ) ) ) {
Loading history...
Bug introduced by
The function is_main_query 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

186
		if ( /** @scrutinizer ignore-call */ is_main_query() && is_single() && ! is_singular( array( 'post', 'page', 'product' ) ) ) {
Loading history...
187
			?>
188
			<footer class="footer-meta clearfix">
189
				<div class="post-tags-wrapper">
190
					<?php $this->sharing_buttons_template(); ?>
191
				</div>
192
			</footer><!-- .footer-meta -->
193
			<?php
194
		}
195
	}
196
}
197