public tables ( string $scope = 'all', boolean $prefix = true, integer $blog_id ) : array | ||
$scope | string | Optional. Can be all, global, ms_global, blog, or old tables. Defaults to all. |
$prefix | boolean | Optional. Whether to include table prefixes. Default true. If blog prefix is requested, then the custom users and usermeta tables will be mapped. |
$blog_id | integer | Optional. The blog_id to prefix. Defaults to wpdb::$blogid. Used only when prefix is requested. |
return | array | Table names. When a prefix is requested, the key is the unprefixed table name. |
public function tables($scope = 'all', $prefix = true, $blog_id = 0)
{
switch ($scope) {
case 'all':
$tables = array_merge($this->global_tables, $this->tables);
if (is_multisite()) {
$tables = array_merge($tables, $this->ms_global_tables);
}
break;
case 'blog':
$tables = $this->tables;
break;
case 'global':
$tables = $this->global_tables;
if (is_multisite()) {
$tables = array_merge($tables, $this->ms_global_tables);
}
break;
case 'ms_global':
$tables = $this->ms_global_tables;
break;
case 'old':
$tables = $this->old_tables;
break;
default:
return [];
}
if ($prefix) {
if (!$blog_id) {
$blog_id = $this->blogid;
}
$blog_prefix = $this->get_blog_prefix($blog_id);
$base_prefix = $this->base_prefix;
$global_tables = array_merge($this->global_tables, $this->ms_global_tables);
foreach ($tables as $k => $table) {
if (in_array($table, $global_tables)) {
$tables[$table] = $base_prefix . $table;
} else {
$tables[$table] = $blog_prefix . $table;
}
unset($tables[$k]);
}
if (isset($tables['users']) && defined('CUSTOM_USER_TABLE')) {
$tables['users'] = CUSTOM_USER_TABLE;
}
if (isset($tables['usermeta']) && defined('CUSTOM_USER_META_TABLE')) {
$tables['usermeta'] = CUSTOM_USER_META_TABLE;
}
}
return $tables;
}
/** * Checks if some tables with the given prefix exist in the database * * @param string $dbUser * @param string $dbPassword * @param string $dbName * @param string $dbHost * @param string $dbPrefix * @return bool */ private function someWpTablesExist($dbUser, $dbPassword, $dbName, $dbHost, $dbPrefix) { $wpdb = new \wpdb($dbUser, $dbPassword, $dbName, $dbHost); $wpdb->set_prefix($dbPrefix); $tables = $wpdb->get_col("SHOW TABLES LIKE '{$dbPrefix}_%'"); $wpTables = array_intersect($tables, $wpdb->tables()); return count($wpTables) > 0; }