PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 12.0.3
Jetpack – WP Security, Backup, Speed, & Growth v12.0.3
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / json-endpoints / class.wpcom-json-api-list-comments-endpoint.php
jetpack / json-endpoints Last commit date
jetpack 3 years ago class.wpcom-json-api-add-widget-endpoint.php 3 years ago class.wpcom-json-api-autosave-post-v1-1-endpoint.php 5 years ago class.wpcom-json-api-bulk-delete-post-endpoint.php 4 years ago class.wpcom-json-api-bulk-restore-post-endpoint.php 4 years ago class.wpcom-json-api-bulk-update-comments-endpoint.php 4 years ago class.wpcom-json-api-comment-endpoint.php 4 years ago class.wpcom-json-api-delete-media-endpoint.php 4 years ago class.wpcom-json-api-delete-media-v1-1-endpoint.php 4 years ago class.wpcom-json-api-edit-media-v1-2-endpoint.php 3 years ago class.wpcom-json-api-get-autosave-v1-1-endpoint.php 5 years ago class.wpcom-json-api-get-comment-counts-endpoint.php 4 years ago class.wpcom-json-api-get-comment-endpoint.php 4 years ago class.wpcom-json-api-get-comment-history-endpoint.php 4 years ago class.wpcom-json-api-get-comments-tree-endpoint.php 4 years ago class.wpcom-json-api-get-comments-tree-v1-1-endpoint.php 4 years ago class.wpcom-json-api-get-comments-tree-v1-2-endpoint.php 4 years ago class.wpcom-json-api-get-customcss.php 4 years ago class.wpcom-json-api-get-media-endpoint.php 4 years ago class.wpcom-json-api-get-media-v1-1-endpoint.php 4 years ago class.wpcom-json-api-get-media-v1-2-endpoint.php 3 years ago class.wpcom-json-api-get-post-counts-v1-1-endpoint.php 4 years ago class.wpcom-json-api-get-post-endpoint.php 4 years ago class.wpcom-json-api-get-post-v1-1-endpoint.php 4 years ago class.wpcom-json-api-get-site-endpoint.php 3 years ago class.wpcom-json-api-get-site-v1-2-endpoint.php 3 years ago class.wpcom-json-api-get-taxonomies-endpoint.php 4 years ago class.wpcom-json-api-get-taxonomy-endpoint.php 4 years ago class.wpcom-json-api-get-term-endpoint.php 4 years ago class.wpcom-json-api-list-comments-endpoint.php 3 years ago class.wpcom-json-api-list-dropdown-pages-endpoint.php 3 years ago class.wpcom-json-api-list-embeds-endpoint.php 4 years ago class.wpcom-json-api-list-media-endpoint.php 4 years ago class.wpcom-json-api-list-media-v1-1-endpoint.php 4 years ago class.wpcom-json-api-list-media-v1-2-endpoint.php 3 years ago class.wpcom-json-api-list-post-type-taxonomies-endpoint.php 4 years ago class.wpcom-json-api-list-post-types-endpoint.php 3 years ago class.wpcom-json-api-list-posts-endpoint.php 3 years ago class.wpcom-json-api-list-posts-v1-1-endpoint.php 3 years ago class.wpcom-json-api-list-posts-v1-2-endpoint.php 3 years ago class.wpcom-json-api-list-roles-endpoint.php 4 years ago class.wpcom-json-api-list-shortcodes-endpoint.php 4 years ago class.wpcom-json-api-list-terms-endpoint.php 4 years ago class.wpcom-json-api-list-users-endpoint.php 3 years ago class.wpcom-json-api-menus-v1-1-endpoint.php 4 years ago class.wpcom-json-api-post-endpoint.php 3 years ago class.wpcom-json-api-post-v1-1-endpoint.php 3 years ago class.wpcom-json-api-render-embed-endpoint.php 4 years ago class.wpcom-json-api-render-embed-reversal-endpoint.php 4 years ago class.wpcom-json-api-render-endpoint.php 3 years ago class.wpcom-json-api-render-shortcode-endpoint.php 4 years ago class.wpcom-json-api-sharing-buttons-endpoint.php 3 years ago class.wpcom-json-api-site-settings-endpoint.php 3 years ago class.wpcom-json-api-site-settings-v1-2-endpoint.php 3 years ago class.wpcom-json-api-site-settings-v1-3-endpoint.php 3 years ago class.wpcom-json-api-site-settings-v1-4-endpoint.php 3 years ago class.wpcom-json-api-site-user-endpoint.php 4 years ago class.wpcom-json-api-taxonomy-endpoint.php 4 years ago class.wpcom-json-api-update-comment-endpoint.php 3 years ago class.wpcom-json-api-update-customcss.php 4 years ago class.wpcom-json-api-update-media-endpoint.php 4 years ago class.wpcom-json-api-update-media-v1-1-endpoint.php 4 years ago class.wpcom-json-api-update-post-endpoint.php 3 years ago class.wpcom-json-api-update-post-v1-1-endpoint.php 3 years ago class.wpcom-json-api-update-post-v1-2-endpoint.php 3 years ago class.wpcom-json-api-update-site-homepage-endpoint.php 4 years ago class.wpcom-json-api-update-site-logo-endpoint.php 4 years ago class.wpcom-json-api-update-taxonomy-endpoint.php 4 years ago class.wpcom-json-api-update-term-endpoint.php 4 years ago class.wpcom-json-api-update-user-endpoint.php 4 years ago class.wpcom-json-api-upload-media-endpoint.php 4 years ago class.wpcom-json-api-upload-media-v1-1-endpoint.php 3 years ago
class.wpcom-json-api-list-comments-endpoint.php
375 lines
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2
3 /**
4 * Comments Walker Class.
5 */
6 class WPCOM_JSON_API_List_Comments_Walker extends Walker {
7
8 /**
9 * Tree type.
10 *
11 * @var string
12 */
13 public $tree_type = 'comment';
14
15 /**
16 * Database fields.
17 *
18 * @var array
19 */
20 public $db_fields = array(
21 'parent' => 'comment_parent',
22 'id' => 'comment_ID',
23 );
24
25 /**
26 * Start the element output.
27 *
28 * @param array $output - the output.
29 * @param object $object - the object.
30 * @param int $depth - depth.
31 * @param array $args - the arguments.
32 * @param int $current_object_id - the object ID.
33 */
34 public function start_el( &$output, $object, $depth = 0, $args = array(), $current_object_id = 0 ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
35 if ( ! is_array( $output ) ) {
36 $output = array();
37 }
38
39 $output[] = $object->comment_ID;
40 }
41
42 /**
43 * Taken from WordPress's Walker_Comment::display_element()
44 *
45 * This function is designed to enhance Walker::display_element() to
46 * display children of higher nesting levels than selected inline on
47 * the highest depth level displayed. This prevents them being orphaned
48 * at the end of the comment list.
49 *
50 * Example: max_depth = 2, with 5 levels of nested content.
51 * 1
52 * 1.1
53 * 1.1.1
54 * 1.1.1.1
55 * 1.1.1.1.1
56 * 1.1.2
57 * 1.1.2.1
58 * 2
59 * 2.2
60 *
61 * @see Walker_Comment::display_element()
62 * @see Walker::display_element()
63 * @see wp_list_comments()
64 *
65 * @param object $element — Data object.
66 * @param array $children_elements - List of elements to continue traversing (passed by reference).
67 * @param int $max_depth — Max depth to traverse.
68 * @param int $depth — Depth of current element.
69 * @param array $args — An array of arguments.
70 * @param string $output — Used to append additional content (passed by reference).
71 */
72 public function display_element( $element, &$children_elements, $max_depth, $depth, $args, &$output ) {
73
74 if ( ! $element ) {
75 return;
76 }
77
78 $id_field = $this->db_fields['id'];
79 $id = $element->$id_field;
80
81 parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
82
83 // If we're at the max depth, and the current element still has children, loop over those and display them at this level
84 // This is to prevent them being orphaned to the end of the list.
85 if ( $max_depth <= $depth + 1 && isset( $children_elements[ $id ] ) ) {
86 foreach ( $children_elements[ $id ] as $child ) {
87 $this->display_element( $child, $children_elements, $max_depth, $depth, $args, $output );
88 }
89
90 unset( $children_elements[ $id ] );
91 }
92 }
93 }
94
95 new WPCOM_JSON_API_List_Comments_Endpoint(
96 array(
97 'description' => 'Get a list of recent comments.',
98 'group' => 'comments',
99 'stat' => 'comments',
100
101 'method' => 'GET',
102 'path' => '/sites/%s/comments/',
103 'path_labels' => array(
104 '$site' => '(int|string) Site ID or domain',
105 ),
106
107 'allow_fallback_to_jetpack_blog_token' => true,
108
109 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/en.blog.wordpress.com/comments/?number=2',
110 )
111 );
112
113 new WPCOM_JSON_API_List_Comments_Endpoint(
114 array(
115 'description' => 'Get a list of recent comments on a post.',
116 'group' => 'comments',
117 'stat' => 'posts:1:replies',
118
119 'method' => 'GET',
120 'path' => '/sites/%s/posts/%d/replies/',
121 'path_labels' => array(
122 '$site' => '(int|string) Site ID or domain',
123 '$post_ID' => '(int) The post ID',
124 ),
125
126 'allow_fallback_to_jetpack_blog_token' => true,
127
128 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/en.blog.wordpress.com/posts/7/replies/?number=2',
129 )
130 );
131
132 /**
133 * List comment endpoint.
134 *
135 * /sites/%s/comments/ -> $blog_id
136 * /sites/%s/posts/%d/replies/ -> $blog_id, $post_id
137 * /sites/%s/comments/%d/replies/ -> $blog_id, $comment_id
138 *
139 * @todo permissions
140 */
141 class WPCOM_JSON_API_List_Comments_Endpoint extends WPCOM_JSON_API_Comment_Endpoint { // phpcs:ignore
142
143 /**
144 * The response format.
145 *
146 * @var array
147 */
148 public $response_format = array(
149 'found' => '(int) The total number of comments found that match the request (ignoring limits, offsets, and pagination).',
150 'site_ID' => '(int) The site ID',
151 'comments' => '(array:comment) An array of comment objects.',
152 );
153
154 /**
155 * Constructor function.
156 *
157 * @param array $args - the arguments.
158 */
159 public function __construct( $args ) {
160 parent::__construct( $args );
161 $this->query = array_merge(
162 $this->query,
163 array(
164 'number' => '(int=20) The number of comments to return. Limit: 100. When using hierarchical=1, number refers to the number of top-level comments returned.',
165 'offset' => '(int=0) 0-indexed offset. Not available if using hierarchical=1.',
166 'page' => '(int) Return the Nth 1-indexed page of comments. Takes precedence over the <code>offset</code> parameter. When using hierarchical=1, pagination is a bit different. See the note on the number parameter.',
167 'order' => array(
168 'DESC' => 'Return comments in descending order from newest to oldest.',
169 'ASC' => 'Return comments in ascending order from oldest to newest.',
170 ),
171 'hierarchical' => array(
172 'false' => '',
173 'true' => '(BETA) Order the comment list hierarchically.',
174 ),
175 'after' => '(ISO 8601 datetime) Return comments dated on or after the specified datetime. Not available if using hierarchical=1.',
176 'before' => '(ISO 8601 datetime) Return comments dated on or before the specified datetime. Not available if using hierarchical=1.',
177 'type' => array(
178 'any' => 'Return all comments regardless of type.',
179 'comment' => 'Return only regular comments.',
180 'trackback' => 'Return only trackbacks.',
181 'pingback' => 'Return only pingbacks.',
182 'pings' => 'Return both trackbacks and pingbacks.',
183 ),
184 'status' => array(
185 'approved' => 'Return only approved comments.',
186 'unapproved' => 'Return only comments in the moderation queue.',
187 'spam' => 'Return only comments marked as spam.',
188 'trash' => 'Return only comments in the trash.',
189 'all' => 'Return comments of all statuses.',
190 ),
191 )
192 );
193 }
194
195 /**
196 * The callback.
197 *
198 * @param string $path - the path.
199 * @param int $blog_id - the blog ID.
200 * @param int $object_id - the object ID.
201 */
202 public function callback( $path = '', $blog_id = 0, $object_id = 0 ) {
203 $blog_id = $this->api->switch_to_blog_and_validate_user( $this->api->get_blog_id( $blog_id ) );
204 if ( is_wp_error( $blog_id ) ) {
205 return $blog_id;
206 }
207
208 $args = $this->query_args();
209
210 if ( $args['number'] < 1 ) {
211 $args['number'] = 20;
212 } elseif ( 100 < $args['number'] ) {
213 return new WP_Error( 'invalid_number', 'The NUMBER parameter must be less than or equal to 100.', 400 );
214 }
215
216 if ( false !== strpos( $path, '/posts/' ) ) {
217 // We're looking for comments of a particular post.
218 $post_id = $object_id;
219 $comment_id = 0;
220 } else {
221 // We're looking for comments for the whole blog, or replies to a single comment.
222 $comment_id = $object_id;
223 $post_id = 0;
224 }
225
226 // We can't efficiently get the number of replies to a single comment.
227 $count = false;
228 $found = -1;
229
230 if ( ! $comment_id ) {
231 // We can get comment counts for the whole site or for a single post, but only for certain queries.
232 if ( 'any' === $args['type'] && ! isset( $args['after'] ) && ! isset( $args['before'] ) ) {
233 $count = $this->api->wp_count_comments( $post_id );
234 }
235 }
236
237 switch ( $args['status'] ) {
238 case 'approved':
239 $status = 'approve';
240 if ( $count ) {
241 $found = $count->approved;
242 }
243 break;
244 default:
245 if ( ! current_user_can( 'edit_posts' ) ) {
246 return new WP_Error( 'unauthorized', 'User cannot read non-approved comments', 403 );
247 }
248 if ( 'unapproved' === $args['status'] ) {
249 $status = 'hold';
250 $count_status = 'moderated';
251 } elseif ( 'all' === $args['status'] ) {
252 $status = 'all';
253 $count_status = 'total_comments';
254 } else {
255 $status = $args['status'];
256 $count_status = $args['status'];
257 }
258 if ( $count ) {
259 $found = $count->$count_status;
260 }
261 }
262
263 /** This filter is documented in class.json-api.php */
264 $exclude = apply_filters(
265 'jetpack_api_exclude_comment_types',
266 array( 'order_note', 'webhook_delivery', 'review', 'action_log' )
267 );
268
269 $query = array(
270 'order' => $args['order'],
271 'type' => 'any' === $args['type'] ? false : $args['type'],
272 'status' => $status,
273 'type__not_in' => $exclude,
274 );
275
276 if ( isset( $args['page'] ) ) {
277 if ( $args['page'] < 1 ) {
278 $args['page'] = 1;
279 }
280 } elseif ( $args['offset'] < 0 ) {
281 $args['offset'] = 0;
282 }
283
284 if ( ! $args['hierarchical'] ) {
285 $query['number'] = $args['number'];
286
287 if ( isset( $args['page'] ) ) {
288 $query['offset'] = ( $args['page'] - 1 ) * $args['number'];
289 } else {
290 $query['offset'] = $args['offset'];
291 }
292
293 $is_before = isset( $args['before_gmt'] );
294 $is_after = isset( $args['after_gmt'] );
295
296 if ( $is_before || $is_after ) {
297 $query['date_query'] = array(
298 'column' => 'comment_date_gmt',
299 'inclusive' => true,
300 );
301
302 if ( $is_before ) {
303 $query['date_query']['before'] = $args['before_gmt'];
304 }
305
306 if ( $is_after ) {
307 $query['date_query']['after'] = $args['after_gmt'];
308 }
309 }
310 }
311
312 if ( $post_id ) {
313 $post = get_post( $post_id );
314 if ( ! $post || is_wp_error( $post ) ) {
315 return new WP_Error( 'unknown_post', 'Unknown post', 404 );
316 }
317 $query['post_id'] = $post->ID;
318 if ( $this->api->ends_with( $this->path, '/replies' ) ) {
319 $query['parent'] = 0;
320 }
321 } elseif ( $comment_id ) {
322 $comment = get_comment( $comment_id );
323 if ( ! $comment || is_wp_error( $comment ) ) {
324 return new WP_Error( 'unknown_comment', 'Unknown comment', 404 );
325 }
326 $query['parent'] = $comment_id;
327 }
328
329 $comments = get_comments( $query );
330
331 update_comment_cache( $comments );
332
333 if ( $args['hierarchical'] ) {
334 $walker = new WPCOM_JSON_API_List_Comments_Walker();
335 $comment_ids = $walker->paged_walk( $comments, get_option( 'thread_comments_depth', -1 ), isset( $args['page'] ) ? $args['page'] : 1, $args['number'] );
336 if ( ! empty( $comment_ids ) ) {
337 $comments = array_map( 'get_comment', $comment_ids );
338 }
339 }
340
341 $return = array();
342
343 foreach ( array_keys( $this->response_format ) as $key ) {
344 switch ( $key ) {
345 case 'found':
346 $return[ $key ] = (int) $found;
347 break;
348 case 'site_ID':
349 $return[ $key ] = (int) $blog_id;
350 break;
351 case 'comments':
352 $return_comments = array();
353 if ( ! empty( $comments ) ) {
354 foreach ( $comments as $comment ) {
355 $the_comment = $this->get_comment( $comment->comment_ID, $args['context'] );
356 if ( $the_comment && ! is_wp_error( $the_comment ) ) {
357 $return_comments[] = $the_comment;
358 }
359 }
360 }
361
362 if ( $return_comments ) {
363 /** This action is documented in json-endpoints/class.wpcom-json-api-site-settings-endpoint.php */
364 do_action( 'wpcom_json_api_objects', 'comments', count( $return_comments ) );
365 }
366
367 $return[ $key ] = $return_comments;
368 break;
369 }
370 }
371
372 return $return;
373 }
374 }
375