HEX
Server: nginx/1.27.1
System: Linux in-4 5.15.0-131-generic #141-Ubuntu SMP Fri Jan 10 21:18:28 UTC 2025 x86_64
User: ilikadirect (1186)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system,proc_open,popen,parse_ini_file,show_source
Upload Files
File: /storage/v6964/ilikadirect/public_html/wp-content/plugins/wc-pre-order/includes/Admin/Preorder.php
<?php

namespace SpringDevs\PreOrder\Admin;

/**
 * Admin Preorder Handler
 *
 * Class Preorder
 * @package SpringDevs\PreOrder\Admin
 */
class Preorder
{
    /**
     * Preorder constructor.
     */
    public function __construct()
    {
        add_action("init", [$this, "create_post_type"]);
        add_action("admin_menu", [$this, "create_admin_menu"]);
        add_filter('bulk_actions-edit-sdevs_preorder', [$this, 'remove_bulk_action']);
        add_filter('post_row_actions', [$this, 'post_row_actions'], 10, 2);
        add_action('add_meta_boxes', [$this, "create_meta_boxes"]);
        add_filter('manage_edit-sdevs_preorder_columns', [$this, 'add_custom_columns']);
        add_action('manage_sdevs_preorder_posts_custom_column', [$this, 'add_custom_columns_data'], 10, 2);
    }

    /**
     *Create Custom Post Type : sdevs_preorder
     */
    public function create_post_type()
    {
        $labels = array(
            "name" => __("Preorders", "sdevs_preorder"),
            "singular_name" => __("Preorder", "sdevs_preorder"),
            'name_admin_bar'        => __('Preorder\'s', 'sdevs_preorder'),
            'archives'              => __('Item Archives', 'sdevs_preorder'),
            'attributes'            => __('Item Attributes', 'sdevs_preorder'),
            'parent_item_colon'     => __('Parent :', 'sdevs_preorder'),
            'all_items'             => __('Preorders', 'sdevs_preorder'),
            'add_new_item'          => __('Add New Preorder', 'sdevs_preorder'),
            'add_new'               => __('Add Preorder', 'sdevs_preorder'),
            'new_item'              => __('New Preorder', 'sdevs_preorder'),
            'edit_item'             => __('View Preorder', 'sdevs_preorder'),
            'update_item'           => __('Update Preorder', 'sdevs_preorder'),
            'view_item'             => __('View Preorder', 'sdevs_preorder'),
            'view_items'            => __('View Preorder', 'sdevs_preorder'),
            'search_items'          => __('Search Preorder', 'sdevs_preorder'),
        );

        $args = array(
            "label" => __("Preorders", "sdevs_preorder"),
            "labels" => $labels,
            "description" => "",
            "public" => false,
            "publicly_queryable" => true,
            "show_ui" => true,
            "delete_with_user" => false,
            "show_in_rest" => true,
            "rest_base" => "",
            "rest_controller_class" => "WP_REST_Posts_Controller",
            "has_archive" => false,
            "show_in_menu" => false,
            "show_in_nav_menus" => false,
            "exclude_from_search" => false,
            "capability_type" => "post",
            "map_meta_cap" => true,
            'capabilities' => array(
                'create_posts' => false
            ),
            "hierarchical" => false,
            "rewrite" => array("slug" => "sdevs_preorder", "with_front" => true),
            "query_var" => true,
            "supports" => array("title"),
        );

        register_post_type("sdevs_preorder", $args);
    }

    public function create_admin_menu()
    {
        $parent_slug = "edit.php?post_type=sdevs_preorder";
        add_menu_page("Preorders", "Preorders", "manage_options", $parent_slug, false, "dashicons-cart", 55);
        remove_meta_box('submitdiv', 'sdevs_preorder', 'side');
    }

    public function remove_bulk_action($actions)
    {
        unset($actions['edit']);
        return $actions;
    }

    /**
     * @param $unset_actions
     * @param $post
     * @return mixed
     */
    public function post_row_actions($unset_actions, $post)
    {
        global $current_screen;
        if ($current_screen->post_type != 'sdevs_preorder')
            return $unset_actions;
        unset($unset_actions['inline hide-if-no-js']);
        unset($unset_actions['view']);
        unset($unset_actions['edit']);
        return $unset_actions;
    }

    public function create_meta_boxes()
    {
        // Details
        add_meta_box(
            'sdevs_preorder_meta_fields',
            'Details',
            [$this, 'preorder_meta_fields'],
            'sdevs_preorder',
            'normal',
            'default'
        );

        // customer_info
        add_meta_box(
            'sdevs_preorder_customer_info',
            __('Customer Info', 'sdevs_preorder'),
            [$this, 'preorder_customer_info'],
            'sdevs_preorder',
            'side',
            'default'
        );
    }

    public function preorder_meta_fields()
    {
        $post_id = get_the_ID();
        $order_id = get_post_meta($post_id, '_order_id', true);
        $product_id = intval(get_post_meta($post_id, '_product_id', true));

        $order = wc_get_order($order_id);
        if ($order) :
            foreach ((array)$order->get_items() as $order_item) :
                if ($order_item['product_id'] === $product_id) :
                    $rels_date = 'N/A';
                    $item_rels_date = $order_item->get_meta('_relase_date', true);
                    if ($item_rels_date) {
                        $rels_date = date('F d, Y', strtotime($item_rels_date));
                    }
                    include 'views/pre-order-details.php';
                endif;
            endforeach;
        endif;
    }

    public function preorder_customer_info()
    {
        $order_id = get_post_meta(get_the_ID(), '_order_id', true);
        $order = wc_get_order($order_id);
        if (!$order) return;
        include 'views/pre-order-customer.php';
    }

    public function add_custom_columns($columns)
    {
        $columns['order'] = __('Order', 'sdevs_preorder');
        $columns['price'] = __('Price', 'sdevs_preorder');
        $columns['rels_date'] = __('Release date', 'sdevs_preorder');
        unset($columns['date']);
        $columns['date'] = __('Date', 'sdevs_preorder');
        return $columns;
    }

    public function add_custom_columns_data($column, $post_id)
    {
        $order_id = get_post_meta($post_id, '_order_id', true);
        $order = wc_get_order($order_id);
        if ($column === 'order') {
            if ($order) {
                echo '<a href="' . get_edit_post_link($order_id) . '" target="_blank">#' . $order_id . '</a>';
            } else {
                esc_html_e('Order not exixts !!', 'sdevs_preorder');
            }
        } elseif ($column === 'price') {
            if ($order) {
                $product_id = intval(get_post_meta($post_id, '_product_id', true));
                foreach ($order->get_items() as $order_item) {
                    if ($order_item['product_id'] === $product_id) {
                        echo wc_price($order_item->get_total());
                    }
                }
            } else {
                esc_html_e('Order not exixts !!', 'sdevs_preorder');
            }
        } elseif ($column === 'rels_date') {
            if ($order) {
                $product_id = intval(get_post_meta($post_id, '_product_id', true));
                foreach ($order->get_items() as $order_item) {
                    if ($order_item['product_id'] === $product_id) {
                        $rels_date = 'N/A';
                        $item_rels_date = $order_item->get_meta('_relase_date', true);
                        if ($item_rels_date) {
                            $rels_date = date('F d, Y', strtotime($item_rels_date));
                        }
                        echo $rels_date;
                    }
                }
            } else {
                esc_html_e('Order not exixts !!', 'sdevs_preorder');
            }
        }
    }
}