' . esc_html__('Akkedli Connector', 'akkedli-connector') . ' ' . esc_html__('requires WooCommerce to be installed and active.', 'akkedli-connector') . '
'; } // Declare WooCommerce HPOS compatibility add_action('before_woocommerce_init', function () { if (class_exists('\Automattic\WooCommerce\Utilities\FeaturesUtil')) { \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility('custom_order_tables', __FILE__, true); \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility('orders_cache', __FILE__, true); } }); /** * Main Plugin Class */ class Akkedli_Connector { private static $instance = null; public static function get_instance() { if (null === self::$instance) { self::$instance = new self(); } return self::$instance; } public function __construct() { $this->includes(); $this->init_hooks(); } private function includes() { require_once AKKEDLI_PLUGIN_PATH . 'includes/class-akkedli-order-confirmation.php'; require_once AKKEDLI_PLUGIN_PATH . 'includes/class-akkedli-v2-bootstrap.php'; Akkedli_V2_Bootstrap::load(); require_once AKKEDLI_PLUGIN_PATH . 'includes/class-akkedli-settings.php'; require_once AKKEDLI_PLUGIN_PATH . 'includes/class-akkedli-order-handler.php'; require_once AKKEDLI_PLUGIN_PATH . 'includes/class-akkedli-api-handler.php'; require_once AKKEDLI_PLUGIN_PATH . 'includes/class-akkedli-legacy-connection-admin.php'; } private function init_hooks() { add_action('admin_menu', array($this, 'add_admin_menu')); add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_styles')); Akkedli_Order_Confirmation::register_admin_hooks(); add_action('init', array($this, 'register_custom_order_status')); add_filter('wc_order_statuses', array($this, 'add_custom_order_status')); add_filter('woocommerce_reports_order_statuses', array($this, 'include_status_in_reports')); add_action('admin_init', array('Akkedli_Legacy_Connection_Admin', 'handle')); // Initialize handlers add_action('init', array($this, 'init')); } public function init() { $outbox = Akkedli_V2_Bootstrap::init(); new Akkedli_Settings(); new Akkedli_Order_Handler($outbox); new Akkedli_API_Handler(); } public function register_custom_order_status() { register_post_status('wc-akkedli-confirmed', array( 'label' => _x('Confirmed by Akkedli', 'Order status', 'akkedli-connector'), 'public' => true, 'exclude_from_search' => false, 'show_in_admin_all_list' => true, 'show_in_admin_status_list' => true, 'label_count' => _n_noop( 'Confirmed by Akkedli (%s)', 'Confirmed by Akkedli (%s)', 'akkedli-connector' ), )); } public function add_custom_order_status($statuses) { $result = array(); foreach ($statuses as $key => $label) { $result[$key] = $label; if ('wc-processing' === $key) { $result['wc-akkedli-confirmed'] = _x( 'Confirmed by Akkedli', 'Order status', 'akkedli-connector' ); } } return $result; } public function include_status_in_reports($statuses) { $statuses[] = 'akkedli-confirmed'; return $statuses; } /** * Add admin menu */ public function add_admin_menu() { $icon = AKKEDLI_PLUGIN_URL . 'assets/images/akkedli-admin-menu.png'; add_menu_page( 'Akkedli', 'Akkedli', 'manage_woocommerce', 'akkedli-connector', array($this, 'render_settings_page'), $icon, 56 ); } /** * Render settings page */ public function render_settings_page() { include AKKEDLI_PLUGIN_PATH . 'templates/admin-settings.php'; } /** * Enqueue admin styles */ public function enqueue_admin_styles($hook) { if (strpos($hook, 'akkedli') === false) { return; } wp_enqueue_style( 'akkedli-admin-style', AKKEDLI_PLUGIN_URL . 'assets/css/admin.css', array(), AKKEDLI_VERSION ); wp_add_inline_style('akkedli-admin-style', ' .order-status.status-akkedli-confirmed, mark.order-status.status-akkedli-confirmed { background: #dcfce7 !important; color: #15803d !important; } '); } } // Initialize plugin add_action('plugins_loaded', function () { Akkedli_Connector::get_instance(); }); // Activation hook register_activation_hook(__FILE__, function () { require_once AKKEDLI_PLUGIN_PATH . 'includes/class-akkedli-v2-outbox-schema.php'; Akkedli_V2_Outbox_Schema::install(); flush_rewrite_rules(); }); // Deactivation hook register_deactivation_hook(__FILE__, function () { flush_rewrite_rules(); });