Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
woocommerce-multilingual
/
classes
/
AdminNotices
:
MultiCurrencyMissing.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace WCML\AdminNotices; use woocommerce_wpml; use WPML\FP\Obj; use WPML_Notices; /** * Manage showing a reminder notice when multi-currency mode is not configured completely. */ class MultiCurrencyMissing implements \IWPML_Backend_Action, \IWPML_DIC_Action { const NOTICE_ID = 'wcml-multi-currency-missing'; /** @var woocommerce_wpml */ private $wcml; /** @var WPML_Notices */ private $notices; public function __construct( woocommerce_wpml $wcml, WPML_Notices $notices ) { $this->wcml = $wcml; $this->notices = $notices; } /** * Add hooks to manage visibility of notice. */ public function add_hooks() { $notice = $this->notices->get_notice( self::NOTICE_ID ); $needsNotice = wcml_is_multi_currency_on() && $this->hasOneUniqueCurrency(); if ( $needsNotice && ! $notice ) { add_action( 'admin_init', [ $this, 'addNotice' ] ); } elseif ( ! $needsNotice && $notice ) { add_action( 'admin_init', [ $this, 'removeNotice' ] ); } } /** * Add a notice reminding admin about missing secondary currency. */ public function addNotice() { $text = '<h2>' . __( "You haven't added any secondary currencies", 'woocommerce-multilingual' ) . '</h2>'; $text .= '<p>' . __( "Please add another currency to fully utilize multicurrency mode. If you do not need multiple currencies, you can disable this setting to improve your site's performance.", 'woocommerce-multilingual' ) . '</p>'; $text .= '<a href="' . admin_url( 'admin.php?page=wpml-wcml&tab=multi-currency' ) . '">' . __( 'Configure multicurrency mode', 'woocommerce-multilingual' ) . '</a>'; $notice = $this->notices->create_notice( self::NOTICE_ID, $text ); $notice->set_css_class_types( 'notice-warning' ); $notice->set_restrict_to_screen_ids( RestrictedScreens::get() ); $notice->set_dismissible( true ); $this->notices->add_notice( $notice ); } /** * Remove the notice if the problem has been fixed */ public function removeNotice() { $notice = $this->notices->get_notice( self::NOTICE_ID ); $this->notices->remove_notice( $notice->get_group(), $notice->get_id() ); } /** * @return bool */ private function hasOneUniqueCurrency() { return count( (array) Obj::path( [ 'settings', 'currency_options' ], $this->wcml ) ) <= 1; } }