PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.0
Presto Player v4.3.0
4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / inc / Database / Table.php
presto-player / inc / Database Last commit date
Upgrades 1 week ago AudioPresets.php 1 year ago EmailCollection.php 1 year ago Migrations.php 1 year ago Presets.php 1 year ago Table.php 1 week ago Videos.php 1 year ago Visits.php 1 year ago Webhooks.php 1 year ago
Table.php
100 lines
1 <?php
2 /**
3 * Database table helper.
4 *
5 * @package PrestoPlayer
6 */
7
8 namespace PrestoPlayer\Database;
9
10 /**
11 * Creates, drops and checks for custom database tables.
12 */
13 class Table {
14
15 /**
16 * Create a database table.
17 *
18 * @param string $name Table name (without the WordPress prefix).
19 * @param string $columns SQL column definitions.
20 * @param integer $version Schema version used to gate upgrades.
21 * @param array $opts Optional table options (upgrade_method, table_options).
22 * @return void
23 */
24 public function create( $name, $columns, $version = 1, $opts = array() ) {
25 $current_version = get_option( "{$name}_database_version", 0 );
26
27 if ( $version == $current_version ) {
28 return;
29 }
30
31 global $wpdb;
32
33 $full_table_name = $wpdb->prefix . $name;
34
35 $opts = wp_parse_args(
36 $opts,
37 array(
38 'upgrade_method' => 'dbDelta',
39 'table_options' => '',
40 )
41 );
42
43 $charset_collate = '';
44 if ( $wpdb->has_cap( 'collation' ) ) {
45 if ( ! empty( $wpdb->charset ) ) {
46 $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
47 }
48 if ( ! empty( $wpdb->collate ) ) {
49 $charset_collate .= " COLLATE $wpdb->collate";
50 }
51 }
52
53 $table_options = $charset_collate . ' ' . $opts['table_options'];
54
55 // Use dbDelta by default.
56 if ( 'dbDelta' == $opts['upgrade_method'] ) {
57 require_once ABSPATH . 'wp-admin/includes/upgrade.php';
58 dbDelta( "CREATE TABLE $full_table_name ( $columns ) $table_options" );
59 update_option( "{$name}_database_version", $version );
60 return;
61 }
62
63 if ( 'delete_first' == $opts['upgrade_method'] ) {
64 $wpdb->query( "DROP TABLE IF EXISTS $full_table_name;" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter -- DDL on an internal table name ($wpdb->prefix + schema name); identifiers cannot be bound.
65 }
66
67 $wpdb->query( "CREATE TABLE IF NOT EXISTS $full_table_name ( $columns ) $table_options;" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter -- DDL with internal table name and schema-defined columns; no user input.
68
69 update_option( "{$name}_database_version", $version );
70 }
71
72 /**
73 * Drops the table and database option.
74 *
75 * @param string $name Fully qualified table name to drop.
76 * @return void
77 */
78 public function drop( $name ) {
79 global $wpdb;
80 // Table identifiers cannot be bound via $wpdb->prepare(); $name is an internally controlled value.
81 $wpdb->query( 'DROP TABLE IF EXISTS ' . $name ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter
82 delete_option( "presto_courses_{$name}_database_version" );
83 }
84
85 /**
86 * Checks whether a table exists.
87 *
88 * @param string $name Table name (without the WordPress prefix).
89 * @return bool True when the table exists, false otherwise.
90 */
91 public function exists( $name ) {
92 global $wpdb;
93 $table_name = $wpdb->prefix . $name;
94 if ( $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $wpdb->esc_like( $table_name ) ) ) == $table_name ) {
95 return true;
96 }
97 return false;
98 }
99 }
100