Files
torebki-fabiola.pl/wp-content/plugins/woocommerce-pdf-invoices-packing-slips/includes/settings/class-wcpdf-settings-debug.php
2026-03-05 13:07:40 +01:00

811 lines
29 KiB
PHP

<?php
namespace WPO\WC\PDF_Invoices\Settings;
use WPO\WC\PDF_Invoices\Tables\Number_Store_List_Table;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
if ( ! class_exists( '\\WPO\\WC\\PDF_Invoices\\Settings\\Settings_Debug' ) ) :
class Settings_Debug {
protected static $_instance = null;
public $sections;
public static function instance() {
if ( is_null( self::$_instance ) ) {
self::$_instance = new self();
}
return self::$_instance;
}
public function __construct() {
$this->sections = array(
'settings' => __( 'Settings', 'woocommerce-pdf-invoices-packing-slips' ),
'status' => __( 'Status', 'woocommerce-pdf-invoices-packing-slips' ),
'tools' => __( 'Tools', 'woocommerce-pdf-invoices-packing-slips' ),
'numbers' => __( 'Numbers', 'woocommerce-pdf-invoices-packing-slips' ),
);
add_action( 'admin_init', array( $this, 'init_settings' ) );
add_action( 'wpo_wcpdf_settings_output_debug', array( $this, 'output' ), 10, 1 );
add_action( 'wp_ajax_wpo_wcpdf_debug_tools', array( $this, 'ajax_process_settings_debug_tools' ) );
add_action( 'wp_ajax_wpo_wcpdf_danger_zone_tools', array( $this, 'ajax_process_danger_zone_tools' ) );
}
public function output( $active_section ) {
$active_section = ! empty( $active_section ) ? $active_section : 'settings';
?>
<div class="wcpdf_debug_settings_sections">
<h2 class="nav-tab-wrapper">
<?php
foreach ( $this->sections as $section => $title ) {
$active = ( $section === $active_section ) ? 'nav-tab-active' : '';
printf( '<a href="%1$s" class="nav-tab nav-tab-%2$s %3$s">%4$s</a>', esc_url( add_query_arg( 'section', $section ) ), esc_attr( $section ), $active, esc_html( $title ) );
}
?>
</h2>
</div>
<?php
switch ( $active_section ) {
case 'settings':
$this->display_settings();
break;
case 'status':
$this->display_status();
break;
case 'tools':
$this->process_debug_tools();
$this->display_tools();
break;
case 'numbers':
$this->display_numbers();
break;
}
}
public function display_settings() {
settings_fields( 'wpo_wcpdf_settings_debug' );
do_settings_sections( 'wpo_wcpdf_settings_debug' );
submit_button();
}
public function display_status() {
include( WPO_WCPDF()->plugin_path() . '/includes/views/advanced-status.php' );
}
public function display_tools() {
include( WPO_WCPDF()->plugin_path() . '/includes/views/advanced-tools.php' );
}
public function display_numbers() {
global $wpdb;
$number_store_tables = $this->get_number_store_tables();
$invoice_number_store_doc_types = WPO_WCPDF()->settings->debug->get_additional_invoice_number_store_document_types();
$store_name = 'invoice_number';
if ( isset( $_GET['table_name'] ) ) {
$selected_table_name = esc_attr( $_GET['table_name'] );
} else {
$_GET['table_name'] = $selected_table_name = apply_filters( 'wpo_wcpdf_number_store_table_name', "{$wpdb->prefix}wcpdf_{$store_name}", $store_name, null ); // i.e. wp_wcpdf_invoice_number or wp_wcpdf_invoice_number_2021
}
if ( ! isset( $number_store_tables[ $_GET['table_name'] ] ) ) {
$_GET['table_name'] = $selected_table_name = null;
}
$document_type = WPO_WCPDF()->settings->debug->get_document_type_from_store_table_name( esc_attr( $_GET['table_name'] ) );
$list_table = new Number_Store_List_Table();
$list_table->prepare_items();
include( WPO_WCPDF()->plugin_path() . '/includes/views/advanced-numbers.php' );
}
private function get_number_store_tables() {
global $wpdb;
$tables = $wpdb->get_results( "SHOW TABLES LIKE '{$wpdb->prefix}wcpdf_%'" );
$document_titles = WPO_WCPDF()->documents->get_document_titles();
$table_names = array();
foreach ( $tables as $table ) {
foreach ( $table as $table_name ) {
if ( ! empty ( $table_name ) ) {
// strip the default prefix
$store_name = $full_store_name = substr( $table_name, strpos( $table_name, 'wcpdf_' ) + strlen( 'wcpdf_' ) );
// strip year suffix, if present
if ( is_numeric( substr( $full_store_name, -4 ) ) ) {
$store_name = trim( substr( $full_store_name, 0, -4 ), '_' );
}
if ( empty( $store_name ) || empty( $full_store_name ) ) {
continue;
}
// strip '_number' and other remaining suffixes
$suffix = substr( $full_store_name, strpos( $full_store_name, '_number' ) + strlen( '_number' ) );
$clean_suffix = ! empty( $suffix ) ? trim( str_replace( '_number', '', $suffix ), '_' ) : $suffix;
$name = substr( $store_name, 0, strpos( $store_name, '_number' ) );
$title = '';
if ( ! empty( $name ) ) {
$title = ! empty( $document_titles[ $name ] ) ? $document_titles[ $name ] : ucwords( str_replace( array( "__", "_", "-" ), ' ', $name ) );
}
if ( ! empty ( $suffix ) ) {
$title = "{$title} ({$clean_suffix})";
}
$table_names[ $table_name ] = $title;
}
}
}
ksort( $table_names );
return $table_names;
}
public function get_document_type_from_store_table_name( $table_name ) {
$document_type = '';
if ( empty( $table_name ) ) {
return $document_type;
}
// strip the default prefix
$store_name = $full_store_name = substr( $table_name, strpos( $table_name, 'wcpdf_' ) + strlen( 'wcpdf_' ) );
// strip year suffix, if present
if ( is_numeric( substr( $full_store_name, -4 ) ) ) {
$store_name = trim( substr( $full_store_name, 0, -4 ), '_' );
}
if ( ! empty( $store_name ) && ! empty( $full_store_name ) ) {
$name = substr( $store_name, 0, strpos( $store_name, '_number' ) );
$document_type = ! empty( $name ) ? str_replace( '_', '-', $name ) : '';
}
return $document_type;
}
public function get_additional_invoice_number_store_document_types() {
$additional_doc_types = array();
$documents = WPO_WCPDF()->documents->get_documents();
foreach ( $documents as $document ) {
if ( in_array( $document->get_type(), array( 'proforma', 'credit-note' ) ) && $document->is_enabled() && is_callable( array( $document, 'get_number_sequence' ) ) ) {
$number_sequence = $document->get_number_sequence( '', $document );
if ( 'invoice_number' === $number_sequence ) {
$additional_doc_types[] = $document->get_type();
}
}
}
return $additional_doc_types;
}
public function process_debug_tools() {
if ( isset( $_REQUEST['wpo_wcpdf_debug_tools_action'] ) && is_callable( array( $this, $_REQUEST['wpo_wcpdf_debug_tools_action'] ) ) ) {
if ( check_admin_referer( 'wpo_wcpdf_debug_tools_action', 'security' ) ) {
// generate_random_string, install_fonts, reschedule_yearly_reset, clear_tmp
call_user_func( array( $this, $_REQUEST['wpo_wcpdf_debug_tools_action'] ) );
}
}
}
private function generate_random_string() {
if ( ! empty( WPO_WCPDF()->main->get_random_string() ) ) {
$old_path = WPO_WCPDF()->main->get_tmp_base();
} else {
$old_path = WPO_WCPDF()->main->get_tmp_base( false );
}
WPO_WCPDF()->main->generate_random_string();
$new_path = WPO_WCPDF()->main->get_tmp_base();
WPO_WCPDF()->main->copy_directory( $old_path, $new_path );
WPO_WCPDF()->main->maybe_reinstall_fonts( true );
/* translators: directory path */
printf( '<div class="notice notice-success"><p>%s</p></div>', sprintf( esc_html__( 'Temporary folder moved to %s', 'woocommerce-pdf-invoices-packing-slips' ), '<code>'.$new_path.'</code>' ) );
}
private function install_fonts() {
WPO_WCPDF()->main->maybe_reinstall_fonts( true );
printf( '<div class="notice notice-success"><p>%s</p></div>', esc_html__( 'Fonts reinstalled!', 'woocommerce-pdf-invoices-packing-slips' ) );
}
private function reschedule_yearly_reset() {
WPO_WCPDF()->settings->schedule_yearly_reset_numbers();
printf( '<div class="notice notice-success"><p>%s</p></div>', esc_html__( 'Yearly reset numbering system rescheduled!', 'woocommerce-pdf-invoices-packing-slips' ) );
}
private function clear_tmp() {
$output = WPO_WCPDF()->main->temporary_files_cleanup( time() );
printf( '<div class="notice notice-%1$s"><p>%2$s</p></div>', key( $output ), reset( $output ) );
}
public function ajax_process_settings_debug_tools() {
check_ajax_referer( 'wpo_wcpdf_debug_nonce', 'nonce' );
$data = stripslashes_deep( $_REQUEST );
if ( empty( $data['action'] ) || 'wpo_wcpdf_debug_tools' !== $data['action'] || empty( $data['debug_tool'] ) ) {
return;
}
$debug_tool = str_replace( '-', '_', esc_attr( $data['debug_tool'] ) );
if ( is_callable( array( $this, $debug_tool ) ) ) {
// export_settings, import_settings, reset_settings
call_user_func_array( array( $this, $debug_tool ), array( $data ) );
}
wp_die();
}
private function export_settings( $data ) {
extract( $data );
if ( empty( $type ) ) {
$message = __( 'Export settings type is empty!', 'woocommerce-pdf-invoices-packing-slips' );
wcpdf_log_error( $message );
wp_send_json_error( compact( 'message' ) );
}
$settings = [];
switch ( $type ) {
case 'general':
$settings = WPO_WCPDF()->settings->general_settings;
break;
case 'debug':
$settings = WPO_WCPDF()->settings->debug_settings;
break;
case 'ubl_taxes':
$settings = WPO_WCPDF()->settings->ubl_tax_settings;
break;
default:
$settings = apply_filters( 'wpo_wcpdf_export_settings', $settings, $type );
break;
}
// maybe it's a document type settings request
if ( empty( $settings ) ) {
$documents = WPO_WCPDF()->documents->get_documents( 'all' );
foreach ( $documents as $document ) {
$document_type = $document->get_type();
if (
$document_type === substr( $type, 0, strlen( $document_type ) ) ||
false !== strpos( $type, '_ubl' )
) {
$settings = get_option( "wpo_wcpdf_documents_settings_{$type}", [] );
break;
}
}
if ( empty( $settings ) ) {
$message = __( 'Exported settings data is empty!', 'woocommerce-pdf-invoices-packing-slips' );
wcpdf_log_error( $message );
wp_send_json_error( compact( 'message' ) );
}
}
$filename = apply_filters( 'wpo_wcpdf_export_settings_filename', sprintf( "{$type}-settings-export_%s.json", date( 'Y-m-d_H-i-s' ) ), $type );
wp_send_json_success( compact( 'filename', 'settings' ) );
}
private function import_settings( $data ) {
extract( $data );
$file_data = [];
if ( ! empty( $_FILES['file']['tmp_name'] ) && ! empty( $_FILES['file']['name'] ) ) {
$json_data = file_get_contents( $_FILES['file']['tmp_name'], $_FILES['file']['name'] );
if ( false === $json_data ) {
$message = __( 'Failed to get contents from JSON file!', 'woocommerce-pdf-invoices-packing-slips' );
wcpdf_log_error( $message );
wp_send_json_error( compact( 'message' ) );
} else {
$file_data = json_decode( $json_data, true );
}
} else {
$message = __( 'JSON file not found!', 'woocommerce-pdf-invoices-packing-slips' );
wcpdf_log_error( $message );
wp_send_json_error( compact( 'message' ) );
}
if ( empty( $file_data ) || empty( $file_data['type'] ) || empty( $file_data['settings'] ) || ! is_array( $file_data['settings'] ) ) {
$message = __( 'The JSON file data is corrupted!', 'woocommerce-pdf-invoices-packing-slips' );
wcpdf_log_error( $message );
wp_send_json_error( compact( 'message' ) );
}
$setting_types = $this->get_setting_types();
$type = esc_attr( $file_data['type'] );
$new_settings = stripslashes_deep( $file_data['settings'] );
$settings_option = '';
if ( ! in_array( $type, array_keys( $setting_types ) ) ) {
$message = __( 'The JSON file settings type is not supported on this store!', 'woocommerce-pdf-invoices-packing-slips' );
wcpdf_log_error( $message );
wp_send_json_error( compact( 'message' ) );
}
if ( in_array( $type, array( 'general', 'debug', 'ubl_taxes' ) ) ) {
$settings_option = "wpo_wcpdf_settings_{$type}";
} else {
$documents = WPO_WCPDF()->documents->get_documents( 'all' );
foreach ( $documents as $document ) {
$document_type = $document->get_type();
if (
$document_type === substr( $type, 0, strlen( $document_type ) ) ||
false !== strpos( $type, '_ubl' )
) {
$settings_option = "wpo_wcpdf_documents_settings_{$type}";
break;
}
}
}
// used for extension settings
$settings_option = apply_filters( 'wpo_wcpdf_import_settings_option', $settings_option, $type, $new_settings );
if ( empty( $settings_option ) ) {
$message = __( "Couldn't determine the settings option for the import!", 'woocommerce-pdf-invoices-packing-slips' );
wcpdf_log_error( $message );
wp_send_json_error( compact( 'message' ) );
}
$updated = update_option( $settings_option, $new_settings );
if ( $updated ) {
$message = sprintf(
/* translators: settings type */
__( '%s settings imported successfully!', 'woocommerce-pdf-invoices-packing-slips' ),
$setting_types[$type]
);
wcpdf_log_error( $message, 'info' );
wp_send_json_success( compact( 'type', 'message' ) );
} else {
$message = sprintf(
/* translators: settings type */
__( 'The %s settings file you are trying to import is identical to your current settings, therefore, the settings were not imported.', 'woocommerce-pdf-invoices-packing-slips' ),
$setting_types[$type]
);
wcpdf_log_error( $message );
wp_send_json_error( compact( 'message' ) );
}
}
private function reset_settings( $data ) {
extract( $data );
if ( empty( $type ) ) {
$message = __( 'Reset settings type is empty!', 'woocommerce-pdf-invoices-packing-slips' );
wcpdf_log_error( $message );
wp_send_json_error( compact( 'message' ) );
}
$settings_option = '';
switch ( $type ) {
case 'general':
$settings_option = 'wpo_wcpdf_settings_general';
break;
case 'debug':
$settings_option = 'wpo_wcpdf_settings_debug';
break;
case 'ubl_taxes':
$settings_option = 'wpo_wcpdf_settings_ubl_taxes';
break;
default:
$settings_option = apply_filters( 'wpo_wcpdf_reset_settings_option', $settings_option, $type );
break;
}
// maybe it's a document type settings request
if ( empty( $settings_option ) ) {
$documents = WPO_WCPDF()->documents->get_documents( 'all' );
foreach ( $documents as $document ) {
$document_type = $document->get_type();
if (
$document_type === substr( $type, 0, strlen( $document_type ) ) ||
false !== strpos( $type, '_ubl' )
) {
$settings_option = "wpo_wcpdf_documents_settings_{$type}";
break;
}
}
if ( empty( $settings_option ) ) {
$message = sprintf(
/* translators: settings type */
__( '%s settings reset not supported!', 'woocommerce-pdf-invoices-packing-slips' ),
$type
);
wcpdf_log_error( $message );
wp_send_json_error( compact( 'message' ) );
}
}
// settings already reset
$current_settings = get_option( $settings_option, [] );
if ( empty( $current_settings ) ) {
$message = sprintf(
/* translators: settings type */
__( '%s settings are already reset!', 'woocommerce-pdf-invoices-packing-slips' ),
$type
);
wcpdf_log_error( $message, 'info' );
wp_send_json_success( compact( 'type', 'message' ) );
}
// reset settings
$updated = update_option( $settings_option, [] );
if ( $updated ) {
$message = sprintf(
/* translators: settings type */
__( '%s settings reset successfully!', 'woocommerce-pdf-invoices-packing-slips' ),
$type
);
wcpdf_log_error( $message, 'info' );
wp_send_json_success( compact( 'type', 'message' ) );
} else {
$message = sprintf(
/* translators: settings type */
__( 'An error occurred when trying to reset the %s settings.', 'woocommerce-pdf-invoices-packing-slips' ),
$type
);
wcpdf_log_error( $message );
wp_send_json_error( compact( 'message' ) );
}
}
public function ajax_process_danger_zone_tools() {
check_ajax_referer( 'wpo_wcpdf_debug_nonce', 'nonce' );
$request = stripslashes_deep( $_REQUEST );
if ( ! isset( $request['document_type'] ) || ! isset( $request['date_from'] ) || ! isset( $request['date_to'] ) ) {
$message = __( 'One or more request parameters missing.', 'woocommerce-pdf-invoices-packing-slips' );
wp_send_json_error( compact( $message ) );
}
$from_date = date_i18n( 'Y-m-d', strtotime( $request['date_from'] ) );
$to_date = date_i18n( 'Y-m-d', strtotime( $request['date_to'] ) );
$document_type = esc_attr( $request['document_type'] );
$document_types = ! empty( $document_type ) && ( 'all' !== $document_type ) ? array( $document_type ) : array();
$document_title = ! empty( $document_type ) && ( 'all' !== $document_type ) ? ' ' . ucwords( str_replace( '-', ' ', $document_type ) ) . ' ' : ' ';
$page_count = absint( $request['page_count'] );
$document_count = absint( $request['document_count'] );
$delete_or_renumber = esc_attr( $request['delete_or_renumber'] );
$message = ( 'delete' === $delete_or_renumber ) ? $document_title . __( 'documents deleted.', 'woocommerce-pdf-invoices-packing-slips' ) : $document_title . __( 'documents renumbered.', 'woocommerce-pdf-invoices-packing-slips' );
$finished = false;
$args = array(
'return' => 'ids',
'type' => 'shop_order',
'limit' => -1,
'order' => 'ASC',
'paginate' => true,
'posts_per_page' => 50,
'page' => $page_count,
'date_created' => $from_date . '...' . $to_date,
);
$results = wc_get_orders( $args );
$order_ids = $results->orders;
if ( ! empty( $order_ids ) && ! empty( $document_type ) ) {
foreach ( $order_ids as $order_id ) {
$order = wc_get_order( $order_id );
if ( empty( $order ) ) {
continue;
}
if ( 'all' === $document_type ) {
$documents = WPO_WCPDF()->documents->get_documents( 'all' );
foreach ( $documents as $document ) {
$document_types[] = $document->get_type();
}
}
foreach ( $document_types as $type ) {
$document = wcpdf_get_document( $type, $order );
$return = $this->renumber_or_delete_document( $document, $delete_or_renumber );
if ( $return ) {
$document_count++;
}
}
}
$page_count++;
// no more order IDs
} else {
$finished = true;
}
$response = array(
'finished' => $finished,
'pageCount' => $page_count,
'documentCount' => $document_count,
'message' => $message,
);
wp_send_json_success( $response );
}
private function renumber_or_delete_document( $document, $delete_or_renumber ) {
$return = false;
if ( $document && $document->exists() ) {
switch ( $delete_or_renumber ) {
case 'renumber':
if ( is_callable( array( $document, 'init_number' ) ) ) {
$document->init_number();
$return = true;
} elseif ( 'packing-slip' === $document->get_type() && is_callable( array( WPO_WCPDF_Pro()->functions, 'init_packing_slip_number' ) ) ) {
WPO_WCPDF_Pro()->functions->init_packing_slip_number( $document );
$return = true;
}
if ( $return ) {
$document->save();
}
break;
case 'delete':
if ( is_callable( array( $document, 'delete' ) ) ) {
$document->delete();
$return = true;
}
break;
default:
break;
}
}
return $return;
}
public function get_setting_types() {
$setting_types = [
'general' => __( 'General', 'woocommerce-pdf-invoices-packing-slips' ),
'debug' => __( 'Debug', 'woocommerce-pdf-invoices-packing-slips' ),
'ubl_taxes' => __( 'UBL Taxes', 'woocommerce-pdf-invoices-packing-slips' ),
];
$documents = WPO_WCPDF()->documents->get_documents( 'all' );
foreach ( $documents as $document ) {
if ( $document->title != $document->get_title() ) {
$title = $document->title.' ('.$document->get_title().')';
} else {
$title = $document->get_title();
}
foreach ( $document->output_formats as $output_format ) {
$slug = $document->get_type();
if ( 'pdf' !== $output_format ) {
$slug .= "_{$output_format}";
}
$setting_types[$slug] = strtoupper( $output_format ) . ' ' . $title;
}
}
return apply_filters( 'wpo_wcpdf_setting_types', $setting_types );
}
public function init_settings() {
// Register settings.
$page = $option_group = $option_name = 'wpo_wcpdf_settings_debug';
$settings_fields = array(
array(
'type' => 'section',
'id' => 'debug_settings',
'title' => '',
'callback' => 'section',
),
array(
'type' => 'setting',
'id' => 'document_link_access_type',
'title' => __( 'Document link access type', 'woocommerce-pdf-invoices-packing-slips' ),
'callback' => 'select',
'section' => 'debug_settings',
'args' => array(
'option_name' => $option_name,
'id' => 'document_link_access_type',
'default' => 'logged_in',
'options' => array(
'logged_in' => __( 'Logged in (recommended)', 'woocommerce-pdf-invoices-packing-slips' ),
'guest' => __( 'Guest', 'woocommerce-pdf-invoices-packing-slips' ),
'full' => __( 'Full', 'woocommerce-pdf-invoices-packing-slips' ),
),
)
),
array(
'type' => 'setting',
'id' => 'document_link_access_type_table',
'title' => '',
'callback' => array( $this, 'document_link_access_type_table' ),
'section' => 'debug_settings',
'args' => array(
'option_name' => $option_name,
),
),
array(
'type' => 'setting',
'id' => 'document_access_denied_redirect_page',
'title' => __( 'Document access denied redirect page', 'woocommerce-pdf-invoices-packing-slips' ),
'callback' => 'select',
'section' => 'debug_settings',
'args' => array(
'option_name' => $option_name,
'id' => 'document_access_denied_redirect_page',
'default' => 'blank',
'options' => array(
'blank_page' => __( 'Blank page with message (default)', 'woocommerce-pdf-invoices-packing-slips' ),
'login_page' => __( 'Login page', 'woocommerce-pdf-invoices-packing-slips' ),
'myaccount_page' => __( 'My Account page', 'woocommerce-pdf-invoices-packing-slips' ),
'custom_page' => __( 'Custom page (enter below)', 'woocommerce-pdf-invoices-packing-slips' ),
),
'description' => __( 'Select a frontend page to be used to redirect users when the document access is denied.', 'woocommerce-pdf-invoices-packing-slips' ),
)
),
array(
'type' => 'setting',
'id' => 'document_custom_redirect_page',
'title' => '',
'callback' => 'url_input',
'section' => 'debug_settings',
'args' => array(
'option_name' => $option_name,
'id' => 'document_custom_redirect_page',
'placeholder' => esc_url_raw( wc_get_page_permalink( 'shop' ) ),
'description' => __( 'Custom external URLs not allowed.', 'woocommerce-pdf-invoices-packing-slips' ),
)
),
array(
'type' => 'setting',
'id' => 'pretty_document_links',
'title' => __( 'Pretty document links', 'woocommerce-pdf-invoices-packing-slips' ),
'callback' => 'checkbox',
'section' => 'debug_settings',
'args' => array(
'option_name' => $option_name,
'id' => 'pretty_document_links',
'description' => __( 'Changes the document links to a prettier URL scheme.', 'woocommerce-pdf-invoices-packing-slips' ),
)
),
array(
'type' => 'setting',
'id' => 'calculate_document_numbers',
'title' => __( 'Calculate document numbers (slow)', 'woocommerce-pdf-invoices-packing-slips' ),
'callback' => 'checkbox',
'section' => 'debug_settings',
'args' => array(
'option_name' => $option_name,
'id' => 'calculate_document_numbers',
'description' => __( "Document numbers (such as invoice numbers) are generated using AUTO_INCREMENT by default. Use this setting if your database auto increments with more than 1.", 'woocommerce-pdf-invoices-packing-slips' ),
)
),
array(
'type' => 'setting',
'id' => 'enable_debug',
'title' => __( 'Enable debug output', 'woocommerce-pdf-invoices-packing-slips' ),
'callback' => 'checkbox',
'section' => 'debug_settings',
'args' => array(
'option_name' => $option_name,
'id' => 'enable_debug',
'description' => __( "Enable this option to output plugin errors if you're getting a blank page or other PDF generation issues", 'woocommerce-pdf-invoices-packing-slips' ) . '<br>' .
__( '<b>Caution!</b> This setting may reveal errors (from other plugins) in other places on your site too, therefor this is not recommended to leave it enabled on live sites.', 'woocommerce-pdf-invoices-packing-slips' ) . ' ' .
__( 'You can also add <code>&debug=true</code> to the URL to apply this on a per-order basis.', 'woocommerce-pdf-invoices-packing-slips' ),
)
),
array(
'type' => 'setting',
'id' => 'enable_cleanup',
'title' => __( 'Enable automatic cleanup', 'woocommerce-pdf-invoices-packing-slips' ),
'callback' => 'checkbox_text_input',
'section' => 'debug_settings',
'args' => array(
'option_name' => $option_name,
'id' => 'enable_cleanup',
/* translators: number of days */
'text_input_wrap' => __( "every %s days", 'woocommerce-pdf-invoices-packing-slips' ),
'text_input_size' => 4,
'text_input_id' => 'cleanup_days',
'text_input_default' => 7,
'description' => __( "Automatically clean up PDF files stored in the temporary folder (used for email attachments)", 'woocommerce-pdf-invoices-packing-slips' ),
)
),
array(
'type' => 'setting',
'id' => 'html_output',
'title' => __( 'Output to HTML', 'woocommerce-pdf-invoices-packing-slips' ),
'callback' => 'checkbox',
'section' => 'debug_settings',
'args' => array(
'option_name' => $option_name,
'id' => 'html_output',
'description' => __( 'Send the template output as HTML to the browser instead of creating a PDF.', 'woocommerce-pdf-invoices-packing-slips' ) . ' ' .
__( 'You can also add <code>&output=html</code> to the URL to apply this on a per-order basis.', 'woocommerce-pdf-invoices-packing-slips' ),
)
),
array(
'type' => 'setting',
'id' => 'log_to_order_notes',
'title' => __( 'Log to order notes', 'woocommerce-pdf-invoices-packing-slips' ),
'callback' => 'checkbox',
'section' => 'debug_settings',
'args' => array(
'option_name' => $option_name,
'id' => 'log_to_order_notes',
'description' => __( 'Log PDF document creation and mark/unmark as printed to order notes.', 'woocommerce-pdf-invoices-packing-slips' ),
)
),
array(
'type' => 'setting',
'id' => 'disable_preview',
'title' => __( 'Disable document preview', 'woocommerce-pdf-invoices-packing-slips' ),
'callback' => 'checkbox',
'section' => 'debug_settings',
'args' => array(
'option_name' => $option_name,
'id' => 'disable_preview',
'description' => __( 'Disables the document preview on the plugin settings pages.', 'woocommerce-pdf-invoices-packing-slips' ),
)
),
array(
'type' => 'setting',
'id' => 'enable_danger_zone_tools',
'title' => __( 'Enable danger zone tools', 'woocommerce-pdf-invoices-packing-slips' ),
'callback' => 'checkbox',
'section' => 'debug_settings',
'args' => array(
'option_name' => $option_name,
'id' => 'enable_danger_zone_tools',
'description' => __( 'Enables the danger zone tools. The actions performed by these tools are irreversible!', 'woocommerce-pdf-invoices-packing-slips' ),
)
),
);
// allow plugins to alter settings fields
$settings_fields = apply_filters( 'wpo_wcpdf_settings_fields_debug', $settings_fields, $page, $option_group, $option_name );
WPO_WCPDF()->settings->add_settings_fields( $settings_fields, $page, $option_group, $option_name );
return;
}
public function document_link_access_type_table() {
?>
<table id="document-link-access-type">
<tr>
<td class="option"><strong><?php _e( 'Logged in', 'woocommerce-pdf-invoices-packing-slips' ); ?></strong></td>
<td><?php _e( "Document can be accessed by logged in users only.", 'woocommerce-pdf-invoices-packing-slips' ); ?></td>
</tr>
<tr>
<td class="option"><strong><?php _e( 'Guest', 'woocommerce-pdf-invoices-packing-slips' ); ?></strong></td>
<td><?php _e( 'Document can be accessed by logged in and guest users.', 'woocommerce-pdf-invoices-packing-slips' ); ?></td>
</tr>
<tr>
<td class="option"><strong><?php _e( 'Full', 'woocommerce-pdf-invoices-packing-slips' ); ?></strong></td>
<td><?php _e( 'Document can be accessed by everyone with the link.', 'woocommerce-pdf-invoices-packing-slips' ); ?></td>
</tr>
</table>
<?php
}
}
endif; // class_exists