PluginProbe
WP Data Access – App Builder for Tables, Forms, Dashboards, Charts & Maps / 5.5.87
WP Data Access – App Builder for Tables, Forms, Dashboards, Charts & Maps v5.5.87
5.5.87 5.5.85 5.5.84 5.5.83 5.5.82 5.5.81 5.5.80 5.5.79 5.5.77 5.5.76 5.5.75 5.5.73 5.5.72 5.5.22 5.5.23 5.5.29 5.5.3 5.5.31 5.5.32 5.5.34 5.5.35 5.5.36 5.5.37 5.5.4 5.5.40 All 162 releases
← All changes | WPDataAccess/Plugin_Table_Models/WPDA_App_Container_Model.php +282 -207 5.5.4 → 5.5.87 View file →
@@ -1,227 +1,302 @@
1 1 <?php
2 2
3 -namespace WPDataAccess\Plugin_Table_Models {
3 +namespace WPDataAccess\Plugin_Table_Models;
4 4
5 - use WPDataAccess\WPDA;
5 +use WPDataAccess\WPDA;
6 +class WPDA_App_Container_Model extends WPDA_Plugin_Table_Base_Model {
7 + const BASE_TABLE_NAME = 'wpda_app_container';
6 8
7 - class WPDA_App_Container_Model extends WPDA_Plugin_Table_Base_Model {
9 + public static function select( $app_id, $cnt_seq_nr ) {
10 + global $wpdb;
11 + if ( 0 === $cnt_seq_nr ) {
12 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders -- plugin table
13 + $dataset = $wpdb->get_results(
14 + $wpdb->prepare( 'SELECT * FROM `%1s` WHERE app_id = %d and cnt_seq_nr = 0 order by cnt_id', array(WPDA::remove_backticks( self::get_base_table_name() ), $app_id) ),
15 + // db call ok; no-cache ok.
16 + 'ARRAY_A'
17 + );
18 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders
19 + return $dataset;
20 + } else {
21 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders -- plugin table
22 + $dataset = $wpdb->get_results(
23 + $wpdb->prepare( 'SELECT * FROM `%1s` WHERE app_id = %d and cnt_seq_nr > 0 order by cnt_seq_nr, cnt_id', array(WPDA::remove_backticks( self::get_base_table_name() ), $app_id) ),
24 + // db call ok; no-cache ok.
25 + 'ARRAY_A'
26 + );
27 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders
28 + return $dataset;
29 + }
30 + }
8 31
9 - const BASE_TABLE_NAME = 'wpda_app_container';
32 + public static function select_all( $app_id ) {
33 + global $wpdb;
34 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders -- plugin table
35 + $dataset = $wpdb->get_results(
36 + $wpdb->prepare( 'SELECT * FROM `%1s` WHERE app_id = %d order by cnt_seq_nr', array(WPDA::remove_backticks( self::get_base_table_name() ), $app_id) ),
37 + // db call ok; no-cache ok.
38 + 'ARRAY_A'
39 + );
40 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders
41 + return $dataset;
42 + }
10 43
11 - public static function select( $app_id, $cnt_seq_nr ) {
44 + public static function get_container( $app_id, $cnt_id ) {
45 + global $wpdb;
46 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders -- plugin table
47 + $dataset = $wpdb->get_results(
48 + $wpdb->prepare( 'SELECT * FROM `%1s` WHERE app_id = %d AND cnt_id = %d', array(WPDA::remove_backticks( self::get_base_table_name() ), $app_id, $cnt_id) ),
49 + // db call ok; no-cache ok.
50 + 'ARRAY_A'
51 + );
52 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders
53 + return $dataset;
54 + }
12 55
13 - global $wpdb;
56 + public static function create(
57 + $app_id,
58 + $app_dbs,
59 + $app_tbl,
60 + $app_cls,
61 + $cnt_title,
62 + $cnt_seq_nr,
63 + $cnt_table,
64 + $cnt_relation = null,
65 + $cnt_query = null
66 + ) {
67 + global $wpdb;
68 + if ( 1 === $cnt_seq_nr ) {
69 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders -- plugin table
70 + $max_seq_nr = $wpdb->get_results(
71 + $wpdb->prepare( 'SELECT max(cnt_seq_nr) FROM `%1s` WHERE app_id = %d', array(WPDA::remove_backticks( self::get_base_table_name() ), $app_id) ),
72 + // db call ok; no-cache ok.
73 + 'ARRAY_N'
74 + );
75 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders
76 + if ( isset( $max_seq_nr[0][0] ) ) {
77 + $cnt_seq_nr = $max_seq_nr[0][0] + 1;
78 + }
79 + }
80 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery -- plugin table
81 + $rows = $wpdb->insert( static::get_base_table_name(), array(
82 + 'cnt_dbs' => $app_dbs,
83 + 'cnt_tbl' => $app_tbl,
84 + 'cnt_cls' => $app_cls,
85 + 'cnt_title' => $cnt_title,
86 + 'app_id' => $app_id,
87 + 'cnt_seq_nr' => $cnt_seq_nr,
88 + 'cnt_table' => $cnt_table,
89 + 'cnt_relation' => $cnt_relation,
90 + 'cnt_query' => $cnt_query,
91 + ) );
92 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery
93 + if ( 1 === $rows ) {
94 + // Return new container
95 + $cnt_id = $wpdb->insert_id;
96 + return array(
97 + 'cnt_id' => $wpdb->insert_id,
98 + 'msg' => '',
99 + );
100 + } else {
101 + return array(
102 + 'cnt_id' => false,
103 + 'msg' => $wpdb->last_error,
104 + );
105 + }
106 + }
14 107
15 - if ( 0 === $cnt_seq_nr ) {
108 + public static function update(
109 + $app_id,
110 + $app_cnt,
111 + $app_dbs,
112 + $app_tbl,
113 + $app_cls,
114 + $cnt_title,
115 + $cnt_relation = null
116 + ) {
117 + global $wpdb;
118 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
119 + $wpdb->update( static::get_base_table_name(), array(
120 + 'cnt_dbs' => $app_dbs,
121 + 'cnt_tbl' => $app_tbl,
122 + 'cnt_cls' => $app_cls,
123 + 'cnt_title' => $cnt_title,
124 + 'cnt_relation' => $cnt_relation,
125 + ), array(
126 + 'app_id' => $app_id,
127 + 'cnt_id' => $app_cnt,
128 + ) );
129 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
130 + return $wpdb->last_error;
131 + }
16 132
17 - return $wpdb->get_results(
18 - $wpdb->prepare(
19 - 'SELECT * FROM `%1s` WHERE app_id = %d and cnt_seq_nr = 0 order by cnt_id', // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders
20 - array(
21 - WPDA::remove_backticks( self::get_base_table_name() ),
22 - $app_id,
23 - )
24 - ), // db call ok; no-cache ok.
25 - 'ARRAY_A'
26 - ); // phpcs:ignore Standard.Category.SniffName.ErrorCode
133 + public static function delete( $app_id ) {
134 + global $wpdb;
135 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
136 + $delete = $wpdb->delete( static::get_base_table_name(), array(
137 + 'app_id' => $app_id,
138 + ) );
139 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
140 + return $delete;
141 + }
27 142
28 - } else {
143 + public static function delete_container( $cnt_id ) {
144 + global $wpdb;
145 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
146 + $delete = $wpdb->delete( static::get_base_table_name(), array(
147 + 'cnt_id' => $cnt_id,
148 + ) );
149 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
150 + return $delete;
151 + }
29 152
30 - return $wpdb->get_results(
31 - $wpdb->prepare(
32 - 'SELECT * FROM `%1s` WHERE app_id = %d and cnt_seq_nr > 0 order by cnt_id', // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders
33 - array(
34 - WPDA::remove_backticks( self::get_base_table_name() ),
35 - $app_id,
36 - )
37 - ), // db call ok; no-cache ok.
38 - 'ARRAY_A'
39 - ); // phpcs:ignore Standard.Category.SniffName.ErrorCode
153 + public static function update_master(
154 + $app_id,
155 + $app_dbs,
156 + $app_tbl,
157 + $app_cls,
158 + $app_query
159 + ) {
160 + global $wpdb;
161 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
162 + $wpdb->update( static::get_base_table_name(), array(
163 + 'cnt_dbs' => $app_dbs,
164 + 'cnt_tbl' => $app_tbl,
165 + 'cnt_cls' => $app_cls,
166 + 'cnt_query' => $app_query,
167 + ), array(
168 + 'app_id' => $app_id,
169 + 'cnt_seq_nr' => 0,
170 + ) );
171 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
172 + return $wpdb->last_error;
173 + }
40 174
41 - }
175 + public static function update_table_settings( $cnt_id, $cnt_table_settings ) {
176 + global $wpdb;
177 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
178 + $wpdb->update( static::get_base_table_name(), array(
179 + 'cnt_table' => $cnt_table_settings,
180 + ), array(
181 + 'cnt_id' => $cnt_id,
182 + ) );
183 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
184 + return $wpdb->last_error;
185 + }
42 186
43 - }
187 + public static function update_rform_settings( $cnt_id, $cnt_form_settings ) {
188 + global $wpdb;
189 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
190 + $wpdb->update( static::get_base_table_name(), array(
191 + 'cnt_rform' => $cnt_form_settings,
192 + ), array(
193 + 'cnt_id' => $cnt_id,
194 + ) );
195 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
196 + return $wpdb->last_error;
197 + }
44 198
45 - public static function get_container( $cnt_id ) {
199 + public static function update_form_settings( $cnt_id, $cnt_form_settings ) {
200 + global $wpdb;
201 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
202 + $wpdb->update( static::get_base_table_name(), array(
203 + 'cnt_form' => $cnt_form_settings,
204 + ), array(
205 + 'cnt_id' => $cnt_id,
206 + ) );
207 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
208 + return $wpdb->last_error;
209 + }
46 210
47 - global $wpdb;
48 - return $wpdb->get_results(
49 - $wpdb->prepare(
50 - 'SELECT * FROM `%1s` WHERE cnt_id = %d', // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders
51 - array(
52 - WPDA::remove_backticks( self::get_base_table_name() ),
53 - $cnt_id,
54 - )
55 - ), // db call ok; no-cache ok.
56 - 'ARRAY_A'
57 - ); // phpcs:ignore Standard.Category.SniffName.ErrorCode
211 + public static function update_chart_settings( $cnt_id, $cnt_chart_settings ) {
212 + global $wpdb;
213 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
214 + $wpdb->update( static::get_base_table_name(), array(
215 + 'cnt_chart' => $cnt_chart_settings,
216 + ), array(
217 + 'cnt_id' => $cnt_id,
218 + ) );
219 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
220 + return $wpdb->last_error;
221 + }
58 222
59 - }
223 + public static function update_dashboard_settings( $cnt_id, $cnt_dashboard_settings ) {
224 + global $wpdb;
225 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
226 + $wpdb->update( static::get_base_table_name(), array(
227 + 'cnt_dashboard' => $cnt_dashboard_settings,
228 + ), array(
229 + 'cnt_id' => $cnt_id,
230 + ) );
231 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
232 + return $wpdb->last_error;
233 + }
60 234
61 - public static function create(
62 - $app_id,
63 - $app_dbs,
64 - $app_tbl,
65 - $app_cls,
66 - $cnt_title,
67 - $cnt_seq_nr,
68 - $cnt_table,
69 - $cnt_relation = null
70 - ) {
235 + public static function update_map_settings( $cnt_id, $cnt_map_settings ) {
236 + global $wpdb;
237 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
238 + $wpdb->update( static::get_base_table_name(), array(
239 + 'cnt_map' => $cnt_map_settings,
240 + ), array(
241 + 'cnt_id' => $cnt_id,
242 + ) );
243 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
244 + return $wpdb->last_error;
245 + }
71 246
72 - global $wpdb;
73 - if ( 1 === $wpdb->insert(
74 - static::get_base_table_name(),
75 - array(
76 - 'cnt_dbs' => $app_dbs,
77 - 'cnt_tbl' => $app_tbl,
78 - 'cnt_cls' => $app_cls,
79 - 'cnt_title' => $cnt_title,
80 - 'app_id' => $app_id,
81 - 'cnt_seq_nr' => $cnt_seq_nr,
82 - 'cnt_table' => $cnt_table,
83 - 'cnt_relation' => $cnt_relation,
84 - )
85 - )
86 - ) {
87 - // Return new container
88 - $cnt_id = $wpdb->insert_id;
89 - return array(
90 - 'cnt_id' => $wpdb->insert_id,
91 - 'msg' => '',
92 - );
93 - } else {
94 - return array(
95 - 'cnt_id' => false,
96 - 'msg' => $wpdb->last_error,
97 - );
98 - }
247 + public static function container_move( $app_id, $cnt_id_from, $cnt_id_to ) {
248 + // This is a premium feature.
249 + return '';
250 + }
99 251
100 - }
252 + public static function copy( $app_id_old, $app_id_new ) {
253 + global $wpdb;
254 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders -- plugin table
255 + $containers = $wpdb->get_results(
256 + $wpdb->prepare( 'SELECT * FROM `%1s` WHERE app_id = %d order by cnt_seq_nr', array(WPDA::remove_backticks( self::get_base_table_name() ), $app_id_old) ),
257 + // db call ok; no-cache ok.
258 + 'ARRAY_A'
259 + );
260 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders
261 + $cnt_id_conversion = array();
262 + foreach ( $containers as $container ) {
263 + $cnt_id = $container['cnt_id'];
264 + $container['app_id'] = $app_id_new;
265 + unset($container['cnt_id']);
266 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery -- plugin table
267 + $wpdb->insert( static::get_base_table_name(), $container );
268 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery
269 + $cnt_id_conversion[$cnt_id] = $wpdb->insert_id;
270 + }
271 + foreach ( $cnt_id_conversion as $cnt_id_old => $cnt_id_new ) {
272 + $container = self::get_container( $app_id_new, $cnt_id_new );
273 + if ( isset( $container[0]['cnt_relation'] ) ) {
274 + $relation = $container[0]['cnt_relation'];
275 + if ( null !== $relation && '' !== $relation ) {
276 + $json = json_decode( $relation, true );
277 + if ( isset( $json['cnt_id_master'] ) ) {
278 + $cnt_id_master_old = $json['cnt_id_master'];
279 + if ( isset( $cnt_id_conversion[$cnt_id_master_old] ) ) {
280 + // Update relationship master id
281 + $cnt_id_master_new = $cnt_id_conversion[$cnt_id_master_old];
282 + $json['cnt_id_master'] = strval( $cnt_id_master_new );
283 + $relation = json_encode( $json );
284 + } else {
285 + // Master no longer available
286 + $relation = null;
287 + }
288 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
289 + $wpdb->update( static::get_base_table_name(), array(
290 + 'cnt_relation' => $relation,
291 + ), array(
292 + 'app_id' => $app_id_new,
293 + 'cnt_id' => $cnt_id_new,
294 + ) );
295 + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
296 + }
297 + }
298 + }
299 + }
300 + }
101 301
102 - public static function update(
103 - $app_id,
104 - $app_cnt,
105 - $app_dbs,
106 - $app_tbl,
107 - $app_cls,
108 - $cnt_title,
109 - $cnt_seq_nr,
110 - $cnt_table,
111 - $cnt_relation = null
112 - ) {
113 -
114 - global $wpdb;
115 - $wpdb->update(
116 - static::get_base_table_name(),
117 - array(
118 - 'cnt_dbs' => $app_dbs,
119 - 'cnt_tbl' => $app_tbl,
120 - 'cnt_cls' => $app_cls,
121 - 'cnt_title' => $cnt_title,
122 - 'cnt_seq_nr' => $cnt_seq_nr,
123 - 'cnt_table' => $cnt_table,
124 - 'cnt_relation' => $cnt_relation,
125 - ),
126 - array(
127 - 'app_id' => $app_id,
128 - 'cnt_id' => $app_cnt,
129 - )
130 - );
131 -
132 - return $wpdb->last_error;
133 -
134 - }
135 -
136 - public static function delete( $app_id ) {
137 -
138 - global $wpdb;
139 - return $wpdb->delete(
140 - static::get_base_table_name(),
141 - array(
142 - 'app_id' => $app_id,
143 - )
144 - );
145 -
146 - }
147 -
148 - public static function delete_container( $cnt_id ) {
149 -
150 - global $wpdb;
151 - return $wpdb->delete(
152 - static::get_base_table_name(),
153 - array(
154 - 'cnt_id' => $cnt_id,
155 - )
156 - );
157 -
158 - }
159 -
160 - public static function update_master(
161 - $app_id,
162 - $app_dbs,
163 - $app_tbl,
164 - $app_cls
165 - ) {
166 -
167 - global $wpdb;
168 - $wpdb->update(
169 - static::get_base_table_name(),
170 - array(
171 - 'cnt_dbs' => $app_dbs,
172 - 'cnt_tbl' => $app_tbl,
173 - 'cnt_cls' => $app_cls,
174 - ),
175 - array(
176 - 'app_id' => $app_id,
177 - 'cnt_seq_nr' => 0,
178 - )
179 - );
180 -
181 - return $wpdb->last_error;
182 -
183 - }
184 -
185 - public static function update_table_settings(
186 - $cnt_id,
187 - $cnt_table_settings
188 - ) {
189 -
190 - global $wpdb;
191 - $wpdb->update(
192 - static::get_base_table_name(),
193 - array(
194 - 'cnt_table' => $cnt_table_settings,
195 - ),
196 - array(
197 - 'cnt_id' => $cnt_id,
198 - )
199 - );
200 -
201 - return $wpdb->last_error;
202 -
203 - }
204 -
205 - public static function update_form_settings(
206 - $cnt_id,
207 - $cnt_form_settings
208 - ) {
209 -
210 - global $wpdb;
211 - $wpdb->update(
212 - static::get_base_table_name(),
213 - array(
214 - 'cnt_form' => $cnt_form_settings,
215 - ),
216 - array(
217 - 'cnt_id' => $cnt_id,
218 - )
219 - );
220 -
221 - return $wpdb->last_error;
222 -
223 - }
224 -
225 - }
226 -
227 -}
302 +}