PluginProbe ʕ •ᴥ•ʔ
WP All Import – Drag & Drop Import for CSV, XML, Excel & Google Sheets / 3.9.4
WP All Import – Drag & Drop Import for CSV, XML, Excel & Google Sheets v3.9.4
3.9.5 3.9.6 4.0.0 4.0.1 4.1.0 trunk 2.12 2.13 2.14 3.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 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 3.4.7 3.4.8 3.4.9 3.5.0 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.5.6 3.5.7 3.5.8 3.5.9 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.6.9 3.7.0 3.7.1 3.7.2 3.7.3 3.7.3-beta-1.0 3.7.4 3.7.4-beta-1.0 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4
wp-all-import / classes / handler.php
wp-all-import / classes Last commit date
XmlStreamReader 2 years ago partner-discount-sdk 1 year ago api.php 4 years ago arraytoxml.php 8 years ago chunk.php 1 year ago config.php 2 years ago download.php 13 years ago error.php 2 years ago handler.php 9 months ago helper.php 8 years ago input.php 7 years ago nested.php 4 years ago rapidaddon.php 9 months ago render.php 4 years ago session.php 9 months ago upload.php 9 months ago zip.php 10 years ago
handler.php
179 lines
1 <?php
2
3 class PMXI_Handler extends PMXI_Session {
4
5 /** cookie name */
6 private $_cookie;
7
8 /** session due to expire timestamp */
9 private $_session_expiring;
10
11 /** session expiration timestamp */
12 private $_session_expiration;
13
14 /** Bool based on whether a cookie exists **/
15 private $_has_cookie = false;
16
17 /**
18 * Constructor for the session class.
19 *
20 * @access public
21 * @return void
22 */
23 public function __construct() {
24
25 $this->set_session_expiration();
26
27 $this->_import_id = $this->generate_import_id();
28
29 $this->_data = $this->get_session_data();
30
31 //add_action( 'shutdown', array( $this, 'save_data' ), 20 );
32
33 }
34
35 /**
36 * Return true if the current user has an active session, i.e. a cookie to retrieve values
37 * @return boolean
38 */
39 public function has_session() {
40 return isset( $_COOKIE[ $this->_cookie ] ) || $this->_has_cookie || is_user_logged_in();
41 }
42
43 /**
44 * set_session_expiration function.
45 *
46 * @access public
47 * @return void
48 */
49 public function set_session_expiration() {
50 $this->_session_expiring = time() + intval( apply_filters( 'wpallimport_session_expiring', 60 * 60 * 47 ) ); // 47 Hours
51 $this->_session_expiration = time() + intval( apply_filters( 'wpallimport_session_expiration', 60 * 60 * 48 ) ); // 48 Hours
52 }
53
54 public function generate_import_id() {
55
56 $input = new PMXI_Input();
57 $import_id = $input->get('id', 'new');
58
59 return $import_id;
60
61 }
62
63 /**
64 * get_session_data function.
65 *
66 * @access public
67 * @return array
68 */
69 public function get_session_data()
70 {
71 $session = get_option('_wpallimport_session_' . $this->_import_id . '_', []);
72 $delete_option = false;
73
74 if( false === $session ){
75 $delete_option = true;
76 }
77
78 if( !empty($session) && !is_array($session) ) {
79 $session_clear = \maybe_unserialize( base64_decode( $session ) );
80 if($session === $session_clear){
81 $delete_option = true;
82 }else{
83 $session = $session_clear;
84 }
85 }
86
87 if($delete_option){
88 delete_option('_wpallimport_session_' . $this->_import_id . '_');
89 delete_option('_wpallimport_session_expires_' . $this->_import_id . '_');
90 $session = [];
91 }
92
93 return $session;
94 }
95
96 /**
97 * save_data function.
98 *
99 * @access public
100 * @return void
101 */
102 public function save_data() {
103 // Dirty if something changed - prevents saving nothing new
104 if ( $this->_dirty && $this->has_session() ) {
105
106 $session_option = '_wpallimport_session_' . $this->_import_id . '_';
107 $session_expiry_option = '_wpallimport_session_expires_' . $this->_import_id . '_';
108
109 wp_cache_delete( 'notoptions', 'options' );
110 wp_cache_delete( $session_option, 'options' );
111 wp_cache_delete( $session_expiry_option, 'options' );
112
113 if ( false === get_option( $session_option ) )
114 {
115 add_option( $session_option, base64_encode(serialize($this->_data)), '', 'no' );
116 add_option( $session_expiry_option, $this->_session_expiration, '', 'no' );
117 } else {
118 update_option( $session_option, base64_encode(serialize($this->_data)) );
119 }
120 }
121 }
122
123 public function convertData( $import_id ){
124
125 $this->_import_id = 'new';
126
127 $this->_data = $this->get_session_data();
128
129 $this->set_session_expiration();
130
131 $this->_import_id = $import_id;
132
133 $this->clean_session();
134
135 $this->_dirty = true;
136
137 $this->save_data();
138
139 $parser_type = get_option('wpai_parser_type_0');
140
141 if ( ! empty($parser_type) ){
142 update_option('wpai_parser_type_' . $import_id, $parser_type, false);
143 delete_option('wpai_parser_type_0');
144 }
145 }
146
147 public function clean_session( $import_id = 'new' ){
148
149 global $wpdb;
150
151 $now = time();
152 $expired_sessions = array();
153 $wpallimport_session_expires = $wpdb->get_results( $wpdb->prepare("SELECT option_name, option_value FROM $wpdb->options WHERE option_name LIKE %s", "_wpallimport_session_expires_" . $import_id . "_%") );
154
155 $expired_sessions[] = "_wpallimport_session_{$import_id}_"; // Session key
156
157 foreach ( $wpallimport_session_expires as $wpallimport_session_expire ) {
158 //if ( $now > intval( $wpallimport_session_expire->option_value ) ) {
159 //$session_id = substr( $wpallimport_session_expire->option_name, 29 );
160 $expired_sessions[] = $wpallimport_session_expire->option_name; // Expires key
161 //$expired_sessions[] = "_wpallimport_session_$session_id"; // Session key
162 //}
163 }
164
165 if ( ! empty( $expired_sessions ) ) {
166 wp_cache_delete( 'notoptions', 'options' );
167 foreach ($expired_sessions as $expired) {
168 wp_cache_delete( $expired, 'options' );
169 delete_option($expired);
170 }
171 $expired_sessions_chunked = array_chunk( $expired_sessions, 100 );
172
173 foreach ( $expired_sessions_chunked as $chunk ) {
174 $option_names = implode( "','", $chunk );
175 $wpdb->query( "DELETE FROM $wpdb->options WHERE option_name IN ('$option_names')" );
176 }
177 }
178 }
179 }