hesabixWCPlugin/includes/class-hesabix.php
2025-08-05 17:24:52 +03:30

160 lines
11 KiB
PHP

<?php
/**
* Main Hesabix Plugin Class
*
* @package Hesabix
* @author Mohammad Rezai
* @author URI https://pirouz.xyz
* @since 1.0.0
*/
class Hesabix
{
protected $loader;
protected $plugin_name;
protected $version;
public function __construct()
{
if (defined('HESABIX_VERSION')) {
$this->version = HESABIX_VERSION;
} else {
$this->version = '0.0.1';
}
$this->plugin_name = 'hesabix';
$this->load_dependencies();
$this->set_locale();
$this->define_admin_hooks();
}
private function load_dependencies()
{
require_once plugin_dir_path(dirname(__FILE__)) . '/includes/class-hesabix-loader.php';
require_once plugin_dir_path(dirname(__FILE__)) . '/includes/class-hesabix-i18n.php';
require_once plugin_dir_path(dirname(__FILE__)) . '/admin/class-hesabix-admin.php';
require_once plugin_dir_path(dirname(__FILE__)) . '/includes/class-hesabix-api.php';
$this->loader = new Hesabix_Loader();
require_once plugin_dir_path(dirname(__FILE__)) . '/includes/class-hesabix-validation.php';
$this->loader = new Hesabix_Loader();
}
private function set_locale()
{
$plugin_i18n = new Hesabix_i18n();
$this->loader->add_action('plugins_loaded', $plugin_i18n, 'load_plugin_textdomain');
}
private function define_admin_hooks()
{
$plugin_admin = new Hesabix_Admin($this->get_plugin_name(), $this->get_version());
$this->loader->add_action('admin_enqueue_scripts', $plugin_admin, 'enqueue_styles');
$this->loader->add_action('admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts');
$this->loader->add_filter('query_vars', $plugin_admin, 'hesabix_query_vars');
$this->loader->add_action('parse_request', $plugin_admin, 'hesabix_parse_request');
$this->loader->add_action('wp_ajax_nopriv_handle_webhook_request', $plugin_admin, 'hesabix_parse_request');
$this->loader->add_action('wp_ajax_handle_webhook_request', $plugin_admin, 'hesabix_parse_request');
if (in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) {
$this->loader->add_action('init', $plugin_admin, 'hesabix_init_internal');
if (get_option('hesabix_live_mode')) {
if (get_option('hesabix_hesabix_default_currency') === 0) {
$this->loader->add_action('admin_notices', $plugin_admin, 'hesabix_currency_notice');
}
if (get_option('hesabix_show_hesabix_code_in_excel_export', 'no') == 'yes' || get_option('hesabix_show_hesabix_code_in_excel_export', 0) == 1) {
$this->loader->add_filter('woocommerce_product_export_column_names', $plugin_admin, 'admin_product_add_column');
$this->loader->add_filter('woocommerce_product_export_product_default_columns', $plugin_admin, 'admin_product_add_column');
$this->loader->add_filter('woocommerce_product_export_rows', $plugin_admin, 'admin_product_export_rows', 10, 2);
}
if (get_option('hesabix_show_product_code_in_products_page') === 'yes' || get_option('hesabix_show_product_code_in_products_page', 0) == 1) {
$this->loader->add_filter('manage_edit-product_columns', $plugin_admin, 'admin_products_hesabixId_column', 12);
$this->loader->add_action('manage_product_posts_custom_column', $plugin_admin, 'admin_products_hesabixId_column_content', 10, 2);
$this->loader->add_filter('manage_edit-product_sortable_columns', $plugin_admin, 'admin_products_hesabixId_column');
}
$this->loader->add_action('custom_product_tabs', $plugin_admin, 'hesabix_general_notices');
$this->loader->add_filter('bulk_actions-edit-shop_order', $plugin_admin, 'custom_orders_list_bulk_action', 20, 1);
$this->loader->add_filter('handle_bulk_actions-edit-shop_order', $plugin_admin, 'custom_orders_list_bulk_action_run', 10, 3);
if (get_option('woocommerce_custom_orders_table_enabled') == 'yes') {
$this->loader->add_filter('woocommerce_shop_order_list_table_columns', $plugin_admin, 'custom_hesabix_column_order_list', 20);
$this->loader->add_action('woocommerce_shop_order_list_table_custom_column', $plugin_admin, 'custom_orders_list_column_content', 10, 2);
} else {
$this->loader->add_filter('manage_edit-shop_order_columns', $plugin_admin, 'custom_hesabix_column_order_list', 20);
$this->loader->add_action('manage_shop_order_posts_custom_column', $plugin_admin, 'custom_orders_list_column_content', 20, 2);
}
$this->loader->add_filter('woocommerce_checkout_fields', $plugin_admin, 'add_additional_fields_to_checkout', 10, 3);
$this->loader->add_action('woocommerce_admin_order_data_after_billing_address', $plugin_admin, 'show_additional_fields_in_order_detail', 10, 3);
$this->loader->add_action('woocommerce_order_status_changed', $plugin_admin, 'hesabix_hook_order_status_change', 10, 3);
$this->loader->add_filter('woocommerce_order_status_changed', $plugin_admin, 'hesabix_hook_payment_confirmation', 11, 3);
$this->loader->add_action('woocommerce_new_order', $plugin_admin, 'hesabix_hook_new_order', 11, 2);
$this->loader->add_action('edit_user_profile', $plugin_admin, 'hesabix_hook_edit_user');
$this->loader->add_action('user_register', $plugin_admin, 'hesabix_hook_user_register');
$this->loader->add_action('personal_options_update', $plugin_admin, 'hesabix_hook_user_register');
$this->loader->add_action('profile_update', $plugin_admin, 'hesabix_hook_user_register');
$this->loader->add_action('delete_user', $plugin_admin, 'hesabix_hook_delete_user');
$this->loader->add_action('woocommerce_update_product', $plugin_admin, 'hesabix_hook_new_product');
$this->loader->add_action('before_delete_post', $plugin_admin, 'hesabix_hook_delete_product');
$this->loader->add_action('woocommerce_product_options_general_product_data', $plugin_admin, 'hesabix_hook_product_options_general_product_data');
$this->loader->add_action('woocommerce_process_product_meta', $plugin_admin, 'hesabix_hook_process_product_meta');
$this->loader->add_action('woocommerce_product_after_variable_attributes', $plugin_admin, 'hesabix_hook_product_after_variable_attributes', 10, 3);
$this->loader->add_action('woocommerce_save_product_variation', $plugin_admin, 'hesabix_hook_save_product_variation', 10, 3);
$this->loader->add_filter('woocommerce_product_data_tabs', $plugin_admin, 'add_hesabix_product_data_tab');
$this->loader->add_action('woocommerce_product_data_panels', $plugin_admin, 'add_hesabix_product_data_fields');
} elseif (!get_option('hesabix_live_mode')) {
if (get_option('hesabix_business_expired')) {
$this->loader->add_action('admin_notices', $plugin_admin, 'hesabix_business_expired_notice');
} else {
$this->loader->add_action('admin_notices', $plugin_admin, 'hesabix_live_mode_notice');
}
}
$this->loader->add_filter('wp_ajax_adminExportProducts', $plugin_admin, 'adminExportProductsCallback');
$this->loader->add_filter('wp_ajax_adminImportProducts', $plugin_admin, 'adminImportProductsCallback');
$this->loader->add_filter('wp_ajax_adminExportProductsOpeningQuantity', $plugin_admin, 'adminExportProductsOpeningQuantityCallback');
$this->loader->add_filter('wp_ajax_adminExportCustomers', $plugin_admin, 'adminExportCustomersCallback');
$this->loader->add_filter('wp_ajax_adminSyncChanges', $plugin_admin, 'adminSyncChangesCallback');
$this->loader->add_filter('wp_ajax_admin_sync_products', $plugin_admin, 'admin_sync_products_callback');
$this->loader->add_filter('wp_ajax_admin_sync_orders', $plugin_admin, 'admin_sync_orders_callback');
$this->loader->add_filter('wp_ajax_admin_update_products', $plugin_admin, 'admin_update_products_callback');
$this->loader->add_filter('wp_ajax_admin_update_wc_products', $plugin_admin, 'admin_update_wc_products_callback');
$this->loader->add_filter('wp_ajax_adminUpdateProductsWithFilter', $plugin_admin, 'adminUpdateProductsWithFilterCallback');
$this->loader->add_filter('wp_ajax_adminSubmitInvoice', $plugin_admin, 'adminSubmitInvoiceCallback');
$this->loader->add_filter('wp_ajax_hesabix_update_customers', $plugin_admin, 'hesabix_update_customers_ajax');
$this->loader->add_filter('wp_ajax_adminCleanLogFile', $plugin_admin, 'adminCleanLogFileCallback');
$this->loader->add_filter('wp_ajax_adminClearPluginData', $plugin_admin, 'adminClearPluginDataCallback', 10, 4);
$this->loader->add_filter('wp_ajax_adminInstallPluginData', $plugin_admin, 'adminInstallPluginDataCallback', 10, 4);
$this->loader->add_filter('wp_ajax_adminChangeProductCode', $plugin_admin, 'adminChangeProductCodeCallback');
$this->loader->add_filter('wp_ajax_adminDeleteProductLink', $plugin_admin, 'adminDeleteProductLinkCallback');
$this->loader->add_filter('wp_ajax_adminUpdateProduct', $plugin_admin, 'adminUpdateProductCallback');
$this->loader->add_filter('wp_ajax_adminChangeProductsCode', $plugin_admin, 'adminChangeProductsCodeCallback');
$this->loader->add_filter('wp_ajax_adminDeleteProductsLink', $plugin_admin, 'adminDeleteProductsLinkCallback');
$this->loader->add_filter('wp_ajax_adminUpdateProductAndVariations', $plugin_admin, 'adminUpdateProductAndVariationsCallback');
$this->loader->add_filter('wp_ajax_admin_get_home_stats', $plugin_admin, 'admin_get_home_stats_callback');
$this->loader->add_filter('wp_ajax_admin_check_for_updates', $plugin_admin, 'admin_check_for_updates_callback');
$this->loader->add_filter('wp_ajax_adminSaveApiSettings', $plugin_admin, 'adminSaveApiSettingsCallback');
$this->loader->add_filter('wp_ajax_adminTestApiConnection', $plugin_admin, 'adminTestApiConnectionCallback');
}
}
public function run()
{
$this->loader->run();
}
public function get_plugin_name()
{
return $this->plugin_name;
}
public function get_loader()
{
return $this->loader;
}
public function get_version()
{
return $this->version;
}
}