product_id = $product_id; } /** * Initiate an existing installation state. * * @param int $product_id The product ID. * @param string $idempotency_key The idempotency key. * @param string $last_step_name The last step name. * @param string $last_step_status The last step status. * @param string $last_step_error The last step error. * @param int $started_date The timestamp of the installation start. * @return WC_WCCOM_Site_Installation_State The instance. */ public static function initiate_existing( $product_id, $idempotency_key, $last_step_name, $last_step_status, $last_step_error, $started_date ) { $instance = new self( $product_id ); $instance->idempotency_key = $idempotency_key; $instance->last_step_name = $last_step_name; $instance->last_step_status = $last_step_status; $instance->last_step_error = $last_step_error; $instance->started_date = $started_date; return $instance; } /** * Initiate a new installation state. * * @param init $product_id The product ID. * @param string $idempotency_key The idempotency key. * @return WC_WCCOM_Site_Installation_State The instance. */ public static function initiate_new( $product_id, $idempotency_key ) { $instance = new self( $product_id ); $instance->idempotency_key = $idempotency_key; $instance->started_date = time(); return $instance; } /** * Get the product ID. * * @return string */ public function get_product_id() { return $this->product_id; } /** * Get the idempotency key. * * @return string */ public function get_idempotency_key() { return $this->idempotency_key; } /** * Get the timestamp of the installation start. * * @return int */ public function get_last_step_name() { return $this->last_step_name; } /** * Get the last step status. * * @return string */ public function get_last_step_status() { return $this->last_step_status; } /** * Get the last step error. * * @return int */ public function get_last_step_error() { return $this->last_step_error; } /** * Initiate a step. * * @param string $step_name Step name. * @return void */ public function initiate_step( $step_name ) { $this->last_step_name = $step_name; $this->last_step_status = self::STEP_STATUS_IN_PROGRESS; } /** * Capture a successful installation of a step. * * @param string $step_name The step name. */ public function complete_step( $step_name ) { $this->last_step_name = $step_name; $this->last_step_status = self::STEP_STATUS_COMPLETED; } /** * Capture an installation failure. * * @param string $step_name The step name. * @param string $error_code The error code. */ public function capture_failure( $step_name, $error_code ) { $this->last_step_name = $step_name; $this->last_step_error = $error_code; $this->last_step_status = self::STEP_STATUS_FAILED; } /** * Get the product type. * * @return string */ public function get_product_type() { return $this->product_type; } /** * Set the product type. * * @param string $product_type The product type. */ public function set_product_type( $product_type ) { $this->product_type = $product_type; } /** * Get the product name. * * @return string */ public function get_product_name() { return $this->product_name; } /** * Set the product name. * * @param string $product_name The product name. */ public function set_product_name( $product_name ) { $this->product_name = $product_name; } /** * Get the download URL. * * @return string */ public function get_download_url() { return $this->download_url; } /** * Set the download URL. * * @param string $download_url The download URL. */ public function set_download_url( $download_url ) { $this->download_url = $download_url; } /** * Get the path to the downloaded file. * * @return string */ public function get_download_path() { return $this->download_path; } /** * Set the path to the downloaded file. * * @param string $download_path The path to the downloaded file. */ public function set_download_path( $download_path ) { $this->download_path = $download_path; } /** * Get the path to the unpacked file. * * @return string */ public function get_unpacked_path() { return $this->unpacked_path; } /** * Set the path to the unpacked file. * * @param string $unpacked_path The path to the unpacked file. */ public function set_unpacked_path( $unpacked_path ) { $this->unpacked_path = $unpacked_path; } /** * Get the path to the installed file. * * @return string */ public function get_installed_path() { return $this->installed_path; } /** * Set the path to the installed file. * * @param string $installed_path The path to the installed file. */ public function set_installed_path( $installed_path ) { $this->installed_path = $installed_path; } /** * Get the plugin info for the already installed plugin. * * @return array */ public function get_already_installed_plugin_info() { return $this->already_installed_plugin_info; } /** * Set the plugin info for the already installed plugin. * * @param array $plugin_info The plugin info. */ public function set_already_installed_plugin_info( $plugin_info ) { $this->already_installed_plugin_info = $plugin_info; } /** * Get the timestamp of the installation start. * * @return int */ public function get_started_date() { return $this->started_date; } }