PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-a.5
Jetpack – WP Security, Backup, Speed, & Growth v16.3-a.5
16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 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 All 506 releases
jetpack / jetpack_vendor / automattic / jetpack-import / src / endpoints / class-comment.php

class-comment.php in Jetpack – WP Security, Backup, Speed, & Growth 16.3-a.5, at jetpack_vendor/automattic/jetpack-import/src/endpoints/class-comment.php

115 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Comments REST route
4 *
5 * @package automattic/jetpack-import
6 */
7
8 namespace Automattic\Jetpack\Import\Endpoints;
9
10 use WP_Error;
11 use WP_REST_Request;
12 use WP_REST_Response;
13
14 if ( ! defined( 'ABSPATH' ) ) {
15 exit( 0 );
16 }
17
18 /**
19 * Class Comment
20 */
21 class Comment extends \WP_REST_Comments_Controller {
22
23 /**
24 * Base class
25 */
26 use Import;
27
28 /**
29 * The Import ID add a new item to the schema.
30 */
31 use Import_ID;
32
33 /**
34 * Whether the controller supports batching.
35 *
36 * @var array
37 */
38 protected $allow_batch = array( 'v1' => true );
39
40 /**
41 * Constructor.
42 */
43 public function __construct() {
44 parent::__construct();
45
46 // @see add_comment_meta
47 $this->import_id_meta_type = 'comment';
48 }
49
50 /**
51 * Creates a comment.
52 *
53 * @param WP_REST_Request $request Full details about the request.
54 * @return WP_REST_Response|WP_Error Response object on success, or error object on failure.
55 */
56 public function create_item( $request ) {
57 // Set the WP_IMPORTING constant to prevent sync notifications
58 $this->set_importing();
59 // Resolve comment post ID.
60 if ( ! empty( $request['post'] ) ) {
61 $posts = \get_posts( $this->get_import_db_query( $request['post'] ) );
62
63 // Overwrite the comment parent post ID.
64 $request['post'] = is_array( $posts ) && count( $posts ) ? $posts[0] : 0;
65 }
66
67 // Resolve comment parent ID.
68 if ( ! empty( $request['parent'] ) ) {
69 $comments = \get_comments( $this->get_import_db_query( $request['parent'] ) );
70
71 // Overwrite the comment parent post ID.
72 $request['parent'] = is_array( $comments ) && count( $comments ) ? $comments[0] : 0;
73 }
74
75 $duplicated_id = null;
76
77 /**
78 * Core comment creation function doesn't return the duplicated comment ID.
79 * Add a filter to get the ID.
80 *
81 * phpcs:disable VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
82 */
83 $get_id_func = function ( $dupe_id, $commentdata ) use ( &$duplicated_id ) {
84 if ( $dupe_id !== null ) {
85 $duplicated_id = $dupe_id;
86 }
87
88 return $dupe_id;
89 };
90
91 // Add the filter.
92 \add_filter( 'duplicate_comment_id', $get_id_func, 10, 2 );
93
94 $response = parent::create_item( $request );
95
96 // Check if the comment is duplicated.
97 if (
98 $duplicated_id !== null &&
99 is_wp_error( $response ) &&
100 $response->get_error_code() === 'comment_duplicate' ) {
101 $data = $response->get_error_data( 'comment_duplicate' );
102
103 // Add the comment ID.
104 $data['comment_id'] = $duplicated_id;
105
106 $response->add_data( $data );
107 }
108
109 // Remove the filter.
110 \remove_filter( 'duplicate_comment_id', $get_id_func );
111
112 return $this->add_import_id_metadata( $request, $response );
113 }
114 }
115