set_default_values_for_settings(); $this->define_constants(); $this->init_hooks(); } public function declare_wc_hpos_compatibility(): void { if (class_exists('Automattic\WooCommerce\Utilities\FeaturesUtil')) { FeaturesUtil::declare_compatibility('custom_order_tables', SENDY_WC_PLUGIN_BASENAME); } } public function declare_checkout_blocks_incompatibility(): void { if ( class_exists( '\Automattic\WooCommerce\Utilities\FeaturesUtil' ) ) { FeaturesUtil::declare_compatibility( 'cart_checkout_blocks', SENDY_WC_PLUGIN_BASENAME, false ); } } private function define_constants(): void { $upload_dir = wp_upload_dir(); define('SENDY_WC_PLUGIN_DIR_PATH', untrailingslashit(plugin_dir_path(SENDY_WC_PLUGIN_FILE))); define('SENDY_WC_PLUGIN_DIR_URL', untrailingslashit(plugins_url('/', SENDY_WC_PLUGIN_FILE))); define('SENDY_WC_VERSION', self::VERSION); define('SENDY_SETTINGS_ID', self::SETTINGS_ID); define('SENDY_LOG_DIR', $upload_dir['basedir'] . '/sendy-logs'); define('SENDY_UPLOAD_DIR', $upload_dir['basedir'] . '/sendy'); } private function init_hooks(): void { add_action('woocommerce_shipping_methods', [$this, 'add_shipping_methods']); add_action('init', [$this, 'initialize_modules']); if (is_admin()) { add_action('admin_notices', [$this, 'display_admin_notices']); } } public function initialize_modules(): void { $this->modules['oauth'] = new OAuth(); $this->modules['admin_settings'] = new Settings(); if (sendy_is_authenticated()) { $this->modules['orders_bulk_actions'] = new BulkActions(); $this->modules['orders_list'] = new OrderList(); $this->modules['orders_single'] = new Single(); $this->modules['checkout'] = new Checkout(); } } /** * @param array $shippingMethods * @return array */ public function add_shipping_methods(array $shippingMethods): array { $shippingMethods[PickupPointDelivery::ID] = PickupPointDelivery::class; return $shippingMethods; } public function display_admin_notices(): void { if (is_array(get_option('sendy_flash_admin_messages'))) { $messages = get_option('sendy_flash_admin_messages'); foreach ($messages as $message) { printf('
%s
', esc_html($message['type']), esc_html($message['message'])); } delete_option('sendy_flash_admin_messages'); } } public function set_default_values_for_settings(): void { $defaultValues = [ 'sendy_import_weight' => true, 'sendy_import_products' => true, 'sendy_mark_order_as_completed' => 'after-shipment-created', ]; foreach ($defaultValues as $option => $defaultValue) { if (get_option($option) === false) { update_option($option, $defaultValue); } } } }