PluginProbe
Elementor Website Builder – more than just a page builder / 3.32.5
Elementor Website Builder – more than just a page builder v3.32.5
4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 All 452 releases
elementor / app / modules / import-export-customization / runners / import / plugins.php

plugins.php in Elementor Website Builder – more than just a page builder 3.32.5, at app/modules/import-export-customization/runners/import/plugins.php

89 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Elementor\App\Modules\ImportExportCustomization\Runners\Import;
4
5 use Elementor\Core\Utils\Collection;
6 use Elementor\Core\Utils\Plugins_Manager;
7 use Elementor\Core\Utils\Str;
8
9 class Plugins extends Import_Runner_Base {
10
11 /**
12 * @var Plugins_Manager
13 */
14 private $plugins_manager;
15
16 public function __construct( $plugins_manager = null ) {
17 if ( $plugins_manager ) {
18 $this->plugins_manager = $plugins_manager;
19 } else {
20 $this->plugins_manager = new Plugins_Manager();
21 }
22 }
23
24 public static function get_name(): string {
25 return 'plugins';
26 }
27
28 public function should_import( array $data ) {
29 return (
30 isset( $data['include'] ) &&
31 in_array( 'plugins', $data['include'], true ) &&
32 ! empty( $data['manifest']['plugins'] ) &&
33 ! empty( $data['selected_plugins'] )
34 );
35 }
36
37 public function import( array $data, array $imported_data ) {
38 $customization = $data['customization']['plugins'] ?? null;
39
40 if ( $customization ) {
41 $enabled_plugin_keys = Collection::make( $customization )->filter()->keys();
42
43 $plugins = Collection::make( $data['selected_plugins'] )
44 ->filter( function( $plugin_data, $plugin_key ) use ( $enabled_plugin_keys ) {
45 return $enabled_plugin_keys->contains( $plugin_data['plugin'] );
46 } )
47 ->values();
48 } else {
49 $plugins = $data['selected_plugins'];
50 }
51
52 $plugins_collection = ( new Collection( $plugins ) )
53 ->map( function ( $item ) {
54 if ( ! Str::ends_with( $item['plugin'], '.php' ) ) {
55 $item['plugin'] .= '.php';
56 }
57 return $item;
58 } );
59
60 $slugs = $plugins_collection
61 ->map( function ( $item ) {
62 return $item['plugin'];
63 } )
64 ->all();
65
66 if ( ! function_exists( 'request_filesystem_credentials' ) ) {
67 require_once ABSPATH . 'wp-admin/includes/file.php';
68 require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
69 require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
70 }
71
72 $installed = $this->plugins_manager->install( $slugs );
73 $activated = $this->plugins_manager->activate( $installed['succeeded'] );
74
75 $ordered_activated_plugins = $plugins_collection
76 ->filter( function ( $item ) use ( $activated ) {
77 return in_array( $item['plugin'], $activated['succeeded'], true );
78 } )
79 ->map( function ( $item ) {
80 return $item['name'];
81 } )
82 ->all();
83
84 $result['plugins'] = $ordered_activated_plugins;
85
86 return $result;
87 }
88 }
89