/** * debug * * @param string $class * @param string $func * @param string $line * @param \EE_Transaction $transaction * @param array $info * @param bool $display_request */ protected function log($class = '', $func = '', $line = '', EE_Transaction $transaction, $info = array(), $display_request = false) { if (WP_DEBUG && false) { if ($transaction instanceof EE_Transaction) { // don't serialize objects $info = EEH_Debug_Tools::strip_objects($info); if ($transaction->ID()) { $info['TXN_status'] = $transaction->status_ID(); $info['TXN_reg_steps'] = $transaction->reg_steps(); $index = 'EE_Transaction: ' . $transaction->ID(); EEH_Debug_Tools::log($class, $func, $line, $info, $display_request, $index); } } } }
/** * debug * * @param string $class * @param string $func * @param string $line * @param array $info * @param bool $display_request */ function log($class = '', $func = '', $line = '', $info = array(), $display_request = false) { if (WP_DEBUG && false) { $debug_data = get_option('EE_DEBUG_SPCO_' . EE_Session::instance()->id(), array()); $default_data = array($class => $func . '() : ' . $line, 'request->step' => $this->step, 'request->action' => $this->action, 'current_step->slug' => $this->current_step instanceof EE_SPCO_Reg_Step ? $this->current_step->slug() : '', 'current_step->completed' => $this->current_step instanceof EE_SPCO_Reg_Step ? $this->current_step->completed() : '', 'txn_status_updated' => $this->txn_status_updated, 'reg_status_updated' => $this->reg_status_updated, 'reg_url_link' => $this->reg_url_link, 'REQ' => $display_request ? $_REQUEST : ''); if ($this->transaction instanceof EE_Transaction) { $default_data['TXN_status'] = $this->transaction->status_ID(); $default_data['TXN_reg_steps'] = $this->transaction->reg_steps(); foreach ($this->transaction->registrations($this->reg_cache_where_params) as $REG_ID => $registration) { $default_data['registrations'][$REG_ID] = $registration->status_ID(); } if ($this->transaction->ID()) { $TXN_ID = 'EE_Transaction: ' . $this->transaction->ID(); // don't serialize objects $info = $this->_strip_objects($info); if (!isset($debug_data[$TXN_ID])) { $debug_data[$TXN_ID] = array(); } $debug_data[$TXN_ID][microtime()] = array_merge($default_data, $info); update_option('EE_DEBUG_SPCO_' . EE_Session::instance()->id(), $debug_data); } } } }
/** * possibly toggles TXN status * * @param EE_Transaction $transaction * @param boolean $update_txn whether to save the TXN * @return boolean whether the TXN was saved * @throws \EE_Error */ public function update_transaction_status_based_on_total_paid(EE_Transaction $transaction, $update_txn = TRUE) { // verify transaction if (!$transaction instanceof EE_Transaction) { EE_Error::add_error(__('Please provide a valid EE_Transaction object.', 'event_espresso'), __FILE__, __FUNCTION__, __LINE__); return FALSE; } // set incoming TXN_Status $this->set_old_txn_status($transaction->status_ID()); // set transaction status based on comparison of TXN_paid vs TXN_total if (EEH_Money::compare_floats($transaction->paid(), $transaction->total(), '>')) { $new_txn_status = EEM_Transaction::overpaid_status_code; } else { if (EEH_Money::compare_floats($transaction->paid(), $transaction->total())) { $new_txn_status = EEM_Transaction::complete_status_code; } else { if (EEH_Money::compare_floats($transaction->paid(), $transaction->total(), '<')) { $new_txn_status = EEM_Transaction::incomplete_status_code; } else { EE_Error::add_error(__('The total paid calculation for this transaction is inaccurate.', 'event_espresso'), __FILE__, __FUNCTION__, __LINE__); return FALSE; } } } if ($new_txn_status !== $transaction->status_ID()) { // set incoming TXN_Status $this->set_new_txn_status($new_txn_status); $transaction->set_status($new_txn_status); if ($update_txn) { return $transaction->save() ? TRUE : FALSE; } } return FALSE; }
/** * _update_server_wait_time * * @access public * @param array $thank_you_page_data thank you page portion of the incoming JSON array from the WP heartbeat data * @return array */ private function _update_server_wait_time($thank_you_page_data = array()) { $response['espresso_thank_you_page'] = array('still_waiting' => isset($thank_you_page_data['initial_access']) ? time() - $thank_you_page_data['initial_access'] : 0, 'txn_status' => $this->_current_txn->status_ID()); return $response; }
/** * update_transaction_and_registrations_after_checkout_or_payment * cycles thru related registrations and calls update_registration_after_checkout_or_payment() on each * * @param EE_Transaction $transaction * @param \EE_Payment | NULL $payment * @param array $registration_query_params - array of query WHERE params to use when retrieving cached registrations from a transaction * @throws \EE_Error * @return array */ public function update_transaction_and_registrations_after_checkout_or_payment(EE_Transaction $transaction, $payment = NULL, $registration_query_params = array()) { // set incoming TXN_Status, and consider it new since old status should have been set $this->set_new_txn_status($transaction->status_ID()); do_action('AHEE_log', __FILE__, __FUNCTION__, $transaction->status_ID(), '$transaction->status_ID()'); // make sure some query params are set for retrieving registrations $this->_set_registration_query_params($registration_query_params); // get final reg step status $finalized = $this->final_reg_step_completed($transaction); // if the 'finalize_registration' step has been initiated (has a timestamp) but has not yet been fully completed (TRUE) if (is_numeric($finalized) && $finalized !== true) { $this->set_reg_step_completed($transaction, 'finalize_registration'); $finalized = true; } $transaction->save(); // array of details to aid in decision making by systems $update_params = array('old_txn_status' => $this->old_txn_status(), 'new_txn_status' => $this->new_txn_status(), 'finalized' => $finalized, 'revisit' => $this->_revisit, 'payment_updates' => $payment instanceof EE_Payment ? TRUE : FALSE, 'last_payment' => $payment); // now update the registrations and add the results to our $update_params $update_params['status_updates'] = $this->_call_method_on_registrations_via_Registration_Processor('update_registration_after_checkout_or_payment', $transaction, $this->_registration_query_params, $update_params); // send messages /** @type EE_Registration_Processor $registration_processor */ $registration_processor = EE_Registry::instance()->load_class('Registration_Processor'); $registration_processor->trigger_registration_update_notifications($transaction->primary_registration(), $update_params); do_action('AHEE__EE_Transaction_Processor__update_transaction_and_registrations_after_checkout_or_payment', $transaction, $update_params); return $update_params; }
/** * column_STS_ID * @param \EE_Transaction $item * @return string */ function column_STS_ID(EE_Transaction $item) { return '<span class="ee-status-strip ee-status-strip-td txn-status-' . $item->status_ID() . '"></span>'; }
/** * Checks if the provided transaction is completed. If so, clears the session and handles * the logic of finalizing the transaction * @param EE_Transaction $transaction */ public function check_for_completed_transaction(EE_Transaction $transaction) { //throw new Exception("unfinished. This function should check for a completed transaction. If completed, clear some session etc require_once EE_MODELS . 'EEM_Transaction.model.php'; if ($transaction->status_ID() == EEM_Transaction::complete_status_code) { $this->reset_session_data(); } }