Passed
Push — add/471 ( 1979ae...abc1b1 )
by Virginia
05:13
created
includes/classes/class-lsx-schema-graph-piece.php 1 patch
Indentation   +217 added lines, -217 removed lines patch added patch discarded remove patch
@@ -12,221 +12,221 @@
 block discarded – undo
12 12
 use \Yoast\WP\SEO\Generators\Schema\Abstract_Schema_Piece;
13 13
 
14 14
 if ( class_exists( 'Abstract_Schema_Piece' ) ) {
15
-	class LSX_Schema_Graph_Piece extends Abstract_Schema_Piece {
16
-		/**
17
-		 * A value object with context variables.
18
-		 *
19
-		 * @var \WPSEO_Schema_Context
20
-		 */
21
-		public $context;
22
-		/**
23
-		 * This is the post type that you want the piece to output for.
24
-		 *
25
-		 * @var string;
26
-		 */
27
-		public $post_type;
28
-		/**
29
-		 * If this is a top level parent
30
-		 *
31
-		 * @var boolean
32
-		 */
33
-		public $is_top_level;
34
-		/**
35
-		 * This holds the meta_key => scehma_type of the fields you want to add to your subtrip.
36
-		 *
37
-		 * @var array()
38
-		 */
39
-		public $place_ids;
40
-		/**
41
-		 * This holds an object or the current trip post.
42
-		 *
43
-		 * @var WP_Post();
44
-		 */
45
-		public $post;
46
-		/**
47
-		 * This holds URL for the trip
48
-		 *
49
-		 * @var string
50
-		 */
51
-		public $post_url;
52
-		/**
53
-		 * Constructor.
54
-		 *
55
-		 * @param \WPSEO_Schema_Context $context A value object with context variables.
56
-		 */
57
-		public function __construct( WPSEO_Schema_Context $context ) {
58
-			$this->context      = $context;
59
-			$this->place_ids    = array();
60
-			$this->post         = get_post( $this->context->id );
61
-			$this->post_url     = get_permalink( $this->context->id );
62
-			$this->is_top_level = false;
63
-			if ( is_object( $this->post ) && isset( $this->post->post_parent ) && ( false === $this->post->post_parent || 0 === $this->post->post_parent || '' === $this->post->post_parent ) ) {
64
-				$this->is_top_level = true;
65
-			}
66
-		}
67
-		/**
68
-		 * Determines whether or not a piece should be added to the graph.
69
-		 *
70
-		 * @return bool
71
-		 */
72
-		public function is_needed() {
73
-			if ( ! is_singular() ) {
74
-				return false;
75
-			}
76
-			if ( false === $this->context->site_represents ) {
77
-				return false;
78
-			}
79
-			return LSX_Schema_Utils::is_type( get_post_type(), $this->post_type );
80
-		}
81
-		/**
82
-		 * Returns Review data.
83
-		 *
84
-		 * @return array $data Review data.
85
-		 */
86
-		public function generate() {
87
-			$data = array();
88
-			return $data;
89
-		}
90
-		/**
91
-		 * Gets the connected reviews post type and set it as the "Review" schema
92
-		 *
93
-		 * @param  array    $data An array of offers already added.
94
-		 * @param  string   $data_key
95
-		 * @param  boolean  $include_aggregate
96
-		 * @return array    $data
97
-		 */
98
-		public function add_reviews( $data, $data_key = 'reviews', $include_aggregate = true ) {
99
-			$reviews       = get_post_meta( $this->context->id, 'review_to_' . $this->post_type, false );
100
-			$reviews_array = array();
101
-			if ( ! empty( $reviews ) ) {
102
-				$aggregate_value = 1;
103
-				$review_count    = 0;
104
-				foreach ( $reviews as $review_id ) {
105
-					$rating      = get_post_meta( $review_id, 'rating', true );
106
-					$author      = get_post_meta( $review_id, 'reviewer_name', true );
107
-					$description = wp_strip_all_tags( get_the_excerpt( $review_id ) );
108
-					$review_args = array(
109
-						'author'     => $author,
110
-						'reviewBody' => $description,
111
-					);
112
-					// Add in the review rating.
113
-					if ( false !== $rating && '' !== $rating && '0' !== $rating && 0 !== $rating ) {
114
-						$review_args['reviewRating'] = array(
115
-							'@type'       => 'Rating',
116
-							'ratingValue' => $rating,
117
-						);
118
-					}
119
-					$reviews_array = LSX_Schema_Utils::add_review( $reviews_array, $review_id, $this->context, $review_args );
120
-					$review_count++;
121
-				}
122
-				if ( ! empty( $reviews_array ) ) {
123
-					if ( true === $include_aggregate ) {
124
-						$data['aggregateRating'] = array(
125
-							'@type'       => 'AggregateRating',
126
-							'ratingValue' => (string) $aggregate_value,
127
-							'reviewCount' => (string) $review_count,
128
-							'bestRating'  => '5',
129
-							'worstRating' => '1',
130
-						);
131
-					}
132
-					$data[ $data_key ] = $reviews_array;
133
-				}
134
-			}
135
-			return $data;
136
-		}
137
-		/**
138
-		 * Gets the connected posts and set it as the "Article" schema
139
-		 *
140
-		 * @param  array  $data An array of offers already added.
141
-		 * @param  string $data_key
142
-		 * @return array  $data
143
-		 */
144
-		public function add_articles( $data, $data_key = 'subjectOf' ) {
145
-			$posts       = get_post_meta( $this->context->id, 'post_to_' . $this->post_type, false );
146
-			$posts_array = array();
147
-			if ( ! empty( $posts ) ) {
148
-				foreach ( $posts as $post_id ) {
149
-					$post_args = array(
150
-						'articleBody' => wp_strip_all_tags( get_the_excerpt( $post_id ) ),
151
-						'headline'    => get_the_title( $post_id ),
152
-					);
153
-					$section   = get_the_term_list( $post_id, 'category' );
154
-					if ( ! is_wp_error( $section ) && '' !== $section && false !== $section ) {
155
-						$post_args['articleSection'] = wp_strip_all_tags( $section );
156
-					}
157
-					if ( $this->context->site_represents_reference ) {
158
-						$post_args['publisher'] = $this->context->site_represents_reference;
159
-					}
160
-					$image_url = get_the_post_thumbnail_url( $post_id, 'lsx-thumbnail-wide' );
161
-					if ( false !== $image_url ) {
162
-						$post_args['image'] = $image_url;
163
-					}
164
-					$posts_array = LSX_Schema_Utils::add_article( $posts_array, $post_id, $this->context, $post_args );
165
-				}
166
-				if ( ! empty( $posts_array ) ) {
167
-					$data[ $data_key ] = $posts_array;
168
-				}
169
-			}
170
-			return $data;
171
-		}
172
-		/**
173
-		 * Adds the Project and Testimonials attached to the Team Member
174
-		 *
175
-		 * @param array $data
176
-		 *
177
-		 * @return array $data
178
-		 */
179
-		public function add_connections( $data ) {
180
-			$connections_array = array();
181
-			if ( $this->is_top_level ) {
182
-				$connections_array = $this->add_regions( $connections_array );
183
-				$connections_array = $this->add_accommodation( $connections_array );
184
-				if ( ! empty( $connections_array ) ) {
185
-					$data['containsPlace'] = $connections_array;
186
-				}
187
-			} else {
188
-				$connections_array             = $this->add_countries( $connections_array );
189
-				$data['containedInPlace'] = $connections_array;
190
-				$connections_array          = array();
191
-				$connections_array          = $this->add_accommodation( $connections_array );
192
-				$data['containsPlace'] = $connections_array;
193
-			}
194
-			return $data;
195
-		}
196
-		/**
197
-		 * Adds the terms for the taxonomy
198
-		 *
199
-		 * @param array $data     Review data.
200
-		 * @param array $data_key the parameter name you wish to assign it to.
201
-		 * @param array $taxonomy the taxonomy to grab terms for.
202
-		 *
203
-		 * @return array $data Review data.
204
-		 */
205
-		public function add_taxonomy_terms( $data, $data_key, $taxonomy ) {
206
-			/**
207
-			 * Filter: 'lsx_schema_' . $this->post_type . '_' . $data_key . '_taxonomy' - Allow changing the taxonomy used to assign keywords to a post type Review data.
208
-			 *
209
-			 * @api string $taxonomy The chosen taxonomy.
210
-			 */
211
-			$taxonomy = apply_filters( 'lsx_schema_' . $this->post_type . '_' . $data_key . '_taxonomy', $taxonomy );
212
-			return LSX_Schema_Utils::add_terms( $data, $this->context->id, $data_key, $taxonomy );
213
-		}
214
-		/**
215
-		 * Adds the custom field value for the supplied key
216
-		 *
217
-		 * @param array   $data     Schema data.
218
-		 * @param string  $data_key the parameter name you wish to assign it to.
219
-		 * @param string  $meta_key the taxonomy to grab terms for.
220
-		 * @param boolean $single   A single custom field or an array
221
-		 *
222
-		 * @return array $data Review data.
223
-		 */
224
-		public function add_custom_field( $data, $data_key, $meta_key, $single = true ) {
225
-			$value = get_post_meta( $this->context->id, $meta_key, $single );
226
-			if ( '' !== $value && false !== $value ) {
227
-				$data[ $data_key ] = $value;
228
-			}
229
-			return $data;
230
-		}
231
-	}
15
+     class LSX_Schema_Graph_Piece extends Abstract_Schema_Piece {
16
+          /**
17
+           * A value object with context variables.
18
+           *
19
+           * @var \WPSEO_Schema_Context
20
+           */
21
+          public $context;
22
+          /**
23
+           * This is the post type that you want the piece to output for.
24
+           *
25
+           * @var string;
26
+           */
27
+          public $post_type;
28
+          /**
29
+           * If this is a top level parent
30
+           *
31
+           * @var boolean
32
+           */
33
+          public $is_top_level;
34
+          /**
35
+           * This holds the meta_key => scehma_type of the fields you want to add to your subtrip.
36
+           *
37
+           * @var array()
38
+           */
39
+          public $place_ids;
40
+          /**
41
+           * This holds an object or the current trip post.
42
+           *
43
+           * @var WP_Post();
44
+           */
45
+          public $post;
46
+          /**
47
+           * This holds URL for the trip
48
+           *
49
+           * @var string
50
+           */
51
+          public $post_url;
52
+          /**
53
+           * Constructor.
54
+           *
55
+           * @param \WPSEO_Schema_Context $context A value object with context variables.
56
+           */
57
+          public function __construct( WPSEO_Schema_Context $context ) {
58
+               $this->context      = $context;
59
+               $this->place_ids    = array();
60
+               $this->post         = get_post( $this->context->id );
61
+               $this->post_url     = get_permalink( $this->context->id );
62
+               $this->is_top_level = false;
63
+               if ( is_object( $this->post ) && isset( $this->post->post_parent ) && ( false === $this->post->post_parent || 0 === $this->post->post_parent || '' === $this->post->post_parent ) ) {
64
+                    $this->is_top_level = true;
65
+               }
66
+          }
67
+          /**
68
+           * Determines whether or not a piece should be added to the graph.
69
+           *
70
+           * @return bool
71
+           */
72
+          public function is_needed() {
73
+               if ( ! is_singular() ) {
74
+                    return false;
75
+               }
76
+               if ( false === $this->context->site_represents ) {
77
+                    return false;
78
+               }
79
+               return LSX_Schema_Utils::is_type( get_post_type(), $this->post_type );
80
+          }
81
+          /**
82
+           * Returns Review data.
83
+           *
84
+           * @return array $data Review data.
85
+           */
86
+          public function generate() {
87
+               $data = array();
88
+               return $data;
89
+          }
90
+          /**
91
+           * Gets the connected reviews post type and set it as the "Review" schema
92
+           *
93
+           * @param  array    $data An array of offers already added.
94
+           * @param  string   $data_key
95
+           * @param  boolean  $include_aggregate
96
+           * @return array    $data
97
+           */
98
+          public function add_reviews( $data, $data_key = 'reviews', $include_aggregate = true ) {
99
+               $reviews       = get_post_meta( $this->context->id, 'review_to_' . $this->post_type, false );
100
+               $reviews_array = array();
101
+               if ( ! empty( $reviews ) ) {
102
+                    $aggregate_value = 1;
103
+                    $review_count    = 0;
104
+                    foreach ( $reviews as $review_id ) {
105
+                         $rating      = get_post_meta( $review_id, 'rating', true );
106
+                         $author      = get_post_meta( $review_id, 'reviewer_name', true );
107
+                         $description = wp_strip_all_tags( get_the_excerpt( $review_id ) );
108
+                         $review_args = array(
109
+                              'author'     => $author,
110
+                              'reviewBody' => $description,
111
+                         );
112
+                         // Add in the review rating.
113
+                         if ( false !== $rating && '' !== $rating && '0' !== $rating && 0 !== $rating ) {
114
+                              $review_args['reviewRating'] = array(
115
+                                   '@type'       => 'Rating',
116
+                                   'ratingValue' => $rating,
117
+                              );
118
+                         }
119
+                         $reviews_array = LSX_Schema_Utils::add_review( $reviews_array, $review_id, $this->context, $review_args );
120
+                         $review_count++;
121
+                    }
122
+                    if ( ! empty( $reviews_array ) ) {
123
+                         if ( true === $include_aggregate ) {
124
+                              $data['aggregateRating'] = array(
125
+                                   '@type'       => 'AggregateRating',
126
+                                   'ratingValue' => (string) $aggregate_value,
127
+                                   'reviewCount' => (string) $review_count,
128
+                                   'bestRating'  => '5',
129
+                                   'worstRating' => '1',
130
+                              );
131
+                         }
132
+                         $data[ $data_key ] = $reviews_array;
133
+                    }
134
+               }
135
+               return $data;
136
+          }
137
+          /**
138
+           * Gets the connected posts and set it as the "Article" schema
139
+           *
140
+           * @param  array  $data An array of offers already added.
141
+           * @param  string $data_key
142
+           * @return array  $data
143
+           */
144
+          public function add_articles( $data, $data_key = 'subjectOf' ) {
145
+               $posts       = get_post_meta( $this->context->id, 'post_to_' . $this->post_type, false );
146
+               $posts_array = array();
147
+               if ( ! empty( $posts ) ) {
148
+                    foreach ( $posts as $post_id ) {
149
+                         $post_args = array(
150
+                              'articleBody' => wp_strip_all_tags( get_the_excerpt( $post_id ) ),
151
+                              'headline'    => get_the_title( $post_id ),
152
+                         );
153
+                         $section   = get_the_term_list( $post_id, 'category' );
154
+                         if ( ! is_wp_error( $section ) && '' !== $section && false !== $section ) {
155
+                              $post_args['articleSection'] = wp_strip_all_tags( $section );
156
+                         }
157
+                         if ( $this->context->site_represents_reference ) {
158
+                              $post_args['publisher'] = $this->context->site_represents_reference;
159
+                         }
160
+                         $image_url = get_the_post_thumbnail_url( $post_id, 'lsx-thumbnail-wide' );
161
+                         if ( false !== $image_url ) {
162
+                              $post_args['image'] = $image_url;
163
+                         }
164
+                         $posts_array = LSX_Schema_Utils::add_article( $posts_array, $post_id, $this->context, $post_args );
165
+                    }
166
+                    if ( ! empty( $posts_array ) ) {
167
+                         $data[ $data_key ] = $posts_array;
168
+                    }
169
+               }
170
+               return $data;
171
+          }
172
+          /**
173
+           * Adds the Project and Testimonials attached to the Team Member
174
+           *
175
+           * @param array $data
176
+           *
177
+           * @return array $data
178
+           */
179
+          public function add_connections( $data ) {
180
+               $connections_array = array();
181
+               if ( $this->is_top_level ) {
182
+                    $connections_array = $this->add_regions( $connections_array );
183
+                    $connections_array = $this->add_accommodation( $connections_array );
184
+                    if ( ! empty( $connections_array ) ) {
185
+                         $data['containsPlace'] = $connections_array;
186
+                    }
187
+               } else {
188
+                    $connections_array             = $this->add_countries( $connections_array );
189
+                    $data['containedInPlace'] = $connections_array;
190
+                    $connections_array          = array();
191
+                    $connections_array          = $this->add_accommodation( $connections_array );
192
+                    $data['containsPlace'] = $connections_array;
193
+               }
194
+               return $data;
195
+          }
196
+          /**
197
+           * Adds the terms for the taxonomy
198
+           *
199
+           * @param array $data     Review data.
200
+           * @param array $data_key the parameter name you wish to assign it to.
201
+           * @param array $taxonomy the taxonomy to grab terms for.
202
+           *
203
+           * @return array $data Review data.
204
+           */
205
+          public function add_taxonomy_terms( $data, $data_key, $taxonomy ) {
206
+               /**
207
+                * Filter: 'lsx_schema_' . $this->post_type . '_' . $data_key . '_taxonomy' - Allow changing the taxonomy used to assign keywords to a post type Review data.
208
+                *
209
+                * @api string $taxonomy The chosen taxonomy.
210
+                */
211
+               $taxonomy = apply_filters( 'lsx_schema_' . $this->post_type . '_' . $data_key . '_taxonomy', $taxonomy );
212
+               return LSX_Schema_Utils::add_terms( $data, $this->context->id, $data_key, $taxonomy );
213
+          }
214
+          /**
215
+           * Adds the custom field value for the supplied key
216
+           *
217
+           * @param array   $data     Schema data.
218
+           * @param string  $data_key the parameter name you wish to assign it to.
219
+           * @param string  $meta_key the taxonomy to grab terms for.
220
+           * @param boolean $single   A single custom field or an array
221
+           *
222
+           * @return array $data Review data.
223
+           */
224
+          public function add_custom_field( $data, $data_key, $meta_key, $single = true ) {
225
+               $value = get_post_meta( $this->context->id, $meta_key, $single );
226
+               if ( '' !== $value && false !== $value ) {
227
+                    $data[ $data_key ] = $value;
228
+               }
229
+               return $data;
230
+          }
231
+     }
232 232
 }
Please login to merge, or discard this patch.