WooCommerce Multilingual – run WooCommerce with WPML - Version 4.9.1

Version Description

  • Updated the translations.
  • Fix fatal error when WooCommerce not activated.
Download this release

Release Info

Developer andrew.p
Plugin Icon 128x128 WooCommerce Multilingual – run WooCommerce with WPML
Version 4.9.1
Comparing to
See all releases

Code changes from version 4.9.0 to 4.9.1

Files changed (32) hide show
  1. changelog/4.9.1.md +5 -0
  2. classes/Multicurrency/Shipping/AdminHooks.php +1 -1
  3. classes/Multicurrency/Shipping/ShippingClasses.php +1 -1
  4. inc/translation-editor/class-wcml-translation-editor.php +1 -1
  5. locale/orig/woocommerce-multilingual.po +2 -2
  6. locale/woocommerce-multilingual-de_DE.mo +0 -0
  7. locale/woocommerce-multilingual-el.mo +0 -0
  8. locale/woocommerce-multilingual-es_ES.mo +0 -0
  9. locale/woocommerce-multilingual-fr_FR.mo +0 -0
  10. locale/woocommerce-multilingual-he_IL.mo +0 -0
  11. locale/woocommerce-multilingual-it_IT.mo +0 -0
  12. locale/woocommerce-multilingual-ja.mo +0 -0
  13. locale/woocommerce-multilingual-nl_NL.mo +0 -0
  14. locale/woocommerce-multilingual-pl_PL.mo +0 -0
  15. locale/woocommerce-multilingual-pt_BR.mo +0 -0
  16. locale/woocommerce-multilingual-sv_SE.mo +0 -0
  17. readme.txt +9 -5
  18. vendor/autoload.php +1 -1
  19. vendor/composer/autoload_real.php +7 -7
  20. vendor/composer/autoload_static.php +4 -4
  21. vendor/composer/installers/src/Composer/Installers/BaseInstaller.php +1 -0
  22. vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php +9 -19
  23. vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php +3 -1
  24. vendor/composer/installers/src/Composer/Installers/Installer.php +2 -0
  25. vendor/composer/installers/src/Composer/Installers/MantisBTInstaller.php +23 -0
  26. vendor/composer/installers/src/Composer/Installers/Plugin.php +12 -2
  27. vendor/composer/installers/src/Composer/Installers/SyliusInstaller.php +9 -0
  28. vendor/otgs/icons/css/otgs-icons.css +0 -13
  29. vendor/otgs/icons/icons-overview.html +0 -231
  30. vendor/otgs/icons/loader.php +1 -1
  31. vendor/wpml-shared/wpml-lib-dependencies/src/dependencies/class-wpml-dependencies.php +32 -31
  32. wpml-woocommerce.php +8 -4
changelog/4.9.1.md ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ # Features
2
+ * [wcml-3256] Updated the translations.
3
+
4
+ # Fixes
5
+ * [wcml-3257] Fix fatal error when WooCommerce not activated.
classes/Multicurrency/Shipping/AdminHooks.php CHANGED
@@ -70,7 +70,7 @@ class AdminHooks implements IWPML_Action {
70
  'title' => __( 'Costs and values in custom currencies', 'woocommerce-multilingual' ),
71
  'type' => 'title',
72
  'default' => '',
73
- 'description' => __( 'Woocommerce Mulitlingual by default will multiply all your costs and values defined above by currency exchange rates. If you don\'t want this and you prefer static values instead, you can define them here.', 'woocommerce-multilingual' ),
74
  ];
75
  return $field;
76
  }
70
  'title' => __( 'Costs and values in custom currencies', 'woocommerce-multilingual' ),
71
  'type' => 'title',
72
  'default' => '',
73
+ 'description' => __( 'Woocommerce Multilingual by default will multiply all your costs and values defined above by currency exchange rates. If you don\'t want this and you prefer static values instead, you can define them here.', 'woocommerce-multilingual' ),
74
  ];
75
  return $field;
76
  }
classes/Multicurrency/Shipping/ShippingClasses.php CHANGED
@@ -40,7 +40,7 @@ class ShippingClasses {
40
  * @return string|null
41
  */
42
  protected static function getSourceLanguageCode( $shippingClass ) {
43
- $classLanguageDetails = apply_filters( 'wpml_element_language_details', null, [
44
  'element_id' => $shippingClass->term_id,
45
  'element_type' => $shippingClass->taxonomy,
46
  ] );
40
  * @return string|null
41
  */
42
  protected static function getSourceLanguageCode( $shippingClass ) {
43
+ $classLanguageDetails = apply_filters( 'wpml_element_language_details', false, [
44
  'element_id' => $shippingClass->term_id,
45
  'element_type' => $shippingClass->taxonomy,
46
  ] );
inc/translation-editor/class-wcml-translation-editor.php CHANGED
@@ -404,7 +404,7 @@ class WCML_Translation_Editor {
404
  <?php
405
  printf(
406
  __(
407
- 'To configure how the %1$sWooCommerce products%2$s are translated, visit the WooCommerce Multiligual %3$ssettings%4$s page.',
408
  'woocommerce-multilingual'
409
  ),
410
  '<strong>',
404
  <?php
405
  printf(
406
  __(
407
+ 'To configure how the %1$sWooCommerce products%2$s are translated, visit the WooCommerce Multilingual %3$ssettings%4$s page.',
408
  'woocommerce-multilingual'
409
  ),
410
  '<strong>',
locale/orig/woocommerce-multilingual.po CHANGED
@@ -1687,10 +1687,10 @@ msgid "Successfully updated %s for all translated %s."
1687
  msgstr ""
1688
 
1689
  # <p class="icl-admin-message" style="margin-top: 0">
1690
- # <?php printf( __('To configure how the %sWooCommerce products%s are translated, visit the WooCommerce Multiligual %ssettings%s page.',
1691
  # 'woocommerce-multilingual'), '<strong>', '</strong>', '<a href="' . admin_url('admin.php?page=wpml-wcml&tab=settings') . '">', '</a>' ); ?>
1692
 
1693
- msgid "To configure how the %sWooCommerce products%s are translated, visit the WooCommerce Multiligual %ssettings%s page."
1694
  msgstr ""
1695
 
1696
  # $job_details[ 'job_id' ],
1687
  msgstr ""
1688
 
1689
  # <p class="icl-admin-message" style="margin-top: 0">
1690
+ # <?php printf( __('To configure how the %sWooCommerce products%s are translated, visit the WooCommerce Multilingual %ssettings%s page.',
1691
  # 'woocommerce-multilingual'), '<strong>', '</strong>', '<a href="' . admin_url('admin.php?page=wpml-wcml&tab=settings') . '">', '</a>' ); ?>
1692
 
1693
+ msgid "To configure how the %sWooCommerce products%s are translated, visit the WooCommerce Multilingual %ssettings%s page."
1694
  msgstr ""
1695
 
1696
  # $job_details[ 'job_id' ],
locale/woocommerce-multilingual-de_DE.mo CHANGED
Binary file
locale/woocommerce-multilingual-el.mo CHANGED
Binary file
locale/woocommerce-multilingual-es_ES.mo CHANGED
Binary file
locale/woocommerce-multilingual-fr_FR.mo CHANGED
Binary file
locale/woocommerce-multilingual-he_IL.mo CHANGED
Binary file
locale/woocommerce-multilingual-it_IT.mo CHANGED
Binary file
locale/woocommerce-multilingual-ja.mo CHANGED
Binary file
locale/woocommerce-multilingual-nl_NL.mo CHANGED
Binary file
locale/woocommerce-multilingual-pl_PL.mo CHANGED
Binary file
locale/woocommerce-multilingual-pt_BR.mo CHANGED
Binary file
locale/woocommerce-multilingual-sv_SE.mo CHANGED
Binary file
readme.txt CHANGED
@@ -4,8 +4,8 @@ Donate link: http://wpml.org/documentation/related-projects/woocommerce-multilin
4
  Tags: CMS, woocommerce, commerce, ecommerce, e-commerce, products, WPML, multilingual, e-shop, shop
5
  License: GPLv2
6
  Requires at least: 4.7
7
- Tested up to: 5.4.1
8
- Stable tag: 4.9.0
9
  Requires PHP: 5.6
10
 
11
  Allows running fully multilingual e-commerce sites using WooCommerce and WPML.
@@ -66,9 +66,9 @@ If the checks fail, WooCommerce Multilingual will not be able to run.
66
  * MySQL version 5.6 or later
67
 
68
  * WooCommerce 3.3.0 or later
69
- * WPML Multilingual CMS 4.3.5 or later
70
- * WPML String Translation 3.0.5 or later
71
- * WPML Translation Management 2.9.1 or later
72
 
73
  = WordPress automatic installation =
74
  In your WordPress dashboard, go to the Plugins section and click 'Add new'.
@@ -137,6 +137,10 @@ WooCommerce Multilingual is compatible with all major WooCommerce extensions. We
137
 
138
  == Changelog ==
139
 
 
 
 
 
140
  = 4.9.0 =
141
  * Manual shipping prices in secondary currencies.
142
  * Fixed product attribute slug language not changed after changing value.
4
  Tags: CMS, woocommerce, commerce, ecommerce, e-commerce, products, WPML, multilingual, e-shop, shop
5
  License: GPLv2
6
  Requires at least: 4.7
7
+ Tested up to: 5.4.2
8
+ Stable tag: 4.9.1
9
  Requires PHP: 5.6
10
 
11
  Allows running fully multilingual e-commerce sites using WooCommerce and WPML.
66
  * MySQL version 5.6 or later
67
 
68
  * WooCommerce 3.3.0 or later
69
+ * WPML Multilingual CMS 4.3.7 or later
70
+ * WPML String Translation 3.0.7 or later
71
+ * WPML Translation Management 2.9.5 or later
72
 
73
  = WordPress automatic installation =
74
  In your WordPress dashboard, go to the Plugins section and click 'Add new'.
137
 
138
  == Changelog ==
139
 
140
+ = 4.9.1 =
141
+ * Updated the translations.
142
+ * Fix fatal error when WooCommerce not activated.
143
+
144
  = 4.9.0 =
145
  * Manual shipping prices in secondary currencies.
146
  * Fixed product attribute slug language not changed after changing value.
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit4be6ab1b4378bf1f9c11125f815eddfc::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInitc4b9921626dc5f64a8ef121031bc4a7b::getLoader();
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit4be6ab1b4378bf1f9c11125f815eddfc
6
  {
7
  private static $loader;
8
 
@@ -22,15 +22,15 @@ class ComposerAutoloaderInit4be6ab1b4378bf1f9c11125f815eddfc
22
  return self::$loader;
23
  }
24
 
25
- spl_autoload_register(array('ComposerAutoloaderInit4be6ab1b4378bf1f9c11125f815eddfc', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
- spl_autoload_unregister(array('ComposerAutoloaderInit4be6ab1b4378bf1f9c11125f815eddfc', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
  require_once __DIR__ . '/autoload_static.php';
32
 
33
- call_user_func(\Composer\Autoload\ComposerStaticInit4be6ab1b4378bf1f9c11125f815eddfc::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
@@ -51,19 +51,19 @@ class ComposerAutoloaderInit4be6ab1b4378bf1f9c11125f815eddfc
51
  $loader->register(true);
52
 
53
  if ($useStaticLoader) {
54
- $includeFiles = Composer\Autoload\ComposerStaticInit4be6ab1b4378bf1f9c11125f815eddfc::$files;
55
  } else {
56
  $includeFiles = require __DIR__ . '/autoload_files.php';
57
  }
58
  foreach ($includeFiles as $fileIdentifier => $file) {
59
- composerRequire4be6ab1b4378bf1f9c11125f815eddfc($fileIdentifier, $file);
60
  }
61
 
62
  return $loader;
63
  }
64
  }
65
 
66
- function composerRequire4be6ab1b4378bf1f9c11125f815eddfc($fileIdentifier, $file)
67
  {
68
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
69
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInitc4b9921626dc5f64a8ef121031bc4a7b
6
  {
7
  private static $loader;
8
 
22
  return self::$loader;
23
  }
24
 
25
+ spl_autoload_register(array('ComposerAutoloaderInitc4b9921626dc5f64a8ef121031bc4a7b', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
+ spl_autoload_unregister(array('ComposerAutoloaderInitc4b9921626dc5f64a8ef121031bc4a7b', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
  require_once __DIR__ . '/autoload_static.php';
32
 
33
+ call_user_func(\Composer\Autoload\ComposerStaticInitc4b9921626dc5f64a8ef121031bc4a7b::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
51
  $loader->register(true);
52
 
53
  if ($useStaticLoader) {
54
+ $includeFiles = Composer\Autoload\ComposerStaticInitc4b9921626dc5f64a8ef121031bc4a7b::$files;
55
  } else {
56
  $includeFiles = require __DIR__ . '/autoload_files.php';
57
  }
58
  foreach ($includeFiles as $fileIdentifier => $file) {
59
+ composerRequirec4b9921626dc5f64a8ef121031bc4a7b($fileIdentifier, $file);
60
  }
61
 
62
  return $loader;
63
  }
64
  }
65
 
66
+ function composerRequirec4b9921626dc5f64a8ef121031bc4a7b($fileIdentifier, $file)
67
  {
68
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
69
  require $file;
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit4be6ab1b4378bf1f9c11125f815eddfc
8
  {
9
  public static $files = array (
10
  'b45b351e6b6f7487d819961fef2fda77' => __DIR__ . '/..' . '/jakeasmith/http_build_url/src/http_build_url.php',
@@ -255,9 +255,9 @@ class ComposerStaticInit4be6ab1b4378bf1f9c11125f815eddfc
255
  public static function getInitializer(ClassLoader $loader)
256
  {
257
  return \Closure::bind(function () use ($loader) {
258
- $loader->prefixLengthsPsr4 = ComposerStaticInit4be6ab1b4378bf1f9c11125f815eddfc::$prefixLengthsPsr4;
259
- $loader->prefixDirsPsr4 = ComposerStaticInit4be6ab1b4378bf1f9c11125f815eddfc::$prefixDirsPsr4;
260
- $loader->classMap = ComposerStaticInit4be6ab1b4378bf1f9c11125f815eddfc::$classMap;
261
 
262
  }, null, ClassLoader::class);
263
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInitc4b9921626dc5f64a8ef121031bc4a7b
8
  {
9
  public static $files = array (
10
  'b45b351e6b6f7487d819961fef2fda77' => __DIR__ . '/..' . '/jakeasmith/http_build_url/src/http_build_url.php',
255
  public static function getInitializer(ClassLoader $loader)
256
  {
257
  return \Closure::bind(function () use ($loader) {
258
+ $loader->prefixLengthsPsr4 = ComposerStaticInitc4b9921626dc5f64a8ef121031bc4a7b::$prefixLengthsPsr4;
259
+ $loader->prefixDirsPsr4 = ComposerStaticInitc4b9921626dc5f64a8ef121031bc4a7b::$prefixDirsPsr4;
260
+ $loader->classMap = ComposerStaticInitc4b9921626dc5f64a8ef121031bc4a7b::$classMap;
261
 
262
  }, null, ClassLoader::class);
263
  }
vendor/composer/installers/src/Composer/Installers/BaseInstaller.php CHANGED
@@ -126,6 +126,7 @@ abstract class BaseInstaller
126
  protected function mapCustomInstallPaths(array $paths, $name, $type, $vendor = NULL)
127
  {
128
  foreach ($paths as $path => $names) {
 
129
  if (in_array($name, $names) || in_array('type:' . $type, $names) || in_array('vendor:' . $vendor, $names)) {
130
  return $path;
131
  }
126
  protected function mapCustomInstallPaths(array $paths, $name, $type, $vendor = NULL)
127
  {
128
  foreach ($paths as $path => $names) {
129
+ $names = (array) $names;
130
  if (in_array($name, $names) || in_array('type:' . $type, $names) || in_array('vendor:' . $vendor, $names)) {
131
  return $path;
132
  }
vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php CHANGED
@@ -58,25 +58,15 @@ class CakePHPInstaller extends BaseInstaller
58
  }
59
 
60
  $repositoryManager = $this->composer->getRepositoryManager();
61
- if ($repositoryManager) {
62
- $repos = $repositoryManager->getLocalRepository();
63
- if (!$repos) {
64
- return false;
65
- }
66
- $cake3 = new $multiClass(array(
67
- new $constraintClass($matcher, $version),
68
- new $constraintClass('!=', '9999999-dev'),
69
- ));
70
- $pool = new Pool('dev');
71
- $pool->addRepository($repos);
72
- $packages = $pool->whatProvides('cakephp/cakephp');
73
- foreach ($packages as $package) {
74
- $installed = new $constraintClass('=', $package->getVersion());
75
- if ($cake3->matches($installed)) {
76
- return true;
77
- }
78
- }
79
  }
80
- return false;
 
 
 
 
 
 
81
  }
82
  }
58
  }
59
 
60
  $repositoryManager = $this->composer->getRepositoryManager();
61
+ if (! $repositoryManager) {
62
+ return false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  }
64
+
65
+ $repos = $repositoryManager->getLocalRepository();
66
+ if (!$repos) {
67
+ return false;
68
+ }
69
+
70
+ return $repos->findPackage('cakephp/cakephp', new $constraintClass($matcher, $version)) !== null;
71
  }
72
  }
vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php CHANGED
@@ -9,12 +9,14 @@ class DrupalInstaller extends BaseInstaller
9
  'theme' => 'themes/{$name}/',
10
  'library' => 'libraries/{$name}/',
11
  'profile' => 'profiles/{$name}/',
 
12
  'drush' => 'drush/{$name}/',
13
  'custom-theme' => 'themes/custom/{$name}/',
14
  'custom-module' => 'modules/custom/{$name}/',
15
  'custom-profile' => 'profiles/custom/{$name}/',
16
  'drupal-multisite' => 'sites/{$name}/',
17
- 'console' => 'console/{$name}/',
18
  'console-language' => 'console/language/{$name}/',
 
19
  );
20
  }
9
  'theme' => 'themes/{$name}/',
10
  'library' => 'libraries/{$name}/',
11
  'profile' => 'profiles/{$name}/',
12
+ 'database-driver' => 'drivers/lib/Drupal/Driver/Database/{$name}/',
13
  'drush' => 'drush/{$name}/',
14
  'custom-theme' => 'themes/custom/{$name}/',
15
  'custom-module' => 'modules/custom/{$name}/',
16
  'custom-profile' => 'profiles/custom/{$name}/',
17
  'drupal-multisite' => 'sites/{$name}/',
18
+ 'console' => 'console/{$name}/',
19
  'console-language' => 'console/language/{$name}/',
20
+ 'config' => 'config/sync/',
21
  );
22
  }
vendor/composer/installers/src/Composer/Installers/Installer.php CHANGED
@@ -63,6 +63,7 @@ class Installer extends LibraryInstaller
63
  'lithium' => 'LithiumInstaller',
64
  'magento' => 'MagentoInstaller',
65
  'majima' => 'MajimaInstaller',
 
66
  'mako' => 'MakoInstaller',
67
  'maya' => 'MayaInstaller',
68
  'mautic' => 'MauticInstaller',
@@ -95,6 +96,7 @@ class Installer extends LibraryInstaller
95
  'silverstripe' => 'SilverStripeInstaller',
96
  'smf' => 'SMFInstaller',
97
  'sydes' => 'SyDESInstaller',
 
98
  'symfony1' => 'Symfony1Installer',
99
  'tao' => 'TaoInstaller',
100
  'thelia' => 'TheliaInstaller',
63
  'lithium' => 'LithiumInstaller',
64
  'magento' => 'MagentoInstaller',
65
  'majima' => 'MajimaInstaller',
66
+ 'mantisbt' => 'MantisBTInstaller',
67
  'mako' => 'MakoInstaller',
68
  'maya' => 'MayaInstaller',
69
  'mautic' => 'MauticInstaller',
96
  'silverstripe' => 'SilverStripeInstaller',
97
  'smf' => 'SMFInstaller',
98
  'sydes' => 'SyDESInstaller',
99
+ 'sylius' => 'SyliusInstaller',
100
  'symfony1' => 'Symfony1Installer',
101
  'tao' => 'TaoInstaller',
102
  'thelia' => 'TheliaInstaller',
vendor/composer/installers/src/Composer/Installers/MantisBTInstaller.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ use Composer\DependencyResolver\Pool;
5
+
6
+ class MantisBTInstaller extends BaseInstaller
7
+ {
8
+ protected $locations = array(
9
+ 'plugin' => 'plugins/{$name}/',
10
+ );
11
+
12
+ /**
13
+ * Format package name to CamelCase
14
+ */
15
+ public function inflectPackageVars($vars)
16
+ {
17
+ $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
18
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
19
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
20
+
21
+ return $vars;
22
+ }
23
+ }
vendor/composer/installers/src/Composer/Installers/Plugin.php CHANGED
@@ -8,10 +8,20 @@ use Composer\Plugin\PluginInterface;
8
 
9
  class Plugin implements PluginInterface
10
  {
 
11
 
12
  public function activate(Composer $composer, IOInterface $io)
13
  {
14
- $installer = new Installer($io, $composer);
15
- $composer->getInstallationManager()->addInstaller($installer);
 
 
 
 
 
 
 
 
 
16
  }
17
  }
8
 
9
  class Plugin implements PluginInterface
10
  {
11
+ private $installer;
12
 
13
  public function activate(Composer $composer, IOInterface $io)
14
  {
15
+ $this->installer = new Installer($io, $composer);
16
+ $composer->getInstallationManager()->addInstaller($this->installer);
17
+ }
18
+
19
+ public function deactivate(Composer $composer, IOInterface $io)
20
+ {
21
+ $composer->getInstallationManager()->removeInstaller($this->installer);
22
+ }
23
+
24
+ public function uninstall(Composer $composer, IOInterface $io)
25
+ {
26
  }
27
  }
vendor/composer/installers/src/Composer/Installers/SyliusInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class SyliusInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'theme' => 'themes/{$name}/',
8
+ );
9
+ }
vendor/otgs/icons/css/otgs-icons.css CHANGED
@@ -12,19 +12,6 @@
12
 
13
  }
14
 
15
- [data-icon]:before {
16
- font-family: "otgs-icons" !important;
17
- content: attr(data-icon);
18
- font-style: normal !important;
19
- font-weight: normal !important;
20
- font-variant: normal !important;
21
- text-transform: none !important;
22
- speak: none;
23
- line-height: 1;
24
- -webkit-font-smoothing: antialiased;
25
- -moz-osx-font-smoothing: grayscale;
26
- }
27
-
28
  [class^="otgs-ico-"]:before,
29
  [class*=" otgs-ico-"]:before {
30
  font-family: "otgs-icons" !important;
12
 
13
  }
14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  [class^="otgs-ico-"]:before,
16
  [class*=" otgs-ico-"]:before {
17
  font-family: "otgs-icons" !important;
vendor/otgs/icons/icons-overview.html CHANGED
@@ -244,237 +244,6 @@
244
  <input type="text" readonly="readonly" value="download">
245
  </li>
246
  </ul>
247
- <h2>Character mapping</h2>
248
- <ul class="glyphs character-mapping">
249
- <li>
250
- <div data-icon="a" class="icon"></div>
251
- <input type="text" readonly="readonly" value="a">
252
- </li>
253
- <li>
254
- <div data-icon="b" class="icon"></div>
255
- <input type="text" readonly="readonly" value="b">
256
- </li>
257
- <li>
258
- <div data-icon="c" class="icon"></div>
259
- <input type="text" readonly="readonly" value="c">
260
- </li>
261
- <li>
262
- <div data-icon="d" class="icon"></div>
263
- <input type="text" readonly="readonly" value="d">
264
- </li>
265
- <li>
266
- <div data-icon="e" class="icon"></div>
267
- <input type="text" readonly="readonly" value="e">
268
- </li>
269
- <li>
270
- <div data-icon="f" class="icon"></div>
271
- <input type="text" readonly="readonly" value="f">
272
- </li>
273
- <li>
274
- <div data-icon="g" class="icon"></div>
275
- <input type="text" readonly="readonly" value="g">
276
- </li>
277
- <li>
278
- <div data-icon="i" class="icon"></div>
279
- <input type="text" readonly="readonly" value="i">
280
- </li>
281
- <li>
282
- <div data-icon="k" class="icon"></div>
283
- <input type="text" readonly="readonly" value="k">
284
- </li>
285
- <li>
286
- <div data-icon="l" class="icon"></div>
287
- <input type="text" readonly="readonly" value="l">
288
- </li>
289
- <li>
290
- <div data-icon="n" class="icon"></div>
291
- <input type="text" readonly="readonly" value="n">
292
- </li>
293
- <li>
294
- <div data-icon="o" class="icon"></div>
295
- <input type="text" readonly="readonly" value="o">
296
- </li>
297
- <li>
298
- <div data-icon="p" class="icon"></div>
299
- <input type="text" readonly="readonly" value="p">
300
- </li>
301
- <li>
302
- <div data-icon="q" class="icon"></div>
303
- <input type="text" readonly="readonly" value="q">
304
- </li>
305
- <li>
306
- <div data-icon="s" class="icon"></div>
307
- <input type="text" readonly="readonly" value="s">
308
- </li>
309
- <li>
310
- <div data-icon="t" class="icon"></div>
311
- <input type="text" readonly="readonly" value="t">
312
- </li>
313
- <li>
314
- <div data-icon="u" class="icon"></div>
315
- <input type="text" readonly="readonly" value="u">
316
- </li>
317
- <li>
318
- <div data-icon="w" class="icon"></div>
319
- <input type="text" readonly="readonly" value="w">
320
- </li>
321
- <li>
322
- <div data-icon="x" class="icon"></div>
323
- <input type="text" readonly="readonly" value="x">
324
- </li>
325
- <li>
326
- <div data-icon="y" class="icon"></div>
327
- <input type="text" readonly="readonly" value="y">
328
- </li>
329
- <li>
330
- <div data-icon="z" class="icon"></div>
331
- <input type="text" readonly="readonly" value="z">
332
- </li>
333
- <li>
334
- <div data-icon="A" class="icon"></div>
335
- <input type="text" readonly="readonly" value="A">
336
- </li>
337
- <li>
338
- <div data-icon="B" class="icon"></div>
339
- <input type="text" readonly="readonly" value="B">
340
- </li>
341
- <li>
342
- <div data-icon="h" class="icon"></div>
343
- <input type="text" readonly="readonly" value="h">
344
- </li>
345
- <li>
346
- <div data-icon="m" class="icon"></div>
347
- <input type="text" readonly="readonly" value="m">
348
- </li>
349
- <li>
350
- <div data-icon="r" class="icon"></div>
351
- <input type="text" readonly="readonly" value="r">
352
- </li>
353
- <li>
354
- <div data-icon="C" class="icon"></div>
355
- <input type="text" readonly="readonly" value="C">
356
- </li>
357
- <li>
358
- <div data-icon="E" class="icon"></div>
359
- <input type="text" readonly="readonly" value="E">
360
- </li>
361
- <li>
362
- <div data-icon="F" class="icon"></div>
363
- <input type="text" readonly="readonly" value="F">
364
- </li>
365
- <li>
366
- <div data-icon="G" class="icon"></div>
367
- <input type="text" readonly="readonly" value="G">
368
- </li>
369
- <li>
370
- <div data-icon="H" class="icon"></div>
371
- <input type="text" readonly="readonly" value="H">
372
- </li>
373
- <li>
374
- <div data-icon="I" class="icon"></div>
375
- <input type="text" readonly="readonly" value="I">
376
- </li>
377
- <li>
378
- <div data-icon="J" class="icon"></div>
379
- <input type="text" readonly="readonly" value="J">
380
- </li>
381
- <li>
382
- <div data-icon="K" class="icon"></div>
383
- <input type="text" readonly="readonly" value="K">
384
- </li>
385
- <li>
386
- <div data-icon="L" class="icon"></div>
387
- <input type="text" readonly="readonly" value="L">
388
- </li>
389
- <li>
390
- <div data-icon="M" class="icon"></div>
391
- <input type="text" readonly="readonly" value="M">
392
- </li>
393
- <li>
394
- <div data-icon="N" class="icon"></div>
395
- <input type="text" readonly="readonly" value="N">
396
- </li>
397
- <li>
398
- <div data-icon="O" class="icon"></div>
399
- <input type="text" readonly="readonly" value="O">
400
- </li>
401
- <li>
402
- <div data-icon="P" class="icon"></div>
403
- <input type="text" readonly="readonly" value="P">
404
- </li>
405
- <li>
406
- <div data-icon="Q" class="icon"></div>
407
- <input type="text" readonly="readonly" value="Q">
408
- </li>
409
- <li>
410
- <div data-icon="R" class="icon"></div>
411
- <input type="text" readonly="readonly" value="R">
412
- </li>
413
- <li>
414
- <div data-icon="S" class="icon"></div>
415
- <input type="text" readonly="readonly" value="S">
416
- </li>
417
- <li>
418
- <div data-icon="T" class="icon"></div>
419
- <input type="text" readonly="readonly" value="T">
420
- </li>
421
- <li>
422
- <div data-icon="U" class="icon"></div>
423
- <input type="text" readonly="readonly" value="U">
424
- </li>
425
- <li>
426
- <div data-icon="v" class="icon"></div>
427
- <input type="text" readonly="readonly" value="v">
428
- </li>
429
- <li>
430
- <div data-icon="V" class="icon"></div>
431
- <input type="text" readonly="readonly" value="V">
432
- </li>
433
- <li>
434
- <div data-icon="W" class="icon"></div>
435
- <input type="text" readonly="readonly" value="W">
436
- </li>
437
- <li>
438
- <div data-icon="X" class="icon"></div>
439
- <input type="text" readonly="readonly" value="X">
440
- </li>
441
- <li>
442
- <div data-icon="Z" class="icon"></div>
443
- <input type="text" readonly="readonly" value="Z">
444
- </li>
445
- <li>
446
- <div data-icon="D" class="icon"></div>
447
- <input type="text" readonly="readonly" value="D">
448
- </li>
449
- <li>
450
- <div data-icon="j" class="icon"></div>
451
- <input type="text" readonly="readonly" value="j">
452
- </li>
453
- <li>
454
- <div data-icon="0" class="icon"></div>
455
- <input type="text" readonly="readonly" value="0">
456
- </li>
457
- <li>
458
- <div data-icon="Y" class="icon"></div>
459
- <input type="text" readonly="readonly" value="Y">
460
- </li>
461
- <li>
462
- <div data-icon="1" class="icon"></div>
463
- <input type="text" readonly="readonly" value="1">
464
- </li>
465
- <li>
466
- <div data-icon="2" class="icon"></div>
467
- <input type="text" readonly="readonly" value="2">
468
- </li>
469
- <li>
470
- <div data-icon="3" class="icon"></div>
471
- <input type="text" readonly="readonly" value="3">
472
- </li>
473
- <li>
474
- <div data-icon="4" class="icon"></div>
475
- <input type="text" readonly="readonly" value="4">
476
- </li>
477
- </ul>
478
  </div>
479
  <script>(function() {
480
  var glyphs, i, len, ref;
244
  <input type="text" readonly="readonly" value="download">
245
  </li>
246
  </ul>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
247
  </div>
248
  <script>(function() {
249
  var glyphs, i, len, ref;
vendor/otgs/icons/loader.php CHANGED
@@ -22,7 +22,7 @@ if ( ! isset( $vendor_root_url ) ) {
22
  /*
23
  * OTGS icons version - increase after every major update.
24
  */
25
- $otg_icons_version = 100;
26
 
27
  /*
28
  * =================
22
  /*
23
  * OTGS icons version - increase after every major update.
24
  */
25
+ $otg_icons_version = 101;
26
 
27
  /*
28
  * =================
vendor/wpml-shared/wpml-lib-dependencies/src/dependencies/class-wpml-dependencies.php CHANGED
@@ -1,20 +1,20 @@
1
  <?php
2
- /*
3
- Module Name: WPML Dependency Check Module
4
- Description: This is not a plugin! This module must be included in other plugins (WPML and add-ons) to handle compatibility checks
5
- Author: OnTheGoSystems
6
- Author URI: http://www.onthegosystems.com/
7
- Version: 2.1
8
- */
9
 
10
  /** @noinspection PhpUndefinedClassInspection */
11
  class WPML_Dependencies {
12
  protected static $instance;
13
- private $admin_notice;
14
  private $current_product;
15
  private $current_version = array();
16
  private $expected_versions = array();
17
- private $installed_plugins = array();
18
  private $invalid_plugins = array();
19
  private $valid_plugins = array();
20
  private $validation_results = array();
@@ -22,14 +22,14 @@ class WPML_Dependencies {
22
  public $data_key = 'wpml_dependencies:';
23
  public $needs_validation_key = 'wpml_dependencies:needs_validation';
24
 
25
- private function __construct() {
26
  if ( null === self::$instance ) {
27
  $this->remove_old_admin_notices();
28
  $this->init_hooks();
29
  }
30
  }
31
 
32
- private function collect_data() {
33
  $active_plugins = wp_get_active_and_valid_plugins();
34
  $this->init_bundle( $active_plugins );
35
  foreach ( $active_plugins as $plugin ) {
@@ -45,7 +45,7 @@ class WPML_Dependencies {
45
  }
46
  }
47
 
48
- private function init_hooks() {
49
  add_action( 'init', array( $this, 'init_plugins_action' ) );
50
  add_action( 'extra_plugin_headers', array( $this, 'extra_plugin_headers_action' ) );
51
  add_action( 'admin_notices', array( $this, 'admin_notices_action' ) );
@@ -73,16 +73,16 @@ class WPML_Dependencies {
73
  }
74
  }
75
 
76
- private function reset_validation() {
77
  update_option( $this->needs_validation_key, true );
78
  $this->validate_plugins();
79
  }
80
 
81
- private function flag_as_validated() {
82
  update_option( $this->needs_validation_key, false );
83
  }
84
 
85
- private function needs_validation() {
86
  return get_option( $this->needs_validation_key );
87
  }
88
 
@@ -93,19 +93,19 @@ class WPML_Dependencies {
93
  }
94
  }
95
 
96
- private function is_doing_ajax_cron_or_xmlrpc() {
97
  return ( $this->is_doing_ajax() || $this->is_doing_cron() || $this->is_doing_xmlrpc() );
98
  }
99
 
100
- private function is_doing_ajax() {
101
  return ( defined( 'DOING_AJAX' ) && DOING_AJAX );
102
  }
103
 
104
- private function is_doing_cron() {
105
  return ( defined( 'DOING_CRON' ) && DOING_CRON );
106
  }
107
 
108
- private function is_doing_xmlrpc() {
109
  return ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST );
110
  }
111
 
@@ -140,7 +140,7 @@ class WPML_Dependencies {
140
  }
141
  }
142
 
143
- private function init_plugins() {
144
  if ( ! $this->installed_plugins ) {
145
  if ( ! function_exists( 'get_plugin_data' ) ) {
146
  /** @noinspection PhpIncludeInspection */
@@ -153,8 +153,7 @@ class WPML_Dependencies {
153
  update_option( $this->data_key . 'installed_plugins', $this->installed_plugins );
154
  }
155
 
156
- private function init_bundle( array $active_plugins ) {
157
-
158
  foreach ( $active_plugins as $plugin_file ) {
159
  $filename = dirname( $plugin_file ) . '/wpml-dependencies.json';
160
  if ( file_exists( $filename ) ) {
@@ -165,7 +164,7 @@ class WPML_Dependencies {
165
  }
166
  }
167
 
168
- private function add_installed_plugin( $plugin ) {
169
  $data = get_plugin_data( $plugin );
170
  $plugin_dir = realpath( dirname( $plugin ) );
171
 
@@ -180,7 +179,7 @@ class WPML_Dependencies {
180
  }
181
  }
182
 
183
- private function set_expected_versions( array $bundle ) {
184
  foreach ( $bundle as $plugin => $version ) {
185
  if ( ! array_key_exists( $plugin, $this->expected_versions ) ) {
186
  $this->expected_versions[ $plugin ] = $version;
@@ -192,7 +191,7 @@ class WPML_Dependencies {
192
  }
193
  }
194
 
195
- private function guess_plugin_slug( $plugin_data, $plugin_folder ) {
196
  $plugin_slug = null;
197
  $plugin_slug = $plugin_folder;
198
  if ( array_key_exists( 'Plugin Slug', $plugin_data ) && $plugin_data['Plugin Slug'] ) {
@@ -202,7 +201,7 @@ class WPML_Dependencies {
202
  return $plugin_slug;
203
  }
204
 
205
- private function validate_plugins() {
206
  $validation_results = $this->get_plugins_validation();
207
 
208
  $this->valid_plugins = array();
@@ -217,6 +216,7 @@ class WPML_Dependencies {
217
 
218
  update_option( $this->data_key . 'valid_plugins', $this->valid_plugins );
219
  update_option( $this->data_key . 'invalid_plugins', $this->invalid_plugins );
 
220
  }
221
 
222
  public function get_plugins_validation() {
@@ -232,7 +232,7 @@ class WPML_Dependencies {
232
  return $this->validation_results;
233
  }
234
 
235
- private function is_valid_plugin( $product = false ) {
236
  $result = false;
237
 
238
  if ( ! $product ) {
@@ -275,11 +275,12 @@ class WPML_Dependencies {
275
  return $result;
276
  }
277
 
278
- private function maybe_init_admin_notice() {
279
  $this->admin_notice = null;
280
- $this->installed_plugins = get_option( $this->data_key . 'installed_plugins', array() );
281
- $this->invalid_plugins = get_option( $this->data_key . 'invalid_plugins', array() );
282
- $this->valid_plugins = get_option( $this->data_key . 'valid_plugins', array() );
 
283
 
284
  if ( $this->has_invalid_plugins() ) {
285
  $notice_paragraphs = array();
1
  <?php
2
+ /**
3
+ * Module Name: WPML Dependency Check Module
4
+ * Description: This is not a plugin! This module must be included in other plugins (WPML and add-ons) to handle compatibility checks
5
+ * Author: OnTheGoSystems
6
+ * Author URI: http://www.onthegosystems.com/
7
+ * Version: 2.1
8
+ */
9
 
10
  /** @noinspection PhpUndefinedClassInspection */
11
  class WPML_Dependencies {
12
  protected static $instance;
13
+ protected $admin_notice;
14
  private $current_product;
15
  private $current_version = array();
16
  private $expected_versions = array();
17
+ protected $installed_plugins = array();
18
  private $invalid_plugins = array();
19
  private $valid_plugins = array();
20
  private $validation_results = array();
22
  public $data_key = 'wpml_dependencies:';
23
  public $needs_validation_key = 'wpml_dependencies:needs_validation';
24
 
25
+ protected function __construct() {
26
  if ( null === self::$instance ) {
27
  $this->remove_old_admin_notices();
28
  $this->init_hooks();
29
  }
30
  }
31
 
32
+ protected function collect_data() {
33
  $active_plugins = wp_get_active_and_valid_plugins();
34
  $this->init_bundle( $active_plugins );
35
  foreach ( $active_plugins as $plugin ) {
45
  }
46
  }
47
 
48
+ protected function init_hooks() {
49
  add_action( 'init', array( $this, 'init_plugins_action' ) );
50
  add_action( 'extra_plugin_headers', array( $this, 'extra_plugin_headers_action' ) );
51
  add_action( 'admin_notices', array( $this, 'admin_notices_action' ) );
73
  }
74
  }
75
 
76
+ protected function reset_validation() {
77
  update_option( $this->needs_validation_key, true );
78
  $this->validate_plugins();
79
  }
80
 
81
+ protected function flag_as_validated() {
82
  update_option( $this->needs_validation_key, false );
83
  }
84
 
85
+ protected function needs_validation() {
86
  return get_option( $this->needs_validation_key );
87
  }
88
 
93
  }
94
  }
95
 
96
+ protected function is_doing_ajax_cron_or_xmlrpc() {
97
  return ( $this->is_doing_ajax() || $this->is_doing_cron() || $this->is_doing_xmlrpc() );
98
  }
99
 
100
+ protected function is_doing_ajax() {
101
  return ( defined( 'DOING_AJAX' ) && DOING_AJAX );
102
  }
103
 
104
+ protected function is_doing_cron() {
105
  return ( defined( 'DOING_CRON' ) && DOING_CRON );
106
  }
107
 
108
+ protected function is_doing_xmlrpc() {
109
  return ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST );
110
  }
111
 
140
  }
141
  }
142
 
143
+ protected function init_plugins() {
144
  if ( ! $this->installed_plugins ) {
145
  if ( ! function_exists( 'get_plugin_data' ) ) {
146
  /** @noinspection PhpIncludeInspection */
153
  update_option( $this->data_key . 'installed_plugins', $this->installed_plugins );
154
  }
155
 
156
+ protected function init_bundle( array $active_plugins ) {
 
157
  foreach ( $active_plugins as $plugin_file ) {
158
  $filename = dirname( $plugin_file ) . '/wpml-dependencies.json';
159
  if ( file_exists( $filename ) ) {
164
  }
165
  }
166
 
167
+ protected function add_installed_plugin( $plugin ) {
168
  $data = get_plugin_data( $plugin );
169
  $plugin_dir = realpath( dirname( $plugin ) );
170
 
179
  }
180
  }
181
 
182
+ protected function set_expected_versions( array $bundle ) {
183
  foreach ( $bundle as $plugin => $version ) {
184
  if ( ! array_key_exists( $plugin, $this->expected_versions ) ) {
185
  $this->expected_versions[ $plugin ] = $version;
191
  }
192
  }
193
 
194
+ protected function guess_plugin_slug( $plugin_data, $plugin_folder ) {
195
  $plugin_slug = null;
196
  $plugin_slug = $plugin_folder;
197
  if ( array_key_exists( 'Plugin Slug', $plugin_data ) && $plugin_data['Plugin Slug'] ) {
201
  return $plugin_slug;
202
  }
203
 
204
+ protected function validate_plugins() {
205
  $validation_results = $this->get_plugins_validation();
206
 
207
  $this->valid_plugins = array();
216
 
217
  update_option( $this->data_key . 'valid_plugins', $this->valid_plugins );
218
  update_option( $this->data_key . 'invalid_plugins', $this->invalid_plugins );
219
+ update_option( $this->data_key . 'expected_versions', $this->expected_versions );
220
  }
221
 
222
  public function get_plugins_validation() {
232
  return $this->validation_results;
233
  }
234
 
235
+ protected function is_valid_plugin( $product = false ) {
236
  $result = false;
237
 
238
  if ( ! $product ) {
275
  return $result;
276
  }
277
 
278
+ protected function maybe_init_admin_notice() {
279
  $this->admin_notice = null;
280
+ $this->installed_plugins = get_option( $this->data_key . 'installed_plugins', [] );
281
+ $this->invalid_plugins = get_option( $this->data_key . 'invalid_plugins', [] );
282
+ $this->expected_versions = get_option( $this->data_key . 'expected_versions', [] );
283
+ $this->valid_plugins = get_option( $this->data_key . 'valid_plugins', [] );
284
 
285
  if ( $this->has_invalid_plugins() ) {
286
  $notice_paragraphs = array();
wpml-woocommerce.php CHANGED
@@ -7,11 +7,11 @@
7
  * Author URI: http://www.onthegosystems.com/
8
  * Text Domain: woocommerce-multilingual
9
  * Requires at least: 4.7
10
- * Tested up to: 5.4.1
11
- * Version: 4.9.0
12
  * Plugin Slug: woocommerce-multilingual
13
  * WC requires at least: 3.3.0
14
- * WC tested up to: 3.8.0
15
  *
16
  * @package WCML
17
  * @author OnTheGoSystems
@@ -33,7 +33,7 @@ if ( ! $wpml_php_version_check->is_ok() ) {
33
  return;
34
  }
35
 
36
- define( 'WCML_VERSION', '4.9.0' );
37
  define( 'WCML_PLUGIN_PATH', dirname( __FILE__ ) );
38
  define( 'WCML_PLUGIN_FOLDER', basename( WCML_PLUGIN_PATH ) );
39
  define( 'WCML_LOCALE_PATH', WCML_PLUGIN_PATH . '/locale' );
@@ -71,6 +71,10 @@ if ( WPML_Core_Version_Check::is_ok( WCML_PLUGIN_PATH . '/wpml-dependencies.json
71
  * Load WooCommerce Multilingual after WPML is loaded
72
  */
73
  function wcml_loader() {
 
 
 
 
74
  \WPML\Container\share( \WCML\Container\Config::getSharedInstances() );
75
 
76
  $xdomain_data = new WCML_xDomain_Data( new WPML_Cookie() );
7
  * Author URI: http://www.onthegosystems.com/
8
  * Text Domain: woocommerce-multilingual
9
  * Requires at least: 4.7
10
+ * Tested up to: 5.4.2
11
+ * Version: 4.9.1
12
  * Plugin Slug: woocommerce-multilingual
13
  * WC requires at least: 3.3.0
14
+ * WC tested up to: 4.2.0
15
  *
16
  * @package WCML
17
  * @author OnTheGoSystems
33
  return;
34
  }
35
 
36
+ define( 'WCML_VERSION', '4.9.1' );
37
  define( 'WCML_PLUGIN_PATH', dirname( __FILE__ ) );
38
  define( 'WCML_PLUGIN_FOLDER', basename( WCML_PLUGIN_PATH ) );
39
  define( 'WCML_LOCALE_PATH', WCML_PLUGIN_PATH . '/locale' );
71
  * Load WooCommerce Multilingual after WPML is loaded
72
  */
73
  function wcml_loader() {
74
+ if ( ! class_exists( 'WooCommerce' ) ) {
75
+ return;
76
+ }
77
+
78
  \WPML\Container\share( \WCML\Container\Config::getSharedInstances() );
79
 
80
  $xdomain_data = new WCML_xDomain_Data( new WPML_Cookie() );