', 'flexible-shipping'), \__('Shipping Manifests', 'flexible-shipping'), 'manage_woocommerce', 'edit.php?post_type=shipping_manifest'); } } public function add_meta_boxes($post_type, $post) { if ($post_type == 'shipping_manifest') { \add_meta_box('shipping_manifest_shipments', \__('Shipments', 'flexible-shipping'), [$this, 'shipments_metabox'], 'shipping_manifest', 'normal', 'high'); } } public function metabox() { global $post; echo '
';
        \print_r($post);
        echo '
'; $meta_data = \get_post_meta($post->ID); foreach ($meta_data as $key => $val) { echo '
';
            echo $key;
            echo ' = ';
            \print_r(\maybe_unserialize($val[0]));
            echo '
'; } } public function shipments_metabox() { global $post; $manifest = fs_get_manifest($post->ID); $shipments_array = $manifest->get_meta('_shipments', []); $shipments = []; foreach ($shipments_array as $shipment_id) { $shipments[] = fs_get_shipment($shipment_id); } include __DIR__ . '/views/manifest-metabox.php'; } public function manage_edit_shipping_manifest_columns($columns) { unset($columns['title']); unset($columns['date']); unset($columns['cb']); $columns['manifest_date'] = \__('Date', 'flexible-shipping'); $columns['integration'] = \__('Integration', 'flexible-shipping'); $columns['external_number'] = \__('Number', 'flexible-shipping'); $columns['shipment_count'] = \__('Shipments count', 'flexible-shipping'); $columns['actions'] = \__('Actions', 'flexible-shipping'); return $columns; } public function shipping_manifest_row_actions($actions, $post) { if ($post->post_type == 'shipping_manifest') { $actions = []; } return $actions; } public function manage_shipping_manifest_posts_custom_column($column) { global $post; global $manifest; $integrations = \apply_filters('flexible_shipping_integration_options', []); if (empty($manifest) || $manifest->get_id() != $post->ID) { $manifest = fs_get_manifest($post->ID); } if ($column == 'manifest_date') { echo $manifest->get_date(); } if ($column == 'integration') { echo $integrations[$manifest->get_integration()]; } if ($column == 'external_number') { $download_manifest_url = \admin_url('edit.php?post_type=shipping_manifest&flexible_shipping_download_manifest=' . $manifest->get_id() . '&nonce=' . \wp_create_nonce('flexible_shipping_download_manifest')); include __DIR__ . '/views/column-number.php'; } if ($column == 'shipment_count') { echo \count($manifest->get_meta('_shipments', [])); } if ($column == 'actions') { if ($manifest->get_status() != 'trash') { $download_manifest_url = \admin_url('edit.php?post_type=shipping_manifest&flexible_shipping_download_manifest=' . $manifest->get_id() . '&nonce=' . \wp_create_nonce('flexible_shipping_download_manifest')); $cancel_url = \admin_url('edit.php?post_type=shipping_manifest&flexible_shipping_cancel_manifest=' . $manifest->get_id() . '&nonce=' . \wp_create_nonce('flexible_shipping_cancel_manifest')); include __DIR__ . '/views/column-actions.php'; } } } public function woocommerce_screen_ids($screen_ids) { $screen_ids[] = 'edit-shipping_manifest'; $screen_ids[] = 'shipping_manifest'; return $screen_ids; } public function bulk_actions_edit_shipping_manifest($bulk_actions) { $bulk_actions = []; return $bulk_actions; } public function cancel_manifest() { if (!empty($_GET['flexible_shipping_cancel_manifest']) && !empty($_GET['nonce'])) { $nonce = \sanitize_text_field($_GET['nonce']); if (!\wp_verify_nonce($nonce, 'flexible_shipping_cancel_manifest')) { echo \__('Invalid nonce!', 'flexible-shipping'); exit; } $sendback = \admin_url('edit.php?post_type=shipping_manifest'); try { $shipping_manifest_id = \sanitize_key($_GET['flexible_shipping_cancel_manifest']); $shipping_manifest = fs_get_manifest($shipping_manifest_id); $shipping_manifest->cancel(); fs_delete_manifest($shipping_manifest); $sendback .= '&success=1'; \wp_safe_redirect($sendback); exit; } catch (\Exception $e) { $sendback .= '&success=0&message=' . \sprintf(\__('Wystąpił błąd: %1$s', 'woocommerce-paczkomaty-inpost'), $e->getMessage()); \wp_safe_redirect($sendback); exit; } } } public function download_manifest() { if (!empty($_GET['flexible_shipping_download_manifest']) && !empty($_GET['nonce'])) { $nonce = \sanitize_text_field($_GET['nonce']); if (!\wp_verify_nonce($nonce, 'flexible_shipping_download_manifest')) { echo \__('Invalid nonce!', 'flexible-shipping'); } try { $shipping_manifest_id = \sanitize_key($_GET['flexible_shipping_download_manifest']); $shipping_manifest = fs_get_manifest($shipping_manifest_id); $manifest = $shipping_manifest->get_manifest(); \header("Content-type: application/octet-stream"); \header("Content-Disposition: attachment; filename=" . $manifest['file_name']); echo $manifest['content']; } catch (\FSVendor\WPDesk\FS\Shipment\Manifest\Exception $e) { echo $e->getMessage(); } exit; } } public function hide_publish_metabox() { \remove_meta_box('submitdiv', 'shipping_manifest', 'side'); } public function trash_shipping_manifest($post_id) { $manifest = fs_get_manifest($post_id); $shipments_posts = \get_posts(['posts_per_page' => -1, 'post_type' => 'shipment', 'post_status' => 'any', 'meta_key' => '_manifest', 'meta_value' => $post_id]); foreach ($shipments_posts as $shipment_post) { $shipment = fs_get_shipment($shipment_post->ID); $shipment->delete_meta('_manifest'); $shipment->update_status('fs-confirmed'); $shipment->save(); } $manifest->delete_meta('_shipments'); $manifest->save(); } public function restrict_manage_posts() { global $typenow; if ('shipping_manifest' == $typenow) { $integrations = \apply_filters('flexible_shipping_integration_options', []); foreach ($integrations as $key => $integration) { if (!\class_exists('WPDesk_Flexible_Shipping_Manifest_' . $key)) { unset($integrations[$key]); } } $integration = ''; if (isset($_GET['flexible_shipping_integration_filter'])) { $integration = \sanitize_key($_GET['flexible_shipping_integration_filter']); } include __DIR__ . '/views/filter-form.php'; } } /** * @param WP_Query $query . */ public function parse_query($query) { global $pagenow; if ('edit.php' == $pagenow && \is_admin() && isset($query->query_vars['post_type']) && $query->query_vars['post_type'] == 'shipping_manifest') { $integration = ''; if (isset($_GET['flexible_shipping_integration_filter'])) { $integration = \sanitize_key($_GET['flexible_shipping_integration_filter']); } if ($integration != '') { if ($integration != '') { if (!isset($query->query_vars['meta_query'])) { $query->query_vars['meta_query'] = []; } $meta_query = []; $meta_query['key'] = '_integration'; $meta_query['value'] = $integration; $query->query_vars['meta_query'][] = $meta_query; } } } } }