plugin = $plugin; $this->hooks(); } public function hooks() { add_action( 'init', array( $this, 'register_post_types' ), 20 ); add_action( 'admin_init', array( $this, 'cancel_manifest' ), 20 ); add_action( 'admin_init', array( $this, 'download_manifest' ), 20 ); add_action( 'admin_menu', array( $this, 'admin_menu' ), 199 ); add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ), 20, 2 ); add_action( 'trash_shipping_manifest', array( $this, 'trash_shipping_manifest' ) ); add_filter( 'manage_edit-shipping_manifest_columns', array( $this, 'manage_edit_shipping_manifest_columns' ), 11 ); add_action( 'manage_shipping_manifest_posts_custom_column', array( $this, 'manage_shipping_manifest_posts_custom_column' ), 11 ); add_filter( 'post_row_actions', array( $this, 'shipping_manifest_row_actions' ), 10, 2 ) ; add_action( 'do_meta_boxes', array( $this, 'hide_publish_metabox' ) ); add_filter( 'woocommerce_screen_ids', array( $this, 'woocommerce_screen_ids' ) ); add_filter( 'bulk_actions-edit-shipping_manifest', array( $this, 'bulk_actions_edit_shipping_manifest' ) ); add_action( 'restrict_manage_posts', array( $this, 'restrict_manage_posts' ), 9999 ); add_filter( 'parse_query', array( $this, 'parse_query' ), 999 ); } /** * Register post types. */ public function register_post_types() { if ( post_type_exists( 'shipping_manifest' ) ) { return; } register_post_type( 'shipping_manifest', array( 'labels' => array( 'name' => __( 'Shipping Manifests', 'flexible-shipping' ), 'singular_name' => __( 'Shipping Manifest', 'flexible-shipping' ), 'menu_name' => __( 'Shipping Manifests', 'flexible-shipping' ), 'parent_item_colon' => '', 'all_items' => __( 'Shipping Manifests', 'flexible-shipping' ), 'view_item' => __( 'View Shipping Manifests', 'flexible-shipping' ), 'add_new_item' => __( 'Add new Shipping Manifest', 'flexible-shipping' ), 'add_new' => __( 'Add new Shipping Manifests', 'flexible-shipping' ), 'edit_item' => __( 'Edit Shipping Manifest', 'flexible-shipping' ), 'update_item' => __( 'Save Shipping Manifest', 'flexible-shipping' ), 'search_items' => __( 'Search Shipping Manifests', 'flexible-shipping' ), 'not_found' => __( 'Shipping Manifests not found', 'flexible-shipping' ), 'not_found_in_trash' => __( 'Shipping Manifests not found in trash', 'flexible-shipping' ) ), 'description' => __( 'Shipping Manifests.', 'flexible-shipping' ), 'public' => false, 'show_ui' => true, 'capability_type' => 'post', 'capabilities' => array( 'create_posts' => false ), 'map_meta_cap' => true, 'publicly_queryable' => false, 'exclude_from_search' => true, 'hierarchical' => false, 'query_var' => true, 'supports' => array( 'title' ), 'has_archive' => false, 'show_in_nav_menus' => false, 'show_in_menu' => 'edit.php?post_type=shop_order', 'menu_icon' => 'dashicons-upload', ) ); } public function admin_menu() { $show_in_menu = current_user_can( 'manage_woocommerce' ) ? 'woocommerce' : false; if ( apply_filters( 'flexible_shipping_has_manifests', false ) ) { $slug = add_submenu_page( $show_in_menu, __( 'Shipping Manifests', '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_meta_box', __('Shipping manifest data', 'flexible-shipping'), array( $this, 'metabox' ), 'shipping_manifest', 'normal', 'high' ); */ add_meta_box( 'shipping_manifest_shipments', __('Shipments', 'flexible-shipping'), array( $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', array() ); $shipments = array(); foreach ( $shipments_array as $shipment_id ) { $shipments[] = fs_get_shipment( $shipment_id ); } include( 'views/manifest-metabox.php' ); /* echo "
";
        print_r($shipments);
        echo "
"; */ } 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 = array(); } return $actions; } public function manage_shipping_manifest_posts_custom_column( $column ) { global $post; global $manifest; $integrations = apply_filters( 'flexible_shipping_integration_options', array() ); 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( 'views/column-number.php' ); } if ( $column == 'shipment_count' ) { echo count( $manifest->get_meta( '_shipments', array() ) ); } 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( '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 = array(); return $bulk_actions; } public function cancel_manifest() { if ( !empty( $_GET['flexible_shipping_cancel_manifest'] ) && !empty( $_GET['nonce'] ) ) { $nonce = $_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 = $_GET['flexible_shipping_cancel_manifest']; $shipping_manifest = fs_get_manifest( $shipping_manifest_id ); $shipping_manifest->cancel(); fs_delete_manifest( $shipping_manifest ); wp_redirect( $sendback ); exit(); } catch ( Exception $e ) { wp_redirect( $sendback ); exit(); } } } public function download_manifest() { if ( !empty( $_GET['flexible_shipping_download_manifest'] ) && !empty( $_GET['nonce'] ) ) { $nonce = $_GET['nonce']; if ( !wp_verify_nonce( $nonce, 'flexible_shipping_download_manifest' ) ) { echo __( 'Invalid nonce!', 'flexible-shipping' ); } try { $shipping_manifest_id = $_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 ( 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( array( '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', array() ); 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 = $_GET['flexible_shipping_integration_filter']; } include( 'views/filter-form.php' ); } } public function parse_query( $query ) { global $pagenow; $type = 'shipping_manifest'; if ( isset( $_GET['post_type'] ) ) { $type = $_GET['post_type']; } if ( isset( $query->query_vars['post_type'] ) && $query->query_vars['post_type'] == 'shipping_manifest' ) { if ( 'shipping_manifest' == $type && is_admin() && 'edit.php' == $pagenow ) { $integration = ''; if ( isset( $_GET['flexible_shipping_integration_filter'] ) ) { $integration = $_GET['flexible_shipping_integration_filter']; } if ( $integration != '' ) { if ($integration != '') { if (!isset($query->query_vars['meta_query'])) { $query->query_vars['meta_query'] = array(); } $meta_query = array(); $meta_query['key'] = '_integration'; $meta_query['value'] = $integration; $query->query_vars['meta_query'][] = $meta_query; } } } } } }