WC_WCCOM_Site_Installation_State_Storage{}
WC_WCCOM_Site_Installation_State_Storage class
No Hooks.
Usage
$WC_WCCOM_Site_Installation_State_Storage = new WC_WCCOM_Site_Installation_State_Storage(); // use class methods
Methods
- public static delete_state( WC_WCCOM_Site_Installation_State $state )
- public static get_state( $product_id )
- protected static get_storage_key( $product_id )
- public static save_state( WC_WCCOM_Site_Installation_State $state )
WC_WCCOM_Site_Installation_State_Storage{} WC WCCOM Site Installation State Storage{} code WC 9.4.2
class WC_WCCOM_Site_Installation_State_Storage { /** * Get state from storage. * * @param int $product_id The product ID. * @return WC_WCCOM_Site_Installation_State|null */ public static function get_state( $product_id ) : ?WC_WCCOM_Site_Installation_State { $storage_key = self::get_storage_key( $product_id ); $data = get_option( $storage_key ); if ( ! is_array( $data ) ) { return null; } $installation_state = WC_WCCOM_Site_Installation_State::initiate_existing( $product_id, $data['idempotency_key'], $data['last_step_name'], $data['last_step_status'], $data['last_step_error'], $data['started_date'] ); $installation_state->set_product_type( $data['product_type'] ?? null ); $installation_state->set_product_name( $data['product_name'] ?? null ); $installation_state->set_download_url( $data['download_url'] ?? null ); $installation_state->set_download_path( $data['download_path'] ?? null ); $installation_state->set_unpacked_path( $data['unpacked_path'] ?? null ); $installation_state->set_installed_path( $data['installed_path'] ?? null ); $installation_state->set_already_installed_plugin_info( $data['already_installed_plugin_info'] ?? null ); return $installation_state; } /** * Save state to storage. * * @param WC_WCCOM_Site_Installation_State $state The state to save. * @return bool */ public static function save_state( WC_WCCOM_Site_Installation_State $state ) : bool { $storage_key = self::get_storage_key( $state->get_product_id() ); return update_option( $storage_key, array( 'product_id' => $state->get_product_id(), 'idempotency_key' => $state->get_idempotency_key(), 'last_step_name' => $state->get_last_step_name(), 'last_step_status' => $state->get_last_step_status(), 'last_step_error' => $state->get_last_step_error(), 'product_type' => $state->get_product_type(), 'product_name' => $state->get_product_name(), 'download_url' => $state->get_download_url(), 'download_path' => $state->get_download_path(), 'unpacked_path' => $state->get_unpacked_path(), 'installed_path' => $state->get_installed_path(), 'already_installed_plugin_info' => $state->get_already_installed_plugin_info(), 'started_date' => $state->get_started_date(), ) ); } /** * Delete state from storage. * * @param WC_WCCOM_Site_Installation_State $state The state to delete. * @return bool */ public static function delete_state( WC_WCCOM_Site_Installation_State $state ) : bool { $storage_key = self::get_storage_key( $state->get_product_id() ); return delete_option( $storage_key ); } /** * Get the storage key for a product ID. * * @param int $product_id The product ID. * @return string */ protected static function get_storage_key( $product_id ) : string { return sprintf( 'wccom-product-installation-state-%d', $product_id ); } }