PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 14.1.1
Jetpack – WP Security, Backup, Speed, & Growth v14.1.1
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 1 year ago class.wpcom-json-api-add-widget-endpoint.php 2 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 2 years ago class.wpcom-json-api-bulk-update-comments-endpoint.php 3 years ago class.wpcom-json-api-comment-endpoint.php 2 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 2 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 2 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 2 years ago class.wpcom-json-api-get-post-counts-v1-1-endpoint.php 2 years ago class.wpcom-json-api-get-post-endpoint.php 2 years ago class.wpcom-json-api-get-post-v1-1-endpoint.php 2 years ago class.wpcom-json-api-get-site-endpoint.php 1 year ago class.wpcom-json-api-get-site-v1-2-endpoint.php 2 years ago class.wpcom-json-api-get-taxonomies-endpoint.php 2 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 2 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 2 years ago class.wpcom-json-api-list-media-v1-1-endpoint.php 2 years ago class.wpcom-json-api-list-media-v1-2-endpoint.php 2 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 2 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 1 year ago class.wpcom-json-api-list-shortcodes-endpoint.php 4 years ago class.wpcom-json-api-list-terms-endpoint.php 2 years ago class.wpcom-json-api-list-users-endpoint.php 2 years ago class.wpcom-json-api-menus-v1-1-endpoint.php 2 years ago class.wpcom-json-api-post-endpoint.php 2 years ago class.wpcom-json-api-post-v1-1-endpoint.php 2 years ago class.wpcom-json-api-render-embed-endpoint.php 2 years ago class.wpcom-json-api-render-embed-reversal-endpoint.php 2 years ago class.wpcom-json-api-render-endpoint.php 3 years ago class.wpcom-json-api-render-shortcode-endpoint.php 3 years ago class.wpcom-json-api-sharing-buttons-endpoint.php 2 years ago class.wpcom-json-api-site-settings-endpoint.php 1 year ago class.wpcom-json-api-site-settings-v1-2-endpoint.php 2 years ago class.wpcom-json-api-site-settings-v1-3-endpoint.php 2 years ago class.wpcom-json-api-site-settings-v1-4-endpoint.php 1 year ago class.wpcom-json-api-site-user-endpoint.php 2 years ago class.wpcom-json-api-taxonomy-endpoint.php 4 years ago class.wpcom-json-api-update-comment-endpoint.php 2 years ago class.wpcom-json-api-update-customcss.php 2 years ago class.wpcom-json-api-update-media-endpoint.php 4 years ago class.wpcom-json-api-update-media-v1-1-endpoint.php 2 years ago class.wpcom-json-api-update-post-endpoint.php 3 years ago class.wpcom-json-api-update-post-v1-1-endpoint.php 2 years ago class.wpcom-json-api-update-post-v1-2-endpoint.php 1 year ago class.wpcom-json-api-update-site-homepage-endpoint.php 4 years ago class.wpcom-json-api-update-site-logo-endpoint.php 2 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 3 years ago class.wpcom-json-api-upload-media-endpoint.php 3 years ago class.wpcom-json-api-upload-media-v1-1-endpoint.php 1 year ago
class.wpcom-json-api-list-comments-endpoint.php
377 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 ( str_contains( $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 if ( $args['hierarchical'] && $found > 5000 ) {
312 // Massive comment thread found; don't pre-load comment metadata to reduce memory used.
313 $query['update_comment_meta_cache'] = false;
314 }
315
316 if ( $post_id ) {
317 $post = get_post( $post_id );
318 if ( ! $post || is_wp_error( $post ) ) {
319 return new WP_Error( 'unknown_post', 'Unknown post', 404 );
320 }
321 $query['post_id'] = $post->ID;
322 if ( $this->api->ends_with( $this->path, '/replies' ) ) {
323 $query['parent'] = 0;
324 }
325 } elseif ( $comment_id ) {
326 $comment = get_comment( $comment_id );
327 if ( ! $comment || is_wp_error( $comment ) ) {
328 return new WP_Error( 'unknown_comment', 'Unknown comment', 404 );
329 }
330 $query['parent'] = $comment_id;
331 }
332
333 $comments = get_comments( $query );
334
335 if ( $args['hierarchical'] ) {
336 $walker = new WPCOM_JSON_API_List_Comments_Walker();
337 $comment_ids = $walker->paged_walk( $comments, get_option( 'thread_comments_depth', -1 ), isset( $args['page'] ) ? $args['page'] : 1, $args['number'] );
338 if ( ! empty( $comment_ids ) ) {
339 $comments = array_map( 'get_comment', $comment_ids );
340 }
341 }
342
343 $return = array();
344
345 foreach ( array_keys( $this->response_format ) as $key ) {
346 switch ( $key ) {
347 case 'found':
348 $return[ $key ] = (int) $found;
349 break;
350 case 'site_ID':
351 $return[ $key ] = (int) $blog_id;
352 break;
353 case 'comments':
354 $return_comments = array();
355 if ( ! empty( $comments ) ) {
356 foreach ( $comments as $comment ) {
357 $the_comment = $this->get_comment( $comment->comment_ID, $args['context'] );
358 if ( $the_comment && ! is_wp_error( $the_comment ) ) {
359 $return_comments[] = $the_comment;
360 }
361 }
362 }
363
364 if ( $return_comments ) {
365 /** This action is documented in json-endpoints/class.wpcom-json-api-site-settings-endpoint.php */
366 do_action( 'wpcom_json_api_objects', 'comments', count( $return_comments ) );
367 }
368
369 $return[ $key ] = $return_comments;
370 break;
371 }
372 }
373
374 return $return;
375 }
376 }
377