# wp-data-access/5.5.84/WPDataAccess/Plugin_Table_Models/WPDA_App_Container_Model.php

WP Data Access – App Builder for Tables, Forms, Charts, Maps &amp; Dashboards, version 5.5.84. 303 lines.

- Page: https://pluginprobe.com/plugins/wp-data-access/5.5.84/code/WPDataAccess/Plugin_Table_Models/WPDA_App_Container_Model.php
- Raw: https://pluginprobe.com/plugins/wp-data-access/5.5.84/raw/WPDataAccess/Plugin_Table_Models/WPDA_App_Container_Model.php
- Modified: 2026-09-16T18:01:32+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/wp-data-access/5.5.84/code/WPDataAccess/Plugin_Table_Models/WPDA_App_Container_Model.php#L10-L20`.

```php
<?php

namespace WPDataAccess\Plugin_Table_Models;

use WPDataAccess\WPDA;
class WPDA_App_Container_Model extends WPDA_Plugin_Table_Base_Model {
    const BASE_TABLE_NAME = 'wpda_app_container';

    public static function select( $app_id, $cnt_seq_nr ) {
        global $wpdb;
        if ( 0 === $cnt_seq_nr ) {
            // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders -- plugin table
            $dataset = $wpdb->get_results( 
                $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) ),
                // db call ok; no-cache ok.
                'ARRAY_A'
             );
            // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders
            return $dataset;
        } else {
            // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders -- plugin table
            $dataset = $wpdb->get_results( 
                $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) ),
                // db call ok; no-cache ok.
                'ARRAY_A'
             );
            // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders
            return $dataset;
        }
    }

    public static function select_all( $app_id ) {
        global $wpdb;
        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders -- plugin table
        $dataset = $wpdb->get_results( 
            $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) ),
            // db call ok; no-cache ok.
            'ARRAY_A'
         );
        // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders
        return $dataset;
    }

    public static function get_container( $app_id, $cnt_id ) {
        global $wpdb;
        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders -- plugin table
        $dataset = $wpdb->get_results( 
            $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) ),
            // db call ok; no-cache ok.
            'ARRAY_A'
         );
        // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders
        return $dataset;
    }

    public static function create(
        $app_id,
        $app_dbs,
        $app_tbl,
        $app_cls,
        $cnt_title,
        $cnt_seq_nr,
        $cnt_table,
        $cnt_relation = null,
        $cnt_query = null
    ) {
        global $wpdb;
        if ( 1 === $cnt_seq_nr ) {
            // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders -- plugin table
            $max_seq_nr = $wpdb->get_results( 
                $wpdb->prepare( 'SELECT max(cnt_seq_nr) FROM `%1s` WHERE app_id = %d', array(WPDA::remove_backticks( self::get_base_table_name() ), $app_id) ),
                // db call ok; no-cache ok.
                'ARRAY_N'
             );
            // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders
            if ( isset( $max_seq_nr[0][0] ) ) {
                $cnt_seq_nr = $max_seq_nr[0][0] + 1;
            }
        }
        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery -- plugin table
        $rows = $wpdb->insert( static::get_base_table_name(), array(
            'cnt_dbs'      => $app_dbs,
            'cnt_tbl'      => $app_tbl,
            'cnt_cls'      => $app_cls,
            'cnt_title'    => $cnt_title,
            'app_id'       => $app_id,
            'cnt_seq_nr'   => $cnt_seq_nr,
            'cnt_table'    => $cnt_table,
            'cnt_relation' => $cnt_relation,
            'cnt_query'    => $cnt_query,
        ) );
        // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery
        if ( 1 === $rows ) {
            // Return new container
            $cnt_id = $wpdb->insert_id;
            return array(
                'cnt_id' => $wpdb->insert_id,
                'msg'    => '',
            );
        } else {
            return array(
                'cnt_id' => false,
                'msg'    => $wpdb->last_error,
            );
        }
    }

    public static function update(
        $app_id,
        $app_cnt,
        $app_dbs,
        $app_tbl,
        $app_cls,
        $cnt_title,
        $cnt_relation = null
    ) {
        global $wpdb;
        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
        $wpdb->update( static::get_base_table_name(), array(
            'cnt_dbs'      => $app_dbs,
            'cnt_tbl'      => $app_tbl,
            'cnt_cls'      => $app_cls,
            'cnt_title'    => $cnt_title,
            'cnt_relation' => $cnt_relation,
        ), array(
            'app_id' => $app_id,
            'cnt_id' => $app_cnt,
        ) );
        // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
        return $wpdb->last_error;
    }

    public static function delete( $app_id ) {
        global $wpdb;
        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
        $delete = $wpdb->delete( static::get_base_table_name(), array(
            'app_id' => $app_id,
        ) );
        // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
        return $delete;
    }

    public static function delete_container( $cnt_id ) {
        global $wpdb;
        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
        $delete = $wpdb->delete( static::get_base_table_name(), array(
            'cnt_id' => $cnt_id,
        ) );
        // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
        return $delete;
    }

    public static function update_master(
        $app_id,
        $app_dbs,
        $app_tbl,
        $app_cls,
        $app_query
    ) {
        global $wpdb;
        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
        $wpdb->update( static::get_base_table_name(), array(
            'cnt_dbs'   => $app_dbs,
            'cnt_tbl'   => $app_tbl,
            'cnt_cls'   => $app_cls,
            'cnt_query' => $app_query,
        ), array(
            'app_id'     => $app_id,
            'cnt_seq_nr' => 0,
        ) );
        // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
        return $wpdb->last_error;
    }

    public static function update_table_settings( $cnt_id, $cnt_table_settings ) {
        global $wpdb;
        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
        $wpdb->update( static::get_base_table_name(), array(
            'cnt_table' => $cnt_table_settings,
        ), array(
            'cnt_id' => $cnt_id,
        ) );
        // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
        return $wpdb->last_error;
    }

    public static function update_rform_settings( $cnt_id, $cnt_form_settings ) {
        global $wpdb;
        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
        $wpdb->update( static::get_base_table_name(), array(
            'cnt_rform' => $cnt_form_settings,
        ), array(
            'cnt_id' => $cnt_id,
        ) );
        // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
        return $wpdb->last_error;
    }

    public static function update_form_settings( $cnt_id, $cnt_form_settings ) {
        global $wpdb;
        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
        $wpdb->update( static::get_base_table_name(), array(
            'cnt_form' => $cnt_form_settings,
        ), array(
            'cnt_id' => $cnt_id,
        ) );
        // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
        return $wpdb->last_error;
    }

    public static function update_chart_settings( $cnt_id, $cnt_chart_settings ) {
        global $wpdb;
        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
        $wpdb->update( static::get_base_table_name(), array(
            'cnt_chart' => $cnt_chart_settings,
        ), array(
            'cnt_id' => $cnt_id,
        ) );
        // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
        return $wpdb->last_error;
    }

    public static function update_dashboard_settings( $cnt_id, $cnt_dashboard_settings ) {
        global $wpdb;
        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
        $wpdb->update( static::get_base_table_name(), array(
            'cnt_dashboard' => $cnt_dashboard_settings,
        ), array(
            'cnt_id' => $cnt_id,
        ) );
        // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
        return $wpdb->last_error;
    }

    public static function update_map_settings( $cnt_id, $cnt_map_settings ) {
        global $wpdb;
        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
        $wpdb->update( static::get_base_table_name(), array(
            'cnt_map' => $cnt_map_settings,
        ), array(
            'cnt_id' => $cnt_id,
        ) );
        // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
        return $wpdb->last_error;
    }

    public static function container_move( $app_id, $cnt_id_from, $cnt_id_to ) {
        // This is a premium feature.
        return '';
    }

    public static function copy( $app_id_old, $app_id_new ) {
        global $wpdb;
        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders -- plugin table
        $containers = $wpdb->get_results( 
            $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) ),
            // db call ok; no-cache ok.
            'ARRAY_A'
         );
        // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders
        $cnt_id_conversion = array();
        foreach ( $containers as $container ) {
            $cnt_id = $container['cnt_id'];
            $container['app_id'] = $app_id_new;
            unset($container['cnt_id']);
            // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery -- plugin table
            $wpdb->insert( static::get_base_table_name(), $container );
            // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery
            $cnt_id_conversion[$cnt_id] = $wpdb->insert_id;
        }
        foreach ( $cnt_id_conversion as $cnt_id_old => $cnt_id_new ) {
            $container = self::get_container( $app_id_new, $cnt_id_new );
            if ( isset( $container[0]['cnt_relation'] ) ) {
                $relation = $container[0]['cnt_relation'];
                if ( null !== $relation && '' !== $relation ) {
                    $json = json_decode( $relation, true );
                    if ( isset( $json['cnt_id_master'] ) ) {
                        $cnt_id_master_old = $json['cnt_id_master'];
                        if ( isset( $cnt_id_conversion[$cnt_id_master_old] ) ) {
                            // Update relationship master id
                            $cnt_id_master_new = $cnt_id_conversion[$cnt_id_master_old];
                            $json['cnt_id_master'] = strval( $cnt_id_master_new );
                            $relation = json_encode( $json );
                        } else {
                            // Master no longer available
                            $relation = null;
                        }
                        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table
                        $wpdb->update( static::get_base_table_name(), array(
                            'cnt_relation' => $relation,
                        ), array(
                            'app_id' => $app_id_new,
                            'cnt_id' => $cnt_id_new,
                        ) );
                        // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
                    }
                }
            }
        }
    }

}

```
