PluginProbe
WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards / 5.5.84
WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards v5.5.84
5.5.84 5.5.83 5.5.82 5.5.81 5.5.80 5.5.79 5.5.77 5.5.76 5.5.75 5.5.73 5.5.72 5.5.22 5.5.23 5.5.29 5.5.3 5.5.31 5.5.32 5.5.34 5.5.35 5.5.36 5.5.37 5.5.4 5.5.40 5.5.41 5.5.42 All 160 releases
← All changes | WPDataAccess/API/WPDA_Actions.php +239 -25 5.5.415.5.84 View file →
@@ -1,8 +1,9 @@
1 1 <?php
2 2
3 3 namespace WPDataAccess\API;
4 4
5 +use PDOException;
5 6 use WPDataAccess\Connection\WPDADB;
6 7 use WPDataAccess\Plugin_Table_Models\WPDA_Media_Model;
7 8 use WPDataAccess\Plugin_Table_Models\WPDA_Table_Settings_Model;
8 9 use WPDataAccess\Plugin_Table_Models\WPDA_User_Menus_Model;
@@ -8,8 +9,10 @@
8 9 use WPDataAccess\Plugin_Table_Models\WPDA_User_Menus_Model;
9 10 use WPDataAccess\Utilities\WPDA_Mail;
10 11 use WPDataAccess\WPDA;
11 12 class WPDA_Actions extends WPDA_API_Core {
13 + const WPDA_COPY_TABLE = 'wpda_copy_table';
14 +
12 15 protected $file_pointer;
13 16
14 17 protected $file_content;
15 18
@@ -39,10 +42,27 @@
39 42 'description' => __( 'Copy data from source to destination table', 'wp-data-access' ),
40 43 'sanitize_callback' => 'sanitize_text_field',
41 44 'validate_callback' => 'rest_validate_request_arg',
42 45 ),
46 + 'copy_key' => $this->get_param( 'copy_key' ),
43 47 ),
44 48 ) );
49 + register_rest_route( WPDA_API::WPDA_NAMESPACE, 'action/copy/start', array(
50 + 'methods' => array('POST'),
51 + 'callback' => array($this, 'action_copy_start'),
52 + 'permission_callback' => '__return_true',
53 + 'args' => array(
54 + 'copy_key' => $this->get_param( 'copy_key' ),
55 + ),
56 + ) );
57 + register_rest_route( WPDA_API::WPDA_NAMESPACE, 'action/copy/cancel', array(
58 + 'methods' => array('POST'),
59 + 'callback' => array($this, 'action_copy_cancel'),
60 + 'permission_callback' => '__return_true',
61 + 'args' => array(
62 + 'copy_key' => $this->get_param( 'copy_key' ),
63 + ),
64 + ) );
45 65 register_rest_route( WPDA_API::WPDA_NAMESPACE, 'action/truncate', array(
46 66 'methods' => array('POST'),
47 67 'callback' => array($this, 'action_truncate'),
48 68 'permission_callback' => '__return_true',
@@ -93,10 +113,98 @@
93 113 'validate_callback' => 'rest_validate_request_arg',
94 114 ),
95 115 ),
96 116 ) );
117 + register_rest_route( WPDA_API::WPDA_NAMESPACE, 'action/get_row_count', array(
118 + 'methods' => array('POST'),
119 + 'callback' => array($this, 'action_get_row_count'),
120 + 'permission_callback' => '__return_true',
121 + 'args' => array(
122 + 'dbs' => $this->get_param( 'dbs', __( 'Local database name or remote connection string', 'wp-data-access' ) ),
123 + 'tbl' => $this->get_param( 'tbl', __( 'Table name', 'wp-data-access' ) ),
124 + ),
125 + ) );
126 + register_rest_route( WPDA_API::WPDA_NAMESPACE, 'action/update_row_count', array(
127 + 'methods' => array('POST'),
128 + 'callback' => array($this, 'action_update_row_count'),
129 + 'permission_callback' => '__return_true',
130 + 'args' => array(
131 + 'dbs' => $this->get_param( 'dbs', __( 'Local database name or remote connection string', 'wp-data-access' ) ),
132 + 'tbl' => $this->get_param( 'tbl', __( 'Table name', 'wp-data-access' ) ),
133 + 'cnt' => $this->get_param( 'row_count', __( 'Hard row count estimation', 'wp-data-access' ) ),
134 + ),
135 + ) );
97 136 }
98 137
138 + public function action_update_row_count( $request ) {
139 + if ( !$this->current_user_can_access() ) {
140 + return $this->unauthorized();
141 + }
142 + if ( !$this->current_user_token_valid( $request ) ) {
143 + return $this->invalid_nonce();
144 + }
145 + $dbs = $request->get_param( 'dbs' );
146 + $tbl = $request->get_param( 'tbl' );
147 + $cnt = $request->get_param( 'cnt' );
148 + // Get table settings.
149 + $settings_db = WPDA_Table_Settings_Model::query( $tbl, $dbs );
150 + if ( isset( $settings_db[0]['wpda_table_settings'] ) ) {
151 + // Convert string to JSON.
152 + $settings = json_decode( $settings_db[0]['wpda_table_settings'], true );
153 + if ( isset( $settings['table_settings']['row_count_estimate_value_hard'] ) ) {
154 + // Store actual row count as hard estimate.
155 + $settings['table_settings']['row_count_estimate_value_hard'] = $cnt;
156 + // Save new hard row count.
157 + WPDA_Table_Settings_Model::update( $tbl, json_encode( $settings ), $dbs );
158 + }
159 + return $this->WPDA_Rest_Response( "OK" );
160 + } else {
161 + WPDA::wpda_log_wp_error( "Error saving hard row count. Please try again later." );
162 + }
163 + }
164 +
165 + public function action_get_row_count( $request ) {
166 + if ( !$this->current_user_can_access() ) {
167 + return $this->unauthorized();
168 + }
169 + if ( !$this->current_user_token_valid( $request ) ) {
170 + return $this->invalid_nonce();
171 + }
172 + $dbs = $request->get_param( 'dbs' );
173 + $tbl = $request->get_param( 'tbl' );
174 + $count = $this->get_row_count( $dbs, $tbl );
175 + return $this->WPDA_Rest_Response( $count );
176 + }
177 +
178 + public function action_set_row_count( $request ) {
179 + if ( !$this->current_user_can_access() ) {
180 + return $this->unauthorized();
181 + }
182 + if ( !$this->current_user_token_valid( $request ) ) {
183 + return $this->invalid_nonce();
184 + }
185 + $dbs = $request->get_param( 'dbs' );
186 + $tbl = $request->get_param( 'tbl' );
187 + $count = $this->get_row_count( $dbs, $tbl );
188 + return $this->WPDA_Rest_Response( $count );
189 + }
190 +
191 + public static function get_row_count( $dbs, $tbl ) {
192 + $wpdadb = WPDADB::get_db_connection( $dbs );
193 + if ( null === $wpdadb ) {
194 + /* translators: %s = database name */
195 + return sprintf( __( 'Database %s not available', 'wp-data-access' ), esc_attr( $dbs ) );
196 + }
197 + $suppress_errors = $wpdadb->suppress_errors;
198 + $wpdadb->suppress_errors = true;
199 + $count = $wpdadb->get_results( $wpdadb->prepare( 'select count(*) from `%1s`', array($tbl) ), 'ARRAY_N' );
200 + $wpdadb->suppress_errors = $suppress_errors;
201 + if ( $wpdadb->last_error !== '' ) {
202 + WPDA::wpda_log_wp_error( $wpdadb->last_error );
203 + }
204 + return ( isset( $count[0][0] ) ? $count[0][0] : false );
205 + }
206 +
99 207 public function action_mail( $request ) {
100 208 if ( !$this->current_user_can_access() ) {
101 209 return $this->unauthorized();
102 210 }
@@ -123,12 +231,10 @@
123 231 if ( 0 === count( $files ) || '' === trim( $dbs ) ) {
124 232 return $this->bad_request();
125 233 } else {
126 234 foreach ( $files as $file ) {
127 - // phpcs:disable
128 235 $temp_file_name = sanitize_text_field( $file['tmp_name'] );
129 236 // For Windows: do NOT unslash!
130 - // phpcs:enable
131 237 $temp_file_type = sanitize_text_field( wp_unslash( $file['type'] ) );
132 238 $orig_file_name = sanitize_text_field( wp_unslash( $file['name'] ) );
133 239 if ( 0 === $file['error'] && is_uploaded_file( $temp_file_name ) ) {
134 240 if ( 'application/zip' === $temp_file_type || 'application/x-zip' === $temp_file_type || 'application/x-zip-compressed' === $temp_file_type ) {
@@ -152,8 +258,9 @@
152 258 }
153 259 } else {
154 260 // Error reading ZIP file.
155 261 $errors = true;
262 + // phpcs:disable WordPress.WP.I18n.MissingTranslatorsComment
156 263 $response[] = array(
157 264 $orig_file_name => array(
158 265 'status' => 'error',
159 266 'msg' => sprintf( __( 'Import failed [error reading ZIP file `%s`]', 'wp-data-access' ), $orig_file_name ),
@@ -158,8 +265,9 @@
158 265 'status' => 'error',
159 266 'msg' => sprintf( __( 'Import failed [error reading ZIP file `%s`]', 'wp-data-access' ), $orig_file_name ),
160 267 ),
161 268 );
269 + // phpcs:enable WordPress.WP.I18n.MissingTranslatorsComment
162 270 }
163 271 } else {
164 272 // ZipArchive not installed.
165 273 $errors = true;
@@ -165,15 +273,17 @@
165 273 $errors = true;
166 274 $response[] = array(
167 275 $orig_file_name => array(
168 276 'status' => 'error',
169 - 'msg' => sprintf( __( 'Import failed - ZipArchive not installed %s', 'wp-data-access' ) ),
277 + 'msg' => __( 'Import failed - ZipArchive not installed', 'wp-data-access' ),
170 278 ),
171 279 );
172 280 }
173 281 } else {
174 282 // Process plain file.
283 + // phpcs:disable WordPress.WP.AlternativeFunctions.file_system_operations_fopen
175 284 $this->file_pointer = fopen( $temp_file_name, 'rb' );
285 + // phpcs:enable WordPress.WP.AlternativeFunctions.file_system_operations_fopen
176 286 $status = $this->import( $orig_file_name, $dbs );
177 287 if ( isset( $status['status'], $status['msg'] ) ) {
178 288 $errors = $errors || 'error' === $status['status'];
179 289 $response[] = array(
@@ -266,8 +376,9 @@
266 376 $to_dbs = $request->get_param( 'to_dbs' );
267 377 $from_tbl = $request->get_param( 'from_tbl' );
268 378 $to_tbl = $request->get_param( 'to_tbl' );
269 379 $copy_data = $request->get_param( 'copy_data' );
380 + $copy_key = $request->get_param( 'copy_key' );
270 381 if ( '' === $from_dbs || '' === $to_dbs || '' === $from_tbl || '' === $to_tbl ) {
271 382 return $this->bad_request();
272 383 }
273 384 $msg = $this->copy(
@@ -274,9 +385,10 @@
274 385 $from_dbs,
275 386 $to_dbs,
276 387 $from_tbl,
277 388 $to_tbl,
278 - $copy_data
389 + $copy_data,
390 + $copy_key
279 391 );
280 392 if ( '' === $msg ) {
281 393 return $this->WPDA_Rest_Response( __( 'Table successfully copied', 'wp-data-access' ) );
282 394 } else {
@@ -285,8 +397,44 @@
285 397 ));
286 398 }
287 399 }
288 400
401 + public function action_copy_start( $request ) {
402 + if ( !$this->current_user_can_access() ) {
403 + return $this->unauthorized();
404 + }
405 + if ( !$this->current_user_token_valid( $request ) ) {
406 + return $this->invalid_nonce();
407 + }
408 + if ( !WPDA::current_user_is_admin() ) {
409 + return $this->unauthorized();
410 + }
411 + $copy_key = $request->get_param( 'copy_key' );
412 + if ( '' === $copy_key ) {
413 + return $this->bad_request();
414 + }
415 + $this->copy_start( $copy_key );
416 + return $this->WPDA_Rest_Response( 'ok', self::copy_in_progress() );
417 + }
418 +
419 + public function action_copy_cancel( $request ) {
420 + if ( !$this->current_user_can_access() ) {
421 + return $this->unauthorized();
422 + }
423 + if ( !$this->current_user_token_valid( $request ) ) {
424 + return $this->invalid_nonce();
425 + }
426 + if ( !WPDA::current_user_is_admin() ) {
427 + return $this->unauthorized();
428 + }
429 + $copy_key = $request->get_param( 'copy_key' );
430 + if ( '' === $copy_key ) {
431 + return $this->bad_request();
432 + }
433 + $this->copy_stop( $copy_key );
434 + return $this->WPDA_Rest_Response( 'ok', self::copy_in_progress() );
435 + }
436 +
289 437 public function action_rename( $request ) {
290 438 if ( !$this->current_user_can_access() ) {
291 439 return $this->unauthorized();
292 440 }
@@ -327,8 +475,9 @@
327 475 return 'Unauthorized';
328 476 }
329 477 $wpdadb = WPDADB::get_db_connection( $dbs );
330 478 if ( null === $wpdadb ) {
479 + /* translators: %s = database name */
331 480 return sprintf( __( 'Remote database %s not available', 'wp-data-access' ), esc_attr( $dbs ) );
332 481 }
333 482 $suppress_errors = $wpdadb->suppress_errors;
334 483 $wpdadb->suppress_errors = true;
@@ -341,9 +490,10 @@
341 490 $from_dbs,
342 491 $to_dbs,
343 492 $from_tbl,
344 493 $to_tbl,
345 - $copy_data
494 + $copy_data,
495 + $copy_key
346 496 ) {
347 497 // All values have already been validated and sanitized in the rest route registration.
348 498 if ( !WPDA::current_user_is_admin() ) {
349 499 return 'Unauthorized';
@@ -349,12 +499,14 @@
349 499 return 'Unauthorized';
350 500 }
351 501 $wpdadb_from = WPDADB::get_db_connection( $from_dbs );
352 502 if ( null === $wpdadb_from ) {
503 + /* translators: %s = database name */
353 504 return sprintf( __( 'Remote database %s not available', 'wp-data-access' ), esc_attr( $from_dbs ) );
354 505 }
355 506 $wpdadb_to = WPDADB::get_db_connection( $to_dbs );
356 507 if ( null === $wpdadb_to ) {
508 + /* translators: %s = database name */
357 509 return sprintf( __( 'Remote database %s not available', 'wp-data-access' ), esc_attr( $to_dbs ) );
358 510 }
359 511 $suppress_errors_from = $wpdadb_from->suppress_errors;
360 512 $wpdadb_from->suppress_errors = true;
@@ -398,34 +550,96 @@
398 550 return $wpdadb_to->last_error;
399 551 }
400 552 if ( '1' === $copy_data ) {
401 553 // Copy data from source to destination table.
554 + // Prevent time out.
555 + // phpcs:disable Squiz.PHP.DiscouragedFunctions.Discouraged
402 556 set_time_limit( 0 );
403 - // Prevent time out.
404 - // Use a cursor to process all rows and prevent exhausting memory.
405 - // Process 100 rows per batch to prevent exhausting memory.
406 - $buffer_size = 100;
557 + // phpcs:enable Squiz.PHP.DiscouragedFunctions.Discouraged
558 + // Buffer rows to prevent exhausting memory.
559 + $buffer_size = 1000;
560 + // Default buffer
561 + $settings_db = WPDA_Table_Settings_Model::query( $from_tbl, $from_dbs );
562 + if ( isset( $settings_db[0]['wpda_table_settings'] ) ) {
563 + // Convert string to JSON.
564 + $settings = json_decode( $settings_db[0]['wpda_table_settings'], true );
565 + if ( isset( $settings['table_settings']['query_buffer_size'] ) && is_numeric( $settings['table_settings']['query_buffer_size'] ) ) {
566 + $buffer_size = intval( $settings['table_settings']['query_buffer_size'] );
567 + }
568 + }
407 569 $index = 0;
408 570 $loop_done = false;
571 + $wpdadb_from->save_queries = false;
572 + $wpdadb_to->save_queries = false;
409 573 while ( !$loop_done ) {
410 574 // Get rows.
411 - $rows = $wpdadb_from->get_results( $wpdadb_from->prepare( 'select * from `%1s` limit %1s offset %1s', array($from_tbl, $buffer_size, $index * $buffer_size) ), 'ARRAY_A' );
575 + $rows = $wpdadb_from->get_results( $wpdadb_from->prepare( 'select * from `%1s` limit %d offset %d', array($from_tbl, $buffer_size, $index * $buffer_size) ), 'ARRAY_A' );
412 576 // Process rows.
413 577 foreach ( $rows as $row ) {
414 578 $wpdadb_to->insert( $to_tbl, $row );
415 579 }
580 + // Cleanup = IMPORTANT!
581 + $wpdadb_from->flush();
582 + $wpdadb_to->flush();
583 + $wpdadb_to->queries = array();
584 + $wpdadb_to->last_query = '';
585 + $wpdadb_to->last_error = '';
586 + $wpdadb_to->result = null;
587 + $wpdadb_to->num_rows = 0;
588 + $wpdadb_to->rows_affected = 0;
589 + wp_cache_flush();
590 + if ( function_exists( 'gc_collect_cycles' ) ) {
591 + gc_collect_cycles();
592 + }
416 593 if ( 100 > count( $rows ) ) {
417 594 // No more rows to process.
418 595 $loop_done = true;
419 596 }
597 + unset($rows);
420 598 $index++;
599 + // Check if job was cancelled
600 + $in_progress = self::copy_in_progress();
601 + if ( !in_array( $copy_key, $in_progress ) ) {
602 + $loop_done = true;
603 + }
421 604 }
422 605 }
423 606 $wpdadb_from->suppress_errors = $suppress_errors_from;
424 607 $wpdadb_to->suppress_errors = $suppress_errors_to;
608 + $this->copy_stop( $copy_key );
609 + if ( '' !== $wpdadb_from->last_error ) {
610 + return $wpdadb_from->last_error;
611 + }
612 + if ( '' !== $wpdadb_to->last_error ) {
613 + return $wpdadb_to->last_error;
614 + }
425 615 return '';
426 616 }
427 617
618 + private function copy_start( $copy_key ) {
619 + $in_progress = self::copy_in_progress();
620 + $in_progress[] = $copy_key;
621 + update_user_meta( WPDA::get_current_user_id(), self::WPDA_COPY_TABLE, $in_progress );
622 + }
623 +
624 + private function copy_stop( $copy_key ) {
625 + $in_progress = self::copy_in_progress();
626 + if ( ($array_key = array_search( $copy_key, $in_progress )) !== false ) {
627 + unset($in_progress[$array_key]);
628 + $in_progress = array_values( $in_progress );
629 + // Reset indexes to start at 0
630 + }
631 + update_user_meta( WPDA::get_current_user_id(), self::WPDA_COPY_TABLE, $in_progress );
632 + }
633 +
634 + public static function copy_in_progress() {
635 + $in_progress = get_user_meta( WPDA::get_current_user_id(), self::WPDA_COPY_TABLE, true );
636 + if ( $in_progress === false || $in_progress === '' ) {
637 + return array();
638 + }
639 + return maybe_unserialize( $in_progress );
640 + }
641 +
428 642 private function truncate( $dbs, $tbl ) {
429 643 // All values have already been validated and sanitized in the rest route registration.
430 644 if ( !WPDA::current_user_is_admin() ) {
431 645 return 'Unauthorized';
@@ -431,8 +645,9 @@
431 645 return 'Unauthorized';
432 646 }
433 647 $wpdadb = WPDADB::get_db_connection( $dbs );
434 648 if ( null === $wpdadb ) {
649 + /* translators: %s = database name */
435 650 return sprintf( __( 'Remote database %s not available', 'wp-data-access' ), esc_attr( $dbs ) );
436 651 }
437 652 $suppress_errors = $wpdadb->suppress_errors;
438 653 $wpdadb->suppress_errors = true;
@@ -447,8 +662,9 @@
447 662 return 'Unauthorized';
448 663 }
449 664 $wpdadb = WPDADB::get_db_connection( $dbs );
450 665 if ( null === $wpdadb ) {
666 + /* translators: %s = database name */
451 667 return sprintf( __( 'Remote database %s not available', 'wp-data-access' ), esc_attr( $dbs ) );
452 668 }
453 669 $suppress_errors = $wpdadb->suppress_errors;
454 670 $wpdadb->suppress_errors = true;
@@ -456,8 +672,11 @@
456 672 $wpdadb->query( $wpdadb->prepare( 'drop view `%1s`', array($tbl) ) );
457 673 } else {
458 674 $wpdadb->query( $wpdadb->prepare( 'drop table `%1s`', array($tbl) ) );
459 675 }
676 + if ( '' !== $wpdadb->last_error ) {
677 + return $wpdadb->last_error;
678 + }
460 679 $this->post_drop_table( $dbs, $tbl );
461 680 $wpdadb->suppress_errors = $suppress_errors;
462 681 return $wpdadb->last_error;
463 682 }
@@ -464,26 +683,15 @@
464 683
465 684 private function post_drop_table( $dbs, $tbl ) {
466 685 global $wpdb;
467 686 $suppress = $wpdb->suppress_errors( true );
687 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders, WordPress.DB.PreparedSQLPlaceholders.UnquotedComplexPlaceholder -- plugin table
468 688 // Table settings...
469 - $wpdb->query( $wpdb->prepare(
470 - 'delete from `%1s` where wpda_schema_name = %s and wpda_table_name = %s ',
471 - // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders
472 - array(WPDA::remove_backticks( WPDA_Table_Settings_Model::get_base_table_name() ), $dbs, $tbl)
473 - ) );
689 + $wpdb->query( $wpdb->prepare( 'delete from `%1s` where wpda_schema_name = %s and wpda_table_name = %s ', array(WPDA::remove_backticks( WPDA_Table_Settings_Model::get_base_table_name() ), $dbs, $tbl) ) );
474 690 // WordPress media library columns...
475 - $wpdb->query( $wpdb->prepare(
476 - 'delete from `%1s` where media_schema_name = %s and media_table_name = %s ',
477 - // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders
478 - array(WPDA::remove_backticks( WPDA_Media_Model::get_base_table_name() ), $dbs, $tbl)
479 - ) );
691 + $wpdb->query( $wpdb->prepare( 'delete from `%1s` where media_schema_name = %s and media_table_name = %s ', array(WPDA::remove_backticks( WPDA_Media_Model::get_base_table_name() ), $dbs, $tbl) ) );
480 692 // Data menus...
481 - $wpdb->query( $wpdb->prepare(
482 - 'delete from `%1s` where menu_schema_name = %s and menu_table_name = %s ',
483 - // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders
484 - array(WPDA::remove_backticks( WPDA_User_Menus_Model::get_base_table_name() ), $dbs, $tbl)
485 - ) );
693 + $wpdb->query( $wpdb->prepare( 'delete from `%1s` where menu_schema_name = %s and menu_table_name = %s ', array(WPDA::remove_backticks( WPDA_User_Menus_Model::get_base_table_name() ), $dbs, $tbl) ) );
486 694 $wpdb->suppress_errors( $suppress );
487 695 }
488 696
489 697 private function import( $file_name, $dbs ) {
@@ -496,17 +704,21 @@
496 704 $errors = array();
497 705 global $wpdb;
498 706 $wpdadb = WPDADB::get_db_connection( $dbs );
499 707 if ( null === $wpdadb ) {
708 + // phpcs:disable WordPress.WP.I18n.MissingTranslatorsComment
500 709 return array(
501 710 'status' => 'error',
502 711 'msg' => sprintf( __( 'ERROR - Remote database %s not available', 'wp-data-access' ), esc_attr( $dbs ) ),
503 712 );
713 + // phpcs:enable WordPress.WP.I18n.MissingTranslatorsComment
504 714 }
505 715 $suppress = $wpdadb->suppress_errors( true );
506 716 if ( false !== $this->file_pointer ) {
507 717 while ( !feof( $this->file_pointer ) ) {
718 + // phpcs:disable WordPress.WP.AlternativeFunctions.file_system_operations_fread
508 719 $this->file_content .= fread( $this->file_pointer, 4096 );
720 + // phpcs:enable WordPress.WP.AlternativeFunctions.file_system_operations_fread
509 721 // Replace WP prefix and WPDA prefix.
510 722 $this->file_content = str_replace( '{wp_schema}', $wpdb->dbname, $this->file_content );
511 723 $this->file_content = str_replace( '{wp_prefix}', $wpdb->prefix, $this->file_content );
512 724 $this->file_content = str_replace( '{wpda_prefix}', 'wpda', $this->file_content );
@@ -536,8 +748,9 @@
536 748 }
537 749 }
538 750 $wpdadb->suppress_errors( $suppress );
539 751 // Process file content.
752 + // phpcs:disable WordPress.WP.I18n.MissingTranslatorsComment
540 753 if ( 0 < count( $errors ) ) {
541 754 return array(
542 755 'status' => 'error',
543 756 'msg' => sprintf( __( 'Import `%s` failed [check import file]', 'wp-data-access' ), $file_name ),
@@ -550,7 +763,8 @@
550 763 'msg' => sprintf( __( 'Import `%s` completed succesfully', 'wp-data-access' ), $file_name ),
551 764 'errors' => $errors,
552 765 );
553 766 }
767 + // phpcs:enable WordPress.WP.I18n.MissingTranslatorsComment
554 768 }
555 769
556 770 }