cpdf_{$document_slug}_date"] ); $legacy_hour = sanitize_text_field( $form_data["_wcpdf_{$document_slug}_date_hour"] ); $legacy_minute = sanitize_text_field( $form_data["_wcpdf_{$document_slug}_date_minute"] ); unset( $form_data["_wcpdf_{$document_slug}_date_hour"] ); unset( $form_data["_wcpdf_{$document_slug}_date_minute"] ); $form_data["_wcpdf_{$document_slug}_date"] = array( 'date' => $legacy_date, 'hour' => $legacy_hour, 'minute' => $legacy_minute, ); return $form_data; } public function debug_enabled_warning( $wp_admin_bar ) { if ( isset(WPO_WCPDF()->settings->debug_settings['enable_debug']) && current_user_can( 'administrator' ) ) { $status_settings_url = 'admin.php?page=wpo_wcpdf_options_page&tab=debug'; $title = __( 'DEBUG output enabled', 'woocommerce-pdf-invoices-packing-slips' ); $args = array( 'id' => 'admin_bar_wpo_debug_mode', 'title' => sprintf( '%s', esc_attr( $status_settings_url ), esc_html( $title ) ), ); $wp_admin_bar->add_node( $args ); } } public function process_order_document_form_data( $form_data, $document_slug ) { $data = array(); if( isset( $form_data['_wcpdf_'.$document_slug.'_number'] ) ) { $data['number'] = sanitize_text_field( $form_data['_wcpdf_'.$document_slug.'_number'] ); } $date_entered = ! empty( $form_data['_wcpdf_'.$document_slug.'_date'] ) && ! empty( $form_data['_wcpdf_'.$document_slug.'_date']['date'] ); if( $date_entered ) { $date = $form_data['_wcpdf_'.$document_slug.'_date']['date']; $hour = ! empty( $form_data['_wcpdf_'.$document_slug.'_date']['hour'] ) ? $form_data['_wcpdf_'.$document_slug.'_date']['hour'] : '00'; $minute = ! empty( $form_data['_wcpdf_'.$document_slug.'_date']['minute'] ) ? $form_data['_wcpdf_'.$document_slug.'_date']['minute'] : '00'; // clean & sanitize input $date = date( 'Y-m-d', strtotime( $date ) ); $hour = sprintf('%02d', intval( $hour )); $minute = sprintf('%02d', intval( $minute ) ); $data['date'] = "{$date} {$hour}:{$minute}:00"; } elseif ( ! $date_entered && !empty( $_POST['_wcpdf_'.$document_slug.'_number'] ) ) { $data['date'] = current_time( 'timestamp', true ); } if ( isset( $form_data['_wcpdf_'.$document_slug.'_notes'] ) ) { // allowed HTML $allowed_html = array( 'a' => array( 'href' => array(), 'title' => array(), 'id' => array(), 'class' => array(), 'style' => array(), ), 'br' => array(), 'em' => array(), 'strong'=> array(), 'div' => array( 'id' => array(), 'class' => array(), 'style' => array(), ), 'span' => array( 'id' => array(), 'class' => array(), 'style' => array(), ), 'p' => array( 'id' => array(), 'class' => array(), 'style' => array(), ), 'b' => array(), ); $data['notes'] = wp_kses( $form_data['_wcpdf_'.$document_slug.'_notes'], $allowed_html ); } return $data; } public function add_invoice_number_to_order_report( $response ) { $order = wc_get_order( $response->data['order_id'] ); if ( ! empty( $order ) ) { $response->data['invoice_number'] = $order->get_meta( '_wcpdf_invoice_number' ); } return $response; } public function add_invoice_number_header_to_order_export( $export_columns ) { $export_columns['invoice_number'] = __( 'Invoice Number', 'woocommerce-pdf-invoices-packing-slips' ); return $export_columns; } public function add_invoice_number_value_to_order_export( $export_item, $item ) { if ( ! empty( $item['invoice_number'] ) ) { $export_item['invoice_number'] = $item['invoice_number']; } return $export_item; } public function add_invoice_column_to_sortable_columns( array $columns ): array { $columns['invoice_date_column'] = 'invoice_date_column'; $columns['invoice_number_column'] = 'invoice_number_column'; return $columns; } public function adjust_order_list_query_args( array $order_query_args ): array { if ( 'invoice_number_column' === $order_query_args['orderby'] ) { $is_numeric = $this->is_invoice_number_numeric(); $order_query_args['meta_query'] = array( 'invoice_number_column' => array( 'key' => '_wcpdf_invoice_number', 'compare' => '!=', 'value' => '0', 'type' => $is_numeric ? 'NUMERIC' : 'CHAR', ), ); } if ( 'invoice_date_column' === $order_query_args['orderby'] ) { $order_query_args['meta_query'] = array( 'invoice_date_column' => array( 'key' => '_wcpdf_invoice_date', 'compare' => '!=', 'value' => '', ), ); } return $order_query_args; } public function sort_orders_by_numeric_invoice_number( $query ): void { if ( ! is_admin() || ! $query->is_main_query() || 'shop_order' !== $query->get( 'post_type' ) || '_wcpdf_invoice_number' !== $query->get( 'meta_key' ) ) { return; } $query->set( 'orderby', $this->is_invoice_number_numeric() ? 'meta_value_num' : 'meta_value' ); } /** * Determines if the invoice number is numeric. * It evaluates the presence of non-numeric characters in the prefix and suffix of the invoice number. * * @return bool */ private function is_invoice_number_numeric() { $invoice_settings = WPO_WCPDF()->settings->get_document_settings( 'invoice' ); $is_numeric = ( empty( $invoice_settings['number_format']['prefix'] ) || ctype_digit( $invoice_settings['number_format']['prefix'] ) ) && ( empty( $invoice_settings['number_format']['suffix'] ) || ctype_digit( $invoice_settings['number_format']['suffix'] ) ); return apply_filters( 'wpo_wcpdf_invoice_number_is_numeric', $is_numeric ); } } endif; // class_exists