Changeset 3463308
- Timestamp:
- 02/17/2026 10:12:53 AM (6 weeks ago)
- Location:
- interactive-real-estate
- Files:
-
- 2 edited
-
tags/2.2.0/includes/migrations.php (modified) (14 diffs)
-
trunk/includes/migrations.php (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
-
interactive-real-estate/tags/2.2.0/includes/migrations.php
r3463284 r3463308 9 9 { 10 10 global $wpdb; 11 11 12 // Check if $wpdb is an instance of an SQLite class 12 13 if (isset($wpdb) && is_object($wpdb)) { … … 15 16 return true; 16 17 } 18 } 19 20 // Check for WordPress Playground SQLite integration 21 if (defined('WP_SQLITE_DB_PATH') || class_exists('WP_SQLite_DB') || class_exists('WP_PDO_MySQL_On_SQLite')) { 22 return true; 23 } 24 25 // Check database name/type 26 if (defined('DB_NAME') && (strpos(DB_NAME, '.sqlite') !== false || strpos(DB_NAME, '.db') !== false)) { 27 return true; 17 28 } 18 29 … … 29 40 } 30 41 42 // Try to detect by querying database type 43 if (isset($wpdb) && is_object($wpdb)) { 44 try { 45 $db_type = $wpdb->get_var("SELECT sqlite_version()"); 46 if ($db_type !== null) { 47 return true; 48 } 49 } catch (Exception $e) { 50 // Not SQLite, continue 51 } 52 } 53 31 54 return false; 32 55 } … … 56 79 $json_type = 'LONGTEXT'; 57 80 81 // For SQLite (WordPress Playground), use MySQL syntax but avoid ON UPDATE CURRENT_TIMESTAMP 82 // WordPress Playground's SQLite integration expects MySQL syntax and translates it 83 $updated_at_sql = $is_sqlite 84 ? 'updated_at DATETIME DEFAULT CURRENT_TIMESTAMP' 85 : 'updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'; 86 58 87 // Projects table 59 88 $projects_sql = "CREATE TABLE $projects_table ( … … 65 94 polygon_data $json_type, 66 95 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 67 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,96 $updated_at_sql, 68 97 PRIMARY KEY (id) 69 98 ) $charset_collate;"; 70 99 dbDelta($projects_sql); 71 72 100 // Blocks table 73 101 $blocks_sql = "CREATE TABLE $blocks_table ( … … 80 108 project_id BIGINT(20) UNSIGNED NOT NULL, 81 109 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 82 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,110 $updated_at_sql, 83 111 PRIMARY KEY (id) 84 112 ) $charset_collate;"; … … 97 125 block_id BIGINT(20) UNSIGNED, 98 126 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 99 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,127 $updated_at_sql, 100 128 PRIMARY KEY (id), 101 129 UNIQUE KEY unique_floor (project_id, floor_number, block_id) … … 116 144 other $json_type, 117 145 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 118 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,146 $updated_at_sql, 119 147 PRIMARY KEY (id) 120 148 ) $charset_collate;"; … … 124 152 $flats_sql = "CREATE TABLE $flats_table ( 125 153 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, 126 is_active TINYINT(1) DEFAULT 1, 154 is_active TINYINT(1) DEFAULT 1, 127 155 block_id BIGINT(20) UNSIGNED, 128 156 floor_id BIGINT(20) UNSIGNED, … … 140 168 files $json_type, 141 169 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 142 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,170 $updated_at_sql, 143 171 PRIMARY KEY (id) 144 172 ) $charset_collate;"; … … 152 180 meta_value TEXT NOT NULL, 153 181 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 154 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,182 $updated_at_sql, 155 183 PRIMARY KEY (id) 156 184 ) $charset_collate;"; … … 164 192 data $json_type, 165 193 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 166 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,194 $updated_at_sql, 167 195 PRIMARY KEY (id) 168 196 ) $charset_collate;"; … … 178 206 comment TEXT, 179 207 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 180 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,208 $updated_at_sql, 181 209 PRIMARY KEY (id) 182 210 ) $charset_collate;"; … … 261 289 } 262 290 263 // Enable foreign keys for SQLite 264 if ($is_sqlite) { 265 $wpdb->query('PRAGMA foreign_keys = ON;'); 266 } 291 // Note: Foreign keys are handled by WordPress Playground's SQLite integration automatically 267 292 } -
interactive-real-estate/trunk/includes/migrations.php
r3463284 r3463308 9 9 { 10 10 global $wpdb; 11 11 12 // Check if $wpdb is an instance of an SQLite class 12 13 if (isset($wpdb) && is_object($wpdb)) { … … 15 16 return true; 16 17 } 18 } 19 20 // Check for WordPress Playground SQLite integration 21 if (defined('WP_SQLITE_DB_PATH') || class_exists('WP_SQLite_DB') || class_exists('WP_PDO_MySQL_On_SQLite')) { 22 return true; 23 } 24 25 // Check database name/type 26 if (defined('DB_NAME') && (strpos(DB_NAME, '.sqlite') !== false || strpos(DB_NAME, '.db') !== false)) { 27 return true; 17 28 } 18 29 … … 29 40 } 30 41 42 // Try to detect by querying database type 43 if (isset($wpdb) && is_object($wpdb)) { 44 try { 45 $db_type = $wpdb->get_var("SELECT sqlite_version()"); 46 if ($db_type !== null) { 47 return true; 48 } 49 } catch (Exception $e) { 50 // Not SQLite, continue 51 } 52 } 53 31 54 return false; 32 55 } … … 56 79 $json_type = 'LONGTEXT'; 57 80 81 // For SQLite (WordPress Playground), use MySQL syntax but avoid ON UPDATE CURRENT_TIMESTAMP 82 // WordPress Playground's SQLite integration expects MySQL syntax and translates it 83 $updated_at_sql = $is_sqlite 84 ? 'updated_at DATETIME DEFAULT CURRENT_TIMESTAMP' 85 : 'updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'; 86 58 87 // Projects table 59 88 $projects_sql = "CREATE TABLE $projects_table ( … … 65 94 polygon_data $json_type, 66 95 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 67 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,96 $updated_at_sql, 68 97 PRIMARY KEY (id) 69 98 ) $charset_collate;"; 70 99 dbDelta($projects_sql); 71 72 100 // Blocks table 73 101 $blocks_sql = "CREATE TABLE $blocks_table ( … … 80 108 project_id BIGINT(20) UNSIGNED NOT NULL, 81 109 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 82 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,110 $updated_at_sql, 83 111 PRIMARY KEY (id) 84 112 ) $charset_collate;"; … … 97 125 block_id BIGINT(20) UNSIGNED, 98 126 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 99 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,127 $updated_at_sql, 100 128 PRIMARY KEY (id), 101 129 UNIQUE KEY unique_floor (project_id, floor_number, block_id) … … 116 144 other $json_type, 117 145 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 118 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,146 $updated_at_sql, 119 147 PRIMARY KEY (id) 120 148 ) $charset_collate;"; … … 124 152 $flats_sql = "CREATE TABLE $flats_table ( 125 153 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, 126 is_active TINYINT(1) DEFAULT 1, 154 is_active TINYINT(1) DEFAULT 1, 127 155 block_id BIGINT(20) UNSIGNED, 128 156 floor_id BIGINT(20) UNSIGNED, … … 140 168 files $json_type, 141 169 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 142 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,170 $updated_at_sql, 143 171 PRIMARY KEY (id) 144 172 ) $charset_collate;"; … … 152 180 meta_value TEXT NOT NULL, 153 181 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 154 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,182 $updated_at_sql, 155 183 PRIMARY KEY (id) 156 184 ) $charset_collate;"; … … 164 192 data $json_type, 165 193 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 166 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,194 $updated_at_sql, 167 195 PRIMARY KEY (id) 168 196 ) $charset_collate;"; … … 178 206 comment TEXT, 179 207 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 180 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,208 $updated_at_sql, 181 209 PRIMARY KEY (id) 182 210 ) $charset_collate;"; … … 261 289 } 262 290 263 // Enable foreign keys for SQLite 264 if ($is_sqlite) { 265 $wpdb->query('PRAGMA foreign_keys = ON;'); 266 } 291 // Note: Foreign keys are handled by WordPress Playground's SQLite integration automatically 267 292 }
Note: See TracChangeset
for help on using the changeset viewer.