<?php namespace WPDataAccess\Plugin_Table_Models { use WPDataAccess\WPDA; class WPDA_App_Model extends WPDA_Plugin_Table_Base_Model { const BASE_TABLE_NAME = 'wpda_app'; public static function get_by_id( $app_id ) { global $wpdb; $dataset = $wpdb->get_results( $wpdb->prepare( 'SELECT * FROM `%1s` WHERE app_id = %d', // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders array( WPDA::remove_backticks( self::get_base_table_name() ), $app_id, ) ), // db call ok; no-cache ok. 'ARRAY_A' ); // phpcs:ignore Standard.Category.SniffName.ErrorCode return 1 === $wpdb->num_rows ? $dataset : false; } public static function get_by_name( $app_name ) { global $wpdb; $dataset = $wpdb->get_results( $wpdb->prepare( 'SELECT * FROM `%1s` WHERE app_name = %s', // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders array( WPDA::remove_backticks( self::get_base_table_name() ), $app_name, ) ), // db call ok; no-cache ok. 'ARRAY_A' ); // phpcs:ignore Standard.Category.SniffName.ErrorCode return 1 === $wpdb->num_rows ? $dataset : false; } public static function list() { global $wpdb; return $wpdb->get_results( $wpdb->prepare( 'SELECT * FROM `%1s` ORDER BY app_name', // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders array( WPDA::remove_backticks( self::get_base_table_name() ), ) ), // db call ok; no-cache ok. 'ARRAY_A' ); // phpcs:ignore Standard.Category.SniffName.ErrorCode } public static function add_to_dashboard_menu() { global $wpdb; return $wpdb->get_results( $wpdb->prepare( 'SELECT * FROM `%1s` WHERE `app_add_to_menu` = 1 ORDER BY app_name', // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders array( WPDA::remove_backticks( self::get_base_table_name() ), ) ), // db call ok; no-cache ok. 'ARRAY_A' ); // phpcs:ignore Standard.Category.SniffName.ErrorCode } public static function create( $app_name, $app_title, $app_type, $app_settings ) { global $wpdb; if ( 1 === $wpdb->insert( static::get_base_table_name(), array( 'app_name' => $app_name, 'app_title' => $app_title, 'app_type' => $app_type, 'app_settings' => $app_settings, ) ) ) { return array( 'app_id' => $wpdb->insert_id, 'msg' => '', ); } else { return array( 'app_id' => false, 'msg' => $wpdb->last_error, ); } } public static function delete( $app_id ) { global $wpdb; return $wpdb->delete( static::get_base_table_name(), array( 'app_id' => $app_id, ) ); } public static function update( $app_id, $app_name, $app_title, $app_type, $app_settings, $app_add_to_menu ) { global $wpdb; $wpdb->update( static::get_base_table_name(), array( 'app_name' => $app_name, 'app_title' => $app_title, 'app_type' => $app_type, 'app_settings' => $app_settings, 'app_add_to_menu' => $app_add_to_menu, ), array( 'app_id' => $app_id, ) ); return $wpdb->last_error; } public static function copy( $app_id ) { $app = self::get_by_id( $app_id ); if ( false === $app ) { return false; } $app_name = $app[0]['app_name']; // Determine new app name $copy_nr = 1; $new_app_name = "{$app_name}_{$copy_nr} (copy)"; $app_exists = self::get_by_name( $new_app_name ); while ( false !== $app_exists ) { $copy_nr++; $new_app_name = "{$app_name}_{$copy_nr} (copy)"; $app_exists = self::get_by_name( $new_app_name ); } // Copy app global $wpdb; if ( 1 === $wpdb->insert( static::get_base_table_name(), array( 'app_name' => $new_app_name, 'app_title' => $app[0]['app_title'], 'app_type' => $app[0]['app_type'], 'app_settings' => $app[0]['app_settings'], 'app_theme' => $app[0]['app_theme'], ) ) ) { $new_app_id = $wpdb->insert_id; // Copy containers WPDA_App_Container_Model::copy( $app_id, $new_app_id ); return array( 'app_id' => $new_app_id, 'msg' => '', ); } else { return array( 'app_id' => false, 'msg' => $wpdb->last_error, ); } } public static function update_theme( $app_id, $app_theme ) { global $wpdb; $wpdb->update( static::get_base_table_name(), array( 'app_theme' => $app_theme, ), array( 'app_id' => $app_id, ) ); return $wpdb->last_error; } } }