Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
Menu
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 2
6
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 create_item
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2/**
3 * Menus REST route
4 *
5 * @package automattic/jetpack-import
6 */
7
8namespace Automattic\Jetpack\Import\Endpoints;
9
10use WP_Error;
11use WP_REST_Request;
12use WP_REST_Response;
13
14if ( ! defined( 'ABSPATH' ) ) {
15    exit( 0 );
16}
17
18/**
19 * Class Menu
20 */
21class Menu extends \WP_REST_Menus_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. Default true.
35     *
36     * @var array
37     */
38    protected $allow_batch = array( 'v1' => true );
39
40    /**
41     * Constructor.
42     */
43    public function __construct() {
44        parent::__construct( 'nav_menu' );
45
46        // @see add_term_meta
47        $this->import_id_meta_type = 'term';
48    }
49
50    /**
51     * Creates a single menu.
52     *
53     * @param WP_REST_Request $request Full details about the request.
54     * @return WP_REST_Response|WP_Error Response object on success, or WP_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
60        $response = parent::create_item( $request );
61
62        // Ensure that the HTTP status is a valid one.
63        $response = $this->ensure_http_status( $response, 'menu_exists', 409 );
64
65        return $this->add_import_id_metadata( $request, $response );
66    }
67}