/var/www/hkosl.com/aga/wp-content/plugins/simple-membership/classes/class.swpm-cronjob.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

/**
 * Description of BCronJob
 *
 * @author nur
 */
class SwpmCronJob {

    public function 
__construct() {
        
add_action('swpm_account_status_event', array(&$this'update_account_status'));
        
add_action('swpm_delete_pending_account_event', array(&$this'delete_pending_account'));
        
add_action('swpm_delete_pending_account_event', array($this'delete_pending_email_activation_data'));
    }

    public function 
update_account_status() {
        global 
$wpdb;
        for (
$counter 0;; $counter += 100) {
            
$query $wpdb->prepare("SELECT member_id, membership_level, subscription_starts, account_state
                    FROM 
{$wpdb->prefix}swpm_members_tbl LIMIT %d, 100"$counter);
            
$results $wpdb->get_results($query);
            if (empty(
$results)) {
                break;
            }
            
$expired = array();
            foreach (
$results as $result) {
                
$timestamp SwpmUtils::get_expiration_timestamp($result);
                if (
$timestamp time() && $result->account_state == 'active') {
                    
$expired[] = $result->member_id;
                }
            }
            if (
count($expired) > 0) {
                
$query "UPDATE {$wpdb->prefix}swpm_members_tbl 
                SET account_state='expired'  WHERE member_id IN (" 
implode(','$expired) . ")";
                
$wpdb->query($query);
            }
        }
    }

    public function 
delete_pending_account() {
        global 
$wpdb;
        
$interval SwpmSettings::get_instance()->get_value('delete-pending-account');
        if (empty(
$interval)) {
            return;
        }
        for (
$counter 0;; $counter += 100) {
            
$query $wpdb->prepare("SELECT member_id
                                     FROM 
                                        
{$wpdb->prefix}swpm_members_tbl 
                                    WHERE account_state='pending' 
                                         AND subscription_starts < DATE_SUB(NOW(), INTERVAL %d MONTH) LIMIT %d, 100"
$interval$counter);
            
$results $wpdb->get_results($query);
            if (empty(
$results)) {
                break;
            }
            
$to_delete = array();
            foreach (
$results as $result) {
                
$to_delete[] = $result->member_id;
            }
            if (
count($to_delete) > 0) {
                
SwpmLog::log_simple_debug("Auto deleting pending account."true);
                
$query "DELETE FROM {$wpdb->prefix}swpm_members_tbl 
                          WHERE member_id IN (" 
implode(','$to_delete) . ")";
                
$wpdb->query($query);
            }
        }
    }

    public function 
delete_pending_email_activation_data() {
        global 
$wpdb;
        
$q "SELECT * FROM {$wpdb->prefix}options WHERE option_name LIKE '%swpm_email_activation_data_usr_%'";
        
$res $wpdb->get_results($q);
        if (empty(
$res)) {
            return;
        }
        foreach (
$res as $data) {
            
$value unserialize($data->option_value);
            
$timestamp = isset($value['timestamp']) ? $value['timestamp'] : 0;
            
$now time();
            if (
$now $timestamp 60 60 24) {
                
delete_option($data->option_name);
            }
        }
    }

}