PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / 5.5.7
WPML Multilingual & Multicurrency for WooCommerce v5.5.7
5.5.7 5.3.8 5.3.9 5.4.3 5.4.4 5.4.5 5.5.1 5.5.1.1 5.5.2.2 5.5.2.3 5.5.3 5.5.3.1 5.5.4 5.5.5 5.5.6 trunk 0.9 1.0 1.1 1.2 1.3 1.4 1.5 2.0 2.2 2.3 2.3.1 2.3.2 3.0 3.0.1 3.1 3.2 3.2.1 3.2.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.4 3.4.1 3.4.2 3.4.3 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.6 3.6.1 3.6.10 3.6.11 3.6.2 3.6.3 3.6.4 3.6.5 3.6.5.1 3.6.6 3.6.7 3.6.8 3.6.9 3.7 3.7.1 3.7.10 3.7.11 3.7.12 3.7.13 3.7.14 3.7.15 3.7.16 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.9.0 3.9.1 3.9.1.1 3.9.2 3.9.3 3.9.4 3.9.5 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.10.4 4.11.2 4.11.3.2 4.11.5 4.11.6 4.12.1 4.12.4 4.12.5 4.12.6 4.2.0 4.2.0.1 4.2.1 4.2.1.1 4.2.10 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.7.1 4.2.8 4.2.8.1 4.2.9 4.3.0 4.3.1 4.3.2 4.3.2.1 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.4.0 4.4.1 4.4.2 4.4.2.1 4.5.0 4.6.0 4.6.1 4.6.2 4.6.2.1 4.6.3 4.6.5 4.6.6 4.6.7 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.9.0 4.9.1 5.0.1 5.0.2 5.1.1 5.1.2 5.1.3 5.2.0 5.2.1 5.3.2 5.3.3.1 5.3.4 5.3.5 5.3.6 5.3.7
woocommerce-multilingual / classes / AdminNotices / ExportImport.php
woocommerce-multilingual / classes / AdminNotices Last commit date
CachePlugins.php 1 week ago CurrencySwitcherUseTwigTemplate.php 1 week ago ExportImport.php 1 week ago MultiCurrencyMissing.php 1 week ago RestrictedScreens.php 1 week ago Review.php 1 week ago TranslationControlMovedNotice.php 1 week ago WizardNotice.php 1 week ago
ExportImport.php
156 lines
1 <?php
2
3 namespace WCML\AdminNotices;
4
5 class ExportImport implements \IWPML_Backend_Action, \IWPML_DIC_Action {
6
7 const PRIORITY = 8;
8 const GROUP = 'wpml-import-notices';
9
10 const WPML_IMPORT_URL = 'https://wpml.org/documentation/related-projects/wpml-export-and-import/?utm_source=plugin&utm_medium=gui&utm_campaign=wpml-export-import&utm_term=admin-notice';
11 const WCML_URL = 'https://wpml.org/documentation/related-projects/woocommerce-multilingual/?utm_source=plugin&utm_medium=gui&utm_campaign=wcml&utm_term=admin-notice';
12
13 const NOTICE_CLASSES = [
14 'wpml-import-notice',
15 'wpml-import-notice-from-wcml',
16 ];
17
18 private $wpmlNotices;
19
20 public function __construct( \WPML_Notices $wpmlNotices ) {
21 $this->wpmlNotices = $wpmlNotices;
22 }
23
24 public function add_hooks() {
25 if ( defined( 'WPML_IMPORT_VERSION' ) ) {
26 return;
27 }
28
29 add_action( 'admin_init', [ $this, 'manageNotice' ], self::PRIORITY );
30 }
31
32 public function manageNotice() {
33 if ( ! self::isOnMigrationPages() ) {
34 return;
35 }
36 $exportNotices = self::getExportNotices();
37 $importNotices = self::getImportNotices();
38
39 array_walk( $exportNotices, function( $path, $id ) {
40 $this->maybeAddNotice(
41 $id,
42 $path,
43 $this->getExportMessage()
44 );
45 } );
46 array_walk( $importNotices, function( $path, $id ) {
47 $this->maybeAddNotice(
48 $id,
49 $path,
50 $this->getImportMessage()
51 );
52 } );
53 }
54
55 private function maybeAddNotice( $id, $path, $message ) {
56 if ( ! self::isOnPage( $path ) ) {
57 return;
58 }
59 $notice = $this->wpmlNotices->get_new_notice(
60 $id,
61 $message,
62 self::GROUP
63 );
64 $notice->set_css_class_types( 'info' );
65 $notice->set_css_classes( self::NOTICE_CLASSES );
66 $notice->add_display_callback( [ \WCML\AdminNotices\ExportImport::class, 'isOnMigrationPages' ] );
67 $notice->set_dismissible( true );
68 $this->wpmlNotices->add_notice( $notice, true );
69 }
70
71 private static function getExportNotices() {
72 $notices = [
73 'woocommerce-export' => '/edit.php?post_type=product&page=product_exporter',
74 ];
75 if ( defined( 'PMWE_VERSION' ) ) {
76 $notices['wp-all-export'] = '/admin.php?page=pmxe-admin-export';
77 }
78 return $notices;
79 }
80
81 private static function getImportNotices() {
82 $notices = [
83 'woocommerce-import' => '/edit.php?post_type=product&page=product_importer',
84 ];
85 if ( defined( 'PMWI_VERSION' ) ) {
86 $notices['wp-all-import'] = '/admin.php?page=pmxi-admin-import';
87 }
88 return $notices;
89 }
90
91 private static function isOnPage( $path ) {
92 if ( ! isset( $_SERVER['REQUEST_URI'] ) ) {
93 return false;
94 }
95
96 if (
97 defined( 'DOING_AJAX' )
98 && wp_doing_ajax()
99 ) {
100 return false;
101 }
102
103 if ( false !== strpos( $_SERVER['REQUEST_URI'], $path ) ) {
104 return true;
105 }
106
107 return false;
108 }
109
110 public static function isOnMigrationPages() {
111 $exportNotices = self::getExportNotices();
112 $importNotices = self::getImportNotices();
113 $migrationPaths = array_values( array_merge( $exportNotices, $importNotices ) );
114 foreach ( $migrationPaths as $path ) {
115 if ( false !== self::isOnPage( $path ) ) {
116 return true;
117 }
118 }
119
120 return false;
121 }
122
123 private function getExportMessage() {
124 return sprintf(
125 /* translators: %s is a link. */
126 esc_html__( 'Migrating your multilingual shop? With %s you can transfer your translated content to a new site, including cross-sells, up-sells, and product attributes.', 'woocommerce-multilingual' ),
127 $this->getWpmlImportLink()
128 );
129 }
130
131 private function getImportMessage() {
132 return sprintf(
133 /* translators: %1$s and %2$s are both links. */
134 esc_html__( 'Looking to import your multilingual shop? With %1$s and %2$s in both your original and new site, you can export and import your translations automatically.', 'woocommerce-multilingual' ),
135 $this->getWcmlLink(),
136 $this->getWpmlImportLink()
137 );
138 }
139
140 private function getWpmlImportLink() {
141 $url = self::WPML_IMPORT_URL;
142 $title = esc_html__( 'WPML Export and Import', 'woocommerce-multilingual' );
143 return '<a class="wpml-external-link" href="' . esc_url( $url ) . '" title="' . esc_attr( $title ) . '" target="_blank">'
144 . esc_html( $title )
145 . '</a>';
146 }
147
148 private function getWcmlLink() {
149 $url = self::WCML_URL;
150 $title = esc_html__( 'WPML Multilingual & Multicurrency for WooCommerce', 'woocommerce-multilingual' );
151 return '<a class="wpml-external-link" href="' . esc_url( $url ) . '" title="' . esc_attr( $title ) . '" target="_blank">'
152 . esc_html( $title )
153 . '</a>';
154 }
155
156 }