Files
old-experiments/backend/wordpress/wp-content/plugins/woocommerce-services/classes/class-wc-rest-connect-shipping-label-print-controller.php
2018-06-20 18:28:39 +02:00

70 lines
2.1 KiB
PHP

<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( class_exists( 'WC_REST_Connect_Shipping_Label_Print_Controller' ) ) {
return;
}
class WC_REST_Connect_Shipping_Label_Print_Controller extends WC_REST_Connect_Base_Controller {
protected $rest_base = 'connect/label/print';
public function get( $request ) {
$raw_params = $request->get_params();
$params = array();
$params[ 'paper_size' ] = $raw_params[ 'paper_size' ];
$this->settings_store->set_preferred_paper_size( $params[ 'paper_size' ] );
$label_ids = ! empty( $raw_params[ 'label_id_csv' ] ) ? explode( ',', $raw_params[ 'label_id_csv' ] ) : array();
$n_label_ids = count( $label_ids );
$captions = ! empty( $raw_params[ 'caption_csv' ] ) ? explode( ',', $raw_params[ 'caption_csv' ] ) : array();
$n_captions = count( $captions );
// Either there are the same number of captions as labels, or no captions at all
if ( ! $n_label_ids || ( $n_captions && $n_captions !== $n_label_ids ) ) {
$message = __( 'Invalid PDF request.', 'woocommerce-services' );
$error = new WP_Error(
'invalid_pdf_request',
$message,
array(
'message' => $message,
'status' => 400
)
);
$this->logger->log( $error, __CLASS__ );
return $error;
}
$params[ 'labels' ] = array();
for ( $i = 0; $i < $n_label_ids; $i++ ) {
$params[ 'labels' ][ $i ] = array();
$params[ 'labels' ][ $i ][ 'label_id' ] = (int) $label_ids[ $i ];
if ( $n_captions ) {
$params[ 'labels' ][ $i ][ 'caption' ] = urldecode( $captions[ $i ] );
}
}
$raw_response = $this->api_client->get_labels_print_pdf( $params );
if ( is_wp_error( $raw_response ) ) {
$this->logger->log( $raw_response, __CLASS__ );
return $raw_response;
}
if ( isset( $raw_params[ 'json' ] ) && $raw_params[ 'json' ] ) {
return array(
'mimeType' => $raw_response[ 'headers' ][ 'content-type' ],
'b64Content' => base64_encode( $raw_response[ 'body' ] ),
'success' => true,
);
} else {
header( 'content-type: ' . $raw_response[ 'headers' ][ 'content-type' ] );
echo $raw_response[ 'body' ];
die();
}
}
}