Old Business Seller Management file

 <?php

/*

Plugin Name: Business Seller Management

Plugin URI: https://www.gsmalo.com

Description: A plugin to manage your business sales, sellers, and transactions efficiently.

Version: 1.0

Author: GSM Abdullah Al Masud

Author URI: https://www.gsmalo.com

Text Domain: business-seller-management

*/


// Prevent direct access

if ( ! defined('ABSPATH') ) {

    exit;

}


// Define plugin constants

define('BSM_PLUGIN_PATH', plugin_dir_path(__FILE__));

define('BSM_PLUGIN_URL', plugin_dir_url(__FILE__));


// ----- Include necessary files ----- //


// Admin-related files

require_once BSM_PLUGIN_PATH . 'includes/admin/admin-dashboard.php';

require_once BSM_PLUGIN_PATH . 'includes/admin/all-sales.php';

require_once BSM_PLUGIN_PATH . 'includes/admin/all-logs.php';

require_once BSM_PLUGIN_PATH . 'includes/admin/status.php';

require_once BSM_PLUGIN_PATH . 'includes/admin/reports.php';

require_once BSM_PLUGIN_PATH . 'includes/admin/settings.php';

require_once BSM_PLUGIN_PATH . 'includes/admin/clear-tables.php';

require_once BSM_PLUGIN_PATH . 'includes/admin/fix-database.php';

require_once BSM_PLUGIN_PATH . 'includes/admin/role-permissions.php';

require_once BSM_PLUGIN_PATH . 'includes/seller/statas-log-notes.php';

require_once BSM_PLUGIN_PATH . 'includes/admin/advanced-error-guard.php';

require_once BSM_PLUGIN_PATH . 'includes/admin/balance-adjustment-handler.php';


// Seller-related files (essential)

require_once BSM_PLUGIN_PATH . 'includes/seller/submit-sale.php';

require_once BSM_PLUGIN_PATH . 'includes/seller/status-update.php';

require_once BSM_PLUGIN_PATH . 'includes/seller/notes.php'; // For AJAX note handling

require_once BSM_PLUGIN_PATH . 'includes/point-system.php';


// Include AJAX functions on every admin-ajax.php request

if ( defined('DOING_AJAX') && DOING_AJAX ) {

    require_once BSM_PLUGIN_PATH . 'includes/seller/ajax-functions.php';

}


// Seller Dashboard files (shortcodes for separate pages)

require_once BSM_PLUGIN_PATH . 'includes/seller/dashboard.php';      // [bsm_seller_dashboard_main]

require_once BSM_PLUGIN_PATH . 'includes/seller/sale.php';           // [bsm_seller_dashboard_sale]

require_once BSM_PLUGIN_PATH . 'includes/seller/report.php';         // [bsm_seller_dashboard_report]

require_once BSM_PLUGIN_PATH . 'includes/seller/settings.php';       // [bsm_seller_dashboard_settings]


// ----- Include the install-tables file (for automatic table/column creation) ----- //

require_once BSM_PLUGIN_PATH . 'includes/install-tables.php';


/**

 * Hook to include the Balance Adjustments template in the admin context,

 * after all pluggable functions (e.g. wp_create_nonce) are available.

 * 

 * **Changed:** do NOT include on AJAX requests, to keep admin-ajax.php JSON‑only.

 */

function bsm_load_balance_adjustments_template() {

    if (

        is_admin() 

        && ! ( defined('DOING_AJAX') && DOING_AJAX ) 

        && file_exists( BSM_PLUGIN_PATH . 'templates/admin/balance-adjustments.php' ) 

    ) {

        require_once BSM_PLUGIN_PATH . 'templates/admin/balance-adjustments.php';

    }

}

add_action( 'admin_init', 'bsm_load_balance_adjustments_template' );


/**

 * Create the 'Seller' role with minimal capabilities.

 */

function bsm_add_seller_role() {

    add_role(

        'seller',

        'Seller',

        array(

            'read' => true,

            // অতিরিক্ত capability প্রয়োজনে এখানে যুক্ত করা যেতে পারে।

        )

    );

}


/**

 * Remove the 'Seller' role.

 */

function bsm_remove_seller_role() {

    remove_role('seller');

}


// ----- Activation & Deactivation Hooks ----- //

register_activation_hook(__FILE__, 'bsm_activate_plugin');

register_deactivation_hook(__FILE__, 'bsm_deactivate_plugin');


/**

 * Activation hook: create/update tables, add seller role

 */

function bsm_activate_plugin() {

    // Create or update database tables (now from install-tables.php)

    bsm_create_tables();


    // Add the 'Seller' role

    bsm_add_seller_role();

}


/**

 * Deactivation hook: optionally remove the 'Seller' role

 */

function bsm_deactivate_plugin() {

    // Remove the 'Seller' role on deactivation (optional)

    bsm_remove_seller_role();

    // অন্যান্য ডিঅ্যাক্টিভেশন routines এখানে যোগ করা যেতে পারে।

}


/**

 * Admin Menu Setup

 */

add_action('admin_menu', 'bsm_admin_menu');


function bsm_admin_menu() {

    add_menu_page(

        'Seller Management',

        'Seller Management',

        'manage_options',

        'bsm-admin-dashboard',

        'bsm_admin_dashboard_page',

        'dashicons-chart-area',

        6

    );


    add_submenu_page(

        'bsm-admin-dashboard',

        'Admin Dashboard',

        'Admin Dashboard',

        'manage_options',

        'bsm-admin-dashboard',

        'bsm_admin_dashboard_page'

    );


    add_submenu_page(

        'bsm-admin-dashboard',

        'Seller Dashboard',

        'Seller Dashboard',

        'manage_options',

        'bsm-seller-dashboard',

        'bsm_seller_dashboard_page'

    );


    add_submenu_page(

        'bsm-admin-dashboard',

        'All Sales',

        'All Sales',

        'manage_options',

        'bsm-all-sales',

        'bsm_all_sales_page'

    );


    add_submenu_page(

        'bsm-admin-dashboard',

        'All Logs',

        'All Logs',

        'manage_options',

        'bsm-all-logs',

        'bsm_all_logs_page'

    );


    add_submenu_page(

        'bsm-admin-dashboard',

        'Reports',

        'Reports',

        'manage_options',

        'bsm-reports',

        'bsm_reports_page'

    );


    add_submenu_page(

        'bsm-admin-dashboard',

        'Status',

        'Status',

        'manage_options',

        'bsm-status',

        'bsm_status_page'

    );


    add_submenu_page(

        'bsm-admin-dashboard',

        'Settings',

        'Settings',

        'manage_options',

        'bsm-settings',

        'bsm_settings_page'

    );


    // নতুন "Status Control" মেনু যুক্ত করা হলো

    add_submenu_page(

        'bsm-admin-dashboard',

        'Status Control',

        'Status Control',

        'manage_options',

        'bsm-status-control',

        'bsm_status_control_page'

    );


    // নতুন "gsmalo.org-transaction" মেনু যুক্ত করা হলো

    add_submenu_page(

        'bsm-admin-dashboard',

        'gsmalo.org-transaction',

        'gsmalo.org-transaction',

        'manage_options',

        'gsmalo-org-transaction',

        'bsm_gsmalo_org_transaction_page'

    );

}


/**

 * Function to render the "Status Control" page.

 */

function bsm_status_control_page() {

    include BSM_PLUGIN_PATH . 'templates/admin/settings/status-control.php';

}


/**

 * New Function: Render the gsmalo.org Transaction page.

 */

function bsm_gsmalo_org_transaction_page() {

    include BSM_PLUGIN_PATH . 'templates/admin/gsmalo-org-transaction.php';

}


/**

 * Shortcode for Seller Point Report Page

 */

function bsm_point_report_shortcode() {

    ob_start();

    include BSM_PLUGIN_PATH . 'templates/seller/point-report.php';

    return ob_get_clean();

}

add_shortcode('bsm_point_report', 'bsm_point_report_shortcode');


/**

 * AJAX handler for fixing a single Warning tag in a transaction.

 */

add_action('wp_ajax_bsm_fix_warning', 'bsm_fix_warning_ajax_handler');

function bsm_fix_warning_ajax_handler() {

    if ( ! current_user_can('manage_options') ) {

        wp_send_json_error('You do not have permission.');

    }


    $txn_id = isset($_POST['transaction_id']) ? intval($_POST['transaction_id']) : 0;

    if ( $txn_id < 1 ) {

        wp_send_json_error('Invalid transaction ID.');

    }


    global $wpdb;

    $table = $wpdb->prefix . 'bsm_balance_adjustments';

    $row = $wpdb->get_row( $wpdb->prepare(

        "SELECT reason FROM {$table} WHERE id = %d",

        $txn_id

    ), ARRAY_A );


    if ( ! $row ) {

        wp_send_json_error('Transaction not found.');

    }


    $new_reason = str_ireplace('[warning]', '', $row['reason']);

    $new_reason = trim($new_reason);


    $updated = $wpdb->update(

        $table,

        array( 'reason' => $new_reason ),

        array( 'id' => $txn_id ),

        array( '%s' ),

        array( '%d' )

    );


    if ( $updated === false ) {

        wp_send_json_error('Database error.');

    }


    wp_send_json_success( array( 'message' => 'Warning removed.' ) );

}


Comments

Popular posts from this blog

test

"পেমেন্ট মেথড" ব্যালেন্স যোগ বিয়গ