/var/www/html_uk/wp-content/plugins/automatewoo/includes/DatabaseUpdates/4.0.0.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
<?php
// phpcs:ignoreFile
/**
 * Update to 4.0.0
 *
 * GDPR guest data
 * - clear IP address and browser agent
 * - mark guests whether have placed an order or not
 */

namespace AutomateWoo\DatabaseUpdates;

use 
AutomateWoo\Guest_Query;

if ( ! 
defined'ABSPATH' ) ) exit;

class 
Database_Update_4_0_0 extends AbstractDatabaseUpdate {

    protected 
$version '4.0.0';


    protected function 
start() {
        
parent::start();

        global 
$wpdb;

        if ( ! 
get_option'automatewoo_optin_mode' ) ) {
            
// existing stores stay with optout mode
            
update_option'automatewoo_optin_mode''optout'false );
        }

        
// drop IP column
        
if ( $wpdb->get_results"SHOW COLUMNS FROM {$wpdb->prefix}automatewoo_guests LIKE 'ip'" ) ) {
            
$wpdb->query"ALTER TABLE {$wpdb->prefix}automatewoo_guests DROP ip" );
        }
    }


    
/**
     * @return bool
     */
    
protected function process() {
        
$limit 5;

        
$query = new Guest_Query();
        
$query->set_limit$limit );
        
$query->where_version$this->version'<' );
        
$results $query->get_results();

        if ( empty( 
$results ) ) {
            return 
true// no more items to process, return complete
        
}

        foreach ( 
$results as $guest ) {
            
$guest->set_version$this->version );
            
$guest->save();

            
$guest->delete_meta'location_captured' );
            
$guest->delete_meta'user_agent' );
            
$order_id $guest->recache_most_recent_order_id();

            if ( 
$order_id ) {
                
// if the guest has an order we don't need the presubmit data, so delete it
                
$guest->delete_presubmit_data();
            }

            
$this->items_processed++;
        }

        return 
false;
    }


    
/**
     * @since 4.3.0
     * @return bool|int
     */
    
public function get_items_to_process_count() {
        
$query = new Guest_Query();
        
$query->where_version$this->version'<' );
        return 
$query->get_count();
    }

}

return new 
Database_Update_4_0_0();