Passed
Push — master ( e51c9a...41921a )
by Chris
04:16
created

includes/classes/class-lsx-schema-graph-piece.php (86 issues)

1
<?php
2
/**
3
 * Schema for LSX
4
 *
5
 * @package lsx
6
 */
0 ignored issues
show
There must be exactly one blank line after the file comment
Loading history...
7
/**
8
 * Returns schema Review data.
9
 *
10
 * @since 10.2
11
 */
12
if ( interface_exists( 'WPSEO_Graph_Piece' ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
13
14
	class LSX_Schema_Graph_Piece implements WPSEO_Graph_Piece {
0 ignored issues
show
Coding Style Documentation introduced by
Missing doc comment for class LSX_Schema_Graph_Piece
Loading history...
15
		/**
16
		 * A value object with context variables.
17
		 *
18
		 * @var \WPSEO_Schema_Context
19
		 */
20
		public $context;
0 ignored issues
show
Expected 1 blank line(s) before first member var; 0 found
Loading history...
21
		/**
22
		 * This is the post type that you want the piece to output for.
23
		 *
24
		 * @var string;
25
		 */
26
		public $post_type;
0 ignored issues
show
Expected 1 blank line(s) before member var; 0 found
Loading history...
27
		/**
28
		 * If this is a top level parent
29
		 *
30
		 * @var boolean
31
		 */
32
		public $is_top_level;
0 ignored issues
show
Expected 1 blank line(s) before member var; 0 found
Loading history...
33
		/**
34
		 * This holds the meta_key => scehma_type of the fields you want to add to your subtrip.
35
		 *
36
		 * @var array()
37
		 */
38
		public $place_ids;
0 ignored issues
show
Expected 1 blank line(s) before member var; 0 found
Loading history...
39
		/**
40
		 * This holds an object or the current trip post.
41
		 *
42
		 * @var WP_Post();
43
		 */
44
		public $post;
0 ignored issues
show
Expected 1 blank line(s) before member var; 0 found
Loading history...
45
		/**
46
		 * This holds URL for the trip
47
		 *
48
		 * @var string
49
		 */
50
		public $post_url;
0 ignored issues
show
Expected 1 blank line(s) before member var; 0 found
Loading history...
51
		/**
52
		 * Constructor.
53
		 *
54
		 * @param \WPSEO_Schema_Context $context A value object with context variables.
55
		 */
56
		public function __construct( WPSEO_Schema_Context $context ) {
0 ignored issues
show
Expected 2 blank lines before function; 0 found
Loading history...
57
			$this->context      = $context;
58
			$this->place_ids    = array();
59
			$this->post         = get_post( $this->context->id );
60
			$this->post_url     = get_permalink( $this->context->id );
61
			$this->is_top_level = false;
62
			if ( is_object( $this->post ) && isset( $this->post->post_parent ) && ( false === $this->post->post_parent || 0 === $this->post->post_parent || '' === $this->post->post_parent ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
63
				$this->is_top_level = true;
64
			}
65
		}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 0 found
Loading history...
66
		/**
67
		 * Determines whether or not a piece should be added to the graph.
68
		 *
69
		 * @return bool
70
		 */
71
		public function is_needed() {
72
			if ( ! is_singular() ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
73
				return false;
74
			}
0 ignored issues
show
No blank line found after control structure
Loading history...
75
			if ( false === $this->context->site_represents ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
76
				return false;
77
			}
0 ignored issues
show
No blank line found after control structure
Loading history...
78
			return LSX_Schema_Utils::is_type( get_post_type(), $this->post_type );
79
		}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 0 found
Loading history...
80
		/**
81
		 * Returns Review data.
82
		 *
83
		 * @return array $data Review data.
84
		 */
85
		public function generate() {
86
			$data = array();
87
			return $data;
88
		}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 0 found
Loading history...
89
		/**
90
		 * Gets the connected reviews post type and set it as the "Review" schema
91
		 *
92
		 * @param  array    $data An array of offers already added.
0 ignored issues
show
Expected 3 spaces after parameter type; 4 found
Loading history...
93
		 * @param  string   $data_key
0 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
Expected 2 spaces after parameter type; 3 found
Loading history...
94
		 * @param  boolean  $include_aggregate
0 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
Expected 1 spaces after parameter type; 2 found
Loading history...
95
		 * @return array    $data
96
		 */
97
		public function add_reviews( $data, $data_key = 'reviews', $include_aggregate = true ) {
98
			$reviews       = get_post_meta( $this->context->id, 'review_to_' . $this->post_type, false );
99
			$reviews_array = array();
100
			if ( ! empty( $reviews ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
101
				$aggregate_value = 1;
102
				$review_count    = 0;
103
				foreach ( $reviews as $review_id ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
104
					$rating      = get_post_meta( $review_id, 'rating', true );
105
					$author      = get_post_meta( $review_id, 'reviewer_name', true );
106
					$description = wp_strip_all_tags( get_the_excerpt( $review_id ) );
107
					$review_args = array(
108
						'author'     => $author,
109
						'reviewBody' => $description,
110
					);
111
					// Add in the review rating.
112
					if ( false !== $rating && '' !== $rating && '0' !== $rating && 0 !== $rating ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
113
						$review_args['reviewRating'] = array(
114
							'@type'       => 'Rating',
115
							'ratingValue' => $rating,
116
						);
117
					}
0 ignored issues
show
No blank line found after control structure
Loading history...
118
					$reviews_array = LSX_Schema_Utils::add_review( $reviews_array, $review_id, $this->context, $review_args );
119
					$review_count++;
120
				}
0 ignored issues
show
No blank line found after control structure
Loading history...
121
				if ( ! empty( $reviews_array ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
122
					if ( true === $include_aggregate ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
123
						$data['aggregateRating'] = array(
124
							'@type'       => 'AggregateRating',
125
							'ratingValue' => (string) $aggregate_value,
126
							'reviewCount' => (string) $review_count,
127
							'bestRating'  => '5',
128
							'worstRating' => '1',
129
						);
130
					}
0 ignored issues
show
No blank line found after control structure
Loading history...
131
					$data[ $data_key ] = $reviews_array;
132
				}
133
			}
0 ignored issues
show
No blank line found after control structure
Loading history...
134
			return $data;
135
		}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 0 found
Loading history...
136
		/**
137
		 * Gets the connected posts and set it as the "Article" schema
138
		 *
139
		 * @param  array  $data An array of offers already added.
140
		 * @param  string $data_key
0 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
141
		 * @return array  $data
142
		 */
143
		public function add_articles( $data, $data_key = 'subjectOf' ) {
144
			$posts       = get_post_meta( $this->context->id, 'post_to_' . $this->post_type, false );
145
			$posts_array = array();
146
			if ( ! empty( $posts ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
147
				foreach ( $posts as $post_id ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
148
					$post_args = array(
149
						'articleBody' => wp_strip_all_tags( get_the_excerpt( $post_id ) ),
150
						'headline'    => get_the_title( $post_id ),
151
					);
152
					$section   = get_the_term_list( $post_id, 'category' );
153
					if ( ! is_wp_error( $section ) && '' !== $section && false !== $section ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
154
						$post_args['articleSection'] = wp_strip_all_tags( $section );
155
					}
0 ignored issues
show
No blank line found after control structure
Loading history...
156
					if ( $this->context->site_represents_reference ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
157
						$post_args['publisher'] = $this->context->site_represents_reference;
158
					}
0 ignored issues
show
No blank line found after control structure
Loading history...
159
					$image_url = get_the_post_thumbnail_url( $post_id, 'lsx-thumbnail-wide' );
160
					if ( false !== $image_url ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
161
						$post_args['image'] = $image_url;
162
					}
0 ignored issues
show
No blank line found after control structure
Loading history...
163
					$posts_array = LSX_Schema_Utils::add_article( $posts_array, $post_id, $this->context, $post_args );
164
				}
0 ignored issues
show
No blank line found after control structure
Loading history...
165
				if ( ! empty( $posts_array ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
166
					$data[ $data_key ] = $posts_array;
167
				}
168
			}
0 ignored issues
show
No blank line found after control structure
Loading history...
169
			return $data;
170
		}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 0 found
Loading history...
171
		/**
172
		 * Adds the Project and Testimonials attached to the Team Member
173
		 *
174
		 * @param array $data
0 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
175
		 *
176
		 * @return array $data
177
		 */
178
		public function add_connections( $data ) {
179
			$connections_array = array();
180
			if ( $this->is_top_level ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
181
				$connections_array = $this->add_regions( $connections_array );
182
				$connections_array = $this->add_accommodation( $connections_array );
183
				if ( ! empty( $connections_array ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
184
					$data['containsPlace'] = $connections_array;
185
				}
186
			} else {
187
				$connections_array             = $this->add_countries( $connections_array );
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 8 spaces but found 13 spaces

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
188
				$data['containedInPlace'] = $connections_array;
189
				$connections_array          = array();
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 8 spaces but found 10 spaces

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
190
				$connections_array          = $this->add_accommodation( $connections_array );
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 8 spaces but found 10 spaces

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
191
				$data['containsPlace'] = $connections_array;
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 4 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
192
			}
0 ignored issues
show
No blank line found after control structure
Loading history...
193
			return $data;
194
		}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 0 found
Loading history...
195
		/**
196
		 * Adds the terms for the taxonomy
197
		 *
198
		 * @param array $data     Review data.
199
		 * @param array $data_key the parameter name you wish to assign it to.
200
		 * @param array $taxonomy the taxonomy to grab terms for.
201
		 *
202
		 * @return array $data Review data.
203
		 */
204
		public function add_taxonomy_terms( $data, $data_key, $taxonomy ) {
205
			/**
206
			 * Filter: 'lsx_schema_' . $this->post_type . '_' . $data_key . '_taxonomy' - Allow changing the taxonomy used to assign keywords to a post type Review data.
207
			 *
208
			 * @api string $taxonomy The chosen taxonomy.
209
			 */
210
			$taxonomy = apply_filters( 'lsx_schema_' . $this->post_type . '_' . $data_key . '_taxonomy', $taxonomy );
211
			return LSX_Schema_Utils::add_terms( $data, $this->context->id, $data_key, $taxonomy );
212
		}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 0 found
Loading history...
213
		/**
214
		 * Adds the custom field value for the supplied key
215
		 *
216
		 * @param array   $data     Schema data.
217
		 * @param string  $data_key the parameter name you wish to assign it to.
218
		 * @param string  $meta_key the taxonomy to grab terms for.
219
		 * @param boolean $single   A single custom field or an array
0 ignored issues
show
Coding Style Documentation introduced by
Parameter comment must end with a full stop
Loading history...
220
		 *
221
		 * @return array $data Review data.
222
		 */
223
		public function add_custom_field( $data, $data_key, $meta_key, $single = true ) {
224
			$value = get_post_meta( $this->context->id, $meta_key, $single );
225
			if ( '' !== $value && false !== $value ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
226
				$data[ $data_key ] = $value;
227
			}
0 ignored issues
show
No blank line found after control structure
Loading history...
228
			return $data;
229
		}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 0 found
Loading history...
230
	}
231
}
232