PluginProbe
SupportCandy – AI Customer Support Ticket System & Live Chatbot Agent / 2.3.1
SupportCandy – AI Customer Support Ticket System & Live Chatbot Agent v2.3.1
3.5.4 3.5.3 3.5.2 3.5.1 3.4.9 3.5.0 3.4.8 3.4.7 trunk 2.3.1 3.3.6 3.3.7 3.3.8 3.3.9 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6
supportcandy / includes / actions / wpsc_gdpr_personal_data_eraser_cron.php

wpsc_gdpr_personal_data_eraser_cron.php in SupportCandy – AI Customer Support Ticket System & Live Chatbot Agent 2.3.1, at includes/actions/wpsc_gdpr_personal_data_eraser_cron.php

178 lines 5.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 exit; // Exit if accessed directly
4 }
5
6 global $wpdb,$wpscfunction;
7
8 $time = get_option('wpsc_garbage_collection_data_time' ,'');
9 $wpsc_personal_data_retention_type = get_option( 'wpsc_personal_data_retention_type', 'disable');
10 $wpsc_personal_data_retention_period_time = get_option( 'wpsc_personal_data_retention_period_time', 0);
11 $check_flag = false;
12
13 $now = time();
14 $ago = strtotime($time);
15 $diff = $now - $ago;
16 if($diff >= 86400){
17 $check_flag = true;
18 }
19
20 if( !$check_flag || $wpsc_personal_data_retention_type=='disable' || !$wpsc_personal_data_retention_period_time){
21 return;
22 }
23
24 $sql = "SELECT t.* from {$wpdb->prefix}wpsc_ticket t WHERE t.id NOT IN (SELECT DISTINCT tm.ticket_id FROM {$wpdb->prefix}wpsc_ticketmeta tm
25 WHERE tm.meta_key='wpsc_privacy_data_erase' AND t.id = tm.ticket_id ) ";
26 $tickets = $wpdb->get_results($sql);
27 $ticket_list = json_decode(json_encode($tickets), true);
28
29 $fields = get_terms([
30 'taxonomy' => 'wpsc_ticket_custom_fields',
31 'hide_empty' => false,
32 'orderby' => 'meta_value_num',
33 'meta_key' => 'wpsc_tf_load_order',
34 'order' => 'ASC',
35 'meta_query' => array(
36 array(
37 'key' => 'agentonly',
38 'value' => array(0,1),
39 'compare' => 'IN'
40 )
41 ),
42 ]);
43
44 $wpsc_personal_data_retention_period_unit = get_option('wpsc_personal_data_retention_period_unit');
45
46 if($wpsc_personal_data_retention_period_unit == 'days') {
47 foreach ($ticket_list as $post) {
48 $ticket_id = $post['id'];
49 $args = array(
50 'post_type' => 'wpsc_ticket_thread',
51 'post_status' => 'publish',
52 'posts_per_page' => -1,
53 'order' => 'ASC',
54 'meta_query' => array(
55 array(
56 'key' => 'ticket_id',
57 'value' => $ticket_id,
58 'compare' => '='
59 ),
60 ),
61 );
62 $ticket_threads = get_posts($args);
63
64 $now = time();
65 $date_created = strtotime($wpscfunction->get_ticket_fields($post['id'],'date_created'));
66 if($date_created <= $now) {
67
68 $diff = $now - $date_created;
69 $diff_days = intval( $diff/(60*60*24) );
70
71 if($diff_days > $wpsc_personal_data_retention_period_time ) {
72
73 $wpdb->update($wpdb->prefix.'wpsc_ticket', array('customer_name'=>'Anonymized User', 'customer_email'=>'[email protected] '), array('id'=>$post['id']));
74 foreach ($ticket_threads as $ticket_thread) {
75 update_post_meta($ticket_thread->ID, 'customer_name', 'Anonymized User');
76 update_post_meta($ticket_thread->ID, 'customer_email', '[email protected]');
77 }
78 foreach ($fields as $key => $field) {
79 $personal_info = get_term_meta($field->term_id, 'wpsc_tf_personal_info', true);
80 if($personal_info){
81 $wpscfunction->delete_ticket_meta($post['id'],$field->slug);
82 }
83 }
84 $wpscfunction->update_ticket_meta($post['id'],'wpsc_privacy_data_erase',array('meta_value' => 1));
85 }
86 }
87 }
88 }elseif ($wpsc_personal_data_retention_period_unit == 'months') {
89 foreach ($ticket_list as $post) {
90 $ticket_id = $post['id'];
91
92 $args = array(
93 'post_type' => 'wpsc_ticket_thread',
94 'post_status' => 'publish',
95 'posts_per_page' => -1,
96 'order' => 'ASC',
97 'meta_query' => array(
98 array(
99 'key' => 'ticket_id',
100 'value' => $ticket_id,
101 'compare' => '='
102 ),
103 ),
104 );
105 $ticket_threads = get_posts($args);
106
107 $now = new DateTime();
108 $date_created = $wpscfunction->get_ticket_fields($post['id'],'date_created');
109 $date_created = new DateTime($date_created);
110 if($date_created <= $now) {
111
112 $diff = $now->diff($date_created);
113 $months = ($diff->y*12) + $diff->m;
114
115 if($months >= $wpsc_personal_data_retention_period_time) {
116 $wpdb->update($wpdb->prefix.'wpsc_ticket', array('customer_name'=>'Anonymized User', 'customer_email'=>'[email protected] '), array('id'=>$post['id']));
117
118 foreach ($ticket_threads as $ticket_thread) {
119 update_post_meta($ticket_thread->ID, 'customer_name', 'Anonymized User');
120 update_post_meta($ticket_thread->ID, 'customer_email', '[email protected]');
121 }
122 foreach ($fields as $key => $field) {
123 $personal_info = get_term_meta($field->term_id, 'wpsc_tf_personal_info', true);
124 if($personal_info){
125 $wpscfunction->delete_ticket_meta($post['id'],$field->slug);
126 }
127 }
128 $wpscfunction->update_ticket_meta($post['id'],'wpsc_privacy_data_erase',array('meta_value' => 1));
129 }
130 }
131 }
132 }elseif ($wpsc_personal_data_retention_period_unit == 'years') {
133 foreach ($ticket_list as $post) {
134 $ticket_id = $post['id'];
135
136 $args = array(
137 'post_type' => 'wpsc_ticket_thread',
138 'post_status' => 'publish',
139 'posts_per_page' => -1,
140 'order' => 'ASC',
141 'meta_query' => array(
142 array(
143 'key' => 'ticket_id',
144 'value' => $ticket_id,
145 'compare' => '='
146 ),
147 ),
148 );
149 $ticket_threads = get_posts($args);
150
151 $now = new DateTime();
152 $date_created = $wpscfunction->get_ticket_fields($post['id'],'date_created');
153 $date_created = new DateTime($date_created);
154
155 if($date_created <= $now) {
156 $diff = $now->diff($date_created);
157 $years = $diff->y;
158
159 if($years >= $wpsc_personal_data_retention_period_time) {
160
161 $wpdb->update($wpdb->prefix.'wpsc_ticket', array('customer_name'=>'Anonymized User', 'customer_email'=>'[email protected] '), array('id'=>$post['id']));
162 foreach ($ticket_threads as $ticket_thread) {
163 update_post_meta($ticket_thread->ID, 'customer_name', 'Anonymized User');
164 update_post_meta($ticket_thread->ID, 'customer_email', '[email protected]');
165 }
166 foreach ($fields as $key => $field) {
167 $personal_info = get_term_meta($field->term_id, 'wpsc_tf_personal_info', true);
168 if($personal_info){
169 $wpscfunction->delete_ticket_meta($post['id'],$field->slug);
170 }
171 }
172 $wpscfunction->update_ticket_meta($post['id'],'wpsc_privacy_data_erase',array('meta_value' => 1));
173 }
174 }
175 }
176 }
177 update_option('wpsc_garbage_collection_data_time', date("Y-m-d H:i:s"));
178