woocommerce-membership.php
7.76 KB
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<?php
if ( ! defined( 'ABSPATH' ) ) exit;
if( !is_plugin_active( 'woocommerce-memberships/woocommerce-memberships.php' ) ){
return;
}
add_filter( 'acui_restricted_fields', 'acui_wm_restricted_fields', 10, 1 );
add_action( 'acui_documentation_after_plugins_activated', 'acui_wm_documentation_after_plugins_activated' );
add_action( 'post_acui_import_single_user', 'acui_wm_post_import_single_user', 10, 3 );
function acui_wm_restricted_fields( $acui_restricted_fields ){
return array_merge( $acui_restricted_fields, array( 'member_first_name', 'member_last_name', 'member_email', 'membership_plan_id', 'membership_plan_slug', 'membership_plan', 'membership_status', 'member_since', 'membership_expiration' ) );
}
function acui_wm_documentation_after_plugins_activated(){
?>
<tr valign="top">
<th scope="row"><?php _e( "WooCommerce Memberships is activated", 'import-users-from-csv-with-meta' ); ?></th>
<td>
<ol>
<li><strong><?php _e( "Import all membership information", 'import-users-from-csv-with-meta' ); ?></strong>: <?php _e( "You can use the <strong>columns in the CSV format created by WooCommercer Membership</strong> in order to import data from this plugin.", 'import-users-from-csv-with-meta' ); ?>. <a href="https://docs.woocommerce.com/document/woocommerce-memberships-import-and-export/"><?php _e( "Read more about columns and formats", 'import-users-from-csv-with-meta' ); ?></a>.</li>
<li><strong><?php _e( "Add users to membership plans", 'import-users-from-csv-with-meta' ); ?></strong>: <?php _e( "In this case you will only have to use <strong>membership_plan_id</strong> column in order to associate a user to their membership plan", 'import-users-from-csv-with-meta' ); ?>.</li>
</ol>
</td>
</tr>
<?php
}
function acui_wm_post_import_single_user( $headers, $row, $user_id ){
$pos = array_search( 'membership_plan_id', $headers );
if( $pos === FALSE )
return;
$pos_member_last_name = array_search( 'member_last_name', $headers ); // we search if there is only membership_plan_id or if there are more data
$full_membership_import = ( $pos_member_last_name !== FALSE );
if( $full_membership_import ){
$keys = array( 'member_first_name', 'member_last_name', 'member_email', 'membership_plan_id', 'membership_plan_slug', 'membership_plan', 'membership_status', 'member_since', 'membership_expiration' );
$columns = array();
foreach ( $keys as $key ) {
$columns[ $key ] = array_search( $key, $headers );
}
$membership_plan_id = isset( $columns['membership_plan_id'] ) && ! empty( $row[ $columns['membership_plan_id'] ] ) ? (int) $row[ $columns['membership_plan_id'] ] : null;
$membership_plan_slug = isset( $columns['membership_plan_slug'] ) && ! empty( $row[ $columns['membership_plan_slug'] ] ) ? $row[ $columns['membership_plan_slug'] ] : null;
$membership_plan = null;
if ( is_int( $membership_plan_id ) ) {
$membership_plan = wc_memberships_get_membership_plan( $membership_plan_id );
}
if ( ! $membership_plan && ! empty( $membership_plan_slug ) ) {
$membership_plan = wc_memberships_get_membership_plan( $membership_plan_slug );
}
// try to get an existing user membership from an id
$user_membership_id = isset( $columns['user_membership_id'] ) && ! empty( $row[ $columns['user_membership_id'] ] ) ? (int) $row[ $columns['user_membership_id'] ] : null;
$existing_user_membership = is_int( $user_membership_id ) ? wc_memberships_get_user_membership( $user_membership_id ) : null;
if ( ! $membership_plan && ! $existing_user_membership ) {
return;
} elseif ( ! $existing_user_membership && false ) {
return;
}
$import_data = array();
$import_data['membership_plan_id'] = $membership_plan_id;
$import_data['membership_plan_slug'] = $membership_plan_slug;
$import_data['membership_plan_name'] = isset( $columns['membership_plan'] ) && ! empty( $row[ $columns['membership_plan'] ] ) ? $row[ $columns['membership_plan'] ] : null;
$import_data['membership_plan'] = $membership_plan;
$import_data['user_membership_id'] = $user_membership_id;
$import_data['user_membership'] = $existing_user_membership;
$import_data['user_id'] = $user_id;
$import_data['user_name'] = isset( $columns['user_name'] ) && ! empty( $row[ $columns['user_name'] ] ) ? $row[ $columns['user_name'] ] : null;
$import_data['product_id'] = isset( $columns['product_id'] ) && ! empty( $row[ $columns['product_id'] ] ) ? $row[ $columns['product_id'] ] : null;
$import_data['order_id'] = isset( $columns['order_id'] ) && ! empty( $row[ $columns['order_id'] ] ) ? $row[ $columns['order_id'] ] : null;
$import_data['member_email'] = isset( $columns['member_email'] ) && ! empty( $row[ $columns['member_email'] ] ) ? $row[ $columns['member_email'] ] : null;
$import_data['member_first_name'] = isset( $columns['member_first_name'] ) && ! empty( $row[ $columns['member_first_name'] ] ) ? $row[ $columns['member_first_name'] ] : null;
$import_data['member_last_name'] = isset( $columns['member_last_name'] ) && ! empty( $row[ $columns['member_last_name'] ] ) ? $row[ $columns['member_last_name'] ] : null;
$import_data['membership_status'] = isset( $columns['membership_status'] ) && ! empty( $row[ $columns['membership_status'] ] ) ? $row[ $columns['membership_status'] ] : null;
$import_data['member_since'] = isset( $columns['member_since'] ) && ! empty( $row[ $columns['member_since'] ] ) ? $row[ $columns['member_since'] ] : null;
$import_data['membership_expiration'] = isset( $columns['membership_expiration'] ) && isset( $row[ $columns['membership_expiration'] ] ) ? $row[ $columns['membership_expiration'] ] : null;
$action = 'create';
$import_data = (array) apply_filters( 'wc_memberships_csv_import_user_memberships_data', $import_data, $action, $columns, $row );
$user_membership = null;
if ( isset( $import_data['membership_plan'] ) && $import_data['membership_plan'] instanceof WC_Memberships_Membership_Plan ) {
if ( wc_memberships_is_user_member( $user_id, $import_data['membership_plan'] ) ) {
return false;
}
$user_membership = wc_memberships_create_user_membership( array(
'user_membership_id' => 0,
'plan_id' => $import_data['membership_plan']->get_id(),
'user_id' => $user_id,
'product_id' => ! empty( $import_data['product_id'] ) ? (int) $import_data['product_id'] : 0,
'order_id' => ! empty( $import_data['order_id'] ) ? (int) $import_data['order_id'] : 0,
), 'create' );
}
acui_vm_update_user_membership_meta( $user_membership, $action, $import_data );
do_action( 'wc_memberships_csv_import_user_membership', $user_membership, $action, $import_data, new StdClass() );
}
else{
$membership_plan_id = absint( $row[ $pos ] );
$args = array(
'plan_id' => $membership_plan_id,
'user_id' => $user_id,
);
wc_memberships_create_user_membership( $args );
}
}
function acui_vm_update_user_membership_meta( WC_Memberships_User_Membership $user_membership, $action, array $data ) {
if( !empty( $data['product_id'] ) ) {
$user_membership->set_product_id( trim( $data['product_id'] ) );
}
if( !empty( $data['order_id'] ) ) {
$user_membership->set_order_id( trim( $data['order_id'] ) );
}
if( !empty( $data['member_since'] ) ) {
$user_membership->set_start_date( trim( $data['member_since'] ) );
}
if( !empty( $data['membership_status'] ) ){
$user_membership->update_status( trim( $data['membership_status'] ) );
}
if( !empty( $data['membership_expiration'] ) ){
$user_membership->set_end_date( trim( $data['membership_expiration'] ) );
}
}