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 / vendor / otgs / installer / includes / upgrade / AutoUpgrade.php
woocommerce-multilingual / vendor / otgs / installer / includes / upgrade Last commit date
AutoUpgrade.php 1 month ago IncludeAutoUpgrade.php 3 years ago InstallerPlugins.php 1 month ago class-otgs-installer-upgrade-response.php 1 month ago
AutoUpgrade.php
101 lines
1 <?php
2
3
4 namespace OTGS\Installer\Upgrade;
5
6
7 class AutoUpgrade {
8 private $installer;
9
10 private $installerPluginsFinder;
11
12 private $installerPlugins;
13
14 public function __construct( \WP_Installer $installer, \OTGS_Installer_Plugin_Finder $installerPluginsFinder, InstallerPlugins $installerPlugins ) {
15 $this->installer = $installer;
16 $this->installerPluginsFinder = $installerPluginsFinder;
17 $this->installerPlugins = $installerPlugins;
18 }
19
20 public function addHooks() {
21 add_filter( 'pre_update_site_option_auto_update_plugins', [
22 $this,
23 'modifyAutoUpdatePluginsOption',
24 ], 10, 2 );
25
26 add_filter( 'plugin_auto_update_setting_html', [ $this, 'modifyAutoUpdateSettingHtml' ], 10, 2 );
27 }
28
29 public function modifyAutoUpdatePluginsOption( $value, $oldValue ) {
30 $sanitizedOldValue = is_array( $oldValue ) ? $oldValue : [];
31 $sanitizedValue = is_array( $value ) ? $value : [];
32
33 $enabled = array_diff( $sanitizedValue, $sanitizedOldValue );
34 $disabled = array_diff( $sanitizedOldValue, $sanitizedValue );
35
36 $pluginFile = reset( $enabled ) ?: reset( $disabled );
37 foreach ( $this->installerPlugins->getFilteredInstallerPlugins() as $repositoryId => $installedRepositoryPlugins ) {
38 $pluginData = $this->installerPlugins->getPluginData( $repositoryId, $pluginFile );
39 if ( $pluginData ) {
40 $pluginObj = $this->installerPluginsFinder->get_plugin( $pluginData['slug'], $repositoryId );
41
42 if ( ! $pluginObj || $this->installer->plugin_is_registered( $repositoryId, $pluginData['slug'] )
43 && $pluginObj->get_external_repo() && $this->installer->plugin_is_registered( $pluginObj->get_external_repo(), $pluginData['slug'] ) ) {
44 continue;
45 }
46
47 $installedRepositoryPluginIds = array_map( function ( $plugin ) {
48 return $plugin['id'];
49 }, $installedRepositoryPlugins );
50
51 if ( array_intersect( $enabled, $installedRepositoryPluginIds ) ) {
52 $this->updateInstallerAutoUpdateSetting( $repositoryId, true );
53 $value = array_unique( array_merge( $sanitizedValue, $installedRepositoryPluginIds ) );
54 } elseif ( array_intersect( $disabled, $installedRepositoryPluginIds ) ) {
55 $this->updateInstallerAutoUpdateSetting( $repositoryId, false );
56 $value = array_diff( $sanitizedValue, $installedRepositoryPluginIds );
57 }
58 }
59 }
60
61 return $value;
62 }
63
64 public function modifyAutoUpdateSettingHtml( $html, $pluginFile ) {
65 foreach ( $this->installerPlugins->getFilteredInstallerPlugins() as $repositoryId => $installedRepositoryPlugins ) {
66 $pluginData = $this->installerPlugins->getPluginData( $repositoryId, $pluginFile );
67 if ( $pluginData ) {
68 $pluginObj = $this->installerPluginsFinder->get_plugin( $pluginData['slug'], $repositoryId );
69
70 if ( ! $this->installer->plugin_is_registered( $repositoryId, $pluginData['slug'] ) ) {
71 if ( ( ! $pluginObj || $pluginObj->has_fallback_on_wporg() || $pluginObj->get_external_repo() && $this->installer->plugin_is_registered( $pluginObj->get_external_repo(), $pluginData['slug'] ) )
72 || $this->installer->plugin_is_registered( 'wpml', $pluginData['slug'] ) ) {
73 continue;
74 }
75 $html = $this->getRegisterMessage( $repositoryId );
76 }
77
78 }
79 }
80
81 return $html;
82 }
83
84 private function updateInstallerAutoUpdateSetting( $repositoryId, $value ) {
85 $settings = $this->installer->get_settings();
86 if ( ! isset( $settings['repositories'][ $repositoryId ]['auto_update'] )
87 || $settings['repositories'][ $repositoryId ]['auto_update'] !== $value ) {
88 $settings['repositories'][ $repositoryId ]['auto_update'] = $value;
89 $this->installer->save_settings( $settings );
90 }
91 }
92
93 private function getRegisterMessage( $repositoryId ) {
94 $url = $this->installer->menu_url() . '&repository=' . $repositoryId . '&action=register';
95 $linkText = __( 'Register', 'installer' );
96 $text = __( ' to use auto-updates', 'installer' );
97
98 return '<a href="' . esc_url( $url ) . '">' . esc_html( $linkText ) . '</a>' . esc_html( $text );
99 }
100 }
101