Completed
Push — content-options-blog-display-7... ( 930de1 )
by
unknown
12:25
created

Jetpack_Sync_Module_Menus   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 76
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
dl 0
loc 76
rs 10
c 0
b 0
f 0
wmc 9
lcom 1
cbo 1

6 Methods

Rating   Name   Duplication   Size   Complexity  
A name() 0 3 1
A update_nav_menu_add_item() 0 15 1
A init_listeners() 0 12 1
A update_nav_menu() 0 14 2
A update_nav_menu_update_item() 0 17 2
A remove_just_added_menu_item() 0 6 2
1
<?php
2
3
class Jetpack_Sync_Module_Menus extends Jetpack_Sync_Module {
4
	private $nav_items_just_added = array();
5
6
	function name() {
7
		return 'menus';
8
	}
9
10
	public function init_listeners( $callable ) {
11
		add_action( 'wp_create_nav_menu', $callable, 10, 2 );
12
		add_action( 'wp_update_nav_menu', array( $this, 'update_nav_menu' ), 10, 2 );
13
		add_action( 'wp_add_nav_menu_item', array( $this, 'update_nav_menu_add_item' ), 10, 3 );
14
		add_action( 'wp_update_nav_menu_item', array( $this, 'update_nav_menu_update_item' ), 10, 3 );
15
		add_action( 'post_updated', array( $this, 'remove_just_added_menu_item' ), 10, 2 );
16
17
		add_action( 'jetpack_sync_updated_nav_menu', $callable, 10, 2 );
18
		add_action( 'jetpack_sync_updated_nav_menu_add_item', $callable, 10, 4 );
19
		add_action( 'jetpack_sync_updated_nav_menu_update_item', $callable, 10, 4 );
20
		add_action( 'delete_nav_menu', $callable, 10, 3 );
21
	}
22
	
23
	public function update_nav_menu( $menu_id, $menu_data = array() ) {
24
		if ( empty( $menu_data ) ) {
25
			return;
26
		}
27
		/**
28
		 * Helps sync log that a nav menu was updated.
29
		 * 
30
		 * @since 5.0.0
31
		 * 
32
		 * @param int $menu_id, the id of the menu
33
		 * @param object $menu_data
34
		 */
35
		do_action( 'jetpack_sync_updated_nav_menu', $menu_id, $menu_data );
36
	}
37
38
	public function update_nav_menu_add_item( $menu_id, $nav_item_id, $nav_item_args ) {
39
		$menu_data = wp_get_nav_menu_object( $menu_id );
40
		$this->nav_items_just_added[] = $nav_item_id;
41
		/**
42
		 * Helps sync log that a new menu item was added.
43
		 *
44
		 * @since 5.0.0
45
		 *
46
		 * @param int $menu_id, the id of the menu
47
		 * @param object $menu_data
48
		 * @param int $nav_item_id
49
		 * @param int $nav_item_args
50
		 */
51
		do_action( 'jetpack_sync_updated_nav_menu_add_item', $menu_id, $menu_data, $nav_item_id, $nav_item_args );
52
	}
53
54
	public function update_nav_menu_update_item( $menu_id, $nav_item_id, $nav_item_args ) {
55
		if ( in_array( $nav_item_id, $this->nav_items_just_added ) ) {
56
			return;
57
		}
58
		$menu_data = wp_get_nav_menu_object( $menu_id );
59
		/**
60
		 * Helps sync log that an update to the menu item happened.
61
		 *
62
		 * @since 5.0.0
63
		 *
64
		 * @param int $menu_id, the id of the menu
65
		 * @param object $menu_data
66
		 * @param int $nav_item_id
67
		 * @param int $nav_item_args
68
		 */
69
		do_action( 'jetpack_sync_updated_nav_menu_update_item', $menu_id, $menu_data, $nav_item_id, $nav_item_args );
70
	}
71
72
	public function remove_just_added_menu_item( $nav_item_id, $post_after  ) {
73
		if ( 'nav_menu_item' !== $post_after->post_type ) {
74
			return;
75
		}
76
		$this->nav_items_just_added = array_diff( $this->nav_items_just_added, array( $nav_item_id ) );
77
	}
78
}
79