PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.2-a.1
Jetpack – WP Security, Backup, Speed, & Growth v16.2-a.1
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 / jetpack_vendor / automattic / jetpack-sync / src / modules / class-menus.php
jetpack / jetpack_vendor / automattic / jetpack-sync / src / modules Last commit date
class-attachments.php 8 months ago class-callables.php 1 month ago class-comments.php 2 months ago class-constants.php 8 months ago class-full-sync-immediately.php 3 months ago class-full-sync.php 2 months ago class-import.php 8 months ago class-menus.php 2 months ago class-meta.php 2 months ago class-module.php 5 months ago class-network-options.php 8 months ago class-options.php 2 months ago class-plugins.php 2 months ago class-posts.php 2 months ago class-protect.php 8 months ago class-search.php 2 months ago class-stats.php 6 months ago class-term-relationships.php 8 months ago class-terms.php 2 months ago class-themes.php 2 months ago class-updates.php 8 months ago class-users.php 1 month ago class-woocommerce-hpos-orders.php 1 month ago class-woocommerce-products.php 8 months ago class-woocommerce.php 1 month ago class-wp-super-cache.php 8 months ago
class-menus.php
151 lines
1 <?php
2 /**
3 * Menus sync module.
4 *
5 * @package automattic/jetpack-sync
6 */
7
8 namespace Automattic\Jetpack\Sync\Modules;
9
10 if ( ! defined( 'ABSPATH' ) ) {
11 exit( 0 );
12 }
13
14 /**
15 * Class to handle sync for menus.
16 */
17 class Menus extends Module {
18 /**
19 * Navigation menu items that were added but not synced yet.
20 *
21 * @access private
22 *
23 * @var array
24 */
25 private $nav_items_just_added = array();
26
27 /**
28 * Sync module name.
29 *
30 * @access public
31 *
32 * @return string
33 */
34 public function name() {
35 return 'menus';
36 }
37
38 /**
39 * Initialize menus action listeners.
40 *
41 * @access public
42 *
43 * @param callable $callable Action handler callable.
44 */
45 public function init_listeners( $callable ) {
46 add_action( 'wp_create_nav_menu', $callable, 10, 2 );
47 add_action( 'wp_update_nav_menu', array( $this, 'update_nav_menu' ), 10, 2 );
48 add_action( 'wp_add_nav_menu_item', array( $this, 'update_nav_menu_add_item' ), 10, 3 );
49 add_action( 'wp_update_nav_menu_item', array( $this, 'update_nav_menu_update_item' ), 10, 3 );
50 add_action( 'post_updated', array( $this, 'remove_just_added_menu_item' ), 10, 2 );
51
52 add_action( 'jetpack_sync_updated_nav_menu', $callable, 10, 2 );
53 add_action( 'jetpack_sync_updated_nav_menu_add_item', $callable, 10, 4 );
54 add_action( 'jetpack_sync_updated_nav_menu_update_item', $callable, 10, 4 );
55 add_action( 'delete_nav_menu', $callable, 10, 3 );
56 }
57
58 /**
59 * Nav menu update handler.
60 *
61 * @access public
62 *
63 * @param int $menu_id ID of the menu.
64 * @param array $menu_data An array of menu data.
65 */
66 public function update_nav_menu( $menu_id, $menu_data = array() ) {
67 if ( empty( $menu_data ) ) {
68 return;
69 }
70 /**
71 * Helps sync log that a nav menu was updated.
72 *
73 * @since 1.6.3
74 * @since-jetpack 5.0.0
75 *
76 * @param int $menu_id ID of the menu.
77 * @param array $menu_data An array of menu data.
78 */
79 do_action( 'jetpack_sync_updated_nav_menu', $menu_id, $menu_data );
80 }
81
82 /**
83 * Nav menu item addition handler.
84 *
85 * @access public
86 *
87 * @param int $menu_id ID of the menu.
88 * @param int $nav_item_id ID of the new menu item.
89 * @param array $nav_item_args Arguments used to add the menu item.
90 */
91 public function update_nav_menu_add_item( $menu_id, $nav_item_id, $nav_item_args ) {
92 $menu_data = wp_get_nav_menu_object( $menu_id );
93 $this->nav_items_just_added[] = $nav_item_id;
94 /**
95 * Helps sync log that a new menu item was added.
96 *
97 * @since 1.6.3
98 * @since-jetpack 5.0.0
99 *
100 * @param int $menu_id ID of the menu.
101 * @param array $menu_data An array of menu data.
102 * @param int $nav_item_id ID of the new menu item.
103 * @param array $nav_item_args Arguments used to add the menu item.
104 */
105 do_action( 'jetpack_sync_updated_nav_menu_add_item', $menu_id, $menu_data, $nav_item_id, $nav_item_args );
106 }
107
108 /**
109 * Nav menu item update handler.
110 *
111 * @access public
112 *
113 * @param int $menu_id ID of the menu.
114 * @param int $nav_item_id ID of the new menu item.
115 * @param array $nav_item_args Arguments used to update the menu item.
116 */
117 public function update_nav_menu_update_item( $menu_id, $nav_item_id, $nav_item_args ) {
118 if ( in_array( $nav_item_id, $this->nav_items_just_added, true ) ) {
119 return;
120 }
121 $menu_data = wp_get_nav_menu_object( $menu_id );
122 /**
123 * Helps sync log that an update to the menu item happened.
124 *
125 * @since 1.6.3
126 * @since-jetpack 5.0.0
127 *
128 * @param int $menu_id ID of the menu.
129 * @param array $menu_data An array of menu data.
130 * @param int $nav_item_id ID of the new menu item.
131 * @param array $nav_item_args Arguments used to update the menu item.
132 */
133 do_action( 'jetpack_sync_updated_nav_menu_update_item', $menu_id, $menu_data, $nav_item_id, $nav_item_args );
134 }
135
136 /**
137 * Remove menu items that have already been saved from the "just added" list.
138 *
139 * @access public
140 *
141 * @param int $nav_item_id ID of the new menu item.
142 * @param \WP_Post $post_after Nav menu item post object after the update.
143 */
144 public function remove_just_added_menu_item( $nav_item_id, $post_after ) {
145 if ( ! $post_after instanceof \WP_Post || 'nav_menu_item' !== $post_after->post_type ) {
146 return;
147 }
148 $this->nav_items_just_added = array_diff( $this->nav_items_just_added, array( $nav_item_id ) );
149 }
150 }
151