2026-03-27 11:54:51 +00:00

79 lines
2.2 KiB
PHP

<?php
/**
* Run SSA logic with WP_CLI.
*/
class SSA_Cli_Commands {
/**
* Import a SSA export file.
*
* ## OPTIONS
*
* <file>
* : The absolute path to the export file to be imported.
*
* ## EXAMPLES
*
* wp ssa import https://test-site.ssa.rocks/wp-content/uploads/ssa/export/ssa-export-2021-09-14T13-28-31.json
*
* @when after_wp_load
*/
public function import( $args, $assoc_args ) {
$path = isset( $args[0] ) ? $args[0] : null;
if ( empty( $path ) ) {
WP_CLI::error( __( 'Please provide a valid file path or URL.', 'simply-schedule-appointments' ) );
}
$is_url = filter_var( $path, FILTER_VALIDATE_URL );
if ( $is_url ) {
$import_content = wp_safe_remote_get( $path );
if ( is_wp_error( $import_content ) ) {
WP_CLI::error( __( 'There was an error retrieving the file.', 'simply-schedule-appointments' ) );
}
$json = wp_remote_retrieve_body( $import_content );
} else {
if ( ! file_exists( $path ) ) {
WP_CLI::error( __( 'Could not find the file.', 'simply-schedule-appointments' ) );
}
if ( ! is_readable( $path ) ) {
WP_CLI::error( __( 'Could not read the file.', 'simply-schedule-appointments' ) );
}
$json = file_get_contents( $path );
if ( empty( $json ) ) {
WP_CLI::error( __( 'The file is empty.', 'simply-schedule-appointments' ) );
}
}
WP_CLI::log( __( 'Importing...', 'simply-schedule-appointments' ) );
// verify if JSON data is valid.
$decoded = json_decode( $json, true );
if ( ! is_object( $decoded ) && ! is_array( $decoded ) ) {
WP_CLI::error( __( 'Invalid data format.', 'simply-schedule-appointments' ) );
}
if ( json_last_error() !== JSON_ERROR_NONE ) {
WP_CLI::error( __( 'Invalid data format.', 'simply-schedule-appointments' ) );
}
$import = ssa()->support_status->import_data( $decoded );
// if any error happens while trying to import appointment type data, return.
if ( is_wp_error( $import ) ) {
WP_CLI::error( $import->get_error_messages() );
}
// everything was successfully imported.
WP_CLI::success( __( 'Data successfully imported!', 'simply-schedule-appointments' ) );
}
}
$instance = new SSA_Cli_Commands();
WP_CLI::add_command( 'ssa', $instance );