PluginProbe
WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards / 5.5.84
WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards v5.5.84
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 5.5.41 5.5.42 All 160 releases
wp-data-access / WPDataAccess / Plugin_Table_Models / WPDA_App_Container_Model.php

WPDA_App_Container_Model.php in WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards 5.5.84, at WPDataAccess/Plugin_Table_Models/WPDA_App_Container_Model.php

303 lines 13.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPDataAccess\Plugin_Table_Models;
4
5 use WPDataAccess\WPDA;
6 class WPDA_App_Container_Model extends WPDA_Plugin_Table_Base_Model {
7 const BASE_TABLE_NAME = 'wpda_app_container';
8
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 }
31
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 }
43
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 }
55
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 }
107
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 }
132
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 }
142
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 }
152
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 }
174
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 }
186
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 }
198
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 }
210
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 }
222
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 }
234
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 }
246
247 public static function container_move( $app_id, $cnt_id_from, $cnt_id_to ) {
248 // This is a premium feature.
249 return '';
250 }
251
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 }
301
302 }
303