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_admin_save_api_settings', $plugin_admin, 'admin_save_api_settingsCallback'); $this->loader->add_filter('wp_ajax_admin_test_api_connection', $plugin_admin, 'admin_test_api_connectionCallback'); } } 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; } }