| | |
| | | private static ?wpdb $wpdb = null; |
| | | private static string $prefix; |
| | | protected string $tableName; |
| | | protected bool $table_exists = false; |
| | | protected string $definition; |
| | | protected string $fullTableName; |
| | | protected bool $useTransactions; |
| | |
| | | { |
| | | if (!isset(self::$instances[$tableName])) { |
| | | self::$instances[$tableName] = new self($tableName, $user, $auth, $useTransactions); |
| | | self::$instances[$tableName]->setFlags(); |
| | | } |
| | | |
| | | |
| | | return self::$instances[$tableName]; |
| | | } |
| | | protected function setFlags():void |
| | | { |
| | | $this->table_exists = !is_null(self::$wpdb->get_var("SHOW TABLES LIKE '{$this->fullTableName}'")); |
| | | } |
| | | |
| | | public static function destroyInstance(string $tableName):void |
| | | { |
| | |
| | | require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); |
| | | |
| | | foreach (self::$instances as $instance) { |
| | | if (!$instance->wpdb->get_var("SHOW TABLES LIKE '{$instance->fullTableName}'")) { |
| | | if (!$instance->table_exists) { |
| | | $instance->createTable(); |
| | | } |
| | | } |
| | |
| | | error_log('[CustomTable]No definition set for '.$this->tableName); |
| | | return; |
| | | } |
| | | if (self::$wpdb->get_var("SHOW TABLES LIKE '{$this->fullTableName}'")) { |
| | | if ($this->table_exists) { |
| | | return; |
| | | } |
| | | require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); |
| | |
| | | $error_msg = "SQL Error creating table {$this->tableName}: " . self::$wpdb->last_error; |
| | | error_log($error_msg); |
| | | error_log("Failed SQL Query: " . $schema); |
| | | } elseif (self::$wpdb->get_var("SHOW TABLES LIKE '{$this->fullTableName}'")) { |
| | | } else { |
| | | error_log("Successfully created table: {$this->fullTableName}"); |
| | | } |
| | | } |