PluginProbe
WPBot – ChatBot Conversational Forms / 1.2.0
WPBot – ChatBot Conversational Forms v1.2.0
1.5.0 1.4.8 1.4.7 trunk 0.9.2 0.9.3 0.9.5 0.9.6 0.9.7 0.9.8 0.9.9 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.6 1.1.7 1.1.8 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 All 36 releases
conversational-forms / classes / api / settings.php

settings.php in WPBot – ChatBot Conversational Forms 1.2.0, at classes/api/settings.php

174 lines 5.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * REST API route for settings
5 *
6 * @package Caldera_Forms Modified by QuantumCloud
7 * @author Josh Pollock <Josh@CalderaWP.com>
8 * @license GPL-2.0+
9 * @link
10 * @copyright 2016 CalderaWP LLC
11 */
12 class Qcformbuilder_Forms_API_Settings implements Qcformbuilder_Forms_API_Route{
13
14 /**
15 * @since 1.5.0
16 * @inheritdoc
17 */
18 public function add_routes( $namespace ) {
19 register_rest_route( $namespace, '/settings/entries',
20 array(
21 'methods' => array( 'POST' ),
22 'callback' => array( $this, 'update_entry_settings' ),
23 'permission_callback' => array( $this, 'create_item_permissions_check' ),
24 'args' => array(
25 'per_page' => array(
26 'required' => 'false',
27 'type' => 'integer',
28 )
29 )
30 )
31 );
32 register_rest_route( $namespace, '/settings',
33 array(
34 'methods' => array( 'POST' ),
35 'callback' => array( $this, 'update_settings' ),
36 'permission_callback' => array( $this, 'create_item_permissions_check' ),
37 'args' => array(
38 'styleIncludes' => array(
39 'required' => 'false',
40 'type' => 'array',
41 ),
42 'cdnEnable' => array(
43 'required' => 'false',
44 'type' => 'boolean',
45 ),
46 )
47 )
48 );
49 register_rest_route( $namespace, '/settings',
50 array(
51 'methods' => array( 'GET' ),
52 'callback' => array( $this, 'get_settings' ),
53 'permission_callback' => array( $this, 'get_items_permissions_check' ),
54 )
55 );
56
57 }
58
59 /**
60 * Update entry settings
61 *
62 * @since 1.5.0
63 *
64 * @param WP_REST_Request $request
65 *
66 * @return Qcformbuilder_Forms_API_Response
67 */
68 public function update_entry_settings( WP_REST_Request $request ){
69 Qcformbuilder_Forms_Entry_Viewer::update_entries_per_page( $request[ 'per_page' ] );
70 $response = new Qcformbuilder_Forms_API_Response( array(
71 'per_page' => Qcformbuilder_Forms_Entry_Viewer::entries_per_page()
72 ));
73 return $response;
74 }
75
76 /**
77 * Update general settings
78 *
79 * @since 1.7.3
80 *
81 * @param WP_REST_Request $request
82 * @return Qcformbuilder_Forms_API_Response
83 */
84 public function update_settings( \WP_REST_Request $request ){
85 $style_includes = Qcformbuilder_Forms_Render_Assets::get_style_includes();
86 $new_values = [];
87 foreach ( $style_includes as $key => $saved ){
88 $request[$key] = !is_bool($request[$key]) && $request[$key] === "false" ? false : $request[$key];
89 $new_values[ $key ] = isset($request[$key]) ? boolval($request[$key]) : $saved;
90 }
91
92 update_option( '_qcformbuilder_forms_styleincludes', $new_values);
93
94 if( $request['cdnEnable'] === true ){
95 Qcformbuilder_Forms::settings()->get_cdn()->enable();
96 }else if( $request['cdnEnable'] === false ) {
97 Qcformbuilder_Forms::settings()->get_cdn()->disable();
98 }
99
100 return Qcformbuilder_Forms_API_Response_Factory::general_settings_response(
101 $new_values,
102 Qcformbuilder_Forms::settings()->get_cdn()->enabled(),
103 201
104 );
105
106 }
107
108 /**
109 * Get general settings
110 *
111 * @since 1.7.3
112 *
113 * @return Qcformbuilder_Forms_API_Response
114 */
115 public function get_settings(){
116 return Qcformbuilder_Forms_API_Response_Factory::general_settings_response(
117 Qcformbuilder_Forms_Render_Assets::get_style_includes(),
118 Qcformbuilder_Forms::settings()->get_cdn()->enabled(),
119 201
120 );
121 }
122
123
124 /**
125 * Permissions for settings read
126 *
127 * @since 1.8.0
128 *
129 * @param WP_REST_Request $request
130 *
131 * @return bool
132 */
133 public function get_items_permissions_check( WP_REST_Request $request ){
134
135 $allowed = current_user_can( Qcformbuilder_Forms::get_manage_cap( 'entry-view' ) );
136
137 /**
138 * Filter permissions for viewing settings config via Qcformbuilder Forms REST API
139 *
140 * @since 1.8.0
141 *
142 * @param bool $allowed Is request authorized?
143 * @param WP_REST_Request $request The current request
144 */
145 return apply_filters( 'qcformbuilder_forms_api_allow_settings_view', $allowed, $request );
146
147 }
148
149 /**
150 * Permissions for settings create/update/delete
151 *
152 * @since 1.8.0
153 *
154 * @param WP_REST_Request $request
155 *
156 * @return bool
157 */
158 public function create_item_permissions_check( WP_REST_Request $request ){
159
160 $allowed = current_user_can( Qcformbuilder_Forms::get_manage_cap( 'entry-edit' ) );
161
162 /**
163 * Filter permissions for updating settings via Qcformbuilder Forms REST API
164 *
165 * @since 1.8.0
166 *
167 * @param bool $allowed Is request authorized?
168 * @param WP_REST_Request $request The current request
169 */
170 return apply_filters( 'qcformbuilder_forms_api_allow_settings_edit', $allowed, $request );
171
172 }
173
174 }