XMLWriter.php
10 years ago
chunk.php
10 years ago
config.php
10 years ago
download.php
10 years ago
handler.php
10 years ago
helper.php
10 years ago
input.php
10 years ago
session.php
10 years ago
wpallimport.php
10 years ago
zip.php
10 years ago
handler.php
134 lines
| 1 | <?php |
| 2 | |
| 3 | class PMXE_Handler extends PMXE_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 | |
| 26 | $this->set_session_expiration(); |
| 27 | |
| 28 | $this->_import_id = $this->generate_import_id(); |
| 29 | |
| 30 | $this->_data = $this->get_session_data(); |
| 31 | |
| 32 | } |
| 33 | |
| 34 | /** |
| 35 | * Return true if the current user has an active session, i.e. a cookie to retrieve values |
| 36 | * @return boolean |
| 37 | */ |
| 38 | public function has_session() |
| 39 | { |
| 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 | { |
| 51 | $this->_session_expiring = time() + intval( apply_filters( 'wpallexport_session_expiring', 60 * 60 * 47 ) ); // 47 Hours |
| 52 | $this->_session_expiration = time() + intval( apply_filters( 'wpallexport_session_expiration', 60 * 60 * 48 ) ); // 48 Hours |
| 53 | } |
| 54 | |
| 55 | public function generate_import_id() |
| 56 | { |
| 57 | $input = new PMXE_Input(); |
| 58 | $import_id = $input->get('id', 'new'); |
| 59 | |
| 60 | return $import_id; |
| 61 | } |
| 62 | |
| 63 | /** |
| 64 | * get_session_data function. |
| 65 | * |
| 66 | * @access public |
| 67 | * @return array |
| 68 | */ |
| 69 | public function get_session_data() |
| 70 | { |
| 71 | global $wpdb; |
| 72 | |
| 73 | $session = $wpdb->get_row( $wpdb->prepare("SELECT option_name, option_value FROM $wpdb->options WHERE option_name = %s", '_wpallexport_session_' . $this->_import_id . '_'), ARRAY_A ); |
| 74 | |
| 75 | return empty($session) ? array() : maybe_unserialize($session['option_value']); |
| 76 | } |
| 77 | |
| 78 | /** |
| 79 | * get_session_data function. |
| 80 | * |
| 81 | * @access public |
| 82 | * @return array |
| 83 | */ |
| 84 | public function get_clear_session_data() |
| 85 | { |
| 86 | $this->_data = $this->get_session_data(); |
| 87 | $clear_data = array(); |
| 88 | foreach ($this->_data as $key => $value) { |
| 89 | $ckey = sanitize_key( $key ); |
| 90 | $clear_data[ $ckey ] = maybe_unserialize( $value ); |
| 91 | } |
| 92 | |
| 93 | return $clear_data; |
| 94 | } |
| 95 | |
| 96 | /** |
| 97 | * save_data function. |
| 98 | * |
| 99 | * @access public |
| 100 | * @return void |
| 101 | */ |
| 102 | public function save_data() |
| 103 | { |
| 104 | // Dirty if something changed - prevents saving nothing new |
| 105 | if ( $this->_dirty && $this->has_session() ) |
| 106 | { |
| 107 | $session_option = '_wpallexport_session_' . $this->_import_id . '_'; |
| 108 | $session_expiry_option = '_wpallexport_session_expires_' . $this->_import_id . '_'; |
| 109 | |
| 110 | global $wpdb; |
| 111 | |
| 112 | $session = $wpdb->get_row( $wpdb->prepare("SELECT option_name, option_value FROM $wpdb->options WHERE option_name = %s", $session_option), ARRAY_A ); |
| 113 | |
| 114 | if ( empty($session) ) |
| 115 | { |
| 116 | $wpdb->query($wpdb->prepare("INSERT INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, 'no')", $session_option, serialize($this->_data))); |
| 117 | $wpdb->query($wpdb->prepare("INSERT INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, 'no')", $session_expiry_option, $this->_session_expiration)); |
| 118 | // add_option( $session_option, $this->_data, '', 'no' ); |
| 119 | // add_option( $session_expiry_option, $this->_session_expiration, '', 'no' ); |
| 120 | } else { |
| 121 | // update_option( $session_option, $this->_data ); |
| 122 | $wpdb->query($wpdb->prepare("UPDATE `$wpdb->options` SET `option_value` = %s WHERE `option_name` = %s", serialize($this->_data), $session_option)); |
| 123 | } |
| 124 | } |
| 125 | } |
| 126 | |
| 127 | public function clean_session( $import_id = 'new' ) |
| 128 | { |
| 129 | global $wpdb; |
| 130 | |
| 131 | $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->options WHERE option_name = %s", '_wpallexport_session_' . $import_id . '_') ); |
| 132 | $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->options WHERE option_name = %s", '_wpallexport_session_expires_' . $import_id . '_') ); |
| 133 | } |
| 134 | } |