Exemplo n.º 1
0
function woo_ce_tab_template($tab = '')
{
    if (!$tab) {
        $tab = 'overview';
    }
    // Store Exporter Deluxe
    $woo_cd_url = 'http://www.visser.com.au/woocommerce/plugins/exporter-deluxe/';
    $woo_cd_link = sprintf('<a href="%s" target="_blank">' . __('Store Exporter Deluxe', 'woo_ce') . '</a>', $woo_cd_url);
    $troubleshooting_url = 'http://www.visser.com.au/documentation/store-exporter-deluxe/';
    switch ($tab) {
        case 'overview':
            $skip_overview = woo_ce_get_option('skip_overview', false);
            break;
        case 'export':
            $export_type = sanitize_text_field(isset($_POST['dataset']) ? $_POST['dataset'] : woo_ce_get_option('last_export', 'product'));
            $types = array_keys(woo_ce_return_export_types());
            // Check if the default export type exists
            if (!in_array($export_type, $types)) {
                $export_type = 'product';
            }
            $products = woo_ce_return_count('product');
            $categories = woo_ce_return_count('category');
            $tags = woo_ce_return_count('tag');
            $brands = '999';
            $orders = '999';
            $customers = '999';
            $users = woo_ce_return_count('user');
            $coupons = '999';
            $attributes = '999';
            $subscriptions = '999';
            $product_vendors = '999';
            $commissions = '999';
            $shipping_classes = '999';
            add_action('woo_ce_export_options', 'woo_ce_export_options_export_format');
            if ($product_fields = woo_ce_get_product_fields()) {
                foreach ($product_fields as $key => $product_field) {
                    $product_fields[$key]['disabled'] = isset($product_field['disabled']) ? $product_field['disabled'] : 0;
                }
                add_action('woo_ce_export_product_options_before_table', 'woo_ce_products_filter_by_product_category');
                add_action('woo_ce_export_product_options_before_table', 'woo_ce_products_filter_by_product_tag');
                add_action('woo_ce_export_product_options_before_table', 'woo_ce_products_filter_by_product_brand');
                add_action('woo_ce_export_product_options_before_table', 'woo_ce_products_filter_by_product_vendor');
                add_action('woo_ce_export_product_options_before_table', 'woo_ce_products_filter_by_product_status');
                add_action('woo_ce_export_product_options_before_table', 'woo_ce_products_filter_by_product_type');
                add_action('woo_ce_export_product_options_before_table', 'woo_ce_products_filter_by_stock_status');
                add_action('woo_ce_export_product_options_after_table', 'woo_ce_product_sorting');
                add_action('woo_ce_export_options', 'woo_ce_products_upsells_formatting');
                add_action('woo_ce_export_options', 'woo_ce_products_crosssells_formatting');
                add_action('woo_ce_export_options', 'woo_ce_export_options_gallery_format');
                add_action('woo_ce_export_after_form', 'woo_ce_products_custom_fields');
            }
            if ($category_fields = woo_ce_get_category_fields()) {
                foreach ($category_fields as $key => $category_field) {
                    $category_fields[$key]['disabled'] = isset($category_field['disabled']) ? $category_field['disabled'] : 0;
                }
                add_action('woo_ce_export_category_options_after_table', 'woo_ce_category_sorting');
            }
            if ($tag_fields = woo_ce_get_tag_fields()) {
                foreach ($tag_fields as $key => $tag_field) {
                    $tag_fields[$key]['disabled'] = isset($tag_field['disabled']) ? $tag_field['disabled'] : 0;
                }
                add_action('woo_ce_export_tag_options_after_table', 'woo_ce_tag_sorting');
            }
            if ($brand_fields = woo_ce_get_brand_fields()) {
                foreach ($brand_fields as $key => $brand_field) {
                    $brand_fields[$key]['disabled'] = isset($brand_field['disabled']) ? $brand_field['disabled'] : 0;
                }
                add_action('woo_ce_export_brand_options_before_table', 'woo_ce_brand_sorting');
            }
            if ($order_fields = woo_ce_get_order_fields()) {
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_date');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_status');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_customer');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_billing_country');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_shipping_country');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_user_role');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_coupon');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_product');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_product_category');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_product_tag');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_product_brand');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_order_id');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_payment_gateway');
                add_action('woo_ce_export_order_options_before_table', 'woo_ce_orders_filter_by_shipping_method');
                add_action('woo_ce_export_order_options_after_table', 'woo_ce_order_sorting');
                add_action('woo_ce_export_options', 'woo_ce_orders_items_formatting');
                add_action('woo_ce_export_options', 'woo_ce_orders_max_order_items');
                add_action('woo_ce_export_options', 'woo_ce_orders_items_types');
                add_action('woo_ce_export_after_form', 'woo_ce_orders_custom_fields');
            }
            if ($customer_fields = woo_ce_get_customer_fields()) {
                add_action('woo_ce_export_customer_options_before_table', 'woo_ce_customers_filter_by_status');
                add_action('woo_ce_export_customer_options_before_table', 'woo_ce_customers_filter_by_user_role');
                add_action('woo_ce_export_after_form', 'woo_ce_customers_custom_fields');
            }
            if ($user_fields = woo_ce_get_user_fields()) {
                foreach ($user_fields as $key => $user_field) {
                    $user_fields[$key]['disabled'] = isset($user_field['disabled']) ? $user_field['disabled'] : 0;
                }
                add_action('woo_ce_export_user_options_after_table', 'woo_ce_user_sorting');
                add_action('woo_ce_export_after_form', 'woo_ce_users_custom_fields');
            }
            if ($coupon_fields = woo_ce_get_coupon_fields()) {
                add_action('woo_ce_export_coupon_options_before_table', 'woo_ce_coupon_sorting');
            }
            if ($subscription_fields = woo_ce_get_subscription_fields()) {
                add_action('woo_ce_export_subscription_options_before_table', 'woo_ce_subscriptions_filter_by_subscription_status');
                add_action('woo_ce_export_subscription_options_before_table', 'woo_ce_subscriptions_filter_by_subscription_product');
            }
            $product_vendor_fields = woo_ce_get_product_vendor_fields();
            if ($commission_fields = woo_ce_get_commission_fields()) {
                add_action('woo_ce_export_commission_options_before_table', 'woo_ce_commissions_filter_by_date');
                add_action('woo_ce_export_commission_options_before_table', 'woo_ce_commissions_filter_by_product_vendor');
                add_action('woo_ce_export_commission_options_before_table', 'woo_ce_commissions_filter_by_commission_status');
                add_action('woo_ce_export_commission_options_before_table', 'woo_ce_commission_sorting');
            }
            if ($shipping_class_fields = woo_ce_get_shipping_class_fields()) {
                add_action('woo_ce_export_shipping_class_options_after_table', 'woo_ce_shipping_class_sorting');
            }
            $attribute_fields = false;
            // Export modules
            $modules = woo_ce_modules_list();
            // Export options
            $limit_volume = woo_ce_get_option('limit_volume');
            $offset = woo_ce_get_option('offset');
            break;
        case 'fields':
            $export_type = isset($_GET['type']) ? sanitize_text_field($_GET['type']) : '';
            $types = array_keys(woo_ce_return_export_types());
            $fields = array();
            if (in_array($export_type, $types)) {
                if (has_filter('woo_ce_' . $export_type . '_fields', 'woo_ce_override_' . $export_type . '_field_labels')) {
                    remove_filter('woo_ce_' . $export_type . '_fields', 'woo_ce_override_' . $export_type . '_field_labels', 11);
                }
                if (function_exists(sprintf('woo_ce_get_%s_fields', $export_type))) {
                    $fields = call_user_func('woo_ce_get_' . $export_type . '_fields');
                }
                $labels = woo_ce_get_option($export_type . '_labels', array());
            }
            break;
        case 'archive':
            if (isset($_GET['deleted'])) {
                $message = __('Archived export has been deleted.', 'woo_ce');
                woo_ce_admin_notice($message);
            }
            if ($files = woo_ce_get_archive_files()) {
                foreach ($files as $key => $file) {
                    $files[$key] = woo_ce_get_archive_file($file);
                }
            }
            break;
        case 'settings':
            $export_filename = woo_ce_get_option('export_filename', '');
            // Default export filename
            if (empty($export_filename)) {
                $export_filename = 'woo-export_%dataset%-%date%.csv';
            }
            $delete_file = woo_ce_get_option('delete_file', 0);
            $timeout = woo_ce_get_option('timeout', 0);
            $encoding = woo_ce_get_option('encoding', 'UTF-8');
            $bom = woo_ce_get_option('bom', 1);
            $delimiter = woo_ce_get_option('delimiter', ',');
            $category_separator = woo_ce_get_option('category_separator', '|');
            $escape_formatting = woo_ce_get_option('escape_formatting', 'all');
            $date_format = woo_ce_get_option('date_format', 'd/m/Y');
            if ($date_format == 1 || $date_format == '') {
                $date_format = 'd/m/Y';
            }
            $file_encodings = function_exists('mb_list_encodings') ? mb_list_encodings() : false;
            add_action('woo_ce_export_settings_top', 'woo_ce_export_settings_quicklinks');
            add_action('woo_ce_export_settings_after', 'woo_ce_export_settings_csv');
            add_action('woo_ce_export_settings_after', 'woo_ce_export_settings_cron');
            break;
        case 'tools':
            // Product Importer Deluxe
            $woo_pd_url = 'http://www.visser.com.au/woocommerce/plugins/product-importer-deluxe/';
            $woo_pd_target = ' target="_blank"';
            if (function_exists('woo_pd_init')) {
                $woo_pd_url = add_query_arg(array('page' => 'woo_pd', 'tab' => null));
                $woo_pd_target = false;
            }
            // Store Toolkit
            $woo_st_url = 'http://www.visser.com.au/woocommerce/plugins/store-toolkit/';
            $woo_st_target = ' target="_blank"';
            if (function_exists('woo_st_admin_init')) {
                $woo_st_url = add_query_arg(array('page' => 'woo_st', 'tab' => null));
                $woo_st_target = false;
            }
            break;
    }
    if ($tab) {
        if (file_exists(WOO_CE_PATH . 'templates/admin/tabs-' . $tab . '.php')) {
            include_once WOO_CE_PATH . 'templates/admin/tabs-' . $tab . '.php';
        } else {
            $message = sprintf(__('We couldn\'t load the export template file <code>%s</code> within <code>%s</code>, this file should be present.', 'woo_ce'), 'tabs-' . $tab . '.php', WOO_CE_PATH . 'templates/admin/...');
            woo_ce_admin_notice_html($message, 'error');
            ob_start();
            ?>
<p><?php 
            _e('You can see this error for one of a few common reasons', 'woo_ce');
            ?>
:</p>
<ul class="ul-disc">
	<li><?php 
            _e('WordPress was unable to create this file when the Plugin was installed or updated', 'woo_ce');
            ?>
</li>
	<li><?php 
            _e('The Plugin files have been recently changed and there has been a file conflict', 'woo_ce');
            ?>
</li>
	<li><?php 
            _e('The Plugin file has been locked and cannot be opened by WordPress', 'woo_ce');
            ?>
</li>
</ul>
<p><?php 
            _e('Jump onto our website and download a fresh copy of this Plugin as it might be enough to fix this issue. If this persists get in touch with us.', 'woo_ce');
            ?>
</p>
<?php 
            ob_end_flush();
        }
    }
}
Exemplo n.º 2
0
function woo_ce_export_dataset($export_type = null, &$output = null)
{
    global $export;
    $separator = $export->delimiter;
    $export->columns = array();
    $export->total_rows = 0;
    $export->total_columns = 0;
    $troubleshooting_url = 'http://www.visser.com.au/documentation/store-exporter-deluxe/usage/';
    set_transient(WOO_CE_PREFIX . '_running', time(), woo_ce_get_option('timeout', MINUTE_IN_SECONDS));
    // Load up the fatal error notice if we 500 Internal Server Error (memory), hit a server timeout or encounter a fatal PHP error
    add_action('shutdown', 'woo_ce_fatal_error');
    // Drop in our content filters here
    add_filter('sanitize_key', 'woo_ce_sanitize_key');
    switch ($export_type) {
        // Products
        case 'product':
            $fields = woo_ce_get_product_fields('summary');
            if ($export->fields = array_intersect_assoc((array) $export->fields, $fields)) {
                foreach ($export->fields as $key => $field) {
                    $export->columns[] = woo_ce_get_product_field($key);
                }
            }
            $export->total_columns = $size = count($export->columns);
            $export->data_memory_start = woo_ce_current_memory_usage();
            if ($products = woo_ce_get_products($export->args)) {
                $export->total_rows = count($products);
                // Generate the export headers
                if (in_array($export->export_format, array('csv'))) {
                    for ($i = 0; $i < $size; $i++) {
                        if ($i == $size - 1) {
                            $output .= woo_ce_escape_csv_value($export->columns[$i], $export->delimiter, $export->escape_formatting) . "\n";
                        } else {
                            $output .= woo_ce_escape_csv_value($export->columns[$i], $export->delimiter, $export->escape_formatting) . $separator;
                        }
                    }
                }
                $weight_unit = get_option('woocommerce_weight_unit');
                $dimension_unit = get_option('woocommerce_dimension_unit');
                $height_unit = $dimension_unit;
                $width_unit = $dimension_unit;
                $length_unit = $dimension_unit;
                if (!empty($export->fields)) {
                    foreach ($products as $product) {
                        $product = woo_ce_get_product_data($product, $export->args);
                        foreach ($export->fields as $key => $field) {
                            if (isset($product->{$key})) {
                                if (is_array($field)) {
                                    foreach ($field as $array_key => $array_value) {
                                        if (!is_array($array_value)) {
                                            if (in_array($export->export_format, array('csv'))) {
                                                $output .= woo_ce_escape_csv_value($array_value, $export->delimiter, $export->escape_formatting);
                                            }
                                        }
                                    }
                                } else {
                                    if (in_array($export->export_format, array('csv'))) {
                                        $output .= woo_ce_escape_csv_value($product->{$key}, $export->delimiter, $export->escape_formatting);
                                    }
                                }
                            }
                            if (in_array($export->export_format, array('csv'))) {
                                $output .= $separator;
                            }
                        }
                        if (in_array($export->export_format, array('csv'))) {
                            $output = substr($output, 0, -1) . "\n";
                        }
                    }
                }
                unset($products, $product);
            }
            $export->data_memory_end = woo_ce_current_memory_usage();
            break;
            // Categories
        // Categories
        case 'category':
            $fields = woo_ce_get_category_fields('summary');
            if ($export->fields = array_intersect_assoc((array) $export->fields, $fields)) {
                foreach ($export->fields as $key => $field) {
                    $export->columns[] = woo_ce_get_category_field($key);
                }
            }
            $export->total_columns = $size = count($export->columns);
            $export->data_memory_start = woo_ce_current_memory_usage();
            $category_args = array('orderby' => isset($export->args['category_orderby']) ? $export->args['category_orderby'] : 'ID', 'order' => isset($export->args['category_order']) ? $export->args['category_order'] : 'ASC');
            if ($categories = woo_ce_get_product_categories($category_args)) {
                $export->total_rows = count($categories);
                // Generate the export headers
                if (in_array($export->export_format, array('csv'))) {
                    for ($i = 0; $i < $size; $i++) {
                        if ($i == $size - 1) {
                            $output .= woo_ce_escape_csv_value($export->columns[$i], $export->delimiter, $export->escape_formatting) . "\n";
                        } else {
                            $output .= woo_ce_escape_csv_value($export->columns[$i], $export->delimiter, $export->escape_formatting) . $separator;
                        }
                    }
                }
                if (!empty($export->fields)) {
                    foreach ($categories as $category) {
                        foreach ($export->fields as $key => $field) {
                            if (isset($category->{$key})) {
                                if (in_array($export->export_format, array('csv'))) {
                                    $output .= woo_ce_escape_csv_value($category->{$key}, $export->delimiter, $export->escape_formatting);
                                }
                            }
                            if (in_array($export->export_format, array('csv'))) {
                                $output .= $separator;
                            }
                        }
                        if (in_array($export->export_format, array('csv'))) {
                            $output = substr($output, 0, -1) . "\n";
                        }
                    }
                }
                unset($categories, $category);
            }
            $export->data_memory_end = woo_ce_current_memory_usage();
            break;
            // Tags
        // Tags
        case 'tag':
            $fields = woo_ce_get_tag_fields('summary');
            if ($export->fields = array_intersect_assoc((array) $export->fields, $fields)) {
                foreach ($export->fields as $key => $field) {
                    $export->columns[] = woo_ce_get_tag_field($key);
                }
            }
            $export->total_columns = $size = count($export->columns);
            $export->data_memory_start = woo_ce_current_memory_usage();
            $tag_args = array('orderby' => isset($export->args['tag_orderby']) ? $export->args['tag_orderby'] : 'ID', 'order' => isset($export->args['tag_order']) ? $export->args['tag_order'] : 'ASC');
            if ($tags = woo_ce_get_product_tags($tag_args)) {
                $export->total_rows = count($tags);
                // Generate the export headers
                if (in_array($export->export_format, array('csv'))) {
                    for ($i = 0; $i < $size; $i++) {
                        if ($i == $size - 1) {
                            $output .= woo_ce_escape_csv_value($export->columns[$i], $export->delimiter, $export->escape_formatting) . "\n";
                        } else {
                            $output .= woo_ce_escape_csv_value($export->columns[$i], $export->delimiter, $export->escape_formatting) . $separator;
                        }
                    }
                }
                if (!empty($export->fields)) {
                    foreach ($tags as $tag) {
                        foreach ($export->fields as $key => $field) {
                            if (isset($tag->{$key})) {
                                if (in_array($export->export_format, array('csv'))) {
                                    $output .= woo_ce_escape_csv_value($tag->{$key}, $export->delimiter, $export->escape_formatting);
                                }
                            }
                            if (in_array($export->export_format, array('csv'))) {
                                $output .= $separator;
                            }
                        }
                        if (in_array($export->export_format, array('csv'))) {
                            $output = substr($output, 0, -1) . "\n";
                        }
                    }
                }
                unset($tags, $tag);
            }
            $export->data_memory_end = woo_ce_current_memory_usage();
            break;
            // Users
        // Users
        case 'user':
            $fields = woo_ce_get_user_fields('summary');
            if ($export->fields = array_intersect_assoc((array) $export->fields, $fields)) {
                foreach ($export->fields as $key => $field) {
                    $export->columns[] = woo_ce_get_user_field($key);
                }
            }
            $export->total_columns = $size = count($export->columns);
            $export->data_memory_start = woo_ce_current_memory_usage();
            if ($users = woo_ce_get_users($export->args)) {
                // Generate the export headers
                if (in_array($export->export_format, array('csv'))) {
                    $i = 0;
                    foreach ($export->columns as $column) {
                        if ($i == $size - 1) {
                            $output .= woo_ce_escape_csv_value($column, $export->delimiter, $export->escape_formatting) . "\n";
                        } else {
                            $output .= woo_ce_escape_csv_value($column, $export->delimiter, $export->escape_formatting) . $separator;
                        }
                        $i++;
                    }
                }
                if (!empty($export->fields)) {
                    foreach ($users as $user) {
                        $user = woo_ce_get_user_data($user, $export->args);
                        foreach ($export->fields as $key => $field) {
                            if (isset($user->{$key})) {
                                if (in_array($export->export_format, array('csv'))) {
                                    $output .= woo_ce_escape_csv_value($user->{$key}, $export->delimiter, $export->escape_formatting);
                                }
                            }
                            if (in_array($export->export_format, array('csv'))) {
                                $output .= $separator;
                            }
                        }
                        if (in_array($export->export_format, array('csv'))) {
                            $output = substr($output, 0, -1) . "\n";
                        }
                    }
                }
                unset($users, $user);
            }
            $export->data_memory_end = woo_ce_current_memory_usage();
            break;
    }
    // Remove our content filters here to play nice with other Plugins
    remove_filter('sanitize_key', 'woo_ce_sanitize_key');
    // Remove our fatal error notice so not to conflict with the CRON or scheduled export engine
    remove_action('shutdown', 'woo_ce_fatal_error');
    // Export completed successfully
    delete_transient(WOO_CE_PREFIX . '_running');
    // Check that the export file is populated, export columns have been assigned and rows counted
    if ($output && $export->total_rows && $export->total_columns) {
        if (in_array($export->export_format, array('csv'))) {
            $output = woo_ce_file_encoding($output);
            if ($export->export_format == 'csv' && $export->bom && WOO_CE_DEBUG == false) {
                $output = "" . $output;
            }
        }
        if (WOO_CE_DEBUG && !$export->cron) {
            $response = set_transient(WOO_CE_PREFIX . '_debug_log', base64_encode($output), woo_ce_get_option('timeout', MINUTE_IN_SECONDS));
            if ($response !== true) {
                $message = __('The export contents were too large to store in a single WordPress transient, use the Volume offset / Limit volume options to reduce the size of your export and try again.', 'woo_ce') . ' (<a href="' . $troubleshooting_url . '" target="_blank">' . __('Need help?', 'woo_ce') . '</a>)';
                if (function_exists('woo_ce_admin_notice')) {
                    woo_ce_admin_notice($message, 'error');
                } else {
                    error_log(sprintf('[store-exporter] woo_ce_export_dataset() - %s', $message));
                }
            }
        } else {
            return $output;
        }
    }
}
Exemplo n.º 3
0
    function woo_ce_html_page()
    {
        global $wpdb, $export;
        $title = apply_filters('woo_ce_template_header', '');
        woo_ce_template_header($title);
        woo_ce_support_donate();
        $action = woo_get_action();
        switch ($action) {
            case 'export':
                $message = __('Chosen WooCommerce details have been exported from your store.', 'woo_ce');
                woo_ce_admin_notice($message);
                $output = '';
                if (WOO_CE_DEBUG) {
                    if (false === ($export_log = get_transient(WOO_CE_PREFIX . '_debug_log'))) {
                        $export_log = __('No export entries were found, please try again with different export filters.', 'woo_ce');
                    } else {
                        delete_transient(WOO_CE_PREFIX . '_debug_log');
                        $export_log = base64_decode($export_log);
                    }
                    $output = '
<h3>' . __('Export Details') . '</h3>
<textarea id="export_log">' . print_r($export, true) . '</textarea><hr />
<h3>' . sprintf(__('Export Log: %s', 'woo_ce'), $export->filename) . '</h3>
<textarea id="export_log">' . $export_log . '</textarea>
';
                }
                echo $output;
                woo_ce_manage_form();
                break;
            case 'update':
                // Save Custom Product Meta
                if (isset($_POST['custom_products'])) {
                    $custom_products = $_POST['custom_products'];
                    $custom_products = explode("\n", trim($custom_products));
                    $size = count($custom_products);
                    if ($size) {
                        for ($i = 0; $i < $size; $i++) {
                            $custom_products[$i] = trim($custom_products[$i]);
                        }
                        woo_ce_update_option('custom_products', $custom_products);
                    }
                }
                // Save Custom Order Meta
                if (isset($_POST['custom_orders'])) {
                    $custom_orders = $_POST['custom_orders'];
                    $custom_orders = explode("\n", trim($custom_orders));
                    $size = count($custom_orders);
                    if ($size) {
                        for ($i = 0; $i < $size; $i++) {
                            $custom_orders[$i] = trim($custom_orders[$i]);
                        }
                        woo_ce_update_option('custom_orders', $custom_orders);
                    }
                }
                // Save Custom Order Item Meta
                if (isset($_POST['custom_order_items'])) {
                    $custom_order_items = $_POST['custom_order_items'];
                    if (!empty($custom_order_items)) {
                        $custom_order_items = explode("\n", trim($custom_order_items));
                        $size = count($custom_order_items);
                        if ($size) {
                            for ($i = 0; $i < $size; $i++) {
                                $custom_order_items[$i] = trim($custom_order_items[$i]);
                            }
                            woo_ce_update_option('custom_order_items', $custom_order_items);
                        }
                    } else {
                        woo_ce_update_option('custom_order_items', '');
                    }
                }
                $message = __('Custom Fields saved.', 'woo_ce');
                woo_ce_admin_notice($message);
                woo_ce_manage_form();
                break;
            default:
                woo_ce_manage_form();
                break;
        }
        woo_ce_template_footer();
    }
Exemplo n.º 4
0
 function woo_ce_admin_init()
 {
     global $export, $wp_roles;
     // Now is the time to de-activate Store Exporter if Store Exporter Deluxe is activated
     if (defined('WOO_CD_PREFIX')) {
         include_once WOO_CE_PATH . 'includes/install.php';
         woo_ce_deactivate_ce();
         return;
     }
     // Detect if WooCommerce Subscriptions Exporter is activated
     if (function_exists('wc_subs_exporter_admin_init')) {
         $message = sprintf(__('We have detected a WooCommerce Plugin that is activated and known to conflict with Store Exporter, please de-activate WooCommerce Subscriptions Exporter to resolve export issues. <a href="%s" target="_blank">Need help?</a>', 'woocommerce-exporter'), $troubleshooting_url);
         woo_cd_admin_notice($message, 'error', array('plugins.php', 'admin.php'));
     }
     // Check that we are on the Store Exporter screen
     $page = isset($_GET['page']) ? sanitize_text_field($_GET['page']) : false;
     if ($page != strtolower(WOO_CE_PREFIX)) {
         return;
     }
     // Detect other platform versions
     woo_ce_detect_non_woo_install();
     // Process any pre-export notice confirmations
     $action = woo_get_action();
     switch ($action) {
         // Prompt on Export screen when insufficient memory (less than 64M is allocated)
         case 'dismiss_memory_prompt':
             woo_ce_update_option('dismiss_memory_prompt', 1);
             $url = esc_url(add_query_arg('action', null));
             wp_redirect($url);
             exit;
             break;
             // Prompt on Export screen when PHP configuration option max_execution_time cannot be increased
         // Prompt on Export screen when PHP configuration option max_execution_time cannot be increased
         case 'dismiss_execution_time_prompt':
             woo_ce_update_option('dismiss_execution_time_prompt', 1);
             $url = esc_url(add_query_arg('action', null));
             wp_redirect($url);
             exit;
             break;
             // Prompt on Export screen when insufficient memory (less than 64M is allocated)
         // Prompt on Export screen when insufficient memory (less than 64M is allocated)
         case 'dismiss_php_legacy':
             woo_ce_update_option('dismiss_php_legacy', 1);
             $url = esc_url(add_query_arg('action', null));
             wp_redirect($url);
             exit;
             break;
         case 'dismiss_subscription_prompt':
             woo_ce_update_option('dismiss_subscription_prompt', 1);
             $url = esc_url(add_query_arg('action', null));
             wp_redirect($url);
             exit;
             break;
             // Save skip overview preference
         // Save skip overview preference
         case 'skip_overview':
             $skip_overview = false;
             if (isset($_POST['skip_overview'])) {
                 $skip_overview = 1;
             }
             woo_ce_update_option('skip_overview', $skip_overview);
             if ($skip_overview == 1) {
                 $url = esc_url(add_query_arg('tab', 'export'));
                 wp_redirect($url);
                 exit;
             }
             break;
             // This is where the magic happens
         // This is where the magic happens
         case 'export':
             // Make sure we play nice with other WooCommerce and WordPress exporters
             if (isset($_POST['woo_ce_export']) && !check_admin_referer('manual_export', 'woo_ce_export')) {
                 return false;
             }
             // Set up the basic export options
             $export = new stdClass();
             $export->cron = 0;
             $export->scheduled_export = 0;
             $export->start_time = time();
             $export->idle_memory_start = woo_ce_current_memory_usage();
             $export->delete_file = woo_ce_get_option('delete_file', 0);
             $export->encoding = woo_ce_get_option('encoding', get_option('blog_charset', 'UTF-8'));
             // Reset the Encoding if corrupted
             if ($export->encoding == '' || $export->encoding == false || $export->encoding == 'System default') {
                 error_log('[store-exporter] Encoding export option was corrupted, defaulted to UTF-8');
                 $export->encoding = 'UTF-8';
                 woo_ce_update_option('encoding', 'UTF-8');
             }
             $export->delimiter = woo_ce_get_option('delimiter', ',');
             // Reset the Delimiter if corrupted
             if ($export->delimiter == '' || $export->delimiter == false) {
                 error_log('[store-exporter] Delimiter export option was corrupted, defaulted to ,');
                 $export->delimiter = ',';
                 woo_ce_update_option('delimiter', ',');
             }
             $export->category_separator = woo_ce_get_option('category_separator', '|');
             // Reset the Category Separator if corrupted
             if ($export->category_separator == '' || $export->category_separator == false) {
                 error_log('[store-exporter] Category Separator export option was corrupted, defaulted to |');
                 $export->category_separator = '|';
                 woo_ce_update_option('category_separator', '|');
             }
             $export->bom = woo_ce_get_option('bom', 1);
             $export->escape_formatting = woo_ce_get_option('escape_formatting', 'all');
             // Reset the Escape Formatting if corrupted
             if ($export->escape_formatting == '' || $export->escape_formatting == false) {
                 error_log('[store-exporter] Escape Formatting export option was corrupted, defaulted to all');
                 $export->escape_formatting = 'all';
                 woo_ce_update_option('escape_formatting', 'all');
             }
             $export->date_format = woo_ce_get_option('date_format', 'd/m/Y');
             // Reset the Date Format if corrupted
             if ($export->date_format == '1' || $export->date_format == '' || $export->date_format == false) {
                 error_log('[store-exporter] Date Format export option was corrupted, defaulted to d/m/Y');
                 $export->date_format = 'd/m/Y';
                 woo_ce_update_option('date_format', 'd/m/Y');
             }
             // Save export option changes made on the Export screen
             $export->limit_volume = isset($_POST['limit_volume']) ? sanitize_text_field($_POST['limit_volume']) : '';
             woo_ce_update_option('limit_volume', $export->limit_volume);
             if ($export->limit_volume == '') {
                 $export->limit_volume = -1;
             }
             $export->offset = isset($_POST['offset']) ? sanitize_text_field($_POST['offset']) : '';
             woo_ce_update_option('offset', $export->offset);
             if ($export->offset == '') {
                 $export->offset = 0;
             }
             // Set default values for all export options to be later passed onto the export process
             $export->fields = array();
             $export->fields_order = false;
             $export->export_format = 'csv';
             // Product sorting
             $export->product_categories = false;
             $export->product_tags = false;
             $export->product_status = false;
             $export->product_type = false;
             $export->product_orderby = false;
             $export->product_order = false;
             $export->gallery_formatting = false;
             $export->upsell_formatting = false;
             $export->crosssell_formatting = false;
             // Category sorting
             $export->category_orderby = false;
             $export->category_order = false;
             // Tag sorting
             $export->tag_orderby = false;
             $export->tag_order = false;
             // User sorting
             $export->user_orderby = false;
             $export->user_order = false;
             $export->type = isset($_POST['dataset']) ? sanitize_text_field($_POST['dataset']) : false;
             if ($export->type) {
                 $export->fields = isset($_POST[$export->type . '_fields']) ? array_map('sanitize_text_field', $_POST[$export->type . '_fields']) : false;
                 $export->fields_order = isset($_POST[$export->type . '_fields_order']) ? array_map('absint', $_POST[$export->type . '_fields_order']) : false;
                 woo_ce_update_option('last_export', $export->type);
             }
             switch ($export->type) {
                 case 'product':
                     // Set up dataset specific options
                     $export->product_categories = isset($_POST['product_filter_category']) ? woo_ce_format_product_filters(array_map('absint', $_POST['product_filter_category'])) : false;
                     $export->product_tags = isset($_POST['product_filter_tag']) ? woo_ce_format_product_filters(array_map('absint', $_POST['product_filter_tag'])) : false;
                     $export->product_status = isset($_POST['product_filter_status']) ? woo_ce_format_product_filters(array_map('sanitize_text_field', $_POST['product_filter_status'])) : false;
                     $export->product_type = isset($_POST['product_filter_type']) ? woo_ce_format_product_filters(array_map('sanitize_text_field', $_POST['product_filter_type'])) : false;
                     $export->product_orderby = isset($_POST['product_orderby']) ? sanitize_text_field($_POST['product_orderby']) : false;
                     $export->product_order = isset($_POST['product_order']) ? sanitize_text_field($_POST['product_order']) : false;
                     $export->gallery_formatting = isset($_POST['product_gallery_formatting']) ? absint($_POST['product_gallery_formatting']) : false;
                     $export->upsell_formatting = isset($_POST['product_upsell_formatting']) ? absint($_POST['product_upsell_formatting']) : false;
                     $export->crosssell_formatting = isset($_POST['product_crosssell_formatting']) ? absint($_POST['product_crosssell_formatting']) : false;
                     // Save dataset export specific options
                     if ($export->product_orderby != woo_ce_get_option('product_orderby')) {
                         woo_ce_update_option('product_orderby', $export->product_orderby);
                     }
                     if ($export->product_order != woo_ce_get_option('product_order')) {
                         woo_ce_update_option('product_order', $export->product_order);
                     }
                     if ($export->upsell_formatting != woo_ce_get_option('upsell_formatting')) {
                         woo_ce_update_option('upsell_formatting', $export->upsell_formatting);
                     }
                     if ($export->crosssell_formatting != woo_ce_get_option('crosssell_formatting')) {
                         woo_ce_update_option('crosssell_formatting', $export->crosssell_formatting);
                     }
                     break;
                 case 'category':
                     // Set up dataset specific options
                     $export->category_orderby = isset($_POST['category_orderby']) ? sanitize_text_field($_POST['category_orderby']) : false;
                     $export->category_order = isset($_POST['category_order']) ? sanitize_text_field($_POST['category_order']) : false;
                     // Save dataset export specific options
                     if ($export->category_orderby != woo_ce_get_option('category_orderby')) {
                         woo_ce_update_option('category_orderby', $export->category_orderby);
                     }
                     if ($export->category_order != woo_ce_get_option('category_order')) {
                         woo_ce_update_option('category_order', $export->category_order);
                     }
                     break;
                 case 'tag':
                     // Set up dataset specific options
                     $export->tag_orderby = isset($_POST['tag_orderby']) ? sanitize_text_field($_POST['tag_orderby']) : false;
                     $export->tag_order = isset($_POST['tag_order']) ? sanitize_text_field($_POST['tag_order']) : false;
                     // Save dataset export specific options
                     if ($export->tag_orderby != woo_ce_get_option('tag_orderby')) {
                         woo_ce_update_option('tag_orderby', $export->tag_orderby);
                     }
                     if ($export->tag_order != woo_ce_get_option('tag_order')) {
                         woo_ce_update_option('tag_order', $export->tag_order);
                     }
                     break;
                 case 'user':
                     // Set up dataset specific options
                     $export->user_orderby = isset($_POST['user_orderby']) ? sanitize_text_field($_POST['user_orderby']) : false;
                     $export->user_order = isset($_POST['user_order']) ? sanitize_text_field($_POST['user_order']) : false;
                     // Save dataset export specific options
                     if ($export->user_orderby != woo_ce_get_option('user_orderby')) {
                         woo_ce_update_option('user_orderby', $export->user_orderby);
                     }
                     if ($export->user_order != woo_ce_get_option('user_order')) {
                         woo_ce_update_option('user_order', $export->user_order);
                     }
                     break;
             }
             if ($export->type) {
                 $timeout = 600;
                 if (isset($_POST['timeout'])) {
                     $timeout = absint((int) $_POST['timeout']);
                     if ($timeout != woo_ce_get_option('timeout')) {
                         woo_ce_update_option('timeout', $timeout);
                     }
                 }
                 if (!ini_get('safe_mode')) {
                     @set_time_limit((int) $timeout);
                 }
                 @ini_set('memory_limit', WP_MAX_MEMORY_LIMIT);
                 @ini_set('max_execution_time', (int) $timeout);
                 $export->args = array('limit_volume' => $export->limit_volume, 'offset' => $export->offset, 'encoding' => $export->encoding, 'date_format' => $export->date_format, 'product_categories' => $export->product_categories, 'product_tags' => $export->product_tags, 'product_status' => $export->product_status, 'product_type' => $export->product_type, 'product_orderby' => $export->product_orderby, 'product_order' => $export->product_order, 'category_orderby' => $export->category_orderby, 'category_order' => $export->category_order, 'tag_orderby' => $export->tag_orderby, 'tag_order' => $export->tag_order, 'user_orderby' => $export->user_orderby, 'user_order' => $export->user_order);
                 if (empty($export->fields)) {
                     $message = __('No export fields were selected, please try again with at least a single export field.', 'woocommerce-exporter');
                     woo_ce_admin_notice($message, 'error');
                     return false;
                 }
                 woo_ce_save_fields($export->type, $export->fields, $export->fields_order);
                 if ($export->export_format == 'csv') {
                     $export->filename = woo_ce_generate_csv_filename($export->type);
                 }
                 // Print file contents to debug export screen
                 if (WOO_CE_DEBUG) {
                     if (in_array($export->export_format, array('csv'))) {
                         woo_ce_export_dataset($export->type);
                     }
                     $export->idle_memory_end = woo_ce_current_memory_usage();
                     $export->end_time = time();
                     // Print file contents to browser
                 } else {
                     if (in_array($export->export_format, array('csv'))) {
                         // Generate CSV contents
                         $bits = woo_ce_export_dataset($export->type);
                         unset($export->fields);
                         if (!$bits) {
                             $message = __('No export entries were found, please try again with different export filters.', 'woocommerce-exporter');
                             woo_ce_admin_notice($message, 'error');
                             return false;
                         }
                         if ($export->delete_file) {
                             // Print to browser
                             if ($export->export_format == 'csv') {
                                 woo_ce_generate_csv_header($export->type);
                             }
                             echo $bits;
                             exit;
                         } else {
                             // Save to file and insert to WordPress Media
                             if ($export->filename && $bits) {
                                 if ($export->export_format == 'csv') {
                                     $post_ID = woo_ce_save_file_attachment($export->filename, 'text/csv');
                                 }
                                 $upload = wp_upload_bits($export->filename, null, $bits);
                                 if ($post_ID == false || $upload['error']) {
                                     wp_delete_attachment($post_ID, true);
                                     if (isset($upload['error'])) {
                                         wp_redirect(esc_url(add_query_arg(array('failed' => true, 'message' => urlencode($upload['error'])))));
                                     } else {
                                         wp_redirect(esc_url(add_query_arg(array('failed' => true))));
                                     }
                                     return false;
                                 }
                                 $attach_data = wp_generate_attachment_metadata($post_ID, $upload['file']);
                                 wp_update_attachment_metadata($post_ID, $attach_data);
                                 update_attached_file($post_ID, $upload['file']);
                                 if ($post_ID) {
                                     woo_ce_save_file_guid($post_ID, $export->type, $upload['url']);
                                     woo_ce_save_file_details($post_ID);
                                 }
                                 $export_type = $export->type;
                                 unset($export);
                                 // The end memory usage and time is collected at the very last opportunity prior to the CSV header being rendered to the screen
                                 woo_ce_update_file_detail($post_ID, '_woo_idle_memory_end', woo_ce_current_memory_usage());
                                 woo_ce_update_file_detail($post_ID, '_woo_end_time', time());
                                 // Generate CSV header
                                 woo_ce_generate_csv_header($export_type);
                                 unset($export_type);
                                 // Print file contents to screen
                                 if ($upload['file']) {
                                     readfile($upload['file']);
                                 } else {
                                     wp_redirect(esc_url(add_query_arg('failed', true)));
                                 }
                                 unset($upload);
                             } else {
                                 wp_redirect(esc_url(add_query_arg('failed', true)));
                             }
                         }
                     }
                     exit;
                 }
             }
             break;
             // Save changes on Settings screen
         // Save changes on Settings screen
         case 'save-settings':
             // Sanitize each setting field as needed
             woo_ce_update_option('export_filename', strip_tags((string) $_POST['export_filename']));
             woo_ce_update_option('delete_file', sanitize_text_field((int) $_POST['delete_file']));
             woo_ce_update_option('encoding', sanitize_text_field((string) $_POST['encoding']));
             woo_ce_update_option('delimiter', sanitize_text_field((string) $_POST['delimiter']));
             woo_ce_update_option('category_separator', sanitize_text_field((string) $_POST['category_separator']));
             woo_ce_update_option('bom', absint((int) $_POST['bom']));
             woo_ce_update_option('escape_formatting', sanitize_text_field((string) $_POST['escape_formatting']));
             if ($_POST['date_format'] == 'custom' && !empty($_POST['date_format_custom'])) {
                 woo_ce_update_option('date_format', sanitize_text_field((string) $_POST['date_format_custom']));
             } else {
                 woo_ce_update_option('date_format', sanitize_text_field((string) $_POST['date_format']));
             }
             $message = __('Changes have been saved.', 'woocommerce-exporter');
             woo_ce_admin_notice($message);
             break;
             // Save changes on Field Editor screen
         // Save changes on Field Editor screen
         case 'save-fields':
             $fields = isset($_POST['fields']) ? array_filter($_POST['fields']) : array();
             $types = array_keys(woo_ce_return_export_types());
             $export_type = isset($_POST['type']) ? sanitize_text_field($_POST['type']) : '';
             if (in_array($export_type, $types)) {
                 woo_ce_update_option($export_type . '_labels', $fields);
                 $message = __('Changes have been saved.', 'woocommerce-exporter');
                 woo_ce_admin_notice($message);
             } else {
                 $message = __('Changes could not be saved.', 'woocommerce-exporter');
                 woo_ce_admin_notice($message, 'error');
             }
             break;
     }
 }
Exemplo n.º 5
0
 function woo_ce_fail_notices()
 {
     woo_ce_memory_prompt();
     $troubleshooting_url = 'http://www.visser.com.au/documentation/store-exporter-deluxe/usage/';
     if (isset($_GET['failed'])) {
         $message = '';
         if (isset($_GET['message'])) {
             $message = urldecode($_GET['message']);
         }
         if ($message) {
             $message = __('A WordPress or server error caused the exporter to fail, the exporter was provided with a reason: ', 'woo_ce') . '<em>' . $message . '</em>' . ' (<a href="' . $troubleshooting_url . '" target="_blank">' . __('Need help?', 'woo_ce') . '</a>)';
         } else {
             $message = __('A WordPress or server error caused the exporter to fail, no reason was provided, please get in touch so we can reproduce and resolve this.', 'woo_ce') . ' (<a href="' . $troubleshooting_url . '" target="_blank">' . __('Need help?', 'woo_ce') . '</a>)';
         }
         woo_ce_admin_notice($message, 'error');
     }
     if (isset($_GET['empty'])) {
         $message = __('No export entries were found, please try again with different export filters.', 'woo_ce');
         woo_ce_admin_notice($message, 'error');
     }
     if (get_transient(WOO_CE_PREFIX . '_running')) {
         $message = __('A WordPress or server error caused the exporter to fail with a blank screen, this is either a memory or timeout issue, please get in touch so we can reproduce and resolve this.', 'woo_ce') . ' (<a href="' . $troubleshooting_url . '" target="_blank">' . __('Need help?', 'woo_ce') . '</a>)';
         woo_ce_admin_notice($message, 'error');
     }
 }