WC_WCCOM_Site_Installation_Step_Move_Product{}└─ WC_WCCOM_Site_Installation_Step
WC_WCCOM_Site_Installation_Step_Move_Product class
No Hooks.
Usage
$WC_WCCOM_Site_Installation_Step_Move_Product = new WC_WCCOM_Site_Installation_Step_Move_Product(); // use class methods
Methods
- public __construct( $state )
- public run()
- protected maybe_connect_theme()
WC_WCCOM_Site_Installation_Step_Move_Product{} WC WCCOM Site Installation Step Move Product{} code WC 10.6.2
class WC_WCCOM_Site_Installation_Step_Move_Product implements WC_WCCOM_Site_Installation_Step {
/**
* The current installation state.
*
* @var WC_WCCOM_Site_Installation_State
*/
protected $state;
/**
* Constructor.
*
* @param array $state The current installation state.
*/
public function __construct( $state ) {
$this->state = $state;
}
/**
* Run the step installation process.
*/
public function run() {
$upgrader = WC_WCCOM_Site_Installer::get_wp_upgrader();
$destination = 'plugin' === $this->state->get_product_type()
? WP_PLUGIN_DIR
: get_theme_root();
$package = array(
'source' => $this->state->get_unpacked_path(),
'destination' => $destination,
'clear_working' => true,
'hook_extra' => array(
'type' => $this->state->get_product_type(),
'action' => 'install',
),
);
$result = $upgrader->install_package( $package );
/**
* If install package returns error 'folder_exists' treat as success.
*/
if ( is_wp_error( $result ) && array_key_exists( 'folder_exists', $result->errors ) ) {
$existing_folder_path = $result->error_data['folder_exists'];
$plugin_info = WC_WCCOM_Site_Installer::get_plugin_info( $existing_folder_path );
$this->state->set_installed_path( $existing_folder_path );
$this->state->set_already_installed_plugin_info( $plugin_info );
$this->maybe_connect_theme();
return $this->state;
}
if ( ! is_wp_error( $result ) ) {
$this->maybe_connect_theme();
}
$this->state->set_installed_path( $result['destination'] );
return $this->state;
}
/**
* Connect to wccom if installing a theme
*
* @return void
*/
protected function maybe_connect_theme() {
if ( 'theme' !== $this->state->get_product_type() ) {
return;
}
WC_Helper::connect_theme( $this->state->get_product_id() );
}
}