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
Post a Comment