prefix . 'woonoow_licenses'; // Check if table exists if ($wpdb->get_var("SHOW TABLES LIKE '$table'") !== $table) { LicenseManager::create_tables(); } } /** * Handle module enable */ public static function on_module_enabled($module_id) { if ($module_id === 'licensing') { LicenseManager::create_tables(); } } /** * Add licensing fields to product edit page */ public static function add_product_licensing_fields() { global $post; if (!ModuleRegistry::is_enabled('licensing')) { return; } echo '
'; woocommerce_wp_checkbox([ 'id' => '_woonoow_licensing_enabled', 'label' => __('Enable Licensing', 'woonoow'), 'description' => __('Generate license keys for this product on purchase', 'woonoow'), ]); woocommerce_wp_text_input([ 'id' => '_woonoow_license_activation_limit', 'label' => __('Activation Limit', 'woonoow'), 'description' => __('Max activations per license (0 = use default, leave empty for unlimited)', 'woonoow'), 'type' => 'number', 'custom_attributes' => [ 'min' => '0', 'step' => '1', ], ]); woocommerce_wp_text_input([ 'id' => '_woonoow_license_expiry_days', 'label' => __('License Expiry (Days)', 'woonoow'), 'description' => __('Days until license expires (0 = never expires)', 'woonoow'), 'type' => 'number', 'custom_attributes' => [ 'min' => '0', 'step' => '1', ], ]); echo '
'; } /** * Save licensing fields */ public static function save_product_licensing_fields($post_id) { $licensing_enabled = isset($_POST['_woonoow_licensing_enabled']) ? 'yes' : 'no'; update_post_meta($post_id, '_woonoow_licensing_enabled', $licensing_enabled); if (isset($_POST['_woonoow_license_activation_limit'])) { update_post_meta($post_id, '_woonoow_license_activation_limit', absint($_POST['_woonoow_license_activation_limit'])); } if (isset($_POST['_woonoow_license_expiry_days'])) { update_post_meta($post_id, '_woonoow_license_expiry_days', absint($_POST['_woonoow_license_expiry_days'])); } } }