Skip to content

Commit 7041fee

Browse files
committed
Add S3 opt support to import_wp2static_options
Only the core_options table had a blob_value column, so it was necessary to know which columns to query. We check if the option_spec has an array type which is the only type that uses blob_value, and we only query the blob_value column in that case.
1 parent 68fe3ce commit 7041fee

2 files changed

Lines changed: 81 additions & 29 deletions

File tree

src/CLI.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -722,12 +722,19 @@ public function import_wp2static_options( array $args, array $assoc_args ): void
722722
foreach ( Options::optionSpecs() as $option_spec ) {
723723
Options::importFromWP2Static( $option_spec );
724724
}
725+
foreach ( S3\S3Options::optionSpecs() as $option_spec ) {
726+
Options::importFromWP2Static( $option_spec );
727+
}
725728
return;
726729
}
727730

728731
foreach ( $args as $option_name ) {
729732
$option_spec = Options::optionSpecs()[ $option_name ] ?? null;
730733

734+
if ( ! $option_spec ) {
735+
$option_spec = S3\S3Options::optionSpecs()[ $option_name ] ?? null;
736+
}
737+
731738
if ( ! $option_spec ) {
732739
WP_CLI::error(
733740
'Unknown option: ' . $option_name

src/Options.php

Lines changed: 74 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -763,41 +763,86 @@ public static function importFromWP2Static(
763763
): void {
764764
global $wpdb;
765765

766-
$wp2static_table_name = $wpdb->prefix . 'wp2static_core_options';
766+
if ( $option_spec->wp2static_table ) {
767+
$wp2static_table_name = $wpdb->prefix . $option_spec->wp2static_table;
768+
} else {
769+
$wp2static_table_name = $wpdb->prefix . 'wp2static_core_options';
770+
}
767771

768-
$wp2static_option = $wpdb->get_row(
769-
$wpdb->prepare(
770-
"SELECT value, blob_value FROM $wp2static_table_name WHERE name = %s;",
771-
$option_spec->name
772-
)
773-
);
772+
$wp2static_name = $option_spec->wp2static_name ?? $option_spec->name;
774773

775-
if ( ! $wp2static_option ) {
776-
WsLog::l( "Option $option_spec->name not found in WP2Static options" );
777-
return;
774+
$blob = false;
775+
if ( $option_spec->type === 'array' ) {
776+
$blob = true;
778777
}
779778

780-
$opt = new OptionData(
781-
$option_spec,
782-
$wp2static_option->blob_value,
783-
$wp2static_option->value,
784-
);
779+
if ( $blob ) {
785780

786-
WsLog::l(
787-
"Imported option $option_spec->name from WP2Static" .
788-
'with value: ' . $opt->value .
789-
' and blob value: ' . $opt->blob_value
790-
);
781+
$wp2static_option = $wpdb->get_row(
782+
$wpdb->prepare(
783+
"SELECT value, blob_value FROM $wp2static_table_name WHERE name = %s;",
784+
$wp2static_name
785+
)
786+
);
791787

792-
$table_name = self::getTableName();
788+
if ( ! $wp2static_option ) {
789+
WsLog::l( "Option $option_spec->name not found in WP2Static options" );
790+
return;
791+
}
793792

794-
$wpdb->update(
795-
$table_name,
796-
[
797-
'blob_value' => $opt->blob_value,
798-
'value' => $opt->value,
799-
],
800-
[ 'name' => $option_spec->name ]
801-
);
793+
$opt = new OptionData(
794+
$option_spec,
795+
$wp2static_option->blob_value,
796+
$wp2static_option->value,
797+
);
798+
799+
WsLog::l(
800+
"Imported option $option_spec->name from WP2Static" .
801+
' with value: ' . $opt->value .
802+
' and blob value: ' . $opt->blob_value
803+
);
804+
805+
$table_name = self::getTableName();
806+
807+
$wpdb->update(
808+
$table_name,
809+
[
810+
'blob_value' => $opt->blob_value,
811+
'value' => $opt->value,
812+
],
813+
[ 'name' => $option_spec->name ]
814+
);
815+
} else {
816+
$wp2static_option = $wpdb->get_row(
817+
$wpdb->prepare(
818+
"SELECT value FROM $wp2static_table_name WHERE name = %s;",
819+
$wp2static_name
820+
)
821+
);
822+
823+
if ( ! $wp2static_option ) {
824+
WsLog::l( "Option $option_spec->name not found in WP2Static options" );
825+
return;
826+
}
827+
828+
$opt = new OptionData(
829+
$option_spec,
830+
null,
831+
$wp2static_option->value,
832+
);
833+
834+
WsLog::l(
835+
"Imported option $option_spec->name from WP2Static" .
836+
' with value: ' . $opt->value
837+
);
838+
839+
$table_name = self::getTableName();
840+
841+
$wpdb->update(
842+
$table_name,
843+
[ 'value' => $opt->value ],
844+
[ 'name' => $option_spec->name ]
845+
);
846+
}
802847
}
803848
}

0 commit comments

Comments
 (0)