method->disputeData( $transaction, $log ) ): $return .= <<

IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'tstatus_dspd_set', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<


IPSCONTENT; if ( isset( $log['on'] ) and $log['on'] ): $return .= << IPSCONTENT; $sprintf = array(\IPS\Member::load( $log['by'] )->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'byline_nodate', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= <<

IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'tstatus_fail_set', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<


IPSCONTENT; if ( isset( $log['on'] ) and $log['on'] ): $return .= << IPSCONTENT; $sprintf = array(\IPS\Member::load( $log['by'] )->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'byline_nodate', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $val = "trans_extra_{$log['note']}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $log['noteRaw'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function hold( $transaction, $log ) { $return = ''; $return .= <<
IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'tstatus_hold_set', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
IPSCONTENT; if ( isset( $log['on'] ) and $log['on'] ): $return .= << IPSCONTENT; $sprintf = array(\IPS\Member::load( $log['by'] )->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'byline_nodate', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $log['note'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function link( $transaction ) { $return = ''; $return .= << IPSCONTENT; $sprintf = array($transaction->id); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'transaction_number', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; return $return; } function okay( $transaction, $log ) { $return = ''; $return .= <<

IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'tstatus_okay_set', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

IPSCONTENT; if ( isset( $log['on'] ) and $log['on'] ): $return .= << IPSCONTENT; $sprintf = array(\IPS\Member::load( $log['by'] )->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'byline_nodate', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'tstatus_okay_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; return $return; } function paypalStatus( $transaction ) { $return = ''; $return .= <<extra['verified'] ) ): $return .= << IPSCONTENT; $sprintf = array($transaction->extra['verified']); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'paypal_payer_status', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; endif; $return .= <<extra['processor_response'] ) ): $return .= <<extra['processor_response']['response_code']; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'processor_response_avs', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<extra['processor_response']['avs_code'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<( IPSCONTENT; $val = "processor_response_avs__{$transaction->extra['processor_response']['avs_code']}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'processor_response_cvv', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<extra['processor_response']['cvv_code'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<( IPSCONTENT; $val = "processor_response_cvv__{$transaction->extra['processor_response']['cvv_code']}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'processor_response_code', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $val = "processor_response_code__{$responseCode}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

IPSCONTENT; endif; $return .= <<
IPSCONTENT; if ( $log['to'] === 'credit' ): $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= <<

IPSCONTENT; if ( $log['to'] === 'credit' ): $return .= <<language()->addToStack( htmlspecialchars( 'tstatus_credited', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'tstatus_prfd_set', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<


IPSCONTENT; if ( isset( $log['amount'] ) ): $return .= <<amount->amount->compare( new \IPS\Math\Number( $log['amount'] ) ) !== 0 ): $return .= << IPSCONTENT; $return .= new \IPS\nexus\Money( $log['amount'], $transaction->currency ); $return .= <<

IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $log['ref'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $sprintf = array(\IPS\Member::load( $log['by'] )->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'byline_nodate', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function revw( $transaction, $log ) { $return = ''; $return .= <<
IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'tstatus_revw_set', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
IPSCONTENT; if ( isset( $log['on'] ) and $log['on'] ): $return .= << IPSCONTENT; $sprintf = array(\IPS\Member::load( $log['by'] )->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'byline_nodate', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function rfnd( $transaction, $log ) { $return = ''; $return .= <<

IPSCONTENT; if ( $log['to'] === 'credit' ): $return .= <<language()->addToStack( htmlspecialchars( 'tstatus_credited', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'tstatus_rfnd_set', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<


IPSCONTENT; if ( isset( $log['ref'] ) and $log['ref'] ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $log['ref'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $sprintf = array(\IPS\Member::load( $log['by'] )->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'byline_nodate', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function status( $status ) { $return = ''; $return .= << IPSCONTENT; $val = "tstatus_{$status}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; return $return; } function stripeData( $response=NULL, $error=NULL ) { $return = ''; $return .= <<

IPSCONTENT; $sprintf = array($response['outcome']['risk_level']); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stripe_risk_level', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= <<

IPSCONTENT; endif; $return .= <<

IPSCONTENT; if ( isset( $response['source']['card']['tokenization_method'] ) ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stripe_tokenization_apple_pay', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stripe_tokenization_android_pay', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'stripe_tokenization_other', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; elseif ( $response['source']['card']['brand'] == 'MasterCard' or $response['source']['card']['brand'] == 'mastercard' ): $return .= << IPSCONTENT; elseif ( $response['source']['card']['brand'] == 'Discover' or $response['source']['card']['brand'] == 'discover' ): $return .= << IPSCONTENT; elseif ( $response['source']['card']['brand'] == 'American Express' or $response['source']['card']['brand'] == 'amex' ): $return .= << IPSCONTENT; elseif ( $response['source']['card']['brand'] == 'Diners Club' or $response['source']['card']['brand'] == 'diners' ): $return .= << IPSCONTENT; elseif ( $response['source']['card']['brand'] == 'JCB' or $response['source']['card']['brand'] == 'jcb' ): $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'card_expires', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'card_origin', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

IPSCONTENT; foreach ( array( 'cvc_check', 'address_line1_check', 'address_postal_code_check' ) as $k ): $return .= << IPSCONTENT; if ( $response['source']['card'][ $k ] == 'pass' ): $return .= << IPSCONTENT; $val = "stripe_{$k}_pass"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; elseif ( $response['source']['card'][ $k ] == 'fail' ): $return .= << IPSCONTENT; $val = "stripe_{$k}_fail"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; if ( $response['source']['card'][ $k ] ): $return .= <<language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endforeach; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stripe_3ds_pass', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stripe_3ds_fail', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $sprintf = array($response['source']['card']['three_d_secure']['version']); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stripe_3ds_pass_version', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; $sprintf = array($response['source']['card']['three_d_secure']['version']); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stripe_3ds_fail_version', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stripe_3ds_not_supported', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stripe_3ds_not_checked', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stripe_details_error', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
IPSCONTENT; if ( isset( $response['status'] ) and \in_array( $response['status'], array( 'warning_needs_response', 'warning_under_review', 'warning_closed', 'charge_refunded' ) ) ): $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= <<

IPSCONTENT; if ( isset( $response['status'] ) and \in_array( $response['status'], array( 'warning_needs_response', 'warning_under_review', 'warning_closed', 'charge_refunded' ) ) ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'tstatus_dspd_inquiry_set', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'tstatus_dspd_set', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
IPSCONTENT; if ( isset( $log['on'] ) and $log['on'] ): $return .= << IPSCONTENT; $sprintf = array(\IPS\Member::load( $log['by'] )->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'byline_nodate', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $val = "stripe_dispute_reason_{$response['reason']}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $val = "stripe_dispute_status_{$response['status']}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stripe_dispute_error', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
  • IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'transaction_dispute_won', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'transaction_dispute_won_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; if ( $transaction->status === $transaction::STATUS_DISPUTED ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'transaction_approve', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'transaction_refund_credit', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; endif; $return .= <<
  • IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'transaction_dispute_warning_closed', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'transaction_dispute_warning_closed_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; elseif ( isset( $response['status'] ) and $response['status'] == 'lost' ): $return .= <<

  • IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'transaction_dispute_lost', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'transaction_dispute_lost_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<

  • IPSCONTENT; return $return; } function undo_credit( $transaction, $log ) { $return = ''; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'tstatus_credited_undo', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<


    IPSCONTENT; if ( isset( $log['amount'] ) ): $return .= <<amount->amount->compare( new \IPS\Math\Number( $log['amount'] ) ) !== 0 ): $return .= << IPSCONTENT; $return .= new \IPS\nexus\Money( $log['amount'], $transaction->currency ); $return .= <<

    IPSCONTENT; endif; $return .= << IPSCONTENT; $sprintf = array(\IPS\Member::load( $log['by'] )->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'byline_nodate', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function view( $transaction ) { $return = ''; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'transaction_total', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->amount, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; if ( $transaction->status === $transaction::STATUS_PART_REFUNDED ): $return .= <<partial_refund->amount->isGreaterThanZero() ): $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'amount_refunded', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->partial_refund, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

    IPSCONTENT; endif; $return .= <<credit->amount->isGreaterThanZero() ): $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'amount_credited', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->credit, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

    IPSCONTENT; endif; $return .= <<

    IPSCONTENT; if ( $transaction->auth and \in_array( $transaction->status, array( \IPS\nexus\Transaction::STATUS_HELD, \IPS\nexus\Transaction::STATUS_REVIEW ) ) ): $return .= <<language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; if ( isset( $transaction->extra['admin'] ) ): $return .= << IPSCONTENT; $sprintf = array(\IPS\Member::load( $transaction->extra['admin'] )->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'transaction_admin_manual', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; endif; $return .= <<fraud ): $return .= <<fraud->id ): $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; if ( $errorMessage = $transaction->fraud->error() ): $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'error_from_maxmind', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->error, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

    IPSCONTENT; else: $return .= <<fraud->warning() ): $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warning_from_maxmind', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->error, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

    IPSCONTENT; endif; $return .= <<

    IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->risk_score, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'possibility_of_fraud', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'checked_by_maxmind', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_geo_ip', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; if ( $transaction->fraud->ip_address['location']['latitude'] AND $transaction->fraud->ip_address['location']['longitude'] ): $return .= <<fraud->ip_address['location']['latitude'], $transaction->fraud->ip_address['location']['longitude'] )->map()->render( 600, 200 ); $return .= <<{$map}
    IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->ip_address['location']['latitude'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<fraud->ip_address['location']['longitude'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $sprintf = array($transaction->fraud->billing_address['distance_to_ip_location']); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_distance', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= <<

    IPSCONTENT; if ( $transaction->fraud->ip_address['location']['accuracy_radius'] ): $return .= <<fraud->ip_address['location']['accuracy_radius']); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_ip_accuracyRadius', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= <<language()->addToStack( htmlspecialchars( 'maxmind_distance_estimated', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; if ( isset( $transaction->fraud->ip_address['city'] ) ): $return .= << fraud->ip_address['city']['confidence'] ): $return .= <<language()->addToStack( htmlspecialchars( 'maxmind_ip_accuracy', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->ip_address['city']['names']['en'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; if ( isset( $transaction->fraud->ip_address['location']['metro_code'] ) ): $return .= <<( IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->ip_address['location']['metro_code'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= <<fraud->ip_postalCode ): $return .= << fraud->ip_address['postal']['confidence'] ): $return .= <<language()->addToStack( htmlspecialchars( 'maxmind_ip_accuracy', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; if ( $transaction->fraud->ip_address['postal']['code'] ): $return .= <<fraud->ip_address['postal']['code'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<fraud->ip_address['country'] ) ): $return .= << fraud->ip_address['country']['confidence'] ): $return .= << $sprintf ) ); $return .= << IPSCONTENT; $val = "country-{$transaction->fraud->ip_address['country']['iso_code']}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
        IPSCONTENT; if ( isset( $transaction->fraud->billing_address['is_in_ip_country'] ) ): $return .= <<fraud->billing_address['is_in_ip_country'] ): $return .= <<

        IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_countryMatch_y', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= <<

        IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_countryMatch_n', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<fraud->ip_address['country']['is_high_risk'] ) and $transaction->fraud->ip_address['country']['is_high_risk'] ): $return .= <<

        IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_highRiskCountry_y', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= <<

        IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_highRiskCountry_n', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_ip', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->ip_address['risk'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_proxyScore', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_proxyScore_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; if ( isset( $transaction->fraud->ip_address['traits']['is_anonymous_proxy'] ) and $transaction->fraud->ip_address['traits']['is_anonymous_proxy'] ): $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_anonymousProxy_y', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; else: $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_anonymousProxy_n', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; endif; $return .= <<fraud->ip_address['traits']['is_tor_exit_node'] ) and $transaction->fraud->ip_address['traits']['is_tor_exit_node'] ): $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_torExit_y', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; else: $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_torExit_n', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; endif; $return .= <<fraud->ip_address['traits']['isp'] ) ): $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_ip_isp', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<fraud->ip_address['traits']['isp'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<fraud->ip_address['traits']['organization'] and $transaction->fraud->ip_address['traits']['organization'] != $transaction->fraud->ip_address['traits']['isp'] ): $return .= <<( IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->ip_address['traits']['organization'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= <<fraud->ip_address['traits']['user_type'] ) ): $return .= <<

      IPSCONTENT; $val = "maxmind_ip_userType_{$transaction->fraud->ip_address['traits']['user_type']}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<fraud->ip_address['traits']['organization'] ) ): $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_ip_timeZone', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<fraud->ip_address['location']['time_zone'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<fraud->ip_domain ): $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_ip_domain', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<fraud->ip_domain, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<fraud->ip_address['traits']['autonomous_system_number'] ) ): $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_ip_asnum', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<fraud->ip_address['traits']['autonomous_system_number'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<

    IPSCONTENT; if ( $transaction->fraud->credit_card ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_card_issuer', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; if ( isset( $transaction->fraud->credit_card['issuer']['name'] ) ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->credit_card['issuer']['name'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

    IPSCONTENT; if ( isset( $transaction->fraud->credit_card['country'] ) || isset( $transaction->fraud->credit_card['issuer']['phone_number'] ) ): $return .= << IPSCONTENT; if ( isset( $transaction->fraud->credit_card['country'] ) ): $return .= <<

    IPSCONTENT; $val = "country-{$transaction->fraud->credit_card['country']}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<fraud->credit_card['issuer']['phone_number'] ) ): $return .= <<

    IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->credit_card['issuer']['phone_number'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_customer_information', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; foreach ( array( 'disposable', 'free', 'high_risk' ) as $k ): $return .= <<fraud->email['is_' . $k] ): $return .= <<

      IPSCONTENT; $val = "maxmind_{$k}_n"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= <<

      IPSCONTENT; $val = "maxmind_{$k}_y"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<


    IPSCONTENT; $sprintf = array($transaction->fraud->id); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_footer_insights', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= <<fraud->queries_remaining); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_queries', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; endif; $return .= <<

    IPSCONTENT; else: $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; if ( $errorMessage = $transaction->fraud->error() ): $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'error_from_maxmind', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->error, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

    IPSCONTENT; else: $return .= <<fraud->warning() ): $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warning_from_maxmind', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->error, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

    IPSCONTENT; endif; $return .= << IPSCONTENT; if ( $transaction->fraud->riskScore !== NULL ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->riskScore, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( round( $transaction->fraud->score * 10 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'possibility_of_fraud', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'checked_by_maxmind', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_geo_ip', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; if ( $transaction->fraud->ip_latitude AND $transaction->fraud->ip_longitude ): $return .= <<fraud->ip_latitude, $transaction->fraud->ip_longitude )->map()->render( 600, 200 ); $return .= <<{$map}
    IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->ip_latitude, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<fraud->ip_longitude, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $sprintf = array($transaction->fraud->distance); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_distance', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= <<

    IPSCONTENT; if ( $transaction->fraud->ip_accuracyRadius ): $return .= <<fraud->ip_accuracyRadius); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_ip_accuracyRadius', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= <<language()->addToStack( htmlspecialchars( 'maxmind_distance_estimated', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    • fraud->ip_cityConf ): $return .= << $sprintf ) ); $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->ip_city, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; if ( isset( $transaction->fraud->ip_metroCode ) ): $return .= <<( IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->ip_metroCode, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( $transaction->fraud->ip_regionName || $transaction->fraud->ip_region || $transaction->fraud->ip_postalCode ): $return .= << IPSCONTENT; if ( $transaction->fraud->ip_regionName || $transaction->fraud->ip_region ): $return .= <<fraud->ip_regionConf ): $return .= << $sprintf ) ); $return .= << IPSCONTENT; if ( $transaction->fraud->ip_regionName ): $return .= <<fraud->ip_regionName, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<fraud->ip_region ): $return .= <<fraud->ip_region, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<fraud->ip_postalCode ): $return .= <<fraud->ip_postalConf ): $return .= << $sprintf ) ); $return .= << IPSCONTENT; if ( $transaction->fraud->ip_postalCode ): $return .= <<fraud->ip_postalCode, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= <<fraud->ip_countryName || $transaction->fraud->countryCode ): $return .= << fraud->ip_countryConf ): $return .= << $sprintf ) ); $return .= << IPSCONTENT; if ( $transaction->fraud->ip_countryName ): $return .= <<fraud->ip_countryName, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<fraud->countryCode ): $return .= <<language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    • IPSCONTENT; endif; $return .= <<
        IPSCONTENT; if ( $transaction->fraud->countryMatch == 'Yes' ): $return .= <<

        IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_countryMatch_y', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= <<

        IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_countryMatch_n', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<fraud->highRiskCountry == 'No' ): $return .= <<

        IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_highRiskCountry_n', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= <<

        IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_highRiskCountry_y', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_ip', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->proxyScorePercentage(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_proxyScore', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_proxyScore_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; if ( $transaction->fraud->anonymousProxy == 'No' ): $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_anonymousProxy_n', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; else: $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_anonymousProxy_y', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; endif; $return .= <<

      IPSCONTENT; if ( $transaction->fraud->$k == 'No' ): $return .= <<language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endforeach; $return .= <<fraud->ip_isp ): $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_ip_isp', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<fraud->ip_isp, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<fraud->ip_org and $transaction->fraud->ip_org != $transaction->fraud->ip_isp ): $return .= <<( IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->ip_org, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= <<fraud->ip_userType ): $return .= <<

      IPSCONTENT; $val = "maxmind_ip_userType_{$transaction->fraud->ip_userType}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<fraud->ip_timeZone ): $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_ip_timeZone', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<fraud->ip_timeZone, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<fraud->ip_netSpeedCell ): $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_ip_netSpeedCell', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<fraud->ip_netSpeedCell, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<fraud->ip_domain ): $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_ip_domain', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<fraud->ip_domain, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<fraud->ip_asnum ): $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_ip_asnum', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<fraud->ip_asnum, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<

    IPSCONTENT; if ( $transaction->fraud->binMatch !== 'NA' and $transaction->fraud->binMatch !== 'NotFound' ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_card_issuer', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; if ( $transaction->fraud->binName ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->binName, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

    IPSCONTENT; if ( $transaction->fraud->binCountry || $transaction->fraud->binPhone ): $return .= << IPSCONTENT; if ( $transaction->fraud->binCountry ): $return .= <<

    IPSCONTENT; $val = "country-{$transaction->fraud->binCountry}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<fraud->binPhone ): $return .= <<

    IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->fraud->binPhone, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( $transaction->fraud->binMatch == 'Yes' ): $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_binMatch_y', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_binMatch_n', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<

    IPSCONTENT; if ( $transaction->fraud->prepaid == 'Yes' ): $return .= <<language()->addToStack( htmlspecialchars( 'maxmind_binMatch_y', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'maxmind_binMatch_n', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_customer_information', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      IPSCONTENT; if ( $transaction->fraud->custPhoneInBillingLoc and $transaction->fraud->custPhoneInBillingLoc != 'NotFound' ): $return .= <<fraud->custPhoneInBillingLoc == 'No' ): $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_custPhoneInBillingLoc_n', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_custPhoneInBillingLoc_y', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<fraud->cityPostalMatch ): $return .= <<fraud->cityPostalMatch == 'No' ): $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_cityPostalMatch_n', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_cityPostalMatch_y', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<fraud->$k == 'No' ): $return .= <<

      IPSCONTENT; $val = "maxmind_{$k}_n"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= <<

      IPSCONTENT; $val = "maxmind_{$k}_y"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<


    IPSCONTENT; if ( $transaction->fraud->minfraud_version ): $return .= <<fraud->service_level, $transaction->fraud->minfraud_version, $transaction->fraud->maxmindID); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_footer', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= <<fraud->queriesRemaining); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'maxmind_queries', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; endif; $return .= <<

    IPSCONTENT; endif; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'transaction_history', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; if ( $transaction->member AND $transaction->member->member_id ): $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'transaction_customer', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'transaction_customer', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; if ( $transaction->invoice AND !empty( $transaction->invoice->guest_data ) ): $return .= << IPSCONTENT; if ( isset( $transaction->invoice->guest_data['member']['name'] ) ): $return .= <<invoice->guest_data['member']['name'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<invoice->guest_data['member']['cm_first_name'] ) ): $return .= <<invoice->guest_data['member']['cm_first_name'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<invoice->guest_data['member']['cm_last_name'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<    IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $transaction->invoice->guest_data['member']['email'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

    IPSCONTENT; elseif ( !$transaction->member ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'deleted_member', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'guest', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<

    IPSCONTENT; endif; $return .= <<invoice ): $return .= <<

    IPSCONTENT; $sprintf = array($transaction->invoice->id); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'invoice_number', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= <<
    IPSCONTENT; $summary = $transaction->invoice->summary(); $return .= <<
      IPSCONTENT; foreach ( $summary['items'] as $item ): $return .= <<
      IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $item->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<quantity > 1 ): $return .= <<quantity, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<details ) ): $return .= << IPSCONTENT; foreach ( $item->details as $k => $v ): $return .= <<language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endforeach; $return .= << IPSCONTENT; endif; $return .= <<
      IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $item->linePrice(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endforeach; $return .= <<
      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'subtotal', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $summary['subtotal'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<
      IPSCONTENT; foreach ( $summary['tax'] as $taxId => $tax ): $return .= <<
      IPSCONTENT; $val = "nexus_tax_{$taxId}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<invoice->billaddress->business and $transaction->invoice->billaddress->vat ): $return .= <<language()->addToStack( htmlspecialchars( 'tax_rate_eu', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<invoice->billaddress->business ): $return .= <<language()->addToStack( htmlspecialchars( 'tax_rate_business', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'tax_rate_consumer', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $tax['amount'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endforeach; $return .= <<
      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'total', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $summary['total'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'invoice_view', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; if ( $transaction->invoice->billaddress ): $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'invoice_addresses', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; if ( $transaction->invoice->billaddress ): $return .= << IPSCONTENT; if ( \IPS\GeoLocation::enabled() ): $return .= << {$transaction->invoice->billaddress->map()->render( 350, 150 )}
    IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'billing_address', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    {$transaction->invoice->billaddress->toString('
    ')}

    IPSCONTENT; if ( isset( $transaction->invoice->billaddress->vat ) and $transaction->invoice->billaddress->vat ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cm_checkout_vat_number', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<getTemplate( "global", \IPS\Request::i()->app )->vatNumber( $transaction->invoice->billaddress->vat ); $return .= << IPSCONTENT; endif; $return .= <<
    IPSCONTENT; endif; $return .= <<

    IPSCONTENT; endif; $return .= <<
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'trans_invoice_deleted', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
    IPSCONTENT; return $return; } function wait( $transaction, $log ) { $return = ''; $return .= <<
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'tstatus_wait', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; if ( isset( $log['on'] ) and $log['on'] ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( \IPS\DateTime::ts( $log['on'] ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; $sprintf = array(\IPS\Member::load( $log['by'] )->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'byline_nodate', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $log['note'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; }}