2 Commits

Author SHA1 Message Date
58bbd5164f Release version 1.1.10 - Complete function redeclaration fix
Fixed critical function redeclaration error for wc_tpp_init() affecting
version 1.1.9. This completes the fix started in v1.1.9 by protecting
all global functions from redeclaration during plugin lifecycle events.

Fixes:
- Function redeclaration error for wc_tpp_init()
- Fatal error "Cannot redeclare function wc_tpp_init()" when plugin file loaded multiple times
- Plugin activation failures

Technical Changes:
- Wrapped wc_tpp_init() function in function_exists() check
- Both wc_tpp_woocommerce_missing_notice() and wc_tpp_init() now safely guarded
- Prevents fatal errors during WordPress plugin activation/deactivation cycles
- Comprehensive protection for all global function declarations

Updated Files:
- wc-tier-and-package-prices.php (version 1.1.10, wc_tpp_init safety check)
- composer.json (version 1.1.10)
- CHANGELOG.md (v1.1.10 section)
- All translation files compiled (.mo files)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 18:45:05 +01:00
cfdbfe1504 Release version 1.1.9 - Critical function redeclaration fix
Fixed critical function redeclaration error affecting versions 1.1.3-1.1.8
that caused fatal errors during plugin activation and deactivation.

Fixes:
- Function redeclaration error for wc_tpp_woocommerce_missing_notice()
- Fatal error "Cannot redeclare function" when plugin file loaded multiple times
- Plugin activation/deactivation failures

Technical Changes:
- Wrapped wc_tpp_woocommerce_missing_notice() in function_exists() check
- Moved function declaration before WooCommerce check for better organization
- Prevents fatal errors during WordPress plugin lifecycle events

Updated Files:
- wc-tier-and-package-prices.php (version 1.1.9, function safety check)
- composer.json (version 1.1.9)
- CHANGELOG.md (v1.1.9 section)
- All translation files compiled (.mo files)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 18:40:48 +01:00
13 changed files with 57 additions and 13 deletions

1
.gitignore vendored
View File

@@ -21,6 +21,7 @@ npm-debug.log
# Logs # Logs
*.log *.log
/logs
# Notes # Notes
notes.* notes.*

View File

@@ -5,6 +5,36 @@ All notable changes to WooCommerce Tier and Package Prices will be documented in
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.1.10] - 2025-12-22
### Fixed
- **CRITICAL:** Function redeclaration error for `wc_tpp_init()` affecting version 1.1.9
- Fatal error "Cannot redeclare function wc_tpp_init()" when plugin file loaded multiple times
- Plugin activation failures caused by function redeclaration
### Technical Details
- Wrapped `wc_tpp_init()` function in `function_exists()` check
- Completes the fix started in v1.1.9 by protecting all global functions
- Prevents fatal errors during WordPress plugin activation cycles
- Both `wc_tpp_woocommerce_missing_notice()` and `wc_tpp_init()` now safely guarded
## [1.1.9] - 2025-12-22
### Fixed
- **CRITICAL:** Function redeclaration error for `wc_tpp_woocommerce_missing_notice()` affecting versions 1.1.3-1.1.8
- Fatal error "Cannot redeclare function wc_tpp_woocommerce_missing_notice()" when plugin file loaded multiple times
- Plugin activation and deactivation failures caused by function redeclaration
### Technical Details
- Wrapped `wc_tpp_woocommerce_missing_notice()` function in `function_exists()` check
- Prevents fatal error during WordPress plugin activation/deactivation cycles
- Ensures function can safely be declared even if file is included multiple times
- Moved function declaration before WooCommerce check for better code organization
## [1.1.8] - 2025-12-22 ## [1.1.8] - 2025-12-22
### Fixed ### Fixed

View File

@@ -1,7 +1,7 @@
{ {
"name": "magdev/wc-tier-package-prices", "name": "magdev/wc-tier-package-prices",
"description": "WooCommerce plugin for tier pricing and package prices with Twig templates", "description": "WooCommerce plugin for tier pricing and package prices with Twig templates",
"version": "1.1.8", "version": "1.1.10",
"type": "wordpress-plugin", "type": "wordpress-plugin",
"license": "GPL-2.0-or-later", "license": "GPL-2.0-or-later",
"authors": [ "authors": [

Binary file not shown.

View File

@@ -0,0 +1 @@
81be5283219cfa722f6d382a788e7dc1 releases/wc-tier-and-package-prices-1.1.10.zip

View File

@@ -0,0 +1 @@
2d3b01e61c8a03a8f20bc99b2019ca50fa08ecd68188feb2d2105dfe35d36f0d releases/wc-tier-and-package-prices-1.1.10.zip

Binary file not shown.

View File

@@ -0,0 +1 @@
666e1acad9f349982463b65d0e3e7fa3 wc-tier-and-package-prices-1.1.8.zip

View File

@@ -0,0 +1 @@
2c100d0d100a6fd7bd8f9c9b154d878a675bc795c5fddb19314bc9991b9a60ba wc-tier-and-package-prices-1.1.8.zip

Binary file not shown.

View File

@@ -0,0 +1 @@
7421aceb8d1cc89b7d15b19d68cdfabe wc-tier-and-package-prices-1.1.9.zip

View File

@@ -0,0 +1 @@
8224bf8b9bfc3dc760d77c61700d27c31db1a67b70834d8b6a4581df66fd45bd wc-tier-and-package-prices-1.1.9.zip

View File

@@ -4,7 +4,7 @@
* Plugin Name: WooCommerce Tier and Package Prices * Plugin Name: WooCommerce Tier and Package Prices
* Plugin URI: https://src.bundespruefstelle.ch/magdev/wc-tier-package-prices * Plugin URI: https://src.bundespruefstelle.ch/magdev/wc-tier-package-prices
* Description: Add tier pricing and package prices to WooCommerce products with configurable quantities at fixed prices * Description: Add tier pricing and package prices to WooCommerce products with configurable quantities at fixed prices
* Version: 1.1.8 * Version: 1.1.10
* Author: Marco Graetsch * Author: Marco Graetsch
* Author URI: https://src.bundespruefstelle.ch/magdev * Author URI: https://src.bundespruefstelle.ch/magdev
* Text Domain: wc-tier-package-prices * Text Domain: wc-tier-package-prices
@@ -22,7 +22,7 @@ if (!defined('ABSPATH')) {
} }
// Define plugin constants // Define plugin constants
define('WC_TPP_VERSION', '1.1.8'); define('WC_TPP_VERSION', '1.1.10');
define('WC_TPP_PLUGIN_DIR', plugin_dir_path(__FILE__)); define('WC_TPP_PLUGIN_DIR', plugin_dir_path(__FILE__));
define('WC_TPP_PLUGIN_URL', plugin_dir_url(__FILE__)); define('WC_TPP_PLUGIN_URL', plugin_dir_url(__FILE__));
define('WC_TPP_PLUGIN_BASENAME', plugin_basename(__FILE__)); define('WC_TPP_PLUGIN_BASENAME', plugin_basename(__FILE__));
@@ -31,19 +31,24 @@ define('WC_TPP_PLUGIN_BASENAME', plugin_basename(__FILE__));
require_once WC_TPP_PLUGIN_DIR . 'vendor/autoload.php'; require_once WC_TPP_PLUGIN_DIR . 'vendor/autoload.php';
/** /**
* Check if WooCommerce is active * Display WooCommerce missing notice
*/ */
if (!in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) { if (!function_exists('wc_tpp_woocommerce_missing_notice')) {
add_action('admin_notices', 'wc_tpp_woocommerce_missing_notice'); function wc_tpp_woocommerce_missing_notice() {
return;
}
function wc_tpp_woocommerce_missing_notice() {
?> ?>
<div class="notice notice-error"> <div class="notice notice-error">
<p><?php _e('WooCommerce Tier and Package Prices requires WooCommerce to be installed and active.', 'wc-tier-package-prices'); ?></p> <p><?php _e('WooCommerce Tier and Package Prices requires WooCommerce to be installed and active.', 'wc-tier-package-prices'); ?></p>
</div> </div>
<?php <?php
}
}
/**
* Check if WooCommerce is active
*/
if (!in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) {
add_action('admin_notices', 'wc_tpp_woocommerce_missing_notice');
return;
} }
/** /**
@@ -114,8 +119,10 @@ class WC_Tier_Package_Prices {
} }
// Initialize the plugin // Initialize the plugin
function wc_tpp_init() { if (!function_exists('wc_tpp_init')) {
function wc_tpp_init() {
return WC_Tier_Package_Prices::get_instance(); return WC_Tier_Package_Prices::get_instance();
}
} }
add_action('plugins_loaded', 'wc_tpp_init', 11); add_action('plugins_loaded', 'wc_tpp_init', 11);