PluginProbe
Block Manager / 1.1
Block Manager v1.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 / toggle.php

toggle.php in Block Manager 1.1, at api/toggle.php

85 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Custom API route.
4 *
5 * @since 1.0
6 */
7 add_action( 'rest_api_init', function () {
8 $my_namespace = 'gbm';
9 $my_endpoint = '/toggle';
10 register_rest_route(
11 $my_namespace,
12 $my_endpoint,
13 array(
14 'methods' => 'POST',
15 'callback' => 'block_manager_toggle',
16 'permission_callback' => function () {
17 return Gutenberg_Block_Manager::has_access();
18 },
19 )
20 );
21 });
22
23 /**
24 * Enable/Disable individual gutenberg blocks.
25 *
26 * @param $request $_POST
27 * @return $response json
28 * @since 1.0
29 */
30 function block_manager_toggle( WP_REST_Request $request ) {
31
32 if ( is_user_logged_in() && current_user_can( apply_filters( 'block_manager_user_role', 'activate_plugins' ) ) ) {
33
34 error_reporting(E_ALL|E_STRICT);
35
36 // Get JSON Data
37 $body = json_decode($request->get_body(), true); // Get contents of request body
38 $data = json_decode($body['data']); // Get contents of data
39
40 if($body && $data){
41
42 $block = ($data && $data->block) ? $data->block : ''; // block name
43 $type = ($data && $data->type) ? $data->type : 'enable'; // enable/disable
44 $blocks = (array)get_option(BLOCK_MANAGER_OPTION, array()); // all currently disabled blocks
45
46 // Disable
47 if($block && $type === 'disable'){
48 if ( ! in_array( $block, $blocks, true ) ) {
49 $blocks[] = $block;
50 }
51 update_option( BLOCK_MANAGER_OPTION, $blocks );
52 $response = array(
53 'success' => true,
54 'msg' => __('Block Disabled', 'block-manager'),
55 'disabled_blocks' => count(get_option( BLOCK_MANAGER_OPTION ))
56 );
57 }
58
59 // Enable
60 if($block && $type === 'enable'){
61 $new_blocks = array();
62 if ( in_array( $block, $blocks, true ) ) {
63 $new_blocks = array_diff( $blocks, array( $block ) );
64 }
65 update_option( BLOCK_MANAGER_OPTION, $new_blocks );
66 $response = array(
67 'success' => true,
68 'msg' => __('Block enabled', 'block-manager'),
69 'disabled_blocks' => count(get_option( BLOCK_MANAGER_OPTION ))
70 );
71 }
72
73 } else {
74 $response = array(
75 'success' => false,
76 'msg' => __('Error accessing API data.', 'block-manager'),
77 'disabled_blocks' => count(get_option( BLOCK_MANAGER_OPTION ))
78 );
79 }
80
81 wp_send_json($response); // Send response as JSON
82
83 }
84 }
85