PluginProbe
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder / 2.9.1
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder v2.9.1
2.13.0 2.13.1 2.12.0 2.11.1 2.11.0 2.10.0 2.9.0 2.7.4 2.7.5 2.7.6 2.7.7 2.8.0 2.8.1 2.9.1 trunk 1.0 1.0-beta1 1.0-beta2 1.0-beta3 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 All 80 releases
ablocks / includes / ajax / settings.php

settings.php in aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder 2.9.1, at includes/ajax/settings.php

182 lines 6.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace ABlocks\Ajax;
4
5 if ( ! defined( 'ABSPATH' ) ) {
6 exit;
7 }
8
9 use ABlocks\Classes\AbstractAjaxHandler;
10 use ABlocks\Classes\Sanitizer;
11 use ABlocks\Helper;
12 use ABlocks\Admin\Settings\Base as BaseSettings;
13
14 class Settings extends AbstractAjaxHandler {
15 public function __construct() {
16 $this->actions = array(
17 'get_blocks_visibility' => array(
18 'callback' => array( $this, 'get_blocks_visibility' ),
19 ),
20 'save_block_visibility' => array(
21 'callback' => array( $this, 'save_block_visibility' ),
22 'fields' => array(
23 'block_name' => 'string',
24 'status' => 'boolean',
25 )
26 ),
27 'get_settings' => array(
28 'callback' => array( $this, 'get_settings' ),
29 ),
30 'save_settings' => array(
31 'callback' => array( $this, 'save_settings' ),
32 'fields' => array(
33 'default_container_width' => 'integer',
34 'container_padding' => 'integer',
35 'container_element_gap' => 'integer',
36 'enabled_assets_file_generation' => 'boolean',
37 'enabled_block_copy_paste_style' => 'boolean',
38 'enabled_only_selected_fonts' => 'boolean',
39 'enabled_coming_soon_page' => 'boolean',
40 'coming_soon_page' => 'integer',
41 'enabled_maintenance_page' => 'boolean',
42 'maintenance_page' => 'integer',
43 'login_page' => 'integer',
44 'registration_page' => 'integer',
45 'forget_password_page' => 'integer',
46
47 'mailchimp_api_key' => 'string',
48 'drip_api_key' => 'string',
49 'getresponse_api_key' => 'string',
50 'convertkit_api_key' => 'string',
51 'mailerlite_api_key' => 'string',
52 )
53 ),
54 'fetch_posts' => array(
55 'callback' => array( $this, 'fetch_posts' ),
56 'fields' => array(
57 'postId' => 'integer',
58 'postType' => 'string',
59 'keyword' => 'string',
60 )
61 ),
62 );
63 }
64
65 public function get_blocks_visibility() {
66 global $ablocks_blocks;
67 wp_send_json_success( $ablocks_blocks );
68 }
69
70 public function save_block_visibility( $payload ) {
71 $block_name = $payload['block_name'];
72 $status = $payload['status'];
73
74 $json_payload = Sanitizer::sanitize_payload([
75 'required_plugin' => 'json',
76 ], $_POST); // phpcs:ignore WordPress.Security.NonceVerification.Missing
77
78 $required_plugin = $json_payload['required_plugin'];
79
80 if ( empty( $block_name ) ) {
81 wp_send_json_error( __( 'Block Name missing', 'ablocks' ) );
82 }
83
84 if ( $status && $required_plugin ) {
85 if ( $required_plugin && is_array( $required_plugin ) ) {
86 foreach ( $required_plugin as $plugin ) {
87 if ( ! Helper::is_plugin_active( sanitize_text_field( $plugin['plugin_dir_path'] ) ) ) {
88 $error_message = sprintf( '%s Plugin is required to activate %s block.', $plugin['plugin_name'], $block_name );
89 wp_send_json_error( $error_message );
90 }
91 }
92 }
93 }
94
95 // Saved Data
96 $saved_blocks = (array) json_decode( get_option( ABLOCKS_BLOCKS_VISIBILITY_SETTINGS_NAME ), true );
97 $saved_blocks[ $block_name ] = $status;
98 update_option( ABLOCKS_BLOCKS_VISIBILITY_SETTINGS_NAME, wp_json_encode( $saved_blocks ) );
99 // Fire Addon Action
100 if ( $status ) {
101 do_action( "ablocks/block/activated_{$block_name}", $status );
102 } else {
103 do_action( "ablocks/block/deactivated_{$block_name}", $status );
104 }
105 wp_send_json_success( $saved_blocks );
106 }
107 public function get_settings() {
108 $settings = BaseSettings::get_saved_data();
109 wp_send_json_success( $settings );
110 }
111
112 public function save_settings( $payload ) {
113 // phpcs:ignore WordPress.Security.NonceVerification.Missing
114 do_action( 'ablocks/before_save_settings', $payload, 'base' );
115 $json_payload = Sanitizer::sanitize_payload([
116 'selected_fonts' => 'json',
117 ], $_POST); // phpcs:ignore WordPress.Security.NonceVerification.Missing
118
119 $default = BaseSettings::get_default_data();
120 $is_update = BaseSettings::save_settings( [
121 'default_container_width' => $payload['default_container_width'] ?? $default['default_container_width'],
122 'container_padding' => $payload['container_padding'] ?? $default['container_padding'],
123 'container_element_gap' => $payload['container_element_gap'] ?? $default['container_element_gap'],
124 'enabled_assets_file_generation' => $payload['enabled_assets_file_generation'] ?? $default['enabled_assets_file_generation'],
125 'enabled_block_copy_paste_style' => $payload['enabled_block_copy_paste_style'] ?? $default['enabled_block_copy_paste_style'],
126 'enabled_only_selected_fonts' => $payload['enabled_only_selected_fonts'] ?? $default['enabled_only_selected_fonts'],
127 'selected_fonts' => $json_payload['selected_fonts'] ?? $default['selected_fonts'],
128 'enabled_coming_soon_page' => $payload['enabled_coming_soon_page'] ?? $default['enabled_coming_soon_page'],
129 'coming_soon_page' => $payload['coming_soon_page'] ?? $default['coming_soon_page'],
130 'enabled_maintenance_page' => $payload['enabled_maintenance_page'] ?? $default['enabled_maintenance_page'],
131 'maintenance_page' => $payload['maintenance_page'] ?? $default['maintenance_page'],
132 'login_page' => $payload['login_page'] ?? $default['login_page'],
133 'registration_page' => $payload['registration_page'] ?? $default['registration_page'],
134 'forget_password_page' => $payload['forget_password_page'] ?? $default['forget_password_page'],
135
136 'mailchimp_api_key' => $payload['mailchimp_api_key'] ?? '',
137 'drip_api_key' => $payload['drip_api_key'] ?? '',
138 'getresponse_api_key' => $payload['getresponse_api_key'] ?? '',
139 'convertkit_api_key' => $payload['convertkit_api_key'] ?? '',
140 'mailerlite_api_key' => $payload['mailerlite_api_key'] ?? '',
141 ]);
142 // phpcs:ignore WordPress.Security.NonceVerification.Missing
143 do_action( 'ablocks/after_save_settings', $is_update, 'base', $payload );
144 wp_send_json_success( $is_update );
145 }
146
147 public function fetch_posts( $payload ) {
148 $post_type = ( isset( $payload['postType'] ) ? $payload['postType'] : 'page' );
149 $postId = ( isset( $payload['postId'] ) ? $payload['postId'] : 0 );
150 $keyword = ( isset( $payload['keyword'] ) ? $payload['keyword'] : '' );
151
152 if ( $postId ) {
153 $args = array(
154 'post_type' => $post_type,
155 'p' => $postId,
156 );
157 } else {
158 $args = array(
159 'post_type' => $post_type,
160 'posts_per_page' => 10,
161 );
162 if ( ! empty( $keyword ) ) {
163 $args['s'] = $keyword;
164 }
165 if ( ! current_user_can( 'manage_options' ) ) {
166 $args['author'] = get_current_user_id();
167 }
168 }
169 $results = array();
170 $posts = get_posts( $args );
171 if ( is_array( $posts ) ) {
172 foreach ( $posts as $post ) {
173 $results[] = array(
174 'label' => $post->post_title,
175 'value' => $post->ID,
176 );
177 }
178 }
179 wp_send_json_success( $results );
180 }
181 }
182