<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
class WC_Advanced_Shipment_Tracking_Install {
/**
* Instance of this class.
*
* @var object Class Instance
*/
private static $instance;
public $table;
/**
* Initialize the main plugin function
*/
public function __construct() {
global $wpdb;
$this->table = $wpdb->prefix . 'woo_shippment_provider';
if ( is_multisite() ) {
if ( ! function_exists( 'is_plugin_active_for_network' ) ) {
require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
}
if ( is_plugin_active_for_network( 'woo-advanced-shipment-tracking/woocommerce-advanced-shipment-tracking.php' ) ) {
$main_blog_prefix = $wpdb->get_blog_prefix( BLOG_ID_CURRENT_SITE );
$this->table = $main_blog_prefix . 'woo_shippment_provider';
} else {
$this->table = $wpdb->prefix . 'woo_shippment_provider';
}
} else {
$this->table = $wpdb->prefix . 'woo_shippment_provider';
}
$this->init();
}
/**
* Get the class instance
*
* @return WC_Advanced_Shipment_Tracking_Install
*/
public static function get_instance() {
if ( null === self::$instance ) {
self::$instance = new self();
}
return self::$instance;
}
/*
* init from parent mail class
*/
public function init() {
add_action( 'init', array( $this, 'update_database_check' ) );
add_action( 'ast_insert_shipping_provider', array( $this, 'ast_insert_shipping_provider' ), 10, 1 );
}
/**
* Define plugin activation function
*
* Create Table
*
* Insert data
*
*
*/
public function woo_shippment_tracking_install() {
// Add transient to trigger redirect.
set_transient( '_ast_activation_redirect', 1, 30 );
$this->ast_insert_shipping_providers();
$wc_ast_unclude_tracking_info = get_option( 'wc_ast_unclude_tracking_info' );
if ( empty( $wc_ast_unclude_tracking_info ) ) {
$data_array = array( 'completed' => 1, 'partial-shipped' => 1, 'updated-tracking' => 1 );
update_option( 'wc_ast_unclude_tracking_info', $data_array );
}
$wc_ast_show_orders_actions = get_option( 'wc_ast_show_orders_actions' );
if ( empty( $wc_ast_show_orders_actions ) ) {
$data_array = array( 'processing' => 1, 'completed' => 1, 'partial-shipped' => 1, 'updated-tracking' => 1 );
update_option( 'wc_ast_show_orders_actions', $data_array );
}
update_option( 'wc_advanced_shipment_tracking', '3.21' );
}
/*
* function for create shipping provider table
*/
public function create_shippment_tracking_table() {
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $this->table (
id mediumint(9) NOT NULL AUTO_INCREMENT,
provider_name varchar(500) DEFAULT '' NOT NULL,
api_provider_name text NULL DEFAULT NULL,
custom_provider_name text NULL DEFAULT NULL,
paypal_slug text NULL DEFAULT NULL,
ts_slug text NULL DEFAULT NULL,
provider_url varchar(500) DEFAULT '' NULL,
shipping_country varchar(45) DEFAULT '' NULL,
shipping_country_name varchar(45) DEFAULT '' NULL,
shipping_default tinyint(4) NULL DEFAULT '0',
custom_thumb_id int(11) NOT NULL DEFAULT '0',
display_in_order tinyint(4) NOT NULL DEFAULT '1',
trackship_supported int(11) NOT NULL DEFAULT '0',
sort_order int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
public function ast_insert_shipping_providers() {
global $wpdb;
if ( !$wpdb->query( $wpdb->prepare( 'show tables like %s', $this->table ) ) ) {
$this->create_shippment_tracking_table();
$this->update_shipping_providers();
} else {
$this->check_all_column_exist();
}
}
/*
* check if all column exist in shipping provider database
*/
public function check_all_column_exist() {
$db_update_need = false;
global $wpdb;
$row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '%1s' AND COLUMN_NAME = 'provider_name' ", $this->table ), ARRAY_A );
if ( ! $row ) {
$wpdb->query( $wpdb->prepare( "ALTER TABLE %1s ADD provider_name varchar(500) DEFAULT '' NOT NULL AFTER id", $this->table ) );
$db_update_need = true;
}
$row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '%1s' AND COLUMN_NAME = 'api_provider_name' ", $this->table ), ARRAY_A );
if ( ! $row ) {
$wpdb->query( $wpdb->prepare( 'ALTER TABLE %1s ADD api_provider_name text NULL DEFAULT NULL AFTER provider_name', $this->table ) );
$db_update_need = true;
}
$row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '%1s' AND COLUMN_NAME = 'custom_provider_name' ", $this->table ), ARRAY_A );
if ( ! $row ) {
$wpdb->query( $wpdb->prepare( 'ALTER TABLE %1s ADD custom_provider_name text NULL DEFAULT NULL AFTER api_provider_name', $this->table ) );
$db_update_need = true;
}
$row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '%1s' AND COLUMN_NAME = 'paypal_slug' ", $this->table ), ARRAY_A );
if ( ! $row ) {
$wpdb->query( $wpdb->prepare( 'ALTER TABLE %1s ADD paypal_slug text NULL DEFAULT NULL AFTER custom_provider_name', $this->table ) );
$db_update_need = true;
}
$row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '%1s' AND COLUMN_NAME = 'ts_slug' ", $this->table ), ARRAY_A );
if ( ! $row ) {
$wpdb->query( $wpdb->prepare( 'ALTER TABLE %1s ADD ts_slug text NULL DEFAULT NULL AFTER paypal_slug', $this->table ) );
$db_update_need = true;
}
$row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '%1s' AND COLUMN_NAME = 'provider_url' ", $this->table ), ARRAY_A );
if ( ! $row ) {
$wpdb->query( $wpdb->prepare( "ALTER TABLE %1s ADD provider_url varchar(500) DEFAULT '' NULL AFTER ts_slug", $this->table ) );
$db_update_need = true;
}
$row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '%1s' AND COLUMN_NAME = 'shipping_country' ", $this->table ), ARRAY_A );
if ( ! $row ) {
$wpdb->query( $wpdb->prepare( "ALTER TABLE %1s ADD shipping_country varchar(45) DEFAULT '' NULL AFTER provider_url", $this->table ) );
$db_update_need = true;
}
$row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '%1s' AND COLUMN_NAME = 'shipping_country_name' ", $this->table ), ARRAY_A );
if ( ! $row ) {
$wpdb->query( $wpdb->prepare( "ALTER TABLE %1s ADD shipping_country_name varchar(45) DEFAULT '' NULL AFTER shipping_country", $this->table ) );
$db_update_need = true;
}
$row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '%1s' AND COLUMN_NAME = 'shipping_default' ", $this->table ), ARRAY_A );
if ( ! $row ) {
$wpdb->query( $wpdb->prepare( "ALTER TABLE %1s ADD shipping_default tinyint(4) NOT NULL DEFAULT '0' AFTER shipping_country_name", $this->table ) );
$db_update_need = true;
}
$row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '%1s' AND COLUMN_NAME = 'custom_thumb_id' ", $this->table ), ARRAY_A );
if ( ! $row ) {
$wpdb->query( $wpdb->prepare( "ALTER TABLE %1s ADD custom_thumb_id int(11) NOT NULL DEFAULT '0' AFTER shipping_default", $this->table ) );
$db_update_need = true;
}
$row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '%1s' AND COLUMN_NAME = 'display_in_order' ", $this->table ), ARRAY_A );
if ( ! $row ) {
$wpdb->query( $wpdb->prepare( "ALTER TABLE %1s ADD display_in_order tinyint(4) NOT NULL DEFAULT '1' AFTER custom_thumb_id", $this->table ) );
$db_update_need = true;
}
$row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '%1s' AND COLUMN_NAME = 'trackship_supported' ", $this->table ), ARRAY_A );
if ( ! $row ) {
$wpdb->query( $wpdb->prepare( "ALTER TABLE %1s ADD trackship_supported int(11) NOT NULL DEFAULT '0' AFTER display_in_order", $this->table ) );
$db_update_need = true;
}
$row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '%1s' AND COLUMN_NAME = 'sort_order' ", $this->table ), ARRAY_A );
if ( ! $row ) {
$wpdb->query( $wpdb->prepare( "ALTER TABLE %1s ADD sort_order int(11) NOT NULL DEFAULT '0' AFTER trackship_supported", $this->table ) );
$db_update_need = true;
}
if ( $db_update_need ) {
$this->update_shipping_providers();
}
}
/*
* database update
*/
public function update_database_check() {
if ( is_admin() ) {
if ( version_compare( get_option( 'wc_advanced_shipment_tracking' ), '3.21', '<') ) {
$this->check_all_column_exist();
update_option( 'wc_advanced_shipment_tracking', '3.21');
}
if ( version_compare( get_option( 'wc_advanced_shipment_tracking' ), '3.22', '<' ) ) {
$upload_dir = wp_upload_dir();
$ast_directory = $upload_dir['baseurl'] . '/ast-shipping-providers/';
$tracking_items[] = array(
'tracking_provider' => 'usps',
'custom_tracking_provider' => '',
'formatted_tracking_provider' => 'USPS',
'tracking_provider_image' => $ast_directory . 'usps.png',
'formatted_tracking_link' => 'https://tools.usps.com/go/TrackConfirmAction_input?qtc_tLabels1=112123113',
'ast_tracking_link' => 'https://tools.usps.com/go/TrackConfirmAction_input?qtc_tLabels1=112123113',
'tracking_number' => '112123113',
'date_shipped' => strtotime( gmdate( 'Y-m-d' ) ),
);
update_post_meta( 1, '_wc_shipment_tracking_items', $tracking_items );
update_option( 'wc_advanced_shipment_tracking', '3.22');
}
if ( version_compare( get_option( 'wc_advanced_shipment_tracking', '1.0' ), '3.23', '<' ) ) {
$multi_checkbox_data = get_option( 'wc_ast_unclude_tracking_info' );
$data_array = array( 'partial-shipped' => 1, 'completed' => 1 );
if ( $multi_checkbox_data ) {
$data_array = array_merge( $multi_checkbox_data, $data_array );
}
update_option( 'wc_ast_unclude_tracking_info', $data_array );
update_option( 'wc_advanced_shipment_tracking', '3.23' );
}
if ( version_compare( get_option( 'wc_advanced_shipment_tracking', '1.0' ), '3.24', '<' ) ) {
$tracking_info_settings = get_option( 'tracking_info_settings', array() );
$fluid_tracker_type = !empty($tracking_info_settings['fluid_tracker_type']) ? $tracking_info_settings['fluid_tracker_type'] : 'progress_bar';
if ( 'hide' == $fluid_tracker_type ) {
$tracking_info_settings['fluid_display_shipped_header'] = 0;
$tracking_info_settings['fluid_tracker_type'] = 'progress_bar';
update_option( 'tracking_info_settings', $tracking_info_settings );
}
update_option( 'wc_advanced_shipment_tracking', '3.24' );
}
if ( version_compare( get_option( 'wc_advanced_shipment_tracking', '1.0' ), '4.0', '<' ) ) {
$this->ast_insert_shipping_providers();
update_option( 'wc_advanced_shipment_tracking', '4.0' );
}
if ( version_compare( get_option( 'wc_advanced_shipment_tracking', '1.0' ), '4.1', '<' ) ) {
$this->insert_shipping_carrier_image();
update_option( 'wc_advanced_shipment_tracking', '4.1' );
}
if ( version_compare( get_option( 'wc_advanced_shipment_tracking', '1.0' ), '4.2', '<' ) ) {
if ( get_option('ast_option_migrated') == false ) {
//get old general options
$wc_ast_show_orders_actions = get_option( 'wc_ast_show_orders_actions' );
$wc_ast_unclude_tracking_info = get_option( 'wc_ast_unclude_tracking_info' );
$wc_ast_status_shipped = get_option( 'wc_ast_status_shipped' );
$wc_ast_status_partial_shipped = get_option( 'wc_ast_status_partial_shipped' );
$wc_ast_status_partial_shipped_label_color = get_option( 'wc_ast_status_partial_shipped_label_color' );
$wc_ast_status_partial_shipped_label_font_color = get_option( 'wc_ast_status_partial_shipped_label_font_color' );
$wc_ast_status_delivered = get_option( 'wc_ast_status_delivered' );
$wc_ast_api_date_format = get_option( 'wc_ast_api_date_format' );
$wcast_enable_partial_shipped_email = get_option( 'wcast_enable_partial_shipped_email' );
$wc_ast_status_label_color = get_option( 'wc_ast_status_label_color' );
$wc_ast_status_label_font_color = get_option( 'wc_ast_status_label_font_color' );
$autocomplete_order_tpi = get_option( 'autocomplete_order_tpi' );
//update new general options
update_ast_settings( 'ast_general_settings', 'wc_ast_show_orders_actions', $wc_ast_show_orders_actions );
update_ast_settings( 'ast_general_settings', 'wc_ast_unclude_tracking_info', $wc_ast_unclude_tracking_info );
update_ast_settings( 'ast_general_settings', 'wc_ast_status_shipped', $wc_ast_status_shipped );
update_ast_settings( 'ast_general_settings', 'wc_ast_status_partial_shipped', $wc_ast_status_partial_shipped );
update_ast_settings( 'ast_general_settings', 'wc_ast_status_partial_shipped_label_color', $wc_ast_status_partial_shipped_label_color );
update_ast_settings( 'ast_general_settings', 'wc_ast_status_partial_shipped_label_font_color', $wc_ast_status_partial_shipped_label_font_color );
update_ast_settings( 'ast_general_settings', 'wc_ast_status_delivered', $wc_ast_status_delivered );
update_ast_settings( 'ast_general_settings', 'wc_ast_api_date_format', $wc_ast_api_date_format );
update_ast_settings( 'ast_general_settings', 'wcast_enable_partial_shipped_email', $wcast_enable_partial_shipped_email );
update_ast_settings( 'ast_general_settings', 'wc_ast_status_label_color', $wc_ast_status_label_color );
update_ast_settings( 'ast_general_settings', 'wc_ast_status_label_font_color', $wc_ast_status_label_font_color );
update_ast_settings( 'ast_general_settings', 'autocomplete_order_tpi', $autocomplete_order_tpi );
//delete old general options
delete_option( 'wc_ast_show_orders_actions' );
delete_option( 'wc_ast_unclude_tracking_info' );
delete_option( 'wc_ast_status_shipped' );
delete_option( 'wc_ast_status_partial_shipped' );
delete_option( 'wc_ast_status_partial_shipped_label_color' );
delete_option( 'wc_ast_status_partial_shipped_label_font_color' );
delete_option( 'wc_ast_status_delivered' );
delete_option( 'wc_ast_api_date_format' );
delete_option( 'wcast_enable_partial_shipped_email' );
delete_option( 'wc_ast_status_label_color' );
delete_option( 'wc_ast_status_label_font_color' );
delete_option( 'autocomplete_order_tpi' );
update_option('ast_option_migrated', true);
update_option( 'wc_advanced_shipment_tracking', '4.2' );
} else {
update_option( 'wc_advanced_shipment_tracking', '4.2' );
}
}
if ( version_compare( get_option( 'wc_advanced_shipment_tracking', '4.2' ), '4.3', '<' ) ) {
//get old general options
$wc_ast_status_updated_tracking = get_option( 'wc_ast_status_updated_tracking', 0 );
$wc_ast_status_updated_tracking_label_color = get_option( 'wc_ast_status_updated_tracking_label_color', '#23a2dd' );
$wc_ast_status_updated_tracking_label_font_color = get_option( 'wc_ast_status_updated_tracking_label_font_color', '#fff' );
$wcast_enable_updated_tracking_email = get_option( 'wcast_enable_updated_tracking_email', 0 );
//update new general options
update_ast_settings( 'ast_general_settings', 'wc_ast_status_updated_tracking', $wc_ast_status_updated_tracking );
update_ast_settings( 'ast_general_settings', 'wc_ast_status_updated_tracking_label_color', $wc_ast_status_updated_tracking_label_color );
update_ast_settings( 'ast_general_settings', 'wc_ast_status_updated_tracking_label_font_color', $wc_ast_status_updated_tracking_label_font_color );
update_ast_settings( 'ast_general_settings', 'wcast_enable_updated_tracking_email', $wcast_enable_updated_tracking_email );
//delete old general options
delete_option( 'wc_ast_status_updated_tracking' );
delete_option( 'wc_ast_status_updated_tracking_label_color' );
delete_option( 'wc_ast_status_updated_tracking_label_font_color' );
delete_option( 'wcast_enable_updated_tracking_email' );
update_option( 'wc_advanced_shipment_tracking', '4.3' );
}
if ( version_compare( get_option( 'wc_advanced_shipment_tracking', '4.3' ), '4.4', '<' ) ) {
delete_option( 'ast_trackship_notice_ignore' );
delete_option( 'ast_pro_shipping_integration_notice_ignore' );
update_option( 'wc_advanced_shipment_tracking', '4.4' );
}
if ( version_compare( get_option( 'wc_advanced_shipment_tracking', '4.4' ), '4.5', '<' ) ) {
delete_option( 'zorem_return_update_ignore_385' );
update_option( 'wc_advanced_shipment_tracking', '4.5' );
}
}
}
/**
* Get providers list from trackship and update providers in database
*/
public function update_shipping_providers() {
as_schedule_single_action( time(), 'ast_insert_shipping_provider', array() );
}
/**
* Get providers list from trackship and update providers in database
*/
public function ast_insert_shipping_provider() {
global $wpdb;
$url = 'https://api.trackship.com/v1/shipping_carriers/all';
$resp = wp_remote_get( $url );
$WC_Countries = new WC_Countries();
$countries = $WC_Countries->get_countries();
$this->insert_shipping_carrier_image();
if ( is_array( $resp ) && ! is_wp_error( $resp ) ) {
$response = json_decode( $resp['body'], true );
$providers = $response['data'];
$default_shippment_providers = $wpdb->get_results( $wpdb->prepare( 'SELECT * FROM %1s WHERE shipping_default = 1', $this->table ) );
foreach ( $default_shippment_providers as $key => $val ) {
$shippment_providers[ $val->ts_slug ] = $val;
}
$providers_name = array();
foreach ( $providers as $key => $val ) {
$providers_name[ $val['slug'] ] = $val;
}
$n = 0;
foreach ( $providers as $provider ) {
$provider_name = $provider['shipping_provider'];
$provider_url = $provider['tracking_url'];
$shipping_country = $provider['shipping_country'];
if ( 'Global' == $provider['shipping_country'] ) {
$shipping_country_name = $provider['shipping_country'];
} else {
$shipping_country_name = $countries[ $provider['shipping_country'] ];
}
$ts_slug = $provider['slug'];
$trackship_supported = $provider['trackship_supported'];
$paypal_slug = $provider['paypal_slug'];
if ( isset( $shippment_providers[ $ts_slug ] ) ) {
$db_provider_name = $shippment_providers[ $ts_slug ]->provider_name;
$db_provider_url = $shippment_providers[$ts_slug]->provider_url;
$db_shipping_country = $shippment_providers[$ts_slug]->shipping_country;
$db_shipping_country_name = $shippment_providers[$ts_slug]->shipping_country_name;
$db_ts_slug = $shippment_providers[$ts_slug]->ts_slug;
$db_trackship_supported = $shippment_providers[$ts_slug]->trackship_supported;
$db_paypal_slug = $shippment_providers[$ts_slug]->paypal_slug;
if ( ( $db_provider_name != $provider_name ) || ( $db_provider_url != $provider_url ) || ( $db_shipping_country != $shipping_country ) || ( $db_shipping_country_name != $shipping_country_name ) || ( $db_ts_slug != $ts_slug ) || ( $db_trackship_supported != $trackship_supported ) || ( $db_paypal_slug != $paypal_slug ) ) {
if ( 'Global' == $shipping_country ) {
$shipping_country_name = $shipping_country;
} else {
$shipping_country_name = $countries[ $shipping_country ];
}
$data_array = array(
'provider_name' => $provider_name,
'ts_slug' => $ts_slug,
'provider_url' => $provider_url,
'shipping_country' => $shipping_country,
'shipping_country_name' => $shipping_country_name,
'trackship_supported' => $trackship_supported,
'paypal_slug' => $paypal_slug,
);
$where_array = array(
'ts_slug' => $ts_slug,
);
$wpdb->update( $this->table, $data_array, $where_array);
}
} else {
$display_in_order = 0;
if ( 'Global' == $shipping_country ) {
$shipping_country_name = $shipping_country;
} else {
$shipping_country_name = $countries[ $shipping_country ];
}
$data_array = array(
'shipping_country' => sanitize_text_field($shipping_country),
'shipping_country_name' => $shipping_country_name,
'provider_name' => sanitize_text_field($provider_name),
'ts_slug' => $ts_slug,
'provider_url' => sanitize_text_field($provider_url),
'display_in_order' => $display_in_order,
'shipping_default' => 1,
'trackship_supported' => sanitize_text_field( $trackship_supported ),
'paypal_slug' => sanitize_text_field( $paypal_slug ),
);
$wpdb->insert( $this->table, $data_array );
$n++;
}
}
foreach ( $default_shippment_providers as $db_provider ) {
if ( !isset( $providers_name[ $db_provider->ts_slug ] ) ) {
$where = array(
'ts_slug' => $db_provider->ts_slug,
'shipping_default' => 1
);
$wpdb->delete( $this->table, $where );
}
}
}
}
public function insert_shipping_carrier_image() {
// The URL of the zip file
$url = 'https://api.trackship.com/images/shipping-carriers/60x60.zip';
$version = date('YmdHis'); // Current date and time as version
$url_with_version = $url . '?v=' . $version;
$upload_dir = wp_upload_dir();
$ast_directory = $upload_dir['basedir'] . '/ast-shipping-providers';
$zipFilePath = $upload_dir['basedir'] . '/shipping-carriers.zip';
if ( !is_dir( $ast_directory ) ) {
wp_mkdir_p( $ast_directory );
}
// Download the zip file
$zipContent = file_get_contents($url_with_version);
// Save the zip file to the server
file_put_contents($zipFilePath, $zipContent);
if (class_exists('ZipArchive')) {
// Initialize ZipArchive
$zip = new ZipArchive();
// Open and extract the zip file
if ( $zip->open( $zipFilePath ) === true ) {
// Extract to the specified directory
$zip->extractTo($ast_directory);
$zip->close();
unlink($zipFilePath); // Delete the zip file after extraction
}
} else {
// ZipArchive isn't available, use PclZip
require_once(ABSPATH . 'wp-admin/includes/class-pclzip.php');
$archive = new PclZip($zipFilePath);
if ($archive->extract(PCLZIP_OPT_PATH, $ast_directory) != 0) {
unlink($zipFilePath); // Delete the zip file after extraction
}
}
}
}