Version Description
- Updated the translations.
- Fix fatal error when WooCommerce not activated.
Download this release
Release Info
Developer | andrew.p |
Plugin | 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
- changelog/4.9.1.md +5 -0
- classes/Multicurrency/Shipping/AdminHooks.php +1 -1
- classes/Multicurrency/Shipping/ShippingClasses.php +1 -1
- inc/translation-editor/class-wcml-translation-editor.php +1 -1
- locale/orig/woocommerce-multilingual.po +2 -2
- locale/woocommerce-multilingual-de_DE.mo +0 -0
- locale/woocommerce-multilingual-el.mo +0 -0
- locale/woocommerce-multilingual-es_ES.mo +0 -0
- locale/woocommerce-multilingual-fr_FR.mo +0 -0
- locale/woocommerce-multilingual-he_IL.mo +0 -0
- locale/woocommerce-multilingual-it_IT.mo +0 -0
- locale/woocommerce-multilingual-ja.mo +0 -0
- locale/woocommerce-multilingual-nl_NL.mo +0 -0
- locale/woocommerce-multilingual-pl_PL.mo +0 -0
- locale/woocommerce-multilingual-pt_BR.mo +0 -0
- locale/woocommerce-multilingual-sv_SE.mo +0 -0
- readme.txt +9 -5
- vendor/autoload.php +1 -1
- vendor/composer/autoload_real.php +7 -7
- vendor/composer/autoload_static.php +4 -4
- vendor/composer/installers/src/Composer/Installers/BaseInstaller.php +1 -0
- vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php +9 -19
- vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php +3 -1
- vendor/composer/installers/src/Composer/Installers/Installer.php +2 -0
- vendor/composer/installers/src/Composer/Installers/MantisBTInstaller.php +23 -0
- vendor/composer/installers/src/Composer/Installers/Plugin.php +12 -2
- vendor/composer/installers/src/Composer/Installers/SyliusInstaller.php +9 -0
- vendor/otgs/icons/css/otgs-icons.css +0 -13
- vendor/otgs/icons/icons-overview.html +0 -231
- vendor/otgs/icons/loader.php +1 -1
- vendor/wpml-shared/wpml-lib-dependencies/src/dependencies/class-wpml-dependencies.php +32 -31
- 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
|
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',
|
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
|
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
|
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
|
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.
|
8 |
-
Stable tag: 4.9.
|
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.
|
70 |
-
* WPML String Translation 3.0.
|
71 |
-
* WPML Translation Management 2.9.
|
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
|
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
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -22,15 +22,15 @@ class ComposerAutoloaderInit4be6ab1b4378bf1f9c11125f815eddfc
|
|
22 |
return self::$loader;
|
23 |
}
|
24 |
|
25 |
-
spl_autoload_register(array('
|
26 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
27 |
-
spl_autoload_unregister(array('
|
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\
|
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\
|
55 |
} else {
|
56 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
57 |
}
|
58 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
59 |
-
|
60 |
}
|
61 |
|
62 |
return $loader;
|
63 |
}
|
64 |
}
|
65 |
|
66 |
-
function
|
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
|
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 =
|
259 |
-
$loader->prefixDirsPsr4 =
|
260 |
-
$loader->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 |
-
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
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'
|
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 =
|
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 |
-
|
14 |
private $current_product;
|
15 |
private $current_version = array();
|
16 |
private $expected_versions = array();
|
17 |
-
|
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 |
-
|
26 |
if ( null === self::$instance ) {
|
27 |
$this->remove_old_admin_notices();
|
28 |
$this->init_hooks();
|
29 |
}
|
30 |
}
|
31 |
|
32 |
-
|
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 |
-
|
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 |
-
|
77 |
update_option( $this->needs_validation_key, true );
|
78 |
$this->validate_plugins();
|
79 |
}
|
80 |
|
81 |
-
|
82 |
update_option( $this->needs_validation_key, false );
|
83 |
}
|
84 |
|
85 |
-
|
86 |
return get_option( $this->needs_validation_key );
|
87 |
}
|
88 |
|
@@ -93,19 +93,19 @@ class WPML_Dependencies {
|
|
93 |
}
|
94 |
}
|
95 |
|
96 |
-
|
97 |
return ( $this->is_doing_ajax() || $this->is_doing_cron() || $this->is_doing_xmlrpc() );
|
98 |
}
|
99 |
|
100 |
-
|
101 |
return ( defined( 'DOING_AJAX' ) && DOING_AJAX );
|
102 |
}
|
103 |
|
104 |
-
|
105 |
return ( defined( 'DOING_CRON' ) && DOING_CRON );
|
106 |
}
|
107 |
|
108 |
-
|
109 |
return ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST );
|
110 |
}
|
111 |
|
@@ -140,7 +140,7 @@ class WPML_Dependencies {
|
|
140 |
}
|
141 |
}
|
142 |
|
143 |
-
|
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 |
-
|
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 |
-
|
169 |
$data = get_plugin_data( $plugin );
|
170 |
$plugin_dir = realpath( dirname( $plugin ) );
|
171 |
|
@@ -180,7 +179,7 @@ class WPML_Dependencies {
|
|
180 |
}
|
181 |
}
|
182 |
|
183 |
-
|
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 |
-
|
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 |
-
|
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 |
-
|
236 |
$result = false;
|
237 |
|
238 |
if ( ! $product ) {
|
@@ -275,11 +275,12 @@ class WPML_Dependencies {
|
|
275 |
return $result;
|
276 |
}
|
277 |
|
278 |
-
|
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->
|
|
|
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.
|
11 |
-
* Version: 4.9.
|
12 |
* Plugin Slug: woocommerce-multilingual
|
13 |
* WC requires at least: 3.3.0
|
14 |
-
* WC tested up to:
|
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.
|
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() );
|