woocommerce-multilingual
/
vendor
/
otgs
/
installer
/
includes
/
class-otgs-installer-plugin-finder.php
CDTClient
1 month ago
admin-notices
1 month ago
buy-url
1 month ago
debug
1 month ago
exceptions
5 years ago
instances
1 month ago
loader
5 years ago
products
1 month ago
repository
1 month ago
rest
1 month ago
site-key
1 month ago
support
1 month ago
template-service
1 month ago
upgrade
1 month ago
utilities
1 month ago
wpml-content-stats
1 month ago
class-installer-dependencies.php
1 month ago
class-installer-theme.php
1 month ago
class-installer-upgrader-skins.php
1 month ago
class-otgs-installer-autoloader.php
5 years ago
class-otgs-installer-cloned-sites-handler.php
1 month ago
class-otgs-installer-debug-info.php
1 month ago
class-otgs-installer-factory.php
1 month ago
class-otgs-installer-filename-hooks.php
1 month ago
class-otgs-installer-icons.php
1 month ago
class-otgs-installer-loader.php
10 months ago
class-otgs-installer-package-product-finder.php
1 month ago
class-otgs-installer-package-product.php
1 month ago
class-otgs-installer-package.php
5 years ago
class-otgs-installer-php-functions.php
1 month ago
class-otgs-installer-plugin-factory.php
1 month ago
class-otgs-installer-plugin-finder.php
1 month ago
class-otgs-installer-plugin.php
1 month ago
class-otgs-installer-plugins-page-notice.php
1 month ago
class-otgs-installer-plugins-update-cache-cleaner.php
5 years ago
class-otgs-installer-settings.php
1 month ago
class-otgs-installer-source-factory.php
5 years ago
class-otgs-installer-source.php
1 month ago
class-otgs-installer-subscription-factory.php
5 years ago
class-otgs-installer-subscription-warning-message.php
1 month ago
class-otgs-installer-subscription.php
1 month ago
class-otgs-installer-wp-components-hooks.php
1 month ago
class-otgs-installer-wp-components-sender.php
1 month ago
class-otgs-installer-wp-components-setting-ajax.php
1 month ago
class-otgs-installer-wp-components-setting-resources.php
1 month ago
class-otgs-installer-wp-components-storage.php
1 month ago
class-otgs-installer-wp-share-local-components-setting-hooks.php
1 month ago
class-otgs-installer-wp-share-local-components-setting.php
1 month ago
class-translation-service-info.php
1 month ago
class-wp-installer-api.php
1 month ago
class-wp-installer-channels.php
1 month ago
class-wp-installer.php
1 month ago
functions-core.php
1 month ago
functions-templates.php
1 month ago
otgs-installer-autoload-classmap.php
10 months ago
class-otgs-installer-plugin-finder.php
161 lines
| 1 | <?php |
| 2 | |
| 3 | class OTGS_Installer_Plugin_Finder { |
| 4 | |
| 5 | private $plugin_factory; |
| 6 | private $installer; |
| 7 | private $_repositories; |
| 8 | private $_plugins; |
| 9 | |
| 10 | private $installed_plugins; |
| 11 | |
| 12 | public function __construct( OTGS_Installer_Plugin_Factory $plugin_factory, $installer = null ) { |
| 13 | $this->plugin_factory = $plugin_factory; |
| 14 | $this->installer = $installer && $installer instanceof WP_Installer ? $installer : null; |
| 15 | } |
| 16 | |
| 17 | private function repositories() { |
| 18 | if ( null === $this->_repositories ) { |
| 19 | $installer = $this->installer ?: OTGS_Installer(); |
| 20 | $settings = $installer->get_settings() ?? []; |
| 21 | $this->_repositories = $settings['repositories']; |
| 22 | } |
| 23 | |
| 24 | return $this->_repositories; |
| 25 | } |
| 26 | |
| 27 | private function plugins() { |
| 28 | if ( null === $this->_plugins ) { |
| 29 | $this->_plugins = array(); |
| 30 | foreach ( $this->repositories() as $repo_key => $repository ) { |
| 31 | foreach ( $repository['data']['downloads']['plugins'] as $slug => $plugin ) { |
| 32 | $plugin_id = $this->get_installed_plugin_id_by_slug( $plugin['slug'] ); |
| 33 | |
| 34 | if ( ! $plugin_id ) { |
| 35 | $plugin_id = $this->get_installed_plugin_id_by_name( $plugin['name'] ); |
| 36 | } |
| 37 | |
| 38 | $this->_plugins[] = $this->plugin_factory->create( array( |
| 39 | 'name' => $plugin['name'], |
| 40 | 'slug' => $plugin['slug'], |
| 41 | 'description' => $plugin['description'], |
| 42 | 'changelog' => isset( $plugin['changelog'] ) ? $plugin['changelog'] : '', |
| 43 | 'version' => $plugin['version'], |
| 44 | 'installed_version' => isset( $this->installed_plugins[ $plugin_id ]['Version'] ) ? $this->installed_plugins[ $plugin_id ]['Version'] : null , |
| 45 | 'date' => $plugin['date'], |
| 46 | 'url' => $plugin['url'], |
| 47 | 'free_on_wporg' => isset( $plugin['free-on-wporg'] ) ? $plugin['free-on-wporg'] : '', |
| 48 | 'fallback_on_wporg' => isset( $plugin['fallback-free-on-wporg'] ) ? $plugin['fallback-free-on-wporg'] : '', |
| 49 | 'basename' => $plugin['basename'], |
| 50 | 'external_repo' => isset( $plugin['external-repo'] ) ? $plugin['external-repo'] : '', |
| 51 | 'is_lite' => isset( $plugin['is-lite'] ) ? $plugin['is-lite'] : '', |
| 52 | 'repo' => $repo_key, |
| 53 | 'id' => $plugin_id, |
| 54 | 'channel' => isset( $plugin['channel'] ) ? $plugin['channel'] : '', |
| 55 | 'tested' => isset( $plugin['tested'] ) ? $plugin['tested'] : null, |
| 56 | ) ); |
| 57 | } |
| 58 | } |
| 59 | } |
| 60 | |
| 61 | return $this->_plugins; |
| 62 | } |
| 63 | |
| 64 | public function get_all() { |
| 65 | return $this->plugins(); |
| 66 | } |
| 67 | |
| 68 | public function getLocalPluginVersions() { |
| 69 | $versions = []; |
| 70 | |
| 71 | foreach ( $this->plugins() as $plugin ) { |
| 72 | $installed_version = $plugin->get_installed_version(); |
| 73 | if ( $installed_version ) { |
| 74 | $versions[ $plugin->get_slug() ] = $installed_version; |
| 75 | } |
| 76 | } |
| 77 | |
| 78 | return $versions; |
| 79 | } |
| 80 | |
| 81 | public function get_otgs_installed_plugins_by_repository() { |
| 82 | return $this->getOTGSInstalledPluginsByRepository(); |
| 83 | } |
| 84 | |
| 85 | public function getOTGSInstalledPluginsByRepository( $withActiveFlag = false, $withVersions = false ) { |
| 86 | $installed_plugins = []; |
| 87 | |
| 88 | foreach ( $this->plugins() as $plugin ) { |
| 89 | if ( $plugin->get_installed_version() ) { |
| 90 | $pluginInfo = [ |
| 91 | 'id' => $plugin->get_id(), |
| 92 | 'slug' => $plugin->get_slug(), |
| 93 | 'name' => $plugin->get_name(), |
| 94 | ]; |
| 95 | |
| 96 | if ( $withActiveFlag ) { |
| 97 | $pluginInfo['active'] = is_plugin_active( $plugin->get_id() ); |
| 98 | } |
| 99 | |
| 100 | if ( $withVersions ) { |
| 101 | $pluginInfo['current_version'] = $plugin->get_version(); |
| 102 | $pluginInfo['installed_version'] = $plugin->get_installed_version(); |
| 103 | } |
| 104 | |
| 105 | $installed_plugins[ $plugin->get_repo() ][] = $pluginInfo; |
| 106 | } |
| 107 | } |
| 108 | |
| 109 | return $installed_plugins; |
| 110 | } |
| 111 | |
| 112 | public function get_plugin( $slug, $repo = '' ) { |
| 113 | foreach ( $this->plugins() as $plugin ) { |
| 114 | if ( $slug === $plugin->get_slug() ) { |
| 115 | |
| 116 | if ( ! $repo || $plugin->get_repo() === $repo ) { |
| 117 | return $plugin; |
| 118 | } |
| 119 | } |
| 120 | } |
| 121 | |
| 122 | return null; |
| 123 | } |
| 124 | |
| 125 | public function get_plugin_by_name( $name ) { |
| 126 | foreach ( $this->plugins() as $plugin ) { |
| 127 | if ( $name === strip_tags( $plugin->get_name() ) ) { |
| 128 | return $plugin; |
| 129 | } |
| 130 | } |
| 131 | |
| 132 | return null; |
| 133 | } |
| 134 | |
| 135 | private function get_installed_plugin_id_by_slug( $slug ) { |
| 136 | foreach ( $this->get_installed_plugins() as $plugin_id => $plugin ) { |
| 137 | $plugin_slug = explode( '/', $plugin_id ); |
| 138 | |
| 139 | if ( $slug === $plugin_slug[0] ) { |
| 140 | return $plugin_id; |
| 141 | } |
| 142 | } |
| 143 | |
| 144 | return null; |
| 145 | } |
| 146 | |
| 147 | private function get_installed_plugins() { |
| 148 | if ( ! $this->installed_plugins ) { |
| 149 | $this->installed_plugins = get_plugins(); |
| 150 | } |
| 151 | |
| 152 | return $this->installed_plugins; |
| 153 | } |
| 154 | |
| 155 | private function get_installed_plugin_id_by_name( $name ) { |
| 156 | $plugin_id = array_keys( wp_list_filter( $this->get_installed_plugins(), array( 'Name' => $name ) ) ); |
| 157 | |
| 158 | return current( $plugin_id ); |
| 159 | } |
| 160 | } |
| 161 |