empty( $document ) ) { // perform legacy date fields replacements check if( isset( $form_data["_wcpdf_{$document->slug}_date"] ) && ! is_array( $form_data["_wcpdf_{$document->slug}_date"] ) ) { $form_data = $this->legacy_date_fields_replacements( $form_data, $document->slug ); } // save document data $document_data = $this->process_order_document_form_data( $form_data, $document->slug ); // on regenerate if( $action_type == 'regenerate' && $document->exists() ) { $document->regenerate( $order, $document_data ); WPO_WCPDF()->main->log_document_creation_trigger_to_order_meta( $document, 'document_data', true ); $response = array( 'message' => $notice_messages[$notice]['success'], ); // on delete } elseif( $action_type == 'delete' && $document->exists() ) { $document->delete(); $response = array( 'message' => $notice_messages[$notice]['success'], ); // on save } elseif( $action_type == 'save' ) { $is_new = false === $document->exists(); $document->set_data( $document_data, $order ); // check if we have number, and if not generate one if( $document->get_date() && ! $document->get_number() && is_callable( array( $document, 'init_number' ) ) ) { $document->init_number(); } $document->save(); if ( $is_new ) { WPO_WCPDF()->main->log_document_creation_to_order_notes( $document, 'document_data' ); WPO_WCPDF()->main->log_document_creation_trigger_to_order_meta( $document, 'document_data' ); WPO_WCPDF()->main->mark_document_printed( $document, 'document_data' ); } $response = array( 'message' => $notice_messages[$notice]['success'], ); // document not exist } else { $message_complement = __( 'Document does not exist.', 'woocommerce-pdf-invoices-packing-slips' ); wp_send_json_error( array( 'message' => wp_kses_post( $notice_messages[$notice]['error'] . ' ' . $message_complement ), ) ); } // clean/escape response message if ( ! empty( $response['message'] ) ) { $response['message'] = wp_kses_post( $response['message'] ); } wp_send_json_success( $response ); } else { $message_complement = __( 'Document is empty.', 'woocommerce-pdf-invoices-packing-slips' ); wp_send_json_error( array( 'message' => wp_kses_post( $notice_messages[$notice]['error'] . ' ' . $message_complement ), ) ); } } catch ( \Throwable $e ) { wp_send_json_error( array( 'message' => wp_kses_post( $notice_messages[$notice]['error'] . ' ' . $e->getMessage() ), ) ); } } public function legacy_date_fields_replacements( $form_data, $document_slug ) { $legacy_date = sanitize_text_field( $form_data["_wcpdf_{$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; } } endif; // class_exists