gruene-seele/dev/dhl-for-woocommerce/includes/class-pr-dhl-wc-notice-legacy-parcel.php
Kevin Adametz 0f641ef33a Housekeeping: offene Dev-Dateien eingecheckt + Sidebar „Bestellungen"→„Versand"
- Sidebar-Menü „Bestellungen" in „Versand" umbenannt (layout-sidenav), sonst nur
  Blade-Formatierung.
- Entwicklungspläne in ISO-Datumsformat umbenannt (entwicklungsplan-aktualisiert-*).
- dev/dhl-for-woocommerce/ (DHL-Plugin) + dev/partnercenter-api.zip + PastedGraphic
  hinzugefügt.
- .claude/ bewusst NICHT eingecheckt (lokale Claude-Code-Konfiguration).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-28 12:04:41 +00:00

267 lines
7.6 KiB
PHP

<?php
if (! defined('ABSPATH')) {
exit; // Exit if accessed directly
}
/**
* WooCommerce DHL Add DHL Parcel (Legacy) Notice
*
* @category Admin Notice
*
* @author Shin Ho
*/
if (! class_exists('PR_DHL_WC_Notice_Legacy_Parcel')) {
class PR_DHL_WC_Notice_Legacy_Parcel
{
const NOTICE_TAG_MIGRATE = 'dhlpwc_migrate_notice';
const NOTICE_TAG_MIGRATE_FOREVER = 'dhlpwc_migrate_notice_forever';
/**
* Init and hook in the integration.
*/
public function __construct()
{
if (! is_admin()) {
return;
}
if (get_option(self::NOTICE_TAG_MIGRATE_FOREVER, null)) {
return;
}
if (! $this->check_eligible_country()) {
return;
}
if (! $this->check_was_enabled_config()) {
return;
}
add_action('admin_enqueue_scripts', [$this, 'load_scripts']);
add_action('admin_notices', [$this, 'show_migrate_notice']);
add_action('wp_ajax_dhl_legacy_parcel_dismiss_migrate_notice', [$this, 'dismiss_notice']);
add_action('wp_ajax_dhl_legacy_parcel_dismiss_migrate_notice_forever', [$this, 'dismiss_notice_forever']);
}
public function show_migrate_notice()
{
if (get_site_transient(self::NOTICE_TAG_MIGRATE)) {
return;
}
if (
$this->is_home_screen() ||
$this->is_ordergrid_screen() ||
$this->is_order_screen() ||
$this->is_wc_settings_screen()
) {
?>
<div class="notice notice-warning is-dismissible dhl-legacy-parcel-dismiss-migrate-notice">
<div style="position: absolute;">
<img src="<?php echo esc_url(PR_DHL_PLUGIN_DIR_URL).'/assets/img/icon.svg'; ?>" class="plugin-icon" style="width: 85px; height: 85px; padding-right: 20px;" alt="">
</div>
<div style="position:relative; left: 105px; margin: 0 105px 0 0; padding: 0 0 20px 20px;">
<span>
<h2><?php esc_html_e('DHL Parcel for WooCommerce notice', 'dhl-for-woocommerce'); ?></h2>
<?php
printf(
/* translators: %1$s is the link to install the new plugin, %2$s is the closing HTML tag for the link */
esc_html__('DHL Parcel services are no longer available in this plugin. To continue using Parcel services, please install the new plugin %1$shere%2$s.', 'dhl-for-woocommerce'),
'<a href="'.esc_url(admin_url('plugin-install.php?s=DHL Parcel for WooCommerce dhlpwc&tab=search&type=term')).'">',
'</a>'
)
?>
<br/><br/>
<a href="#" id="dhl-legacy-parcel-dismiss-migrate-notice-forever">
<b><?php esc_html_e('Click here to never show this again', 'dhl-for-woocommerce'); ?></b>
</a>
<div class="clear"></div>
</span>
</div>
</div>
<?php
}
}
public function dismiss_notice()
{
check_ajax_referer('pr-dhl-legacy-parcel-dismiss-notice', 'security');
// Low level priority
$time = 14 * DAY_IN_SECONDS;
set_site_transient(self::NOTICE_TAG_MIGRATE, true, $time);
// Send JSON response
wp_send_json(
[
'status' => 'success',
'data' => [],
'message' => null,
],
200
);
}
public function dismiss_notice_forever()
{
check_ajax_referer('pr-dhl-legacy-parcel-dismiss-notice', 'security');
update_option(self::NOTICE_TAG_MIGRATE_FOREVER, true);
wp_send_json(
[
'status' => 'success',
'data' => [],
'message' => null,
],
200
);
}
protected function check_was_enabled_config()
{
$shipping_method = get_option('woocommerce_dhlpwc_settings');
if (empty($shipping_method)) {
return false;
}
if (! isset($shipping_method['enable_all'])) {
return false;
}
if ($shipping_method['enable_all'] != 'yes') {
return false;
}
if (empty($shipping_method['user_id'])) {
return false;
}
if (empty($shipping_method['key'])) {
return false;
}
if (empty($shipping_method['account_id'])) {
return false;
}
return true;
}
protected function check_eligible_country()
{
$country_code = wc_get_base_location();
if (! in_array(
$country_code['country'],
[
'NL',
'BE',
'LU',
]
)) {
return false;
}
return true;
}
protected function is_home_screen()
{
if (! function_exists('get_current_screen')) {
return false;
}
$screen = get_current_screen();
if (! isset($screen)) {
return false;
}
if ($screen->base !== 'dashboard') {
return false;
}
return true;
}
protected function is_ordergrid_screen()
{
if (! function_exists('get_current_screen')) {
return false;
}
$screen = get_current_screen();
if (! isset($screen)) {
return false;
}
if ($screen->base !== 'edit' || $screen->post_type !== 'shop_order') {
return false;
}
return true;
}
protected function is_order_screen()
{
if (! function_exists('get_current_screen')) {
return false;
}
$screen = get_current_screen();
if (! isset($screen)) {
return false;
}
if ($screen->base !== 'post' || $screen->post_type !== 'shop_order') {
return false;
}
return true;
}
protected function is_wc_settings_screen()
{
if (! function_exists('get_current_screen')) {
return false;
}
$screen = get_current_screen();
if (! isset($screen)) {
return false;
}
if ($screen->base !== 'woocommerce_page_wc-settings') {
return false;
}
return true;
}
public function load_scripts()
{
if (
$this->is_home_screen() ||
$this->is_ordergrid_screen() ||
$this->is_order_screen() ||
$this->is_wc_settings_screen()
) {
$dismiss_data = [
'security' => wp_create_nonce('pr-dhl-legacy-parcel-dismiss-notice'),
];
wp_enqueue_script('wc-shipment-dhl-legacy-parcel-dismiss-notice-js', PR_DHL_PLUGIN_DIR_URL.'/assets/js/pr-dhl-notice-legacy-parcel.js', ['jquery'], PR_DHL_VERSION);
wp_localize_script('wc-shipment-dhl-legacy-parcel-dismiss-notice-js', 'dhl_legacy_parcel_dismiss_notice', $dismiss_data);
}
}
}
}