Current File : /home/jeconsul/public_html/wp-content/plugins/presto-player/inc/Database/Table.php |
<?php
namespace PrestoPlayer\Database;
class Table {
/**
* Create a database table
*
* @param string $name
* @param string $columns
* @param integer $version
* @param array $opts
* @return void
*/
public function create( $name, $columns, $version = 1, $opts = array() ) {
$current_version = get_option( "{$name}_database_version", 0 );
if ( $version == $current_version ) {
return;
}
global $wpdb;
$full_table_name = $wpdb->prefix . $name;
$opts = wp_parse_args(
$opts,
array(
'upgrade_method' => 'dbDelta',
'table_options' => '',
)
);
$charset_collate = '';
if ( $wpdb->has_cap( 'collation' ) ) {
if ( ! empty( $wpdb->charset ) ) {
$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
}
if ( ! empty( $wpdb->collate ) ) {
$charset_collate .= " COLLATE $wpdb->collate";
}
}
$table_options = $charset_collate . ' ' . $opts['table_options'];
// use dbDelta by default
if ( 'dbDelta' == $opts['upgrade_method'] ) {
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
dbDelta( "CREATE TABLE $full_table_name ( $columns ) $table_options" );
update_option( "{$name}_database_version", $version );
return;
}
if ( 'delete_first' == $opts['upgrade_method'] ) {
$wpdb->query( "DROP TABLE IF EXISTS $full_table_name;" );
}
$wpdb->query( "CREATE TABLE IF NOT EXISTS $full_table_name ( $columns ) $table_options;" );
update_option( "{$name}_database_version", $version );
}
/**
* Drops the table and database option
*
* @param string $name
* @return void
*/
public function drop( $name ) {
global $wpdb;
$wpdb->query( 'DROP TABLE IF EXISTS ' . $name );
delete_option( "presto_courses_{$name}_database_version" );
}
public function exists( $name ) {
global $wpdb;
$table_name = $wpdb->prefix . $name;
$query = $wpdb->prepare( 'SHOW TABLES LIKE %s', $wpdb->esc_like( $table_name ) );
if ( $wpdb->get_var( $query ) == $table_name ) {
return true;
}
return false;
}
}