PluginProbe
Block Manager / 3.2.1
Block Manager v3.2.1
trunk 1.0 1.0.1 1.1 1.2 1.2.1 1.2.2 1.2.3c 1.2.4 1.2.5 2.0.0 2.1.0 2.1.0.1 2.1.1 3.0.0 3.1.0 3.1.1 3.1.2 3.2.0 3.2.1
block-manager / api / category-update.php

category-update.php in Block Manager 3.2.1, at api/category-update.php

110 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 * API Route: Switch a category.
4 *
5 * @since 1.2
6 * @package blockmanager
7 */
8
9 add_action(
10 'rest_api_init',
11 function () {
12 $my_namespace = 'gbm';
13 $my_endpoint = '/category_update';
14 register_rest_route(
15 $my_namespace,
16 $my_endpoint,
17 array(
18 'methods' => 'POST',
19 'callback' => 'block_manager_category_update',
20 'permission_callback' => function () {
21 return Gutenberg_Block_Manager::has_access();
22 },
23 )
24 );
25 }
26 );
27
28 /**
29 * Switch the category of a Gutenberg block.
30 *
31 * @param WP_REST_Request $request The content of the HTTP request.
32 * @since 1.0
33 */
34 function block_manager_category_update( WP_REST_Request $request ) {
35 if ( is_user_logged_in() && current_user_can( apply_filters( 'block_manager_user_role', 'activate_plugins' ) ) ) {
36 error_reporting( E_ALL | E_STRICT ); // @codingStandardsIgnoreLine
37
38 // Get JSON Data.
39 $body = json_decode( $request->get_body(), true ); // Get contents of request body.
40
41 if ( ! $body ) {
42 wp_send_json(
43 [
44 'success' => false,
45 'msg' => __( 'Error accessing API data.', 'block-manager' ),
46 'categories' => false,
47 ]
48 );
49 }
50
51 $type = $body['type'] ? $body['type'] : 'add';
52 $block = $body['block'] ? $body['block'] : '';
53 $title = $body['title'] ? $body['title'] : '';
54 $category = $body['category'] ? $body['category'] : '';
55
56 $options = GBM_Categories::gbm_get_block_categories(); // Get block categories.
57
58 if ( $type === 'remove' ) {
59 // Remove block category.
60 foreach ( $options as $index => $item ) {
61 // Duplicate found.
62 if ( $block === $item['block'] ) {
63 unset( $options[ $index ] );
64 $options = array_values( $options ); // Reset array keys.
65 break;
66 }
67 }
68 } else {
69 // Add block category.
70 $duplicate = false;
71
72 // Remove duplicates if required.
73 if ( $options ) {
74 // Loop all current options.
75 foreach ( $options as $index => $item ) {
76 // Duplicate found.
77 if ( $block === $item['block'] ) {
78 $duplicate = true;
79 $options[ $index ]['cat'] = $category;
80 }
81 }
82 }
83
84 // Add item to array.
85 if ( ! $duplicate ) {
86 $options[] = [
87 'block' => $block,
88 'cat' => $category,
89 ];
90 }
91 }
92
93 $options = array_values( $options );
94
95 // Update WP Options table.
96 update_option( BLOCK_MANAGER_CATEGORIES, $options );
97
98 // Send Response.
99 wp_send_json(
100 [
101 'success' => true,
102 // translators: %s: The block title.
103 'msg' => sprintf( __( '%s category updated', 'block-manager' ), '<strong>' . $title . '</strong>' ),
104 'categories' => $options,
105 ]
106 );
107
108 }
109 }
110