/var/www/html/wp-content/plugins/elementor/modules/wp-cli/update.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php
namespace Elementor\Modules\WpCli;

use 
Elementor\Plugin;

if ( ! 
defined'ABSPATH' ) ) {
    exit; 
// Exit if accessed directly
}

/**
 * Elementor Page Builder cli tools.
 */
class Update extends \WP_CLI_Command {

    
/**
     * Update the DB after plugin upgrade.
     *
     * [--network]
     *      Update DB in all the sites in the network.
     *
     * [--force]
     *      Force update even if it's looks like that update is in progress.
     *
     *
     * ## EXAMPLES
     *
     *  1. wp elementor update db
     *      - This will Upgrade the DB if needed.
     *
     *  2. wp elementor update db --force
     *      - This will Upgrade the DB even if another process is running.
     *
     *  3. wp elementor update db --network
     *      - This will Upgrade the DB for each site in the network if needed.
     *
     * @since  2.4.0
     * @access public
     *
     * @param $args
     * @param $assoc_args
     */
    
public function db$args$assoc_args ) {
        
$network = ! empty( $assoc_args['network'] ) && is_multisite();

        if ( 
$network ) {
            
$blog_ids get_sites( [
                
'fields' => 'ids',
                
'number' => 0,
            ] );

            foreach ( 
$blog_ids as $blog_id ) {
                
switch_to_blog$blog_id );

                
\WP_CLI::line'Site #' $blog_id ' - ' get_option'blogname' ) );

                
$this->do_db_upgrade$assoc_args );

                
\WP_CLI::success'Done! - ' get_option'home' ) );

                
restore_current_blog();
            }
        } else {
            
$this->do_db_upgrade$assoc_args );
        }
    }

    protected function 
get_update_db_manager_class() {
        return 
'\Elementor\Core\Upgrade\Manager';
    }

    protected function 
do_db_upgrade$assoc_args ) {
        
$manager_class $this->get_update_db_manager_class();

        
/** @var \Elementor\Core\Upgrade\Manager $manager */
        
$manager = new $manager_class();

        
$updater $manager->get_task_runner();

        if ( 
$updater->is_process_locked() && empty( $assoc_args['force'] ) ) {
            
\WP_CLI::warning'Oops! Process is already running. Use --force to force run.' );
            return;
        }

        if ( ! 
$manager->should_upgrade() ) {
            
\WP_CLI::success'The DB is already updated!' );
            return;
        }

        
$callbacks $manager->get_upgrade_callbacks();
        
$did_tasks false;

        if ( ! empty( 
$callbacks ) ) {
            
Plugin::$instance->logger->get_logger()->info'Update DB has been started', [
                
'meta' => [
                    
'plugin' => $manager->get_plugin_label(),
                    
'from' => $manager->get_current_version(),
                    
'to' => $manager->get_new_version(),
                ],
            ] );

            
$updater->handle_immediately$callbacks );
            
$did_tasks true;
        }

        
$manager->on_runner_complete$did_tasks );

        
\WP_CLI::successcount$callbacks ) . ' updates(s) has been applied.' );
    }
}